From 6883eb383fa3126f801148197f7668e7bd6fc75b Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Feb 2015 18:13:49 +0000 Subject: [PATCH 01/61] Initial testing of synchronous tube design Change-Id: I2cea18dc373b6c843f05828d2c7d29ef2f631b19 --- LX9Co-6502fast.xise | 62 +++++++------- src/LX9Co_CoPro6502fast.vhd | 4 +- src/Tube/dsr-ff.v | 49 ----------- src/Tube/gen_flag_m.v | 155 ----------------------------------- src/Tube/hp_byte.v | 2 +- src/Tube/hp_flag_m.v | 92 +++++++++++++++++++++ src/Tube/hp_reg3.v | 6 +- src/Tube/ph_byte.v | 2 +- src/Tube/ph_flag_m.v | 156 +++++++++++++++++++----------------- src/Tube/ph_reg3.v | 63 +++++---------- 10 files changed, 228 insertions(+), 363 deletions(-) delete mode 100644 src/Tube/dsr-ff.v delete mode 100644 src/Tube/gen_flag_m.v create mode 100644 src/Tube/hp_flag_m.v diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index bdc57f4..5793da7 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -16,96 +16,94 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + + + + + diff --git a/src/LX9Co_CoPro6502fast.vhd b/src/LX9Co_CoPro6502fast.vhd index 2305176..40ee22c 100644 --- a/src/LX9Co_CoPro6502fast.vhd +++ b/src/LX9Co_CoPro6502fast.vhd @@ -285,11 +285,11 @@ begin h_rst_b => h_rst_b, h_irq_b => h_irq_b, p_addr => cpu_addr(2 downto 0), - p_cs_b => p_cs_b, + p_cs_b => not((not p_cs_b) and cpu_clken), p_data_in => cpu_dout, p_data_out => p_data_out, p_rdnw => cpu_R_W_n, - p_phi2 => p_tube_clk, + p_phi2 => clk_cpu, p_rst_b => RSTn, p_nmi_b => cpu_NMI_n, p_irq_b => cpu_IRQ_n diff --git a/src/Tube/dsr-ff.v b/src/Tube/dsr-ff.v deleted file mode 100644 index f1b85e9..0000000 --- a/src/Tube/dsr-ff.v +++ /dev/null @@ -1,49 +0,0 @@ -`timescale 1ns / 1ps -////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// -// Create Date: 15:20:33 11/22/2014 -// Design Name: -// Module Name: dsr-ff -// Project Name: -// Target Devices: -// Tool versions: -// Description: -// -// Dependencies: -// -// Revision: -// Revision 0.01 - File Created -// Additional Comments: -// -////////////////////////////////////////////////////////////////////////////////// -module dsrff( - input d, - input clk, - input s, - input r, - output q, - output qb - ); - - wire f3; - wire f4; - wire f5; - wire f6; - - wire sb; - wire rb; - - assign sb = ~s; - assign rb = ~r; - - assign q = ~(qb && f4 && sb); - assign qb = ~(q && f5 && rb); - - assign f3 = ~(sb && f6 && f4); - assign f4 = ~(f3 && clk && rb); - assign f5 = ~(f4 && sb && clk && f6); - assign f6 = ~(f5 && d && rb); - -endmodule diff --git a/src/Tube/gen_flag_m.v b/src/Tube/gen_flag_m.v deleted file mode 100644 index 29c9496..0000000 --- a/src/Tube/gen_flag_m.v +++ /dev/null @@ -1,155 +0,0 @@ -//************************************************************************** -// gen_flag_m.v - single byte buffer for transfers in host to parasite direction -// -// COPYRIGHT 2010 Richard Evans, Ed Spittles -// -// This file is part of tube - an Acorn Tube ULA compatible system. -// -// tube is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// tube 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 Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with tube. If not, see . -// -// ============================================================================ -// -// Generic flag crossing clock boundaries, intended for use in the Acorn Tube -// ULA replacement system passing information between host and parasite sides. -// -// - Port P1 (the write port) can set the flag -// - Port P2 (the read port) can reset the flag -// -// The Acorn Tube uses a 6502 bus interface on the host side, but a read/write strobe -// protocol on the parasite side. This logic can be configured so that both ports can -// work with either system by just tying off inputs. -// -// P1 (Write Port) P2 (Read Port) -// __ __ -// p1_rdnw ---o| | | |----- p2_rdnw -// p1_phase ---|& |--|>o----*- ---------o<|---| &|----- p2_sel -// p1_sel ----| | | ` ' | |----- p2_phase -// --o|__| | | | |__|--- -// ' | _o___o_ ' -// | | | S R | | -// | | | Q | | -// | | |_______| | -// | _o_ __ | | __ _o_ | -// p1_full -*----|q d|--| |-|-----*-----|& |----|d q|---*---*- p2_available -// |_^_| |+ | | | | |_^_| | -// o | | `-----------|__| | | -// p1_clk ------' | | `-----|------- p2_clk -// |__|----------------------------- -// -// To use the flag on host->parasite and parasite->host interfaces, use the following hookup -// -// gen_flag_m hp ( gen_flag_m ph ( -// .rst_b(h_rst_b), .rst_b(h_rst_b), -// .reset_state(1'b0), .reset_state(1'b0), -// .p1_rdnw(h_rdnw), .p1_rdnw(p_westb_b), -// .p1_phase(h_phi2), .p1_phase(1'b1), -// .p1_select(h_select), .p1_select(p_select), -// .p1_full(h_full), .p1_full(p_full), -// .p1_clk(h_phi2), .p1_clk(!(p_westb_b & p_rdstb_b)), -// .p2_rdnw( !p_rdstb_b), .p2_rdnw(h_rdnw), -// .p2_phase(1'b1), .p2_phase(h_phi2), -// .p2_select(p_select), .p2_select(h_select), -// .p2_avail(p_avail), .p2_avail(h_avail), -// .p2_clk(!(p_westb_b & p_rdstb_b)) .p2_clk(h_phi2) -// ) ) -// -// 'phase' input is used to qualify the read signal with the clock phase -// - use phi2 for std 6502 bus transactions, ie rdnw valid during phi2 -// - use '1' for strobe transactions (because phase and read signal are already combined in a we/rdstb signal) -// -// Reset not shown in the diagram above but reset state selection is selected by the reset_state() input pin -// - on most flags rst_b low will cause all state to be set to '0' -// - on flags for byte 0 in register 3 rst_b low causes all state to be set to '1' -// -// The reset logic is implemented by swapping the two edge triggered flops for set or reset types -// and adding a small amount of gating on the S or R lines for the latch. -// -// Cross coupled gates allow p1 and p2 operation to be at significantly different speeds -// - cross coupled gate A ensures that p1_full flag stays high while p2 is performing a read -// - cross coupled gate B ensures that p2_avail flag stays low while p1 is performing a write -`timescale 1ns / 1ns - -module gen_flag_m ( - input rst_b, - //input reset_state, - input p1_rdnw, - input p1_select, - input p1_phase, - input p1_clk, - input p2_select, - input p2_rdnw, - input p2_clk, - input p2_phase, - output p2_data_available, - output p1_full - ); - - - reg p1_full_q_r, - p2_data_avail_q_r; - - wire full_sr_q_r; - wire full_sr_qbar_r; - - wire set_full_b_w, - p1_full_d_w, - p2_data_avail_d_w, - set_empty_b_w; - - - - // Assign IOs - assign p2_data_available = p2_data_avail_q_r; - assign p1_full = p1_full_q_r ; - - // Combinatorial assignments - assign set_full_b_w = ! ( (!p1_rdnw & p1_phase & p1_select & !p1_full_q_r)) ; - assign set_empty_b_w = ! ( (!rst_b) | ( p2_phase & p2_select & p2_rdnw & p2_data_avail_q_r)); - - // ensure that full signal to parasite doesn't go low while (slow) host read is still in progress - assign p1_full_d_w = full_sr_q_r | p2_data_avail_q_r ; - assign p2_data_avail_d_w = full_sr_q_r & set_full_b_w ; - - // infer all state - always @ ( posedge p2_clk or negedge rst_b ) - begin - if ( ! rst_b ) - p2_data_avail_q_r <= 1'b0; - else - p2_data_avail_q_r <= p2_data_avail_d_w ; - end - - always @ ( negedge p1_clk or negedge rst_b ) - begin - if ( ! rst_b) - p1_full_q_r <= 1'b0; - else - p1_full_q_r <= p1_full_d_w ; - end - - // SR latch inputs used only on this state element - //always @ ( set_full_b_w or set_empty_b_w ) - // if ( set_full_b_w == 1'b0 ) - // full_sr_q_r = 1'b1; - // else if ( set_empty_b_w == 1'b0) - // full_sr_q_r = 1'b0; - assign full_sr_q_r = ~( set_full_b_w & full_sr_qbar_r); - assign full_sr_qbar_r = ~( set_empty_b_w & full_sr_q_r); - - -endmodule // gen_flag_m - - - - \ No newline at end of file diff --git a/src/Tube/hp_byte.v b/src/Tube/hp_byte.v index d06e33f..d54841e 100644 --- a/src/Tube/hp_byte.v +++ b/src/Tube/hp_byte.v @@ -51,7 +51,7 @@ module hp_byte ( assign fifo_d_w = ( h_selectData & !h_we_b ) ? h_data : fifo_q_r; // Instance the appropriate flag logic - gen_flag_m flag_0 ( + hp_flag_m flag_0 ( .rst_b(h_rst_b), //.reset_state(1'b0), .p1_rdnw( h_we_b), diff --git a/src/Tube/hp_flag_m.v b/src/Tube/hp_flag_m.v new file mode 100644 index 0000000..6eff6b9 --- /dev/null +++ b/src/Tube/hp_flag_m.v @@ -0,0 +1,92 @@ +`timescale 1ns / 1ns + +module hp_flag_m ( + input rst_b, + input p1_clk, + input p1_select, + input p1_rdnw, + input p1_phase, // not used any more + input p2_clk, + input p2_select, + input p2_rdnw, + input p2_phase, // not used any more + output p2_data_available, + output p1_full +); + + // Initial state: 0 = empty; 1 = full + parameter init = 0; + + wire req; + reg req_s1; + reg req_s2; + wire ack; + reg ack_s1; + reg ack_s2; + + reg [1:0] p1_state; + reg [1:0] p2_state; + + always @ (negedge p1_clk or negedge rst_b ) + begin + if (!rst_b) begin + p1_state <= { 1'b0, init }; + ack_s1 <= 1'b0; + ack_s2 <= 1'b0; + end else begin + ack_s1 <= ack; + ack_s2 <= ack_s1; + case (p1_state) + 2'b00: + if (p1_select & ! p1_rdnw) + p1_state <= 2'b01; + 2'b01: + if (ack_s2) + p1_state <= 2'b10; + 2'b10: + if (!ack_s2) + p1_state <= 2'b00; + default: + p1_state <= 2'b00; + endcase + end + end + + assign req = p1_state[0]; + + assign p1_full = p1_state[0] | p1_state[1]; + + always @ (posedge p2_clk or negedge rst_b ) + begin + if (!rst_b) begin + p2_state <= { 1'b0, init}; + req_s1 <= init; + req_s2 <= init; + end else begin + req_s1 <= req; + req_s2 <= req_s1; + case (p2_state) + 2'b00: + if (req_s2) + p2_state <= 2'b01; + 2'b01: + if (p2_select & p2_rdnw) + p2_state <= 2'b10; + 2'b10: + if (!req_s2) + p2_state <= 2'b00; + default: + p2_state <= 2'b00; + endcase + end + end + + assign ack = p2_state[1]; + + assign p2_data_available = p2_state[0] & !p2_state[1]; + +endmodule // gen_flag_m + + + + diff --git a/src/Tube/hp_reg3.v b/src/Tube/hp_reg3.v index 6a9c4b3..6e5ead4 100644 --- a/src/Tube/hp_reg3.v +++ b/src/Tube/hp_reg3.v @@ -75,9 +75,8 @@ module hp_reg3 ( // Instance the appropriate flag logic - gen_flag_m flag_0 ( + hp_flag_m flag_0 ( .rst_b(h_rst_b), - //.reset_state(1'b0), .p1_rdnw( h_we_b), .p1_select(h_selectData & (!h_full_w[0] | one_byte_mode)), .p1_clk(h_phi2), @@ -96,9 +95,8 @@ module hp_reg3 ( .p1_full(h_full_w[0]) ); - gen_flag_m flag_1 ( + hp_flag_m flag_1 ( .rst_b(h_rst_b), - //.reset_state(1'b0), .p1_rdnw( h_we_b), .p1_select(h_selectData & (h_full_w[0] & !one_byte_mode)), .p1_clk(h_phi2), diff --git a/src/Tube/ph_byte.v b/src/Tube/ph_byte.v index 7d4b7ee..1ec5ca4 100644 --- a/src/Tube/ph_byte.v +++ b/src/Tube/ph_byte.v @@ -52,7 +52,7 @@ module ph_byte ( assign fifo_d_r = ( p_selectData ) ? p_data : fifo_q_r; `endif - gen_flag_m flag_0 ( + ph_flag_m flag_0 ( .rst_b(h_rst_b), //.reset_state(1'b0), .p2_rdnw(h_rd), diff --git a/src/Tube/ph_flag_m.v b/src/Tube/ph_flag_m.v index ddea3b5..64d40a2 100644 --- a/src/Tube/ph_flag_m.v +++ b/src/Tube/ph_flag_m.v @@ -1,86 +1,92 @@ -//************************************************************************** -// ph_flag_m.v - Parasite to host flag for reg 3 -// -// COPYRIGHT 2010 Richard Evans, Ed Spittles -// -// This file is part of tube - an Acorn Tube ULA compatible system. -// -// tube is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// tube 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 Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with tube. If not, see . -// -// ============================================================================ -// -// The Acorn Tube uses a 6502 bus interface on the host side, but a read/write strobe -// protocol on the parasite side. -// `timescale 1ns / 1ns module ph_flag_m ( - input rst_b, - input set_b, - input h_rdnw, - input h_select, - input h_phi2, - input p_select, - input p_wrst_b, - output h_data_available, - output p_full - ); - - - wire p_full_q_r; - reg h_data_avail_q_r; - - // Assign IOs - assign h_data_available = h_data_avail_q_r; - assign p_full = p_full_q_r | h_data_avail_q_r ; + input rst_b, + input p1_clk, + input p1_select, + input p1_rdnw, + input p1_phase, // not used any more + input p2_clk, + input p2_select, + input p2_rdnw, + input p2_phase, // not used any more + output p2_data_available, + output p1_full +); + + // Initial state: 0 = empty; 1 = full + parameter init = 0; + + wire req; + reg req_s1; + reg req_s2; + wire ack; + reg ack_s1; + reg ack_s2; - // Combinatorial assignments - wire set_empty_b_w = ! ( !rst_b | (h_select & h_rdnw & h_data_avail_q_r & h_phi2)); - wire p_full_d_w = p_select | p_full_q_r; + reg [1:0] p1_state; + reg [1:0] p2_state; - // infer all state - always @ ( posedge h_phi2 or negedge rst_b ) + always @ (posedge p1_clk or negedge rst_b ) begin - if (!rst_b) - h_data_avail_q_r <= 1'b1; - else - h_data_avail_q_r <= p_full_q_r ; - end - - /* - always @ ( posedge p_wrst_b or negedge set_b or negedge set_empty_b_w ) + if (!rst_b) begin + p1_state <= { 1'b0, init }; + ack_s1 <= 1'b0; + ack_s2 <= 1'b0; + end else begin + ack_s1 <= ack; + ack_s2 <= ack_s1; + case (p1_state) + 2'b00: + if (p1_select & ! p1_rdnw) + p1_state <= 2'b01; + 2'b01: + if (ack_s2) + p1_state <= 2'b10; + 2'b10: + if (!ack_s2) + p1_state <= 2'b00; + default: + p1_state <= 2'b00; + endcase + end + end + + assign req = p1_state[0]; + + assign p1_full = p1_state[0] | p1_state[1]; + + always @ (negedge p2_clk or negedge rst_b ) begin - if (!set_b) - p_full_q_r <= 1'b1; - else if (!set_empty_b_w) - p_full_q_r <= 1'b0; - else - p_full_q_r <= p_full_d_w; - - end - */ - dsrff ff ( - .d(p_full_d_w), - .clk(p_wrst_b), - .s(!set_b), - .r(!set_empty_b_w), - .q(p_full_q_r), - .qb() - ); + if (!rst_b) begin + p2_state <= { 1'b0, init}; + req_s1 <= init; + req_s2 <= init; + end else begin + req_s1 <= req; + req_s2 <= req_s1; + case (p2_state) + 2'b00: + if (req_s2) + p2_state <= 2'b01; + 2'b01: + if (p2_select & p2_rdnw) + p2_state <= 2'b10; + 2'b10: + if (!req_s2) + p2_state <= 2'b00; + default: + p2_state <= 2'b00; + endcase + end + end + + assign ack = p2_state[1]; + + assign p2_data_available = p2_state[0] & !p2_state[1]; -endmodule +endmodule // gen_flag_m - \ No newline at end of file + diff --git a/src/Tube/ph_reg3.v b/src/Tube/ph_reg3.v index daa63c4..be6895e 100644 --- a/src/Tube/ph_reg3.v +++ b/src/Tube/ph_reg3.v @@ -29,13 +29,8 @@ module ph_reg3 ( input [7:0] p_data, input p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_rdstb_b, - input p_westb_b, -`endif input one_byte_mode, output [7:0] h_data, output h_data_available, @@ -50,20 +45,12 @@ module ph_reg3 ( wire [7:0] byte0_d_w ; wire [7:0] byte1_d_w ; -`ifdef PARASITE_RNWCLK_INTERFACE_D assign byte0_d_w = ( p_selectData & !p_rdnw & ( !p_full_w[0] | one_byte_mode) ) ? p_data : byte0_q_r; assign byte1_d_w = ( p_selectData & !p_rdnw & ( p_full_w[0] & !one_byte_mode) ) ? p_data : byte1_q_r; - wire p_write_b = p_rdnw | p_phi2; -`else - // Compute D and resets for state bits - assign byte0_d_w = ( p_selectData & ( !p_full_w[0] | one_byte_mode) ) ? p_data : byte0_q_r; - assign byte1_d_w = ( p_selectData & ( p_full_w[0] & !one_byte_mode) ) ? p_data : byte1_q_r; -`endif assign h_data = ( h_data_available_w[0]) ? byte0_q_r : byte1_q_r; assign h_zero_bytes_available = ! (h_data_available_w[0] | ( h_data_available_w[1] & !one_byte_mode )) ; - // Register 3 is intended to enable high speed transfers of large blocks of data across the tube. // It can operate in one or two byte mode, depending on the V flag. In one byte mode the status // bits make each FIFO appear to be a single byte latch - after one byte is written the register @@ -78,43 +65,31 @@ module ph_reg3 ( assign p_full = ( one_byte_mode ) ? p_full_w[0] : p_full_w[1]; // Need to set a flag_0 in this register on reset to avoid generating a PNMI on reset... - ph_flag_m flag_0 ( - .rst_b(1'b1), - .set_b(h_rst_b), - .h_rdnw(h_rd), - .h_select( h_selectData & (h_data_available_w[0] | one_byte_mode)), - .h_phi2(h_phi2), - .p_select(p_selectData & !p_full_w[0] & (!p_full_w[1] | one_byte_mode)), -`ifdef PARASITE_RNWCLK_INTERFACE_D - .p_wrst_b(p_write_b), -`else - .p_wrst_b(p_westb_b), -`endif - .h_data_available(h_data_available_w[0]), - .p_full(p_full_w[0]) + ph_flag_m #(1'b1) flag_0 ( + .rst_b(h_rst_b), + .p1_clk(p_phi2), + .p1_rdnw(p_rdnw), + .p1_select(p_selectData & !p_full_w[0] & (!p_full_w[1] | one_byte_mode)), + .p1_full(p_full_w[0]), + .p2_clk(h_phi2), + .p2_select( h_selectData & (h_data_available_w[0] | one_byte_mode)), + .p2_rdnw(h_rd), + .p2_data_available(h_data_available_w[0]) ); ph_flag_m flag_1 ( .rst_b(h_rst_b), - .set_b(1'b1), - .h_rdnw(h_rd), - .h_select(h_selectData & (!h_data_available_w[0] & h_data_available_w[1] & !one_byte_mode )), - .h_phi2(h_phi2), - .p_select(p_selectData & p_full_w[0] & !(p_full_w[1] | one_byte_mode)), -`ifdef PARASITE_RNWCLK_INTERFACE_D - .p_wrst_b(p_write_b), -`else - .p_wrst_b(p_westb_b), -`endif - .h_data_available(h_data_available_w[1]), - .p_full(p_full_w[1]) + .p1_clk(p_phi2), + .p1_select(p_selectData & p_full_w[0] & !(p_full_w[1] | one_byte_mode)), + .p1_rdnw(p_rdnw), + .p1_full(p_full_w[1]), + .p2_clk(h_phi2), + .p2_select(h_selectData & (!h_data_available_w[0] & h_data_available_w[1] & !one_byte_mode )), + .p2_rdnw(h_rd), + .p2_data_available(h_data_available_w[1]) ); // Infer all state -`ifdef PARASITE_RNWCLK_INTERFACE_D always @ ( negedge p_phi2 or negedge h_rst_b ) -`else - always @ ( posedge p_westb_b or negedge h_rst_b ) -`endif begin if ( ! h_rst_b) begin @@ -126,7 +101,7 @@ module ph_reg3 ( byte0_q_r <= byte0_d_w ; byte1_q_r <= byte1_d_w ; end - end // always @ ( posedge p_westb_b or negedge h_rst_b ) + end endmodule // ph_byte From ed619f6221a92c24c99fcfbabe8df36486e1b5ae Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Feb 2015 18:49:42 +0000 Subject: [PATCH 02/61] Remove parasite RD/WR clock interface Change-Id: I2d1f6e768811839fb1048a29d6c7e2151ac521c6 --- src/Tube/hp_byte.v | 13 ------------- src/Tube/hp_bytequad.v | 21 --------------------- src/Tube/hp_flag_m.v | 2 -- src/Tube/hp_reg3.v | 23 +---------------------- src/Tube/ph_byte.v | 25 ------------------------- src/Tube/ph_bytequad.v | 31 ------------------------------- src/Tube/ph_fifo.v | 16 +++------------- src/Tube/ph_flag_m.v | 2 -- src/Tube/tube.v | 25 ------------------------- 9 files changed, 4 insertions(+), 154 deletions(-) diff --git a/src/Tube/hp_byte.v b/src/Tube/hp_byte.v index d54841e..c86aa4e 100644 --- a/src/Tube/hp_byte.v +++ b/src/Tube/hp_byte.v @@ -29,12 +29,8 @@ module hp_byte ( input [7:0] h_data, input p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_rdstb_b, -`endif output [7:0] p_data, output p_data_available, output h_full @@ -53,21 +49,12 @@ module hp_byte ( // Instance the appropriate flag logic hp_flag_m flag_0 ( .rst_b(h_rst_b), - //.reset_state(1'b0), .p1_rdnw( h_we_b), .p1_select(h_selectData), .p1_clk(h_phi2), - .p1_phase(h_phi2), .p2_select(p_selectData), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p2_rdnw(p_rdnw), - .p2_phase(p_phi2), .p2_clk(p_phi2 ), -`else - .p2_rdnw(!p_rdstb_b), - .p2_phase(1'b1), - .p2_clk( ! p_rdstb_b ), -`endif .p2_data_available(p_data_available), .p1_full(h_full) ); diff --git a/src/Tube/hp_bytequad.v b/src/Tube/hp_bytequad.v index e1c46dd..76a6019 100644 --- a/src/Tube/hp_bytequad.v +++ b/src/Tube/hp_bytequad.v @@ -28,13 +28,8 @@ module hp_bytequad ( input h_phi2, input [7:0] h_data, input [3:0] p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_rdstb_b, -`endif - input one_byte_mode, output [7:0] p_data, output [3:0] p_data_available, @@ -79,12 +74,8 @@ module hp_bytequad ( .h_phi2(h_phi2), .h_data(h_data), .p_selectData(p_selectData[0]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_rdstb_b(p_rdstb_b), -`endif .p_data(fifo0_w), .p_data_available(p_data_available[0]), .h_full(h_full_pre_w[0]) @@ -97,12 +88,8 @@ module hp_bytequad ( .h_phi2(h_phi2), .h_data(h_data), .p_selectData(p_selectData[1]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_rdstb_b(p_rdstb_b), -`endif .p_data(fifo1_w), .p_data_available(p_data_available[1]), .h_full(h_full_pre_w[1]) @@ -115,12 +102,8 @@ module hp_bytequad ( .h_phi2(h_phi2), .h_data( h_data ), .p_selectData( p_selectData[2]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_rdstb_b(p_rdstb_b), -`endif .one_byte_mode(one_byte_mode), .p_data(fifo2_w), .p_data_available(p_data_available[2]), @@ -135,12 +118,8 @@ module hp_bytequad ( .h_phi2(h_phi2), .h_data(h_data), .p_selectData(p_selectData[3]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_rdstb_b(p_rdstb_b), -`endif .p_data(fifo3_w), .p_data_available(p_data_available[3]), .h_full(h_full_pre_w[3]) diff --git a/src/Tube/hp_flag_m.v b/src/Tube/hp_flag_m.v index 6eff6b9..8fa1ac7 100644 --- a/src/Tube/hp_flag_m.v +++ b/src/Tube/hp_flag_m.v @@ -5,11 +5,9 @@ module hp_flag_m ( input p1_clk, input p1_select, input p1_rdnw, - input p1_phase, // not used any more input p2_clk, input p2_select, input p2_rdnw, - input p2_phase, // not used any more output p2_data_available, output p1_full ); diff --git a/src/Tube/hp_reg3.v b/src/Tube/hp_reg3.v index 6e5ead4..2e59e00 100644 --- a/src/Tube/hp_reg3.v +++ b/src/Tube/hp_reg3.v @@ -29,13 +29,8 @@ module hp_reg3 ( input [7:0] h_data, input p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_rdstb_b, -`endif - input one_byte_mode, output [7:0] p_data, @@ -80,17 +75,9 @@ module hp_reg3 ( .p1_rdnw( h_we_b), .p1_select(h_selectData & (!h_full_w[0] | one_byte_mode)), .p1_clk(h_phi2), - .p1_phase(h_phi2), .p2_select(p_selectData & (p_data_available_w[0] | one_byte_mode)), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p2_rdnw(p_rdnw), - .p2_phase(p_phi2), .p2_clk(p_phi2), -`else - .p2_rdnw(!p_rdstb_b), - .p2_phase(1'b1), - .p2_clk( ! p_rdstb_b ), -`endif .p2_data_available(p_data_available_w[0]), .p1_full(h_full_w[0]) ); @@ -100,17 +87,9 @@ module hp_reg3 ( .p1_rdnw( h_we_b), .p1_select(h_selectData & (h_full_w[0] & !one_byte_mode)), .p1_clk(h_phi2), - .p1_phase(h_phi2), .p2_select(p_selectData & (!p_data_available_w[0] & !one_byte_mode)), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p2_rdnw(p_rdnw), - .p2_phase(p_phi2), .p2_clk(p_phi2), -`else - .p2_rdnw(!p_rdstb_b), - .p2_phase(1'b1), - .p2_clk( ! p_rdstb_b ), -`endif .p2_data_available(p_data_available_w[1]), .p1_full(h_full_w[1]) ); @@ -130,6 +109,6 @@ module hp_reg3 ( end -endmodule // hp_byte +endmodule // hp_reg3 \ No newline at end of file diff --git a/src/Tube/ph_byte.v b/src/Tube/ph_byte.v index 1ec5ca4..4364daf 100644 --- a/src/Tube/ph_byte.v +++ b/src/Tube/ph_byte.v @@ -28,13 +28,8 @@ module ph_byte ( input h_phi2, input [7:0] p_data, input p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_clk, - input p_westb_b, -`endif output [7:0] h_data, output h_data_available, output p_full @@ -44,48 +39,28 @@ module ph_byte ( wire [7:0] fifo_d_r ; assign h_data = fifo_q_r; - -`ifdef PARASITE_RNWCLK_INTERFACE_D assign fifo_d_r = ( p_selectData & !p_rdnw) ? p_data : fifo_q_r; -`else - // Compute D and resets for state bits - assign fifo_d_r = ( p_selectData ) ? p_data : fifo_q_r; -`endif ph_flag_m flag_0 ( .rst_b(h_rst_b), - //.reset_state(1'b0), .p2_rdnw(h_rd), .p2_select(h_selectData), .p2_clk(h_phi2), - .p2_phase(h_phi2), .p1_select(p_selectData), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p1_rdnw(p_rdnw), - .p1_phase(p_phi2), .p1_clk(p_phi2), -`else - .p1_rdnw(p_westb_b), - .p1_phase(1'b1), - .p1_clk( p_clk), -`endif .p2_data_available(h_data_available), .p1_full(p_full) ); // Infer all state -`ifdef PARASITE_RNWCLK_INTERFACE_D always @ ( negedge p_phi2 or negedge h_rst_b ) -`else - always @ ( posedge p_westb_b or negedge h_rst_b ) -`endif begin if ( ! h_rst_b) fifo_q_r <= 8'h41; else fifo_q_r <= fifo_d_r ; end - endmodule // ph_byte diff --git a/src/Tube/ph_bytequad.v b/src/Tube/ph_bytequad.v index 0b16954..898fa43 100644 --- a/src/Tube/ph_bytequad.v +++ b/src/Tube/ph_bytequad.v @@ -29,13 +29,8 @@ module ph_bytequad ( input [7:0] p_data, input [3:0] p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_rdstb_b, - input p_westb_b, -`endif input one_byte_mode, output h_zero_bytes_available, output [7:0] h_data, @@ -69,12 +64,6 @@ module ph_bytequad ( default: h_datamux_r = 8'bx; endcase // case h_selectData -`ifdef PARASITE_RNWCLK_INTERFACE_D -`else - wire pclk_w = !(p_rdstb_b & p_westb_b); -`endif - - ph_fifo ph_reg1 ( .h_rst_b(h_rst_b), @@ -82,13 +71,8 @@ module ph_bytequad ( .h_selectData(h_selectData[0]), .h_phi2(h_phi2), .p_selectData(p_selectData[0]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_westb_b(p_westb_b), - .p_clk(pclk_w), -`endif .p_data(p_data), .h_data(fifo0_w), .h_data_available(h_data_available[0]), @@ -102,13 +86,8 @@ module ph_bytequad ( .h_selectData(h_selectData[1]), .h_phi2(h_phi2), .p_selectData(p_selectData[1]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_westb_b(p_westb_b), - .p_clk(pclk_w), -`endif .p_data(p_data), .h_data(fifo1_w), .h_data_available(h_data_available[1]), @@ -122,13 +101,8 @@ module ph_bytequad ( .h_phi2(h_phi2), .p_data(p_data), .p_selectData(p_selectData[2]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_rdstb_b(p_rdstb_b), - .p_westb_b(p_westb_b), -`endif .one_byte_mode(one_byte_mode), .h_data(fifo2_w), .h_data_available(h_data_available[2]), @@ -142,13 +116,8 @@ module ph_bytequad ( .h_selectData(h_selectData[3]), .h_phi2(h_phi2), .p_selectData(p_selectData[3]), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_westb_b(p_westb_b), - .p_clk(pclk_w), -`endif .p_data(p_data), .h_data(fifo3_w), .h_data_available(h_data_available[3]), diff --git a/src/Tube/ph_fifo.v b/src/Tube/ph_fifo.v index 0f004c3..9550c15 100644 --- a/src/Tube/ph_fifo.v +++ b/src/Tube/ph_fifo.v @@ -7,13 +7,8 @@ module ph_fifo ( input h_phi2, input [7:0] p_data, input p_selectData, -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_phi2, input p_rdnw, -`else - input p_clk, - input p_westb_b, -`endif output [7:0] h_data, output h_data_available, output p_full @@ -50,13 +45,8 @@ assign fifo_rst = ~h_rst_b; // Parasite assign fifo_din = p_data; assign p_full = fifo_full; - -`ifdef PARASITE_RNWCLK_INTERFACE_D - assign fifo_wr_clk = ~p_phi2; - assign fifo_wr_en = p_selectData & ~p_rdnw; -`else - // TODO: Not Ipplemented -`endif +assign fifo_wr_clk = p_phi2; +assign fifo_wr_en = p_selectData & ~p_rdnw; // Host assign fifo_rd_clk = ~h_phi2; @@ -64,6 +54,6 @@ assign fifo_rd_en = h_selectData & h_rd; assign h_data = fifo_empty ? 8'hAA : fifo_dout; assign h_data_available = ~fifo_empty; -endmodule // ph_byte +endmodule // ph_fifo diff --git a/src/Tube/ph_flag_m.v b/src/Tube/ph_flag_m.v index 64d40a2..ffd6e16 100644 --- a/src/Tube/ph_flag_m.v +++ b/src/Tube/ph_flag_m.v @@ -5,11 +5,9 @@ module ph_flag_m ( input p1_clk, input p1_select, input p1_rdnw, - input p1_phase, // not used any more input p2_clk, input p2_select, input p2_rdnw, - input p2_phase, // not used any more output p2_data_available, output p1_full ); diff --git a/src/Tube/tube.v b/src/Tube/tube.v index 0ede318..3184667 100644 --- a/src/Tube/tube.v +++ b/src/Tube/tube.v @@ -28,8 +28,6 @@ // DEBUG_NO_TUBE_D - if set forces the LSB of register 0 (the status/ // command word) to return '0' and so not be recognized // on boot by the host system -// PARASITE_RNWCLK_INTERFACE_D - if set then the parasite has a phi2 + rnw signal -// interface in place of the original rdstb_b and westb_b // TWOSTATE_PARASITE_INTERRUPTS_D - if set then parasite interrupt pins are driven high and low // if not set (default) then they are open collector // @@ -75,13 +73,8 @@ module tube ( inout [7:0] p_data, `endif -`ifdef PARASITE_RNWCLK_INTERFACE_D input p_rdnw, input p_phi2, -`else - input p_rd_b, - input p_wr_b, -`endif output p_rst_b, inout p_nmi_b, inout p_irq_b @@ -152,12 +145,7 @@ module tube ( assign p_data = p_data_in; assign p_data_out = p_data_r; `else // SEPARATE_PARASITE_DATABUSSES_D - `ifdef PARASITE_RNWCLK_INTERFACE_D assign p_data = ( p_rdnw && !p_cs_b ) ? p_data_r : 8'bzzzzzzzz; - `else - assign p_data = ( !p_rd_b && !p_cs_b ) ? p_data_r : 8'bzzzzzzzz; - `endif - `endif // SEPARATE_PARASITE_DATABUSSES_D // Compute register selects for host side @@ -283,12 +271,8 @@ module tube ( .h_phi2( h_phi2), .h_data( h_data), .p_selectData( p_select_fifo_r ), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw(p_rdnw), -`else - .p_rdstb_b( p_rd_b), -`endif .p_data( p_data_w), .one_byte_mode( ! h_reg0_q_r[`V_IDX]), .p_data_available(p_data_available_w), @@ -319,13 +303,8 @@ module tube ( .h_phi2(h_phi2 ), .p_data(p_data), .p_selectData(p_select_fifo_r ), -`ifdef PARASITE_RNWCLK_INTERFACE_D .p_phi2(p_phi2), .p_rdnw( (!dack_b_w) ^ p_rdnw), -`else - .p_rdstb_b( (dack_b_w) ? p_rd_b : p_wr_b ), - .p_westb_b( (dack_b_w) ? p_wr_b : p_rd_b), -`endif .h_data (h_data_w), .one_byte_mode( ! h_reg0_q_r[`V_IDX]), .h_data_available( h_data_available_w), @@ -363,11 +342,7 @@ module tube ( // Provide option for retiming read of status/command reg from host to parasite -`ifdef PARASITE_RNWCLK_INTERFACE_D always @ ( posedge p_phi2 or negedge h_rst_b ) -`else - always @ ( negedge p_rd_b or negedge h_rst_b ) -`endif if ( !h_rst_b ) p_reg0_q_r <= 6'b000000; else From 74fc4231f235df90c9a42dcd7c0c23fc249b5df4 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Feb 2015 19:32:32 +0000 Subject: [PATCH 03/61] Fixed a few warnings Change-Id: I995b3246f8aabc236b79681c697b974c8a440a34 --- src/LX9Co_CoPro6502fast.vhd | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/LX9Co_CoPro6502fast.vhd b/src/LX9Co_CoPro6502fast.vhd index 40ee22c..6b58474 100644 --- a/src/LX9Co_CoPro6502fast.vhd +++ b/src/LX9Co_CoPro6502fast.vhd @@ -157,7 +157,6 @@ architecture BEHAVIORAL of LX9CoPro6502fast is signal clk_cpu : std_logic; signal cpu_clken : std_logic; - signal p_tube_clk : std_logic; signal bootmode : std_logic; signal RSTn : std_logic; signal RSTn_sync : std_logic; @@ -203,9 +202,9 @@ begin inst_dcm_32_64 : dcm_32_64 port map ( CLKIN_IN => fastclk, - CLK0_OUT => open, + CLK0_OUT => clk_cpu, CLK0_OUT1 => open, - CLK2X_OUT => clk_cpu + CLK2X_OUT => open ); inst_tuberom : tuberom_65c102_banner port map ( @@ -232,8 +231,6 @@ begin DI(7 downto 0) => cpu_din, DO(7 downto 0) => cpu_dout ); - -- For debugging only - debug_clk <= cpu_clken; end generate; GenJensCore: if UseJensCore generate @@ -252,8 +249,6 @@ begin wr_n_o => cpu_R_W_n, wr_o => open ); - -- For debugging only - debug_clk <= cpu_clken; end generate; GenAlanDCore: if UseAlanDCore generate @@ -272,8 +267,6 @@ begin ); cpu_dout <= std_logic_vector(cpu_dout_us); cpu_addr <= std_logic_vector(cpu_addr_us); - -- For debugging only - debug_clk <= cpu_clken; end generate; inst_tube: tube port map ( @@ -328,6 +321,7 @@ begin ram_oe <= '1'; ram_wr <= '1'; ram_addr <= (others => '1'); + ram_data <= (others => '1'); -------------------------------------------------------- -- test signals @@ -374,19 +368,14 @@ begin case "00"&sw is when x"0" => cpu_clken <= clken_counter(0); - p_tube_clk <= clken_counter(0); when x"1" => cpu_clken <= clken_counter(1) and clken_counter(0); - p_tube_clk <= clken_counter(1) and not clken_counter(0); when x"2" => cpu_clken <= clken_counter(2) and clken_counter(1) and clken_counter(0); - p_tube_clk <= clken_counter(2) and not clken_counter(1); when x"3" => cpu_clken <= clken_counter(3) and clken_counter(2) and clken_counter(1) and clken_counter(0); - p_tube_clk <= clken_counter(3) and not clken_counter(2); when others => cpu_clken <= clken_counter(0); - p_tube_clk <= not clken_counter(0); end case; RSTn_sync <= RSTn; end if; From ba000dd88f3a18fdaf217f64c9bc94d99efe387a Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Feb 2015 19:44:52 +0000 Subject: [PATCH 04/61] Got rid of a few more latches Change-Id: I53c3901314efa6ecd646208b038f6e5d90cecbb5 --- src/Tube/tube.v | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tube/tube.v b/src/Tube/tube.v index 3184667..6cca34e 100644 --- a/src/Tube/tube.v +++ b/src/Tube/tube.v @@ -321,7 +321,7 @@ module tube ( // Latch host side register select signals on phi2 - found that the L1B CPLD was // more robust when this was done avoiding bus hold issues ? - always @ ( h_phi2 or h_rst_b or h_select_reg0_d_w or h_select_fifo_d_w or h_rdnw ) + always @ (posedge h_phi2 or negedge h_rst_b) begin if ( ! h_rst_b ) begin @@ -329,7 +329,7 @@ module tube ( h_select_reg0_q_r <= 1'b0; h_rdnw_q_r <= 1'b0; end - else if ( !h_phi2 ) + else begin h_rdnw_q_r <= h_rdnw; h_select_reg0_q_r <= h_select_reg0_d_w; From f7007b9735c6cad1eb19865b6e8c996e6dee857f Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Feb 2015 20:28:57 +0000 Subject: [PATCH 05/61] Set speed grade to -2 Change-Id: Ia8ef17ca32aa3807f032667410c499396d13d887 --- LX9Co-6502fast.xise | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index 5793da7..049e585 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -129,8 +129,8 @@ - - + + @@ -158,7 +158,7 @@ - + @@ -371,7 +371,7 @@ - + From 9d0d159b0578f79818c8ddb7229f03db3f0cc07a Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Feb 2015 20:39:24 +0000 Subject: [PATCH 06/61] Correct the clock edge in a couple of places Change-Id: I0e5e1e1b1f9bc560ae1d9fb38dce13a25fa275f4 --- src/Tube/ph_byte.v | 2 +- src/Tube/ph_reg3.v | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tube/ph_byte.v b/src/Tube/ph_byte.v index 4364daf..c0190f5 100644 --- a/src/Tube/ph_byte.v +++ b/src/Tube/ph_byte.v @@ -54,7 +54,7 @@ module ph_byte ( ); // Infer all state - always @ ( negedge p_phi2 or negedge h_rst_b ) + always @ ( posedge p_phi2 or negedge h_rst_b ) begin if ( ! h_rst_b) fifo_q_r <= 8'h41; diff --git a/src/Tube/ph_reg3.v b/src/Tube/ph_reg3.v index be6895e..552e1b0 100644 --- a/src/Tube/ph_reg3.v +++ b/src/Tube/ph_reg3.v @@ -89,7 +89,7 @@ module ph_reg3 ( ); // Infer all state - always @ ( negedge p_phi2 or negedge h_rst_b ) + always @ ( posedge p_phi2 or negedge h_rst_b ) begin if ( ! h_rst_b) begin From 1a9a9844f12cb6cc325f914b69ba501d151c40d5 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 15 Feb 2015 17:38:45 +0000 Subject: [PATCH 07/61] Changed from four-phase to two-phase synchroniser in the new Tube flag logic; reduced latency and fixes the SAVE issue Change-Id: I815628e1f4f5c60ec57e14cc15734e770e7776da --- LX9Co-6502fast.xise | 1 + src/LX9Co_CoPro6502fast.vhd | 11 ++++- src/Tube/gen_flag_v1.v | 84 +++++++++++++++++++++++++++++++++ src/Tube/gen_flag_v2.v | 68 +++++++++++++++++++++++++++ src/Tube/gen_flag_v3.v | 94 +++++++++++++++++++++++++++++++++++++ src/Tube/hp_flag_m.v | 92 ++---------------------------------- src/Tube/ph_flag_m.v | 92 ++---------------------------------- src/Tube/ph_reg3.v | 9 ++++ 8 files changed, 275 insertions(+), 176 deletions(-) create mode 100644 src/Tube/gen_flag_v1.v create mode 100644 src/Tube/gen_flag_v2.v create mode 100644 src/Tube/gen_flag_v3.v diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index 049e585..d3cc051 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -443,6 +443,7 @@ + diff --git a/src/LX9Co_CoPro6502fast.vhd b/src/LX9Co_CoPro6502fast.vhd index 6b58474..34446d8 100644 --- a/src/LX9Co_CoPro6502fast.vhd +++ b/src/LX9Co_CoPro6502fast.vhd @@ -322,11 +322,18 @@ begin ram_wr <= '1'; ram_addr <= (others => '1'); ram_data <= (others => '1'); - + -------------------------------------------------------- -- test signals -------------------------------------------------------- - test <= (others => '0'); + test(8) <= cpu_NMI_n; + test(7) <= h_phi2; + test(6) <= not((not p_cs_b) and cpu_clken); + test(5) <= cpu_R_W_n; + test(4) <= cpu_addr(2); + test(3) <= cpu_addr(1); + test(2) <= cpu_addr(0); + test(1) <= cpu_clken; -------------------------------------------------------- -- boot mode generator diff --git a/src/Tube/gen_flag_v1.v b/src/Tube/gen_flag_v1.v new file mode 100644 index 0000000..5e582f6 --- /dev/null +++ b/src/Tube/gen_flag_v1.v @@ -0,0 +1,84 @@ +( + input rst_b, + input p1_clk, + input p1_select, + input p1_rdnw, + input p2_clk, + input p2_select, + input p2_rdnw, + output p2_data_available, + output p1_full +); + + // Initial state: 0 = empty; 1 = full + parameter init = 0; + + wire req; + reg req_s1; + reg req_s2; + wire ack; + reg ack_s1; + reg ack_s2; + + reg [1:0] p1_state; + reg [1:0] p2_state; + + always @ (`p1edge p1_clk or negedge rst_b ) + begin + if (!rst_b) begin + p1_state <= { 1'b0, init }; + ack_s1 <= 1'b0; + ack_s2 <= 1'b0; + end else begin + ack_s1 <= ack; + ack_s2 <= ack_s1; + case (p1_state) + 2'b00: + if (p1_select & ! p1_rdnw) + p1_state <= 2'b01; + 2'b01: + if (ack_s2) + p1_state <= 2'b10; + 2'b10: + if (!ack_s2) + p1_state <= 2'b00; + default: + p1_state <= 2'b00; + endcase + end + end + + assign req = p1_state[0]; + + assign p1_full = p1_state[0] | p1_state[1]; + + always @ (`p2edge p2_clk or negedge rst_b ) + begin + if (!rst_b) begin + p2_state <= { 1'b0, init}; + req_s1 <= init; + req_s2 <= init; + end else begin + req_s1 <= req; + req_s2 <= req_s1; + case (p2_state) + 2'b00: + if (req_s2) + p2_state <= 2'b01; + 2'b01: + if (p2_select & p2_rdnw) + p2_state <= 2'b10; + 2'b10: + if (!req_s2) + p2_state <= 2'b00; + default: + p2_state <= 2'b00; + endcase + end + end + + assign ack = p2_state[1]; + + assign p2_data_available = p2_state[0] & !p2_state[1]; + +endmodule diff --git a/src/Tube/gen_flag_v2.v b/src/Tube/gen_flag_v2.v new file mode 100644 index 0000000..3e8dbbf --- /dev/null +++ b/src/Tube/gen_flag_v2.v @@ -0,0 +1,68 @@ +( + input rst_b, + input p1_clk, + input p1_select, + input p1_rdnw, + input p2_clk, + input p2_select, + input p2_rdnw, + output p2_data_available, + output p1_full +); + + // Initial state: 0 = empty; 1 = full + parameter init = 0; + + reg req; + reg req_s1; + reg req_s2; + reg ack; + reg ack_s1; + reg ack_s2; + + + always @ (`p1edge p1_clk or negedge rst_b ) + begin + if (!rst_b) begin + req <= init; + ack_s1 <= 1'b0; + ack_s2 <= 1'b0; + end else begin + ack_s1 <= ack; + ack_s2 <= ack_s1; + case (req) + 1'b0: + if (!ack_s2 & p1_select & !p1_rdnw) + req <= 1'b1; + 1'b1: + if (ack_s2) + req <= 1'b0; + endcase + end + end + + assign p1_full = req | ack_s2; + + always @ (`p2edge p2_clk or negedge rst_b ) + begin + if (!rst_b) begin + ack <= 1'b0; + req_s1 <= init; + req_s2 <= init; + end else begin + req_s1 <= req; + req_s2 <= req_s1; + case (ack) + 1'b0: + if (req_s2 & p2_select & p2_rdnw) + ack <= 1'b1; + 1'b1: + if (!req_s2) + ack <= 1'b0; + endcase + end + end + + assign p2_data_available = !ack & req_s2; + +endmodule diff --git a/src/Tube/gen_flag_v3.v b/src/Tube/gen_flag_v3.v new file mode 100644 index 0000000..261875b --- /dev/null +++ b/src/Tube/gen_flag_v3.v @@ -0,0 +1,94 @@ +( + input rst_b, + input p1_clk, + input p1_select, + input p1_rdnw, + input p2_clk, + input p2_select, + input p2_rdnw, + output p2_data_available, + output p1_full +); + + // Initial state: 0 = empty; 1 = full + + // TODO - Implement this! + parameter init = 0; + + wire req; + reg req_s1; + reg req_s2; + reg req_edge; + + reg [1:0] p1_state; + + wire ack; + reg ack_s1; + reg ack_s2; + reg ack_edge; + reg [1:0] p2_state; + + + always @ (`p1edge p1_clk or negedge rst_b ) + begin + if (!rst_b) begin + ack_s1 <= 1'b0; + ack_s2 <= 1'b0; + ack_edge <= 1'b0; + p1_state <= 2'b00; + end else begin + ack_s1 <= ack; + ack_s2 <= ack_s1; + ack_edge <= ack_s2 ^ ack_s1; + case (p1_state) + 2'b00: + if (p1_select & !p1_rdnw) + p1_state <= 2'b01; + 2'b01: + if (ack_edge) + p1_state <= 2'b11; + 2'b11: + if (p1_select & !p1_rdnw) + p1_state <= 2'b10; + 2'b10: + if (ack_edge) + p1_state <= 2'b00; + endcase + end + end + + assign req = p1_state[0]; + assign p1_full = p1_state[0] ^ p1_state[1]; + + always @ (`p2edge p2_clk or negedge rst_b ) + begin + if (!rst_b) begin + req_s1 <= 1'b0; + req_s2 <= 1'b0; + req_edge <= 1'b0; + p2_state <= 2'b00; + end else begin + req_s1 <= req; + req_s2 <= req_s1; + req_edge <= req_s2 ^ req_s1; + case (p2_state) + 2'b00: + if (req_edge) + p2_state <= 2'b10; + 2'b10: + if (p2_select & p2_rdnw) + p2_state <= 2'b11; + 2'b11: + if (req_edge) + p2_state <= 2'b01; + 2'b01: + if (p2_select & p2_rdnw) + p2_state <= 2'b00; + endcase + end + end + + assign ack = p2_state[0]; + assign p2_data_available = p2_state[0] ^ p2_state[1]; + +endmodule diff --git a/src/Tube/hp_flag_m.v b/src/Tube/hp_flag_m.v index 8fa1ac7..5c77cbe 100644 --- a/src/Tube/hp_flag_m.v +++ b/src/Tube/hp_flag_m.v @@ -1,90 +1,8 @@ `timescale 1ns / 1ns -module hp_flag_m ( - input rst_b, - input p1_clk, - input p1_select, - input p1_rdnw, - input p2_clk, - input p2_select, - input p2_rdnw, - output p2_data_available, - output p1_full -); +`define p1edge negedge +`define p2edge posedge - // Initial state: 0 = empty; 1 = full - parameter init = 0; - - wire req; - reg req_s1; - reg req_s2; - wire ack; - reg ack_s1; - reg ack_s2; - - reg [1:0] p1_state; - reg [1:0] p2_state; - - always @ (negedge p1_clk or negedge rst_b ) - begin - if (!rst_b) begin - p1_state <= { 1'b0, init }; - ack_s1 <= 1'b0; - ack_s2 <= 1'b0; - end else begin - ack_s1 <= ack; - ack_s2 <= ack_s1; - case (p1_state) - 2'b00: - if (p1_select & ! p1_rdnw) - p1_state <= 2'b01; - 2'b01: - if (ack_s2) - p1_state <= 2'b10; - 2'b10: - if (!ack_s2) - p1_state <= 2'b00; - default: - p1_state <= 2'b00; - endcase - end - end - - assign req = p1_state[0]; - - assign p1_full = p1_state[0] | p1_state[1]; - - always @ (posedge p2_clk or negedge rst_b ) - begin - if (!rst_b) begin - p2_state <= { 1'b0, init}; - req_s1 <= init; - req_s2 <= init; - end else begin - req_s1 <= req; - req_s2 <= req_s1; - case (p2_state) - 2'b00: - if (req_s2) - p2_state <= 2'b01; - 2'b01: - if (p2_select & p2_rdnw) - p2_state <= 2'b10; - 2'b10: - if (!req_s2) - p2_state <= 2'b00; - default: - p2_state <= 2'b00; - endcase - end - end - - assign ack = p2_state[1]; - - assign p2_data_available = p2_state[0] & !p2_state[1]; - -endmodule // gen_flag_m - - - - +module hp_flag_m + +`include "gen_flag_v3.v" diff --git a/src/Tube/ph_flag_m.v b/src/Tube/ph_flag_m.v index ffd6e16..3c918c5 100644 --- a/src/Tube/ph_flag_m.v +++ b/src/Tube/ph_flag_m.v @@ -1,90 +1,8 @@ `timescale 1ns / 1ns -module ph_flag_m ( - input rst_b, - input p1_clk, - input p1_select, - input p1_rdnw, - input p2_clk, - input p2_select, - input p2_rdnw, - output p2_data_available, - output p1_full -); +`define p1edge posedge +`define p2edge negedge - // Initial state: 0 = empty; 1 = full - parameter init = 0; - - wire req; - reg req_s1; - reg req_s2; - wire ack; - reg ack_s1; - reg ack_s2; - - reg [1:0] p1_state; - reg [1:0] p2_state; - - always @ (posedge p1_clk or negedge rst_b ) - begin - if (!rst_b) begin - p1_state <= { 1'b0, init }; - ack_s1 <= 1'b0; - ack_s2 <= 1'b0; - end else begin - ack_s1 <= ack; - ack_s2 <= ack_s1; - case (p1_state) - 2'b00: - if (p1_select & ! p1_rdnw) - p1_state <= 2'b01; - 2'b01: - if (ack_s2) - p1_state <= 2'b10; - 2'b10: - if (!ack_s2) - p1_state <= 2'b00; - default: - p1_state <= 2'b00; - endcase - end - end - - assign req = p1_state[0]; - - assign p1_full = p1_state[0] | p1_state[1]; - - always @ (negedge p2_clk or negedge rst_b ) - begin - if (!rst_b) begin - p2_state <= { 1'b0, init}; - req_s1 <= init; - req_s2 <= init; - end else begin - req_s1 <= req; - req_s2 <= req_s1; - case (p2_state) - 2'b00: - if (req_s2) - p2_state <= 2'b01; - 2'b01: - if (p2_select & p2_rdnw) - p2_state <= 2'b10; - 2'b10: - if (!req_s2) - p2_state <= 2'b00; - default: - p2_state <= 2'b00; - endcase - end - end - - assign ack = p2_state[1]; - - assign p2_data_available = p2_state[0] & !p2_state[1]; - -endmodule // gen_flag_m - - - - +module ph_flag_m + +`include "gen_flag_v3.v" \ No newline at end of file diff --git a/src/Tube/ph_reg3.v b/src/Tube/ph_reg3.v index 552e1b0..e3d2cd7 100644 --- a/src/Tube/ph_reg3.v +++ b/src/Tube/ph_reg3.v @@ -50,6 +50,15 @@ module ph_reg3 ( assign h_data = ( h_data_available_w[0]) ? byte0_q_r : byte1_q_r; assign h_zero_bytes_available = ! (h_data_available_w[0] | ( h_data_available_w[1] & !one_byte_mode )) ; + + //This was a work around for a SAVE issue cause by too much latency through the sumchronizers + //reg h_zero_bytes_available; + //wire h_zero_bytes_available0; + //reg h_zero_bytes_available1; + //always @ ( negedge h_phi2) begin + // h_zero_bytes_available1 <= h_zero_bytes_available0; + // h_zero_bytes_available <= h_zero_bytes_available1; + //end // Register 3 is intended to enable high speed transfers of large blocks of data across the tube. // It can operate in one or two byte mode, depending on the V flag. In one byte mode the status From 95b14506254f1b7415763bddcb0eb782bdd0caf1 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 15 Feb 2015 22:09:30 +0000 Subject: [PATCH 08/61] Possible fix for two-byte mode issue Change-Id: I186c6b08742d9c7f8bfe4d1bd5fd770f01ae2b7c --- src/Tube/hp_reg3.v | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tube/hp_reg3.v b/src/Tube/hp_reg3.v index 2e59e00..c61079d 100644 --- a/src/Tube/hp_reg3.v +++ b/src/Tube/hp_reg3.v @@ -47,8 +47,8 @@ module hp_reg3 ( wire [7:0] byte1_d_w ; // assign primary IOs - // assign p_data = ( p_data_available_w[0] ) ? byte0_q_r: byte1_q_r; - assign p_data = byte0_q_r; + assign p_data = ( p_data_available_w[0] ) ? byte0_q_r: byte1_q_r; + // assign p_data = byte0_q_r; assign p_two_bytes_available = !(one_byte_mode) & ( &p_data_available_w ); // Compute D and resets for state bits From d05d41a720f44e00fee10a43f3f72ebd86bc8cd5 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 17 Feb 2015 18:20:31 +0000 Subject: [PATCH 09/61] 6502 CoPro: Updated to work against the new Tube core Change-Id: Ic9715b220a477144a6baaa26a36f92e77f2e5044 --- LX9Co-6502.xise | 69 ++++++++++++++++++++--------------------- src/LX9Co_CoPro6502.vhd | 46 +++++++++++++-------------- 2 files changed, 55 insertions(+), 60 deletions(-) diff --git a/LX9Co-6502.xise b/LX9Co-6502.xise index c65d58a..90df281 100644 --- a/LX9Co-6502.xise +++ b/LX9Co-6502.xise @@ -16,89 +16,87 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + - + - + - - - - + - + + + + + @@ -125,10 +123,10 @@ - - + + - + @@ -154,7 +152,7 @@ - + @@ -366,7 +364,7 @@ - + @@ -438,6 +436,7 @@ + diff --git a/src/LX9Co_CoPro6502.vhd b/src/LX9Co_CoPro6502.vhd index 7a7b39f..adad5ea 100644 --- a/src/LX9Co_CoPro6502.vhd +++ b/src/LX9Co_CoPro6502.vhd @@ -27,8 +27,8 @@ entity LX9CoPro6502 is h_irq_b : inout std_logic; - -- Ram Signals - ram_ub_b : out std_logic; + -- Ram Signals + ram_ub_b : out std_logic; ram_lb_b : out std_logic; ram_cs : out std_logic; ram_oe : out std_logic; @@ -149,9 +149,10 @@ architecture BEHAVIORAL of LX9CoPro6502 is signal phi2 : std_logic; signal phi3 : std_logic; signal cpu_clken : std_logic; - signal clken_counter : std_logic_vector (3 downto 0); + signal clken_counter : std_logic_vector (1 downto 0); signal bootmode : std_logic; signal RSTn : std_logic; + signal RSTn_sync : std_logic; ------------------------------------------------- -- parasite signals @@ -209,7 +210,7 @@ begin Mode => "01", Abort_n => '1', SO_n => '1', - Res_n => RSTn, + Res_n => RSTn_sync, Enable => cpu_clken, Clk => clk_16M00, Rdy => '1', @@ -232,7 +233,7 @@ begin irq_n_i => cpu_IRQ_n_sync, nmi_n_i => cpu_NMI_n_sync, rdy_i => '1', - rst_rst_n_i => RSTn, + rst_rst_n_i => RSTn_sync, so_n_i => '1', a_o => cpu_addr(15 downto 0), d_o => cpu_dout, @@ -247,7 +248,7 @@ begin GenAlanDCore: if UseAlanDCore generate inst_r65c02: r65c02 port map( - reset => RSTn, + reset => RSTn_sync, clk => clk_16M00, enable => cpu_clken, nmi_n => cpu_NMI_n_sync, @@ -274,11 +275,11 @@ begin h_rst_b => h_rst_b, h_irq_b => h_irq_b, p_addr => cpu_addr(2 downto 0), - p_cs_b => p_cs_b, + p_cs_b => not((not p_cs_b) and cpu_clken), p_data_in => cpu_dout, p_data_out => p_data_out, p_rdnw => cpu_R_W_n, - p_phi2 => phi1, + p_phi2 => clk_16M00, p_rst_b => RSTn, p_nmi_b => cpu_NMI_n, p_irq_b => cpu_IRQ_n @@ -296,9 +297,9 @@ begin rom_data_out when rom_cs_b = '0' else ram_data when ram_cs_b = '0' else x"f1"; - - ram_ub_b <= '0'; - ram_lb_b <= '0'; + + ram_ub_b <= '0'; + ram_lb_b <= '0'; ram_cs <= ram_cs_b; ram_oe_int <= not ((not ram_cs_b) and cpu_R_W_n); ram_oe <= ram_oe_int; @@ -310,10 +311,10 @@ begin --fcs <= '1'; testpr : process(sw, debug_clk, sync, cpu_addr, h_addr, h_cs_b, cpu_dout, p_data_out, p_cs_b, cpu_NMI_n, cpu_IRQ_n) - begin - test(7) <= bootmode; - test(8) <= ram_cs_b; - + begin + test(7) <= bootmode; + test(8) <= ram_cs_b; + if (sw(1) = '1' and sw(2) = '1') then test(6) <= debug_clk; @@ -375,9 +376,9 @@ begin -------------------------------------------------------- -- boot mode generator -------------------------------------------------------- - boot_gen : process(clk_16M00, RSTn) + boot_gen : process(clk_16M00, RSTn_sync) begin - if RSTn = '0' then + if RSTn_sync = '0' then bootmode <= '1'; elsif rising_edge(clk_16M00) then if p_cs_b = '0' then @@ -386,9 +387,9 @@ begin end if; end process; - sync_gen : process(clk_16M00, RSTn) + sync_gen : process(clk_16M00, RSTn_sync) begin - if RSTn = '0' then + if RSTn_sync = '0' then cpu_NMI_n_sync <= '1'; cpu_IRQ_n_sync <= '1'; elsif rising_edge(clk_16M00) then @@ -412,12 +413,6 @@ begin -------------------------------------------------------- clk_gen : process(clk_16M00, RSTn) begin --- if RSTn = '0' then --- clken_counter <= (others => '0'); --- cpu_clken <= '0'; --- phi <= '0'; --- phi2 <= '0'; --- els if rising_edge(clk_16M00) then clken_counter <= clken_counter + 1; cpu_clken <= clken_counter(0) and clken_counter(1); @@ -426,6 +421,7 @@ begin phi2 <= phi1; phi3 <= phi2; end if; + RSTn_sync <= RSTn; end process; end BEHAVIORAL; From 9a526d22dad317fea10740924eb48c0292118cbd Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 17 Feb 2015 18:21:08 +0000 Subject: [PATCH 10/61] Z80 CoPro: Updated to work against the new Tube core; now running at 8MHz Change-Id: I3721bf94177af05fa96bb98bbb65593ec0613880 --- LX9Co-z80.xise | 62 +++++------ src/LX9Co_CoProZ80.vhd | 247 +++++++++++++---------------------------- 2 files changed, 111 insertions(+), 198 deletions(-) diff --git a/LX9Co-z80.xise b/LX9Co-z80.xise index e561479..8aab306 100644 --- a/LX9Co-z80.xise +++ b/LX9Co-z80.xise @@ -18,71 +18,70 @@ - - - - + - + - + - + - + - + - + - - - - + - + - - - - + - + - + - + - + - + - + - + + + + + + + + + @@ -107,10 +106,10 @@ - - + + - + @@ -136,7 +135,7 @@ - + @@ -348,7 +347,7 @@ - + @@ -420,6 +419,7 @@ + diff --git a/src/LX9Co_CoProZ80.vhd b/src/LX9Co_CoProZ80.vhd index 0110d4c..f60509b 100644 --- a/src/LX9Co_CoProZ80.vhd +++ b/src/LX9Co_CoProZ80.vhd @@ -7,10 +7,8 @@ entity LX9CoProZ80 is port ( -- GOP Signals fastclk : in std_logic; --- tp : out std_logic_vector(8 downto 2); test : out std_logic_vector(8 downto 1); sw : in std_logic_vector(2 downto 1); --- fcs : out std_logic; -- Tube signals (use 16 out of 22 DIL pins) h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks @@ -35,7 +33,7 @@ end LX9CoProZ80; architecture BEHAVIORAL of LX9CoProZ80 is - component dcm_32_24 + component dcm_32_16 port ( CLKIN_IN : in std_logic; CLK0_OUT : out std_logic; @@ -83,8 +81,6 @@ architecture BEHAVIORAL of LX9CoProZ80 is h_rdnw : in std_logic; h_rst_b : in std_logic; h_irq_b : inout std_logic; - -- drq : out std_logic; - -- dackb : in std_logic; p_addr : in std_logic_vector(2 downto 0); p_cs_b : in std_logic; p_data_in : in std_logic_vector(7 downto 0); @@ -101,22 +97,18 @@ architecture BEHAVIORAL of LX9CoProZ80 is -- clock and reset signals ------------------------------------------------- - signal clk_6M00 : std_logic; - signal clk_24M00 : std_logic; - signal phi0 : std_logic; - signal phi1 : std_logic; - signal phi2 : std_logic; - signal phi3 : std_logic; + signal cpu_clk : std_logic; signal cpu_clken : std_logic; - signal clken_counter : std_logic_vector (3 downto 0); signal bootmode : std_logic; signal RSTn : std_logic; + signal RSTn_sync : std_logic; ------------------------------------------------- -- parasite signals ------------------------------------------------- signal p_cs_b : std_logic; + signal tube_cs_b : std_logic; signal p_data_out : std_logic_vector (7 downto 0); ------------------------------------------------- @@ -125,10 +117,10 @@ architecture BEHAVIORAL of LX9CoProZ80 is signal ram_cs_b : std_logic; signal ram_oe_int : std_logic; - signal ram_wr_int : std_logic; - + signal ram_wr_int : std_logic; signal rom_cs_b : std_logic; signal rom_data_out : std_logic_vector (7 downto 0); + ------------------------------------------------- -- cpu signals ------------------------------------------------- @@ -152,60 +144,59 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_24 : dcm_32_24 port map ( - CLKIN_IN => fastclk, - CLK0_OUT => clk_24M00, - CLK0_OUT1 => open, - CLK2X_OUT => open); + inst_dcm_32_16 : dcm_32_16 port map ( + CLKIN_IN => fastclk, + CLK0_OUT => cpu_clk, + CLK0_OUT1 => open, + CLK2X_OUT => open); - clk_6M00 <= phi2; - inst_tuberom : tuberom_z80 port map ( - CLK => clk_24M00, - ADDR => cpu_addr(11 downto 0), - DATA => rom_data_out + CLK => cpu_clk, + ADDR => cpu_addr(11 downto 0), + DATA => rom_data_out ); inst_Z80 : T80se port map ( - RESET_n => RSTn, - CLK_n => clk_24M00, - CLKEN => cpu_clken, - WAIT_n => '1', - INT_n => cpu_IRQ_n_sync, - NMI_n => cpu_NMI_n_sync, - BUSRQ_n => '1', - M1_n => cpu_m1_n, - MREQ_n => cpu_mreq_n, - IORQ_n => cpu_iorq_n, - RD_n => cpu_rd_n, - WR_n => cpu_wr_n, - RFSH_n => open, - HALT_n => open, - BUSAK_n => open, - A => cpu_addr, - DI => cpu_din, - DO => cpu_dout + RESET_n => RSTn_sync, + CLK_n => cpu_clk, + CLKEN => cpu_clken, + WAIT_n => '1', + INT_n => cpu_IRQ_n_sync, + NMI_n => cpu_NMI_n_sync, + BUSRQ_n => '1', + M1_n => cpu_m1_n, + MREQ_n => cpu_mreq_n, + IORQ_n => cpu_iorq_n, + RD_n => cpu_rd_n, + WR_n => cpu_wr_n, + RFSH_n => open, + HALT_n => open, + BUSAK_n => open, + A => cpu_addr, + DI => cpu_din, + DO => cpu_dout ); inst_tube: tube port map ( - h_addr => h_addr, - h_cs_b => h_cs_b, - h_data => h_data, - h_phi2 => h_phi2, - h_rdnw => h_rdnw, - h_rst_b => h_rst_b, - h_irq_b => h_irq_b, - p_addr => cpu_addr(2 downto 0), - p_cs_b => p_cs_b, - p_data_in => cpu_dout, - p_data_out => p_data_out, - p_phi2 => clk_6M00, - p_rdnw => cpu_wr_n, - p_rst_b => RSTn, - p_nmi_b => cpu_NMI_n, - p_irq_b => cpu_IRQ_n + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b, + h_irq_b => h_irq_b, + p_addr => cpu_addr(2 downto 0), + p_cs_b => tube_cs_b, + p_data_in => cpu_dout, + p_data_out => p_data_out, + p_phi2 => cpu_clk, + p_rdnw => cpu_wr_n, + p_rst_b => RSTn, + p_nmi_b => cpu_NMI_n, + p_irq_b => cpu_IRQ_n ); - + + tube_cs_b <= not ((not p_cs_b) and cpu_clken); p_cs_b <= '0' when cpu_mreq_n = '1' and cpu_iorq_n = '0' and cpu_addr(7 downto 3) = "00000" else '1'; @@ -214,15 +205,13 @@ begin ram_cs_b <= '0' when cpu_mreq_n = '0' and rom_cs_b = '1' else '1'; cpu_din <= - x"fe" when cpu_m1_n = '0' and cpu_iorq_n = '0' else - p_data_out when p_cs_b = '0' else + p_data_out when p_cs_b = '0' else rom_data_out when rom_cs_b = '0' else ram_data when ram_cs_b = '0' else x"fe"; ram_ub_b <= '0'; - ram_lb_b <= '0'; - + ram_lb_b <= '0'; ram_cs <= ram_cs_b; ram_oe_int <= not ((not ram_cs_b) and (not cpu_rd_n)); ram_oe <= ram_oe_int; @@ -231,83 +220,28 @@ begin ram_addr <= "000" & cpu_addr; ram_data <= cpu_dout when cpu_wr_n = '0' else "ZZZZZZZZ"; - --fcs <= '1'; - --- tp(8) <= RSTn; --- tp(7) <= ram_wr_int; --- tp(6) <= ram_oe_int; --- tp(5) <= p_cs_b; --- tp(4) <= CPU_IRQ_n; --- tp(3) <= CPU_NMI_n; --- tp(2) <= bootmode; - - testpr : process(sw, cpu_addr, h_addr, h_cs_b, p_data_out, cpu_rd_n, p_cs_b, cpu_m1_n) - begin - test(7) <= '0'; -- - test(8) <= '1'; -- - if (sw(1) = '1' and sw(2) = '1') then --- test(6) <= cpu_rd_n; -- 12 --- test(5) <= cpu_wr_n; -- 11 --- test(4) <= cpu_m1_n; -- 10 --- test(3) <= cpu_mreq_n; -- 9 --- test(2) <= cpu_iorq_n; -- 8 --- test(1) <= p_cs_b; -- 7 --- tp(8) <= rom_cs_b; -- 6 --- tp(7) <= ram_cs_b; -- 5 --- tp(6) <= ram_oe_int; -- 4 --- tp(5) <= ram_wr_int; -- 3 --- tp(4) <= CPU_IRQ_n; -- 2 --- tp(3) <= CPU_NMI_n; -- 1 --- tp(2) <= bootmode; -- 0 +-------------------------------------------------------- +-- test signals +-------------------------------------------------------- - test(6) <= CPU_NMI_n; - test(5) <= cpu_wr_n; - if h_addr(2 downto 0) = "101" and h_cs_b = '0' then - test(4) <= '1'; - else - test(4) <= '0'; - end if; - if cpu_addr(2 downto 0) = "101" and p_cs_b = '0' then - test(3) <= '1'; - else - test(3) <= '0'; - end if; - test(2) <= clk_6M00; - test(1) <= cpu_dout(7); - --tp(8) <= cpu_dout(6); - --tp(7) <= cpu_dout(5); - --tp(6) <= cpu_dout(4); - --tp(5) <= cpu_dout(3); - --tp(4) <= cpu_dout(2); - --tp(3) <= cpu_dout(1); - --tp(2) <= cpu_dout(0); - else - - test(6) <= CPU_NMI_n; - test(5) <= cpu_m1_n; - test(4) <= cpu_addr(10); - test(3) <= cpu_addr(9); - test(2) <= cpu_addr(8); - test(1) <= cpu_addr(7); + test(8) <= RSTn_sync; + test(7) <= ram_wr_int; + test(6) <= CPU_IRQ_n; + test(5) <= p_cs_b; + test(4) <= cpu_addr(2); + test(3) <= cpu_addr(1); + test(2) <= cpu_addr(0); + test(1) <= p_data_out(7); - --tp(8) <= cpu_addr(6); - --tp(7) <= cpu_addr(5); - --tp(6) <= cpu_addr(4); - --tp(5) <= cpu_addr(3); - --tp(4) <= cpu_addr(2); - --tp(3) <= cpu_addr(1); - --tp(2) <= cpu_addr(0); - end if; - end process; - -------------------------------------------------------- -- boot mode generator -------------------------------------------------------- - boot_gen : process(clk_24M00, RSTn) + + boot_gen : process(cpu_clk, RSTn_sync) begin - if RSTn = '0' then + if RSTn_sync = '0' then bootmode <= '1'; - elsif rising_edge(clk_24M00) then + elsif rising_edge(cpu_clk) then if (cpu_mreq_n = '0' and cpu_m1_n = '0') then if (cpu_addr = x"0066") then bootmode <= '1'; @@ -318,53 +252,32 @@ begin end if; end process; - sync_gen : process(clk_24M00, RSTn) +-------------------------------------------------------- +-- synchronize interrupts etc into Z80 core +-------------------------------------------------------- + + sync_gen : process(cpu_clk, RSTn_sync) begin - if RSTn = '0' then + if RSTn_sync = '0' then cpu_NMI_n_sync <= '1'; cpu_IRQ_n_sync <= '1'; - elsif rising_edge(clk_24M00) then + elsif rising_edge(cpu_clk) then if (cpu_clken = '1') then cpu_NMI_n_sync <= cpu_NMI_n; cpu_IRQ_n_sync <= cpu_IRQ_n; end if; end if; end process; + -------------------------------------------------------- -- clock enable generator - --- 6MHz --- cpu_clken active on cycle 0, 4, 8, 12 --- address/data changes on cycle 1, 5, 9, 13 --- phi0 active on cycle 1..2 -- rising edge sees unstable data - completes lang transfer than hangs --- phi1 active on cycle 2..3 -- both edges see stable data - works (saw insert CPM) --- phi2 active on cycle 3..4 -- falling edge sees unstable data - fails - AAAAAAAAAAAAA --- phi3 active on cycle 4..5 -- edges see different data - completes lang transfer than hangs - --- alternative --- phi0 active on cycle 1 -- works (saw insert CPM) --- phi1 active on cycle 2 -- completes lang transfer than hangs --- phi2 active on cycle 3 -- works (saw insert CPM) --- phi3 active on cycle 4 -- fails - AIAIIAIAIIAIAIIAIA - -------------------------------------------------------- - clk_gen : process(clk_24M00, RSTn) + + clk_gen : process(cpu_clk) begin - if RSTn = '0' then - clken_counter <= (others => '0'); - cpu_clken <= '0'; - phi0 <= '0'; - phi1 <= '0'; - phi2 <= '0'; - phi3 <= '0'; - elsif rising_edge(clk_24M00) then - clken_counter <= clken_counter + 1; - cpu_clken <= clken_counter(0) and clken_counter(1); - --phi0 <= not clken_counter(1); - phi0 <= cpu_clken; - phi1 <= phi0; - phi2 <= phi1; - phi3 <= phi2; + if rising_edge(cpu_clk) then + cpu_clken <= not cpu_clken; + RSTn_sync <= RSTn; end if; end process; From e4acb8d740b185c0ca95b8ed2c85691e435b9dc1 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 17 Feb 2015 19:06:39 +0000 Subject: [PATCH 11/61] 80x86 CoPro: Updated to work against the new Tube core; implemented init state in gen_flag_v3 - needed otherside NMI causes x86 to crash on boot Change-Id: I2b7ae62c58710150a1d50182fe73cf6db1bab6f5 --- LX9Co-x86.xise | 79 +++++++++++++++++++++--------------------- src/Tube/gen_flag_v3.v | 4 +-- 2 files changed, 41 insertions(+), 42 deletions(-) diff --git a/LX9Co-x86.xise b/LX9Co-x86.xise index 28f2cbb..8b01f44 100644 --- a/LX9Co-x86.xise +++ b/LX9Co-x86.xise @@ -16,57 +16,51 @@ - - - - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + @@ -74,7 +68,7 @@ - + @@ -90,7 +84,7 @@ - + @@ -102,7 +96,7 @@ - + @@ -110,7 +104,7 @@ - + @@ -118,11 +112,11 @@ - + - + @@ -138,15 +132,15 @@ - + - + - + @@ -154,7 +148,7 @@ - + @@ -170,11 +164,11 @@ - + - + @@ -186,21 +180,25 @@ - + - + - + + + + + @@ -227,10 +225,10 @@ - - + + - + @@ -256,7 +254,7 @@ - + @@ -469,7 +467,7 @@ - + @@ -543,6 +541,7 @@ + diff --git a/src/Tube/gen_flag_v3.v b/src/Tube/gen_flag_v3.v index 261875b..42e265f 100644 --- a/src/Tube/gen_flag_v3.v +++ b/src/Tube/gen_flag_v3.v @@ -35,7 +35,7 @@ ack_s1 <= 1'b0; ack_s2 <= 1'b0; ack_edge <= 1'b0; - p1_state <= 2'b00; + p1_state <= { 1'b0, init}; end else begin ack_s1 <= ack; ack_s2 <= ack_s1; @@ -66,7 +66,7 @@ req_s1 <= 1'b0; req_s2 <= 1'b0; req_edge <= 1'b0; - p2_state <= 2'b00; + p2_state <= { init, 1'b0 }; end else begin req_s1 <= req; req_s2 <= req_s1; From 10495feb0492cba052a70416b3cbcc16f1cfacd4 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 17 Feb 2015 20:33:46 +0000 Subject: [PATCH 12/61] 6809 CoPro: Updated to work against the new Tube core; changed cpu01l core to be positive edge triggered Change-Id: I1b1ad08767ee1a2c2505ad11fb2d8f35f5f8fccc --- LX9Co-6809.xise | 47 ++++---- src/LX9Co_CoPro6809.vhd | 236 ++++++++++++++-------------------------- src/SYS09/cpu09l.vhd | 34 +++--- 3 files changed, 121 insertions(+), 196 deletions(-) diff --git a/LX9Co-6809.xise b/LX9Co-6809.xise index e895e32..1adc70d 100644 --- a/LX9Co-6809.xise +++ b/LX9Co-6809.xise @@ -19,52 +19,50 @@ - - - - + - + - + - + - + - + - + - + - - - - + - + - + - + - + + + + + @@ -92,10 +90,10 @@ - - + + - + @@ -121,7 +119,7 @@ - + @@ -333,7 +331,7 @@ - + @@ -405,6 +403,7 @@ + diff --git a/src/LX9Co_CoPro6809.vhd b/src/LX9Co_CoPro6809.vhd index 185056d..40397cb 100644 --- a/src/LX9Co_CoPro6809.vhd +++ b/src/LX9Co_CoPro6809.vhd @@ -7,10 +7,8 @@ entity LX9CoPro6809 is port ( -- GOP Signals fastclk : in std_logic; - --tp : out std_logic_vector(8 downto 2); test : out std_logic_vector(8 downto 1); sw : in std_logic_vector(2 downto 1); - --fcs : out std_logic; -- Tube signals (use 16 out of 22 DIL pins) h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks @@ -21,7 +19,6 @@ entity LX9CoPro6809 is h_rst_b : in std_logic; h_irq_b : inout std_logic; - -- Ram Signals ram_ub_b : out std_logic; ram_lb_b : out std_logic; @@ -82,8 +79,6 @@ architecture BEHAVIORAL of LX9CoPro6809 is h_rdnw : in std_logic; h_rst_b : in std_logic; h_irq_b : inout std_logic; - -- drq : out std_logic; - -- dackb : in std_logic; p_addr : in std_logic_vector(2 downto 0); p_cs_b : in std_logic; p_data_in : in std_logic_vector(7 downto 0); @@ -100,26 +95,24 @@ architecture BEHAVIORAL of LX9CoPro6809 is -- clock and reset signals ------------------------------------------------- - signal clk_16M00 : std_logic; - signal phi0 : std_logic; - signal phi1 : std_logic; - signal phi2 : std_logic; - signal phi3 : std_logic; + signal cpu_clk : std_logic; signal cpu_clken : std_logic; - signal clken_counter : std_logic_vector (3 downto 0); + signal clken_counter : std_logic_vector (1 downto 0); signal bootmode : std_logic; signal RSTn : std_logic; + signal RSTn_sync : std_logic; signal bs : std_logic; signal ba : std_logic; signal vma : std_logic; signal ifetch : std_logic; - signal opfetch : std_logic; + signal opfetch : std_logic; ------------------------------------------------- -- parasite signals ------------------------------------------------- signal p_cs_b : std_logic; + signal tube_cs_b : std_logic; signal p_data_out : std_logic_vector (7 downto 0); ------------------------------------------------- @@ -152,35 +145,35 @@ begin --------------------------------------------------------------------- inst_dcm_32_16 : dcm_32_16 port map ( - CLKIN_IN => fastclk, - CLK0_OUT => clk_16M00, - CLK0_OUT1 => open, - CLK2X_OUT => open); + CLKIN_IN => fastclk, + CLK0_OUT => cpu_clk, + CLK0_OUT1 => open, + CLK2X_OUT => open); inst_tuberom : tuberom_6809 port map ( - CLK => clk_16M00, - ADDR => cpu_addr(10 downto 0), - DATA => rom_data_out + CLK => cpu_clk, + ADDR => cpu_addr(10 downto 0), + DATA => rom_data_out ); Inst_cpu09: cpu09 PORT MAP( - clk => phi2, -- E clock input (falling edge) - rst => not RSTn, -- reset input (active high) - vma => vma, -- valid memory address (active high) - lic_out => open, -- last instruction cycle (active high) - ifetch => ifetch, -- instruction fetch cycle (active high) - opfetch => opfetch, -- opcode fetch (active high) - ba => ba, -- bus available (high on sync wait or DMA grant) - bs => bs, -- bus status (high on interrupt or reset vector fetch or DMA grant) - addr => cpu_addr_int, -- address bus output - rw => cpu_R_W_n, -- read not write output - data_out => cpu_dout, -- data bus output - data_in => cpu_din, -- data bus input - irq => cpu_NMI_sync, -- interrupt request input (active high) - firq => cpu_IRQ_sync, -- fast interrupt request input (active high) - nmi => '0', -- non maskable interrupt request input (active high) - halt => '0', -- halt input (active high) grants DMA - hold => '0' -- hold input (active high) extend bus cycle + clk => cpu_clk, -- E clock input (rising edge) + rst => not RSTn_sync, -- reset input (active high) + vma => vma, -- valid memory address (active high) + lic_out => open, -- last instruction cycle (active high) + ifetch => ifetch, -- instruction fetch cycle (active high) + opfetch => opfetch, -- opcode fetch (active high) + ba => ba, -- bus available (high on sync wait or DMA grant) + bs => bs, -- bus status (high on interrupt or reset vector fetch or DMA grant) + addr => cpu_addr_int, -- address bus output + rw => cpu_R_W_n, -- read not write output + data_out => cpu_dout, -- data bus output + data_in => cpu_din, -- data bus input + irq => cpu_NMI_sync, -- interrupt request input (active high) + firq => cpu_IRQ_sync, -- fast interrupt request input (active high) + nmi => '0', -- non maskable interrupt request input (active high) + halt => '0', -- halt input (active high) grants DMA + hold => not cpu_clken -- hold input (active high) extend bus cycle, basically an inverted clock enable ); -- Remap the hardware vectors from 0xFFFx to 0xFEFx @@ -188,24 +181,26 @@ begin else cpu_addr_int(15 downto 9) & '0' & cpu_addr_int(7 downto 0); inst_tube: tube port map ( - h_addr => h_addr, - h_cs_b => h_cs_b, - h_data => h_data, - h_phi2 => h_phi2, - h_rdnw => h_rdnw, - h_rst_b => h_rst_b, - h_irq_b => h_irq_b, - p_addr => cpu_addr(2 downto 0), - p_cs_b => p_cs_b, - p_data_in => cpu_dout, - p_data_out => p_data_out, - p_rdnw => cpu_R_W_n, - p_phi2 => phi2, - p_rst_b => RSTn, - p_nmi_b => cpu_NMI_n, - p_irq_b => cpu_IRQ_n + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b, + h_irq_b => h_irq_b, + p_addr => cpu_addr(2 downto 0), + p_cs_b => tube_cs_b, + p_data_in => cpu_dout, + p_data_out => p_data_out, + p_rdnw => cpu_R_W_n, + p_phi2 => cpu_clk, + p_rst_b => RSTn, + p_nmi_b => cpu_NMI_n, + p_irq_b => cpu_IRQ_n ); + tube_cs_b <= not ((not p_cs_b) and cpu_clken); + p_cs_b <= '0' when vma = '1' and cpu_addr(15 downto 4) = "111111101110" else '1'; rom_cs_b <= '0' when vma = '1' and cpu_addr(15 downto 11) = "11111" and cpu_R_W_n = '1' and bootmode = '1' else '1'; @@ -213,140 +208,71 @@ begin ram_cs_b <= '0' when vma = '1' and p_cs_b = '1' and rom_cs_b = '1' else '1'; cpu_din <= - p_data_out when p_cs_b = '0' else + p_data_out when p_cs_b = '0' else rom_data_out when rom_cs_b = '0' else ram_data when ram_cs_b = '0' else x"f1"; ram_ub_b <= '0'; ram_lb_b <= '0'; - ram_cs <= ram_cs_b; ram_oe_int <= not ((not ram_cs_b) and cpu_R_W_n); ram_oe <= ram_oe_int; - ram_wr_int <= not ((not ram_cs_b) and (not cpu_R_W_n) and Phi2); + ram_wr_int <= not ((not ram_cs_b) and (not cpu_R_W_n) and cpu_clken); ram_wr <= ram_wr_int; ram_addr <= "000" & cpu_addr(15 downto 0); ram_data <= cpu_dout when cpu_R_W_n = '0' else "ZZZZZZZZ"; - --fcs <= '1'; - - testpr : process(sw) - begin - test(7) <= '0'; -- - test(8) <= '1'; -- - if (sw(1) = '1' and sw(2) = '1') then - - test(6) <= opfetch and Phi0; - test(5) <= cpu_addr(11); - test(4) <= cpu_addr(10); - test(3) <= cpu_addr(9); - test(2) <= cpu_addr(8); - test(1) <= cpu_addr(7); - - --tp(8) <= cpu_addr(6); - --tp(7) <= cpu_addr(5); - --tp(6) <= cpu_addr(4); - --tp(5) <= cpu_addr(3); - --tp(4) <= cpu_addr(2); - --tp(3) <= cpu_addr(1); - --tp(2) <= cpu_addr(0); - - - --- test(6) <= CPU_NMI_n; --- test(5) <= cpu_wr_n; --- if h_addr(2 downto 0) = "101" and h_cs_b = '0' then --- test(4) <= '1'; --- else --- test(4) <= '0'; --- end if; --- if cpu_addr(2 downto 0) = "101" and p_cs_b = '0' then --- test(3) <= '1'; --- else --- test(3) <= '0'; --- end if; --- test(2) <= clk_6M00; --- test(1) <= cpu_dout(7); --- tp(8) <= cpu_dout(6); --- tp(7) <= cpu_dout(5); --- tp(6) <= cpu_dout(4); --- tp(5) <= cpu_dout(3); --- tp(4) <= cpu_dout(2); --- tp(3) <= cpu_dout(1); --- tp(2) <= cpu_dout(0); - else - - test(6) <= phi2; -- 12 - test(5) <= vma; -- 11 - test(4) <= bs; -- 10 - test(3) <= ba; -- 9 - test(2) <= cpu_R_W_n; -- 8 - test(1) <= rom_cs_b; -- 7 - --tp(8) <= RSTn; -- 6 - --tp(7) <= ram_wr_int; -- 5 - --tp(6) <= ram_oe_int; -- 4 - --tp(5) <= p_cs_b; -- 3 - --tp(4) <= CPU_IRQ_n; -- 2 - --tp(3) <= CPU_NMI_n; -- 1 - --tp(2) <= bootmode; -- 0 - - end if; - end process; - - sync_gen : process(phi2, RSTn) - begin - if RSTn = '0' then - cpu_NMI_sync <= '0'; - cpu_IRQ_sync <= '0'; - elsif rising_edge(phi2) then - cpu_NMI_sync <= not cpu_NMI_n; - cpu_IRQ_sync <= not cpu_IRQ_n; - end if; - end process; +-------------------------------------------------------- +-- test signals +-------------------------------------------------------- + test <= (others => '0'); + -------------------------------------------------------- -- boot mode generator -------------------------------------------------------- - boot_gen : process(clk_16M00, RSTn) + + boot_gen : process(cpu_clk, RSTn_sync) begin - if RSTn = '0' then + if RSTn_sync = '0' then bootmode <= '1'; - elsif rising_edge(clk_16M00) then + elsif rising_edge(cpu_clk) then if p_cs_b = '0' then bootmode <= '0'; end if; end if; end process; + +-------------------------------------------------------- +-- synchronize interrupts etc into 6809 core +-------------------------------------------------------- + + sync_gen : process(cpu_clk, RSTn_sync) + begin + if RSTn_sync = '0' then + cpu_NMI_sync <= '0'; + cpu_IRQ_sync <= '0'; + elsif rising_edge(cpu_clk) then + cpu_NMI_sync <= not cpu_NMI_n; + cpu_IRQ_sync <= not cpu_IRQ_n; + end if; + end process; -------------------------------------------------------- -- clock enable generator - --- 4MHz --- cpu_clken active on cycle 0, 4, 8, 12 --- address/data changes on cycle 1, 5, 9, 13 --- phi0 active on cycle 1..2 --- phi1 active on cycle 2..3 --- phi2 active on cycle 3..4 --- phi3 active on cycle 4..5 - --- alternative --- phi0 active on cycle 1 --- phi1 active on cycle 2 --- phi2 active on cycle 3 --- phi3 active on cycle 4 - -------------------------------------------------------- - clk_gen : process(clk_16M00) + + -- TODO If the clock speed is increased from 4MHz to 8MHz + -- e.g. with cpu_clken <= not cpu_clken + -- then *SAVE skips every other byte + + clk_gen : process(cpu_clk) begin - if rising_edge(clk_16M00) then + if rising_edge(cpu_clk) then clken_counter <= clken_counter + 1; cpu_clken <= clken_counter(0) and clken_counter(1); - --phi0 <= not clken_counter(1); - phi0 <= cpu_clken; - phi1 <= phi0; - phi2 <= phi1; - phi3 <= phi2; + RSTn_sync <= RSTn; end if; end process; diff --git a/src/SYS09/cpu09l.vhd b/src/SYS09/cpu09l.vhd index 9869dc6..fe38870 100644 --- a/src/SYS09/cpu09l.vhd +++ b/src/SYS09/cpu09l.vhd @@ -250,7 +250,7 @@ use ieee.std_logic_unsigned.all; entity cpu09 is port ( - clk : in std_logic; -- E clock input (falling edge) + clk : in std_logic; -- E clock input (rising edge) rst : in std_logic; -- reset input (active high) vma : out std_logic; -- valid memory address (active high) lic_out : out std_logic; -- last instruction cycle (active high) @@ -489,7 +489,7 @@ begin -- return_state, fetch_state ) state_stack_proc: process( clk, st_ctrl, return_state ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case st_ctrl is when reset_st => @@ -511,7 +511,7 @@ end process; -- int_vec_proc: process( clk, iv_ctrl ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case iv_ctrl is when reset_iv => @@ -544,7 +544,7 @@ end process; --pc_reg: process( clk, pc_ctrl, hold, pc, out_alu, data_in ) pc_reg: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case pc_ctrl is when reset_pc => @@ -574,7 +574,7 @@ end process; ea_reg: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold= '0' then case ea_ctrl is when reset_ea => @@ -602,7 +602,7 @@ end process; --acca_reg : process( clk, acca_ctrl, hold, out_alu, acca, data_in ) acca_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case acca_ctrl is when reset_acca => @@ -628,7 +628,7 @@ end process; --accb_reg : process( clk, accb_ctrl, hold, out_alu, accb, data_in ) accb_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case accb_ctrl is when reset_accb => @@ -652,7 +652,7 @@ end process; --ix_reg : process( clk, ix_ctrl, hold, out_alu, xreg, data_in ) ix_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case ix_ctrl is when reset_ix => @@ -678,7 +678,7 @@ end process; --iy_reg : process( clk, iy_ctrl, hold, out_alu, yreg, data_in ) iy_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case iy_ctrl is when reset_iy => @@ -704,7 +704,7 @@ end process; --sp_reg : process( clk, sp_ctrl, hold, sp, out_alu, data_in, nmi_enable ) sp_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case sp_ctrl is when reset_sp => @@ -733,7 +733,7 @@ end process; --up_reg : process( clk, up_ctrl, hold, up, out_alu, data_in ) up_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case up_ctrl is when reset_up => @@ -759,7 +759,7 @@ end process; --md_reg : process( clk, md_ctrl, hold, out_alu, data_in, md ) md_reg : process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case md_ctrl is when reset_md => @@ -793,7 +793,7 @@ end process; --cc_reg: process( clk, cc_ctrl, hold, cc_out, cc, data_in ) cc_reg: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case cc_ctrl is when reset_cc => @@ -818,7 +818,7 @@ end process; --dp_reg: process( clk, dp_ctrl, hold, out_alu, dp, data_in ) dp_reg: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case dp_ctrl is when reset_dp => @@ -844,7 +844,7 @@ end process; --op_reg: process( clk, op_ctrl, hold, op_code, data_in ) op_reg: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case op_ctrl is when reset_op => @@ -868,7 +868,7 @@ end process; --pre_reg: process( clk, pre_ctrl, hold, pre_code, data_in ) pre_reg: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if hold = '0' then case pre_ctrl is when reset_pre => @@ -891,7 +891,7 @@ end process; --change_state: process( clk, rst, state, hold, next_state ) change_state: process( clk ) begin - if clk'event and clk = '0' then + if clk'event and clk = '1' then if rst = '1' then fic <= '0'; nmi_ack <= '0'; From e2181e5e3b2c08e8b5dc410b9b2351d8df3c3712 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 21 Feb 2015 21:22:46 +0000 Subject: [PATCH 13/61] Co Pro Z80 Fast: Initial version supporting 36/24/12/8MHz Change-Id: Id558d6de23cc0c3424c38b29063338e67c2ca6ed --- LX9Co-6502.xise | 4 +- LX9Co-6502fast.xise | 2 +- LX9Co-6809.xise | 2 +- LX9Co-x86.xise | 2 +- LX9Co-z80.xise | 2 +- LX9Co-z80fast.xise | 430 +++ LX9Co.xise | 2 +- gen_mcs.sh | 5 +- ise_build_all.tcl | 3 + ise_clean_all.tcl | 3 + src/DCM/dcm_32_72.vhd | 64 + src/ICAP_reboot.v | 8 + src/LX9Co_CoProZ80fast.vhd | 344 +++ src/ROM/tuberom_65c102_banner.vhd | 2 +- src/ROM/tuberom_z80_banner.vhd | 4146 +++++++++++++++++++++++++++++ 15 files changed, 5009 insertions(+), 10 deletions(-) create mode 100644 LX9Co-z80fast.xise create mode 100644 src/DCM/dcm_32_72.vhd create mode 100644 src/LX9Co_CoProZ80fast.vhd create mode 100644 src/ROM/tuberom_z80_banner.vhd diff --git a/LX9Co-6502.xise b/LX9Co-6502.xise index 90df281..668256e 100644 --- a/LX9Co-6502.xise +++ b/LX9Co-6502.xise @@ -126,7 +126,7 @@ - + @@ -364,7 +364,7 @@ - + diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index d3cc051..60fe357 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -132,7 +132,7 @@ - + diff --git a/LX9Co-6809.xise b/LX9Co-6809.xise index 1adc70d..a712547 100644 --- a/LX9Co-6809.xise +++ b/LX9Co-6809.xise @@ -93,7 +93,7 @@ - + diff --git a/LX9Co-x86.xise b/LX9Co-x86.xise index 8b01f44..f48fc49 100644 --- a/LX9Co-x86.xise +++ b/LX9Co-x86.xise @@ -228,7 +228,7 @@ - + diff --git a/LX9Co-z80.xise b/LX9Co-z80.xise index 8aab306..eb6049a 100644 --- a/LX9Co-z80.xise +++ b/LX9Co-z80.xise @@ -109,7 +109,7 @@ - + diff --git a/LX9Co-z80fast.xise b/LX9Co-z80fast.xise new file mode 100644 index 0000000..af06766 --- /dev/null +++ b/LX9Co-z80fast.xise @@ -0,0 +1,430 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/LX9Co.xise b/LX9Co.xise index 1a5862f..777d69b 100644 --- a/LX9Co.xise +++ b/LX9Co.xise @@ -53,7 +53,7 @@ - + diff --git a/gen_mcs.sh b/gen_mcs.sh index cd84ea8..1e3a7d0 100755 --- a/gen_mcs.sh +++ b/gen_mcs.sh @@ -9,8 +9,8 @@ # design 0010 - 0x0fc000 - working/LX9CoPro6809.bit # design 0011 - 0x150000 - working/LX9CoPro80186.bit # design 0100 - 0x1a4000 - working/LX9Co_BIST.bit -# design 1000 - 0x1f8000 - working/LX9CoPro6502fast.bit (32MHz) -# design 1001 - 0x24c000 - spare +# design 1000 - 0x1f8000 - working/LX9CoPro6502fast.bit (32/16/8/4MHz) +# design 1001 - 0x24c000 - working/LX9CoProZ80fast.bit(36/24/12/8Mhz) # design 1010 - 0x2a0000 - spare # design 1011 - 0x2f4000 - spare # design 1011 - 0x348000 - spare @@ -28,6 +28,7 @@ promgen \ -u 150000 working/LX9CoPro80186.bit \ -u 1A4000 working/LX9Co_BIST.bit \ -u 1F8000 working/LX9CoPro6502fast.bit \ +-u 24C000 working/LX9CoProZ80fast.bit \ -o $NAME.mcs -p mcs -w -spi -s 8192 rm -f $NAME.cfi $NAME.prm diff --git a/ise_build_all.tcl b/ise_build_all.tcl index 30f275f..f063810 100755 --- a/ise_build_all.tcl +++ b/ise_build_all.tcl @@ -20,5 +20,8 @@ project close project open LX9Co-6502fast.xise process run "Generate Programming File" project close +project open LX9Co-z80fast.xise +process run "Generate Programming File" +project close exit diff --git a/ise_clean_all.tcl b/ise_clean_all.tcl index 89ba456..eadcb98 100755 --- a/ise_clean_all.tcl +++ b/ise_clean_all.tcl @@ -20,4 +20,7 @@ project close project open LX9Co-6502fast.xise project clean project close +project open LX9Co-z80fast.xise +project clean +project close exit diff --git a/src/DCM/dcm_32_72.vhd b/src/DCM/dcm_32_72.vhd new file mode 100644 index 0000000..9924bec --- /dev/null +++ b/src/DCM/dcm_32_72.vhd @@ -0,0 +1,64 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library UNISIM; +use UNISIM.Vcomponents.all; + +entity dcm_32_72 is + port (CLKIN_IN : in std_logic; + CLK0_OUT : out std_logic; + CLK0_OUT1 : out std_logic; + CLK2X_OUT : out std_logic); +end dcm_32_72; + +architecture BEHAVIORAL of dcm_32_72 is + signal CLKFX_BUF : std_logic; + signal CLK2X_BUF : std_logic; + signal CLKIN_IBUFG : std_logic; + signal GND_BIT : std_logic; +begin + + GND_BIT <= '0'; + + CLKFX_BUFG_INST : BUFG + port map (I => CLKFX_BUF, O => CLK0_OUT); + + CLK2X_BUFG_INST : BUFG + port map (I => CLK2X_BUF, O => CLK2X_OUT); + + DCM_INST : DCM + generic map(CLK_FEEDBACK => "NONE", + CLKDV_DIVIDE => 4.0, -- 72.00 = 32.000 * 9/4 + CLKFX_MULTIPLY => 9, + CLKFX_DIVIDE => 4, + CLKIN_DIVIDE_BY_2 => false, + CLKIN_PERIOD => 31.25, + CLKOUT_PHASE_SHIFT => "NONE", + DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", + DFS_FREQUENCY_MODE => "LOW", + DLL_FREQUENCY_MODE => "LOW", + DUTY_CYCLE_CORRECTION => true, + FACTORY_JF => x"C080", + PHASE_SHIFT => 0, + STARTUP_WAIT => false) + port map (CLKFB => GND_BIT, + CLKIN => CLKIN_IN, + DSSEN => GND_BIT, + PSCLK => GND_BIT, + PSEN => GND_BIT, + PSINCDEC => GND_BIT, + RST => GND_BIT, + CLKDV => open, + CLKFX => CLKFX_BUF, + CLKFX180 => open, + CLK0 => open, + CLK2X => CLK2X_BUF, + CLK2X180 => open, + CLK90 => open, + CLK180 => open, + CLK270 => open, + LOCKED => open, + PSDONE => open, + STATUS => open); + +end BEHAVIORAL; diff --git a/src/ICAP_reboot.v b/src/ICAP_reboot.v index f042c42..89fc59c 100644 --- a/src/ICAP_reboot.v +++ b/src/ICAP_reboot.v @@ -151,6 +151,10 @@ always @(MBT_REBOOT or state or sw) 4'b1001: icap_din = 16'h8000; 4'b1010: icap_din = 16'h8000; 4'b1011: icap_din = 16'h8000; + 4'b1100: icap_din = 16'hC000; + 4'b1101: icap_din = 16'hC000; + 4'b1110: icap_din = 16'hC000; + 4'b1111: icap_din = 16'hC000; default: icap_din = 16'h32c1; endcase @@ -181,6 +185,10 @@ always @(MBT_REBOOT or state or sw) 4'b1001: icap_din = 16'h031f; 4'b1010: icap_din = 16'h031f; 4'b1011: icap_din = 16'h031f; + 4'b1100: icap_din = 16'h0324; + 4'b1101: icap_din = 16'h0324; + 4'b1110: icap_din = 16'h0324; + 4'b1111: icap_din = 16'h0324; default: icap_din = 16'h0305; endcase diff --git a/src/LX9Co_CoProZ80fast.vhd b/src/LX9Co_CoProZ80fast.vhd new file mode 100644 index 0000000..8d8ebc0 --- /dev/null +++ b/src/LX9Co_CoProZ80fast.vhd @@ -0,0 +1,344 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity LX9CoProZ80fast is + port ( + -- GOP Signals + fastclk : in std_logic; + test : out std_logic_vector(8 downto 1); + sw : in std_logic_vector(2 downto 1); + + -- Tube signals (use 16 out of 22 DIL pins) + h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks + h_addr : in std_logic_vector(2 downto 0); + h_data : inout std_logic_vector(7 downto 0); + h_rdnw : in std_logic; + h_cs_b : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + + + -- Ram Signals + ram_ub_b : out std_logic; + ram_lb_b : out std_logic; + ram_cs : out std_logic; + ram_oe : out std_logic; + ram_wr : out std_logic; + ram_addr : out std_logic_vector (18 downto 0); + ram_data : inout std_logic_vector (7 downto 0) + ); +end LX9CoProZ80fast; + +architecture BEHAVIORAL of LX9CoProZ80fast is + + component dcm_32_72 + port ( + CLKIN_IN : in std_logic; + CLK0_OUT : out std_logic; + CLK0_OUT1 : out std_logic; + CLK2X_OUT : out std_logic + ); + end component; + + component tuberom_z80_banner + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(11 downto 0); + SW : in std_logic_vector(1 downto 0); + DATA : out std_logic_vector(7 downto 0)); + end component; + + component T80se + port ( + RESET_n : in std_logic; + CLK_n : in std_logic; + CLKEN : in std_logic; + WAIT_n : in std_logic; + INT_n : in std_logic; + NMI_n : in std_logic; + BUSRQ_n : in std_logic; + M1_n : out std_logic; + MREQ_n : out std_logic; + IORQ_n : out std_logic; + RD_n : out std_logic; + WR_n : out std_logic; + RFSH_n : out std_logic; + HALT_n : out std_logic; + BUSAK_n : out std_logic; + A : out std_logic_vector(15 downto 0); + DI : in std_logic_vector(7 downto 0); + DO : out std_logic_vector(7 downto 0) + ); + end component; + + component tube + port( + h_addr : in std_logic_vector(2 downto 0); + h_cs_b : in std_logic; + h_data : inout std_logic_vector(7 downto 0); + h_phi2 : in std_logic; + h_rdnw : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + p_addr : in std_logic_vector(2 downto 0); + p_cs_b : in std_logic; + p_data_in : in std_logic_vector(7 downto 0); + p_data_out : out std_logic_vector(7 downto 0); + p_rdnw : in std_logic; + p_phi2 : in std_logic; + p_rst_b : out std_logic; + p_nmi_b : inout std_logic; + p_irq_b : inout std_logic + ); + end component; + + component RAM_64K + port( + clk : in std_logic; + we_uP : in std_logic; + ce : in std_logic; + addr_uP : in std_logic_vector(15 downto 0); + D_uP : in std_logic_vector(7 downto 0); + Q_uP : out std_logic_vector(7 downto 0) + ); + end component; + +------------------------------------------------- +-- clock and reset signals +------------------------------------------------- + + signal cpu_clk : std_logic; + signal cpu_clken : std_logic; + signal bootmode : std_logic; + signal RSTn : std_logic; + signal RSTn_sync : std_logic; + signal clken_counter : std_logic_vector (3 downto 0); + +------------------------------------------------- +-- parasite signals +------------------------------------------------- + + signal p_cs_b : std_logic; + signal tube_cs_b : std_logic; + signal p_data_out : std_logic_vector (7 downto 0); + +------------------------------------------------- +-- ram/rom signals +------------------------------------------------- + + signal ram_cs_b : std_logic; + signal ram_oe_int : std_logic; + signal ram_wr_int : std_logic; + signal rom_cs_b : std_logic; + signal rom_data_out : std_logic_vector (7 downto 0); + signal ram_data_out : std_logic_vector (7 downto 0); + +------------------------------------------------- +-- cpu signals +------------------------------------------------- + + signal cpu_rd_n : std_logic; + signal cpu_wr_n : std_logic; + signal cpu_iorq_n : std_logic; + signal cpu_mreq_n : std_logic; + signal cpu_m1_n : std_logic; + signal cpu_addr : std_logic_vector (15 downto 0); + signal cpu_din : std_logic_vector (7 downto 0); + signal cpu_dout : std_logic_vector (7 downto 0); + signal cpu_IRQ_n : std_logic; + signal cpu_NMI_n : std_logic; + signal cpu_IRQ_n_sync : std_logic; + signal cpu_NMI_n_sync : std_logic; + +begin + +--------------------------------------------------------------------- +-- instantiated components +--------------------------------------------------------------------- + + inst_dcm_32_72 : dcm_32_72 port map ( + CLKIN_IN => fastclk, + CLK0_OUT => cpu_clk, + CLK0_OUT1 => open, + CLK2X_OUT => open + ); + + inst_tuberom : tuberom_z80_banner port map ( + CLK => cpu_clk, + ADDR => cpu_addr(11 downto 0), + SW => sw(2 downto 1), + DATA => rom_data_out + ); + + inst_Z80 : T80se port map ( + RESET_n => RSTn_sync, + CLK_n => cpu_clk, + CLKEN => cpu_clken, + WAIT_n => '1', + INT_n => cpu_IRQ_n_sync, + NMI_n => cpu_NMI_n_sync, + BUSRQ_n => '1', + M1_n => cpu_m1_n, + MREQ_n => cpu_mreq_n, + IORQ_n => cpu_iorq_n, + RD_n => cpu_rd_n, + WR_n => cpu_wr_n, + RFSH_n => open, + HALT_n => open, + BUSAK_n => open, + A => cpu_addr, + DI => cpu_din, + DO => cpu_dout + ); + + inst_tube: tube port map ( + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b, + h_irq_b => h_irq_b, + p_addr => cpu_addr(2 downto 0), + p_cs_b => tube_cs_b, + p_data_in => cpu_dout, + p_data_out => p_data_out, + p_phi2 => cpu_clk, + p_rdnw => cpu_wr_n, + p_rst_b => RSTn, + p_nmi_b => cpu_NMI_n, + p_irq_b => cpu_IRQ_n + ); + + tube_cs_b <= not ((not p_cs_b) and cpu_clken); + + Inst_RAM_64K: RAM_64K PORT MAP( + clk => cpu_clk, + we_uP => ram_wr_int, + ce => '1', + addr_uP => cpu_addr, + D_uP => cpu_dout, + Q_uP => ram_data_out + ); + + p_cs_b <= '0' when cpu_mreq_n = '1' and cpu_iorq_n = '0' and cpu_addr(7 downto 3) = "00000" else '1'; + + rom_cs_b <= '0' when cpu_mreq_n = '0' and cpu_rd_n = '0' and bootmode = '1' else '1'; + + ram_cs_b <= '0' when cpu_mreq_n = '0' and rom_cs_b = '1' else '1'; + + ram_wr_int <= ((not ram_cs_b) and (not cpu_wr_n) and cpu_clken); + + cpu_din <= + p_data_out when p_cs_b = '0' else + rom_data_out when rom_cs_b = '0' else + ram_data_out when ram_cs_b = '0' else + x"fe"; + +-------------------------------------------------------- +-- external Ram unused +-------------------------------------------------------- + ram_ub_b <= '1'; + ram_lb_b <= '1'; + ram_cs <= '1'; + ram_oe <= '1'; + ram_wr <= '1'; + ram_addr <= (others => '1'); + ram_data <= (others => '1'); + +-------------------------------------------------------- +-- test signals +-------------------------------------------------------- + + test(8) <= RSTn_sync; + test(7) <= ram_wr_int; + test(6) <= CPU_IRQ_n; + test(5) <= p_cs_b; + test(4) <= cpu_addr(2); + test(3) <= cpu_addr(1); + test(2) <= cpu_addr(0); + test(1) <= p_data_out(7); + +-------------------------------------------------------- +-- boot mode generator +-------------------------------------------------------- + + boot_gen : process(cpu_clk, RSTn_sync) + begin + if RSTn_sync = '0' then + bootmode <= '1'; + elsif rising_edge(cpu_clk) then + if (cpu_mreq_n = '0' and cpu_m1_n = '0') then + if (cpu_addr = x"0066") then + bootmode <= '1'; + elsif cpu_addr(15) = '1' then + bootmode <= '0'; + end if; + end if; + end if; + end process; + +-------------------------------------------------------- +-- synchronize interrupts etc into Z80 core +-------------------------------------------------------- + + sync_gen : process(cpu_clk, RSTn_sync) + begin + if RSTn_sync = '0' then + cpu_NMI_n_sync <= '1'; + cpu_IRQ_n_sync <= '1'; + elsif rising_edge(cpu_clk) then + if (cpu_clken = '1') then + cpu_NMI_n_sync <= cpu_NMI_n; + cpu_IRQ_n_sync <= cpu_IRQ_n; + end if; + end if; + end process; + +-------------------------------------------------------- +-- clock enable generator +-- 00 - 36MHz = 72 / 2 +-- 01 - 24MHz = 72 / 3 +-- 10 - 12MHz = 72 / 6 +-- 11 - 08MHz = 72 / 9 +-------------------------------------------------------- + + clk_gen : process(cpu_clk) + begin + if rising_edge(cpu_clk) then + case "00"&sw is + when x"0" => + if (clken_counter = 1) then + clken_counter <= (others => '0'); + else + clken_counter <= clken_counter + 1; + end if; + when x"1" => + if (clken_counter = 2) then + clken_counter <= (others => '0'); + else + clken_counter <= clken_counter + 1; + end if; + when x"2" => + if (clken_counter = 5) then + clken_counter <= (others => '0'); + else + clken_counter <= clken_counter + 1; + end if; + when others => + if (clken_counter = 8) then + clken_counter <= (others => '0'); + else + clken_counter <= clken_counter + 1; + end if; + end case; + cpu_clken <= not clken_counter(3) and not clken_counter(2) and not clken_counter(1) and not clken_counter(0); + RSTn_sync <= RSTn; + end if; + end process; + +end BEHAVIORAL; + + diff --git a/src/ROM/tuberom_65c102_banner.vhd b/src/ROM/tuberom_65c102_banner.vhd index 9aa1627..29ad2e5 100644 --- a/src/ROM/tuberom_65c102_banner.vhd +++ b/src/ROM/tuberom_65c102_banner.vhd @@ -157,7 +157,7 @@ begin when x"06F" => DATA <= digit1; when x"070" => DATA <= digit2; when x"071" => DATA <= x"4D"; - when x"072" => DATA <= x"68"; + when x"072" => DATA <= x"48"; when x"073" => DATA <= x"7A"; when x"074" => DATA <= x"20"; when x"075" => DATA <= x"36"; diff --git a/src/ROM/tuberom_z80_banner.vhd b/src/ROM/tuberom_z80_banner.vhd new file mode 100644 index 0000000..fc55f0d --- /dev/null +++ b/src/ROM/tuberom_z80_banner.vhd @@ -0,0 +1,4146 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tuberom_z80_banner is + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(11 downto 0); + SW : in std_logic_vector(1 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); +end; + +architecture RTL of tuberom_z80_banner is + + signal rom_addr : std_logic_vector(11 downto 0); + + signal digit1 : std_logic_vector(7 downto 0); + signal digit2 : std_logic_vector(7 downto 0); + +begin + + p_addr : process(ADDR) + begin + rom_addr <= (others => '0'); + rom_addr(11 downto 0) <= ADDR; + end process; + + -- Original: Acorn TUBE Z80 64k 1.21 + -- Updated: Acorn TUBE Z80 32Mhz + + digit1 <= x"33" when SW = "00" else + x"32" when SW = "01" else + x"31" when SW = "10" else + x"30"; + + digit2 <= x"36" when SW = "00" else + x"34" when SW = "01" else + x"32" when SW = "10" else + x"38"; + + p_rom : process + begin + wait until rising_edge(CLK); + DATA <= (others => '0'); + case rom_addr is + when x"000" => DATA <= x"F3"; + when x"001" => DATA <= x"11"; + when x"002" => DATA <= x"00"; + when x"003" => DATA <= x"F0"; + when x"004" => DATA <= x"21"; + when x"005" => DATA <= x"00"; + when x"006" => DATA <= x"00"; + when x"007" => DATA <= x"01"; + when x"008" => DATA <= x"00"; + when x"009" => DATA <= x"10"; + when x"00A" => DATA <= x"ED"; + when x"00B" => DATA <= x"B0"; + when x"00C" => DATA <= x"C3"; + when x"00D" => DATA <= x"80"; + when x"00E" => DATA <= x"F2"; + when x"00F" => DATA <= x"43"; + when x"010" => DATA <= x"6F"; + when x"011" => DATA <= x"70"; + when x"012" => DATA <= x"79"; + when x"013" => DATA <= x"72"; + when x"014" => DATA <= x"69"; + when x"015" => DATA <= x"67"; + when x"016" => DATA <= x"68"; + when x"017" => DATA <= x"74"; + when x"018" => DATA <= x"20"; + when x"019" => DATA <= x"41"; + when x"01A" => DATA <= x"63"; + when x"01B" => DATA <= x"6F"; + when x"01C" => DATA <= x"72"; + when x"01D" => DATA <= x"6E"; + when x"01E" => DATA <= x"20"; + when x"01F" => DATA <= x"43"; + when x"020" => DATA <= x"6F"; + when x"021" => DATA <= x"6D"; + when x"022" => DATA <= x"70"; + when x"023" => DATA <= x"75"; + when x"024" => DATA <= x"74"; + when x"025" => DATA <= x"65"; + when x"026" => DATA <= x"72"; + when x"027" => DATA <= x"73"; + when x"028" => DATA <= x"20"; + when x"029" => DATA <= x"4C"; + when x"02A" => DATA <= x"74"; + when x"02B" => DATA <= x"64"; + when x"02C" => DATA <= x"2E"; + when x"02D" => DATA <= x"20"; + when x"02E" => DATA <= x"31"; + when x"02F" => DATA <= x"39"; + when x"030" => DATA <= x"38"; + when x"031" => DATA <= x"34"; + when x"032" => DATA <= x"0D"; + when x"033" => DATA <= x"48"; + when x"034" => DATA <= x"3A"; + when x"035" => DATA <= x"7D"; + when x"036" => DATA <= x"3C"; + when x"037" => DATA <= x"B7"; + when x"038" => DATA <= x"C4"; + when x"039" => DATA <= x"C0"; + when x"03A" => DATA <= x"2C"; + when x"03B" => DATA <= x"3A"; + when x"03C" => DATA <= x"22"; + when x"03D" => DATA <= x"3A"; + when x"03E" => DATA <= x"B7"; + when x"03F" => DATA <= x"C4"; + when x"040" => DATA <= x"F1"; + when x"041" => DATA <= x"2C"; + when x"042" => DATA <= x"F1"; + when x"043" => DATA <= x"21"; + when x"044" => DATA <= x"1B"; + when x"045" => DATA <= x"3A"; + when x"046" => DATA <= x"34"; + when x"047" => DATA <= x"7E"; + when x"048" => DATA <= x"3D"; + when x"049" => DATA <= x"C2"; + when x"04A" => DATA <= x"AB"; + when x"04B" => DATA <= x"2B"; + when x"04C" => DATA <= x"21"; + when x"04D" => DATA <= x"EC"; + when x"04E" => DATA <= x"3B"; + when x"04F" => DATA <= x"7E"; + when x"050" => DATA <= x"B7"; + when x"051" => DATA <= x"C2"; + when x"052" => DATA <= x"34"; + when x"053" => DATA <= x"2B"; + when x"054" => DATA <= x"21"; + when x"055" => DATA <= x"4A"; + when x"056" => DATA <= x"3B"; + when x"057" => DATA <= x"7E"; + when x"058" => DATA <= x"B7"; + when x"059" => DATA <= x"C2"; + when x"05A" => DATA <= x"34"; + when x"05B" => DATA <= x"2B"; + when x"05C" => DATA <= x"21"; + when x"05D" => DATA <= x"58"; + when x"05E" => DATA <= x"3D"; + when x"05F" => DATA <= x"23"; + when x"060" => DATA <= x"01"; + when x"061" => DATA <= x"06"; + when x"062" => DATA <= x"00"; + when x"063" => DATA <= x"11"; + when x"064" => DATA <= x"EC"; + when x"065" => DATA <= x"3B"; + when x"066" => DATA <= x"C3"; + when x"067" => DATA <= x"61"; + when x"068" => DATA <= x"FC"; + when x"069" => DATA <= x"54"; + when x"06A" => DATA <= x"68"; + when x"06B" => DATA <= x"65"; + when x"06C" => DATA <= x"20"; + when x"06D" => DATA <= x"42"; + when x"06E" => DATA <= x"75"; + when x"06F" => DATA <= x"73"; + when x"070" => DATA <= x"69"; + when x"071" => DATA <= x"6E"; + when x"072" => DATA <= x"65"; + when x"073" => DATA <= x"73"; + when x"074" => DATA <= x"73"; + when x"075" => DATA <= x"20"; + when x"076" => DATA <= x"53"; + when x"077" => DATA <= x"79"; + when x"078" => DATA <= x"73"; + when x"079" => DATA <= x"74"; + when x"07A" => DATA <= x"65"; + when x"07B" => DATA <= x"6D"; + when x"07C" => DATA <= x"73"; + when x"07D" => DATA <= x"20"; + when x"07E" => DATA <= x"47"; + when x"07F" => DATA <= x"72"; + when x"080" => DATA <= x"6F"; + when x"081" => DATA <= x"75"; + when x"082" => DATA <= x"70"; + when x"083" => DATA <= x"20"; + when x"084" => DATA <= x"77"; + when x"085" => DATA <= x"6F"; + when x"086" => DATA <= x"75"; + when x"087" => DATA <= x"6C"; + when x"088" => DATA <= x"64"; + when x"089" => DATA <= x"20"; + when x"08A" => DATA <= x"6C"; + when x"08B" => DATA <= x"69"; + when x"08C" => DATA <= x"6B"; + when x"08D" => DATA <= x"65"; + when x"08E" => DATA <= x"20"; + when x"08F" => DATA <= x"74"; + when x"090" => DATA <= x"6F"; + when x"091" => DATA <= x"20"; + when x"092" => DATA <= x"74"; + when x"093" => DATA <= x"68"; + when x"094" => DATA <= x"61"; + when x"095" => DATA <= x"6E"; + when x"096" => DATA <= x"6B"; + when x"097" => DATA <= x"4D"; + when x"098" => DATA <= x"69"; + when x"099" => DATA <= x"6B"; + when x"09A" => DATA <= x"65"; + when x"09B" => DATA <= x"20"; + when x"09C" => DATA <= x"42"; + when x"09D" => DATA <= x"6F"; + when x"09E" => DATA <= x"6C"; + when x"09F" => DATA <= x"6C"; + when x"0A0" => DATA <= x"65"; + when x"0A1" => DATA <= x"79"; + when x"0A2" => DATA <= x"2C"; + when x"0A3" => DATA <= x"4D"; + when x"0A4" => DATA <= x"69"; + when x"0A5" => DATA <= x"6B"; + when x"0A6" => DATA <= x"65"; + when x"0A7" => DATA <= x"20"; + when x"0A8" => DATA <= x"26"; + when x"0A9" => DATA <= x"20"; + when x"0AA" => DATA <= x"41"; + when x"0AB" => DATA <= x"6C"; + when x"0AC" => DATA <= x"6C"; + when x"0AD" => DATA <= x"65"; + when x"0AE" => DATA <= x"6E"; + when x"0AF" => DATA <= x"20"; + when x"0B0" => DATA <= x"42"; + when x"0B1" => DATA <= x"6F"; + when x"0B2" => DATA <= x"6F"; + when x"0B3" => DATA <= x"74"; + when x"0B4" => DATA <= x"68"; + when x"0B5" => DATA <= x"72"; + when x"0B6" => DATA <= x"6F"; + when x"0B7" => DATA <= x"79"; + when x"0B8" => DATA <= x"64"; + when x"0B9" => DATA <= x"2C"; + when x"0BA" => DATA <= x"52"; + when x"0BB" => DATA <= x"69"; + when x"0BC" => DATA <= x"63"; + when x"0BD" => DATA <= x"68"; + when x"0BE" => DATA <= x"61"; + when x"0BF" => DATA <= x"72"; + when x"0C0" => DATA <= x"64"; + when x"0C1" => DATA <= x"20"; + when x"0C2" => DATA <= x"43"; + when x"0C3" => DATA <= x"6C"; + when x"0C4" => DATA <= x"61"; + when x"0C5" => DATA <= x"79"; + when x"0C6" => DATA <= x"74"; + when x"0C7" => DATA <= x"6F"; + when x"0C8" => DATA <= x"6E"; + when x"0C9" => DATA <= x"2C"; + when x"0CA" => DATA <= x"41"; + when x"0CB" => DATA <= x"6E"; + when x"0CC" => DATA <= x"64"; + when x"0CD" => DATA <= x"72"; + when x"0CE" => DATA <= x"65"; + when x"0CF" => DATA <= x"77"; + when x"0D0" => DATA <= x"20"; + when x"0D1" => DATA <= x"47"; + when x"0D2" => DATA <= x"6F"; + when x"0D3" => DATA <= x"72"; + when x"0D4" => DATA <= x"64"; + when x"0D5" => DATA <= x"6F"; + when x"0D6" => DATA <= x"6E"; + when x"0D7" => DATA <= x"2C"; + when x"0D8" => DATA <= x"43"; + when x"0D9" => DATA <= x"68"; + when x"0DA" => DATA <= x"72"; + when x"0DB" => DATA <= x"69"; + when x"0DC" => DATA <= x"73"; + when x"0DD" => DATA <= x"20"; + when x"0DE" => DATA <= x"48"; + when x"0DF" => DATA <= x"61"; + when x"0E0" => DATA <= x"6C"; + when x"0E1" => DATA <= x"6C"; + when x"0E2" => DATA <= x"2C"; + when x"0E3" => DATA <= x"4B"; + when x"0E4" => DATA <= x"69"; + when x"0E5" => DATA <= x"6D"; + when x"0E6" => DATA <= x"20"; + when x"0E7" => DATA <= x"53"; + when x"0E8" => DATA <= x"70"; + when x"0E9" => DATA <= x"65"; + when x"0EA" => DATA <= x"6E"; + when x"0EB" => DATA <= x"63"; + when x"0EC" => DATA <= x"65"; + when x"0ED" => DATA <= x"2D"; + when x"0EE" => DATA <= x"4A"; + when x"0EF" => DATA <= x"6F"; + when x"0F0" => DATA <= x"6E"; + when x"0F1" => DATA <= x"65"; + when x"0F2" => DATA <= x"73"; + when x"0F3" => DATA <= x"2C"; + when x"0F4" => DATA <= x"50"; + when x"0F5" => DATA <= x"61"; + when x"0F6" => DATA <= x"75"; + when x"0F7" => DATA <= x"6C"; + when x"0F8" => DATA <= x"20"; + when x"0F9" => DATA <= x"4F"; + when x"0FA" => DATA <= x"76"; + when x"0FB" => DATA <= x"65"; + when x"0FC" => DATA <= x"72"; + when x"0FD" => DATA <= x"65"; + when x"0FE" => DATA <= x"6C"; + when x"0FF" => DATA <= x"6C"; + when x"100" => DATA <= x"2C"; + when x"101" => DATA <= x"44"; + when x"102" => DATA <= x"61"; + when x"103" => DATA <= x"76"; + when x"104" => DATA <= x"69"; + when x"105" => DATA <= x"64"; + when x"106" => DATA <= x"20"; + when x"107" => DATA <= x"50"; + when x"108" => DATA <= x"61"; + when x"109" => DATA <= x"72"; + when x"10A" => DATA <= x"6B"; + when x"10B" => DATA <= x"69"; + when x"10C" => DATA <= x"6E"; + when x"10D" => DATA <= x"73"; + when x"10E" => DATA <= x"6F"; + when x"10F" => DATA <= x"6E"; + when x"110" => DATA <= x"2C"; + when x"111" => DATA <= x"4A"; + when x"112" => DATA <= x"6F"; + when x"113" => DATA <= x"68"; + when x"114" => DATA <= x"6E"; + when x"115" => DATA <= x"20"; + when x"116" => DATA <= x"54"; + when x"117" => DATA <= x"75"; + when x"118" => DATA <= x"74"; + when x"119" => DATA <= x"65"; + when x"11A" => DATA <= x"6E"; + when x"11B" => DATA <= x"20"; + when x"11C" => DATA <= x"61"; + when x"11D" => DATA <= x"6E"; + when x"11E" => DATA <= x"64"; + when x"11F" => DATA <= x"20"; + when x"120" => DATA <= x"45"; + when x"121" => DATA <= x"72"; + when x"122" => DATA <= x"69"; + when x"123" => DATA <= x"63"; + when x"124" => DATA <= x"20"; + when x"125" => DATA <= x"74"; + when x"126" => DATA <= x"68"; + when x"127" => DATA <= x"65"; + when x"128" => DATA <= x"20"; + when x"129" => DATA <= x"68"; + when x"12A" => DATA <= x"61"; + when x"12B" => DATA <= x"6C"; + when x"12C" => DATA <= x"66"; + when x"12D" => DATA <= x"20"; + when x"12E" => DATA <= x"54"; + when x"12F" => DATA <= x"55"; + when x"130" => DATA <= x"42"; + when x"131" => DATA <= x"45"; + when x"132" => DATA <= x"54"; + when x"133" => DATA <= x"68"; + when x"134" => DATA <= x"65"; + when x"135" => DATA <= x"20"; + when x"136" => DATA <= x"42"; + when x"137" => DATA <= x"53"; + when x"138" => DATA <= x"47"; + when x"139" => DATA <= x"20"; + when x"13A" => DATA <= x"69"; + when x"13B" => DATA <= x"73"; + when x"13C" => DATA <= x"20"; + when x"13D" => DATA <= x"42"; + when x"13E" => DATA <= x"69"; + when x"13F" => DATA <= x"67"; + when x"140" => DATA <= x"20"; + when x"141" => DATA <= x"41"; + when x"142" => DATA <= x"72"; + when x"143" => DATA <= x"74"; + when x"144" => DATA <= x"68"; + when x"145" => DATA <= x"75"; + when x"146" => DATA <= x"72"; + when x"147" => DATA <= x"20"; + when x"148" => DATA <= x"54"; + when x"149" => DATA <= x"68"; + when x"14A" => DATA <= x"65"; + when x"14B" => DATA <= x"20"; + when x"14C" => DATA <= x"54"; + when x"14D" => DATA <= x"6F"; + when x"14E" => DATA <= x"75"; + when x"14F" => DATA <= x"63"; + when x"150" => DATA <= x"61"; + when x"151" => DATA <= x"6E"; + when x"152" => DATA <= x"2C"; + when x"153" => DATA <= x"4A"; + when x"154" => DATA <= x"20"; + when x"155" => DATA <= x"4D"; + when x"156" => DATA <= x"61"; + when x"157" => DATA <= x"72"; + when x"158" => DATA <= x"6B"; + when x"159" => DATA <= x"20"; + when x"15A" => DATA <= x"43"; + when x"15B" => DATA <= x"61"; + when x"15C" => DATA <= x"72"; + when x"15D" => DATA <= x"72"; + when x"15E" => DATA <= x"69"; + when x"15F" => DATA <= x"6E"; + when x"160" => DATA <= x"67"; + when x"161" => DATA <= x"74"; + when x"162" => DATA <= x"6F"; + when x"163" => DATA <= x"6E"; + when x"164" => DATA <= x"2C"; + when x"165" => DATA <= x"48"; + when x"166" => DATA <= x"6F"; + when x"167" => DATA <= x"77"; + when x"168" => DATA <= x"61"; + when x"169" => DATA <= x"72"; + when x"16A" => DATA <= x"64"; + when x"16B" => DATA <= x"20"; + when x"16C" => DATA <= x"46"; + when x"16D" => DATA <= x"69"; + when x"16E" => DATA <= x"73"; + when x"16F" => DATA <= x"68"; + when x"170" => DATA <= x"65"; + when x"171" => DATA <= x"72"; + when x"172" => DATA <= x"2C"; + when x"173" => DATA <= x"49"; + when x"174" => DATA <= x"61"; + when x"175" => DATA <= x"6E"; + when x"176" => DATA <= x"20"; + when x"177" => DATA <= x"47"; + when x"178" => DATA <= x"20"; + when x"179" => DATA <= x"4A"; + when x"17A" => DATA <= x"61"; + when x"17B" => DATA <= x"63"; + when x"17C" => DATA <= x"6B"; + when x"17D" => DATA <= x"2C"; + when x"17E" => DATA <= x"4E"; + when x"17F" => DATA <= x"65"; + when x"180" => DATA <= x"69"; + when x"181" => DATA <= x"6C"; + when x"182" => DATA <= x"20"; + when x"183" => DATA <= x"52"; + when x"184" => DATA <= x"6F"; + when x"185" => DATA <= x"62"; + when x"186" => DATA <= x"69"; + when x"187" => DATA <= x"6E"; + when x"188" => DATA <= x"73"; + when x"189" => DATA <= x"6F"; + when x"18A" => DATA <= x"6E"; + when x"18B" => DATA <= x"2C"; + when x"18C" => DATA <= x"53"; + when x"18D" => DATA <= x"69"; + when x"18E" => DATA <= x"6D"; + when x"18F" => DATA <= x"6F"; + when x"190" => DATA <= x"6E"; + when x"191" => DATA <= x"20"; + when x"192" => DATA <= x"57"; + when x"193" => DATA <= x"6F"; + when x"194" => DATA <= x"6F"; + when x"195" => DATA <= x"64"; + when x"196" => DATA <= x"77"; + when x"197" => DATA <= x"61"; + when x"198" => DATA <= x"72"; + when x"199" => DATA <= x"64"; + when x"19A" => DATA <= x"2C"; + when x"19B" => DATA <= x"4A"; + when x"19C" => DATA <= x"6F"; + when x"19D" => DATA <= x"68"; + when x"19E" => DATA <= x"6E"; + when x"19F" => DATA <= x"20"; + when x"1A0" => DATA <= x"43"; + when x"1A1" => DATA <= x"6F"; + when x"1A2" => DATA <= x"72"; + when x"1A3" => DATA <= x"72"; + when x"1A4" => DATA <= x"61"; + when x"1A5" => DATA <= x"6C"; + when x"1A6" => DATA <= x"6C"; + when x"1A7" => DATA <= x"2C"; + when x"1A8" => DATA <= x"54"; + when x"1A9" => DATA <= x"6F"; + when x"1AA" => DATA <= x"62"; + when x"1AB" => DATA <= x"79"; + when x"1AC" => DATA <= x"20"; + when x"1AD" => DATA <= x"43"; + when x"1AE" => DATA <= x"72"; + when x"1AF" => DATA <= x"6F"; + when x"1B0" => DATA <= x"73"; + when x"1B1" => DATA <= x"73"; + when x"1B2" => DATA <= x"2C"; + when x"1B3" => DATA <= x"49"; + when x"1B4" => DATA <= x"61"; + when x"1B5" => DATA <= x"6E"; + when x"1B6" => DATA <= x"20"; + when x"1B7" => DATA <= x"4D"; + when x"1B8" => DATA <= x"69"; + when x"1B9" => DATA <= x"6C"; + when x"1BA" => DATA <= x"6C"; + when x"1BB" => DATA <= x"65"; + when x"1BC" => DATA <= x"72"; + when x"1BD" => DATA <= x"2C"; + when x"1BE" => DATA <= x"42"; + when x"1BF" => DATA <= x"6F"; + when x"1C0" => DATA <= x"72"; + when x"1C1" => DATA <= x"69"; + when x"1C2" => DATA <= x"73"; + when x"1C3" => DATA <= x"20"; + when x"1C4" => DATA <= x"53"; + when x"1C5" => DATA <= x"6F"; + when x"1C6" => DATA <= x"75"; + when x"1C7" => DATA <= x"74"; + when x"1C8" => DATA <= x"68"; + when x"1C9" => DATA <= x"65"; + when x"1CA" => DATA <= x"61"; + when x"1CB" => DATA <= x"72"; + when x"1CC" => DATA <= x"73"; + when x"1CD" => DATA <= x"72"; + when x"1CE" => DATA <= x"6F"; + when x"1CF" => DATA <= x"72"; + when x"1D0" => DATA <= x"28"; + when x"1D1" => DATA <= x"73"; + when x"1D2" => DATA <= x"29"; + when x"1D3" => DATA <= x"00"; + when x"1D4" => DATA <= x"20"; + when x"1D5" => DATA <= x"57"; + when x"1D6" => DATA <= x"61"; + when x"1D7" => DATA <= x"72"; + when x"1D8" => DATA <= x"6E"; + when x"1D9" => DATA <= x"69"; + when x"1DA" => DATA <= x"6E"; + when x"1DB" => DATA <= x"67"; + when x"1DC" => DATA <= x"28"; + when x"1DD" => DATA <= x"73"; + when x"1DE" => DATA <= x"29"; + when x"1DF" => DATA <= x"00"; + when x"1E0" => DATA <= x"0E"; + when x"1E1" => DATA <= x"00"; + when x"1E2" => DATA <= x"3A"; + when x"1E3" => DATA <= x"00"; + when x"1E4" => DATA <= x"3B"; + when x"1E5" => DATA <= x"47"; + when x"1E6" => DATA <= x"CD"; + when x"1E7" => DATA <= x"48"; + when x"1E8" => DATA <= x"1A"; + when x"1E9" => DATA <= x"C3"; + when x"1EA" => DATA <= x"6B"; + when x"1EB" => DATA <= x"2B"; + when x"1EC" => DATA <= x"CD"; + when x"1ED" => DATA <= x"16"; + when x"1EE" => DATA <= x"2D"; + when x"1EF" => DATA <= x"21"; + when x"1F0" => DATA <= x"CF"; + when x"1F1" => DATA <= x"2C"; + when x"1F2" => DATA <= x"CD"; + when x"1F3" => DATA <= x"19"; + when x"1F4" => DATA <= x"2D"; + when x"1F5" => DATA <= x"CD"; + when x"1F6" => DATA <= x"CA"; + when x"1F7" => DATA <= x"19"; + when x"1F8" => DATA <= x"C3"; + when x"1F9" => DATA <= x"FD"; + when x"1FA" => DATA <= x"2C"; + when x"1FB" => DATA <= x"52"; + when x"1FC" => DATA <= x"45"; + when x"1FD" => DATA <= x"50"; + when x"1FE" => DATA <= x"54"; + when x"1FF" => DATA <= x"2F"; + when x"200" => DATA <= x"49"; + when x"201" => DATA <= x"52"; + when x"202" => DATA <= x"50"; + when x"203" => DATA <= x"2F"; + when x"204" => DATA <= x"49"; + when x"205" => DATA <= x"52"; + when x"206" => DATA <= x"50"; + when x"207" => DATA <= x"43"; + when x"208" => DATA <= x"2F"; + when x"209" => DATA <= x"4D"; + when x"20A" => DATA <= x"41"; + when x"20B" => DATA <= x"43"; + when x"20C" => DATA <= x"52"; + when x"20D" => DATA <= x"4F"; + when x"20E" => DATA <= x"00"; + when x"20F" => DATA <= x"55"; + when x"210" => DATA <= x"6E"; + when x"211" => DATA <= x"74"; + when x"212" => DATA <= x"65"; + when x"213" => DATA <= x"72"; + when x"214" => DATA <= x"6D"; + when x"215" => DATA <= x"69"; + when x"216" => DATA <= x"6E"; + when x"217" => DATA <= x"61"; + when x"218" => DATA <= x"74"; + when x"219" => DATA <= x"65"; + when x"21A" => DATA <= x"64"; + when x"21B" => DATA <= x"20"; + when x"21C" => DATA <= x"00"; + when x"21D" => DATA <= x"CD"; + when x"21E" => DATA <= x"16"; + when x"21F" => DATA <= x"2D"; + when x"220" => DATA <= x"21"; + when x"221" => DATA <= x"26"; + when x"222" => DATA <= x"2D"; + when x"223" => DATA <= x"CD"; + when x"224" => DATA <= x"19"; + when x"225" => DATA <= x"2D"; + when x"226" => DATA <= x"CD"; + when x"227" => DATA <= x"CA"; + when x"228" => DATA <= x"19"; + when x"229" => DATA <= x"3E"; + when x"22A" => DATA <= x"0D"; + when x"22B" => DATA <= x"CD"; + when x"22C" => DATA <= x"FC"; + when x"22D" => DATA <= x"18"; + when x"22E" => DATA <= x"3E"; + when x"22F" => DATA <= x"0A"; + when x"230" => DATA <= x"CD"; + when x"231" => DATA <= x"FC"; + when x"232" => DATA <= x"18"; + when x"233" => DATA <= x"3A"; + when x"234" => DATA <= x"37"; + when x"235" => DATA <= x"3D"; + when x"236" => DATA <= x"3C"; + when x"237" => DATA <= x"C8"; + when x"238" => DATA <= x"3E"; + when x"239" => DATA <= x"0D"; + when x"23A" => DATA <= x"CD"; + when x"23B" => DATA <= x"4E"; + when x"23C" => DATA <= x"47"; + when x"23D" => DATA <= x"3E"; + when x"23E" => DATA <= x"0A"; + when x"23F" => DATA <= x"C3"; + when x"240" => DATA <= x"4E"; + when x"241" => DATA <= x"47"; + when x"242" => DATA <= x"21"; + when x"243" => DATA <= x"E3"; + when x"244" => DATA <= x"2C"; + when x"245" => DATA <= x"E5"; + when x"246" => DATA <= x"CD"; + when x"247" => DATA <= x"77"; + when x"248" => DATA <= x"19"; + when x"249" => DATA <= x"E1"; + when x"24A" => DATA <= x"3A"; + when x"24B" => DATA <= x"37"; + when x"24C" => DATA <= x"3D"; + when x"24D" => DATA <= x"3C"; + when x"24E" => DATA <= x"C8"; + when x"24F" => DATA <= x"C3"; + when x"250" => DATA <= x"4F"; + when x"251" => DATA <= x"43"; + when x"252" => DATA <= x"43"; + when x"253" => DATA <= x"6F"; + when x"254" => DATA <= x"6E"; + when x"255" => DATA <= x"64"; + when x"256" => DATA <= x"69"; + when x"257" => DATA <= x"74"; + when x"258" => DATA <= x"69"; + when x"259" => DATA <= x"6F"; + when x"25A" => DATA <= x"6E"; + when x"25B" => DATA <= x"61"; + when x"25C" => DATA <= x"6C"; + when x"25D" => DATA <= x"00"; + when x"25E" => DATA <= x"53"; + when x"25F" => DATA <= x"79"; + when x"260" => DATA <= x"6D"; + when x"261" => DATA <= x"62"; + when x"262" => DATA <= x"6F"; + when x"263" => DATA <= x"6C"; + when x"264" => DATA <= x"73"; + when x"265" => DATA <= x"3A"; + when x"266" => DATA <= x"0D"; + when x"267" => DATA <= x"0A"; + when x"268" => DATA <= x"00"; + when x"269" => DATA <= x"4D"; + when x"26A" => DATA <= x"61"; + when x"26B" => DATA <= x"63"; + when x"26C" => DATA <= x"72"; + when x"26D" => DATA <= x"6F"; + when x"26E" => DATA <= x"73"; + when x"26F" => DATA <= x"3A"; + when x"270" => DATA <= x"0D"; + when x"271" => DATA <= x"0A"; + when x"272" => DATA <= x"00"; + when x"273" => DATA <= x"21"; + when x"274" => DATA <= x"E2"; + when x"275" => DATA <= x"FF"; + when x"276" => DATA <= x"39"; + when x"277" => DATA <= x"EB"; + when x"278" => DATA <= x"2A"; + when x"279" => DATA <= x"AC"; + when x"27A" => DATA <= x"3C"; + when x"27B" => DATA <= x"CD"; + when x"27C" => DATA <= x"82"; + when x"27D" => DATA <= x"0D"; + when x"27E" => DATA <= x"D2"; + when x"27F" => DATA <= x"5D"; + when x"280" => DATA <= x"31"; + when x"281" => DATA <= x"80"; + when x"282" => DATA <= x"FF"; + when x"283" => DATA <= x"CD"; + when x"284" => DATA <= x"5E"; + when x"285" => DATA <= x"F6"; + when x"286" => DATA <= x"3E"; + when x"287" => DATA <= x"FF"; + when x"288" => DATA <= x"ED"; + when x"289" => DATA <= x"47"; + when x"28A" => DATA <= x"ED"; + when x"28B" => DATA <= x"5E"; + when x"28C" => DATA <= x"FB"; + when x"28D" => DATA <= x"CD"; + when x"28E" => DATA <= x"0E"; + when x"28F" => DATA <= x"F6"; + when x"290" => DATA <= x"16"; + when x"291" => DATA <= x"08"; + when x"292" => DATA <= x"0D"; + when x"293" => DATA <= x"41"; + when x"294" => DATA <= x"63"; + when x"295" => DATA <= x"6F"; + when x"296" => DATA <= x"72"; + when x"297" => DATA <= x"6E"; + when x"298" => DATA <= x"20"; + when x"299" => DATA <= x"54"; + when x"29A" => DATA <= x"55"; + when x"29B" => DATA <= x"42"; + when x"29C" => DATA <= x"45"; + when x"29D" => DATA <= x"20"; + when x"29E" => DATA <= x"5A"; + when x"29F" => DATA <= x"38"; + when x"2A0" => DATA <= x"30"; + when x"2A1" => DATA <= x"20"; + when x"2A2" => DATA <= digit1; + when x"2A3" => DATA <= digit2; + when x"2A4" => DATA <= x"4D"; + when x"2A5" => DATA <= x"48"; + when x"2A6" => DATA <= x"7A"; + when x"2A7" => DATA <= x"20"; + when x"2A8" => DATA <= x"20"; + when x"2A9" => DATA <= x"20"; + when x"2AA" => DATA <= x"0D"; + when x"2AB" => DATA <= x"0D"; + when x"2AC" => DATA <= x"00"; + when x"2AD" => DATA <= x"CD"; + when x"2AE" => DATA <= x"9A"; + when x"2AF" => DATA <= x"F6"; + when x"2B0" => DATA <= x"CD"; + when x"2B1" => DATA <= x"AE"; + when x"2B2" => DATA <= x"F5"; + when x"2B3" => DATA <= x"3E"; + when x"2B4" => DATA <= x"FD"; + when x"2B5" => DATA <= x"21"; + when x"2B6" => DATA <= x"00"; + when x"2B7" => DATA <= x"FF"; + when x"2B8" => DATA <= x"CD"; + when x"2B9" => DATA <= x"8E"; + when x"2BA" => DATA <= x"F8"; + when x"2BB" => DATA <= x"7D"; + when x"2BC" => DATA <= x"B7"; + when x"2BD" => DATA <= x"CA"; + when x"2BE" => DATA <= x"CE"; + when x"2BF" => DATA <= x"F2"; + when x"2C0" => DATA <= x"3E"; + when x"2C1" => DATA <= x"0F"; + when x"2C2" => DATA <= x"21"; + when x"2C3" => DATA <= x"01"; + when x"2C4" => DATA <= x"00"; + when x"2C5" => DATA <= x"CD"; + when x"2C6" => DATA <= x"8E"; + when x"2C7" => DATA <= x"F8"; + when x"2C8" => DATA <= x"C3"; + when x"2C9" => DATA <= x"EB"; + when x"2CA" => DATA <= x"F7"; + when x"2CB" => DATA <= x"CD"; + when x"2CC" => DATA <= x"E7"; + when x"2CD" => DATA <= x"FF"; + when x"2CE" => DATA <= x"31"; + when x"2CF" => DATA <= x"80"; + when x"2D0" => DATA <= x"FF"; + when x"2D1" => DATA <= x"3A"; + when x"2D2" => DATA <= x"80"; + when x"2D3" => DATA <= x"FF"; + when x"2D4" => DATA <= x"CB"; + when x"2D5" => DATA <= x"7F"; + when x"2D6" => DATA <= x"28"; + when x"2D7" => DATA <= x"08"; + when x"2D8" => DATA <= x"3E"; + when x"2D9" => DATA <= x"7E"; + when x"2DA" => DATA <= x"21"; + when x"2DB" => DATA <= x"00"; + when x"2DC" => DATA <= x"00"; + when x"2DD" => DATA <= x"CD"; + when x"2DE" => DATA <= x"8E"; + when x"2DF" => DATA <= x"F8"; + when x"2E0" => DATA <= x"3E"; + when x"2E1" => DATA <= x"2A"; + when x"2E2" => DATA <= x"CD"; + when x"2E3" => DATA <= x"71"; + when x"2E4" => DATA <= x"F6"; + when x"2E5" => DATA <= x"21"; + when x"2E6" => DATA <= x"9D"; + when x"2E7" => DATA <= x"FC"; + when x"2E8" => DATA <= x"AF"; + when x"2E9" => DATA <= x"CD"; + when x"2EA" => DATA <= x"EF"; + when x"2EB" => DATA <= x"F8"; + when x"2EC" => DATA <= x"DA"; + when x"2ED" => DATA <= x"FA"; + when x"2EE" => DATA <= x"F2"; + when x"2EF" => DATA <= x"21"; + when x"2F0" => DATA <= x"B0"; + when x"2F1" => DATA <= x"FC"; + when x"2F2" => DATA <= x"CD"; + when x"2F3" => DATA <= x"B7"; + when x"2F4" => DATA <= x"F6"; + when x"2F5" => DATA <= x"18"; + when x"2F6" => DATA <= x"D7"; + when x"2F7" => DATA <= x"CD"; + when x"2F8" => DATA <= x"E7"; + when x"2F9" => DATA <= x"FF"; + when x"2FA" => DATA <= x"3E"; + when x"2FB" => DATA <= x"7E"; + when x"2FC" => DATA <= x"CD"; + when x"2FD" => DATA <= x"8E"; + when x"2FE" => DATA <= x"F8"; + when x"2FF" => DATA <= x"FF"; + when x"300" => DATA <= x"11"; + when x"301" => DATA <= x"45"; + when x"302" => DATA <= x"73"; + when x"303" => DATA <= x"63"; + when x"304" => DATA <= x"61"; + when x"305" => DATA <= x"70"; + when x"306" => DATA <= x"65"; + when x"307" => DATA <= x"00"; + when x"308" => DATA <= x"13"; + when x"309" => DATA <= x"1A"; + when x"30A" => DATA <= x"E6"; + when x"30B" => DATA <= x"DF"; + when x"30C" => DATA <= x"FE"; + when x"30D" => DATA <= x"4F"; + when x"30E" => DATA <= x"C2"; + when x"30F" => DATA <= x"CC"; + when x"310" => DATA <= x"F7"; + when x"311" => DATA <= x"CD"; + when x"312" => DATA <= x"76"; + when x"313" => DATA <= x"F8"; + when x"314" => DATA <= x"06"; + when x"315" => DATA <= x"00"; + when x"316" => DATA <= x"CD"; + when x"317" => DATA <= x"39"; + when x"318" => DATA <= x"F4"; + when x"319" => DATA <= x"CD"; + when x"31A" => DATA <= x"77"; + when x"31B" => DATA <= x"F8"; + when x"31C" => DATA <= x"FE"; + when x"31D" => DATA <= x"0D"; + when x"31E" => DATA <= x"C2"; + when x"31F" => DATA <= x"CC"; + when x"320" => DATA <= x"F7"; + when x"321" => DATA <= x"3A"; + when x"322" => DATA <= x"AA"; + when x"323" => DATA <= x"FC"; + when x"324" => DATA <= x"32"; + when x"325" => DATA <= x"A8"; + when x"326" => DATA <= x"FC"; + when x"327" => DATA <= x"3A"; + when x"328" => DATA <= x"AB"; + when x"329" => DATA <= x"FC"; + when x"32A" => DATA <= x"32"; + when x"32B" => DATA <= x"A9"; + when x"32C" => DATA <= x"FC"; + when x"32D" => DATA <= x"C3"; + when x"32E" => DATA <= x"DF"; + when x"32F" => DATA <= x"F7"; + when x"330" => DATA <= x"CD"; + when x"331" => DATA <= x"76"; + when x"332" => DATA <= x"F8"; + when x"333" => DATA <= x"06"; + when x"334" => DATA <= x"00"; + when x"335" => DATA <= x"CD"; + when x"336" => DATA <= x"39"; + when x"337" => DATA <= x"F4"; + when x"338" => DATA <= x"CD"; + when x"339" => DATA <= x"77"; + when x"33A" => DATA <= x"F8"; + when x"33B" => DATA <= x"FE"; + when x"33C" => DATA <= x"0D"; + when x"33D" => DATA <= x"C2"; + when x"33E" => DATA <= x"CC"; + when x"33F" => DATA <= x"F7"; + when x"340" => DATA <= x"3E"; + when x"341" => DATA <= x"04"; + when x"342" => DATA <= x"21"; + when x"343" => DATA <= x"01"; + when x"344" => DATA <= x"00"; + when x"345" => DATA <= x"CD"; + when x"346" => DATA <= x"F4"; + when x"347" => DATA <= x"FF"; + when x"348" => DATA <= x"7D"; + when x"349" => DATA <= x"32"; + when x"34A" => DATA <= x"AE"; + when x"34B" => DATA <= x"FC"; + when x"34C" => DATA <= x"2A"; + when x"34D" => DATA <= x"AA"; + when x"34E" => DATA <= x"FC"; + when x"34F" => DATA <= x"CD"; + when x"350" => DATA <= x"E7"; + when x"351" => DATA <= x"FF"; + when x"352" => DATA <= x"CD"; + when x"353" => DATA <= x"71"; + when x"354" => DATA <= x"F4"; + when x"355" => DATA <= x"CD"; + when x"356" => DATA <= x"1D"; + when x"357" => DATA <= x"F4"; + when x"358" => DATA <= x"7E"; + when x"359" => DATA <= x"CD"; + when x"35A" => DATA <= x"0D"; + when x"35B" => DATA <= x"F4"; + when x"35C" => DATA <= x"CD"; + when x"35D" => DATA <= x"1D"; + when x"35E" => DATA <= x"F4"; + when x"35F" => DATA <= x"7E"; + when x"360" => DATA <= x"CD"; + when x"361" => DATA <= x"76"; + when x"362" => DATA <= x"F4"; + when x"363" => DATA <= x"E5"; + when x"364" => DATA <= x"06"; + when x"365" => DATA <= x"01"; + when x"366" => DATA <= x"21"; + when x"367" => DATA <= x"00"; + when x"368" => DATA <= x"00"; + when x"369" => DATA <= x"CD"; + when x"36A" => DATA <= x"E0"; + when x"36B" => DATA <= x"FF"; + when x"36C" => DATA <= x"CD"; + when x"36D" => DATA <= x"40"; + when x"36E" => DATA <= x"F4"; + when x"36F" => DATA <= x"06"; + when x"370" => DATA <= x"00"; + when x"371" => DATA <= x"5D"; + when x"372" => DATA <= x"E1"; + when x"373" => DATA <= x"FE"; + when x"374" => DATA <= x"8A"; + when x"375" => DATA <= x"28"; + when x"376" => DATA <= x"27"; + when x"377" => DATA <= x"FE"; + when x"378" => DATA <= x"8B"; + when x"379" => DATA <= x"28"; + when x"37A" => DATA <= x"20"; + when x"37B" => DATA <= x"FE"; + when x"37C" => DATA <= x"01"; + when x"37D" => DATA <= x"C2"; + when x"37E" => DATA <= x"A1"; + when x"37F" => DATA <= x"F3"; + when x"380" => DATA <= x"7E"; + when x"381" => DATA <= x"CB"; + when x"382" => DATA <= x"27"; + when x"383" => DATA <= x"CB"; + when x"384" => DATA <= x"27"; + when x"385" => DATA <= x"CB"; + when x"386" => DATA <= x"27"; + when x"387" => DATA <= x"CB"; + when x"388" => DATA <= x"27"; + when x"389" => DATA <= x"83"; + when x"38A" => DATA <= x"77"; + when x"38B" => DATA <= x"3E"; + when x"38C" => DATA <= x"08"; + when x"38D" => DATA <= x"CD"; + when x"38E" => DATA <= x"71"; + when x"38F" => DATA <= x"F6"; + when x"390" => DATA <= x"CD"; + when x"391" => DATA <= x"71"; + when x"392" => DATA <= x"F6"; + when x"393" => DATA <= x"CD"; + when x"394" => DATA <= x"71"; + when x"395" => DATA <= x"F6"; + when x"396" => DATA <= x"CD"; + when x"397" => DATA <= x"71"; + when x"398" => DATA <= x"F6"; + when x"399" => DATA <= x"18"; + when x"39A" => DATA <= x"BD"; + when x"39B" => DATA <= x"23"; + when x"39C" => DATA <= x"18"; + when x"39D" => DATA <= x"B1"; + when x"39E" => DATA <= x"2B"; + when x"39F" => DATA <= x"18"; + when x"3A0" => DATA <= x"AE"; + when x"3A1" => DATA <= x"3A"; + when x"3A2" => DATA <= x"AE"; + when x"3A3" => DATA <= x"FC"; + when x"3A4" => DATA <= x"6F"; + when x"3A5" => DATA <= x"26"; + when x"3A6" => DATA <= x"00"; + when x"3A7" => DATA <= x"3E"; + when x"3A8" => DATA <= x"04"; + when x"3A9" => DATA <= x"CD"; + when x"3AA" => DATA <= x"F4"; + when x"3AB" => DATA <= x"FF"; + when x"3AC" => DATA <= x"CD"; + when x"3AD" => DATA <= x"E7"; + when x"3AE" => DATA <= x"FF"; + when x"3AF" => DATA <= x"D1"; + when x"3B0" => DATA <= x"C1"; + when x"3B1" => DATA <= x"F1"; + when x"3B2" => DATA <= x"C9"; + when x"3B3" => DATA <= x"CD"; + when x"3B4" => DATA <= x"76"; + when x"3B5" => DATA <= x"F8"; + when x"3B6" => DATA <= x"06"; + when x"3B7" => DATA <= x"00"; + when x"3B8" => DATA <= x"CD"; + when x"3B9" => DATA <= x"39"; + when x"3BA" => DATA <= x"F4"; + when x"3BB" => DATA <= x"FE"; + when x"3BC" => DATA <= x"0D"; + when x"3BD" => DATA <= x"28"; + when x"3BE" => DATA <= x"10"; + when x"3BF" => DATA <= x"FE"; + when x"3C0" => DATA <= x"20"; + when x"3C1" => DATA <= x"C2"; + when x"3C2" => DATA <= x"CC"; + when x"3C3" => DATA <= x"F7"; + when x"3C4" => DATA <= x"2A"; + when x"3C5" => DATA <= x"AA"; + when x"3C6" => DATA <= x"FC"; + when x"3C7" => DATA <= x"CD"; + when x"3C8" => DATA <= x"77"; + when x"3C9" => DATA <= x"F8"; + when x"3CA" => DATA <= x"CD"; + when x"3CB" => DATA <= x"39"; + when x"3CC" => DATA <= x"F4"; + when x"3CD" => DATA <= x"18"; + when x"3CE" => DATA <= x"03"; + when x"3CF" => DATA <= x"2A"; + when x"3D0" => DATA <= x"AA"; + when x"3D1" => DATA <= x"FC"; + when x"3D2" => DATA <= x"ED"; + when x"3D3" => DATA <= x"5B"; + when x"3D4" => DATA <= x"AA"; + when x"3D5" => DATA <= x"FC"; + when x"3D6" => DATA <= x"3A"; + when x"3D7" => DATA <= x"80"; + when x"3D8" => DATA <= x"FF"; + when x"3D9" => DATA <= x"CB"; + when x"3DA" => DATA <= x"7F"; + when x"3DB" => DATA <= x"C2"; + when x"3DC" => DATA <= x"F7"; + when x"3DD" => DATA <= x"F2"; + when x"3DE" => DATA <= x"CD"; + when x"3DF" => DATA <= x"E7"; + when x"3E0" => DATA <= x"FF"; + when x"3E1" => DATA <= x"CD"; + when x"3E2" => DATA <= x"71"; + when x"3E3" => DATA <= x"F4"; + when x"3E4" => DATA <= x"06"; + when x"3E5" => DATA <= x"08"; + when x"3E6" => DATA <= x"E5"; + when x"3E7" => DATA <= x"CD"; + when x"3E8" => DATA <= x"1D"; + when x"3E9" => DATA <= x"F4"; + when x"3EA" => DATA <= x"7E"; + when x"3EB" => DATA <= x"CD"; + when x"3EC" => DATA <= x"76"; + when x"3ED" => DATA <= x"F4"; + when x"3EE" => DATA <= x"23"; + when x"3EF" => DATA <= x"10"; + when x"3F0" => DATA <= x"F6"; + when x"3F1" => DATA <= x"06"; + when x"3F2" => DATA <= x"08"; + when x"3F3" => DATA <= x"E1"; + when x"3F4" => DATA <= x"CD"; + when x"3F5" => DATA <= x"1D"; + when x"3F6" => DATA <= x"F4"; + when x"3F7" => DATA <= x"7E"; + when x"3F8" => DATA <= x"CD"; + when x"3F9" => DATA <= x"0D"; + when x"3FA" => DATA <= x"F4"; + when x"3FB" => DATA <= x"23"; + when x"3FC" => DATA <= x"10"; + when x"3FD" => DATA <= x"F9"; + when x"3FE" => DATA <= x"CD"; + when x"3FF" => DATA <= x"23"; + when x"400" => DATA <= x"F4"; + when x"401" => DATA <= x"D2"; + when x"402" => DATA <= x"06"; + when x"403" => DATA <= x"F4"; + when x"404" => DATA <= x"18"; + when x"405" => DATA <= x"D0"; + when x"406" => DATA <= x"CD"; + when x"407" => DATA <= x"E7"; + when x"408" => DATA <= x"FF"; + when x"409" => DATA <= x"D1"; + when x"40A" => DATA <= x"C1"; + when x"40B" => DATA <= x"F1"; + when x"40C" => DATA <= x"C9"; + when x"40D" => DATA <= x"FE"; + when x"40E" => DATA <= x"20"; + when x"40F" => DATA <= x"38"; + when x"410" => DATA <= x"06"; + when x"411" => DATA <= x"FE"; + when x"412" => DATA <= x"7F"; + when x"413" => DATA <= x"30"; + when x"414" => DATA <= x"02"; + when x"415" => DATA <= x"18"; + when x"416" => DATA <= x"02"; + when x"417" => DATA <= x"3E"; + when x"418" => DATA <= x"2E"; + when x"419" => DATA <= x"CD"; + when x"41A" => DATA <= x"71"; + when x"41B" => DATA <= x"F6"; + when x"41C" => DATA <= x"C9"; + when x"41D" => DATA <= x"3E"; + when x"41E" => DATA <= x"20"; + when x"41F" => DATA <= x"CD"; + when x"420" => DATA <= x"71"; + when x"421" => DATA <= x"F6"; + when x"422" => DATA <= x"C9"; + when x"423" => DATA <= x"E5"; + when x"424" => DATA <= x"01"; + when x"425" => DATA <= x"08"; + when x"426" => DATA <= x"00"; + when x"427" => DATA <= x"BF"; + when x"428" => DATA <= x"ED"; + when x"429" => DATA <= x"42"; + when x"42A" => DATA <= x"30"; + when x"42B" => DATA <= x"06"; + when x"42C" => DATA <= x"21"; + when x"42D" => DATA <= x"00"; + when x"42E" => DATA <= x"00"; + when x"42F" => DATA <= x"BF"; + when x"430" => DATA <= x"18"; + when x"431" => DATA <= x"02"; + when x"432" => DATA <= x"E1"; + when x"433" => DATA <= x"E5"; + when x"434" => DATA <= x"2B"; + when x"435" => DATA <= x"ED"; + when x"436" => DATA <= x"52"; + when x"437" => DATA <= x"E1"; + when x"438" => DATA <= x"C9"; + when x"439" => DATA <= x"22"; + when x"43A" => DATA <= x"AC"; + when x"43B" => DATA <= x"FC"; + when x"43C" => DATA <= x"21"; + when x"43D" => DATA <= x"00"; + when x"43E" => DATA <= x"00"; + when x"43F" => DATA <= x"1A"; + when x"440" => DATA <= x"CB"; + when x"441" => DATA <= x"77"; + when x"442" => DATA <= x"28"; + when x"443" => DATA <= x"02"; + when x"444" => DATA <= x"E6"; + when x"445" => DATA <= x"DF"; + when x"446" => DATA <= x"FE"; + when x"447" => DATA <= x"30"; + when x"448" => DATA <= x"FA"; + when x"449" => DATA <= x"6D"; + when x"44A" => DATA <= x"F4"; + when x"44B" => DATA <= x"FE"; + when x"44C" => DATA <= x"47"; + when x"44D" => DATA <= x"F2"; + when x"44E" => DATA <= x"6D"; + when x"44F" => DATA <= x"F4"; + when x"450" => DATA <= x"FE"; + when x"451" => DATA <= x"3A"; + when x"452" => DATA <= x"38"; + when x"453" => DATA <= x"07"; + when x"454" => DATA <= x"FE"; + when x"455" => DATA <= x"41"; + when x"456" => DATA <= x"FA"; + when x"457" => DATA <= x"6D"; + when x"458" => DATA <= x"F4"; + when x"459" => DATA <= x"C6"; + when x"45A" => DATA <= x"09"; + when x"45B" => DATA <= x"E6"; + when x"45C" => DATA <= x"0F"; + when x"45D" => DATA <= x"29"; + when x"45E" => DATA <= x"29"; + when x"45F" => DATA <= x"29"; + when x"460" => DATA <= x"29"; + when x"461" => DATA <= x"B5"; + when x"462" => DATA <= x"6F"; + when x"463" => DATA <= x"3E"; + when x"464" => DATA <= x"01"; + when x"465" => DATA <= x"B8"; + when x"466" => DATA <= x"C8"; + when x"467" => DATA <= x"13"; + when x"468" => DATA <= x"22"; + when x"469" => DATA <= x"AA"; + when x"46A" => DATA <= x"FC"; + when x"46B" => DATA <= x"18"; + when x"46C" => DATA <= x"D2"; + when x"46D" => DATA <= x"2A"; + when x"46E" => DATA <= x"AC"; + when x"46F" => DATA <= x"FC"; + when x"470" => DATA <= x"C9"; + when x"471" => DATA <= x"7C"; + when x"472" => DATA <= x"CD"; + when x"473" => DATA <= x"76"; + when x"474" => DATA <= x"F4"; + when x"475" => DATA <= x"7D"; + when x"476" => DATA <= x"F5"; + when x"477" => DATA <= x"0F"; + when x"478" => DATA <= x"0F"; + when x"479" => DATA <= x"0F"; + when x"47A" => DATA <= x"0F"; + when x"47B" => DATA <= x"CD"; + when x"47C" => DATA <= x"7F"; + when x"47D" => DATA <= x"F4"; + when x"47E" => DATA <= x"F1"; + when x"47F" => DATA <= x"E6"; + when x"480" => DATA <= x"0F"; + when x"481" => DATA <= x"C6"; + when x"482" => DATA <= x"30"; + when x"483" => DATA <= x"FE"; + when x"484" => DATA <= x"3A"; + when x"485" => DATA <= x"FA"; + when x"486" => DATA <= x"71"; + when x"487" => DATA <= x"F6"; + when x"488" => DATA <= x"C6"; + when x"489" => DATA <= x"07"; + when x"48A" => DATA <= x"C3"; + when x"48B" => DATA <= x"71"; + when x"48C" => DATA <= x"F6"; + when x"48D" => DATA <= x"13"; + when x"48E" => DATA <= x"1A"; + when x"48F" => DATA <= x"E6"; + when x"490" => DATA <= x"DF"; + when x"491" => DATA <= x"FE"; + when x"492" => DATA <= x"50"; + when x"493" => DATA <= x"C2"; + when x"494" => DATA <= x"CC"; + when x"495" => DATA <= x"F7"; + when x"496" => DATA <= x"13"; + when x"497" => DATA <= x"1A"; + when x"498" => DATA <= x"E6"; + when x"499" => DATA <= x"DF"; + when x"49A" => DATA <= x"FE"; + when x"49B" => DATA <= x"4D"; + when x"49C" => DATA <= x"C2"; + when x"49D" => DATA <= x"CC"; + when x"49E" => DATA <= x"F7"; + when x"49F" => DATA <= x"CD"; + when x"4A0" => DATA <= x"76"; + when x"4A1" => DATA <= x"F8"; + when x"4A2" => DATA <= x"FE"; + when x"4A3" => DATA <= x"0D"; + when x"4A4" => DATA <= x"C2"; + when x"4A5" => DATA <= x"CC"; + when x"4A6" => DATA <= x"F7"; + when x"4A7" => DATA <= x"18"; + when x"4A8" => DATA <= x"26"; + when x"4A9" => DATA <= x"CD"; + when x"4AA" => DATA <= x"0E"; + when x"4AB" => DATA <= x"F6"; + when x"4AC" => DATA <= x"49"; + when x"4AD" => DATA <= x"6E"; + when x"4AE" => DATA <= x"73"; + when x"4AF" => DATA <= x"65"; + when x"4B0" => DATA <= x"72"; + when x"4B1" => DATA <= x"74"; + when x"4B2" => DATA <= x"20"; + when x"4B3" => DATA <= x"43"; + when x"4B4" => DATA <= x"50"; + when x"4B5" => DATA <= x"2F"; + when x"4B6" => DATA <= x"4D"; + when x"4B7" => DATA <= x"20"; + when x"4B8" => DATA <= x"53"; + when x"4B9" => DATA <= x"79"; + when x"4BA" => DATA <= x"73"; + when x"4BB" => DATA <= x"74"; + when x"4BC" => DATA <= x"65"; + when x"4BD" => DATA <= x"6D"; + when x"4BE" => DATA <= x"20"; + when x"4BF" => DATA <= x"64"; + when x"4C0" => DATA <= x"69"; + when x"4C1" => DATA <= x"73"; + when x"4C2" => DATA <= x"63"; + when x"4C3" => DATA <= x"20"; + when x"4C4" => DATA <= x"69"; + when x"4C5" => DATA <= x"6E"; + when x"4C6" => DATA <= x"20"; + when x"4C7" => DATA <= x"64"; + when x"4C8" => DATA <= x"72"; + when x"4C9" => DATA <= x"69"; + when x"4CA" => DATA <= x"76"; + when x"4CB" => DATA <= x"65"; + when x"4CC" => DATA <= x"20"; + when x"4CD" => DATA <= x"41"; + when x"4CE" => DATA <= x"00"; + when x"4CF" => DATA <= x"3E"; + when x"4D0" => DATA <= x"E5"; + when x"4D1" => DATA <= x"21"; + when x"4D2" => DATA <= x"01"; + when x"4D3" => DATA <= x"00"; + when x"4D4" => DATA <= x"CD"; + when x"4D5" => DATA <= x"8E"; + when x"4D6" => DATA <= x"F8"; + when x"4D7" => DATA <= x"21"; + when x"4D8" => DATA <= x"82"; + when x"4D9" => DATA <= x"F5"; + when x"4DA" => DATA <= x"CD"; + when x"4DB" => DATA <= x"4A"; + when x"4DC" => DATA <= x"F5"; + when x"4DD" => DATA <= x"21"; + when x"4DE" => DATA <= x"00"; + when x"4DF" => DATA <= x"EB"; + when x"4E0" => DATA <= x"11"; + when x"4E1" => DATA <= x"F0"; + when x"4E2" => DATA <= x"EA"; + when x"4E3" => DATA <= x"01"; + when x"4E4" => DATA <= x"F0"; + when x"4E5" => DATA <= x"00"; + when x"4E6" => DATA <= x"ED"; + when x"4E7" => DATA <= x"B0"; + when x"4E8" => DATA <= x"21"; + when x"4E9" => DATA <= x"F0"; + when x"4EA" => DATA <= x"EB"; + when x"4EB" => DATA <= x"11"; + when x"4EC" => DATA <= x"E0"; + when x"4ED" => DATA <= x"EB"; + when x"4EE" => DATA <= x"01"; + when x"4EF" => DATA <= x"00"; + when x"4F0" => DATA <= x"06"; + when x"4F1" => DATA <= x"ED"; + when x"4F2" => DATA <= x"B0"; + when x"4F3" => DATA <= x"CD"; + when x"4F4" => DATA <= x"3B"; + when x"4F5" => DATA <= x"F5"; + when x"4F6" => DATA <= x"3A"; + when x"4F7" => DATA <= x"00"; + when x"4F8" => DATA <= x"D4"; + when x"4F9" => DATA <= x"FE"; + when x"4FA" => DATA <= x"C3"; + when x"4FB" => DATA <= x"CA"; + when x"4FC" => DATA <= x"22"; + when x"4FD" => DATA <= x"F5"; + when x"4FE" => DATA <= x"3E"; + when x"4FF" => DATA <= x"E5"; + when x"500" => DATA <= x"21"; + when x"501" => DATA <= x"00"; + when x"502" => DATA <= x"00"; + when x"503" => DATA <= x"CD"; + when x"504" => DATA <= x"8E"; + when x"505" => DATA <= x"F8"; + when x"506" => DATA <= x"CD"; + when x"507" => DATA <= x"E7"; + when x"508" => DATA <= x"FF"; + when x"509" => DATA <= x"FF"; + when x"50A" => DATA <= x"C8"; + when x"50B" => DATA <= x"4E"; + when x"50C" => DATA <= x"6F"; + when x"50D" => DATA <= x"74"; + when x"50E" => DATA <= x"20"; + when x"50F" => DATA <= x"61"; + when x"510" => DATA <= x"20"; + when x"511" => DATA <= x"43"; + when x"512" => DATA <= x"50"; + when x"513" => DATA <= x"2F"; + when x"514" => DATA <= x"4D"; + when x"515" => DATA <= x"20"; + when x"516" => DATA <= x"53"; + when x"517" => DATA <= x"79"; + when x"518" => DATA <= x"73"; + when x"519" => DATA <= x"74"; + when x"51A" => DATA <= x"65"; + when x"51B" => DATA <= x"6D"; + when x"51C" => DATA <= x"20"; + when x"51D" => DATA <= x"64"; + when x"51E" => DATA <= x"69"; + when x"51F" => DATA <= x"73"; + when x"520" => DATA <= x"63"; + when x"521" => DATA <= x"00"; + when x"522" => DATA <= x"21"; + when x"523" => DATA <= x"B2"; + when x"524" => DATA <= x"FA"; + when x"525" => DATA <= x"22"; + when x"526" => DATA <= x"FA"; + when x"527" => DATA <= x"FF"; + when x"528" => DATA <= x"3E"; + when x"529" => DATA <= x"90"; + when x"52A" => DATA <= x"32"; + when x"52B" => DATA <= x"A3"; + when x"52C" => DATA <= x"FC"; + when x"52D" => DATA <= x"21"; + when x"52E" => DATA <= x"00"; + when x"52F" => DATA <= x"01"; + when x"530" => DATA <= x"CD"; + when x"531" => DATA <= x"8E"; + when x"532" => DATA <= x"F8"; + when x"533" => DATA <= x"CD"; + when x"534" => DATA <= x"0E"; + when x"535" => DATA <= x"F6"; + when x"536" => DATA <= x"16"; + when x"537" => DATA <= x"00"; + when x"538" => DATA <= x"C3"; + when x"539" => DATA <= x"00"; + when x"53A" => DATA <= x"EA"; + when x"53B" => DATA <= x"21"; + when x"53C" => DATA <= x"8D"; + when x"53D" => DATA <= x"F5"; + when x"53E" => DATA <= x"CD"; + when x"53F" => DATA <= x"4A"; + when x"540" => DATA <= x"F5"; + when x"541" => DATA <= x"21"; + when x"542" => DATA <= x"98"; + when x"543" => DATA <= x"F5"; + when x"544" => DATA <= x"CD"; + when x"545" => DATA <= x"4A"; + when x"546" => DATA <= x"F5"; + when x"547" => DATA <= x"21"; + when x"548" => DATA <= x"A3"; + when x"549" => DATA <= x"F5"; + when x"54A" => DATA <= x"CD"; + when x"54B" => DATA <= x"5C"; + when x"54C" => DATA <= x"F5"; + when x"54D" => DATA <= x"B7"; + when x"54E" => DATA <= x"C8"; + when x"54F" => DATA <= x"FF"; + when x"550" => DATA <= x"C7"; + when x"551" => DATA <= x"44"; + when x"552" => DATA <= x"69"; + when x"553" => DATA <= x"73"; + when x"554" => DATA <= x"63"; + when x"555" => DATA <= x"20"; + when x"556" => DATA <= x"66"; + when x"557" => DATA <= x"61"; + when x"558" => DATA <= x"75"; + when x"559" => DATA <= x"6C"; + when x"55A" => DATA <= x"74"; + when x"55B" => DATA <= x"00"; + when x"55C" => DATA <= x"06"; + when x"55D" => DATA <= x"04"; + when x"55E" => DATA <= x"48"; + when x"55F" => DATA <= x"06"; + when x"560" => DATA <= x"0A"; + when x"561" => DATA <= x"3E"; + when x"562" => DATA <= x"7F"; + when x"563" => DATA <= x"CD"; + when x"564" => DATA <= x"EF"; + when x"565" => DATA <= x"F8"; + when x"566" => DATA <= x"11"; + when x"567" => DATA <= x"0A"; + when x"568" => DATA <= x"00"; + when x"569" => DATA <= x"EB"; + when x"56A" => DATA <= x"19"; + when x"56B" => DATA <= x"7E"; + when x"56C" => DATA <= x"32"; + when x"56D" => DATA <= x"A7"; + when x"56E" => DATA <= x"FC"; + when x"56F" => DATA <= x"EB"; + when x"570" => DATA <= x"FE"; + when x"571" => DATA <= x"12"; + when x"572" => DATA <= x"C8"; + when x"573" => DATA <= x"B7"; + when x"574" => DATA <= x"C8"; + when x"575" => DATA <= x"10"; + when x"576" => DATA <= x"EA"; + when x"577" => DATA <= x"7E"; + when x"578" => DATA <= x"CD"; + when x"579" => DATA <= x"1B"; + when x"57A" => DATA <= x"F6"; + when x"57B" => DATA <= x"41"; + when x"57C" => DATA <= x"10"; + when x"57D" => DATA <= x"E0"; + when x"57E" => DATA <= x"3A"; + when x"57F" => DATA <= x"A7"; + when x"580" => DATA <= x"FC"; + when x"581" => DATA <= x"C9"; + when x"582" => DATA <= x"00"; + when x"583" => DATA <= x"F0"; + when x"584" => DATA <= x"E9"; + when x"585" => DATA <= x"00"; + when x"586" => DATA <= x"00"; + when x"587" => DATA <= x"03"; + when x"588" => DATA <= x"53"; + when x"589" => DATA <= x"00"; + when x"58A" => DATA <= x"00"; + when x"58B" => DATA <= x"28"; + when x"58C" => DATA <= x"FF"; + when x"58D" => DATA <= x"00"; + when x"58E" => DATA <= x"00"; + when x"58F" => DATA <= x"D4"; + when x"590" => DATA <= x"00"; + when x"591" => DATA <= x"00"; + when x"592" => DATA <= x"03"; + when x"593" => DATA <= x"53"; + when x"594" => DATA <= x"00"; + when x"595" => DATA <= x"08"; + when x"596" => DATA <= x"22"; + when x"597" => DATA <= x"FF"; + when x"598" => DATA <= x"00"; + when x"599" => DATA <= x"00"; + when x"59A" => DATA <= x"D6"; + when x"59B" => DATA <= x"00"; + when x"59C" => DATA <= x"00"; + when x"59D" => DATA <= x"03"; + when x"59E" => DATA <= x"53"; + when x"59F" => DATA <= x"01"; + when x"5A0" => DATA <= x"00"; + when x"5A1" => DATA <= x"2A"; + when x"5A2" => DATA <= x"FF"; + when x"5A3" => DATA <= x"00"; + when x"5A4" => DATA <= x"00"; + when x"5A5" => DATA <= x"E0"; + when x"5A6" => DATA <= x"00"; + when x"5A7" => DATA <= x"00"; + when x"5A8" => DATA <= x"03"; + when x"5A9" => DATA <= x"53"; + when x"5AA" => DATA <= x"02"; + when x"5AB" => DATA <= x"00"; + when x"5AC" => DATA <= x"2A"; + when x"5AD" => DATA <= x"FF"; + when x"5AE" => DATA <= x"F3"; + when x"5AF" => DATA <= x"21"; + when x"5B0" => DATA <= x"00"; + when x"5B1" => DATA <= x"25"; + when x"5B2" => DATA <= x"11"; + when x"5B3" => DATA <= x"30"; + when x"5B4" => DATA <= x"FD"; + when x"5B5" => DATA <= x"06"; + when x"5B6" => DATA <= x"AA"; + when x"5B7" => DATA <= x"CD"; + when x"5B8" => DATA <= x"F3"; + when x"5B9" => DATA <= x"F5"; + when x"5BA" => DATA <= x"21"; + when x"5BB" => DATA <= x"00"; + when x"5BC" => DATA <= x"02"; + when x"5BD" => DATA <= x"11"; + when x"5BE" => DATA <= x"DC"; + when x"5BF" => DATA <= x"FD"; + when x"5C0" => DATA <= x"06"; + when x"5C1" => DATA <= x"02"; + when x"5C2" => DATA <= x"CD"; + when x"5C3" => DATA <= x"DD"; + when x"5C4" => DATA <= x"F5"; + when x"5C5" => DATA <= x"21"; + when x"5C6" => DATA <= x"03"; + when x"5C7" => DATA <= x"25"; + when x"5C8" => DATA <= x"11"; + when x"5C9" => DATA <= x"DC"; + when x"5CA" => DATA <= x"FD"; + when x"5CB" => DATA <= x"06"; + when x"5CC" => DATA <= x"02"; + when x"5CD" => DATA <= x"CD"; + when x"5CE" => DATA <= x"F3"; + when x"5CF" => DATA <= x"F5"; + when x"5D0" => DATA <= x"21"; + when x"5D1" => DATA <= x"00"; + when x"5D2" => DATA <= x"02"; + when x"5D3" => DATA <= x"11"; + when x"5D4" => DATA <= x"DA"; + when x"5D5" => DATA <= x"FD"; + when x"5D6" => DATA <= x"06"; + when x"5D7" => DATA <= x"02"; + when x"5D8" => DATA <= x"CD"; + when x"5D9" => DATA <= x"F3"; + when x"5DA" => DATA <= x"F5"; + when x"5DB" => DATA <= x"FB"; + when x"5DC" => DATA <= x"C9"; + when x"5DD" => DATA <= x"22"; + when x"5DE" => DATA <= x"09"; + when x"5DF" => DATA <= x"F6"; + when x"5E0" => DATA <= x"E5"; + when x"5E1" => DATA <= x"21"; + when x"5E2" => DATA <= x"09"; + when x"5E3" => DATA <= x"F6"; + when x"5E4" => DATA <= x"3E"; + when x"5E5" => DATA <= x"05"; + when x"5E6" => DATA <= x"CD"; + when x"5E7" => DATA <= x"F1"; + when x"5E8" => DATA <= x"FF"; + when x"5E9" => DATA <= x"3A"; + when x"5EA" => DATA <= x"0D"; + when x"5EB" => DATA <= x"F6"; + when x"5EC" => DATA <= x"12"; + when x"5ED" => DATA <= x"13"; + when x"5EE" => DATA <= x"E1"; + when x"5EF" => DATA <= x"23"; + when x"5F0" => DATA <= x"10"; + when x"5F1" => DATA <= x"EB"; + when x"5F2" => DATA <= x"C9"; + when x"5F3" => DATA <= x"22"; + when x"5F4" => DATA <= x"09"; + when x"5F5" => DATA <= x"F6"; + when x"5F6" => DATA <= x"1A"; + when x"5F7" => DATA <= x"32"; + when x"5F8" => DATA <= x"0D"; + when x"5F9" => DATA <= x"F6"; + when x"5FA" => DATA <= x"E5"; + when x"5FB" => DATA <= x"21"; + when x"5FC" => DATA <= x"09"; + when x"5FD" => DATA <= x"F6"; + when x"5FE" => DATA <= x"3E"; + when x"5FF" => DATA <= x"06"; + when x"600" => DATA <= x"CD"; + when x"601" => DATA <= x"F1"; + when x"602" => DATA <= x"FF"; + when x"603" => DATA <= x"13"; + when x"604" => DATA <= x"E1"; + when x"605" => DATA <= x"23"; + when x"606" => DATA <= x"10"; + when x"607" => DATA <= x"EB"; + when x"608" => DATA <= x"C9"; + when x"609" => DATA <= x"00"; + when x"60A" => DATA <= x"00"; + when x"60B" => DATA <= x"00"; + when x"60C" => DATA <= x"00"; + when x"60D" => DATA <= x"00"; + when x"60E" => DATA <= x"E3"; + when x"60F" => DATA <= x"F5"; + when x"610" => DATA <= x"7E"; + when x"611" => DATA <= x"CD"; + when x"612" => DATA <= x"E3"; + when x"613" => DATA <= x"FF"; + when x"614" => DATA <= x"23"; + when x"615" => DATA <= x"B7"; + when x"616" => DATA <= x"20"; + when x"617" => DATA <= x"F8"; + when x"618" => DATA <= x"F1"; + when x"619" => DATA <= x"E3"; + when x"61A" => DATA <= x"C9"; + when x"61B" => DATA <= x"F5"; + when x"61C" => DATA <= x"E5"; + when x"61D" => DATA <= x"32"; + when x"61E" => DATA <= x"36"; + when x"61F" => DATA <= x"F6"; + when x"620" => DATA <= x"21"; + when x"621" => DATA <= x"36"; + when x"622" => DATA <= x"F6"; + when x"623" => DATA <= x"3E"; + when x"624" => DATA <= x"7F"; + when x"625" => DATA <= x"ED"; + when x"626" => DATA <= x"73"; + when x"627" => DATA <= x"A5"; + when x"628" => DATA <= x"FC"; + when x"629" => DATA <= x"31"; + when x"62A" => DATA <= x"80"; + when x"62B" => DATA <= x"FF"; + when x"62C" => DATA <= x"CD"; + when x"62D" => DATA <= x"EF"; + when x"62E" => DATA <= x"F8"; + when x"62F" => DATA <= x"ED"; + when x"630" => DATA <= x"7B"; + when x"631" => DATA <= x"A5"; + when x"632" => DATA <= x"FC"; + when x"633" => DATA <= x"E1"; + when x"634" => DATA <= x"F1"; + when x"635" => DATA <= x"C9"; + when x"636" => DATA <= x"00"; + when x"637" => DATA <= x"00"; + when x"638" => DATA <= x"00"; + when x"639" => DATA <= x"00"; + when x"63A" => DATA <= x"00"; + when x"63B" => DATA <= x"01"; + when x"63C" => DATA <= x"69"; + when x"63D" => DATA <= x"00"; + when x"63E" => DATA <= x"00"; + when x"63F" => DATA <= x"E5"; + when x"640" => DATA <= x"21"; + when x"641" => DATA <= x"FF"; + when x"642" => DATA <= x"FF"; + when x"643" => DATA <= x"3E"; + when x"644" => DATA <= x"80"; + when x"645" => DATA <= x"CD"; + when x"646" => DATA <= x"8E"; + when x"647" => DATA <= x"F8"; + when x"648" => DATA <= x"7D"; + when x"649" => DATA <= x"B7"; + when x"64A" => DATA <= x"28"; + when x"64B" => DATA <= x"02"; + when x"64C" => DATA <= x"18"; + when x"64D" => DATA <= x"0C"; + when x"64E" => DATA <= x"3E"; + when x"64F" => DATA <= x"D8"; + when x"650" => DATA <= x"21"; + when x"651" => DATA <= x"00"; + when x"652" => DATA <= x"FF"; + when x"653" => DATA <= x"CD"; + when x"654" => DATA <= x"8E"; + when x"655" => DATA <= x"F8"; + when x"656" => DATA <= x"7D"; + when x"657" => DATA <= x"B7"; + when x"658" => DATA <= x"28"; + when x"659" => DATA <= x"02"; + when x"65A" => DATA <= x"3E"; + when x"65B" => DATA <= x"FF"; + when x"65C" => DATA <= x"E1"; + when x"65D" => DATA <= x"C9"; + when x"65E" => DATA <= x"C5"; + when x"65F" => DATA <= x"D5"; + when x"660" => DATA <= x"E5"; + when x"661" => DATA <= x"21"; + when x"662" => DATA <= x"BC"; + when x"663" => DATA <= x"FF"; + when x"664" => DATA <= x"11"; + when x"665" => DATA <= x"38"; + when x"666" => DATA <= x"00"; + when x"667" => DATA <= x"01"; + when x"668" => DATA <= x"03"; + when x"669" => DATA <= x"00"; + when x"66A" => DATA <= x"ED"; + when x"66B" => DATA <= x"B0"; + when x"66C" => DATA <= x"E1"; + when x"66D" => DATA <= x"D1"; + when x"66E" => DATA <= x"C1"; + when x"66F" => DATA <= x"C9"; + when x"670" => DATA <= x"C9"; + when x"671" => DATA <= x"F5"; + when x"672" => DATA <= x"DB"; + when x"673" => DATA <= x"00"; + when x"674" => DATA <= x"CB"; + when x"675" => DATA <= x"77"; + when x"676" => DATA <= x"28"; + when x"677" => DATA <= x"FA"; + when x"678" => DATA <= x"F1"; + when x"679" => DATA <= x"D3"; + when x"67A" => DATA <= x"01"; + when x"67B" => DATA <= x"C9"; + when x"67C" => DATA <= x"DB"; + when x"67D" => DATA <= x"00"; + when x"67E" => DATA <= x"CB"; + when x"67F" => DATA <= x"7F"; + when x"680" => DATA <= x"20"; + when x"681" => DATA <= x"0B"; + when x"682" => DATA <= x"DB"; + when x"683" => DATA <= x"06"; + when x"684" => DATA <= x"CB"; + when x"685" => DATA <= x"7F"; + when x"686" => DATA <= x"28"; + when x"687" => DATA <= x"F4"; + when x"688" => DATA <= x"CD"; + when x"689" => DATA <= x"0B"; + when x"68A" => DATA <= x"FB"; + when x"68B" => DATA <= x"18"; + when x"68C" => DATA <= x"EF"; + when x"68D" => DATA <= x"DB"; + when x"68E" => DATA <= x"01"; + when x"68F" => DATA <= x"C9"; + when x"690" => DATA <= x"3E"; + when x"691" => DATA <= x"00"; + when x"692" => DATA <= x"CD"; + when x"693" => DATA <= x"A3"; + when x"694" => DATA <= x"F6"; + when x"695" => DATA <= x"CD"; + when x"696" => DATA <= x"9A"; + when x"697" => DATA <= x"F6"; + when x"698" => DATA <= x"CB"; + when x"699" => DATA <= x"27"; + when x"69A" => DATA <= x"DB"; + when x"69B" => DATA <= x"02"; + when x"69C" => DATA <= x"CB"; + when x"69D" => DATA <= x"7F"; + when x"69E" => DATA <= x"28"; + when x"69F" => DATA <= x"FA"; + when x"6A0" => DATA <= x"DB"; + when x"6A1" => DATA <= x"03"; + when x"6A2" => DATA <= x"C9"; + when x"6A3" => DATA <= x"F5"; + when x"6A4" => DATA <= x"DB"; + when x"6A5" => DATA <= x"02"; + when x"6A6" => DATA <= x"CB"; + when x"6A7" => DATA <= x"77"; + when x"6A8" => DATA <= x"28"; + when x"6A9" => DATA <= x"FA"; + when x"6AA" => DATA <= x"F1"; + when x"6AB" => DATA <= x"D3"; + when x"6AC" => DATA <= x"03"; + when x"6AD" => DATA <= x"C9"; + when x"6AE" => DATA <= x"DB"; + when x"6AF" => DATA <= x"06"; + when x"6B0" => DATA <= x"CB"; + when x"6B1" => DATA <= x"7F"; + when x"6B2" => DATA <= x"28"; + when x"6B3" => DATA <= x"FA"; + when x"6B4" => DATA <= x"DB"; + when x"6B5" => DATA <= x"07"; + when x"6B6" => DATA <= x"C9"; + when x"6B7" => DATA <= x"F5"; + when x"6B8" => DATA <= x"C5"; + when x"6B9" => DATA <= x"D5"; + when x"6BA" => DATA <= x"54"; + when x"6BB" => DATA <= x"5D"; + when x"6BC" => DATA <= x"CD"; + when x"6BD" => DATA <= x"7E"; + when x"6BE" => DATA <= x"F8"; + when x"6BF" => DATA <= x"CD"; + when x"6C0" => DATA <= x"77"; + when x"6C1" => DATA <= x"F8"; + when x"6C2" => DATA <= x"FE"; + when x"6C3" => DATA <= x"2A"; + when x"6C4" => DATA <= x"28"; + when x"6C5" => DATA <= x"F6"; + when x"6C6" => DATA <= x"E6"; + when x"6C7" => DATA <= x"DF"; + when x"6C8" => DATA <= x"FE"; + when x"6C9" => DATA <= x"48"; + when x"6CA" => DATA <= x"28"; + when x"6CB" => DATA <= x"20"; + when x"6CC" => DATA <= x"4F"; + when x"6CD" => DATA <= x"3A"; + when x"6CE" => DATA <= x"A3"; + when x"6CF" => DATA <= x"FC"; + when x"6D0" => DATA <= x"B7"; + when x"6D1" => DATA <= x"79"; + when x"6D2" => DATA <= x"C2"; + when x"6D3" => DATA <= x"CC"; + when x"6D4" => DATA <= x"F7"; + when x"6D5" => DATA <= x"FE"; + when x"6D6" => DATA <= x"47"; + when x"6D7" => DATA <= x"CA"; + when x"6D8" => DATA <= x"08"; + when x"6D9" => DATA <= x"F3"; + when x"6DA" => DATA <= x"FE"; + when x"6DB" => DATA <= x"44"; + when x"6DC" => DATA <= x"CA"; + when x"6DD" => DATA <= x"B3"; + when x"6DE" => DATA <= x"F3"; + when x"6DF" => DATA <= x"FE"; + when x"6E0" => DATA <= x"53"; + when x"6E1" => DATA <= x"CA"; + when x"6E2" => DATA <= x"30"; + when x"6E3" => DATA <= x"F3"; + when x"6E4" => DATA <= x"FE"; + when x"6E5" => DATA <= x"43"; + when x"6E6" => DATA <= x"CA"; + when x"6E7" => DATA <= x"8D"; + when x"6E8" => DATA <= x"F4"; + when x"6E9" => DATA <= x"C3"; + when x"6EA" => DATA <= x"CC"; + when x"6EB" => DATA <= x"F7"; + when x"6EC" => DATA <= x"13"; + when x"6ED" => DATA <= x"1A"; + when x"6EE" => DATA <= x"FE"; + when x"6EF" => DATA <= x"2E"; + when x"6F0" => DATA <= x"28"; + when x"6F1" => DATA <= x"2E"; + when x"6F2" => DATA <= x"E6"; + when x"6F3" => DATA <= x"DF"; + when x"6F4" => DATA <= x"FE"; + when x"6F5" => DATA <= x"45"; + when x"6F6" => DATA <= x"C2"; + when x"6F7" => DATA <= x"CC"; + when x"6F8" => DATA <= x"F7"; + when x"6F9" => DATA <= x"13"; + when x"6FA" => DATA <= x"1A"; + when x"6FB" => DATA <= x"FE"; + when x"6FC" => DATA <= x"2E"; + when x"6FD" => DATA <= x"28"; + when x"6FE" => DATA <= x"21"; + when x"6FF" => DATA <= x"E6"; + when x"700" => DATA <= x"DF"; + when x"701" => DATA <= x"FE"; + when x"702" => DATA <= x"4C"; + when x"703" => DATA <= x"C2"; + when x"704" => DATA <= x"CC"; + when x"705" => DATA <= x"F7"; + when x"706" => DATA <= x"13"; + when x"707" => DATA <= x"1A"; + when x"708" => DATA <= x"FE"; + when x"709" => DATA <= x"2E"; + when x"70A" => DATA <= x"28"; + when x"70B" => DATA <= x"14"; + when x"70C" => DATA <= x"E6"; + when x"70D" => DATA <= x"DF"; + when x"70E" => DATA <= x"FE"; + when x"70F" => DATA <= x"50"; + when x"710" => DATA <= x"C2"; + when x"711" => DATA <= x"CC"; + when x"712" => DATA <= x"F7"; + when x"713" => DATA <= x"13"; + when x"714" => DATA <= x"1A"; + when x"715" => DATA <= x"CD"; + when x"716" => DATA <= x"6D"; + when x"717" => DATA <= x"F8"; + when x"718" => DATA <= x"D2"; + when x"719" => DATA <= x"CC"; + when x"71A" => DATA <= x"F7"; + when x"71B" => DATA <= x"CD"; + when x"71C" => DATA <= x"77"; + when x"71D" => DATA <= x"F8"; + when x"71E" => DATA <= x"18"; + when x"71F" => DATA <= x"03"; + when x"720" => DATA <= x"CD"; + when x"721" => DATA <= x"76"; + when x"722" => DATA <= x"F8"; + when x"723" => DATA <= x"CD"; + when x"724" => DATA <= x"B3"; + when x"725" => DATA <= x"FF"; + when x"726" => DATA <= x"0D"; + when x"727" => DATA <= x"5A"; + when x"728" => DATA <= x"38"; + when x"729" => DATA <= x"30"; + when x"72A" => DATA <= x"20"; + when x"72B" => DATA <= x"54"; + when x"72C" => DATA <= x"55"; + when x"72D" => DATA <= x"42"; + when x"72E" => DATA <= x"45"; + when x"72F" => DATA <= x"20"; + when x"730" => DATA <= x"31"; + when x"731" => DATA <= x"2E"; + when x"732" => DATA <= x"32"; + when x"733" => DATA <= x"31"; + when x"734" => DATA <= x"0D"; + when x"735" => DATA <= x"00"; + when x"736" => DATA <= x"4F"; + when x"737" => DATA <= x"3A"; + when x"738" => DATA <= x"A3"; + when x"739" => DATA <= x"FC"; + when x"73A" => DATA <= x"B7"; + when x"73B" => DATA <= x"79"; + when x"73C" => DATA <= x"C2"; + when x"73D" => DATA <= x"CC"; + when x"73E" => DATA <= x"F7"; + when x"73F" => DATA <= x"FE"; + when x"740" => DATA <= x"0D"; + when x"741" => DATA <= x"28"; + when x"742" => DATA <= x"29"; + when x"743" => DATA <= x"E6"; + when x"744" => DATA <= x"DF"; + when x"745" => DATA <= x"FE"; + when x"746" => DATA <= x"4D"; + when x"747" => DATA <= x"28"; + when x"748" => DATA <= x"09"; + when x"749" => DATA <= x"FE"; + when x"74A" => DATA <= x"0D"; + when x"74B" => DATA <= x"CA"; + when x"74C" => DATA <= x"CC"; + when x"74D" => DATA <= x"F7"; + when x"74E" => DATA <= x"13"; + when x"74F" => DATA <= x"1A"; + when x"750" => DATA <= x"18"; + when x"751" => DATA <= x"F1"; + when x"752" => DATA <= x"13"; + when x"753" => DATA <= x"1A"; + when x"754" => DATA <= x"E6"; + when x"755" => DATA <= x"DF"; + when x"756" => DATA <= x"FE"; + when x"757" => DATA <= x"4F"; + when x"758" => DATA <= x"20"; + when x"759" => DATA <= x"F4"; + when x"75A" => DATA <= x"13"; + when x"75B" => DATA <= x"1A"; + when x"75C" => DATA <= x"E6"; + when x"75D" => DATA <= x"DF"; + when x"75E" => DATA <= x"FE"; + when x"75F" => DATA <= x"4E"; + when x"760" => DATA <= x"20"; + when x"761" => DATA <= x"EC"; + when x"762" => DATA <= x"13"; + when x"763" => DATA <= x"1A"; + when x"764" => DATA <= x"CD"; + when x"765" => DATA <= x"6D"; + when x"766" => DATA <= x"F8"; + when x"767" => DATA <= x"D2"; + when x"768" => DATA <= x"4E"; + when x"769" => DATA <= x"F7"; + when x"76A" => DATA <= x"18"; + when x"76B" => DATA <= x"0C"; + when x"76C" => DATA <= x"CD"; + when x"76D" => DATA <= x"0E"; + when x"76E" => DATA <= x"F6"; + when x"76F" => DATA <= x"20"; + when x"770" => DATA <= x"20"; + when x"771" => DATA <= x"4D"; + when x"772" => DATA <= x"4F"; + when x"773" => DATA <= x"4E"; + when x"774" => DATA <= x"0D"; + when x"775" => DATA <= x"00"; + when x"776" => DATA <= x"18"; + when x"777" => DATA <= x"54"; + when x"778" => DATA <= x"CD"; + when x"779" => DATA <= x"0E"; + when x"77A" => DATA <= x"F6"; + when x"77B" => DATA <= x"20"; + when x"77C" => DATA <= x"20"; + when x"77D" => DATA <= x"43"; + when x"77E" => DATA <= x"50"; + when x"77F" => DATA <= x"4D"; + when x"780" => DATA <= x"0D"; + when x"781" => DATA <= x"20"; + when x"782" => DATA <= x"20"; + when x"783" => DATA <= x"44"; + when x"784" => DATA <= x"75"; + when x"785" => DATA <= x"6D"; + when x"786" => DATA <= x"70"; + when x"787" => DATA <= x"20"; + when x"788" => DATA <= x"3C"; + when x"789" => DATA <= x"73"; + when x"78A" => DATA <= x"74"; + when x"78B" => DATA <= x"61"; + when x"78C" => DATA <= x"72"; + when x"78D" => DATA <= x"74"; + when x"78E" => DATA <= x"20"; + when x"78F" => DATA <= x"61"; + when x"790" => DATA <= x"64"; + when x"791" => DATA <= x"64"; + when x"792" => DATA <= x"72"; + when x"793" => DATA <= x"65"; + when x"794" => DATA <= x"73"; + when x"795" => DATA <= x"73"; + when x"796" => DATA <= x"3E"; + when x"797" => DATA <= x"20"; + when x"798" => DATA <= x"3C"; + when x"799" => DATA <= x"65"; + when x"79A" => DATA <= x"6E"; + when x"79B" => DATA <= x"64"; + when x"79C" => DATA <= x"20"; + when x"79D" => DATA <= x"61"; + when x"79E" => DATA <= x"64"; + when x"79F" => DATA <= x"64"; + when x"7A0" => DATA <= x"72"; + when x"7A1" => DATA <= x"65"; + when x"7A2" => DATA <= x"73"; + when x"7A3" => DATA <= x"73"; + when x"7A4" => DATA <= x"3E"; + when x"7A5" => DATA <= x"0D"; + when x"7A6" => DATA <= x"20"; + when x"7A7" => DATA <= x"20"; + when x"7A8" => DATA <= x"47"; + when x"7A9" => DATA <= x"4F"; + when x"7AA" => DATA <= x"20"; + when x"7AB" => DATA <= x"3C"; + when x"7AC" => DATA <= x"61"; + when x"7AD" => DATA <= x"64"; + when x"7AE" => DATA <= x"64"; + when x"7AF" => DATA <= x"72"; + when x"7B0" => DATA <= x"65"; + when x"7B1" => DATA <= x"73"; + when x"7B2" => DATA <= x"73"; + when x"7B3" => DATA <= x"3E"; + when x"7B4" => DATA <= x"0D"; + when x"7B5" => DATA <= x"20"; + when x"7B6" => DATA <= x"20"; + when x"7B7" => DATA <= x"53"; + when x"7B8" => DATA <= x"65"; + when x"7B9" => DATA <= x"74"; + when x"7BA" => DATA <= x"20"; + when x"7BB" => DATA <= x"3C"; + when x"7BC" => DATA <= x"73"; + when x"7BD" => DATA <= x"74"; + when x"7BE" => DATA <= x"61"; + when x"7BF" => DATA <= x"72"; + when x"7C0" => DATA <= x"74"; + when x"7C1" => DATA <= x"20"; + when x"7C2" => DATA <= x"61"; + when x"7C3" => DATA <= x"64"; + when x"7C4" => DATA <= x"64"; + when x"7C5" => DATA <= x"72"; + when x"7C6" => DATA <= x"65"; + when x"7C7" => DATA <= x"73"; + when x"7C8" => DATA <= x"73"; + when x"7C9" => DATA <= x"3E"; + when x"7CA" => DATA <= x"0D"; + when x"7CB" => DATA <= x"00"; + when x"7CC" => DATA <= x"3E"; + when x"7CD" => DATA <= x"02"; + when x"7CE" => DATA <= x"CD"; + when x"7CF" => DATA <= x"A3"; + when x"7D0" => DATA <= x"F6"; + when x"7D1" => DATA <= x"CD"; + when x"7D2" => DATA <= x"84"; + when x"7D3" => DATA <= x"F8"; + when x"7D4" => DATA <= x"CD"; + when x"7D5" => DATA <= x"9A"; + when x"7D6" => DATA <= x"F6"; + when x"7D7" => DATA <= x"FE"; + when x"7D8" => DATA <= x"80"; + when x"7D9" => DATA <= x"28"; + when x"7DA" => DATA <= x"04"; + when x"7DB" => DATA <= x"D1"; + when x"7DC" => DATA <= x"C1"; + when x"7DD" => DATA <= x"F1"; + when x"7DE" => DATA <= x"C9"; + when x"7DF" => DATA <= x"3E"; + when x"7E0" => DATA <= x"01"; + when x"7E1" => DATA <= x"32"; + when x"7E2" => DATA <= x"AF"; + when x"7E3" => DATA <= x"FC"; + when x"7E4" => DATA <= x"CD"; + when x"7E5" => DATA <= x"EB"; + when x"7E6" => DATA <= x"F7"; + when x"7E7" => DATA <= x"D1"; + when x"7E8" => DATA <= x"C1"; + when x"7E9" => DATA <= x"F1"; + when x"7EA" => DATA <= x"C9"; + when x"7EB" => DATA <= x"2A"; + when x"7EC" => DATA <= x"A8"; + when x"7ED" => DATA <= x"FC"; + when x"7EE" => DATA <= x"11"; + when x"7EF" => DATA <= x"07"; + when x"7F0" => DATA <= x"00"; + when x"7F1" => DATA <= x"19"; + when x"7F2" => DATA <= x"E5"; + when x"7F3" => DATA <= x"7E"; + when x"7F4" => DATA <= x"2A"; + when x"7F5" => DATA <= x"A8"; + when x"7F6" => DATA <= x"FC"; + when x"7F7" => DATA <= x"5F"; + when x"7F8" => DATA <= x"19"; + when x"7F9" => DATA <= x"22"; + when x"7FA" => DATA <= x"82"; + when x"7FB" => DATA <= x"FF"; + when x"7FC" => DATA <= x"7E"; + when x"7FD" => DATA <= x"11"; + when x"7FE" => DATA <= x"22"; + when x"7FF" => DATA <= x"FF"; + when x"800" => DATA <= x"06"; + when x"801" => DATA <= x"04"; + when x"802" => DATA <= x"1A"; + when x"803" => DATA <= x"BE"; + when x"804" => DATA <= x"20"; + when x"805" => DATA <= x"20"; + when x"806" => DATA <= x"23"; + when x"807" => DATA <= x"13"; + when x"808" => DATA <= x"10"; + when x"809" => DATA <= x"F8"; + when x"80A" => DATA <= x"E1"; + when x"80B" => DATA <= x"2B"; + when x"80C" => DATA <= x"3A"; + when x"80D" => DATA <= x"AF"; + when x"80E" => DATA <= x"FC"; + when x"80F" => DATA <= x"B7"; + when x"810" => DATA <= x"20"; + when x"811" => DATA <= x"17"; + when x"812" => DATA <= x"7E"; + when x"813" => DATA <= x"E6"; + when x"814" => DATA <= x"4F"; + when x"815" => DATA <= x"FE"; + when x"816" => DATA <= x"40"; + when x"817" => DATA <= x"38"; + when x"818" => DATA <= x"09"; + when x"819" => DATA <= x"FE"; + when x"81A" => DATA <= x"48"; + when x"81B" => DATA <= x"20"; + when x"81C" => DATA <= x"05"; + when x"81D" => DATA <= x"BF"; + when x"81E" => DATA <= x"2A"; + when x"81F" => DATA <= x"A8"; + when x"820" => DATA <= x"FC"; + when x"821" => DATA <= x"E9"; + when x"822" => DATA <= x"BF"; + when x"823" => DATA <= x"C3"; + when x"824" => DATA <= x"A9"; + when x"825" => DATA <= x"F4"; + when x"826" => DATA <= x"E1"; + when x"827" => DATA <= x"18"; + when x"828" => DATA <= x"F4"; + when x"829" => DATA <= x"AF"; + when x"82A" => DATA <= x"32"; + when x"82B" => DATA <= x"AF"; + when x"82C" => DATA <= x"FC"; + when x"82D" => DATA <= x"7E"; + when x"82E" => DATA <= x"E6"; + when x"82F" => DATA <= x"4F"; + when x"830" => DATA <= x"FE"; + when x"831" => DATA <= x"40"; + when x"832" => DATA <= x"38"; + when x"833" => DATA <= x"09"; + when x"834" => DATA <= x"FE"; + when x"835" => DATA <= x"48"; + when x"836" => DATA <= x"20"; + when x"837" => DATA <= x"1E"; + when x"838" => DATA <= x"3E"; + when x"839" => DATA <= x"01"; + when x"83A" => DATA <= x"18"; + when x"83B" => DATA <= x"E1"; + when x"83C" => DATA <= x"00"; + when x"83D" => DATA <= x"FF"; + when x"83E" => DATA <= x"F9"; + when x"83F" => DATA <= x"54"; + when x"840" => DATA <= x"68"; + when x"841" => DATA <= x"69"; + when x"842" => DATA <= x"73"; + when x"843" => DATA <= x"20"; + when x"844" => DATA <= x"69"; + when x"845" => DATA <= x"73"; + when x"846" => DATA <= x"20"; + when x"847" => DATA <= x"6E"; + when x"848" => DATA <= x"6F"; + when x"849" => DATA <= x"74"; + when x"84A" => DATA <= x"20"; + when x"84B" => DATA <= x"61"; + when x"84C" => DATA <= x"20"; + when x"84D" => DATA <= x"6C"; + when x"84E" => DATA <= x"61"; + when x"84F" => DATA <= x"6E"; + when x"850" => DATA <= x"67"; + when x"851" => DATA <= x"75"; + when x"852" => DATA <= x"61"; + when x"853" => DATA <= x"67"; + when x"854" => DATA <= x"65"; + when x"855" => DATA <= x"00"; + when x"856" => DATA <= x"FF"; + when x"857" => DATA <= x"F9"; + when x"858" => DATA <= x"54"; + when x"859" => DATA <= x"68"; + when x"85A" => DATA <= x"69"; + when x"85B" => DATA <= x"73"; + when x"85C" => DATA <= x"20"; + when x"85D" => DATA <= x"69"; + when x"85E" => DATA <= x"73"; + when x"85F" => DATA <= x"20"; + when x"860" => DATA <= x"6E"; + when x"861" => DATA <= x"6F"; + when x"862" => DATA <= x"74"; + when x"863" => DATA <= x"20"; + when x"864" => DATA <= x"5A"; + when x"865" => DATA <= x"38"; + when x"866" => DATA <= x"30"; + when x"867" => DATA <= x"20"; + when x"868" => DATA <= x"63"; + when x"869" => DATA <= x"6F"; + when x"86A" => DATA <= x"64"; + when x"86B" => DATA <= x"65"; + when x"86C" => DATA <= x"00"; + when x"86D" => DATA <= x"E6"; + when x"86E" => DATA <= x"DF"; + when x"86F" => DATA <= x"FE"; + when x"870" => DATA <= x"41"; + when x"871" => DATA <= x"D8"; + when x"872" => DATA <= x"FE"; + when x"873" => DATA <= x"5B"; + when x"874" => DATA <= x"3F"; + when x"875" => DATA <= x"C9"; + when x"876" => DATA <= x"13"; + when x"877" => DATA <= x"1A"; + when x"878" => DATA <= x"FE"; + when x"879" => DATA <= x"20"; + when x"87A" => DATA <= x"28"; + when x"87B" => DATA <= x"FA"; + when x"87C" => DATA <= x"C9"; + when x"87D" => DATA <= x"13"; + when x"87E" => DATA <= x"1A"; + when x"87F" => DATA <= x"FE"; + when x"880" => DATA <= x"2A"; + when x"881" => DATA <= x"28"; + when x"882" => DATA <= x"FA"; + when x"883" => DATA <= x"C9"; + when x"884" => DATA <= x"7E"; + when x"885" => DATA <= x"CD"; + when x"886" => DATA <= x"A3"; + when x"887" => DATA <= x"F6"; + when x"888" => DATA <= x"23"; + when x"889" => DATA <= x"FE"; + when x"88A" => DATA <= x"0D"; + when x"88B" => DATA <= x"20"; + when x"88C" => DATA <= x"F7"; + when x"88D" => DATA <= x"C9"; + when x"88E" => DATA <= x"FE"; + when x"88F" => DATA <= x"80"; + when x"890" => DATA <= x"30"; + when x"891" => DATA <= x"15"; + when x"892" => DATA <= x"F5"; + when x"893" => DATA <= x"3E"; + when x"894" => DATA <= x"04"; + when x"895" => DATA <= x"CD"; + when x"896" => DATA <= x"A3"; + when x"897" => DATA <= x"F6"; + when x"898" => DATA <= x"7D"; + when x"899" => DATA <= x"CD"; + when x"89A" => DATA <= x"A3"; + when x"89B" => DATA <= x"F6"; + when x"89C" => DATA <= x"F1"; + when x"89D" => DATA <= x"F5"; + when x"89E" => DATA <= x"CD"; + when x"89F" => DATA <= x"A3"; + when x"8A0" => DATA <= x"F6"; + when x"8A1" => DATA <= x"CD"; + when x"8A2" => DATA <= x"9A"; + when x"8A3" => DATA <= x"F6"; + when x"8A4" => DATA <= x"6F"; + when x"8A5" => DATA <= x"F1"; + when x"8A6" => DATA <= x"C9"; + when x"8A7" => DATA <= x"FE"; + when x"8A8" => DATA <= x"82"; + when x"8A9" => DATA <= x"28"; + when x"8AA" => DATA <= x"31"; + when x"8AB" => DATA <= x"FE"; + when x"8AC" => DATA <= x"83"; + when x"8AD" => DATA <= x"28"; + when x"8AE" => DATA <= x"31"; + when x"8AF" => DATA <= x"FE"; + when x"8B0" => DATA <= x"84"; + when x"8B1" => DATA <= x"28"; + when x"8B2" => DATA <= x"31"; + when x"8B3" => DATA <= x"F5"; + when x"8B4" => DATA <= x"3E"; + when x"8B5" => DATA <= x"06"; + when x"8B6" => DATA <= x"CD"; + when x"8B7" => DATA <= x"A3"; + when x"8B8" => DATA <= x"F6"; + when x"8B9" => DATA <= x"7D"; + when x"8BA" => DATA <= x"CD"; + when x"8BB" => DATA <= x"A3"; + when x"8BC" => DATA <= x"F6"; + when x"8BD" => DATA <= x"7C"; + when x"8BE" => DATA <= x"CD"; + when x"8BF" => DATA <= x"A3"; + when x"8C0" => DATA <= x"F6"; + when x"8C1" => DATA <= x"F1"; + when x"8C2" => DATA <= x"F5"; + when x"8C3" => DATA <= x"CD"; + when x"8C4" => DATA <= x"A3"; + when x"8C5" => DATA <= x"F6"; + when x"8C6" => DATA <= x"FE"; + when x"8C7" => DATA <= x"9D"; + when x"8C8" => DATA <= x"28"; + when x"8C9" => DATA <= x"10"; + when x"8CA" => DATA <= x"CD"; + when x"8CB" => DATA <= x"9A"; + when x"8CC" => DATA <= x"F6"; + when x"8CD" => DATA <= x"6F"; + when x"8CE" => DATA <= x"F1"; + when x"8CF" => DATA <= x"CB"; + when x"8D0" => DATA <= x"25"; + when x"8D1" => DATA <= x"F5"; + when x"8D2" => DATA <= x"CD"; + when x"8D3" => DATA <= x"9A"; + when x"8D4" => DATA <= x"F6"; + when x"8D5" => DATA <= x"67"; + when x"8D6" => DATA <= x"CD"; + when x"8D7" => DATA <= x"9A"; + when x"8D8" => DATA <= x"F6"; + when x"8D9" => DATA <= x"6F"; + when x"8DA" => DATA <= x"F1"; + when x"8DB" => DATA <= x"C9"; + when x"8DC" => DATA <= x"21"; + when x"8DD" => DATA <= x"00"; + when x"8DE" => DATA <= x"00"; + when x"8DF" => DATA <= x"C9"; + when x"8E0" => DATA <= x"21"; + when x"8E1" => DATA <= x"03"; + when x"8E2" => DATA <= x"3B"; + when x"8E3" => DATA <= x"C9"; + when x"8E4" => DATA <= x"21"; + when x"8E5" => DATA <= x"00"; + when x"8E6" => DATA <= x"DC"; + when x"8E7" => DATA <= x"C9"; + when x"8E8" => DATA <= x"F5"; + when x"8E9" => DATA <= x"3E"; + when x"8EA" => DATA <= x"01"; + when x"8EB" => DATA <= x"32"; + when x"8EC" => DATA <= x"A4"; + when x"8ED" => DATA <= x"FC"; + when x"8EE" => DATA <= x"F1"; + when x"8EF" => DATA <= x"B7"; + when x"8F0" => DATA <= x"28"; + when x"8F1" => DATA <= x"6B"; + when x"8F2" => DATA <= x"C5"; + when x"8F3" => DATA <= x"E5"; + when x"8F4" => DATA <= x"DD"; + when x"8F5" => DATA <= x"E5"; + when x"8F6" => DATA <= x"F5"; + when x"8F7" => DATA <= x"3E"; + when x"8F8" => DATA <= x"08"; + when x"8F9" => DATA <= x"CD"; + when x"8FA" => DATA <= x"A3"; + when x"8FB" => DATA <= x"F6"; + when x"8FC" => DATA <= x"F1"; + when x"8FD" => DATA <= x"F5"; + when x"8FE" => DATA <= x"CD"; + when x"8FF" => DATA <= x"A3"; + when x"900" => DATA <= x"F6"; + when x"901" => DATA <= x"06"; + when x"902" => DATA <= x"00"; + when x"903" => DATA <= x"4F"; + when x"904" => DATA <= x"FE"; + when x"905" => DATA <= x"80"; + when x"906" => DATA <= x"38"; + when x"907" => DATA <= x"06"; + when x"908" => DATA <= x"46"; + when x"909" => DATA <= x"23"; + when x"90A" => DATA <= x"4E"; + when x"90B" => DATA <= x"2B"; + when x"90C" => DATA <= x"18"; + when x"90D" => DATA <= x"15"; + when x"90E" => DATA <= x"FE"; + when x"90F" => DATA <= x"15"; + when x"910" => DATA <= x"38"; + when x"911" => DATA <= x"05"; + when x"912" => DATA <= x"01"; + when x"913" => DATA <= x"10"; + when x"914" => DATA <= x"10"; + when x"915" => DATA <= x"18"; + when x"916" => DATA <= x"0C"; + when x"917" => DATA <= x"DD"; + when x"918" => DATA <= x"21"; + when x"919" => DATA <= x"75"; + when x"91A" => DATA <= x"FC"; + when x"91B" => DATA <= x"DD"; + when x"91C" => DATA <= x"09"; + when x"91D" => DATA <= x"DD"; + when x"91E" => DATA <= x"46"; + when x"91F" => DATA <= x"FF"; + when x"920" => DATA <= x"DD"; + when x"921" => DATA <= x"4E"; + when x"922" => DATA <= x"13"; + when x"923" => DATA <= x"E5"; + when x"924" => DATA <= x"C5"; + when x"925" => DATA <= x"48"; + when x"926" => DATA <= x"06"; + when x"927" => DATA <= x"00"; + when x"928" => DATA <= x"09"; + when x"929" => DATA <= x"C1"; + when x"92A" => DATA <= x"78"; + when x"92B" => DATA <= x"CD"; + when x"92C" => DATA <= x"A3"; + when x"92D" => DATA <= x"F6"; + when x"92E" => DATA <= x"B7"; + when x"92F" => DATA <= x"28"; + when x"930" => DATA <= x"07"; + when x"931" => DATA <= x"2B"; + when x"932" => DATA <= x"7E"; + when x"933" => DATA <= x"CD"; + when x"934" => DATA <= x"A3"; + when x"935" => DATA <= x"F6"; + when x"936" => DATA <= x"10"; + when x"937" => DATA <= x"F9"; + when x"938" => DATA <= x"79"; + when x"939" => DATA <= x"CD"; + when x"93A" => DATA <= x"A3"; + when x"93B" => DATA <= x"F6"; + when x"93C" => DATA <= x"E1"; + when x"93D" => DATA <= x"F5"; + when x"93E" => DATA <= x"3A"; + when x"93F" => DATA <= x"A4"; + when x"940" => DATA <= x"FC"; + when x"941" => DATA <= x"B7"; + when x"942" => DATA <= x"28"; + when x"943" => DATA <= x"06"; + when x"944" => DATA <= x"62"; + when x"945" => DATA <= x"6B"; + when x"946" => DATA <= x"AF"; + when x"947" => DATA <= x"32"; + when x"948" => DATA <= x"A4"; + when x"949" => DATA <= x"FC"; + when x"94A" => DATA <= x"F1"; + when x"94B" => DATA <= x"B7"; + when x"94C" => DATA <= x"28"; + when x"94D" => DATA <= x"09"; + when x"94E" => DATA <= x"09"; + when x"94F" => DATA <= x"41"; + when x"950" => DATA <= x"2B"; + when x"951" => DATA <= x"CD"; + when x"952" => DATA <= x"9A"; + when x"953" => DATA <= x"F6"; + when x"954" => DATA <= x"77"; + when x"955" => DATA <= x"10"; + when x"956" => DATA <= x"F9"; + when x"957" => DATA <= x"F1"; + when x"958" => DATA <= x"DD"; + when x"959" => DATA <= x"E1"; + when x"95A" => DATA <= x"E1"; + when x"95B" => DATA <= x"C1"; + when x"95C" => DATA <= x"C9"; + when x"95D" => DATA <= x"C5"; + when x"95E" => DATA <= x"F5"; + when x"95F" => DATA <= x"3E"; + when x"960" => DATA <= x"0A"; + when x"961" => DATA <= x"CD"; + when x"962" => DATA <= x"A3"; + when x"963" => DATA <= x"F6"; + when x"964" => DATA <= x"23"; + when x"965" => DATA <= x"23"; + when x"966" => DATA <= x"23"; + when x"967" => DATA <= x"23"; + when x"968" => DATA <= x"06"; + when x"969" => DATA <= x"03"; + when x"96A" => DATA <= x"7E"; + when x"96B" => DATA <= x"CD"; + when x"96C" => DATA <= x"A3"; + when x"96D" => DATA <= x"F6"; + when x"96E" => DATA <= x"2B"; + when x"96F" => DATA <= x"10"; + when x"970" => DATA <= x"F9"; + when x"971" => DATA <= x"3E"; + when x"972" => DATA <= x"07"; + when x"973" => DATA <= x"CD"; + when x"974" => DATA <= x"A3"; + when x"975" => DATA <= x"F6"; + when x"976" => DATA <= x"97"; + when x"977" => DATA <= x"CD"; + when x"978" => DATA <= x"A3"; + when x"979" => DATA <= x"F6"; + when x"97A" => DATA <= x"CD"; + when x"97B" => DATA <= x"9A"; + when x"97C" => DATA <= x"F6"; + when x"97D" => DATA <= x"07"; + when x"97E" => DATA <= x"38"; + when x"97F" => DATA <= x"18"; + when x"980" => DATA <= x"7E"; + when x"981" => DATA <= x"2B"; + when x"982" => DATA <= x"6E"; + when x"983" => DATA <= x"67"; + when x"984" => DATA <= x"06"; + when x"985" => DATA <= x"FF"; + when x"986" => DATA <= x"CD"; + when x"987" => DATA <= x"9A"; + when x"988" => DATA <= x"F6"; + when x"989" => DATA <= x"77"; + when x"98A" => DATA <= x"23"; + when x"98B" => DATA <= x"04"; + when x"98C" => DATA <= x"FE"; + when x"98D" => DATA <= x"0D"; + when x"98E" => DATA <= x"20"; + when x"98F" => DATA <= x"F6"; + when x"990" => DATA <= x"2E"; + when x"991" => DATA <= x"00"; + when x"992" => DATA <= x"60"; + when x"993" => DATA <= x"F1"; + when x"994" => DATA <= x"C1"; + when x"995" => DATA <= x"37"; + when x"996" => DATA <= x"3F"; + when x"997" => DATA <= x"C9"; + when x"998" => DATA <= x"21"; + when x"999" => DATA <= x"FF"; + when x"99A" => DATA <= x"00"; + when x"99B" => DATA <= x"F1"; + when x"99C" => DATA <= x"C1"; + when x"99D" => DATA <= x"37"; + when x"99E" => DATA <= x"C9"; + when x"99F" => DATA <= x"E5"; + when x"9A0" => DATA <= x"D5"; + when x"9A1" => DATA <= x"C5"; + when x"9A2" => DATA <= x"F5"; + when x"9A3" => DATA <= x"3E"; + when x"9A4" => DATA <= x"0C"; + when x"9A5" => DATA <= x"CD"; + when x"9A6" => DATA <= x"A3"; + when x"9A7" => DATA <= x"F6"; + when x"9A8" => DATA <= x"7B"; + when x"9A9" => DATA <= x"CD"; + when x"9AA" => DATA <= x"A3"; + when x"9AB" => DATA <= x"F6"; + when x"9AC" => DATA <= x"23"; + when x"9AD" => DATA <= x"23"; + when x"9AE" => DATA <= x"23"; + when x"9AF" => DATA <= x"06"; + when x"9B0" => DATA <= x"04"; + when x"9B1" => DATA <= x"7E"; + when x"9B2" => DATA <= x"CD"; + when x"9B3" => DATA <= x"A3"; + when x"9B4" => DATA <= x"F6"; + when x"9B5" => DATA <= x"2B"; + when x"9B6" => DATA <= x"10"; + when x"9B7" => DATA <= x"F9"; + when x"9B8" => DATA <= x"23"; + when x"9B9" => DATA <= x"F1"; + when x"9BA" => DATA <= x"CD"; + when x"9BB" => DATA <= x"A3"; + when x"9BC" => DATA <= x"F6"; + when x"9BD" => DATA <= x"CD"; + when x"9BE" => DATA <= x"9A"; + when x"9BF" => DATA <= x"F6"; + when x"9C0" => DATA <= x"F5"; + when x"9C1" => DATA <= x"23"; + when x"9C2" => DATA <= x"23"; + when x"9C3" => DATA <= x"23"; + when x"9C4" => DATA <= x"06"; + when x"9C5" => DATA <= x"04"; + when x"9C6" => DATA <= x"CD"; + when x"9C7" => DATA <= x"9A"; + when x"9C8" => DATA <= x"F6"; + when x"9C9" => DATA <= x"77"; + when x"9CA" => DATA <= x"2B"; + when x"9CB" => DATA <= x"10"; + when x"9CC" => DATA <= x"F9"; + when x"9CD" => DATA <= x"F1"; + when x"9CE" => DATA <= x"C1"; + when x"9CF" => DATA <= x"D1"; + when x"9D0" => DATA <= x"E1"; + when x"9D1" => DATA <= x"C9"; + when x"9D2" => DATA <= x"F5"; + when x"9D3" => DATA <= x"3E"; + when x"9D4" => DATA <= x"12"; + when x"9D5" => DATA <= x"CD"; + when x"9D6" => DATA <= x"A3"; + when x"9D7" => DATA <= x"F6"; + when x"9D8" => DATA <= x"F1"; + when x"9D9" => DATA <= x"CD"; + when x"9DA" => DATA <= x"A3"; + when x"9DB" => DATA <= x"F6"; + when x"9DC" => DATA <= x"FE"; + when x"9DD" => DATA <= x"00"; + when x"9DE" => DATA <= x"20"; + when x"9DF" => DATA <= x"0A"; + when x"9E0" => DATA <= x"F5"; + when x"9E1" => DATA <= x"7C"; + when x"9E2" => DATA <= x"CD"; + when x"9E3" => DATA <= x"A3"; + when x"9E4" => DATA <= x"F6"; + when x"9E5" => DATA <= x"CD"; + when x"9E6" => DATA <= x"9A"; + when x"9E7" => DATA <= x"F6"; + when x"9E8" => DATA <= x"F1"; + when x"9E9" => DATA <= x"C9"; + when x"9EA" => DATA <= x"CD"; + when x"9EB" => DATA <= x"84"; + when x"9EC" => DATA <= x"F8"; + when x"9ED" => DATA <= x"C3"; + when x"9EE" => DATA <= x"9A"; + when x"9EF" => DATA <= x"F6"; + when x"9F0" => DATA <= x"3E"; + when x"9F1" => DATA <= x"0E"; + when x"9F2" => DATA <= x"CD"; + when x"9F3" => DATA <= x"A3"; + when x"9F4" => DATA <= x"F6"; + when x"9F5" => DATA <= x"7C"; + when x"9F6" => DATA <= x"CD"; + when x"9F7" => DATA <= x"A3"; + when x"9F8" => DATA <= x"F6"; + when x"9F9" => DATA <= x"C3"; + when x"9FA" => DATA <= x"95"; + when x"9FB" => DATA <= x"F6"; + when x"9FC" => DATA <= x"F5"; + when x"9FD" => DATA <= x"3E"; + when x"9FE" => DATA <= x"10"; + when x"9FF" => DATA <= x"CD"; + when x"A00" => DATA <= x"A3"; + when x"A01" => DATA <= x"F6"; + when x"A02" => DATA <= x"7C"; + when x"A03" => DATA <= x"CD"; + when x"A04" => DATA <= x"A3"; + when x"A05" => DATA <= x"F6"; + when x"A06" => DATA <= x"F1"; + when x"A07" => DATA <= x"CD"; + when x"A08" => DATA <= x"A3"; + when x"A09" => DATA <= x"F6"; + when x"A0A" => DATA <= x"F5"; + when x"A0B" => DATA <= x"CD"; + when x"A0C" => DATA <= x"9A"; + when x"A0D" => DATA <= x"F6"; + when x"A0E" => DATA <= x"F1"; + when x"A0F" => DATA <= x"C9"; + when x"A10" => DATA <= x"C5"; + when x"A11" => DATA <= x"F5"; + when x"A12" => DATA <= x"22"; + when x"A13" => DATA <= x"AC"; + when x"A14" => DATA <= x"FC"; + when x"A15" => DATA <= x"3E"; + when x"A16" => DATA <= x"14"; + when x"A17" => DATA <= x"CD"; + when x"A18" => DATA <= x"A3"; + when x"A19" => DATA <= x"F6"; + when x"A1A" => DATA <= x"01"; + when x"A1B" => DATA <= x"11"; + when x"A1C" => DATA <= x"00"; + when x"A1D" => DATA <= x"09"; + when x"A1E" => DATA <= x"06"; + when x"A1F" => DATA <= x"10"; + when x"A20" => DATA <= x"7E"; + when x"A21" => DATA <= x"CD"; + when x"A22" => DATA <= x"A3"; + when x"A23" => DATA <= x"F6"; + when x"A24" => DATA <= x"2B"; + when x"A25" => DATA <= x"10"; + when x"A26" => DATA <= x"F9"; + when x"A27" => DATA <= x"7E"; + when x"A28" => DATA <= x"2B"; + when x"A29" => DATA <= x"6E"; + when x"A2A" => DATA <= x"67"; + when x"A2B" => DATA <= x"CD"; + when x"A2C" => DATA <= x"84"; + when x"A2D" => DATA <= x"F8"; + when x"A2E" => DATA <= x"F1"; + when x"A2F" => DATA <= x"CD"; + when x"A30" => DATA <= x"A3"; + when x"A31" => DATA <= x"F6"; + when x"A32" => DATA <= x"CD"; + when x"A33" => DATA <= x"9A"; + when x"A34" => DATA <= x"F6"; + when x"A35" => DATA <= x"E6"; + when x"A36" => DATA <= x"FF"; + when x"A37" => DATA <= x"F5"; + when x"A38" => DATA <= x"2A"; + when x"A39" => DATA <= x"AC"; + when x"A3A" => DATA <= x"FC"; + when x"A3B" => DATA <= x"01"; + when x"A3C" => DATA <= x"11"; + when x"A3D" => DATA <= x"00"; + when x"A3E" => DATA <= x"09"; + when x"A3F" => DATA <= x"06"; + when x"A40" => DATA <= x"10"; + when x"A41" => DATA <= x"CD"; + when x"A42" => DATA <= x"9A"; + when x"A43" => DATA <= x"F6"; + when x"A44" => DATA <= x"77"; + when x"A45" => DATA <= x"2B"; + when x"A46" => DATA <= x"10"; + when x"A47" => DATA <= x"F9"; + when x"A48" => DATA <= x"2A"; + when x"A49" => DATA <= x"AC"; + when x"A4A" => DATA <= x"FC"; + when x"A4B" => DATA <= x"F1"; + when x"A4C" => DATA <= x"C1"; + when x"A4D" => DATA <= x"C9"; + when x"A4E" => DATA <= x"C5"; + when x"A4F" => DATA <= x"F5"; + when x"A50" => DATA <= x"22"; + when x"A51" => DATA <= x"AC"; + when x"A52" => DATA <= x"FC"; + when x"A53" => DATA <= x"3E"; + when x"A54" => DATA <= x"16"; + when x"A55" => DATA <= x"CD"; + when x"A56" => DATA <= x"A3"; + when x"A57" => DATA <= x"F6"; + when x"A58" => DATA <= x"01"; + when x"A59" => DATA <= x"0C"; + when x"A5A" => DATA <= x"00"; + when x"A5B" => DATA <= x"09"; + when x"A5C" => DATA <= x"06"; + when x"A5D" => DATA <= x"0D"; + when x"A5E" => DATA <= x"7E"; + when x"A5F" => DATA <= x"CD"; + when x"A60" => DATA <= x"A3"; + when x"A61" => DATA <= x"F6"; + when x"A62" => DATA <= x"2B"; + when x"A63" => DATA <= x"10"; + when x"A64" => DATA <= x"F9"; + when x"A65" => DATA <= x"F1"; + when x"A66" => DATA <= x"CD"; + when x"A67" => DATA <= x"A3"; + when x"A68" => DATA <= x"F6"; + when x"A69" => DATA <= x"2A"; + when x"A6A" => DATA <= x"AC"; + when x"A6B" => DATA <= x"FC"; + when x"A6C" => DATA <= x"01"; + when x"A6D" => DATA <= x"0C"; + when x"A6E" => DATA <= x"00"; + when x"A6F" => DATA <= x"09"; + when x"A70" => DATA <= x"06"; + when x"A71" => DATA <= x"0D"; + when x"A72" => DATA <= x"CD"; + when x"A73" => DATA <= x"9A"; + when x"A74" => DATA <= x"F6"; + when x"A75" => DATA <= x"77"; + when x"A76" => DATA <= x"2B"; + when x"A77" => DATA <= x"10"; + when x"A78" => DATA <= x"F9"; + when x"A79" => DATA <= x"2A"; + when x"A7A" => DATA <= x"AC"; + when x"A7B" => DATA <= x"FC"; + when x"A7C" => DATA <= x"C1"; + when x"A7D" => DATA <= x"C3"; + when x"A7E" => DATA <= x"95"; + when x"A7F" => DATA <= x"F6"; + when x"A80" => DATA <= x"00"; + when x"A81" => DATA <= x"00"; + when x"A82" => DATA <= x"ED"; + when x"A83" => DATA <= x"73"; + when x"A84" => DATA <= x"80"; + when x"A85" => DATA <= x"FA"; + when x"A86" => DATA <= x"31"; + when x"A87" => DATA <= x"60"; + when x"A88" => DATA <= x"FF"; + when x"A89" => DATA <= x"CD"; + when x"A8A" => DATA <= x"93"; + when x"A8B" => DATA <= x"FA"; + when x"A8C" => DATA <= x"ED"; + when x"A8D" => DATA <= x"7B"; + when x"A8E" => DATA <= x"80"; + when x"A8F" => DATA <= x"FA"; + when x"A90" => DATA <= x"FB"; + when x"A91" => DATA <= x"ED"; + when x"A92" => DATA <= x"4D"; + when x"A93" => DATA <= x"F5"; + when x"A94" => DATA <= x"DB"; + when x"A95" => DATA <= x"06"; + when x"A96" => DATA <= x"CB"; + when x"A97" => DATA <= x"7F"; + when x"A98" => DATA <= x"20"; + when x"A99" => DATA <= x"71"; + when x"A9A" => DATA <= x"DB"; + when x"A9B" => DATA <= x"00"; + when x"A9C" => DATA <= x"CB"; + when x"A9D" => DATA <= x"7F"; + when x"A9E" => DATA <= x"20"; + when x"A9F" => DATA <= x"39"; + when x"AA0" => DATA <= x"F1"; + when x"AA1" => DATA <= x"C3"; + when x"AA2" => DATA <= x"B0"; + when x"AA3" => DATA <= x"FF"; + when x"AA4" => DATA <= x"E1"; + when x"AA5" => DATA <= x"22"; + when x"AA6" => DATA <= x"82"; + when x"AA7" => DATA <= x"FF"; + when x"AA8" => DATA <= x"2A"; + when x"AA9" => DATA <= x"FA"; + when x"AAA" => DATA <= x"FF"; + when x"AAB" => DATA <= x"E9"; + when x"AAC" => DATA <= x"CD"; + when x"AAD" => DATA <= x"C6"; + when x"AAE" => DATA <= x"FA"; + when x"AAF" => DATA <= x"C3"; + when x"AB0" => DATA <= x"CB"; + when x"AB1" => DATA <= x"F2"; + when x"AB2" => DATA <= x"3E"; + when x"AB3" => DATA <= x"03"; + when x"AB4" => DATA <= x"2E"; + when x"AB5" => DATA <= x"00"; + when x"AB6" => DATA <= x"CD"; + when x"AB7" => DATA <= x"8E"; + when x"AB8" => DATA <= x"F8"; + when x"AB9" => DATA <= x"3E"; + when x"ABA" => DATA <= x"02"; + when x"ABB" => DATA <= x"2E"; + when x"ABC" => DATA <= x"02"; + when x"ABD" => DATA <= x"CD"; + when x"ABE" => DATA <= x"8E"; + when x"ABF" => DATA <= x"F8"; + when x"AC0" => DATA <= x"CD"; + when x"AC1" => DATA <= x"C6"; + when x"AC2" => DATA <= x"FA"; + when x"AC3" => DATA <= x"C3"; + when x"AC4" => DATA <= x"00"; + when x"AC5" => DATA <= x"00"; + when x"AC6" => DATA <= x"2A"; + when x"AC7" => DATA <= x"82"; + when x"AC8" => DATA <= x"FF"; + when x"AC9" => DATA <= x"3E"; + when x"ACA" => DATA <= x"0D"; + when x"ACB" => DATA <= x"CD"; + when x"ACC" => DATA <= x"71"; + when x"ACD" => DATA <= x"F6"; + when x"ACE" => DATA <= x"3E"; + when x"ACF" => DATA <= x"0A"; + when x"AD0" => DATA <= x"CD"; + when x"AD1" => DATA <= x"71"; + when x"AD2" => DATA <= x"F6"; + when x"AD3" => DATA <= x"23"; + when x"AD4" => DATA <= x"7E"; + when x"AD5" => DATA <= x"B7"; + when x"AD6" => DATA <= x"20"; + when x"AD7" => DATA <= x"F8"; + when x"AD8" => DATA <= x"C9"; + when x"AD9" => DATA <= x"DB"; + when x"ADA" => DATA <= x"01"; + when x"ADB" => DATA <= x"CB"; + when x"ADC" => DATA <= x"7F"; + when x"ADD" => DATA <= x"20"; + when x"ADE" => DATA <= x"25"; + when x"ADF" => DATA <= x"3E"; + when x"AE0" => DATA <= x"01"; + when x"AE1" => DATA <= x"32"; + when x"AE2" => DATA <= x"A2"; + when x"AE3" => DATA <= x"FC"; + when x"AE4" => DATA <= x"E5"; + when x"AE5" => DATA <= x"DD"; + when x"AE6" => DATA <= x"E5"; + when x"AE7" => DATA <= x"CD"; + when x"AE8" => DATA <= x"7C"; + when x"AE9" => DATA <= x"F6"; + when x"AEA" => DATA <= x"67"; + when x"AEB" => DATA <= x"CD"; + when x"AEC" => DATA <= x"7C"; + when x"AED" => DATA <= x"F6"; + when x"AEE" => DATA <= x"6F"; + when x"AEF" => DATA <= x"CD"; + when x"AF0" => DATA <= x"7C"; + when x"AF1" => DATA <= x"F6"; + when x"AF2" => DATA <= x"CD"; + when x"AF3" => DATA <= x"FE"; + when x"AF4" => DATA <= x"FA"; + when x"AF5" => DATA <= x"AF"; + when x"AF6" => DATA <= x"32"; + when x"AF7" => DATA <= x"A2"; + when x"AF8" => DATA <= x"FC"; + when x"AF9" => DATA <= x"DD"; + when x"AFA" => DATA <= x"E1"; + when x"AFB" => DATA <= x"E1"; + when x"AFC" => DATA <= x"F1"; + when x"AFD" => DATA <= x"C9"; + when x"AFE" => DATA <= x"DD"; + when x"AFF" => DATA <= x"2A"; + when x"B00" => DATA <= x"FC"; + when x"B01" => DATA <= x"FF"; + when x"B02" => DATA <= x"DD"; + when x"B03" => DATA <= x"E9"; + when x"B04" => DATA <= x"CB"; + when x"B05" => DATA <= x"27"; + when x"B06" => DATA <= x"32"; + when x"B07" => DATA <= x"80"; + when x"B08" => DATA <= x"FF"; + when x"B09" => DATA <= x"F1"; + when x"B0A" => DATA <= x"C9"; + when x"B0B" => DATA <= x"DB"; + when x"B0C" => DATA <= x"07"; + when x"B0D" => DATA <= x"CB"; + when x"B0E" => DATA <= x"7F"; + when x"B0F" => DATA <= x"28"; + when x"B10" => DATA <= x"45"; + when x"B11" => DATA <= x"DB"; + when x"B12" => DATA <= x"02"; + when x"B13" => DATA <= x"CB"; + when x"B14" => DATA <= x"7F"; + when x"B15" => DATA <= x"28"; + when x"B16" => DATA <= x"FA"; + when x"B17" => DATA <= x"DB"; + when x"B18" => DATA <= x"03"; + when x"B19" => DATA <= x"FB"; + when x"B1A" => DATA <= x"21"; + when x"B1B" => DATA <= x"B0"; + when x"B1C" => DATA <= x"FC"; + when x"B1D" => DATA <= x"36"; + when x"B1E" => DATA <= x"CD"; + when x"B1F" => DATA <= x"23"; + when x"B20" => DATA <= x"3A"; + when x"B21" => DATA <= x"BD"; + when x"B22" => DATA <= x"FF"; + when x"B23" => DATA <= x"77"; + when x"B24" => DATA <= x"23"; + when x"B25" => DATA <= x"3A"; + when x"B26" => DATA <= x"BE"; + when x"B27" => DATA <= x"FF"; + when x"B28" => DATA <= x"77"; + when x"B29" => DATA <= x"23"; + when x"B2A" => DATA <= x"CD"; + when x"B2B" => DATA <= x"9A"; + when x"B2C" => DATA <= x"F6"; + when x"B2D" => DATA <= x"77"; + when x"B2E" => DATA <= x"B7"; + when x"B2F" => DATA <= x"20"; + when x"B30" => DATA <= x"1A"; + when x"B31" => DATA <= x"CD"; + when x"B32" => DATA <= x"0E"; + when x"B33" => DATA <= x"F6"; + when x"B34" => DATA <= x"0D"; + when x"B35" => DATA <= x"46"; + when x"B36" => DATA <= x"61"; + when x"B37" => DATA <= x"74"; + when x"B38" => DATA <= x"61"; + when x"B39" => DATA <= x"6C"; + when x"B3A" => DATA <= x"20"; + when x"B3B" => DATA <= x"65"; + when x"B3C" => DATA <= x"72"; + when x"B3D" => DATA <= x"72"; + when x"B3E" => DATA <= x"6F"; + when x"B3F" => DATA <= x"72"; + when x"B40" => DATA <= x"00"; + when x"B41" => DATA <= x"3A"; + when x"B42" => DATA <= x"A3"; + when x"B43" => DATA <= x"FC"; + when x"B44" => DATA <= x"B7"; + when x"B45" => DATA <= x"C2"; + when x"B46" => DATA <= x"00"; + when x"B47" => DATA <= x"00"; + when x"B48" => DATA <= x"C3"; + when x"B49" => DATA <= x"CB"; + when x"B4A" => DATA <= x"F2"; + when x"B4B" => DATA <= x"23"; + when x"B4C" => DATA <= x"CD"; + when x"B4D" => DATA <= x"9A"; + when x"B4E" => DATA <= x"F6"; + when x"B4F" => DATA <= x"77"; + when x"B50" => DATA <= x"B7"; + when x"B51" => DATA <= x"20"; + when x"B52" => DATA <= x"F8"; + when x"B53" => DATA <= x"C3"; + when x"B54" => DATA <= x"B0"; + when x"B55" => DATA <= x"FC"; + when x"B56" => DATA <= x"C5"; + when x"B57" => DATA <= x"D5"; + when x"B58" => DATA <= x"E5"; + when x"B59" => DATA <= x"F5"; + when x"B5A" => DATA <= x"07"; + when x"B5B" => DATA <= x"5F"; + when x"B5C" => DATA <= x"07"; + when x"B5D" => DATA <= x"07"; + when x"B5E" => DATA <= x"83"; + when x"B5F" => DATA <= x"07"; + when x"B60" => DATA <= x"5F"; + when x"B61" => DATA <= x"16"; + when x"B62" => DATA <= x"00"; + when x"B63" => DATA <= x"21"; + when x"B64" => DATA <= x"C1"; + when x"B65" => DATA <= x"FB"; + when x"B66" => DATA <= x"19"; + when x"B67" => DATA <= x"11"; + when x"B68" => DATA <= x"61"; + when x"B69" => DATA <= x"FC"; + when x"B6A" => DATA <= x"01"; + when x"B6B" => DATA <= x"14"; + when x"B6C" => DATA <= x"00"; + when x"B6D" => DATA <= x"ED"; + when x"B6E" => DATA <= x"B0"; + when x"B6F" => DATA <= x"CD"; + when x"B70" => DATA <= x"AE"; + when x"B71" => DATA <= x"F6"; + when x"B72" => DATA <= x"F1"; + when x"B73" => DATA <= x"FE"; + when x"B74" => DATA <= x"05"; + when x"B75" => DATA <= x"28"; + when x"B76" => DATA <= x"33"; + when x"B77" => DATA <= x"F5"; + when x"B78" => DATA <= x"CD"; + when x"B79" => DATA <= x"AE"; + when x"B7A" => DATA <= x"F6"; + when x"B7B" => DATA <= x"CD"; + when x"B7C" => DATA <= x"AE"; + when x"B7D" => DATA <= x"F6"; + when x"B7E" => DATA <= x"CD"; + when x"B7F" => DATA <= x"AE"; + when x"B80" => DATA <= x"F6"; + when x"B81" => DATA <= x"67"; + when x"B82" => DATA <= x"CD"; + when x"B83" => DATA <= x"AE"; + when x"B84" => DATA <= x"F6"; + when x"B85" => DATA <= x"6F"; + when x"B86" => DATA <= x"22"; + when x"B87" => DATA <= x"A8"; + when x"B88" => DATA <= x"FC"; + when x"B89" => DATA <= x"0E"; + when x"B8A" => DATA <= x"05"; + when x"B8B" => DATA <= x"06"; + when x"B8C" => DATA <= x"00"; + when x"B8D" => DATA <= x"CD"; + when x"B8E" => DATA <= x"AE"; + when x"B8F" => DATA <= x"F6"; + when x"B90" => DATA <= x"F1"; + when x"B91" => DATA <= x"FE"; + when x"B92" => DATA <= x"06"; + when x"B93" => DATA <= x"38"; + when x"B94" => DATA <= x"15"; + when x"B95" => DATA <= x"20"; + when x"B96" => DATA <= x"1D"; + when x"B97" => DATA <= x"DB"; + when x"B98" => DATA <= x"04"; + when x"B99" => DATA <= x"B7"; + when x"B9A" => DATA <= x"F2"; + when x"B9B" => DATA <= x"97"; + when x"B9C" => DATA <= x"FB"; + when x"B9D" => DATA <= x"ED"; + when x"B9E" => DATA <= x"A3"; + when x"B9F" => DATA <= x"C2"; + when x"BA0" => DATA <= x"97"; + when x"BA1" => DATA <= x"FB"; + when x"BA2" => DATA <= x"DB"; + when x"BA3" => DATA <= x"04"; + when x"BA4" => DATA <= x"B7"; + when x"BA5" => DATA <= x"F2"; + when x"BA6" => DATA <= x"A2"; + when x"BA7" => DATA <= x"FB"; + when x"BA8" => DATA <= x"D3"; + when x"BA9" => DATA <= x"05"; + when x"BAA" => DATA <= x"E1"; + when x"BAB" => DATA <= x"D1"; + when x"BAC" => DATA <= x"C1"; + when x"BAD" => DATA <= x"3A"; + when x"BAE" => DATA <= x"A2"; + when x"BAF" => DATA <= x"FC"; + when x"BB0" => DATA <= x"B7"; + when x"BB1" => DATA <= x"C0"; + when x"BB2" => DATA <= x"F1"; + when x"BB3" => DATA <= x"C9"; + when x"BB4" => DATA <= x"DB"; + when x"BB5" => DATA <= x"04"; + when x"BB6" => DATA <= x"B7"; + when x"BB7" => DATA <= x"F2"; + when x"BB8" => DATA <= x"B4"; + when x"BB9" => DATA <= x"FB"; + when x"BBA" => DATA <= x"ED"; + when x"BBB" => DATA <= x"A2"; + when x"BBC" => DATA <= x"C2"; + when x"BBD" => DATA <= x"B4"; + when x"BBE" => DATA <= x"FB"; + when x"BBF" => DATA <= x"18"; + when x"BC0" => DATA <= x"E9"; + when x"BC1" => DATA <= x"E5"; + when x"BC2" => DATA <= x"F5"; + when x"BC3" => DATA <= x"2A"; + when x"BC4" => DATA <= x"A8"; + when x"BC5" => DATA <= x"FC"; + when x"BC6" => DATA <= x"7E"; + when x"BC7" => DATA <= x"D3"; + when x"BC8" => DATA <= x"05"; + when x"BC9" => DATA <= x"23"; + when x"BCA" => DATA <= x"22"; + when x"BCB" => DATA <= x"A8"; + when x"BCC" => DATA <= x"FC"; + when x"BCD" => DATA <= x"F1"; + when x"BCE" => DATA <= x"E1"; + when x"BCF" => DATA <= x"ED"; + when x"BD0" => DATA <= x"45"; + when x"BD1" => DATA <= x"3A"; + when x"BD2" => DATA <= x"12"; + when x"BD3" => DATA <= x"3B"; + when x"BD4" => DATA <= x"B7"; + when x"BD5" => DATA <= x"E5"; + when x"BD6" => DATA <= x"F5"; + when x"BD7" => DATA <= x"DB"; + when x"BD8" => DATA <= x"05"; + when x"BD9" => DATA <= x"2A"; + when x"BDA" => DATA <= x"A8"; + when x"BDB" => DATA <= x"FC"; + when x"BDC" => DATA <= x"77"; + when x"BDD" => DATA <= x"23"; + when x"BDE" => DATA <= x"22"; + when x"BDF" => DATA <= x"A8"; + when x"BE0" => DATA <= x"FC"; + when x"BE1" => DATA <= x"F1"; + when x"BE2" => DATA <= x"E1"; + when x"BE3" => DATA <= x"ED"; + when x"BE4" => DATA <= x"45"; + when x"BE5" => DATA <= x"01"; + when x"BE6" => DATA <= x"3B"; + when x"BE7" => DATA <= x"EB"; + when x"BE8" => DATA <= x"CD"; + when x"BE9" => DATA <= x"E5"; + when x"BEA" => DATA <= x"F5"; + when x"BEB" => DATA <= x"2A"; + when x"BEC" => DATA <= x"A8"; + when x"BED" => DATA <= x"FC"; + when x"BEE" => DATA <= x"7E"; + when x"BEF" => DATA <= x"D3"; + when x"BF0" => DATA <= x"05"; + when x"BF1" => DATA <= x"23"; + when x"BF2" => DATA <= x"7E"; + when x"BF3" => DATA <= x"D3"; + when x"BF4" => DATA <= x"05"; + when x"BF5" => DATA <= x"23"; + when x"BF6" => DATA <= x"22"; + when x"BF7" => DATA <= x"A8"; + when x"BF8" => DATA <= x"FC"; + when x"BF9" => DATA <= x"F1"; + when x"BFA" => DATA <= x"E1"; + when x"BFB" => DATA <= x"ED"; + when x"BFC" => DATA <= x"45"; + when x"BFD" => DATA <= x"E5"; + when x"BFE" => DATA <= x"F5"; + when x"BFF" => DATA <= x"DB"; + when x"C00" => DATA <= x"05"; + when x"C01" => DATA <= x"2A"; + when x"C02" => DATA <= x"A8"; + when x"C03" => DATA <= x"FC"; + when x"C04" => DATA <= x"77"; + when x"C05" => DATA <= x"23"; + when x"C06" => DATA <= x"DB"; + when x"C07" => DATA <= x"05"; + when x"C08" => DATA <= x"77"; + when x"C09" => DATA <= x"23"; + when x"C0A" => DATA <= x"22"; + when x"C0B" => DATA <= x"A8"; + when x"C0C" => DATA <= x"FC"; + when x"C0D" => DATA <= x"F1"; + when x"C0E" => DATA <= x"E1"; + when x"C0F" => DATA <= x"ED"; + when x"C10" => DATA <= x"45"; + when x"C11" => DATA <= x"D3"; + when x"C12" => DATA <= x"05"; + when x"C13" => DATA <= x"ED"; + when x"C14" => DATA <= x"45"; + when x"C15" => DATA <= x"23"; + when x"C16" => DATA <= x"56"; + when x"C17" => DATA <= x"2B"; + when x"C18" => DATA <= x"C9"; + when x"C19" => DATA <= x"2A"; + when x"C1A" => DATA <= x"A0"; + when x"C1B" => DATA <= x"3C"; + when x"C1C" => DATA <= x"19"; + when x"C1D" => DATA <= x"23"; + when x"C1E" => DATA <= x"23"; + when x"C1F" => DATA <= x"5E"; + when x"C20" => DATA <= x"23"; + when x"C21" => DATA <= x"56"; + when x"C22" => DATA <= x"2B"; + when x"C23" => DATA <= x"C9"; + when x"C24" => DATA <= x"2A"; + when x"C25" => DATA <= x"D3"; + when x"C26" => DATA <= x"05"; + when x"C27" => DATA <= x"ED"; + when x"C28" => DATA <= x"45"; + when x"C29" => DATA <= x"CA"; + when x"C2A" => DATA <= x"0D"; + when x"C2B" => DATA <= x"37"; + when x"C2C" => DATA <= x"EB"; + when x"C2D" => DATA <= x"D5"; + when x"C2E" => DATA <= x"CD"; + when x"C2F" => DATA <= x"ED"; + when x"C30" => DATA <= x"36"; + when x"C31" => DATA <= x"EB"; + when x"C32" => DATA <= x"22"; + when x"C33" => DATA <= x"A4"; + when x"C34" => DATA <= x"3C"; + when x"C35" => DATA <= x"D1"; + when x"C36" => DATA <= x"C3"; + when x"C37" => DATA <= x"39"; + when x"C38" => DATA <= x"37"; + when x"C39" => DATA <= x"D3"; + when x"C3A" => DATA <= x"05"; + when x"C3B" => DATA <= x"ED"; + when x"C3C" => DATA <= x"45"; + when x"C3D" => DATA <= x"20"; + when x"C3E" => DATA <= x"00"; + when x"C3F" => DATA <= x"EB"; + when x"C40" => DATA <= x"19"; + when x"C41" => DATA <= x"22"; + when x"C42" => DATA <= x"A2"; + when x"C43" => DATA <= x"3C"; + when x"C44" => DATA <= x"D5"; + when x"C45" => DATA <= x"EB"; + when x"C46" => DATA <= x"2A"; + when x"C47" => DATA <= x"AC"; + when x"C48" => DATA <= x"3C"; + when x"C49" => DATA <= x"CD"; + when x"C4A" => DATA <= x"82"; + when x"C4B" => DATA <= x"0D"; + when x"C4C" => DATA <= x"D1"; + when x"C4D" => DATA <= x"D3"; + when x"C4E" => DATA <= x"05"; + when x"C4F" => DATA <= x"ED"; + when x"C50" => DATA <= x"45"; + when x"C51" => DATA <= x"7B"; + when x"C52" => DATA <= x"3C"; + when x"C53" => DATA <= x"25"; + when x"C54" => DATA <= x"3A"; + when x"C55" => DATA <= x"7D"; + when x"C56" => DATA <= x"3C"; + when x"C57" => DATA <= x"B7"; + when x"C58" => DATA <= x"CD"; + when x"C59" => DATA <= x"82"; + when x"C5A" => DATA <= x"0D"; + when x"C5B" => DATA <= x"DA"; + when x"C5C" => DATA <= x"87"; + when x"C5D" => DATA <= x"38"; + when x"C5E" => DATA <= x"2A"; + when x"C5F" => DATA <= x"A0"; + when x"C60" => DATA <= x"3C"; + when x"C61" => DATA <= x"D3"; + when x"C62" => DATA <= x"05"; + when x"C63" => DATA <= x"ED"; + when x"C64" => DATA <= x"45"; + when x"C65" => DATA <= x"D5"; + when x"C66" => DATA <= x"CD"; + when x"C67" => DATA <= x"E4"; + when x"C68" => DATA <= x"36"; + when x"C69" => DATA <= x"EB"; + when x"C6A" => DATA <= x"2A"; + when x"C6B" => DATA <= x"A8"; + when x"C6C" => DATA <= x"3C"; + when x"C6D" => DATA <= x"EB"; + when x"C6E" => DATA <= x"7B"; + when x"C6F" => DATA <= x"E6"; + when x"C70" => DATA <= x"E0"; + when x"C71" => DATA <= x"5F"; + when x"C72" => DATA <= x"7B"; + when x"C73" => DATA <= x"B2"; + when x"C74" => DATA <= x"C2"; + when x"C75" => DATA <= x"00"; + when x"C76" => DATA <= x"05"; + when x"C77" => DATA <= x"00"; + when x"C78" => DATA <= x"05"; + when x"C79" => DATA <= x"04"; + when x"C7A" => DATA <= x"05"; + when x"C7B" => DATA <= x"08"; + when x"C7C" => DATA <= x"0E"; + when x"C7D" => DATA <= x"04"; + when x"C7E" => DATA <= x"01"; + when x"C7F" => DATA <= x"01"; + when x"C80" => DATA <= x"05"; + when x"C81" => DATA <= x"00"; + when x"C82" => DATA <= x"20"; + when x"C83" => DATA <= x"20"; + when x"C84" => DATA <= x"10"; + when x"C85" => DATA <= x"0D"; + when x"C86" => DATA <= x"00"; + when x"C87" => DATA <= x"08"; + when x"C88" => DATA <= x"80"; + when x"C89" => DATA <= x"05"; + when x"C8A" => DATA <= x"00"; + when x"C8B" => DATA <= x"05"; + when x"C8C" => DATA <= x"00"; + when x"C8D" => DATA <= x"05"; + when x"C8E" => DATA <= x"00"; + when x"C8F" => DATA <= x"00"; + when x"C90" => DATA <= x"00"; + when x"C91" => DATA <= x"05"; + when x"C92" => DATA <= x"09"; + when x"C93" => DATA <= x"05"; + when x"C94" => DATA <= x"00"; + when x"C95" => DATA <= x"08"; + when x"C96" => DATA <= x"20"; + when x"C97" => DATA <= x"10"; + when x"C98" => DATA <= x"01"; + when x"C99" => DATA <= x"0D"; + when x"C9A" => DATA <= x"80"; + when x"C9B" => DATA <= x"08"; + when x"C9C" => DATA <= x"80"; + when x"C9D" => DATA <= x"B0"; + when x"C9E" => DATA <= x"FC"; + when x"C9F" => DATA <= x"80"; + when x"CA0" => DATA <= x"20"; + when x"CA1" => DATA <= x"FF"; + when x"CA2" => DATA <= x"00"; + when x"CA3" => DATA <= x"00"; + when x"CA4" => DATA <= x"00"; + when x"CA5" => DATA <= x"D5"; + when x"CA6" => DATA <= x"F5"; + when x"CA7" => DATA <= x"2A"; + when x"CA8" => DATA <= x"A8"; + when x"CA9" => DATA <= x"FC"; + when x"CAA" => DATA <= x"00"; + when x"CAB" => DATA <= x"00"; + when x"CAC" => DATA <= x"B0"; + when x"CAD" => DATA <= x"FC"; + when x"CAE" => DATA <= x"00"; + when x"CAF" => DATA <= x"00"; + when x"CB0" => DATA <= x"36"; + when x"CB1" => DATA <= x"2A"; + when x"CB2" => DATA <= x"A0"; + when x"CB3" => DATA <= x"3C"; + when x"CB4" => DATA <= x"19"; + when x"CB5" => DATA <= x"F1"; + when x"CB6" => DATA <= x"F5"; + when x"CB7" => DATA <= x"77"; + when x"CB8" => DATA <= x"7B"; + when x"CB9" => DATA <= x"E6"; + when x"CBA" => DATA <= x"1F"; + when x"CBB" => DATA <= x"FE"; + when x"CBC" => DATA <= x"1F"; + when x"CBD" => DATA <= x"CA"; + when x"CBE" => DATA <= x"95"; + when x"CBF" => DATA <= x"37"; + when x"CC0" => DATA <= x"13"; + when x"CC1" => DATA <= x"CC"; + when x"CC2" => DATA <= x"9F"; + when x"CC3" => DATA <= x"37"; + when x"CC4" => DATA <= x"EB"; + when x"CC5" => DATA <= x"22"; + when x"CC6" => DATA <= x"A8"; + when x"CC7" => DATA <= x"3C"; + when x"CC8" => DATA <= x"F1"; + when x"CC9" => DATA <= x"D1"; + when x"CCA" => DATA <= x"C9"; + when x"CCB" => DATA <= x"7B"; + when x"CCC" => DATA <= x"E6"; + when x"CCD" => DATA <= x"E0"; + when x"CCE" => DATA <= x"5F"; + when x"CCF" => DATA <= x"CD"; + when x"CD0" => DATA <= x"ED"; + when x"CD1" => DATA <= x"36"; + when x"CD2" => DATA <= x"7A"; + when x"CD3" => DATA <= x"B3"; + when x"CD4" => DATA <= x"CA"; + when x"CD5" => DATA <= x"F8"; + when x"CD6" => DATA <= x"36"; + when x"CD7" => DATA <= x"13"; + when x"CD8" => DATA <= x"13"; + when x"CD9" => DATA <= x"13"; + when x"CDA" => DATA <= x"13"; + when x"CDB" => DATA <= x"C9"; + when x"CDC" => DATA <= x"D5"; + when x"CDD" => DATA <= x"EB"; + when x"CDE" => DATA <= x"2A"; + when x"CDF" => DATA <= x"A0"; + when x"CE0" => DATA <= x"3C"; + when x"CE1" => DATA <= x"EB"; + when x"CE2" => DATA <= x"7D"; + when x"CE3" => DATA <= x"E6"; + when x"CE4" => DATA <= x"1F"; + when x"CE5" => DATA <= x"C2"; + when x"CE6" => DATA <= x"C0"; + when x"CE7" => DATA <= x"37"; + when x"CE8" => DATA <= x"7D"; + when x"CE9" => DATA <= x"F6"; + when x"CEA" => DATA <= x"04"; + when x"CEB" => DATA <= x"6F"; + when x"CEC" => DATA <= x"EB"; + when x"CED" => DATA <= x"19"; + when x"CEE" => DATA <= x"7E"; + when x"CEF" => DATA <= x"EB"; + when x"CF0" => DATA <= x"D1"; + when x"CF1" => DATA <= x"C9"; + when x"CF2" => DATA <= x"CD"; + when x"CF3" => DATA <= x"B0"; + when x"CF4" => DATA <= x"37"; + when x"CF5" => DATA <= x"F5"; + when x"CF6" => DATA <= x"D5"; + when x"CF7" => DATA <= x"EB"; + when x"CF8" => DATA <= x"7B"; + when x"CF9" => DATA <= x"E6"; + when x"CFA" => DATA <= x"1F"; + when x"CFB" => DATA <= x"FE"; + when x"CFC" => DATA <= x"1F"; + when x"CFD" => DATA <= x"CA"; + when x"CFE" => DATA <= x"D5"; + when x"CFF" => DATA <= x"37"; + when x"D00" => DATA <= x"13"; + when x"D01" => DATA <= x"CC"; + when x"D02" => DATA <= x"9F"; + when x"D03" => DATA <= x"37"; + when x"D04" => DATA <= x"EB"; + when x"D05" => DATA <= x"D1"; + when x"D06" => DATA <= x"F1"; + when x"D07" => DATA <= x"C9"; + when x"D08" => DATA <= x"EB"; + when x"D09" => DATA <= x"7B"; + when x"D0A" => DATA <= x"E6"; + when x"D0B" => DATA <= x"E0"; + when x"D0C" => DATA <= x"5F"; + when x"D0D" => DATA <= x"D5"; + when x"D0E" => DATA <= x"CD"; + when x"D0F" => DATA <= x"ED"; + when x"D10" => DATA <= x"36"; + when x"D11" => DATA <= x"7B"; + when x"D12" => DATA <= x"B2"; + when x"D13" => DATA <= x"C1"; + when x"D14" => DATA <= x"C8"; + when x"D15" => DATA <= x"AF"; + when x"D16" => DATA <= x"77"; + when x"D17" => DATA <= x"23"; + when x"D18" => DATA <= x"77"; + when x"D19" => DATA <= x"2A"; + when x"D1A" => DATA <= x"A0"; + when x"D1B" => DATA <= x"3C"; + when x"D1C" => DATA <= x"19"; + when x"D1D" => DATA <= x"73"; + when x"D1E" => DATA <= x"23"; + when x"D1F" => DATA <= x"72"; + when x"D20" => DATA <= x"C5"; + when x"D21" => DATA <= x"CD"; + when x"D22" => DATA <= x"D2"; + when x"D23" => DATA <= x"36"; + when x"D24" => DATA <= x"C1"; + when x"D25" => DATA <= x"2A"; + when x"D26" => DATA <= x"A6"; + when x"D27" => DATA <= x"3C"; + when x"D28" => DATA <= x"EB"; + when x"D29" => DATA <= x"CD"; + when x"D2A" => DATA <= x"E4"; + when x"D2B" => DATA <= x"36"; + when x"D2C" => DATA <= x"71"; + when x"D2D" => DATA <= x"23"; + when x"D2E" => DATA <= x"70"; + when x"D2F" => DATA <= x"C9"; + when x"D30" => DATA <= x"4C"; + when x"D31" => DATA <= x"05"; + when x"D32" => DATA <= x"25"; + when x"D33" => DATA <= x"10"; + when x"D34" => DATA <= x"E3"; + when x"D35" => DATA <= x"C9"; + when x"D36" => DATA <= x"FF"; + when x"D37" => DATA <= x"F0"; + when x"D38" => DATA <= x"03"; + when x"D39" => DATA <= x"6C"; + when x"D3A" => DATA <= x"03"; + when x"D3B" => DATA <= x"25"; + when x"D3C" => DATA <= x"86"; + when x"D3D" => DATA <= x"70"; + when x"D3E" => DATA <= x"84"; + when x"D3F" => DATA <= x"71"; + when x"D40" => DATA <= x"85"; + when x"D41" => DATA <= x"72"; + when x"D42" => DATA <= x"A0"; + when x"D43" => DATA <= x"02"; + when x"D44" => DATA <= x"B1"; + when x"D45" => DATA <= x"70"; + when x"D46" => DATA <= x"85"; + when x"D47" => DATA <= x"74"; + when x"D48" => DATA <= x"C8"; + when x"D49" => DATA <= x"B1"; + when x"D4A" => DATA <= x"70"; + when x"D4B" => DATA <= x"85"; + when x"D4C" => DATA <= x"75"; + when x"D4D" => DATA <= x"20"; + when x"D4E" => DATA <= x"9C"; + when x"D4F" => DATA <= x"25"; + when x"D50" => DATA <= x"A0"; + when x"D51" => DATA <= x"0C"; + when x"D52" => DATA <= x"B1"; + when x"D53" => DATA <= x"70"; + when x"D54" => DATA <= x"48"; + when x"D55" => DATA <= x"A5"; + when x"D56" => DATA <= x"70"; + when x"D57" => DATA <= x"18"; + when x"D58" => DATA <= x"69"; + when x"D59" => DATA <= x"06"; + when x"D5A" => DATA <= x"AA"; + when x"D5B" => DATA <= x"A9"; + when x"D5C" => DATA <= x"00"; + when x"D5D" => DATA <= x"65"; + when x"D5E" => DATA <= x"71"; + when x"D5F" => DATA <= x"A8"; + when x"D60" => DATA <= x"68"; + when x"D61" => DATA <= x"48"; + when x"D62" => DATA <= x"20"; + when x"D63" => DATA <= x"06"; + when x"D64" => DATA <= x"04"; + when x"D65" => DATA <= x"A0"; + when x"D66" => DATA <= x"0A"; + when x"D67" => DATA <= x"B1"; + when x"D68" => DATA <= x"70"; + when x"D69" => DATA <= x"AA"; + when x"D6A" => DATA <= x"C8"; + when x"D6B" => DATA <= x"B1"; + when x"D6C" => DATA <= x"70"; + when x"D6D" => DATA <= x"85"; + when x"D6E" => DATA <= x"76"; + when x"D6F" => DATA <= x"D0"; + when x"D70" => DATA <= x"03"; + when x"D71" => DATA <= x"8A"; + when x"D72" => DATA <= x"F0"; + when x"D73" => DATA <= x"4E"; + when x"D74" => DATA <= x"8A"; + when x"D75" => DATA <= x"F0"; + when x"D76" => DATA <= x"02"; + when x"D77" => DATA <= x"E6"; + when x"D78" => DATA <= x"76"; + when x"D79" => DATA <= x"68"; + when x"D7A" => DATA <= x"6A"; + when x"D7B" => DATA <= x"B0"; + when x"D7C" => DATA <= x"28"; + when x"D7D" => DATA <= x"20"; + when x"D7E" => DATA <= x"9B"; + when x"D7F" => DATA <= x"25"; + when x"D80" => DATA <= x"20"; + when x"D81" => DATA <= x"9B"; + when x"D82" => DATA <= x"25"; + when x"D83" => DATA <= x"20"; + when x"D84" => DATA <= x"9B"; + when x"D85" => DATA <= x"25"; + when x"D86" => DATA <= x"A0"; + when x"D87" => DATA <= x"00"; + when x"D88" => DATA <= x"AD"; + when x"D89" => DATA <= x"E5"; + when x"D8A" => DATA <= x"FE"; + when x"D8B" => DATA <= x"91"; + when x"D8C" => DATA <= x"74"; + when x"D8D" => DATA <= x"20"; + when x"D8E" => DATA <= x"9B"; + when x"D8F" => DATA <= x"25"; + when x"D90" => DATA <= x"20"; + when x"D91" => DATA <= x"9B"; + when x"D92" => DATA <= x"25"; + when x"D93" => DATA <= x"20"; + when x"D94" => DATA <= x"9B"; + when x"D95" => DATA <= x"25"; + when x"D96" => DATA <= x"E6"; + when x"D97" => DATA <= x"74"; + when x"D98" => DATA <= x"D0"; + when x"D99" => DATA <= x"02"; + when x"D9A" => DATA <= x"E6"; + when x"D9B" => DATA <= x"75"; + when x"D9C" => DATA <= x"CA"; + when x"D9D" => DATA <= x"D0"; + when x"D9E" => DATA <= x"E9"; + when x"D9F" => DATA <= x"C6"; + when x"DA0" => DATA <= x"76"; + when x"DA1" => DATA <= x"D0"; + when x"DA2" => DATA <= x"E5"; + when x"DA3" => DATA <= x"F0"; + when x"DA4" => DATA <= x"1D"; + when x"DA5" => DATA <= x"A0"; + when x"DA6" => DATA <= x"00"; + when x"DA7" => DATA <= x"B1"; + when x"DA8" => DATA <= x"74"; + when x"DA9" => DATA <= x"8D"; + when x"DAA" => DATA <= x"E5"; + when x"DAB" => DATA <= x"FE"; + when x"DAC" => DATA <= x"20"; + when x"DAD" => DATA <= x"9B"; + when x"DAE" => DATA <= x"25"; + when x"DAF" => DATA <= x"20"; + when x"DB0" => DATA <= x"9B"; + when x"DB1" => DATA <= x"25"; + when x"DB2" => DATA <= x"20"; + when x"DB3" => DATA <= x"9B"; + when x"DB4" => DATA <= x"25"; + when x"DB5" => DATA <= x"E6"; + when x"DB6" => DATA <= x"74"; + when x"DB7" => DATA <= x"D0"; + when x"DB8" => DATA <= x"02"; + when x"DB9" => DATA <= x"E6"; + when x"DBA" => DATA <= x"75"; + when x"DBB" => DATA <= x"CA"; + when x"DBC" => DATA <= x"D0"; + when x"DBD" => DATA <= x"E9"; + when x"DBE" => DATA <= x"C6"; + when x"DBF" => DATA <= x"76"; + when x"DC0" => DATA <= x"D0"; + when x"DC1" => DATA <= x"E5"; + when x"DC2" => DATA <= x"20"; + when x"DC3" => DATA <= x"A4"; + when x"DC4" => DATA <= x"25"; + when x"DC5" => DATA <= x"A6"; + when x"DC6" => DATA <= x"70"; + when x"DC7" => DATA <= x"A4"; + when x"DC8" => DATA <= x"71"; + when x"DC9" => DATA <= x"A5"; + when x"DCA" => DATA <= x"72"; + when x"DCB" => DATA <= x"60"; + when x"DCC" => DATA <= x"A9"; + when x"DCD" => DATA <= x"C7"; + when x"DCE" => DATA <= x"20"; + when x"DCF" => DATA <= x"06"; + when x"DD0" => DATA <= x"04"; + when x"DD1" => DATA <= x"90"; + when x"DD2" => DATA <= x"F9"; + when x"DD3" => DATA <= x"60"; + when x"DD4" => DATA <= x"A9"; + when x"DD5" => DATA <= x"87"; + when x"DD6" => DATA <= x"20"; + when x"DD7" => DATA <= x"06"; + when x"DD8" => DATA <= x"04"; + when x"DD9" => DATA <= x"60"; + when x"DDA" => DATA <= x"00"; + when x"DDB" => DATA <= x"25"; + when x"DDC" => DATA <= x"36"; + when x"DDD" => DATA <= x"42"; + when x"DDE" => DATA <= x"FE"; + when x"DDF" => DATA <= x"02"; + when x"DE0" => DATA <= x"30"; + when x"DE1" => DATA <= x"22"; + when x"DE2" => DATA <= x"F5"; + when x"DE3" => DATA <= x"3A"; + when x"DE4" => DATA <= x"81"; + when x"DE5" => DATA <= x"FF"; + when x"DE6" => DATA <= x"E6"; + when x"DE7" => DATA <= x"01"; + when x"DE8" => DATA <= x"32"; + when x"DE9" => DATA <= x"AA"; + when x"DEA" => DATA <= x"FC"; + when x"DEB" => DATA <= x"F1"; + when x"DEC" => DATA <= x"32"; + when x"DED" => DATA <= x"81"; + when x"DEE" => DATA <= x"FF"; + when x"DEF" => DATA <= x"B7"; + when x"DF0" => DATA <= x"20"; + when x"DF1" => DATA <= x"08"; + when x"DF2" => DATA <= x"21"; + when x"DF3" => DATA <= x"71"; + when x"DF4" => DATA <= x"F6"; + when x"DF5" => DATA <= x"22"; + when x"DF6" => DATA <= x"9F"; + when x"DF7" => DATA <= x"FF"; + when x"DF8" => DATA <= x"18"; + when x"DF9" => DATA <= x"06"; + when x"DFA" => DATA <= x"21"; + when x"DFB" => DATA <= x"0D"; + when x"DFC" => DATA <= x"FE"; + when x"DFD" => DATA <= x"22"; + when x"DFE" => DATA <= x"9F"; + when x"DFF" => DATA <= x"FF"; + when x"E00" => DATA <= x"3A"; + when x"E01" => DATA <= x"AA"; + when x"E02" => DATA <= x"FC"; + when x"E03" => DATA <= x"C9"; + when x"E04" => DATA <= x"FE"; + when x"E05" => DATA <= x"FF"; + when x"E06" => DATA <= x"C0"; + when x"E07" => DATA <= x"3A"; + when x"E08" => DATA <= x"81"; + when x"E09" => DATA <= x"FF"; + when x"E0A" => DATA <= x"E6"; + when x"E0B" => DATA <= x"01"; + when x"E0C" => DATA <= x"C9"; + when x"E0D" => DATA <= x"4F"; + when x"E0E" => DATA <= x"3A"; + when x"E0F" => DATA <= x"81"; + when x"E10" => DATA <= x"FF"; + when x"E11" => DATA <= x"CB"; + when x"E12" => DATA <= x"7F"; + when x"E13" => DATA <= x"20"; + when x"E14" => DATA <= x"12"; + when x"E15" => DATA <= x"79"; + when x"E16" => DATA <= x"FE"; + when x"E17" => DATA <= x"1B"; + when x"E18" => DATA <= x"28"; + when x"E19" => DATA <= x"04"; + when x"E1A" => DATA <= x"CD"; + when x"E1B" => DATA <= x"71"; + when x"E1C" => DATA <= x"F6"; + when x"E1D" => DATA <= x"C9"; + when x"E1E" => DATA <= x"3A"; + when x"E1F" => DATA <= x"81"; + when x"E20" => DATA <= x"FF"; + when x"E21" => DATA <= x"CB"; + when x"E22" => DATA <= x"FF"; + when x"E23" => DATA <= x"32"; + when x"E24" => DATA <= x"81"; + when x"E25" => DATA <= x"FF"; + when x"E26" => DATA <= x"C9"; + when x"E27" => DATA <= x"CB"; + when x"E28" => DATA <= x"77"; + when x"E29" => DATA <= x"C2"; + when x"E2A" => DATA <= x"A6"; + when x"E2B" => DATA <= x"FE"; + when x"E2C" => DATA <= x"CB"; + when x"E2D" => DATA <= x"6F"; + when x"E2E" => DATA <= x"C2"; + when x"E2F" => DATA <= x"D9"; + when x"E30" => DATA <= x"FE"; + when x"E31" => DATA <= x"79"; + when x"E32" => DATA <= x"FE"; + when x"E33" => DATA <= x"3D"; + when x"E34" => DATA <= x"28"; + when x"E35" => DATA <= x"15"; + when x"E36" => DATA <= x"FE"; + when x"E37" => DATA <= x"3E"; + when x"E38" => DATA <= x"28"; + when x"E39" => DATA <= x"1A"; + when x"E3A" => DATA <= x"FE"; + when x"E3B" => DATA <= x"3F"; + when x"E3C" => DATA <= x"28"; + when x"E3D" => DATA <= x"1F"; + when x"E3E" => DATA <= x"FE"; + when x"E3F" => DATA <= x"40"; + when x"E40" => DATA <= x"28"; + when x"E41" => DATA <= x"3E"; + when x"E42" => DATA <= x"3A"; + when x"E43" => DATA <= x"81"; + when x"E44" => DATA <= x"FF"; + when x"E45" => DATA <= x"CB"; + when x"E46" => DATA <= x"BF"; + when x"E47" => DATA <= x"32"; + when x"E48" => DATA <= x"81"; + when x"E49" => DATA <= x"FF"; + when x"E4A" => DATA <= x"C9"; + when x"E4B" => DATA <= x"3A"; + when x"E4C" => DATA <= x"81"; + when x"E4D" => DATA <= x"FF"; + when x"E4E" => DATA <= x"CB"; + when x"E4F" => DATA <= x"F7"; + when x"E50" => DATA <= x"32"; + when x"E51" => DATA <= x"81"; + when x"E52" => DATA <= x"FF"; + when x"E53" => DATA <= x"C9"; + when x"E54" => DATA <= x"3A"; + when x"E55" => DATA <= x"81"; + when x"E56" => DATA <= x"FF"; + when x"E57" => DATA <= x"CB"; + when x"E58" => DATA <= x"EF"; + when x"E59" => DATA <= x"32"; + when x"E5A" => DATA <= x"81"; + when x"E5B" => DATA <= x"FF"; + when x"E5C" => DATA <= x"C9"; + when x"E5D" => DATA <= x"CD"; + when x"E5E" => DATA <= x"EC"; + when x"E5F" => DATA <= x"FE"; + when x"E60" => DATA <= x"28"; + when x"E61" => DATA <= x"08"; + when x"E62" => DATA <= x"FE"; + when x"E63" => DATA <= x"00"; + when x"E64" => DATA <= x"20"; + when x"E65" => DATA <= x"DC"; + when x"E66" => DATA <= x"3E"; + when x"E67" => DATA <= x"1F"; + when x"E68" => DATA <= x"18"; + when x"E69" => DATA <= x"02"; + when x"E6A" => DATA <= x"3E"; + when x"E6B" => DATA <= x"18"; + when x"E6C" => DATA <= x"32"; + when x"E6D" => DATA <= x"18"; + when x"E6E" => DATA <= x"FF"; + when x"E6F" => DATA <= x"CD"; + when x"E70" => DATA <= x"F5"; + when x"E71" => DATA <= x"FE"; + when x"E72" => DATA <= x"06"; + when x"E73" => DATA <= x"10"; + when x"E74" => DATA <= x"21"; + when x"E75" => DATA <= x"10"; + when x"E76" => DATA <= x"FF"; + when x"E77" => DATA <= x"7E"; + when x"E78" => DATA <= x"CD"; + when x"E79" => DATA <= x"71"; + when x"E7A" => DATA <= x"F6"; + when x"E7B" => DATA <= x"23"; + when x"E7C" => DATA <= x"10"; + when x"E7D" => DATA <= x"F9"; + when x"E7E" => DATA <= x"18"; + when x"E7F" => DATA <= x"C2"; + when x"E80" => DATA <= x"CD"; + when x"E81" => DATA <= x"EC"; + when x"E82" => DATA <= x"FE"; + when x"E83" => DATA <= x"28"; + when x"E84" => DATA <= x"04"; + when x"E85" => DATA <= x"FE"; + when x"E86" => DATA <= x"00"; + when x"E87" => DATA <= x"20"; + when x"E88" => DATA <= x"B9"; + when x"E89" => DATA <= x"CD"; + when x"E8A" => DATA <= x"F5"; + when x"E8B" => DATA <= x"FE"; + when x"E8C" => DATA <= x"06"; + when x"E8D" => DATA <= x"06"; + when x"E8E" => DATA <= x"21"; + when x"E8F" => DATA <= x"10"; + when x"E90" => DATA <= x"FF"; + when x"E91" => DATA <= x"7E"; + when x"E92" => DATA <= x"CD"; + when x"E93" => DATA <= x"71"; + when x"E94" => DATA <= x"F6"; + when x"E95" => DATA <= x"23"; + when x"E96" => DATA <= x"10"; + when x"E97" => DATA <= x"F9"; + when x"E98" => DATA <= x"06"; + when x"E99" => DATA <= x"05"; + when x"E9A" => DATA <= x"21"; + when x"E9B" => DATA <= x"1B"; + when x"E9C" => DATA <= x"FF"; + when x"E9D" => DATA <= x"7E"; + when x"E9E" => DATA <= x"CD"; + when x"E9F" => DATA <= x"71"; + when x"EA0" => DATA <= x"F6"; + when x"EA1" => DATA <= x"23"; + when x"EA2" => DATA <= x"10"; + when x"EA3" => DATA <= x"F9"; + when x"EA4" => DATA <= x"18"; + when x"EA5" => DATA <= x"9C"; + when x"EA6" => DATA <= x"CB"; + when x"EA7" => DATA <= x"67"; + when x"EA8" => DATA <= x"20"; + when x"EA9" => DATA <= x"0F"; + when x"EAA" => DATA <= x"79"; + when x"EAB" => DATA <= x"D6"; + when x"EAC" => DATA <= x"20"; + when x"EAD" => DATA <= x"32"; + when x"EAE" => DATA <= x"21"; + when x"EAF" => DATA <= x"FF"; + when x"EB0" => DATA <= x"3A"; + when x"EB1" => DATA <= x"81"; + when x"EB2" => DATA <= x"FF"; + when x"EB3" => DATA <= x"CB"; + when x"EB4" => DATA <= x"E7"; + when x"EB5" => DATA <= x"32"; + when x"EB6" => DATA <= x"81"; + when x"EB7" => DATA <= x"FF"; + when x"EB8" => DATA <= x"C9"; + when x"EB9" => DATA <= x"79"; + when x"EBA" => DATA <= x"D6"; + when x"EBB" => DATA <= x"20"; + when x"EBC" => DATA <= x"32"; + when x"EBD" => DATA <= x"20"; + when x"EBE" => DATA <= x"FF"; + when x"EBF" => DATA <= x"3E"; + when x"EC0" => DATA <= x"1F"; + when x"EC1" => DATA <= x"CD"; + when x"EC2" => DATA <= x"71"; + when x"EC3" => DATA <= x"F6"; + when x"EC4" => DATA <= x"3A"; + when x"EC5" => DATA <= x"20"; + when x"EC6" => DATA <= x"FF"; + when x"EC7" => DATA <= x"CD"; + when x"EC8" => DATA <= x"71"; + when x"EC9" => DATA <= x"F6"; + when x"ECA" => DATA <= x"3A"; + when x"ECB" => DATA <= x"21"; + when x"ECC" => DATA <= x"FF"; + when x"ECD" => DATA <= x"CD"; + when x"ECE" => DATA <= x"71"; + when x"ECF" => DATA <= x"F6"; + when x"ED0" => DATA <= x"3A"; + when x"ED1" => DATA <= x"81"; + when x"ED2" => DATA <= x"FF"; + when x"ED3" => DATA <= x"E6"; + when x"ED4" => DATA <= x"01"; + when x"ED5" => DATA <= x"32"; + when x"ED6" => DATA <= x"81"; + when x"ED7" => DATA <= x"FF"; + when x"ED8" => DATA <= x"C9"; + when x"ED9" => DATA <= x"79"; + when x"EDA" => DATA <= x"B7"; + when x"EDB" => DATA <= x"28"; + when x"EDC" => DATA <= x"06"; + when x"EDD" => DATA <= x"D6"; + when x"EDE" => DATA <= x"20"; + when x"EDF" => DATA <= x"CD"; + when x"EE0" => DATA <= x"71"; + when x"EE1" => DATA <= x"F6"; + when x"EE2" => DATA <= x"C9"; + when x"EE3" => DATA <= x"3A"; + when x"EE4" => DATA <= x"81"; + when x"EE5" => DATA <= x"FF"; + when x"EE6" => DATA <= x"E6"; + when x"EE7" => DATA <= x"01"; + when x"EE8" => DATA <= x"32"; + when x"EE9" => DATA <= x"81"; + when x"EEA" => DATA <= x"FF"; + when x"EEB" => DATA <= x"C9"; + when x"EEC" => DATA <= x"3E"; + when x"EED" => DATA <= x"87"; + when x"EEE" => DATA <= x"CD"; + when x"EEF" => DATA <= x"8E"; + when x"EF0" => DATA <= x"F8"; + when x"EF1" => DATA <= x"7C"; + when x"EF2" => DATA <= x"FE"; + when x"EF3" => DATA <= x"03"; + when x"EF4" => DATA <= x"C9"; + when x"EF5" => DATA <= x"3E"; + when x"EF6" => DATA <= x"86"; + when x"EF7" => DATA <= x"CD"; + when x"EF8" => DATA <= x"8E"; + when x"EF9" => DATA <= x"F8"; + when x"EFA" => DATA <= x"7D"; + when x"EFB" => DATA <= x"32"; + when x"EFC" => DATA <= x"11"; + when x"EFD" => DATA <= x"FF"; + when x"EFE" => DATA <= x"32"; + when x"EFF" => DATA <= x"1E"; + when x"F00" => DATA <= x"FF"; + when x"F01" => DATA <= x"7C"; + when x"F02" => DATA <= x"32"; + when x"F03" => DATA <= x"12"; + when x"F04" => DATA <= x"FF"; + when x"F05" => DATA <= x"32"; + when x"F06" => DATA <= x"14"; + when x"F07" => DATA <= x"FF"; + when x"F08" => DATA <= x"32"; + when x"F09" => DATA <= x"1F"; + when x"F0A" => DATA <= x"FF"; + when x"F0B" => DATA <= x"3C"; + when x"F0C" => DATA <= x"32"; + when x"F0D" => DATA <= x"1A"; + when x"F0E" => DATA <= x"FF"; + when x"F0F" => DATA <= x"C9"; + when x"F10" => DATA <= x"1C"; + when x"F11" => DATA <= x"C4"; + when x"F12" => DATA <= x"48"; + when x"F13" => DATA <= x"4F"; + when x"F14" => DATA <= x"C1"; + when x"F15" => DATA <= x"0C"; + when x"F16" => DATA <= x"1C"; + when x"F17" => DATA <= x"00"; + when x"F18" => DATA <= x"1F"; + when x"F19" => DATA <= x"4F"; + when x"F1A" => DATA <= x"48"; + when x"F1B" => DATA <= x"0C"; + when x"F1C" => DATA <= x"1A"; + when x"F1D" => DATA <= x"1F"; + when x"F1E" => DATA <= x"22"; + when x"F1F" => DATA <= x"28"; + when x"F20" => DATA <= x"00"; + when x"F21" => DATA <= x"00"; + when x"F22" => DATA <= x"00"; + when x"F23" => DATA <= x"28"; + when x"F24" => DATA <= x"43"; + when x"F25" => DATA <= x"29"; + when x"F26" => DATA <= x"3B"; + when x"F27" => DATA <= x"36"; + when x"F28" => DATA <= x"00"; + when x"F29" => DATA <= x"21"; + when x"F2A" => DATA <= x"2A"; + when x"F2B" => DATA <= x"3B"; + when x"F2C" => DATA <= x"C3"; + when x"F2D" => DATA <= x"77"; + when x"F2E" => DATA <= x"19"; + when x"F2F" => DATA <= x"C5"; + when x"F30" => DATA <= x"E5"; + when x"F31" => DATA <= x"7E"; + when x"F32" => DATA <= x"E6"; + when x"F33" => DATA <= x"03"; + when x"F34" => DATA <= x"47"; + when x"F35" => DATA <= x"0E"; + when x"F36" => DATA <= x"06"; + when x"F37" => DATA <= x"23"; + when x"F38" => DATA <= x"5E"; + when x"F39" => DATA <= x"23"; + when x"F3A" => DATA <= x"56"; + when x"F3B" => DATA <= x"CD"; + when x"F3C" => DATA <= x"48"; + when x"F3D" => DATA <= x"1A"; + when x"F3E" => DATA <= x"E1"; + when x"F3F" => DATA <= x"C1"; + when x"F40" => DATA <= x"C9"; + when x"F41" => DATA <= x"53"; + when x"F42" => DATA <= x"00"; + when x"F43" => DATA <= x"00"; + when x"F44" => DATA <= x"00"; + when x"F45" => DATA <= x"00"; + when x"F46" => DATA <= x"00"; + when x"F47" => DATA <= x"02"; + when x"F48" => DATA <= x"00"; + when x"F49" => DATA <= x"00"; + when x"F4A" => DATA <= x"00"; + when x"F4B" => DATA <= x"00"; + when x"F4C" => DATA <= x"0A"; + when x"F4D" => DATA <= x"00"; + when x"F4E" => DATA <= x"00"; + when x"F4F" => DATA <= x"00"; + when x"F50" => DATA <= x"00"; + when x"F51" => DATA <= x"00"; + when x"F52" => DATA <= x"00"; + when x"F53" => DATA <= x"00"; + when x"F54" => DATA <= x"00"; + when x"F55" => DATA <= x"00"; + when x"F56" => DATA <= x"00"; + when x"F57" => DATA <= x"00"; + when x"F58" => DATA <= x"00"; + when x"F59" => DATA <= x"00"; + when x"F5A" => DATA <= x"00"; + when x"F5B" => DATA <= x"00"; + when x"F5C" => DATA <= x"00"; + when x"F5D" => DATA <= x"00"; + when x"F5E" => DATA <= x"00"; + when x"F5F" => DATA <= x"00"; + when x"F60" => DATA <= x"00"; + when x"F61" => DATA <= x"00"; + when x"F62" => DATA <= x"00"; + when x"F63" => DATA <= x"00"; + when x"F64" => DATA <= x"00"; + when x"F65" => DATA <= x"00"; + when x"F66" => DATA <= x"00"; + when x"F67" => DATA <= x"00"; + when x"F68" => DATA <= x"00"; + when x"F69" => DATA <= x"00"; + when x"F6A" => DATA <= x"00"; + when x"F6B" => DATA <= x"00"; + when x"F6C" => DATA <= x"00"; + when x"F6D" => DATA <= x"00"; + when x"F6E" => DATA <= x"00"; + when x"F6F" => DATA <= x"00"; + when x"F70" => DATA <= x"00"; + when x"F71" => DATA <= x"00"; + when x"F72" => DATA <= x"00"; + when x"F73" => DATA <= x"00"; + when x"F74" => DATA <= x"00"; + when x"F75" => DATA <= x"00"; + when x"F76" => DATA <= x"00"; + when x"F77" => DATA <= x"00"; + when x"F78" => DATA <= x"00"; + when x"F79" => DATA <= x"00"; + when x"F7A" => DATA <= x"00"; + when x"F7B" => DATA <= x"00"; + when x"F7C" => DATA <= x"00"; + when x"F7D" => DATA <= x"00"; + when x"F7E" => DATA <= x"00"; + when x"F7F" => DATA <= x"00"; + when x"F80" => DATA <= x"00"; + when x"F81" => DATA <= x"00"; + when x"F82" => DATA <= x"00"; + when x"F83" => DATA <= x"01"; + when x"F84" => DATA <= x"B2"; + when x"F85" => DATA <= x"FA"; + when x"F86" => DATA <= x"02"; + when x"F87" => DATA <= x"14"; + when x"F88" => DATA <= x"95"; + when x"F89" => DATA <= x"00"; + when x"F8A" => DATA <= x"01"; + when x"F8B" => DATA <= x"00"; + when x"F8C" => DATA <= x"00"; + when x"F8D" => DATA <= x"3C"; + when x"F8E" => DATA <= x"1A"; + when x"F8F" => DATA <= x"FF"; + when x"F90" => DATA <= x"FF"; + when x"F91" => DATA <= x"01"; + when x"F92" => DATA <= x"00"; + when x"F93" => DATA <= x"00"; + when x"F94" => DATA <= x"00"; + when x"F95" => DATA <= x"00"; + when x"F96" => DATA <= x"00"; + when x"F97" => DATA <= x"00"; + when x"F98" => DATA <= x"00"; + when x"F99" => DATA <= x"00"; + when x"F9A" => DATA <= x"74"; + when x"F9B" => DATA <= x"4C"; + when x"F9C" => DATA <= x"D6"; + when x"F9D" => DATA <= x"5E"; + when x"F9E" => DATA <= x"C3"; + when x"F9F" => DATA <= x"71"; + when x"FA0" => DATA <= x"F6"; + when x"FA1" => DATA <= x"C3"; + when x"FA2" => DATA <= x"AE"; + when x"FA3" => DATA <= x"F5"; + when x"FA4" => DATA <= x"C3"; + when x"FA5" => DATA <= x"5C"; + when x"FA6" => DATA <= x"F5"; + when x"FA7" => DATA <= x"C3"; + when x"FA8" => DATA <= x"3B"; + when x"FA9" => DATA <= x"F5"; + when x"FAA" => DATA <= x"C3"; + when x"FAB" => DATA <= x"76"; + when x"FAC" => DATA <= x"F4"; + when x"FAD" => DATA <= x"C3"; + when x"FAE" => DATA <= x"71"; + when x"FAF" => DATA <= x"F4"; + when x"FB0" => DATA <= x"C3"; + when x"FB1" => DATA <= x"FD"; + when x"FB2" => DATA <= x"FA"; + when x"FB3" => DATA <= x"C3"; + when x"FB4" => DATA <= x"0E"; + when x"FB5" => DATA <= x"F6"; + when x"FB6" => DATA <= x"C3"; + when x"FB7" => DATA <= x"0E"; + when x"FB8" => DATA <= x"FE"; + when x"FB9" => DATA <= x"C3"; + when x"FBA" => DATA <= x"CE"; + when x"FBB" => DATA <= x"F2"; + when x"FBC" => DATA <= x"C3"; + when x"FBD" => DATA <= x"A4"; + when x"FBE" => DATA <= x"FA"; + when x"FBF" => DATA <= x"C3"; + when x"FC0" => DATA <= x"5E"; + when x"FC1" => DATA <= x"F6"; + when x"FC2" => DATA <= x"C3"; + when x"FC3" => DATA <= x"1B"; + when x"FC4" => DATA <= x"F6"; + when x"FC5" => DATA <= x"C3"; + when x"FC6" => DATA <= x"3F"; + when x"FC7" => DATA <= x"F6"; + when x"FC8" => DATA <= x"C3"; + when x"FC9" => DATA <= x"DE"; + when x"FCA" => DATA <= x"FD"; + when x"FCB" => DATA <= x"C3"; + when x"FCC" => DATA <= x"E8"; + when x"FCD" => DATA <= x"F8"; + when x"FCE" => DATA <= x"C3"; + when x"FCF" => DATA <= x"D2"; + when x"FD0" => DATA <= x"F9"; + when x"FD1" => DATA <= x"C3"; + when x"FD2" => DATA <= x"4E"; + when x"FD3" => DATA <= x"FA"; + when x"FD4" => DATA <= x"C3"; + when x"FD5" => DATA <= x"FC"; + when x"FD6" => DATA <= x"F9"; + when x"FD7" => DATA <= x"C3"; + when x"FD8" => DATA <= x"F0"; + when x"FD9" => DATA <= x"F9"; + when x"FDA" => DATA <= x"C3"; + when x"FDB" => DATA <= x"9F"; + when x"FDC" => DATA <= x"F9"; + when x"FDD" => DATA <= x"C3"; + when x"FDE" => DATA <= x"10"; + when x"FDF" => DATA <= x"FA"; + when x"FE0" => DATA <= x"C3"; + when x"FE1" => DATA <= x"90"; + when x"FE2" => DATA <= x"F6"; + when x"FE3" => DATA <= x"FE"; + when x"FE4" => DATA <= x"0D"; + when x"FE5" => DATA <= x"20"; + when x"FE6" => DATA <= x"07"; + when x"FE7" => DATA <= x"3E"; + when x"FE8" => DATA <= x"0A"; + when x"FE9" => DATA <= x"CD"; + when x"FEA" => DATA <= x"EE"; + when x"FEB" => DATA <= x"FF"; + when x"FEC" => DATA <= x"3E"; + when x"FED" => DATA <= x"0D"; + when x"FEE" => DATA <= x"C3"; + when x"FEF" => DATA <= x"71"; + when x"FF0" => DATA <= x"F6"; + when x"FF1" => DATA <= x"C3"; + when x"FF2" => DATA <= x"EF"; + when x"FF3" => DATA <= x"F8"; + when x"FF4" => DATA <= x"C3"; + when x"FF5" => DATA <= x"8E"; + when x"FF6" => DATA <= x"F8"; + when x"FF7" => DATA <= x"C3"; + when x"FF8" => DATA <= x"B7"; + when x"FF9" => DATA <= x"F6"; + when x"FFA" => DATA <= x"AC"; + when x"FFB" => DATA <= x"FA"; + when x"FFC" => DATA <= x"70"; + when x"FFD" => DATA <= x"F6"; + when x"FFE" => DATA <= x"82"; + when x"FFF" => DATA <= x"FA"; + when others => DATA <= (others => '0'); + end case; + end process; +end RTL; From 4bbabf28a2bef7880127e7faf3e9bb65672ceea5 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 22 Feb 2015 17:57:12 +0000 Subject: [PATCH 14/61] 6502fast Co Pro: Moved the clock speed banner logic into the core, so ROM gets implemented as distributed RAM not random logic Change-Id: Ie03981430c648a6807eb78622964efe970ac8db1 --- LX9Co-6502fast.xise | 2 +- src/LX9Co_CoPro6502fast.vhd | 54 ++++++++++++++++++++----------- src/ROM/tuberom_65c102_banner.vhd | 20 ++---------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index 60fe357..d3cc051 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -132,7 +132,7 @@ - + diff --git a/src/LX9Co_CoPro6502fast.vhd b/src/LX9Co_CoPro6502fast.vhd index 34446d8..243450b 100644 --- a/src/LX9Co_CoPro6502fast.vhd +++ b/src/LX9Co_CoPro6502fast.vhd @@ -12,14 +12,11 @@ entity LX9CoPro6502fast is port ( -- GOP Signals fastclk : in std_logic; - --tp : out std_logic_vector(8 downto 2); test : out std_logic_vector(8 downto 1); sw : in std_logic_vector(2 downto 1); - --sw : in std_logic_vector(2 downto 1); - --fcs : out std_logic; - -- Tube signals (use 16 out of 22 DIL pins) - h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks + -- Tube signals + h_phi2 : in std_logic; h_addr : in std_logic_vector(2 downto 0); h_data : inout std_logic_vector(7 downto 0); h_rdnw : in std_logic; @@ -53,7 +50,6 @@ architecture BEHAVIORAL of LX9CoPro6502fast is port ( CLK : in std_logic; ADDR : in std_logic_vector(10 downto 0); - SW : in std_logic_vector(1 downto 0); DATA : out std_logic_vector(7 downto 0)); end component; @@ -126,8 +122,6 @@ architecture BEHAVIORAL of LX9CoPro6502fast is h_rdnw : in std_logic; h_rst_b : in std_logic; h_irq_b : inout std_logic; - -- drq : out std_logic; - -- dackb : in std_logic; p_addr : in std_logic_vector(2 downto 0); p_cs_b : in std_logic; p_data_in : in std_logic_vector(7 downto 0); @@ -194,6 +188,12 @@ architecture BEHAVIORAL of LX9CoPro6502fast is signal cpu_IRQ_n_sync : std_logic; signal cpu_NMI_n_sync : std_logic; signal sync : std_logic; + + signal digit1_cs_b : std_logic; + signal digit2_cs_b : std_logic; + signal digit1 : std_logic_vector (7 downto 0); + signal digit2 : std_logic_vector (7 downto 0); + begin --------------------------------------------------------------------- @@ -210,7 +210,6 @@ begin inst_tuberom : tuberom_65c102_banner port map ( CLK => clk_cpu, ADDR => cpu_addr(10 downto 0), - SW => SW, DATA => rom_data_out ); @@ -302,26 +301,43 @@ begin rom_cs_b <= '0' when cpu_addr(15 downto 11) = "11111" and cpu_R_W_n = '1' and bootmode = '1' else '1'; + digit1_cs_b <= '0' when rom_cs_b = '0' and cpu_addr(11 downto 0) = x"86F" else '1'; + digit2_cs_b <= '0' when rom_cs_b = '0' and cpu_addr(11 downto 0) = x"870" else '1'; + + -- Original: Acorn TUBE 65C102 Co-Processor + -- Updated: Acorn TUBE 32Mhz 65C102 Co-Pro + + digit1 <= x"33" when SW = "00" else + x"31" when SW = "01" else + x"30"; + + digit2 <= x"32" when SW = "00" else + x"36" when SW = "01" else + x"38" when SW = "10" else + x"34"; + ram_cs_b <= '0' when p_cs_b = '1' and rom_cs_b = '1' else '1'; ram_wr_int <= ((not ram_cs_b) and (not cpu_R_W_n) and cpu_clken); cpu_din <= - p_data_out when p_cs_b = '0' else - rom_data_out when rom_cs_b = '0' else - ram_data_out when ram_cs_b = '0' else + p_data_out when p_cs_b = '0' else + digit1 when digit1_cs_b = '0' else + digit2 when digit2_cs_b = '0' else + rom_data_out when rom_cs_b = '0' else + ram_data_out when ram_cs_b = '0' else x"f1"; -------------------------------------------------------- -- external Ram unused -------------------------------------------------------- - ram_ub_b <= '1'; - ram_lb_b <= '1'; - ram_cs <= '1'; - ram_oe <= '1'; - ram_wr <= '1'; - ram_addr <= (others => '1'); - ram_data <= (others => '1'); + ram_ub_b <= '1'; + ram_lb_b <= '1'; + ram_cs <= '1'; + ram_oe <= '1'; + ram_wr <= '1'; + ram_addr <= (others => '1'); + ram_data <= (others => '1'); -------------------------------------------------------- -- test signals diff --git a/src/ROM/tuberom_65c102_banner.vhd b/src/ROM/tuberom_65c102_banner.vhd index 29ad2e5..26664b6 100644 --- a/src/ROM/tuberom_65c102_banner.vhd +++ b/src/ROM/tuberom_65c102_banner.vhd @@ -6,7 +6,6 @@ entity tuberom_65c102_banner is port ( CLK : in std_logic; ADDR : in std_logic_vector(10 downto 0); - SW : in std_logic_vector(1 downto 0); DATA : out std_logic_vector(7 downto 0) ); end; @@ -14,9 +13,6 @@ end; architecture RTL of tuberom_65c102_banner is signal rom_addr : std_logic_vector(11 downto 0); - - signal digit1 : std_logic_vector(7 downto 0); - signal digit2 : std_logic_vector(7 downto 0); begin @@ -26,18 +22,6 @@ begin rom_addr(10 downto 0) <= ADDR; end process; - -- Original: Acorn TUBE 65C102 Co-Processor - -- Updated: Acorn TUBE 32Mhz 65C102 Co-Pro - - digit1 <= x"33" when SW = "00" else - x"31" when SW = "01" else - x"30"; - - digit2 <= x"32" when SW = "00" else - x"36" when SW = "01" else - x"38" when SW = "10" else - x"34"; - p_rom : process begin wait until rising_edge(CLK); @@ -154,8 +138,8 @@ begin when x"06C" => DATA <= x"42"; when x"06D" => DATA <= x"45"; when x"06E" => DATA <= x"20"; - when x"06F" => DATA <= digit1; - when x"070" => DATA <= digit2; + when x"06F" => DATA <= x"3F"; + when x"070" => DATA <= x"3F"; when x"071" => DATA <= x"4D"; when x"072" => DATA <= x"48"; when x"073" => DATA <= x"7A"; From a7bf885deb9bd42c79053e31ea6a9e3398e255b8 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 22 Feb 2015 19:05:00 +0000 Subject: [PATCH 15/61] Co Pro Z80 Fast: Updated to NextZ80 core running at equivalent of 112/56/32/16 MHz Change-Id: I446e4e32e9feb76c4396d5ca718959ea8cb3db18 --- LX9Co-z80fast.xise | 30 +- src/DCM/dcm_32_56.vhd | 64 ++ src/LX9Co_CoProZ80fast.vhd | 171 +++- src/NextZ80/NextZ80ALU.v | 372 ++++++++ src/NextZ80/NextZ80CPU.v | 1498 ++++++++++++++++++++++++++++++++ src/NextZ80/NextZ80Reg.v | 199 +++++ src/ROM/tuberom_z80_banner.vhd | 31 +- 7 files changed, 2286 insertions(+), 79 deletions(-) create mode 100644 src/DCM/dcm_32_56.vhd create mode 100644 src/NextZ80/NextZ80ALU.v create mode 100644 src/NextZ80/NextZ80CPU.v create mode 100644 src/NextZ80/NextZ80Reg.v diff --git a/LX9Co-z80fast.xise b/LX9Co-z80fast.xise index af06766..551f3d4 100644 --- a/LX9Co-z80fast.xise +++ b/LX9Co-z80fast.xise @@ -40,10 +40,10 @@
- + - + @@ -61,7 +61,7 @@ - + @@ -77,15 +77,27 @@ - + - - + + - + + + + + - + + + + + + + + + @@ -114,7 +126,7 @@ - + diff --git a/src/DCM/dcm_32_56.vhd b/src/DCM/dcm_32_56.vhd new file mode 100644 index 0000000..34c6ed5 --- /dev/null +++ b/src/DCM/dcm_32_56.vhd @@ -0,0 +1,64 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library UNISIM; +use UNISIM.Vcomponents.all; + +entity dcm_32_56 is + port (CLKIN_IN : in std_logic; + CLK0_OUT : out std_logic; + CLK0_OUT1 : out std_logic; + CLK2X_OUT : out std_logic); +end dcm_32_56; + +architecture BEHAVIORAL of dcm_32_56 is + signal CLKFX_BUF : std_logic; + signal CLK2X_BUF : std_logic; + signal CLKIN_IBUFG : std_logic; + signal GND_BIT : std_logic; +begin + + GND_BIT <= '0'; + + CLKFX_BUFG_INST : BUFG + port map (I => CLKFX_BUF, O => CLK0_OUT); + + CLK2X_BUFG_INST : BUFG + port map (I => CLK2X_BUF, O => CLK2X_OUT); + + DCM_INST : DCM + generic map(CLK_FEEDBACK => "NONE", + CLKDV_DIVIDE => 4.0, -- 56.00 = 32.000 * 7/4 + CLKFX_MULTIPLY => 7, + CLKFX_DIVIDE => 4, + CLKIN_DIVIDE_BY_2 => false, + CLKIN_PERIOD => 31.25, + CLKOUT_PHASE_SHIFT => "NONE", + DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", + DFS_FREQUENCY_MODE => "LOW", + DLL_FREQUENCY_MODE => "LOW", + DUTY_CYCLE_CORRECTION => true, + FACTORY_JF => x"C080", + PHASE_SHIFT => 0, + STARTUP_WAIT => false) + port map (CLKFB => GND_BIT, + CLKIN => CLKIN_IN, + DSSEN => GND_BIT, + PSCLK => GND_BIT, + PSEN => GND_BIT, + PSINCDEC => GND_BIT, + RST => GND_BIT, + CLKDV => open, + CLKFX => CLKFX_BUF, + CLKFX180 => open, + CLK0 => open, + CLK2X => CLK2X_BUF, + CLK2X180 => open, + CLK90 => open, + CLK180 => open, + CLK270 => open, + LOCKED => open, + PSDONE => open, + STATUS => open); + +end BEHAVIORAL; diff --git a/src/LX9Co_CoProZ80fast.vhd b/src/LX9Co_CoProZ80fast.vhd index 8d8ebc0..cc095f7 100644 --- a/src/LX9Co_CoProZ80fast.vhd +++ b/src/LX9Co_CoProZ80fast.vhd @@ -4,6 +4,10 @@ use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity LX9CoProZ80fast is + generic ( + UseT80Core : boolean := false; + UseNextCore : boolean := true + ); port ( -- GOP Signals fastclk : in std_logic; @@ -19,10 +23,9 @@ entity LX9CoProZ80fast is h_rst_b : in std_logic; h_irq_b : inout std_logic; - - -- Ram Signals - ram_ub_b : out std_logic; - ram_lb_b : out std_logic; + -- Ram Signals + ram_ub_b : out std_logic; + ram_lb_b : out std_logic; ram_cs : out std_logic; ram_oe : out std_logic; ram_wr : out std_logic; @@ -33,7 +36,7 @@ end LX9CoProZ80fast; architecture BEHAVIORAL of LX9CoProZ80fast is - component dcm_32_72 + component dcm_32_56 port ( CLKIN_IN : in std_logic; CLK0_OUT : out std_logic; @@ -46,7 +49,6 @@ architecture BEHAVIORAL of LX9CoProZ80fast is port ( CLK : in std_logic; ADDR : in std_logic_vector(11 downto 0); - SW : in std_logic_vector(1 downto 0); DATA : out std_logic_vector(7 downto 0)); end component; @@ -72,6 +74,24 @@ architecture BEHAVIORAL of LX9CoProZ80fast is DO : out std_logic_vector(7 downto 0) ); end component; + + component NextZ80 + port( + DI : in std_logic_vector(7 downto 0); + CLK : in std_logic; + RESET : in std_logic; + INT : in std_logic; + NMI : in std_logic; + WT : in std_logic; + DO : out std_logic_vector(7 downto 0); + ADDR : out std_logic_vector(15 downto 0); + WR : out std_logic; + MREQ : out std_logic; + IORQ : out std_logic; + HALT : out std_logic; + M1 : out std_logic + ); + end component; component tube port( @@ -130,7 +150,7 @@ architecture BEHAVIORAL of LX9CoProZ80fast is signal ram_cs_b : std_logic; signal ram_oe_int : std_logic; - signal ram_wr_int : std_logic; + signal ram_wr_int : std_logic; signal rom_cs_b : std_logic; signal rom_data_out : std_logic_vector (7 downto 0); signal ram_data_out : std_logic_vector (7 downto 0); @@ -151,6 +171,17 @@ architecture BEHAVIORAL of LX9CoProZ80fast is signal cpu_NMI_n : std_logic; signal cpu_IRQ_n_sync : std_logic; signal cpu_NMI_n_sync : std_logic; + signal cpu_m1 : std_logic; + signal cpu_mreq : std_logic; + signal cpu_iorq : std_logic; + signal cpu_wr : std_logic; + + signal digit1_cs_b : std_logic; + signal digit2_cs_b : std_logic; + signal digit3_cs_b : std_logic; + signal digit1 : std_logic_vector (7 downto 0); + signal digit2 : std_logic_vector (7 downto 0); + signal digit3 : std_logic_vector (7 downto 0); begin @@ -158,7 +189,7 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_72 : dcm_32_72 port map ( + inst_dcm_32_56 : dcm_32_56 port map ( CLKIN_IN => fastclk, CLK0_OUT => cpu_clk, CLK0_OUT1 => open, @@ -168,30 +199,54 @@ begin inst_tuberom : tuberom_z80_banner port map ( CLK => cpu_clk, ADDR => cpu_addr(11 downto 0), - SW => sw(2 downto 1), DATA => rom_data_out ); - inst_Z80 : T80se port map ( - RESET_n => RSTn_sync, - CLK_n => cpu_clk, - CLKEN => cpu_clken, - WAIT_n => '1', - INT_n => cpu_IRQ_n_sync, - NMI_n => cpu_NMI_n_sync, - BUSRQ_n => '1', - M1_n => cpu_m1_n, - MREQ_n => cpu_mreq_n, - IORQ_n => cpu_iorq_n, - RD_n => cpu_rd_n, - WR_n => cpu_wr_n, - RFSH_n => open, - HALT_n => open, - BUSAK_n => open, - A => cpu_addr, - DI => cpu_din, - DO => cpu_dout - ); + GenT80Core: if UseT80Core generate + inst_Z80 : T80se port map ( + RESET_n => RSTn_sync, + CLK_n => cpu_clk, + CLKEN => cpu_clken, + WAIT_n => '1', + INT_n => cpu_IRQ_n_sync, + NMI_n => cpu_NMI_n_sync, + BUSRQ_n => '1', + M1_n => cpu_m1_n, + MREQ_n => cpu_mreq_n, + IORQ_n => cpu_iorq_n, + RD_n => cpu_rd_n, + WR_n => cpu_wr_n, + RFSH_n => open, + HALT_n => open, + BUSAK_n => open, + A => cpu_addr, + DI => cpu_din, + DO => cpu_dout + ); + end generate; + + GenNextCore: if UseNextCore generate + Inst_Z80: NextZ80 PORT MAP( + RESET => not RSTn_sync, + CLK => cpu_clk, + WT => not cpu_clken, + INT => not cpu_IRQ_n_sync, + NMI => not cpu_NMI_n_sync, + M1 => cpu_m1, + MREQ => cpu_mreq, + IORQ => cpu_iorq, + WR => cpu_wr, + HALT => open, + ADDR => cpu_addr, + DI => cpu_din, + DO => cpu_dout + ); + cpu_m1_n <= not cpu_m1; + cpu_mreq_n <= not cpu_mreq; + cpu_iorq_n <= not cpu_iorq; + cpu_rd_n <= cpu_wr; + cpu_wr_n <= not cpu_wr; + end generate; inst_tube: tube port map ( h_addr => h_addr, @@ -222,31 +277,55 @@ begin D_uP => cpu_dout, Q_uP => ram_data_out ); + p_cs_b <= '0' when cpu_mreq_n = '1' and cpu_iorq_n = '0' and cpu_addr(7 downto 3) = "00000" else '1'; rom_cs_b <= '0' when cpu_mreq_n = '0' and cpu_rd_n = '0' and bootmode = '1' else '1'; + + digit1_cs_b <= '0' when rom_cs_b = '0' and cpu_addr(11 downto 0) = x"2A2" else '1'; + digit2_cs_b <= '0' when rom_cs_b = '0' and cpu_addr(11 downto 0) = x"2A3" else '1'; + digit3_cs_b <= '0' when rom_cs_b = '0' and cpu_addr(11 downto 0) = x"2A4" else '1'; + + -- Original: Acorn TUBE Z80 64k 1.21 + -- Updated: Acorn TUBE Z80 112 Mhz + + digit1 <= x"31" when SW = "00" else + x"06"; + + digit2 <= x"31" when SW = "00" else + x"35" when SW = "01" else + x"33" when SW = "10" else + x"31"; + + digit3 <= x"32" when SW = "00" else + x"36" when SW = "01" else + x"32" when SW = "10" else + x"36"; ram_cs_b <= '0' when cpu_mreq_n = '0' and rom_cs_b = '1' else '1'; ram_wr_int <= ((not ram_cs_b) and (not cpu_wr_n) and cpu_clken); cpu_din <= - p_data_out when p_cs_b = '0' else - rom_data_out when rom_cs_b = '0' else - ram_data_out when ram_cs_b = '0' else + p_data_out when p_cs_b = '0' else + digit1 when digit1_cs_b = '0' else + digit2 when digit2_cs_b = '0' else + digit3 when digit3_cs_b = '0' else + rom_data_out when rom_cs_b = '0' else + ram_data_out when ram_cs_b = '0' else x"fe"; -------------------------------------------------------- -- external Ram unused -------------------------------------------------------- - ram_ub_b <= '1'; - ram_lb_b <= '1'; - ram_cs <= '1'; - ram_oe <= '1'; - ram_wr <= '1'; - ram_addr <= (others => '1'); - ram_data <= (others => '1'); + ram_ub_b <= '1'; + ram_lb_b <= '1'; + ram_cs <= '1'; + ram_oe <= '1'; + ram_wr <= '1'; + ram_addr <= (others => '1'); + ram_data <= (others => '1'); -------------------------------------------------------- -- test signals @@ -299,10 +378,10 @@ begin -------------------------------------------------------- -- clock enable generator --- 00 - 36MHz = 72 / 2 --- 01 - 24MHz = 72 / 3 --- 10 - 12MHz = 72 / 6 --- 11 - 08MHz = 72 / 9 +-- 00 - 28MHz = 56 / 2 +-- 01 - 14MHz = 56 / 4 +-- 10 - 08MHz = 56 / 7 +-- 11 - 04MHz = 56 / 14 -------------------------------------------------------- clk_gen : process(cpu_clk) @@ -316,19 +395,19 @@ begin clken_counter <= clken_counter + 1; end if; when x"1" => - if (clken_counter = 2) then + if (clken_counter = 3) then clken_counter <= (others => '0'); else clken_counter <= clken_counter + 1; end if; when x"2" => - if (clken_counter = 5) then + if (clken_counter = 6) then clken_counter <= (others => '0'); else clken_counter <= clken_counter + 1; end if; when others => - if (clken_counter = 8) then + if (clken_counter = 13) then clken_counter <= (others => '0'); else clken_counter <= clken_counter + 1; diff --git a/src/NextZ80/NextZ80ALU.v b/src/NextZ80/NextZ80ALU.v new file mode 100644 index 0000000..e42415c --- /dev/null +++ b/src/NextZ80/NextZ80ALU.v @@ -0,0 +1,372 @@ +////////////////////////////////////////////////////////////////////////////////// +// +// This file is part of the NextZ80 project +// http://www.opencores.org/cores/nextz80/ +// +// Filename: NextZ80ALU.v +// Description: Implementation of Z80 compatible CPU - ALU +// Version 1.0 +// Creation date: 28Jan2011 - 18Mar2011 +// +// Author: Nicolae Dumitrache +// e-mail: ndumitrache@opencores.org +// +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2011 Nicolae Dumitrache +// +// This source file may be used and distributed without +// restriction provided that this copyright statement is not +// removed from the file and that any derivative work contains +// the original copyright notice and the associated disclaimer. +// +// This source file is free software; you can redistribute it +// and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any +// later version. +// +// This source 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 Lesser General Public License for more +// details. +// +// You should have received a copy of the GNU Lesser General +// Public License along with this source; if not, download it +// from http://www.opencores.org/lgpl.shtml +// +/////////////////////////////////////////////////////////////////////////////////// + +//FLAGS: S Z X1 N X2 PV N C +// OP[4:0] +// 00000 - ADD D0,D1 +// 00001 - ADC D0,D1 +// 00010 - SUB D0,D1 +// 00011 - SBC D0,D1 +// 00100 - AND D0,D1 +// 00101 - XOR D0,D1 +// 00110 - OR D0,D1 +// 00111 - CP D0,D1 +// 01000 - INC D0 +// 01001 - CPL D0 +// 01010 - DEC D0 +// 01011 - RRD +// 01100 - RLD +// 01101 - DAA +// 01110 - INC16 +// 01111 - DEC16 +// 10000 - ADD16LO +// 10001 - ADD16HI +// 10010 - +// 10011 - +// 10100 - CCF, pass D0 +// 10101 - SCF, pass D0 +// 10110 - +// 10111 - +// 11000 - RLCA D0 +// 11001 - RRCA D0 +// 11010 - RLA D0 +// 11011 - RRA D0 +// 11100 - {ROT, BIT, SET, RES} D0,EXOP +// RLC D0 C <-- D0 <-- D0[7] +// RRC D0 D0[0] --> D0 --> C +// RL D0 C <-- D0 <-- C +// RR D0 C --> D0 --> C +// SLA D0 C <-- D0 <-- 0 +// SRA D0 D0[7] --> D0 --> C +// SLL D0 C <-- D0 <-- 1 +// SRL D0 0 --> D0 --> C +// 11101 - IN, pass D1 +// 11110 - FLAGS <- D0 +// 11111 - NEG D1 +/////////////////////////////////////////////////////////////////////////////////// +`timescale 1ns / 1ps + +module ALU8( + input [7:0] D0, + input [7:0] D1, + input [7:0] FIN, + output reg[7:0] FOUT, + output reg [15:0] ALU8DOUT, + input [4:0] OP, + input [5:0] EXOP, // EXOP[5:4] = 2'b11 for CPI/D/R + input LDIFLAGS, // zero HF and NF on inc/dec16 + input DSTHI // destination lo + ); + + wire [7:0] daaadjust; + wire cdaa, hdaa; + daa daa_adjust(.flags(FIN), .val(D0), .adjust(daaadjust), .cdaa(cdaa), .hdaa(hdaa)); + + wire parity = ~^ALU8DOUT[15:8]; + wire zero = ALU8DOUT[15:8] == 0; + reg csin, cin; + wire [7:0]d0mux = OP[4:1] == 4'b1111 ? 0 : D0; + reg [7:0]_d1mux; + wire [7:0]d1mux = OP[1] ? ~_d1mux : _d1mux; + wire [8:0]sum; + wire hf; + assign {hf, sum[3:0]} = d0mux[3:0] + d1mux[3:0] + cin; + assign sum[8:4] = d0mux[7:4] + d1mux[7:4] + hf; + wire overflow = (d0mux[7] & d1mux[7] & !sum[7]) | (!d0mux[7] & !d1mux[7] & sum[7]); + reg [7:0]dbit; + + always @* begin + ALU8DOUT = 16'hxxxx; + FOUT = 8'hxx; + case({OP[4:2]}) + 0,1,4,7: _d1mux = D1; + 2: _d1mux = 1; + 3: _d1mux = daaadjust; // DAA + 6,5: _d1mux = 8'hxx; + endcase + case({OP[2:0], FIN[0]}) + 0,1,2,7,8,9,10,11,12,13: cin = 0; + 3,4,5,6,14,15: cin = 1; + endcase + case(EXOP[3:0]) + 0: dbit = 8'b11111110; + 1: dbit = 8'b11111101; + 2: dbit = 8'b11111011; + 3: dbit = 8'b11110111; + 4: dbit = 8'b11101111; + 5: dbit = 8'b11011111; + 6: dbit = 8'b10111111; + 7: dbit = 8'b01111111; + 8: dbit = 8'b00000001; + 9: dbit = 8'b00000010; + 10: dbit = 8'b00000100; + 11: dbit = 8'b00001000; + 12: dbit = 8'b00010000; + 13: dbit = 8'b00100000; + 14: dbit = 8'b01000000; + 15: dbit = 8'b10000000; + endcase + case(OP[3] ? EXOP[2:0] : OP[2:0]) + 0,5: csin = D0[7]; + 1: csin = D0[0]; + 2,3: csin = FIN[0]; + 4,7: csin = 0; + 6: csin = 1; + endcase + case(OP[4:0]) + 0,1,2,3,8,10: begin // ADD, ADC, SUB, SBC, INC, DEC + ALU8DOUT[15:8] = sum[7:0]; + ALU8DOUT[7:0] = sum[7:0]; + FOUT[0] = OP[3] ? FIN[0] : (sum[8] ^ OP[1]); // inc/dec + FOUT[1] = OP[1]; + FOUT[2] = overflow; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = hf ^ OP[1]; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero & (FIN[6] | ~EXOP[5] | ~DSTHI | OP[3]); //(EXOP[5] & DSTHI) ? (zero & FIN[6]) : zero; // adc16/sbc16 + FOUT[7] = ALU8DOUT[15]; + end + 16,17: begin // ADD16LO, ADD16HI + ALU8DOUT[15:8] = sum[7:0]; + ALU8DOUT[7:0] = sum[7:0]; + FOUT[0] = sum[8]; + FOUT[1] = OP[1]; + FOUT[2] = FIN[2]; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = hf ^ OP[1]; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = FIN[6]; + FOUT[7] = FIN[7]; + end + 7: begin // CP + ALU8DOUT[15:8] = sum[7:0]; + FOUT[0] = EXOP[5] ? FIN[0] : !sum[8]; // CPI/D/R + FOUT[1] = OP[1]; + FOUT[2] = overflow; + FOUT[3] = D1[3]; + FOUT[4] = !hf; + FOUT[5] = D1[5]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 31: begin // NEG + ALU8DOUT[15:8] = sum[7:0]; + FOUT[0] = !sum[8]; + FOUT[1] = OP[1]; + FOUT[2] = overflow; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = !hf; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 4: begin // AND + ALU8DOUT[15:8] = D0 & D1; + FOUT[0] = 0; + FOUT[1] = 0; + FOUT[2] = parity; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = 1; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 5,6: begin //XOR, OR + ALU8DOUT[15:8] = OP[0] ? (D0 ^ D1) : (D0 | D1); + FOUT[0] = 0; + FOUT[1] = 0; + FOUT[2] = parity; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = 0; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 9: begin // CPL + ALU8DOUT[15:8] = ~D0; + FOUT[0] = FIN[0]; + FOUT[1] = 1; + FOUT[2] = FIN[2]; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = 1; + FOUT[5] = ALU8DOUT[13]; + FOUT[7:6] = FIN[7:6]; + end + 11,12: begin // RLD, RRD + if(OP[0]) ALU8DOUT = {D0[7:4], D1[3:0], D0[3:0], D1[7:4]}; + else ALU8DOUT = {D0[7:4], D1[7:0], D0[3:0]}; + FOUT[0] = FIN[0]; + FOUT[1] = 0; + FOUT[2] = parity; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = 0; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 13: begin // DAA + ALU8DOUT[15:8] = sum[7:0]; + FOUT[0] = cdaa; + FOUT[1] = FIN[1]; + FOUT[2] = parity; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = hdaa; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 14,15: begin // inc/dec 16 + ALU8DOUT = {D0, D1} + (OP[0] ? 16'hffff : 16'h0001); + FOUT[0] = FIN[0]; + FOUT[1] = LDIFLAGS ? 1'b0 : FIN[1]; + FOUT[2] = ALU8DOUT != 0; + FOUT[3] = FIN[3]; + FOUT[4] = LDIFLAGS ? 1'b0 : FIN[4]; + FOUT[5] = FIN[5]; + FOUT[6] = FIN[6]; + FOUT[7] = FIN[7]; + end + 20,21: begin // CCF, SCF + ALU8DOUT[15:8] = D0; + FOUT[0] = OP[0] ? 1'b1 : !FIN[0]; + FOUT[1] = 1'b0; + FOUT[2] = FIN[2]; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = OP[0] ? 1'b0 : FIN[0]; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = FIN[6]; + FOUT[7] = FIN[7]; + end + 24,25,26,27, 28: begin // ROT, BIT, RES, SET + case({OP[2], EXOP[4:3]}) + 0,1,2,3,4: // rot - shift + if(OP[2] ? EXOP[0] : OP[0]){ALU8DOUT[15:8], FOUT[0]} = {csin, D0}; // right + else {FOUT[0], ALU8DOUT[15:8]} = {D0, csin}; // left + 5,6: begin // BIT, RES + FOUT[0] = FIN[0]; + ALU8DOUT[15:8] = D0 & dbit; + end + 7: begin // SET + FOUT[0] = FIN[0]; + ALU8DOUT[15:8] = D0 | dbit; + end + endcase + ALU8DOUT[7:0] = ALU8DOUT[15:8]; + FOUT[1] = 0; + FOUT[2] = OP[2] ? (EXOP[3] ? zero : parity) : FIN[2]; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = OP[2] & EXOP[3]; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = OP[2] ? zero : FIN[6]; + FOUT[7] = OP[2] ? ALU8DOUT[15] : FIN[7]; + end + 29: begin // IN, pass D1 + ALU8DOUT = {D1, D1}; + FOUT[0] = FIN[0]; + FOUT[1] = 0; + FOUT[2] = parity; + FOUT[3] = ALU8DOUT[11]; + FOUT[4] = 0; + FOUT[5] = ALU8DOUT[13]; + FOUT[6] = zero; + FOUT[7] = ALU8DOUT[15]; + end + 30: FOUT = D0; // FLAGS <- D0 + default:; + endcase + end +endmodule + +module daa ( + input [7:0]flags, + input [7:0]val, + output wire [7:0]adjust, + output reg cdaa, + output reg hdaa + ); + + wire h08 = val[7:4] < 9; + wire h09 = val[7:4] < 10; + wire l05 = val[3:0] < 6; + wire l09 = val[3:0] < 10; + reg [1:0]aa; + assign adjust = ({1'b0, aa[1], aa[1], 2'b0, aa[0], aa[0], 1'b0} ^ {8{flags[1]}}) + flags[1]; + + always @* begin + case({flags[0], h08, h09, flags[4], l09}) + 5'b00101, 5'b01101: aa = 0; + 5'b00111, 5'b01111, 5'b01000, 5'b01010, 5'b01100, 5'b01110: aa = 1; + 5'b00001, 5'b01001, 5'b10001, 5'b10101, 5'b11001, 5'b11101: aa = 2; + default: aa = 3; + endcase + case({flags[0], h08, h09, l09}) + 4'b0011, 4'b0111, 4'b0100, 4'b0110: cdaa = 0; + default: cdaa = 1; + endcase + case({flags[1], flags[4], l05, l09}) + 4'b0000, 4'b0010, 4'b0100, 4'b0110, 4'b1110, 4'b1111: hdaa = 1; + default: hdaa = 0; + endcase + end +endmodule + + +module ALU16( + input [15:0] D0, + input [7:0] D1, + output wire[15:0] DOUT, + input [2:0]OP // 0-NOP, 1-INC, 2-INC2, 3-ADD, 4-NOP, 5-DEC, 6-DEC2 + ); + + reg [15:0] mux; + always @* + case(OP) + 0: mux = 0; // post inc + 1: mux = 1; // post inc + 2: mux = 2; // post inc + 3: mux = {D1[7], D1[7], D1[7], D1[7], D1[7], D1[7], D1[7], D1[7], D1[7:0]}; // post inc + 4: mux = 0; // no post inc + 5: mux = 16'hffff; // no post inc + 6: mux = 16'hfffe; // no post inc + default: mux = 16'hxxxx; + endcase + + assign DOUT = D0 + mux; +endmodule diff --git a/src/NextZ80/NextZ80CPU.v b/src/NextZ80/NextZ80CPU.v new file mode 100644 index 0000000..dedb0d3 --- /dev/null +++ b/src/NextZ80/NextZ80CPU.v @@ -0,0 +1,1498 @@ +////////////////////////////////////////////////////////////////////////////////// +// +// This file is part of the NextZ80 project +// http://www.opencores.org/cores/nextz80/ +// +// Filename: NextZ80CPU.v +// Description: Implementation of Z80 compatible CPU +// Version 1.0 +// Creation date: 28Jan2011 - 18Mar2011 +// +// Author: Nicolae Dumitrache +// e-mail: ndumitrache@opencores.org +// +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2011 Nicolae Dumitrache +// +// This source file may be used and distributed without +// restriction provided that this copyright statement is not +// removed from the file and that any derivative work contains +// the original copyright notice and the associated disclaimer. +// +// This source file is free software; you can redistribute it +// and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any +// later version. +// +// This source 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 Lesser General Public License for more +// details. +// +// You should have received a copy of the GNU Lesser General +// Public License along with this source; if not, download it +// from http://www.opencores.org/lgpl.shtml +// +/////////////////////////////////////////////////////////////////////////////////// +// +// Comments: +// This project was developed and tested on a XILINX Spartan3AN board. +// +// NextZ80 processor features: +// All documented/undocumented intstructions are implemented +// All documented/undocumented flags are implemented +// All (doc/undoc)flags are changed accordingly by all (doc/undoc)instructions. +// The block instructions (LDx, CPx, INx, OUTx) have only the documented effects on flags. +// The Bit n,(IX/IY+d) and BIT n,(HL) undocumented flags XF and YF are implemented like the BIT n,r and not actually like on the real Z80 CPU. +// All interrupt modes implemented: NMI, IM0, IM1, IM2 +// R register available +// Fast conditional jump/call/ret takes only 1 T state if not executed +// Fast block instructions: LDxR - 3 T states/byte, INxR/OTxR - 2 T states/byte, CPxR - 4 T states / byte +// Each CPU machine cycle takes (mainly) one clock T state. This makes this processor over 4 times faster than a Z80 at the same +// clock frequency (some instructions are up to 10 times faster). +// Works at ~40MHZ on Spartan XC3S700AN speed grade -4) +// Small size ( ~12% ~700 slices - on Spartan XC3S700AN ) +// Tested with ZEXDOC (fully compliant). +// Tested with ZEXALL (all OK except CPx(R), LDx(R), BIT n, (IX/IY+d), BIT n, (HL) - fail because of the un-documented XF and YF flags). +// +/////////////////////////////////////////////////////////////////////////////////// +`timescale 1ns / 1ps + +module NextZ80 +( + input wire[7:0] DI, + output wire[7:0] DO, + output wire[15:0] ADDR, + output reg WR, + output reg MREQ, + output reg IORQ, + output reg HALT, + output reg M1, + input wire CLK, + input wire RESET, + input wire INT, + input wire NMI, + input wire WT +); + +// connections and registers + reg [9:0] CPUStatus = 0; // 0=AF-AF', 1=HL-HL', 2=DE-HL, 3=DE'-HL', 4=HL-X, 5=IX-IY, 6=IFF1,7=IFF2, 9:8=IMODE + wire [7:0] ALU8FLAGS; + wire [7:0] FLAGS; + wire [7:0] ALU80; + wire [7:0] ALU81; + wire [15:0]ALU160; + wire [7:0] ALU161; + wire [15:0]ALU8OUT; + + reg [9:0] FETCH = 0; + reg [2:0] STAGE = 0; + wire [5:0] opd; + wire [2:0] op16; + wire op0mem = FETCH[2:0] == 6; + wire op1mem = FETCH[5:3] == 6; + reg [1:0]fetch98; + +// stage status + reg [1:0]DO_SEL; // ALU80 - th - flags - ALU8OUT[7:0] + reg ALU160_SEL; // regs - pc + reg DINW_SEL; // ALU8OUT - DI + reg [5:0]WE; // 5 = flags, 4 = PC, 3 = SP, 2 = tmpHI, 1 = hi, 0 = lo + reg [4:0] ALU8OP; + reg [2:0] ALU16OP; + reg next_stage; + reg [3:0]REG_WSEL; + reg [3:0]REG_RSEL; + reg [11:0]status; // 0=AF-AF', 1=HL-HL', 2=DE-HL, 3=DE'-HL', 4=HL-X, 5=IX-IY, 7:6=IFFVAL, 9:8=imode, 10=setIMODE, 11=set IFFVAL +// FETCH[5:3]: 000 NZ, 001 Z, 010 NC, 011 C, 100 PO, 101 PE, 110 P, 111 M + wire [7:0]FlagMux = {FLAGS[7], !FLAGS[7], FLAGS[2], !FLAGS[2], FLAGS[0], !FLAGS[0], FLAGS[6], !FLAGS[6]}; + reg tzf; + reg FNMI = 0, SNMI = 0; + reg SRESET = 0; + reg SINT = 0; + wire [2:0]intop = FETCH[1] ? 4 : (FETCH[0] ? 5 : 6); + reg xmask; + + Z80Reg CPU_REGS ( + .rstatus(CPUStatus[7:0]), + .M1(M1), + .WE(WE), + .CLK(CLK), + .ALU8OUT(ALU8OUT), + .DI(DI), + .DO(DO), + .ADDR(ADDR), + .CONST(FETCH[7] ? {2'b00, FETCH[5:3], 3'b000} : 8'h66), // RST/NMI address + .ALU80(ALU80), + .ALU81(ALU81), + .ALU160(ALU160), + .ALU161(ALU161), + .ALU8FLAGS(ALU8FLAGS), + .FLAGS(FLAGS), + .DO_SEL(DO_SEL), + .ALU160_sel(ALU160_SEL), + .REG_WSEL(REG_WSEL), + .REG_RSEL(REG_RSEL), + .DINW_SEL(DINW_SEL), + .XMASK(xmask), + .ALU16OP(ALU16OP), // used for post increment for ADDR, SP mux re-direct + .WAIT(WT) + ); + + ALU8 CPU_ALU8 ( + .D0(ALU80), + .D1(ALU81), + .FIN(FLAGS), + .FOUT(ALU8FLAGS), + .ALU8DOUT(ALU8OUT), + .OP(ALU8OP), + .EXOP(FETCH[8:3]), + .LDIFLAGS(REG_WSEL[2]), // inc16 HL + .DSTHI(!REG_WSEL[0]) + ); + + ALU16 CPU_ALU16 ( + .D0(ALU160), + .D1(ALU161), + .DOUT(ADDR), + .OP(ALU16OP) + ); + + always @(posedge CLK) + if(!WT) begin + SRESET <= RESET; + SNMI <= NMI; + SINT <= INT; + if(!SNMI) FNMI <= 0; + if(SRESET) FETCH <= 10'b1110000000; + else + if(FETCH[9:6] == 4'b1110) {FETCH[9:7]} <= 3'b000; // exit RESET state + else begin + if(M1) + case({MREQ, CPUStatus[9:8]}) + 3'b000, 3'b001, 3'b100, 3'b101, 3'b110, 3'b111: FETCH <= {fetch98, DI}; + 3'b010: FETCH <= {fetch98, 8'hff}; // IM1 - RST38 + 3'b011: ; // IM2 - get addrLO + endcase + if(~|{next_stage, fetch98[1:0], status[4]}) // INT or NMI sample + if(SNMI & !FNMI) begin // NMI posedge + {FETCH[9:6], FETCH[1:0]} <= {4'b1101, HALT, M1}; + FNMI <= 1; // NMI acknowledged + end else if(SINT & CPUStatus[6] & !status[11]) {FETCH[9:6], FETCH[1:0]} <= {4'b1100, HALT, M1}; // INT request + end + if(next_stage) STAGE <= STAGE + 3'b001; + else STAGE <= 0; + if(status[4]) CPUStatus[5:4] <= status[5:4]; + else if(~|{next_stage, fetch98[1]} | fetch98[0]) CPUStatus[4] <= 1'b0; // clear X + CPUStatus[3:0] <= CPUStatus[3:0] ^ status[3:0]; + if(status[11]) CPUStatus[7:6] <= status[7:6]; // IFF2:1 + if(status[10]) CPUStatus[9:8] <= status[9:8]; // IMM + tzf <= ALU8FLAGS[6]; + end + + assign opd[0] = FETCH[0] ^ &FETCH[2:1]; + assign opd[2:1] = FETCH[2:1]; + assign opd[3] = FETCH[3] ^ &FETCH[5:4]; + assign opd[5:4] = FETCH[5:4]; + assign op16[2:0] = &FETCH[5:4] ? 3'b101 : {1'b0, FETCH[5:4]}; + + always @* begin + DO_SEL = 2'bxx; // ALU80 - th - flags - ALU8OUT[7:0] + ALU160_SEL = 1'bx; // regs - pc + DINW_SEL = 1'bx; // ALU8OUT - DI + WE = 6'bxxxxxx; // 5 = flags, 4 = PC, 3 = SP, 2 = tmpHI, 1 = hi, 0 = lo + ALU8OP = 5'bxxxxx; + ALU16OP = 3'b000; // NOP, post inc + next_stage = 0; + REG_WSEL = 4'bxxxx; + REG_RSEL = 4'bxxxx; + M1 = 1; + MREQ = 1; + WR = 0; + + HALT = 0; + IORQ = 0; + status = 12'b00xxxxx00000; + fetch98 = 2'b00; + + case({FETCH[7:6], op1mem, op0mem}) + 4'b0000, 4'b0001, 4'b0010, 4'b0011, 4'b0100, 4'b1000, 4'b1100: xmask = 1; + default: xmask = 0; + endcase + + case(FETCH[9:6]) +//------------------------------------------- block 00 ---------------------------------------------------- + 4'b0000: + case(FETCH[3:0]) +// ----------------------- NOP, EX AF, AF', DJNZ, JR, JR c -------------------- + 4'b0000, 4'b1000: + case(FETCH[5:4]) + 2'b00: begin // NOP, EX AF, AF' + DO_SEL = 2'bxx; + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[0] = FETCH[3]; + end + 2'b01: + if(!STAGE[0]) begin // DJNZ, JR - stage1 + ALU160_SEL = 1; // pc + WE = 6'b010100; // PC, tmpHI + if(!FETCH[3]) begin + ALU8OP = 5'b01010; // DEC, for tzf only + REG_WSEL = 4'b0000; // B + end + next_stage = 1; + M1 = 0; + end else if(FETCH[3]) begin // JR - stage2 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + ALU16OP = 3; // ADD + end else begin // DJNZ - stage2 + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b010x10; // PC, hi + ALU8OP = 5'b01010; // DEC + ALU16OP = tzf ? 3'd0 : 3'd3; // NOP/ADD + REG_WSEL = 4'b0000; // B + end + 2'b10, 2'b11: // JR cc, stage1, stage2 + case({STAGE[0], FlagMux[{1'b0, FETCH[4:3]}]}) + 2'b00, 2'b11: begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + ALU16OP = STAGE[0] ? 3'd3 : 3'd1; // ADD/ INC, post inc + end + 2'b01: begin + ALU160_SEL = 1; // pc + WE = 6'b010100; // PC, tmpHI + next_stage = 1; + M1 = 0; + end + endcase + endcase +// ----------------------- LD rr,nn -------------------- + 4'b0001: // LD rr,nn, stage1 + case({STAGE[1:0], op16[2]}) + 3'b00_0, 3'b00_1, 3'b01_0, 3'b01_1: begin // LD rr,nn, stage1,2 + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, lo/HI + next_stage = 1; + REG_WSEL = {op16, 1'bx}; + M1 = 0; + end + 3'b10_0, 3'b11_1: begin // BC, DE, HL, stage3, SP stage4 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + 3'b10_1: begin // SP stage3 + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 4; // NOP + next_stage = 1; + REG_RSEL = 4'b101x; // tmpSP + M1 = 0; + MREQ = 0; + end + endcase +// ----------------------- LD (BC) A - LD (DE) A - LD (nn) HL, LD (nn),A -------------------- +// ----------------------- LD A (BC) - LD A (DE) - LD HL (nn), LD A (nn) -------------------- + 4'b0010, 4'b1010: + case(STAGE[2:0]) + 3'b000: + if(FETCH[5] == 0) begin // LD (BC) A, LD (DE) A - stage1 + if(FETCH[3]) DINW_SEL = 1; // DI + else DO_SEL = 2'b00; // ALU80 + ALU160_SEL = 0; // regs + WE = {4'b000x, FETCH[3], 1'bx}; // hi + next_stage = 1; + REG_WSEL = FETCH[3] ? 4'b011x : 4'b0110; // A + REG_RSEL = {op16, 1'bx}; + M1 = 0; + WR = !FETCH[3]; + end else begin // LD (nn) A - LD (nn) HL - stage 1 + ALU160_SEL = 1; // PC + DINW_SEL = 1; // DI + WE = 6'b010xx1; // PC, lo + next_stage = 1; + REG_WSEL = 4'b111x; + M1 = 0; + end + 3'b001: + if(FETCH[5] == 0) begin // LD (BC), A, LD (DE), A - stage2 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end else begin // LD (nn),A - LH (nn),HL - stage 2 + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = 6'b010x10; // PC, hi + next_stage = 1; + REG_WSEL = 4'b111x; + M1 = 0; + end + 3'b010: begin + ALU160_SEL = 1'b0; // regs + REG_RSEL = 4'b111x; + M1 = 0; + WR = !FETCH[3]; + next_stage = 1; + if(FETCH[3]) begin // LD A (nn) - LD HL (nn) - stage 3 + DINW_SEL = 1; // DI + WE = {4'b000x, FETCH[4] ? 1'b1 : 1'bx, FETCH[4] ? 1'bx : 1'b1}; // lo/hi + REG_WSEL = FETCH[4] ? 4'b011x : 4'b010x; // A or L + end else begin // LD (nn),A - LD (nn),HL - stage 3 + DO_SEL = 2'b00; // ALU80 + WE = 6'b000x00; // nothing + REG_WSEL = FETCH[4] ? 4'b0110 : 4'b0101; // A or L + end + end + 3'b011: + if(FETCH[4]) begin // LD (nn),A - stage 4 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end else begin + REG_RSEL = 4'b111x; + M1 = 0; + WR = !FETCH[3]; + ALU160_SEL = 1'b0; // regs + ALU16OP = 1; // INC + next_stage = 1; + if(FETCH[3]) begin // LD HL (nn) - stage 4 + DINW_SEL = 1; // DI + WE = 6'b000x10; // hi + REG_WSEL = 4'b010x; // H + end else begin // LD (nn),HL - stage 4 + DO_SEL = 2'b00; // ALU80 + WE = 6'b000x00; // nothing + REG_WSEL = 4'b0100; // H + end + end + 3'b100: begin // LD (nn),HL - stage 5 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + endcase +// ----------------------- inc/dec rr -------------------- + 4'b0011, 4'b1011: + if(!STAGE[0]) + if(op16[2]) begin // SP - stage1 + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = {FETCH[3], 1'b0, FETCH[3]}; // post inc, dec + next_stage = 1; + REG_RSEL = 4'b101x; // sp + M1 = 0; + MREQ = 0; + end else begin // BC, DE, HL - stage 1 + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b010x11; // PC, hi, lo + ALU8OP = {4'b0111, FETCH[3]}; // INC16 / DEC16 + REG_WSEL = {op16, 1'b0}; // hi + REG_RSEL = {op16, 1'b1}; // lo + end + else begin // SP, stage2 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end +// ----------------------- inc/dec 8 -------------------- + 4'b0100, 4'b0101, 4'b1100, 4'b1101: + if(!op1mem) begin //regs + DINW_SEL = 0; // ALU8OUT + ALU160_SEL = 1; // pc + WE = opd[3] ? 6'b110x01 : 6'b110x10; // flags, PC, hi/lo + ALU8OP = {3'b010, FETCH[0], 1'b0}; // inc / dec + REG_WSEL = {1'b0, opd[5:3]}; + end else case({STAGE[1:0], CPUStatus[4]}) + 3'b00_0, 3'b01_1: begin // (HL) - stage1, (X) - stage2 + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = 6'b000001; // lo + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; + next_stage = 1; + REG_WSEL = 4'b011x; // tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + end + 3'b00_1: begin // (X) - stage1 + ALU160_SEL = 1; // pc + WE = 6'b010100; // PC, tmpHI + next_stage = 1; + M1 = 0; + end + 3'b01_0, 3'b10_1: begin // (HL) stage2, (X) - stage3 + DO_SEL = 2'b11; // ALU80OUT + ALU160_SEL = 0; // regs + WE = 6'b100x0x; // flags + ALU8OP = {3'b010, FETCH[0], 1'b0}; // inc / dec + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; + next_stage = 1; + REG_WSEL = 4'b0111; // tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + WR = 1; + end + 3'b10_0, 3'b11_1: begin // (HL) - stage3, (X) - stage 4 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + endcase +// ----------------------- ld r/(HL-X), n -------------------- + 4'b0110, 4'b1110: + case({STAGE[1:0], CPUStatus[4], op1mem}) + 4'b00_0_0, 4'b00_0_1, 4'b00_1_0, 4'b01_1_1: begin // r, (HL) - stage1, (X) - stage2 (read n) + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = opd[3] ? 6'b010001 : 6'b010010; // PC, hi/lo + next_stage = 1; + REG_WSEL = {1'b0, opd[5:4], 1'bx}; + M1 = 0; + end + 4'b01_0_0, 4'b01_1_0, 4'b10_0_1, 4'b11_1_1: begin // r - stage2, (HL) - stage3, (X) - stage4 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + 4'b01_0_1, 4'b10_1_1: begin // (HL) - stage2, (X) - stage3 + DO_SEL = 2'b00; // ALU80 + ALU160_SEL = 0; // regs + WE = 6'b000x0x; // nothing + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; + next_stage = 1; + REG_WSEL = 4'b0111; // tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + WR = 1; + end + 4'b00_1_1: begin // (X) - stage1 + ALU160_SEL = 1; // pc + WE = 6'b010100; // PC, tmpHI + next_stage = 1; + M1 = 0; + end + endcase +// ----------------------- rlca, rrca, rla, rra, daa, cpl, scf, ccf -------------------- + 4'b0111, 4'b1111: + case(FETCH[5:3]) + 3'b000, 3'b001, 3'b010, 3'b011, 3'b100, 3'b101: begin // rlca, rrca, rla, rra, daa, cpl + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b110x1x; // flags, PC, hi + ALU8OP = FETCH[5] ? {2'b01, !FETCH[3], 2'b01} : {3'b110, FETCH[4:3]}; + REG_WSEL = 4'b0110; // A + end + 3'b110, 3'b111: begin // scf, ccf + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b110x0x; // flags, PC + ALU8OP = {4'b1010, !FETCH[3]}; + end + endcase +// ----------------------- add 16 -------------------- + 4'b1001: + if(!STAGE[0]) begin + DINW_SEL = 0; // ALU8OUT + WE = 6'b100x01; // flags, lo + ALU8OP = 5'b10000; // ADD16LO + next_stage = 1; + REG_WSEL = 4'b0101; // L + REG_RSEL = {op16, 1'b1}; + M1 = 0; + MREQ = 0; + end else begin + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b110x10; // flags, PC, hi + ALU8OP = 5'b10001; // ADD16HI + REG_WSEL = 4'b0100; // H + REG_RSEL = {op16, 1'b0}; + end + endcase + +// ---------------------------------------------- block 01 LD8 --------------------------------------------------- + 4'b0001: + case({STAGE[1:0], CPUStatus[4], op1mem, op0mem}) + 5'b00_0_00, 5'b00_1_00, // LD r, r 1st stage + 5'b01_0_01, // LD r, (HL) 2nd stage + 5'b10_1_01: // LD r, (X) 3rd stage + begin + ALU160_SEL = 1; // PC + DINW_SEL = 0; // ALU8 + WE = opd[3] ? 6'b010x01 : 6'b010x10; // PC and LO or HI + ALU8OP = 29; // PASS D1 + REG_WSEL = {1'b0, opd[5:4], 1'bx}; + REG_RSEL = {1'b0, opd[2:0]}; + end + 5'b00_0_01, // LD r, (HL) 1st stage + 5'b01_1_01: // LD r, (X) 2nd stage + begin + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = 6'b000x01; // LO + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP + next_stage = 1; + REG_WSEL = 4'b011x; // A - tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + end + 5'b00_1_01, // LD r, (X) 1st stage + 5'b00_1_10: // LD (X), r 1st stage + begin + ALU160_SEL = 1; // pc + WE = 6'b010100; // PC, tmpHI + next_stage = 1; + M1 = 0; + end + 5'b00_0_10, // LD (HL), r 1st stage + 5'b01_1_10: // LD (X), r 2nd stage + begin + DO_SEL = 0; // ALU80 + ALU160_SEL = 0; // regs + WE = 6'b000x00; // no write + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP + next_stage = 1; + REG_WSEL = {1'b0, opd[2:0]}; + REG_RSEL = 4'b010x; // HL + M1 = 0; + WR = 1; + end + 5'b01_0_10, // LD (HL), r 2nd stage + 5'b10_1_10: // LD (X), r 3rd stage + begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + 5'b00_0_11, 5'b00_1_11: begin // HALT + WE = 6'b000x00; // no write + M1 = 0; + MREQ = 0; + HALT = 1; + end + endcase +// ---------------------------------------------- block 10 arith8 --------------------------------------------------- + 4'b0010: + case({STAGE[1:0], CPUStatus[4], op0mem}) + 4'b00_0_0, 4'b00_1_0, // OP r,r 1st stage + 4'b01_0_1, // OP r, (HL) 2nd stage + 4'b10_1_1: // OP r, (X) 3rd stage + begin + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = {4'b110x, ~&FETCH[5:3], 1'bx}; // flags, PC, hi + ALU8OP = {2'b00, FETCH[5:3]}; + REG_WSEL = 4'b0110; // A + REG_RSEL = {1'b0, opd[2:0]}; + end + 4'b00_0_1, // OP r, (HL) 1st stage + 4'b01_1_1: // OP r, (X) 2nd stage + begin + ALU160_SEL = 0; // HL + DINW_SEL = 1; // DI + WE = 6'b000x01; // lo + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP + next_stage = 1; + REG_WSEL = 4'b011x; // A-tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + end + 4'b00_1_1: // OP r, (X) 1st stage + begin + ALU160_SEL = 1; // pc + WE = 6'b010100; // PC, tmpHI + next_stage = 1; + M1 = 0; + end + endcase +//------------------------------------------- block 11 ---------------------------------------------------- + 4'b0011: + case(FETCH[3:0]) +// ----------------------- RET cc -------------------- + 4'b0000, 4'b1000: + case(STAGE[1:0]) + 2'b00, 2'b01: // stage1, stage2 + if(FlagMux[FETCH[5:3]]) begin // POP addr + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi + next_stage = 1; + REG_WSEL = 4'b111x; // tmp16 + REG_RSEL = 4'b101x; // SP + M1 = 0; + end else begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + 2'b10: begin // stage3 + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp16 + end + endcase +// ----------------------- POP -------------------- + 4'b0001: + case(STAGE[1:0]) + 2'b00, 2'b01: begin + if(op16[2]) begin // AF + WE = STAGE[0] ? 6'b101x1x : 6'b001xx1; // flags, SP, lo/hi + REG_WSEL = {3'b011, STAGE[0] ? 1'b1 : 1'bx}; + if(STAGE[0]) ALU8OP = 30; // FLAGS <- D0 + end else begin // r16 + WE = STAGE[0] ? 6'b001x10 : 6'b001xx1; // SP, lo/hi + REG_WSEL = {1'b0, FETCH[5:4], 1'bx}; + end + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + next_stage = 1; + REG_RSEL = 4'b101x; // SP + M1 = 0; + end + 2'b10: begin // stage3 + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase +// ----------------------- JP cc -------------------- + 4'b0010, 4'b1010: + case(STAGE[1:0]) + 2'b00, 2'b01: begin // stage1,2 + if(FlagMux[FETCH[5:3]]) begin + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo + next_stage = 1; + REG_WSEL = 4'b111x; // tmp7 + M1 = 0; + end else begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + ALU16OP = 2; // add2 + end + end + 2'b10: begin // stage3 + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp7 + end + endcase +// ----------------------- JP, OUT (n) A, EX (SP) HL, DI -------------------- + 4'b0011: + case(FETCH[5:4]) + 2'b00: // JP + case(STAGE[1:0]) + 2'b00, 2'b01: begin // stage1,2 - read addr + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo + next_stage = 1; + REG_WSEL = 4'b111x; // tmp7 + M1 = 0; + end + 2'b10: begin // stage3 + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp7 + end + endcase + 2'b01: // OUT (n), a - stage1 - read n + case(STAGE[1:0]) + 2'b00: begin + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = 6'b010x01; // PC, lo + next_stage = 1; + REG_WSEL = 4'b011x; // tmpLO + M1 = 0; + end + 2'b01: begin // stage2 - OUT + DO_SEL = 2'b00; // ALU80 + ALU160_SEL = 0; // regs + WE = 6'b000x00; // nothing + next_stage = 1; + REG_WSEL = 4'b0110; // A + REG_RSEL = 4'b011x; // A-tmpLO + M1 = 0; + MREQ = 0; + WR = 1; + IORQ = 1; + end + 2'b10: begin // stage3 - fetch + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase + 2'b10: // EX (SP), HL + case(STAGE[2:0]) + 3'b000, 3'b001: begin // stage1,2 - pop tmp16 + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi + next_stage = 1; + REG_WSEL = 4'b111x; // tmp16 + REG_RSEL = 4'b101x; // SP + M1 = 0; + end + 3'b010, 3'b011: begin // stage3,4 - push hl + DO_SEL = 2'b00; // ALU80 + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // dec + next_stage = 1; + REG_WSEL = {3'b010, STAGE[0]};// H/L + REG_RSEL = 4'b101x; // SP + M1 = 0; + WR = 1; + end + 3'b100, 3'b101: begin // stage5,6 + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = {1'b0, STAGE[0], 2'b0x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, lo/hi + ALU8OP = 29; // pass D1 + next_stage = !STAGE[0]; + REG_WSEL = 4'b010x; // HL + REG_RSEL = {3'b111, !STAGE[0]}; // tmp16 + M1 = STAGE[0]; + MREQ = STAGE[0]; + end + endcase + 2'b11: begin // DI + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[11] = 1'b1; // set IFF flags + status[7:6] = 2'b00; + end + endcase +// ----------------------- CALL cc -------------------- + 4'b0100, 4'b1100: + case(STAGE[2:0]) + 3'b000, 3'b001: // stage 1,2 - load addr + if(FlagMux[FETCH[5:3]]) begin + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo + next_stage = 1; + REG_WSEL = 4'b111x; // tmp7 + M1 = 0; + end else begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + ALU16OP = 2; // add2 + end + 3'b010, 3'b011: begin // stage 3,4 - push pc + DO_SEL = {1'b0, STAGE[0]}; // pc hi/lo + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // DEC + next_stage = 1; + REG_WSEL = 4'b1xxx; // pc + REG_RSEL = 4'b101x; // sp + M1 = 0; + WR = 1; + end + 3'b100: begin // stage5 + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp7 + end + endcase +// ----------------------- PUSH -------------------- + 4'b0101: + case(STAGE[1:0]) + 2'b00, 2'b01: begin // stage1,2 + DO_SEL = {STAGE[0] & op16[2], 1'b0}; // FLAGS/ALU80 + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // dec + next_stage = 1; + REG_WSEL = {1'b0, FETCH[5:4], STAGE[0]}; + REG_RSEL = 4'b101x; // SP + M1 = 0; + WR = 1; + end + 2'b10: begin //stage3 + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase +// ----------------------- op A, n -------------------- + 4'b0110, 4'b1110: + if(!STAGE[0]) begin // stage1, read n + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = 6'b010x01; // PC, lo + next_stage = 1; + REG_WSEL = 4'b011x; // tmpLO + M1 = 0; + end else begin // stage 2 + DINW_SEL = 0; // ALU8OUT[7:0] + ALU160_SEL = 1; // pc + WE = {4'b110x, ~&FETCH[5:3], 1'bx}; // flags, PC, hi + ALU8OP = {2'b00, FETCH[5:3]}; + REG_WSEL = 4'b0110; // A + REG_RSEL = 4'b0111; // tmpLO + end +// ----------------------- RST -------------------- + 4'b0111, 4'b1111: + case(STAGE[1:0]) + 2'b00, 2'b01: begin // stage 1,2 - push pc + DO_SEL = {1'b0, STAGE[0]}; // pc hi/lo + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // DEC + next_stage = 1; + REG_WSEL = 4'b1xxx; // pc + REG_RSEL = 4'b101x; // sp + M1 = 0; + WR = 1; + end + 2'b10: begin // stage3 + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b110x; // const + end + endcase +// ----------------------- RET, EXX, JP (HL), LD SP HL -------------------- + 4'b1001: + case(FETCH[5:4]) + 2'b00: // RET + case(STAGE[1:0]) + 2'b00, 2'b01: begin // stage1, stage2 - pop addr + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi + next_stage = 1; + REG_WSEL = 4'b111x; // tmp16 + REG_RSEL = 4'b101x; // SP + M1 = 0; + end + 2'b10: begin // stage3 - jump + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp16 + end + endcase + 2'b01: begin // EXX + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[1] = 1; + end + 2'b10: begin // JP (HL) + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b010x; // HL + end + 2'b11: begin // LD SP,HL + if(!STAGE[0]) begin // stage1 + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 4; // NOP, no post inc + next_stage = 1; + REG_RSEL = 4'b010x; // HL + M1 = 0; + MREQ = 0; + end else begin // stage2 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + end + endcase +// ----------------------- CB, IN A (n), EX DE HL, EI -------------------- + 4'b1011: + case(FETCH[5:4]) + 2'b00: // CB prefix + case({STAGE[0], CPUStatus[4]}) + 2'b00, 2'b11: begin + ALU160_SEL = 1; // PC + WE = 6'b010000; // PC + fetch98 = 2'b10; + end + 2'b01: begin + ALU160_SEL = 1; // PC + WE = 6'b010100; // PC, tmpHI + next_stage = 1; + M1 = 0; + end + endcase + 2'b01: // IN A, (n) + case(STAGE[1:0]) + 2'b00: begin //stage1 - read n + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = 6'b010x01; // PC, lo + next_stage = 1; + REG_WSEL = 4'b011x; // tmpLO + M1 = 0; + end + 2'b01: begin // stage2 - IN + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = 6'b000x1x; // hi + next_stage = 1; + REG_WSEL = 4'b011x; // A + REG_RSEL = 4'b011x; // A - tmpLO + M1 = 0; + MREQ = 0; + IORQ = 1; + end + 2'b10: begin // stage3 - fetch + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase + 2'b10: begin // EX DE, HL + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + if(CPUStatus[1]) status[3] = 1; + else status[2] = 1; + end + 2'b11: begin // EI + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[11] = 1'b1; + status[7:6] = 2'b11; + end + endcase +// ----------------------- CALL , IX, ED, IY -------------------- + 4'b1101: + case(FETCH[5:4]) + 2'b00: // CALL + case(STAGE[2:0]) + 3'b000, 3'b001: begin // stage 1,2 - load addr + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo + next_stage = 1; + REG_WSEL = 4'b111x; // tmp7 + M1 = 0; + end + 3'b010, 3'b011: begin // stage 3,4 - push pc + DO_SEL = {1'b0, STAGE[0]}; // pc hi/lo + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // DEC + next_stage = 1; + REG_WSEL = 4'b1xxx; // pc + REG_RSEL = 4'b101x; // sp + M1 = 0; + WR = 1; + end + 3'b100: begin // stage5 - jump + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp7 + end + endcase + 2'b01: begin // DD - IX + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[5:4] = 2'b01; + end + 2'b10: begin // ED prefix + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + fetch98 = 2'b01; + end + 2'b11: begin // FD - IY + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[5:4] = 2'b11; + end + endcase + endcase + +// ------------------------------------------- ED + opcode ---------------------------------------------------- + 4'b0100, 4'b0111: begin // ED + 2'b00, ED + 2'b11 = NOP + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + 4'b0101: + case(FETCH[2:0]) +// ----------------------- in r (C) -------------------- + 3'b000: + if(!STAGE[0]) begin + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = {4'b000x, !opd[3], opd[3]} ; // hi/lo + next_stage = 1; + REG_WSEL = {1'b0, opd[5:4], 1'bx}; + REG_RSEL = 4'b000x; // BC + M1 = 0; + MREQ = 0; + IORQ = 1; + end else begin + ALU160_SEL = 1; // pc + WE = 6'b110x00; // flags, PC + ALU8OP = 29; // IN + REG_RSEL = {1'b0, opd[5:3]}; // reg + end +// ----------------------- out (C) r -------------------- + 3'b001: + if(!STAGE[0]) begin + DO_SEL = 2'b00; // ALU80 + ALU160_SEL = 0; // regs + WE = 6'b000x00; // nothing + next_stage = 1; + REG_WSEL = &opd[5:3] ? 4'b110x : {1'b0, opd[5:3]}; // zero/reg + REG_RSEL = 4'b000x; // BC + M1 = 0; + MREQ = 0; + WR = 1; + IORQ = 1; + end else begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end +// ----------------------- SBC16, ADC16 -------------------- + 3'b010: + if(!STAGE[0]) begin // stage1 + DINW_SEL = 0; // ALU8OUT + WE = 6'b100x01; // flags, lo + ALU8OP = {3'b000, !FETCH[3], 1'b1}; // SBC/ADC + next_stage = 1; + REG_WSEL = 4'b0101; // L + REG_RSEL = {op16, 1'b1}; + M1 = 0; + MREQ = 0; + end else begin + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b110x10; // flags, PC, hi + ALU8OP = {3'b000, !FETCH[3], 1'b1}; + REG_WSEL = 4'b0100; // H + REG_RSEL = {op16, 1'b0}; + end +// ----------------------- LD (nn) r16, ld r16 (nn) -------------------- + 3'b011: + case(STAGE[2:1]) + 2'b00: begin // stage 1,2 - read address + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = {4'b010x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // PC, hi/lo + next_stage = 1; + REG_WSEL = 4'b111x; // tmp16 + M1 = 0; + end + 2'b01: begin + ALU160_SEL = 0; // regs + next_stage = 1; + ALU16OP = {2'b00, STAGE[0]}; + REG_RSEL = 4'b111x; // tmp16 + REG_WSEL = {op16, !STAGE[0]}; + M1 = 0; + if(FETCH[3]) begin // LD rr, (nn) - stage3,4 + DINW_SEL = 1; // DI + WE = {4'b000x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // lo + end else begin // LD (nn), rr - stage3,4 + DO_SEL = op16[2] ? {1'b1, !STAGE[0]} : 2'b00; // ALU80/sp + WE = 6'b000x00; // nothing + WR = 1; + end + end + 2'b10: // stage5 + if(FETCH[3] & op16[2] & !STAGE[0]) begin // LD sp, (nn) - stage5 + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 4; // NOP + next_stage = 1; + REG_RSEL = 4'b101x; // tmp SP + M1 = 0; + MREQ = 0; + end else begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + endcase +// ----------------------- NEG -------------------- + 3'b100: begin + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + WE = 6'b110x10; // flags, PC, hi + ALU8OP = 5'b11111; // NEG + REG_WSEL = 4'b011x; // A + REG_RSEL = 4'b0110; // A + end +// ----------------------- RETN, RETI -------------------- + 3'b101: + case(STAGE[1:0]) + 2'b00, 2'b01: begin // stage1, stage2 - pop addr + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = {4'b001x, STAGE[0] ? 1'b1 : 1'bx, !STAGE[0]}; // SP, lo/hi + next_stage = 1; + REG_WSEL = 4'b111x; // tmp16 + REG_RSEL = 4'b101x; // SP + M1 = 0; + end + 2'b10: begin // stage3 - jump + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp16 + status[11] = 1'b1; + status[7:6] = {CPUStatus[7], CPUStatus[7]}; + end + endcase +// ----------------------- IM -------------------- + 3'b110: begin + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + status[10:8] = {1'b1, FETCH[4:3]}; + end +// ----------------------- LD I A, LD R A, LD A I, LD A R, RRD, RLD -------------------- + 3'b111: + case(FETCH[5:4]) + 2'b00: begin // LD I/R A + ALU160_SEL = 1; // pc + DINW_SEL = 1'b0; // ALU8OUT + WE = {4'b010x, !FETCH[3], FETCH[3]}; // PC, hi/lo + ALU8OP = 29; // pass D1 + REG_WSEL = 4'b1001; // IR, write r + REG_RSEL = 4'b0110; // A + end + 2'b01: begin // LD A I/R + ALU160_SEL = 1; // pc + DINW_SEL = 1'b0; // ALU8OUT + WE = 6'b110x1x; // flags, PC, hi + ALU8OP = 29; // PASS D1 + REG_WSEL = 4'b011x; // A + REG_RSEL = {3'b100, FETCH[3]};// I/R + end + 2'b10: // RRD, RLD + case(STAGE[1:0]) + 2'b00:begin // stage1, read data + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = 6'b000x01; // lo + next_stage = 1; + REG_WSEL = 4'b011x; // tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + end + 2'b01: begin // stage2, shift data + DINW_SEL = 0; // ALU8OUT + WE = 6'b100x11; // flags, hi, lo + ALU8OP = FETCH[3] ? 5'b01100 : 5'b01011; // RRD/RLD + next_stage = 1; + REG_WSEL = 4'b0110; // A + REG_RSEL = 4'b0111; // tmpLO + M1 = 0; + MREQ = 0; + end + 2'b10: begin // stage3 - write + DO_SEL = 2'b00; // ALU80 + ALU160_SEL = 0; // regs + WE = 6'b000x0x; // nothing + next_stage = 1; + REG_WSEL = 4'b0111; // tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + WR = 1; + end + 2'b11: begin + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase + 2'b11: begin // NOP + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase + endcase +// ----------------------- block instructions -------------------- + 4'b0110: + if({FETCH[5], FETCH[2]} == 4'b10) + case(FETCH[1:0]) + 2'b00: // LDI, LDD, LDIR, LDDR + case(STAGE[1:0]) + 2'b00: begin // stage1, read data, inc/dec HL + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'b100111; // flags, tmpHI, hi, lo + ALU8OP = {4'b0111, FETCH[3]}; // INC/DEC16 + next_stage = 1; + REG_WSEL = 4'b0100; // H + REG_RSEL = 4'b0101; // L + M1 = 0; + end + 2'b01: begin // stage2, dec BC + DINW_SEL = 0; // ALU8OUT + WE = 6'b100011; // flags, hi, lo (affects PF only) + ALU8OP = 5'b01111; // DEC + next_stage = 1; + REG_WSEL = 4'b0000; // B + REG_RSEL = 4'b0001; // C + M1 = 0; + MREQ = 0; + end + 2'b10: begin // stage2, write data, inc/dec DE + DO_SEL = 2'b01; // th + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'b000x11; // hi, lo + ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC + next_stage = FETCH[4] ? !FLAGS[2] : 1'b1; + REG_WSEL = 4'b0010; // D + REG_RSEL = 4'b0011; // E + M1 = 0; + WR = 1; + end + 2'b11: begin + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end + endcase + 2'b01: // CPI, CPD, CPIR, CPDR + case(STAGE[1:0]) + 2'b00: begin // stage1, load data + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = 6'b000x01; // lo + next_stage = 1; + REG_WSEL = 4'b011x; // tmpLO + REG_RSEL = 4'b010x; // HL + M1 = 0; + end + 2'b01: begin // stage2, CP + WE = 6'b100x0x; // flags + ALU8OP = 7; // CP + next_stage = 1; + REG_WSEL = 4'b0110; // A + REG_RSEL = 4'b0111; // tmpLO + M1 = 0; + MREQ = 0; + end + 2'b10: begin // stage3, dec BC + DINW_SEL = 0; // ALU8OUT + WE = 6'b100x11; // flags, hi, lo + ALU8OP = 5'b01111; // DEC16 + next_stage = 1; + REG_WSEL = 4'b0000; // B + REG_RSEL = 4'b0001; // C + M1 = 0; + MREQ = 0; + end + 2'b11: begin // stage4, inc/dec HL + ALU160_SEL = 1; // pc + DINW_SEL = 0; // ALU8OUT + M1 = FETCH[4] ? (!FLAGS[2] || FLAGS[6]) : 1'b1; + WE = {1'b0, M1, 4'b0x11}; // PC, hi, lo + ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC + REG_WSEL = 4'b0100; // H + REG_RSEL = 4'b0101; // L + MREQ = M1; + end + endcase + 2'b10: // INI, IND, INIR, INDR + case(STAGE[1:0]) + 2'b00: begin // stage1, in data, dec B + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'b100110; // flags, tmpHI, hi + ALU8OP = 10; // DEC + next_stage = 1; + REG_WSEL = 4'b0000; // B + REG_RSEL = 4'b000x; // BC + M1 = 0; + MREQ = 0; + IORQ = 1; + end + 2'b01: begin // stage2, write data, inc/dec HL + DO_SEL = 2'b01; // th + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'b000x11; // hi, lo + ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC + next_stage = FETCH[4] ? FLAGS[6] : 1'b1; + REG_WSEL = 4'b0100; // H + REG_RSEL = 4'b0101; // L + M1 = 0; + WR = 1; + end + 2'b10: begin // stage3 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + endcase + 2'b11: // OUTI/OUTD/OTIR/OTDR + case(STAGE[1:0]) + 2'b00: begin // stage1, load data, inc/dec HL + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'b000111; // tmpHI, hi, lo + ALU8OP = {4'b0111, FETCH[3]}; // INC / DEC + next_stage = 1; + REG_WSEL = 4'b0100; // H + REG_RSEL = 4'b0101; // L + M1 = 0; + end + 2'b01: begin // stage2, out data, dec B + DO_SEL = 2'b01; // th + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'b100x10; // flags, hi + ALU8OP = 10; // DEC + next_stage = FETCH[4] ? (ALU80 == 8'b00000001) : 1'b1; + REG_WSEL = 4'b0000; // B + REG_RSEL = 4'b000x; // BC + M1 = 0; + MREQ = 0; + IORQ = 1; + WR = 1; + end + 2'b10: begin // stage3 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + endcase + endcase + else begin // NOP + ALU160_SEL = 1; // PC + WE = 6'b010x00; // PC + end +//------------------------------------------- CB + opcode ---------------------------------------------------- + 4'b1000, 4'b1001, 4'b1010, 4'b1011: // CB class (rot/shift, bit/res/set) + case({STAGE[1:0], CPUStatus[4], op0mem}) + 4'b00_0_0: begin // execute reg-reg + DINW_SEL = 0; // ALU8OUT + ALU160_SEL = 1; // pc + WE = {!FETCH[7], 3'b10x, FETCH[7:6] == 2'b01 ? 2'b00 : {!opd[0], opd[0]}}; // flags, hi/lo + ALU8OP = 28; // BIT + REG_WSEL = {1'b0, opd[2:0]}; + end + 4'b00_0_1, 4'b00_1_0, 4'b00_1_1: begin // stage1, (HL-X) - read data + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = opd[0] ? 6'b000001 : 6'b000010; // lo/hi + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; // ADD - NOP + next_stage = 1; + REG_WSEL = FETCH[7:6] == 2'b01 ? 4'b111x : {1'b0, opd[2:0]}; // dest, tmp16 for BIT + REG_RSEL = 4'b010x; // HL + M1 = 0; + end + 4'b01_0_1, 4'b01_1_0, 4'b01_1_1: // stage2 (HL-X) - execute, write + case(FETCH[7:6]) + 2'b00, 2'b10, 2'b11: begin // exec + write + DINW_SEL = 0; // ALU8OUT + DO_SEL = 2'b11; // ALU8OUT[7:0] + ALU160_SEL = 0; // regs + WE = {!FETCH[7], 3'b00x, !opd[0], opd[0]}; // flags, hi/lo + ALU8OP = 28; + ALU16OP = CPUStatus[4] ? 3'd3 : 3'd0; + next_stage = 1; + REG_WSEL = {1'b0, opd[2:0]}; + REG_RSEL = 4'b010x; // HL + M1 = 0; + WR = 1; + end + 2'b01: begin // BIT, no write + ALU160_SEL = 1; // pc + WE = 6'b110xxx; // flags, PC + ALU8OP = 28; // BIT + REG_WSEL = {3'b111, opd[0]}; // tmp + end + endcase + 4'b10_0_1, 4'b10_1_0, 4'b10_1_1: begin // (HL-X) - load next op + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + end + endcase +//------------------------------------------- // RST, NMI, INT ---------------------------------------------------- + 4'b1110: begin // RESET: IR <- 0, IM <- 0, IFF1,IFF2 <- 0, pC <- 0 + ALU160_SEL = 0; // regs + DINW_SEL = 0; // ALU8OUT + WE = 6'bx1xx11; // PC, hi, lo + ALU8OP = 29; // pass D1 + ALU16OP = 4; // NOP + REG_WSEL = 4'b1001; // IR, write r + REG_RSEL = 4'b110x; // const + M1 = 0; + MREQ = 0; + status[11:6] = 6'b110000; // IM0, DI + end + 4'b1101: // NMI + case(STAGE[1:0]) + 2'b00: begin + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + ALU16OP = intop; // DEC/DEC2 (if block instruction interrupted) + next_stage = 1; + M1 = 0; + MREQ = 0; + end + 2'b01, 2'b10: begin + DO_SEL = {1'b0, !STAGE[0]}; // pc hi/lo + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // DEC + next_stage = 1; + REG_WSEL = 4'b1xxx; // pc + REG_RSEL = 4'b101x; // sp + M1 = 0; + WR = 1; + status[11] = 1'b1; + status[7:6] = {CPUStatus[7], 1'b0}; // reset IFF1 + end + 2'b11: begin + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b110x; // const + end + endcase + 4'b1100: // INT + case(CPUStatus[9:8]) + 2'b00, 2'b01, 2'b10: begin // IM0, IM1 + ALU160_SEL = 1; // pc + WE = 6'b010x00; // PC + ALU16OP = intop; // DEC/DEC2 (if block instruction interrupted) + MREQ = 0; + IORQ = 1; + status[11] = 1'b1; + status[7:6] = 2'b0; // reset IFF1, IFF2 + end + 2'b11: // IM2 + case(STAGE[2:0]) + 3'b000: begin + ALU160_SEL = 1; // pc + DINW_SEL = 1; // DI + WE = 6'b010x01; // PC, lo + ALU16OP = intop; // DEC/DEC2 (if block instruction interrupted) + next_stage = 1; + REG_WSEL = 4'b1000; // Itmp, no write r + MREQ = 0; + IORQ = 1; + status[11] = 1'b1; + status[7:6] = 2'b0; // reset IFF1, IFF2 + end + 3'b001, 3'b010: begin // push pc + DO_SEL = {1'b0, !STAGE[0]}; // pc hi/lo + ALU160_SEL = 0; // regs + WE = 6'b001x00; // SP + ALU16OP = 5; // DEC + next_stage = 1; + REG_WSEL = 4'b1xxx; // pc + REG_RSEL = 4'b101x; // sp + M1 = 0; + WR = 1; + end + 3'b011, 3'b100: begin // read address + ALU160_SEL = 0; // regs + DINW_SEL = 1; // DI + WE = {4'b0x0x, STAGE[0] ? 1'bx : 1'b1, STAGE[0]}; // hi/lo + ALU16OP = {2'b00, !STAGE[0]};// NOP/INC + next_stage = 1; + REG_WSEL = 4'b111x; // tmp16 + REG_RSEL = 4'b1000; // I-Itmp + M1 = 0; + end + 3'b101: begin // jump + ALU160_SEL = 0; // regs + WE = 6'b010x00; // PC + REG_RSEL = 4'b111x; // tmp16 + end + endcase + endcase + endcase + end + +endmodule diff --git a/src/NextZ80/NextZ80Reg.v b/src/NextZ80/NextZ80Reg.v new file mode 100644 index 0000000..0c473a7 --- /dev/null +++ b/src/NextZ80/NextZ80Reg.v @@ -0,0 +1,199 @@ +////////////////////////////////////////////////////////////////////////////////// +// +// This file is part of the NextZ80 project +// http://www.opencores.org/cores/nextz80/ +// +// Filename: NextZ80Regs.v +// Description: Implementation of Z80 compatible CPU - registers +// Version 1.0 +// Creation date: 28Jan2011 - 18Mar2011 +// +// Author: Nicolae Dumitrache +// e-mail: ndumitrache@opencores.org +// +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2011 Nicolae Dumitrache +// +// This source file may be used and distributed without +// restriction provided that this copyright statement is not +// removed from the file and that any derivative work contains +// the original copyright notice and the associated disclaimer. +// +// This source file is free software; you can redistribute it +// and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any +// later version. +// +// This source 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 Lesser General Public License for more +// details. +// +// You should have received a copy of the GNU Lesser General +// Public License along with this source; if not, download it +// from http://www.opencores.org/lgpl.shtml +// +/////////////////////////////////////////////////////////////////////////////////// +`timescale 1ns / 1ps + +module Z80Reg( + input wire [7:0]rstatus, // 0=af-af', 1=exx, 2=hl-de, 3=hl'-de',4=hl-ixy, 5=ix-iy, 6=IFF1, 7=IFF2 + input wire M1, + input wire [5:0]WE, // 5 = flags, 4 = PC, 3 = SP, 2 = tmpHI, 1 = hi, 0 = lo + input wire CLK, + input wire [15:0]ALU8OUT, // CPU data out bus (output of alu8) + input wire [7:0]DI, // CPU data in bus + output reg [7:0]DO, // CPU data out bus + input wire [15:0]ADDR, // CPU addr bus + input wire [7:0]CONST, + output reg [7:0]ALU80, + output reg [7:0]ALU81, + output reg [15:0]ALU160, + output wire[7:0]ALU161, + input wire [7:0]ALU8FLAGS, + output wire [7:0]FLAGS, + + input wire [1:0]DO_SEL, // select DO betwen ALU8OUT lo and th register + input wire ALU160_sel, // 0=REG_RSEL, 1=PC + input wire [3:0]REG_WSEL, // rdow: [3:1] 0=BC, 1=DE, 2=HL, 3=A-TL, 4=I-x ----- [0] = 0HI,1LO + input wire [3:0]REG_RSEL, // mux_rdor: [3:1] 0=BC, 1=DE, 2=HL, 3=A-TL, 4=I-R, 5=SP, 7=tmpSP ----- [0] = 0HI, 1LO + input wire DINW_SEL, // select RAM write data between (0)ALU8OUT, and 1(DI) + input wire XMASK, // 0 if REG_WSEL should not use IX, IY, even if rstatus[4] == 1 + input wire [2:0]ALU16OP, // ALU16OP + input wire WAIT // wait + ); + +// latch registers + reg [15:0]pc=0; // program counter + reg [15:0]sp; // stack pointer + reg [7:0]r; // refresh + reg [15:0]flg = 0; + reg [7:0]th; // temp high + +// internal wires + wire [15:0]rdor; // R out from RAM + wire [15:0]rdow; // W out from RAM + wire [3:0]SELW; // RAM W port sel + wire [3:0]SELR; // RAM R port sel + reg [15:0]DIN; // RAM W in data + reg [15:0]mux_rdor; // (3)A reversed mixed with TL, (4)I mixed with R (5)SP + +//------------------------------------ RAM block registers ---------------------------------- +// 0:BC, 1:DE, 2:HL, 3:A-x, 4:I-x, 5:IX, 6:IY, 7:x-x, 8:BC', 9:DE', 10:HL', 11:A'-x, 12: tmpSP, 13:zero + RAM16X8D_regs regs_lo ( + .DPO(rdor[7:0]), // Read-only data output + .SPO(rdow[7:0]), // R/W data output + .A(SELW), // R/W address + .D(DIN[7:0]), // Write data input + .DPRA(SELR), // Read-only address + .WCLK(CLK), // Write clock input + .WE(WE[0] & !WAIT) // Write enable input + ); + + RAM16X8D_regs regs_hi ( + .DPO(rdor[15:8]), // Read-only data output + .SPO(rdow[15:8]), // R/W data output + .A(SELW), // R/W address + .D(DIN[15:8]), // Write data input + .DPRA(SELR), // Read-only address + .WCLK(CLK), // Write clock input + .WE(WE[1] & !WAIT) // Write enable input + ); + + wire [15:0]ADDR1 = ADDR + !ALU16OP[2]; // address post increment + wire [7:0]flgmux = {ALU8FLAGS[7:3], SELR[3:0] == 4'b0100 ? rstatus[7] : ALU8FLAGS[2], ALU8FLAGS[1:0]}; // LD A, I/R IFF2 flag on parity + always @(posedge CLK) + if(!WAIT) begin + if(WE[2]) th <= DI; + if(WE[3]) sp <= ADDR1; + if(WE[4]) pc <= ADDR1; + if({REG_WSEL, WE[0]} == 5'b10011) r <= ALU8OUT[7:0]; + else if(M1) r[6:0] <= r[6:0] + 1; + if(WE[5]) + if(rstatus[0]) flg[15:8] <= flgmux; + else flg[7:0] <= flgmux; + end + + assign ALU161 = th; + assign FLAGS = rstatus[0] ? flg[15:8] : flg[7:0]; + + always @* begin + DIN = DINW_SEL ? {DI, DI} : ALU8OUT; + ALU80 = REG_WSEL[0] ? rdow[7:0] : rdow[15:8]; + ALU81 = REG_RSEL[0] ? mux_rdor[7:0] : mux_rdor[15:8]; + ALU160 = ALU160_sel ? pc : mux_rdor; + + case({REG_WSEL[3], DO_SEL}) + 0: DO = ALU80; + 1: DO = th; + 2: DO = FLAGS; + 3: DO = ALU8OUT[7:0]; + 4: DO = pc[15:8]; + 5: DO = pc[7:0]; + 6: DO = sp[15:8]; + 7: DO = sp[7:0]; + endcase + case({ALU16OP == 4, REG_RSEL[3:0]}) + 5'b01001, 5'b11001: mux_rdor = {rdor[15:8], r}; + 5'b01010, 5'b01011: mux_rdor = sp; + 5'b01100, 5'b01101, 5'b11100, 5'b11101: mux_rdor = {8'b0, CONST}; + default: mux_rdor = rdor; + endcase + end + + RegSelect WSelectW(.SEL(REG_WSEL[3:1]), .RAMSEL(SELW), .rstatus({rstatus[5], rstatus[4] & XMASK, rstatus[3:0]})); + RegSelect WSelectR(.SEL(REG_RSEL[3:1]), .RAMSEL(SELR), .rstatus(rstatus[5:0])); + +endmodule + + +module RegSelect( + input [2:0]SEL, + output reg [3:0]RAMSEL, + input [5:0]rstatus // 0=af-af', 1=exx, 2=hl-de, 3=hl'-de',4=hl-ixy, 5=ix-iy + ); + + always @* begin + RAMSEL = 4'bxxxx; + case(SEL) + 0: RAMSEL = {rstatus[1], 3'b000}; // BC + 1: //DE + if(rstatus[{1'b1, rstatus[1]}]) RAMSEL = {rstatus[1], 3'b010}; // HL + else RAMSEL = {rstatus[1], 3'b001}; // DE + 2: // HL + case({rstatus[5:4], rstatus[{1'b1, rstatus[1]}]}) + 0,4: RAMSEL = {rstatus[1], 3'b010}; // HL + 1,5: RAMSEL = {rstatus[1], 3'b001}; // DE + 2,3: RAMSEL = 4'b0101; // IX + 6,7: RAMSEL = 4'b0110; // IY + endcase + 3: RAMSEL = {rstatus[0], 3'b011}; // A-TL + 4: RAMSEL = 4; // I-R + 5: RAMSEL = 12; // tmp SP + 6: RAMSEL = 13; // zero + 7: RAMSEL = 7; // temp reg for BIT/SET/RES + endcase + end +endmodule + +module RAM16X8D_regs( + output [7:0]DPO, // Read-only data output + output [7:0]SPO, // R/W data output + input [3:0]A, // R/W address + input [7:0]D, // Write data input + input [3:0]DPRA, // Read-only address + input WCLK, // Write clock + input WE // Write enable + ); + + reg [7:0]data[15:0]; + assign DPO = data[DPRA]; + assign SPO = data[A]; + + always @(posedge WCLK) + if(WE) data[A] <= D; + +endmodule diff --git a/src/ROM/tuberom_z80_banner.vhd b/src/ROM/tuberom_z80_banner.vhd index fc55f0d..e71d8d7 100644 --- a/src/ROM/tuberom_z80_banner.vhd +++ b/src/ROM/tuberom_z80_banner.vhd @@ -6,7 +6,6 @@ entity tuberom_z80_banner is port ( CLK : in std_logic; ADDR : in std_logic_vector(11 downto 0); - SW : in std_logic_vector(1 downto 0); DATA : out std_logic_vector(7 downto 0) ); end; @@ -15,9 +14,6 @@ architecture RTL of tuberom_z80_banner is signal rom_addr : std_logic_vector(11 downto 0); - signal digit1 : std_logic_vector(7 downto 0); - signal digit2 : std_logic_vector(7 downto 0); - begin p_addr : process(ADDR) @@ -26,19 +22,6 @@ begin rom_addr(11 downto 0) <= ADDR; end process; - -- Original: Acorn TUBE Z80 64k 1.21 - -- Updated: Acorn TUBE Z80 32Mhz - - digit1 <= x"33" when SW = "00" else - x"32" when SW = "01" else - x"31" when SW = "10" else - x"30"; - - digit2 <= x"36" when SW = "00" else - x"34" when SW = "01" else - x"32" when SW = "10" else - x"38"; - p_rom : process begin wait until rising_edge(CLK); @@ -718,13 +701,13 @@ begin when x"29F" => DATA <= x"38"; when x"2A0" => DATA <= x"30"; when x"2A1" => DATA <= x"20"; - when x"2A2" => DATA <= digit1; - when x"2A3" => DATA <= digit2; - when x"2A4" => DATA <= x"4D"; - when x"2A5" => DATA <= x"48"; - when x"2A6" => DATA <= x"7A"; - when x"2A7" => DATA <= x"20"; - when x"2A8" => DATA <= x"20"; + when x"2A2" => DATA <= x"3F"; + when x"2A3" => DATA <= x"3F"; + when x"2A4" => DATA <= x"3F"; + when x"2A5" => DATA <= x"20"; + when x"2A6" => DATA <= x"4D"; + when x"2A7" => DATA <= x"48"; + when x"2A8" => DATA <= x"7A"; when x"2A9" => DATA <= x"20"; when x"2AA" => DATA <= x"0D"; when x"2AB" => DATA <= x"0D"; From 0338295e8670fb7de6f4ae47f851888dcb31a8d7 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 1 Mar 2015 19:24:13 +0000 Subject: [PATCH 16/61] Updated ucf files to add SLEW=SLOW and DRIVE=2mA to all outputs Change-Id: If193672e65f5e4e2443d31d8e603acd449361ccd --- LX9Co-6502fast.xise | 2 +- LX9Co-z80fast.xise | 2 +- src/LX9Co_6SLX9TQG144_U1.ucf | 179 ++++++++++------------- src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf | 187 +++++++++++------------- src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf | 203 +++++++++++++------------- 5 files changed, 270 insertions(+), 303 deletions(-) diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index d3cc051..60fe357 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -132,7 +132,7 @@ - + diff --git a/LX9Co-z80fast.xise b/LX9Co-z80fast.xise index 551f3d4..1314d52 100644 --- a/LX9Co-z80fast.xise +++ b/LX9Co-z80fast.xise @@ -126,7 +126,7 @@ - + diff --git a/src/LX9Co_6SLX9TQG144_U1.ucf b/src/LX9Co_6SLX9TQG144_U1.ucf index be6cccc..023071a 100644 --- a/src/LX9Co_6SLX9TQG144_U1.ucf +++ b/src/LX9Co_6SLX9TQG144_U1.ucf @@ -1,100 +1,79 @@ -# Generated by export-jtagtest-ucf.ulp -# http://www.jtagtest.com/ -# -# Board : d:/Users/g7ocd/Projects/Eagle CAD Files/Retro-computing/LX9Co/LX9Co.brd -# Part Name : U1 -# Part ID : 6SLX9TQG144 -# Part pkg : TQ144 -# Exported on: 18.10.2014 21:43:03 -NET "fastclk" LOC = "P92" |IOSTANDARD = LVCMOS33 ; - -NET "h_irq_b" LOC = "P98" |IOSTANDARD = LVCMOS33 ; # Not connected -NET "ram_cs" LOC = "P16" |IOSTANDARD = LVCMOS33 ; -NET "ram_lb_b" LOC = "P17" |IOSTANDARD = LVCMOS33 ; -NET "ram_oe" LOC = "P22" |IOSTANDARD = LVCMOS33 ; -NET "ram_ub_b" LOC = "P21" |IOSTANDARD = LVCMOS33 ; -NET "ram_wr" LOC = "P142" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<0>" LOC = "P15" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<1>" LOC = "P14" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<2>" LOC = "P12" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<3>" LOC = "P11" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<4>" LOC = "P10" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<5>" LOC = "P26" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<6>" LOC = "P24" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<7>" LOC = "P23" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<8>" LOC = "P41" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<9>" LOC = "P43" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<10>" LOC = "P44" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<11>" LOC = "P45" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<12>" LOC = "P137" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<13>" LOC = "P138" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<14>" LOC = "P139" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<15>" LOC = "P140" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<16>" LOC = "P141" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<17>" LOC = "P46" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<18>" LOC = "P40" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<0>" LOC = "P9" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<1>" LOC = "P8" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<2>" LOC = "P7" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<3>" LOC = "P6" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<4>" LOC = "P5" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<5>" LOC = "P2" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<6>" LOC = "P1" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<7>" LOC = "P143" |IOSTANDARD = LVCMOS33 ; -##NET "ram_data<8>" LOC = "P39" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<9>" LOC = "P35" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<10>" LOC = "P34" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<11>" LOC = "P33" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<12>" LOC = "P32" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<13>" LOC = "P30" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<14>" LOC = "P29" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<15>" LOC = "P27" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<16>" LOC = "P50" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<17>" LOC = "P48" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<18>" LOC = "P47" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<19>" LOC = "P56" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<20>" LOC = "P57" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<21>" LOC = "P58" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<22>" LOC = "P59" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<23>" LOC = "P61" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<24>" LOC = "P123" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<25>" LOC = "P124" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<26>" LOC = "P126" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<27>" LOC = "P127" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<28>" LOC = "P131" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<29>" LOC = "P132" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<30>" LOC = "P133" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<31>" LOC = "P134" | IOSTANDARD = LVCMOS33 ; -NET "h_addr<0>" LOC = "P97" |IOSTANDARD = LVCMOS33 ; -NET "h_addr<1>" LOC = "P93" |IOSTANDARD = LVCMOS33 ; -NET "h_addr<2>" LOC = "P101" |IOSTANDARD = LVCMOS33 ; -NET "h_phi2" LOC = "P94" |IOSTANDARD = LVCMOS33; -NET "h_cs_b" LOC = "P99" |IOSTANDARD = LVCMOS33 ; -NET "h_data<0>" LOC = "P112" |IOSTANDARD = LVCMOS33 ; -NET "h_data<1>" LOC = "P114" |IOSTANDARD = LVCMOS33 ; -NET "h_data<2>" LOC = "P115" |IOSTANDARD = LVCMOS33 ; -NET "h_data<3>" LOC = "P116" |IOSTANDARD = LVCMOS33 ; -NET "h_data<4>" LOC = "P117" |IOSTANDARD = LVCMOS33 ; -NET "h_data<5>" LOC = "P118" |IOSTANDARD = LVCMOS33 ; -NET "h_data<6>" LOC = "P119" |IOSTANDARD = LVCMOS33 ; -NET "h_data<7>" LOC = "P120" |IOSTANDARD = LVCMOS33 ; -##NET "h_pwr" LOC = "P102" | IOSTANDARD = LVCMOS33 ; -NET "h_rdnw" LOC = "P95" |IOSTANDARD = LVCMOS33 ; -NET "h_rst_b" LOC = "P100" |IOSTANDARD = LVCMOS33 ; -NET "test<1>" LOC = "P83" |IOSTANDARD = LVCMOS33 ; -NET "test<2>" LOC = "P82" |IOSTANDARD = LVCMOS33 ; -NET "test<3>" LOC = "P81" |IOSTANDARD = LVCMOS33 ; -NET "test<4>" LOC = "P80" |IOSTANDARD = LVCMOS33 ; -NET "test<5>" LOC = "P79" |IOSTANDARD = LVCMOS33 ; -NET "test<6>" LOC = "P78" |IOSTANDARD = LVCMOS33 ; -NET "test<7>" LOC = "P75" |IOSTANDARD = LVCMOS33 ; -NET "test<8>" LOC = "P74" |IOSTANDARD = LVCMOS33 ; -NET "sw<1>" LOC = "P88" |IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P87" |IOSTANDARD = LVCMOS33 ; -##NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -##NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; - -NET "fastclk" TNM_NET = fastclk; -TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; -NET "h_phi2" TNM_NET = h_phi2; -TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%; +# Generated by export-jtagtest-ucf.ulp +# http://www.jtagtest.com/ +# +# Board : d:/Users/g7ocd/Projects/Eagle CAD Files/Retro-computing/LX9Co/LX9Co.brd +# Part Name : U1 +# Part ID : 6SLX9TQG144 +# Part pkg : TQ144 +# Exported on: 18.10.2014 21:43:03 +NET "fastclk" LOC = "P92" | IOSTANDARD = LVCMOS33 ; +NET "h_phi2" LOC = "P94" | IOSTANDARD = LVCMOS33 ; + +NET "fastclk" TNM_NET = fastclk; +TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; +NET "h_phi2" TNM_NET = h_phi2; +TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%; + +NET "h_cs_b" LOC = "P99" | IOSTANDARD = LVCMOS33 ; +NET "h_rdnw" LOC = "P95" | IOSTANDARD = LVCMOS33 ; +NET "h_rst_b" LOC = "P100" | IOSTANDARD = LVCMOS33 ; + +NET "h_addr<0>" LOC = "P97" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<1>" LOC = "P93" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<2>" LOC = "P101" | IOSTANDARD = LVCMOS33 ; + +NET "h_irq_b" LOC = "P98" | IOSTANDARD = LVCMOS33 ; # Not connected + +NET "h_data<0>" LOC = "P112" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<1>" LOC = "P114" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<2>" LOC = "P115" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<3>" LOC = "P116" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<4>" LOC = "P117" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<5>" LOC = "P118" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<6>" LOC = "P119" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<7>" LOC = "P120" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "ram_cs" LOC = "P16" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_lb_b" LOC = "P17" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_oe" LOC = "P22" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_ub_b" LOC = "P21" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_wr" LOC = "P142" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<0>" LOC = "P15" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<1>" LOC = "P14" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<2>" LOC = "P12" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<3>" LOC = "P11" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<4>" LOC = "P10" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<5>" LOC = "P26" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<6>" LOC = "P24" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<7>" LOC = "P23" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<8>" LOC = "P41" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<9>" LOC = "P43" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<10>" LOC = "P44" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<11>" LOC = "P45" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<12>" LOC = "P137" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<13>" LOC = "P138" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<14>" LOC = "P139" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<15>" LOC = "P140" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<16>" LOC = "P141" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<17>" LOC = "P46" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<18>" LOC = "P40" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<0>" LOC = "P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<1>" LOC = "P8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<2>" LOC = "P7" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<3>" LOC = "P6" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<4>" LOC = "P5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<5>" LOC = "P2" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<6>" LOC = "P1" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<7>" LOC = "P143" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<1>" LOC = "P83" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<2>" LOC = "P82" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<3>" LOC = "P81" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<4>" LOC = "P80" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<5>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<6>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<7>" LOC = "P75" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<8>" LOC = "P74" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "sw<1>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; +##NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +##NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; diff --git a/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf b/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf index 93d1462..4adf452 100644 --- a/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf +++ b/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf @@ -1,102 +1,87 @@ -# Generated by export-jtagtest-ucf.ulp -# http://www.jtagtest.com/ -# -# Board : d:/Users/g7ocd/Projects/Eagle CAD Files/Retro-computing/LX9Co/LX9Co.brd -# Part Name : U1 -# Part ID : 6SLX9TQG144 -# Part pkg : TQ144 -# Exported on: 18.10.2014 21:43:03 -NET "fastclk" LOC = "P92" |IOSTANDARD = LVCMOS33 ; - -NET "h_irq_b" LOC = "P98" |IOSTANDARD = LVCMOS33 ; # Not connected -NET "ram_cs" LOC = "P16" |IOSTANDARD = LVCMOS33 ; -NET "ram_lb_b" LOC = "P17" |IOSTANDARD = LVCMOS33 ; -NET "ram_oe" LOC = "P22" |IOSTANDARD = LVCMOS33 ; -NET "ram_ub_b" LOC = "P21" |IOSTANDARD = LVCMOS33 ; -NET "ram_wr" LOC = "P142" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<0>" LOC = "P15" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<1>" LOC = "P14" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<2>" LOC = "P12" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<3>" LOC = "P11" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<4>" LOC = "P10" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<5>" LOC = "P26" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<6>" LOC = "P24" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<7>" LOC = "P23" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<8>" LOC = "P41" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<9>" LOC = "P43" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<10>" LOC = "P44" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<11>" LOC = "P45" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<12>" LOC = "P137" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<13>" LOC = "P138" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<14>" LOC = "P139" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<15>" LOC = "P140" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<16>" LOC = "P141" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<17>" LOC = "P46" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<18>" LOC = "P40" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<0>" LOC = "P9" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<1>" LOC = "P8" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<2>" LOC = "P7" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<3>" LOC = "P6" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<4>" LOC = "P5" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<5>" LOC = "P2" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<6>" LOC = "P1" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<7>" LOC = "P143" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<8>" LOC = "P39" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<9>" LOC = "P35" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<10>" LOC = "P34" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<11>" LOC = "P33" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<12>" LOC = "P32" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<13>" LOC = "P30" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<14>" LOC = "P29" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<15>" LOC = "P27" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<16>" LOC = "P50" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<17>" LOC = "P48" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<18>" LOC = "P47" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<19>" LOC = "P56" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<20>" LOC = "P57" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<21>" LOC = "P58" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<22>" LOC = "P59" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<23>" LOC = "P61" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<24>" LOC = "P123" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<25>" LOC = "P124" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<26>" LOC = "P126" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<27>" LOC = "P127" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<28>" LOC = "P131" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<29>" LOC = "P132" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<30>" LOC = "P133" | IOSTANDARD = LVCMOS33 ; -##NET "ram_data<31>" LOC = "P134" | IOSTANDARD = LVCMOS33 ; -NET "h_addr<0>" LOC = "P97" |IOSTANDARD = LVCMOS33 ; -NET "h_addr<1>" LOC = "P93" |IOSTANDARD = LVCMOS33 ; -NET "h_addr<2>" LOC = "P101" |IOSTANDARD = LVCMOS33 ; -NET "h_phi2" LOC = "P94" |IOSTANDARD = LVCMOS33; -NET "h_cs_b" LOC = "P99" |IOSTANDARD = LVCMOS33 ; -NET "h_data<0>" LOC = "P112" |IOSTANDARD = LVCMOS33 ; -NET "h_data<1>" LOC = "P114" |IOSTANDARD = LVCMOS33 ; -NET "h_data<2>" LOC = "P115" |IOSTANDARD = LVCMOS33 ; -NET "h_data<3>" LOC = "P116" |IOSTANDARD = LVCMOS33 ; -NET "h_data<4>" LOC = "P117" |IOSTANDARD = LVCMOS33 ; -NET "h_data<5>" LOC = "P118" |IOSTANDARD = LVCMOS33 ; -NET "h_data<6>" LOC = "P119" |IOSTANDARD = LVCMOS33 ; -NET "h_data<7>" LOC = "P120" |IOSTANDARD = LVCMOS33 ; -##NET "h_pwr" LOC = "P102" | IOSTANDARD = LVCMOS33 ; -NET "h_rdnw" LOC = "P95" |IOSTANDARD = LVCMOS33 ; -NET "h_rst_b" LOC = "P100" |IOSTANDARD = LVCMOS33 ; -NET "test<1>" LOC = "P83" |IOSTANDARD = LVCMOS33 ; -NET "test<2>" LOC = "P82" |IOSTANDARD = LVCMOS33 ; -NET "test<3>" LOC = "P81" |IOSTANDARD = LVCMOS33 ; -NET "test<4>" LOC = "P80" |IOSTANDARD = LVCMOS33 ; -NET "test<5>" LOC = "P79" |IOSTANDARD = LVCMOS33 ; -NET "test<6>" LOC = "P78" |IOSTANDARD = LVCMOS33 ; -NET "test<7>" LOC = "P75" |IOSTANDARD = LVCMOS33 ; -NET "test<8>" LOC = "P74" |IOSTANDARD = LVCMOS33 ; -NET "sw<1>" LOC = "P88" |IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P87" |IOSTANDARD = LVCMOS33 ; -NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; - -NET "fastclk" TNM_NET = fastclk; -TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; -NET "h_phi2" TNM_NET = h_phi2; -TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%; +# Generated by export-jtagtest-ucf.ulp +# http://www.jtagtest.com/ +# +# Board : d:/Users/g7ocd/Projects/Eagle CAD Files/Retro-computing/LX9Co/LX9Co.brd +# Part Name : U1 +# Part ID : 6SLX9TQG144 +# Part pkg : TQ144 +# Exported on: 18.10.2014 21:43:03 +NET "fastclk" LOC = "P92" | IOSTANDARD = LVCMOS33 ; +NET "h_phi2" LOC = "P94" | IOSTANDARD = LVCMOS33 ; -PIN "instance_name/CLKFX_BUFG_INST.O" CLOCK_DEDICATED_ROUTE = FALSE; +NET "fastclk" TNM_NET = fastclk; +TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; +NET "h_phi2" TNM_NET = h_phi2; +TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%; + +NET "h_cs_b" LOC = "P99" | IOSTANDARD = LVCMOS33 ; +NET "h_rdnw" LOC = "P95" | IOSTANDARD = LVCMOS33 ; +NET "h_rst_b" LOC = "P100" | IOSTANDARD = LVCMOS33 ; + +NET "h_addr<0>" LOC = "P97" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<1>" LOC = "P93" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<2>" LOC = "P101" | IOSTANDARD = LVCMOS33 ; + +NET "h_irq_b" LOC = "P98" | IOSTANDARD = LVCMOS33 ; # Not connected + +NET "h_data<0>" LOC = "P112" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<1>" LOC = "P114" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<2>" LOC = "P115" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<3>" LOC = "P116" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<4>" LOC = "P117" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<5>" LOC = "P118" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<6>" LOC = "P119" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<7>" LOC = "P120" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "ram_cs" LOC = "P16" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_lb_b" LOC = "P17" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_oe" LOC = "P22" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_ub_b" LOC = "P21" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_wr" LOC = "P142" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<0>" LOC = "P15" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<1>" LOC = "P14" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<2>" LOC = "P12" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<3>" LOC = "P11" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<4>" LOC = "P10" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<5>" LOC = "P26" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<6>" LOC = "P24" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<7>" LOC = "P23" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<8>" LOC = "P41" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<9>" LOC = "P43" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<10>" LOC = "P44" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<11>" LOC = "P45" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<12>" LOC = "P137" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<13>" LOC = "P138" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<14>" LOC = "P139" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<15>" LOC = "P140" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<16>" LOC = "P141" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<17>" LOC = "P46" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<18>" LOC = "P40" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<0>" LOC = "P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<1>" LOC = "P8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<2>" LOC = "P7" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<3>" LOC = "P6" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<4>" LOC = "P5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<5>" LOC = "P2" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<6>" LOC = "P1" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<7>" LOC = "P143" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<8>" LOC = "P39" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<9>" LOC = "P35" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<10>" LOC = "P34" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<11>" LOC = "P33" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<12>" LOC = "P32" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<13>" LOC = "P30" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<14>" LOC = "P29" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<15>" LOC = "P27" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<1>" LOC = "P83" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<2>" LOC = "P82" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<3>" LOC = "P81" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<4>" LOC = "P80" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<5>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<6>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<7>" LOC = "P75" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<8>" LOC = "P74" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "sw<1>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; +NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; diff --git a/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf b/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf index d4118e5..4b7dd1d 100644 --- a/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf +++ b/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf @@ -1,100 +1,103 @@ -# Generated by export-jtagtest-ucf.ulp -# http://www.jtagtest.com/ -# -# Board : d:/Users/g7ocd/Projects/Eagle CAD Files/Retro-computing/LX9Co/LX9Co.brd -# Part Name : U1 -# Part ID : 6SLX9TQG144 -# Part pkg : TQ144 -# Exported on: 18.10.2014 21:43:03 -NET "fastclk" LOC = "P92" |IOSTANDARD = LVCMOS33 ; - -NET "h_irq_b" LOC = "P98" |IOSTANDARD = LVCMOS33 ; # Not connected -NET "ram_cs" LOC = "P16" |IOSTANDARD = LVCMOS33 ; -NET "ram_lb_b" LOC = "P17" |IOSTANDARD = LVCMOS33 ; -NET "ram_oe" LOC = "P22" |IOSTANDARD = LVCMOS33 ; -NET "ram_ub_b" LOC = "P21" |IOSTANDARD = LVCMOS33 ; -NET "ram_wr" LOC = "P142" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<0>" LOC = "P15" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<1>" LOC = "P14" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<2>" LOC = "P12" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<3>" LOC = "P11" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<4>" LOC = "P10" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<5>" LOC = "P26" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<6>" LOC = "P24" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<7>" LOC = "P23" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<8>" LOC = "P41" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<9>" LOC = "P43" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<10>" LOC = "P44" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<11>" LOC = "P45" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<12>" LOC = "P137" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<13>" LOC = "P138" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<14>" LOC = "P139" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<15>" LOC = "P140" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<16>" LOC = "P141" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<17>" LOC = "P46" |IOSTANDARD = LVCMOS33 ; -NET "ram_addr<18>" LOC = "P40" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<0>" LOC = "P9" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<1>" LOC = "P8" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<2>" LOC = "P7" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<3>" LOC = "P6" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<4>" LOC = "P5" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<5>" LOC = "P2" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<6>" LOC = "P1" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<7>" LOC = "P143" |IOSTANDARD = LVCMOS33 ; -NET "ram_data<8>" LOC = "P39" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<9>" LOC = "P35" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<10>" LOC = "P34" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<11>" LOC = "P33" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<12>" LOC = "P32" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<13>" LOC = "P30" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<14>" LOC = "P29" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<15>" LOC = "P27" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<16>" LOC = "P50" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<17>" LOC = "P48" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<18>" LOC = "P47" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<19>" LOC = "P56" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<20>" LOC = "P57" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<21>" LOC = "P58" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<22>" LOC = "P59" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<23>" LOC = "P61" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<24>" LOC = "P123" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<25>" LOC = "P124" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<26>" LOC = "P126" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<27>" LOC = "P127" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<28>" LOC = "P131" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<29>" LOC = "P132" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<30>" LOC = "P133" | IOSTANDARD = LVCMOS33 ; -NET "ram_data<31>" LOC = "P134" | IOSTANDARD = LVCMOS33 ; -NET "h_addr<0>" LOC = "P97" |IOSTANDARD = LVCMOS33 ; -NET "h_addr<1>" LOC = "P93" |IOSTANDARD = LVCMOS33 ; -NET "h_addr<2>" LOC = "P101" |IOSTANDARD = LVCMOS33 ; -NET "h_phi2" LOC = "P94" |IOSTANDARD = LVCMOS33; -NET "h_cs_b" LOC = "P99" |IOSTANDARD = LVCMOS33 ; -NET "h_data<0>" LOC = "P112" |IOSTANDARD = LVCMOS33 ; -NET "h_data<1>" LOC = "P114" |IOSTANDARD = LVCMOS33 ; -NET "h_data<2>" LOC = "P115" |IOSTANDARD = LVCMOS33 ; -NET "h_data<3>" LOC = "P116" |IOSTANDARD = LVCMOS33 ; -NET "h_data<4>" LOC = "P117" |IOSTANDARD = LVCMOS33 ; -NET "h_data<5>" LOC = "P118" |IOSTANDARD = LVCMOS33 ; -NET "h_data<6>" LOC = "P119" |IOSTANDARD = LVCMOS33 ; -NET "h_data<7>" LOC = "P120" |IOSTANDARD = LVCMOS33 ; -##NET "h_pwr" LOC = "P102" | IOSTANDARD = LVCMOS33 ; -NET "h_rdnw" LOC = "P95" |IOSTANDARD = LVCMOS33 ; -NET "h_rst_b" LOC = "P100" |IOSTANDARD = LVCMOS33 ; -NET "test<1>" LOC = "P83" |IOSTANDARD = LVCMOS33 ; -NET "test<2>" LOC = "P82" |IOSTANDARD = LVCMOS33 ; -NET "test<3>" LOC = "P81" |IOSTANDARD = LVCMOS33 ; -NET "test<4>" LOC = "P80" |IOSTANDARD = LVCMOS33 ; -NET "test<5>" LOC = "P79" |IOSTANDARD = LVCMOS33 ; -NET "test<6>" LOC = "P78" |IOSTANDARD = LVCMOS33 ; -NET "test<7>" LOC = "P75" |IOSTANDARD = LVCMOS33 ; -NET "test<8>" LOC = "P74" |IOSTANDARD = LVCMOS33 ; -NET "sw<0>" LOC = "P88" |IOSTANDARD = LVCMOS33 ; -NET "sw<1>" LOC = "P87" |IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -NET "sw<3>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; - -NET "fastclk" TNM_NET = fastclk; -TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; -NET "h_phi2" TNM_NET = h_phi2; -TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%; +# Generated by export-jtagtest-ucf.ulp +# http://www.jtagtest.com/ +# +# Board : d:/Users/g7ocd/Projects/Eagle CAD Files/Retro-computing/LX9Co/LX9Co.brd +# Part Name : U1 +# Part ID : 6SLX9TQG144 +# Part pkg : TQ144 +# Exported on: 18.10.2014 21:43:03 +NET "fastclk" LOC = "P92" | IOSTANDARD = LVCMOS33 ; +NET "h_phi2" LOC = "P94" | IOSTANDARD = LVCMOS33 ; + +NET "fastclk" TNM_NET = fastclk; +TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; +NET "h_phi2" TNM_NET = h_phi2; +TIMESPEC TS_h_phi2 = PERIOD "h_phi2" 500 ns HIGH 50%; + +NET "h_cs_b" LOC = "P99" | IOSTANDARD = LVCMOS33 ; +NET "h_rdnw" LOC = "P95" | IOSTANDARD = LVCMOS33 ; +NET "h_rst_b" LOC = "P100" | IOSTANDARD = LVCMOS33 ; + +NET "h_addr<0>" LOC = "P97" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<1>" LOC = "P93" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<2>" LOC = "P101" | IOSTANDARD = LVCMOS33 ; + +NET "h_irq_b" LOC = "P98" | IOSTANDARD = LVCMOS33 ; # Not connected + +NET "h_data<0>" LOC = "P112" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<1>" LOC = "P114" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<2>" LOC = "P115" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<3>" LOC = "P116" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<4>" LOC = "P117" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<5>" LOC = "P118" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<6>" LOC = "P119" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<7>" LOC = "P120" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "ram_cs" LOC = "P16" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_lb_b" LOC = "P17" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_oe" LOC = "P22" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_ub_b" LOC = "P21" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_wr" LOC = "P142" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<0>" LOC = "P15" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<1>" LOC = "P14" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<2>" LOC = "P12" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<3>" LOC = "P11" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<4>" LOC = "P10" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<5>" LOC = "P26" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<6>" LOC = "P24" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<7>" LOC = "P23" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<8>" LOC = "P41" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<9>" LOC = "P43" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<10>" LOC = "P44" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<11>" LOC = "P45" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<12>" LOC = "P137" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<13>" LOC = "P138" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<14>" LOC = "P139" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<15>" LOC = "P140" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<16>" LOC = "P141" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<17>" LOC = "P46" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<18>" LOC = "P40" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<0>" LOC = "P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<1>" LOC = "P8" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<2>" LOC = "P7" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<3>" LOC = "P6" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<4>" LOC = "P5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<5>" LOC = "P2" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<6>" LOC = "P1" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<7>" LOC = "P143" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<8>" LOC = "P39" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<9>" LOC = "P35" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<10>" LOC = "P34" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<11>" LOC = "P33" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<12>" LOC = "P32" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<13>" LOC = "P30" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<14>" LOC = "P29" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<15>" LOC = "P27" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<16>" LOC = "P50" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<17>" LOC = "P48" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<18>" LOC = "P47" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<19>" LOC = "P56" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<20>" LOC = "P57" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<21>" LOC = "P58" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<22>" LOC = "P59" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<23>" LOC = "P61" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<24>" LOC = "P123" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<25>" LOC = "P124" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<26>" LOC = "P126" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<27>" LOC = "P127" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<28>" LOC = "P131" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<29>" LOC = "P132" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<30>" LOC = "P133" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<31>" LOC = "P134" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<1>" LOC = "P83" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<2>" LOC = "P82" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<3>" LOC = "P81" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<4>" LOC = "P80" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<5>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<6>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<7>" LOC = "P75" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "test<8>" LOC = "P74" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "sw<1>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; +##NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +##NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; From 3446b37e524188145fb51895ea37dedef0d2aafd Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 28 Mar 2015 17:10:03 +0000 Subject: [PATCH 17/61] Co Pro 6502 and Co Pro 80x86: Fixes for power-on reset problem when using multi-book loader Change-Id: I59c328e2f4e973c97af9967e2b0a70859a1d3e6b --- src/LX9Co_CoPro6502.vhd | 106 +++++++++++------------------------- src/LX9Co_CoPro6502fast.vhd | 15 ++++- src/LX9Co_CoPro80186.v | 14 ++++- 3 files changed, 59 insertions(+), 76 deletions(-) diff --git a/src/LX9Co_CoPro6502.vhd b/src/LX9Co_CoPro6502.vhd index adad5ea..1822918 100644 --- a/src/LX9Co_CoPro6502.vhd +++ b/src/LX9Co_CoPro6502.vhd @@ -12,13 +12,11 @@ entity LX9CoPro6502 is port ( -- GOP Signals fastclk : in std_logic; - --tp : out std_logic_vector(8 downto 2); test : out std_logic_vector(8 downto 1); sw : in std_logic_vector(2 downto 1); - --fcs : out std_logic; - -- Tube signals (use 16 out of 22 DIL pins) - h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks + -- Tube signals + h_phi2 : in std_logic; h_addr : in std_logic_vector(2 downto 0); h_data : inout std_logic_vector(7 downto 0); h_rdnw : in std_logic; @@ -26,7 +24,6 @@ entity LX9CoPro6502 is h_rst_b : in std_logic; h_irq_b : inout std_logic; - -- Ram Signals ram_ub_b : out std_logic; ram_lb_b : out std_logic; @@ -125,8 +122,6 @@ architecture BEHAVIORAL of LX9CoPro6502 is h_rdnw : in std_logic; h_rst_b : in std_logic; h_irq_b : inout std_logic; - -- drq : out std_logic; - -- dackb : in std_logic; p_addr : in std_logic_vector(2 downto 0); p_cs_b : in std_logic; p_data_in : in std_logic_vector(7 downto 0); @@ -149,10 +144,11 @@ architecture BEHAVIORAL of LX9CoPro6502 is signal phi2 : std_logic; signal phi3 : std_logic; signal cpu_clken : std_logic; - signal clken_counter : std_logic_vector (1 downto 0); signal bootmode : std_logic; signal RSTn : std_logic; signal RSTn_sync : std_logic; + signal clken_counter : std_logic_vector (1 downto 0); + signal reset_counter : std_logic_vector (8 downto 0); ------------------------------------------------- -- parasite signals @@ -170,6 +166,7 @@ architecture BEHAVIORAL of LX9CoPro6502 is signal ram_wr_int : std_logic; signal rom_cs_b : std_logic; signal rom_data_out : std_logic_vector (7 downto 0); + ------------------------------------------------- -- cpu signals ------------------------------------------------- @@ -186,6 +183,7 @@ architecture BEHAVIORAL of LX9CoPro6502 is signal cpu_IRQ_n_sync : std_logic; signal cpu_NMI_n_sync : std_logic; signal sync : std_logic; + begin --------------------------------------------------------------------- @@ -307,71 +305,18 @@ begin ram_wr <= ram_wr_int; ram_addr <= "000" & cpu_addr(15 downto 0); ram_data <= cpu_dout when cpu_R_W_n = '0' else "ZZZZZZZZ"; - - --fcs <= '1'; - - testpr : process(sw, debug_clk, sync, cpu_addr, h_addr, h_cs_b, cpu_dout, p_data_out, p_cs_b, cpu_NMI_n, cpu_IRQ_n) - begin - test(7) <= bootmode; - test(8) <= ram_cs_b; - if (sw(1) = '1' and sw(2) = '1') then - - test(6) <= debug_clk; - test(5) <= RSTn; - test(4) <= sync; - test(3) <= cpu_addr(9); - test(2) <= cpu_addr(8); - test(1) <= cpu_addr(7); - - --tp(8) <= cpu_addr(6); - --tp(7) <= cpu_addr(5); - --tp(6) <= cpu_addr(4); - --tp(5) <= cpu_addr(3); - --tp(4) <= cpu_addr(2); - --tp(3) <= cpu_addr(1); - --tp(2) <= cpu_addr(0); - else - - test(6) <= debug_clk; - test(5) <= RSTn; - test(4) <= sync; - test(3) <= '0'; - test(2) <= '0'; - test(1) <= '0'; - --tp(8) <= ram_cs_b; - --tp(7) <= ram_wr_int; - --tp(6) <= ram_oe_int; - --tp(5) <= p_cs_b; - --tp(4) <= CPU_IRQ_n; - --tp(3) <= CPU_NMI_n; - --tp(2) <= bootmode; - - --- test(6) <= CPU_NMI_n; --- test(5) <= '0'; --- if h_addr(2 downto 0) = "101" and h_cs_b = '0' then --- test(4) <= '1'; --- else --- test(4) <= '0'; --- end if; --- if cpu_addr(2 downto 0) = "101" and p_cs_b = '0' then --- test(3) <= '1'; --- else --- test(3) <= '0'; --- end if; --- test(2) <= debug_clk; --- test(1) <= cpu_dout(7); --- tp(8) <= cpu_dout(6); --- tp(7) <= cpu_dout(5); --- tp(6) <= cpu_dout(4); --- tp(5) <= cpu_dout(3); --- tp(4) <= cpu_dout(2); --- tp(3) <= cpu_dout(1); --- tp(2) <= cpu_dout(0); - end if; - end process; - +-------------------------------------------------------- +-- test signals +-------------------------------------------------------- + test(8) <= cpu_NMI_n; + test(7) <= h_phi2; + test(6) <= not((not p_cs_b) and cpu_clken); + test(5) <= cpu_R_W_n; + test(4) <= cpu_addr(2); + test(3) <= cpu_addr(1); + test(2) <= cpu_addr(0); + test(1) <= cpu_clken; -------------------------------------------------------- -- boot mode generator @@ -387,6 +332,22 @@ begin end if; end process; +-------------------------------------------------------- +-- power up reset +-------------------------------------------------------- + reset_gen : process(clk_16M00) + begin + if rising_edge(clk_16M00) then + if (reset_counter(8) = '0') then + reset_counter <= reset_counter + 1; + end if; + RSTn_sync <= RSTn AND reset_counter(8); + end if; + end process; + +-------------------------------------------------------- +-- interrupt synchronization +-------------------------------------------------------- sync_gen : process(clk_16M00, RSTn_sync) begin if RSTn_sync = '0' then @@ -421,7 +382,6 @@ begin phi2 <= phi1; phi3 <= phi2; end if; - RSTn_sync <= RSTn; end process; end BEHAVIORAL; diff --git a/src/LX9Co_CoPro6502fast.vhd b/src/LX9Co_CoPro6502fast.vhd index 243450b..9e29b5f 100644 --- a/src/LX9Co_CoPro6502fast.vhd +++ b/src/LX9Co_CoPro6502fast.vhd @@ -155,6 +155,7 @@ architecture BEHAVIORAL of LX9CoPro6502fast is signal RSTn : std_logic; signal RSTn_sync : std_logic; signal clken_counter : std_logic_vector (3 downto 0); + signal reset_counter : std_logic_vector (8 downto 0); ------------------------------------------------- -- parasite signals @@ -365,6 +366,19 @@ begin end if; end process; +-------------------------------------------------------- +-- power up reset +-------------------------------------------------------- + reset_gen : process(clk_cpu) + begin + if rising_edge(clk_cpu) then + if (reset_counter(8) = '0') then + reset_counter <= reset_counter + 1; + end if; + RSTn_sync <= RSTn AND reset_counter(8); + end if; + end process; + -------------------------------------------------------- -- interrupt synchronization -------------------------------------------------------- @@ -400,7 +414,6 @@ begin when others => cpu_clken <= clken_counter(0); end case; - RSTn_sync <= RSTn; end if; end process; diff --git a/src/LX9Co_CoPro80186.v b/src/LX9Co_CoPro80186.v index 2eaba48..a725e9b 100644 --- a/src/LX9Co_CoPro80186.v +++ b/src/LX9Co_CoPro80186.v @@ -148,6 +148,7 @@ module LX9CoPro80186 ( wire [19:0] pc; wire trigger; + reg [8:0] reset_counter; // Instantiate the module dcm_32_16 instance_name ( @@ -156,10 +157,17 @@ dcm_32_16 instance_name ( .CLK0_OUT1(), .CLK2X_OUT() ); - + // Ensure reset is held active for 256 clock cycles on power up + // Needed as Beeb's reset is missed when using multiboot loader as initialization takes too long + always @(posedge clk) + begin + if (reset_counter[8] == 0) + reset_counter <= reset_counter + 1; + end + wire rst; - assign rst = !p_rst_b; + assign rst = !p_rst_b | !reset_counter[8]; bootrom bootrom ( @@ -528,6 +536,8 @@ tube tube_inst( assign ram_addr = ram_addr_int; assign h_irq_b = 1; + + endmodule From d3d1711e49b958dbb31a7329730e02b84bae5394 Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 6 Apr 2015 19:13:56 +0100 Subject: [PATCH 18/61] Added Papilio Co Pro to test Berend's papilio wing Change-Id: Ife74f1a78cbff75e02ffb07556f6c18883a17a72 --- src/CoPro6502papilio.vhd | 386 +++++++++++++++++++++++++++++++++++++++ src/CoProPapilio.ucf | 76 ++++++++ 2 files changed, 462 insertions(+) create mode 100644 src/CoPro6502papilio.vhd create mode 100644 src/CoProPapilio.ucf diff --git a/src/CoPro6502papilio.vhd b/src/CoPro6502papilio.vhd new file mode 100644 index 0000000..083cf88 --- /dev/null +++ b/src/CoPro6502papilio.vhd @@ -0,0 +1,386 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity CoPro6502papilio is + generic ( + UseT65Core : boolean := false; + UseJensCore : boolean := false; + UseAlanDCore : boolean := true + ); + port ( + -- GOP Signals + fastclk : in std_logic; + + -- Tube signals + h_phi2 : in std_logic; + h_addr : in std_logic_vector(2 downto 0); + h_data : inout std_logic_vector(7 downto 0); + h_rdnw : in std_logic; + h_cs_b : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + + -- Ram Signals + ram_cs : out std_logic; + ram_oe : out std_logic; + ram_wr : out std_logic; + ram_addr : out std_logic_vector (18 downto 0); + ram_data : inout std_logic_vector (7 downto 0); + + led_ram : out std_logic; + led_halt : out std_logic + + ); +end CoPro6502papilio; + +architecture BEHAVIORAL of CoPro6502papilio is + + component dcm_32_16 + port ( + CLKIN_IN : in std_logic; + CLK0_OUT : out std_logic; + CLK0_OUT1 : out std_logic; + CLK2X_OUT : out std_logic + ); + end component; + + component tuberom_65c102 + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(10 downto 0); + DATA : out std_logic_vector(7 downto 0)); + end component; + + component T65 + port( + Mode : in std_logic_vector(1 downto 0); + Res_n : in std_logic; + Enable : in std_logic; + Clk : in std_logic; + Rdy : in std_logic; + Abort_n : in std_logic; + IRQ_n : in std_logic; + NMI_n : in std_logic; + SO_n : in std_logic; + DI : in std_logic_vector(7 downto 0); + R_W_n : out std_logic; + Sync : out std_logic; + EF : out std_logic; + MF : out std_logic; + XF : out std_logic; + ML_n : out std_logic; + VP_n : out std_logic; + VDA : out std_logic; + VPA : out std_logic; + A : out std_logic_vector(23 downto 0); + DO : out std_logic_vector(7 downto 0) + ); + end component; + + component r65c02_tc + port( + clk_clk_i : in std_logic; + d_i : in std_logic_vector(7 downto 0); + irq_n_i : in std_logic; + nmi_n_i : in std_logic; + rdy_i : in std_logic; + rst_rst_n_i : in std_logic; + so_n_i : in std_logic; + a_o : out std_logic_vector(15 downto 0); + d_o : out std_logic_vector(7 downto 0); + rd_o : out std_logic; + sync_o : out std_logic; + wr_n_o : out std_logic; + wr_o : out std_logic + ); + end component; + + component r65c02 + port( + reset : in std_logic; + clk : in std_logic; + enable : in std_logic; + nmi_n : in std_logic; + irq_n : in std_logic; + di : in unsigned(7 downto 0); + do : out unsigned(7 downto 0); + addr : out unsigned(15 downto 0); + nwe : out std_logic; + sync : out std_logic; + sync_irq : out std_logic + ); + end component; + + component tube + port( + h_addr : in std_logic_vector(2 downto 0); + h_cs_b : in std_logic; + h_data : inout std_logic_vector(7 downto 0); + h_phi2 : in std_logic; + h_rdnw : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + p_addr : in std_logic_vector(2 downto 0); + p_cs_b : in std_logic; + p_data_in : in std_logic_vector(7 downto 0); + p_data_out : out std_logic_vector(7 downto 0); + p_rdnw : in std_logic; + p_phi2 : in std_logic; + p_rst_b : out std_logic; + p_nmi_b : inout std_logic; + p_irq_b : inout std_logic + ); + end component; + +------------------------------------------------- +-- clock and reset signals +------------------------------------------------- + + signal clk_16M00 : std_logic; + signal phi0 : std_logic; + signal phi1 : std_logic; + signal phi2 : std_logic; + signal phi3 : std_logic; + signal cpu_clken : std_logic; + signal bootmode : std_logic; + signal RSTn : std_logic; + signal RSTn_sync : std_logic; + signal clken_counter : std_logic_vector (1 downto 0); + signal reset_counter : std_logic_vector (8 downto 0); + signal led_counter : std_logic_vector (23 downto 0); + +------------------------------------------------- +-- parasite signals +------------------------------------------------- + + signal p_cs_b : std_logic; + signal gated_p_cs_b : std_logic; + signal p_data_out : std_logic_vector (7 downto 0); + +------------------------------------------------- +-- ram/rom signals +------------------------------------------------- + + signal ram_cs_b : std_logic; + signal ram_oe_int : std_logic; + signal ram_wr_int : std_logic; + signal rom_cs_b : std_logic; + signal rom_data_out : std_logic_vector (7 downto 0); + +------------------------------------------------- +-- cpu signals +------------------------------------------------- + + signal cpu_R_W_n : std_logic; + signal cpu_addr : std_logic_vector (23 downto 0); + signal cpu_addr_us: unsigned (23 downto 0); + signal cpu_din : std_logic_vector (7 downto 0); + signal cpu_dout : std_logic_vector (7 downto 0); + signal cpu_dout_us: unsigned (7 downto 0); + signal cpu_IRQ_n : std_logic; + signal cpu_NMI_n : std_logic; + signal cpu_IRQ_n_sync : std_logic; + signal cpu_NMI_n_sync : std_logic; + signal sync : std_logic; + +begin + +--------------------------------------------------------------------- +-- instantiated components +--------------------------------------------------------------------- + + inst_dcm_32_16 : dcm_32_16 port map ( + CLKIN_IN => fastclk, + CLK0_OUT => clk_16M00, + CLK0_OUT1 => open, + CLK2X_OUT => open + ); + + inst_tuberom : tuberom_65c102 port map ( + CLK => clk_16M00, + ADDR => cpu_addr(10 downto 0), + DATA => rom_data_out + ); + + GenT65Core: if UseT65Core generate + inst_T65 : T65 port map ( + Mode => "01", + Abort_n => '1', + SO_n => '1', + Res_n => RSTn_sync, + Enable => cpu_clken, + Clk => clk_16M00, + Rdy => '1', + IRQ_n => cpu_IRQ_n_sync, + NMI_n => cpu_NMI_n_sync, + R_W_n => cpu_R_W_n, + Sync => sync, + A(23 downto 0) => cpu_addr, + DI(7 downto 0) => cpu_din, + DO(7 downto 0) => cpu_dout + ); + end generate; + + GenJensCore: if UseJensCore generate + Inst_r65c02_tc: r65c02_tc PORT MAP( + clk_clk_i => phi0, + d_i => cpu_din, + irq_n_i => cpu_IRQ_n_sync, + nmi_n_i => cpu_NMI_n_sync, + rdy_i => '1', + rst_rst_n_i => RSTn_sync, + so_n_i => '1', + a_o => cpu_addr(15 downto 0), + d_o => cpu_dout, + rd_o => open, + sync_o => sync, + wr_n_o => cpu_R_W_n, + wr_o => open + ); + end generate; + + GenAlanDCore: if UseAlanDCore generate + inst_r65c02: r65c02 port map( + reset => RSTn_sync, + clk => clk_16M00, + enable => cpu_clken, + nmi_n => cpu_NMI_n_sync, + irq_n => cpu_IRQ_n_sync, + di => unsigned(cpu_din), + do => cpu_dout_us, + addr => cpu_addr_us(15 downto 0), + nwe => cpu_R_W_n, + sync => sync, + sync_irq => open + ); + cpu_dout <= std_logic_vector(cpu_dout_us); + cpu_addr <= std_logic_vector(cpu_addr_us); + end generate; + + inst_tube: tube port map ( + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b, + h_irq_b => h_irq_b, + p_addr => cpu_addr(2 downto 0), + p_cs_b => gated_p_cs_b, + p_data_in => cpu_dout, + p_data_out => p_data_out, + p_rdnw => cpu_R_W_n, + p_phi2 => clk_16M00, + p_rst_b => RSTn, + p_nmi_b => cpu_NMI_n, + p_irq_b => cpu_IRQ_n + ); + + gated_p_cs_b <= not((not p_cs_b) and cpu_clken); + + p_cs_b <= '0' when cpu_addr(15 downto 3) = "1111111011111" else '1'; + + rom_cs_b <= '0' when cpu_addr(15 downto 11) = "11111" and cpu_R_W_n = '1' and bootmode = '1' else '1'; + + ram_cs_b <= '0' when p_cs_b = '1' and rom_cs_b = '1' else '1'; + + cpu_din <= + p_data_out when p_cs_b = '0' else + rom_data_out when rom_cs_b = '0' else + ram_data when ram_cs_b = '0' else + x"f1"; + + ram_cs <= ram_cs_b; + ram_oe_int <= not ((not ram_cs_b) and cpu_R_W_n); + ram_oe <= ram_oe_int; + ram_wr_int <= not ((not ram_cs_b) and (not cpu_R_W_n) and phi1); + ram_wr <= ram_wr_int; + + -- for an AS6C1008 A17 connects to CE2 which needs to be high + ram_addr <= "111" & cpu_addr(15 downto 0); + ram_data <= cpu_dout when cpu_R_W_n = '0' else "ZZZZZZZZ"; + +-------------------------------------------------------- +-- boot mode generator +-------------------------------------------------------- + boot_gen : process(clk_16M00, RSTn_sync) + begin + if RSTn_sync = '0' then + bootmode <= '1'; + elsif rising_edge(clk_16M00) then + if p_cs_b = '0' then + bootmode <= '0'; + end if; + end if; + end process; + +-------------------------------------------------------- +-- power up reset +-------------------------------------------------------- + reset_gen : process(clk_16M00) + begin + if rising_edge(clk_16M00) then + if (reset_counter(8) = '0') then + reset_counter <= reset_counter + 1; + end if; + RSTn_sync <= RSTn AND reset_counter(8); + end if; + end process; + +-------------------------------------------------------- +-- interrupt synchronization +-------------------------------------------------------- + sync_gen : process(clk_16M00, RSTn_sync) + begin + if RSTn_sync = '0' then + cpu_NMI_n_sync <= '1'; + cpu_IRQ_n_sync <= '1'; + elsif rising_edge(clk_16M00) then + if (cpu_clken = '1') then + cpu_NMI_n_sync <= cpu_NMI_n; + cpu_IRQ_n_sync <= cpu_IRQ_n; + end if; + end if; + end process; + +-------------------------------------------------------- +-- clock enable generator + +-- 4MHz +-- cpu_clken active on cycle 0, 4, 8, 12 +-- address/data changes on cycle 1, 5, 9, 13 +-- phi0 active on cycle 1..2 +-- phi1 active on cycle 2..3 +-- phi2 active on cycle 3..0 +-- phi3 active on cycle 0..1 +-------------------------------------------------------- + clk_gen : process(clk_16M00, RSTn) + begin + if rising_edge(clk_16M00) then + clken_counter <= clken_counter + 1; + cpu_clken <= clken_counter(0) and clken_counter(1); + phi0 <= not clken_counter(1); + phi1 <= phi0; + phi2 <= phi1; + phi3 <= phi2; + end if; + end process; + +-------------------------------------------------------- +-- led generator +-------------------------------------------------------- + + led_gen : process(clk_16M00, RSTn) + begin + if rising_edge(clk_16M00) then + led_counter <= led_counter + 1; + led_ram <= led_counter(23); + led_halt <= not led_counter(23); + end if; + end process; + +end BEHAVIORAL; + + diff --git a/src/CoProPapilio.ucf b/src/CoProPapilio.ucf new file mode 100644 index 0000000..76fd359 --- /dev/null +++ b/src/CoProPapilio.ucf @@ -0,0 +1,76 @@ +# UCF file for the Papilio One board +# Generated by pin_converter, written by Kevin Lindsey +# https://github.com/thelonious/papilio_pins/tree/development/pin_converter + +# Main board wing pin [] to FPGA pin Pxx map +# -------C------- -------B------- -------A------- +# [GND] [C00] P91 [GND] [B00] P85 P86 [A15] +# [2V5] [C01] P92 [2V5] [B01] P83 P84 [A14] +# [3V3] [C02] P94 [3V3] [B02] P78 P79 [A13] +# [5V0] [C03] P95 [5V0] [B03] P71 P70 [A12] +# [C04] P98 [B04] P68 P67 [A11] [5V0] +# [C05] P2 [B05] P66 P65 [A10] [3V3] +# [C06] P3 [B06] P63 P62 [A09] [2V5] +# [C07] P4 [B07] P61 P60 [A08] [GND] +# [GND] [C08] P5 [GND] [B08] P58 P57 [A07] +# [2V5] [C09] P9 [2V5] [B09] P54 P53 [A06] +# [3V3] [C10] P10 [3V3] [B10] P41 P40 [A05] +# [5V0] [C11] P11 [5V0] [B11] P36 P35 [A04] +# [C12] P12 [B12] P34 P33 [A03] [5V0] +# [C13] P15 [B13] P32 P26 [A02] [3V3] +# [C14] P16 [B14] P25 P23 [A01] [2V5] +# [C15] P17 [B15] P22 P18 [A00] [GND] + +NET "ram_addr<0>" LOC = "P85" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<1>" LOC = "P83" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<2>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<3>" LOC = "P71" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<4>" LOC = "P68" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<5>" LOC = "P66" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<6>" LOC = "P63" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<7>" LOC = "P61" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<8>" LOC = "P58" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<9>" LOC = "P54" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<10>" LOC = "P41" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<11>" LOC = "P36" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<12>" LOC = "P34" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<13>" LOC = "P32" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<14>" LOC = "P25" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<15>" LOC = "P22" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<16>" LOC = "P18" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<17>" LOC = "P23" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_addr<18>" LOC = "P26" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "ram_data<0>" LOC = "P86" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<1>" LOC = "P84" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<2>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<3>" LOC = "P70" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<4>" LOC = "P67" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<5>" LOC = "P65" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<6>" LOC = "P62" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_data<7>" LOC = "P60" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "fastclk" LOC = "P89" | IOSTANDARD = LVCMOS33 | PERIOD = 31.25; +NET "ram_cs" LOC = "P57" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_oe" LOC = "P53" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "ram_wr" LOC = "P40" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "h_phi2" LOC = "P91" | IOSTANDARD = LVCMOS33 | PERIOD = 500; +NET "h_addr<2>" LOC = "P92" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<1>" LOC = "P94" | IOSTANDARD = LVCMOS33 ; +NET "h_addr<0>" LOC = "P95" | IOSTANDARD = LVCMOS33 ; +NET "h_data<7>" LOC = "P98" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<6>" LOC = "P2" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<5>" LOC = "P3" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<4>" LOC = "P4" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<3>" LOC = "P5" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<2>" LOC = "P9" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<1>" LOC = "P10" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_data<0>" LOC = "P11" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "h_rdnw" LOC = "P12" | IOSTANDARD = LVCMOS33 ; +NET "h_cs_b" LOC = "P15" | IOSTANDARD = LVCMOS33 ; +NET "h_rst_b" LOC = "P16" | IOSTANDARD = LVCMOS33 ; +NET "h_irq_b" LOC = "P17" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; + +NET "led_ram" LOC = "P35" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; +NET "led_halt" LOC = "P33" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; From daac012d4c57bb7dd54874776ef4ef9071f2d8fd Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 6 Apr 2015 19:13:56 +0100 Subject: [PATCH 19/61] Added Papilio Co Pro to test Berend's papilio wing Change-Id: Ife74f1a78cbff75e02ffb07556f6c18883a17a72 --- CoPro6502papilio.xise | 459 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 459 insertions(+) create mode 100644 CoPro6502papilio.xise diff --git a/CoPro6502papilio.xise b/CoPro6502papilio.xise new file mode 100644 index 0000000..0622404 --- /dev/null +++ b/CoPro6502papilio.xise @@ -0,0 +1,459 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
From e16f64e2b0af3f6c76429e58d0acf3cc5c406cfe Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 21 Jun 2015 21:48:32 +0100 Subject: [PATCH 20/61] Added README and LICENSE Change-Id: I53fea18654376eb79f3e43ba3e5184462c48aa61 --- LICENSE.txt | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 28 +++ 2 files changed, 702 insertions(+) create mode 100644 LICENSE.txt create mode 100644 README.md diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5da1e6b --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +Matchbox CoPro +============== + +A family of designs for the Matchbox Co Pro for the BBC Micro. + +For more details on the designs, see: +http://stardot.org.uk/forums/viewtopic.php?t=8852&f=44 + +For Jason's LX9 Hardware, see: +http://stardot.org.uk/forums/viewtopic.php?t=8932&f=8 + +DIP Switch Settings: +0 0 0 0 - 4MHz 65C102 (512KB external RAM using Jason's paging extensions) +0 0 0 1 - 8MHz Z80 ( 64KB external RAM) +0 0 1 0 - 4MHz 6809 ( 64KB external RAM) +0 0 1 1 - 16Mhz 80x86 (512KB external RAM) +0 1 0 0 - BIST +0 1 0 1 - unused +0 1 1 0 - unused +0 1 1 1 - unused +1 0 0 0 - 32MHz 65C102 (64KB internal RAM, boot message shows speed) +1 0 0 1 - 16MHz 65C102 (64KB internal RAM, boot message shows speed) +1 0 1 0 - 8MHz 65C102 (64KB internal RAM, boot message shows speed) +1 0 1 1 - 4MHz 65C102 (64KB internal RAM, boot message shows speed) +1 1 0 0 - 112 MHz Z80 (64KB internal RAM, now using NextZ80 core) +1 1 0 1 - 56 MHz Z80 (64KB internal RAM, now using NextZ80 core) +1 1 1 0 - 32 MHz Z80 (64KB internal RAM, now using NextZ80 core) +1 1 1 1 - 16 MHz Z80 (64KB internal RAM, now using NextZ80 core) \ No newline at end of file From 3e7104201183d8940a2e74096bb5ec68ecba1892 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 9 Aug 2015 09:35:25 +0100 Subject: [PATCH 21/61] Added initial version of PDP11 Co Pro based on PDP2011. Rom is JHG's v0.16 with two patches (see forum thread). Basic *commands are working Change-Id: I0cb0a302380052331a871546856e3cea14bd089e --- LX9Co-PDP11.xise | 424 ++++ src/LX9Co_CoProPDP11.vhd | 309 +++ src/PDP2011/cpu.vhd | 5021 +++++++++++++++++++++++++++++++++++++ src/PDP2011/cpuregs.vhd | 113 + src/PDP2011/fpuregs.vhd | 123 + src/RAM/RAM_32K.vhd | 37 + src/ROM/tuberom_pdp11.vhd | 1057 ++++++++ 7 files changed, 7084 insertions(+) create mode 100644 LX9Co-PDP11.xise create mode 100644 src/LX9Co_CoProPDP11.vhd create mode 100644 src/PDP2011/cpu.vhd create mode 100644 src/PDP2011/cpuregs.vhd create mode 100644 src/PDP2011/fpuregs.vhd create mode 100644 src/RAM/RAM_32K.vhd create mode 100644 src/ROM/tuberom_pdp11.vhd diff --git a/LX9Co-PDP11.xise b/LX9Co-PDP11.xise new file mode 100644 index 0000000..3fca8f5 --- /dev/null +++ b/LX9Co-PDP11.xise @@ -0,0 +1,424 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd new file mode 100644 index 0000000..423849a --- /dev/null +++ b/src/LX9Co_CoProPDP11.vhd @@ -0,0 +1,309 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity LX9CoProPDP11 is + port ( + -- GOP Signals + fastclk : in std_logic; + test : out std_logic_vector(8 downto 1); + sw : in std_logic_vector(2 downto 1); + + -- Tube signals + h_phi2 : in std_logic; + h_addr : in std_logic_vector(2 downto 0); + h_data : inout std_logic_vector(7 downto 0); + h_rdnw : in std_logic; + h_cs_b : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + + -- Ram Signals + ram_ub_b : out std_logic; + ram_lb_b : out std_logic; + ram_cs : out std_logic; + ram_oe : out std_logic; + ram_wr : out std_logic; + ram_addr : out std_logic_vector (18 downto 0); + ram_data : inout std_logic_vector (7 downto 0) + ); +end LX9CoProPDP11; + +architecture BEHAVIORAL of LX9CoProPDP11 is + +------------------------------------------------- +-- clock and reset signals +------------------------------------------------- + + signal clk_16M00 : std_logic; + signal clk_cpu : std_logic; + signal clk_ram : std_logic; + signal clk_tube : std_logic; + signal RSTn : std_logic; + signal RST_sync : std_logic; + signal clken_counter : std_logic_vector (3 downto 0); + signal reset_counter : std_logic_vector (8 downto 0); + +------------------------------------------------- +-- parasite signals +------------------------------------------------- + + signal p_cs_b : std_logic; + signal p_data_out : std_logic_vector (7 downto 0); + +------------------------------------------------- +-- ram/rom signals +------------------------------------------------- + + signal ram_cs_b : std_logic; + signal ram_wr_lo : std_logic; + signal ram_wr_hi : std_logic; + signal rom_cs_b : std_logic; + signal rom_data_out : std_logic_vector (15 downto 0); + signal ram_data_in : std_logic_vector (15 downto 0); + signal ram_data_out : std_logic_vector (15 downto 0); +------------------------------------------------- +-- cpu signals +------------------------------------------------- + + signal cpu_rd : std_logic; + signal cpu_wr : std_logic; + signal cpu_dw8 : std_logic; + signal cpu_addr : std_logic_vector (15 downto 0); + signal cpu_din : std_logic_vector (15 downto 0); + signal cpu_dout : std_logic_vector (15 downto 0); + signal cpu_IRQ_n : std_logic; + signal cpu_NMI_n : std_logic; + signal cpu_IRQ_n1 : std_logic; + signal cpu_NMI_n1 : std_logic; + signal cpu_IRQ_n2 : std_logic; + signal cpu_NMI_n2 : std_logic; + signal cpu_IRQ_req : std_logic; + signal cpu_NMI_req : std_logic; + signal cpu_IRQ_ack : std_logic; + signal cpu_NMI_ack : std_logic; + signal ifetch : std_logic; + signal bg6 : std_logic; + +begin + +--------------------------------------------------------------------- +-- instantiated components +--------------------------------------------------------------------- + + inst_dcm_32_16 : entity work.dcm_32_16 port map ( + CLKIN_IN => fastclk, + CLK0_OUT => clk_16M00, + CLK0_OUT1 => open, + CLK2X_OUT => open + ); + + + inst_tuberom : entity work.tuberom_pdp11 port map ( + CLK => clk_16M00, + ADDR => cpu_addr(10 downto 1), + DATA => rom_data_out + ); + + inst_pdp11 : entity work.pdp2011_cpu port map ( + clk => clk_cpu, -- input clock + reset => RST_sync, -- reset cpu, also causes init signal to devices on the bus to be asserted + addr_v => cpu_addr, -- the virtual address that the cpu drives out to the bus for the current read or write + datain => cpu_din, -- when doing a read, the data input to the cpu + dataout => cpu_dout, -- when doing a write, the data output from the cpu + wr => cpu_wr, -- if '1', the cpu is doing a write to the bus and drives addr_v and dataout + rd => cpu_rd, -- if '1', the cpu is doing a read from the bus, drives addr_v and reads datain + dw8 => cpu_dw8, -- if '1', the read or write initiated by the cpu is 8 bits wide + cp => open, -- if '1', the read or write should use the previous cpu mode + ifetch => ifetch, -- if '1', this read is for an instruction fetch + id => open, -- if '1', the read or write should use data space + init => open, -- if '1', the devices on the bus should reset + iwait => open, -- if '1', the cpu is waiting for an interrupt + br7 => cpu_NMI_req, -- interrupt request, 7 + bg7 => cpu_NMI_ack, -- interrupt grant, 7 + int_vector7 => "0" & x"84", -- interrupt vector, 7 + br6 => cpu_IRQ_req, -- interrupt request, 6 + bg6 => cpu_IRQ_ack, -- interrupt grant, 6 + int_vector6 => "0" & x"80", -- interrupt vector, 6 + br5 => '0', -- interrupt request, 5 + bg5 => open, -- interrupt grant, 5 + int_vector5 => (others => '0'), -- interrupt vector, 5 + br4 => '0', -- interrupt request, 4 + bg4 => open, -- interrupt grant, 4 + int_vector4 => (others => '0'), -- interrupt vector, 4 + mmutrap => '0', -- if '1', the mmu requests a trap to be serviced after the current instruction completes + ack_mmutrap => open, -- if '1', the mmu trap request is being acknowledged + mmuabort => '0', -- if '1', the mmu requests that the current instruction is aborted because of a mmu fault + ack_mmuabort => open, -- if '1', the mmu abort request is being acknowledged + npr => '0', -- non-processor request + npg => open, -- non-processor grant + nxmabort => '0', -- nxm abort - a memory access cycle by the cpu refers to an address that does not exist + oddabort => '0', -- odd abort - a memory access cycle by the cpu is for a full word, but uses an odd address + illhalt => open, -- a halt instruction was not executed because it was illegal in the current mode; for use in the cer cpu error register + ysv => open, -- a yellow stack trap is in progress - for use in the cer cpu error register + rsv => open, -- a red stack trap is in progress - for use in the cer cpu error register + cpu_stack_limit => x"8000", -- the cpu stack limit control register value + cpu_kmillhalt => '0', -- the control register setting for kernel mode illegal halt + sr0_ic => open, -- sr0/mmr0 instruction complete flag + sr1 => open, -- sr1/mmr1, address of the current instruction + sr2 => open, -- sr2, register autoincrement/autodecrement information for instruction restart + dstfreference => open, -- if '1', the destination reference is the final reference for this addressing mode + sr3csmenable => '0', -- if '1', the enable csm instruction flag in sr3/mmr3 is set + psw_in => x"0000", -- psw input from the control register address @ 177776 + psw_in_we_even => '0', -- psw input from the control register address @ 177776, write enable for the even address part + psw_in_we_odd => '0', -- psw input from the control register address @ 177776, write enable for the odd address part + psw_out => open, -- psw output, current psw that the cpu uses + pir_in => x"0000", -- pirq value input from the control register + modelcode => 20, -- cpu model code + init_r7 => x"f800", -- start address after reset = o'173000' = m9312 hi rom + init_psw => x"00a0" -- initial psw sets interrupt priority 5, allowing BR6 and BR7 + ); + + inst_tube: entity work.tube port map ( + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b, + h_irq_b => h_irq_b, + p_addr => cpu_addr(3 downto 1), + p_cs_b => p_cs_b, + p_data_in => cpu_dout(7 downto 0), + p_data_out => p_data_out, + p_rdnw => not cpu_wr, + p_phi2 => clk_tube, + p_rst_b => RSTn, + p_nmi_b => cpu_NMI_n, + p_irq_b => cpu_IRQ_n + ); + + Inst_RAM_lo: entity work.RAM_32K PORT MAP( + clk => clk_ram, + we_uP => ram_wr_lo, + ce => '1', + addr_uP => cpu_addr(15 downto 1), + D_uP => ram_data_in(7 downto 0), + Q_uP => ram_data_out(7 downto 0) + ); + + Inst_RAM_hi: entity work.RAM_32K PORT MAP( + clk => clk_ram, + we_uP => ram_wr_hi, + ce => '1', + addr_uP => cpu_addr(15 downto 1), + D_uP => ram_data_in(15 downto 8), + Q_uP => ram_data_out(15 downto 8) + ); + + p_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and cpu_addr(15 downto 4) = x"FFF" else '1'; + rom_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and p_cs_b = '1' and cpu_addr(15 downto 11) = "11111" else '1'; + ram_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and p_cs_b = '1' and rom_cs_b = '1' else '1'; + + + -- TODO implement fault for non-aligned word access + ram_wr_lo <= '1' when ram_cs_b = '0' and cpu_wr = '1' and (cpu_dw8 = '0' or cpu_addr(0) = '0') else '0'; + ram_wr_hi <= '1' when ram_cs_b = '0' and cpu_wr = '1' and (cpu_dw8 = '0' or cpu_addr(0) = '1') else '0'; + + cpu_din <= + x"ff" & p_data_out when p_cs_b = '0' else + rom_data_out when rom_cs_b = '0' and cpu_dw8 = '0' else + x"ff" & rom_data_out(7 downto 0) when rom_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '0' else + x"ff" & rom_data_out(15 downto 8) when rom_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '1' else + ram_data_out when ram_cs_b = '0' and cpu_dw8 = '0' else + x"ff" & ram_data_out(7 downto 0) when ram_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '0' else + x"ff" & ram_data_out(15 downto 8) when ram_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '1' else + x"f1f1"; + + ram_data_in <= x"ff" & cpu_dout(7 downto 0) when cpu_dw8 = '1' and cpu_addr(0) = '0' else + cpu_dout(7 downto 0) & x"ff" when cpu_dw8 = '1' and cpu_addr(0) = '1' else + cpu_dout; + +-------------------------------------------------------- +-- external Ram unused +-------------------------------------------------------- + ram_ub_b <= '1'; + ram_lb_b <= '1'; + ram_cs <= '1'; + ram_oe <= '1'; + ram_wr <= '1'; + ram_addr <= (others => '1'); + ram_data <= (others => '1'); + +-------------------------------------------------------- +-- test signals +-------------------------------------------------------- +-- test(8) <= '1' when ifetch = '1' and cpu_addr = x"f800" else '0'; +-- test(7) <= '1' when ifetch = '1' and cpu_addr = x"F81E" else '0'; +-- test(8) <= cpu_IRQ_sync; +-- test(7) <= cpu_NMI_sync; + test(8) <= '1' when ifetch = '1' and cpu_addr = x"F83E" else '0'; + test(7) <= '1' when ifetch = '1' and cpu_addr = x"F84E" else '0'; + test(6) <= '1' when ifetch = '1' and cpu_addr = x"F858" else '0'; + test(5) <= '1' when ifetch = '1' and cpu_addr = x"FB12" else '0'; + test(4) <= '1' when ifetch = '1' and cpu_addr = x"FE0E" else '0'; + test(3) <= cpu_IRQ_req; + test(2) <= '1' when ifetch = '1' and cpu_addr = x"FE6A" else '0'; + test(1) <= '1' when ifetch = '1' and cpu_addr = x"F892" else '0'; + +-------------------------------------------------------- +-- clock enable generator +-------------------------------------------------------- + clk_gen : process(clk_16M00, RSTn) + begin + if rising_edge(clk_16M00) then + clken_counter <= clken_counter + 1; + clk_cpu <= not clken_counter(1); + clk_ram <= clk_cpu; + clk_tube <= clk_cpu; + end if; + end process; + +-------------------------------------------------------- +-- power up reset +-------------------------------------------------------- + reset_gen : process(clk_16M00) + begin + if rising_edge(clk_16M00) then + if (reset_counter(8) = '0') then + reset_counter <= reset_counter + 1; + end if; + RST_sync <= not (RSTn AND reset_counter(8)); + end if; + end process; + +-------------------------------------------------------- +-- interrupt synchronization +-------------------------------------------------------- + sync_gen : process(clk_cpu, RST_sync) + begin + if RST_sync = '1' then + cpu_NMI_req <= '0'; + cpu_IRQ_req <= '0'; + cpu_NMI_n1 <= '1'; + cpu_NMI_n2 <= '1'; + cpu_IRQ_n1 <= '1'; + cpu_IRQ_n2 <= '1'; + elsif rising_edge(clk_cpu) then + cpu_NMI_n1 <= cpu_NMI_n; + cpu_NMI_n2 <= cpu_NMI_n1; + cpu_IRQ_n1 <= cpu_IRQ_n; + cpu_IRQ_n2 <= cpu_IRQ_n1; + if (CPU_NMI_ack = '1') then + cpu_NMI_req <= '0'; + elsif (CPU_NMI_n1 = '0' and CPU_NMI_n2 = '1') then + cpu_NMI_req <= '1'; + end if; + if (CPU_IRQ_ack = '1') then + cpu_IRQ_req <= '0'; + elsif (CPU_IRQ_n1 = '0' and CPU_IRQ_n2 = '1') then + cpu_IRQ_req <= '1'; + end if; + end if; + end process; + + +end BEHAVIORAL; + + diff --git a/src/PDP2011/cpu.vhd b/src/PDP2011/cpu.vhd new file mode 100644 index 0000000..1e8b0bb --- /dev/null +++ b/src/PDP2011/cpu.vhd @@ -0,0 +1,5021 @@ + +-- +-- Copyright (c) 2008-2015 Sytse van Slooten +-- +-- Permission is hereby granted to any person obtaining a copy of these VHDL source files and +-- other language source files and associated documentation files ("the materials") to use +-- these materials solely for personal, non-commercial purposes. +-- You are also granted permission to make changes to the materials, on the condition that this +-- copyright notice is retained unchanged. +-- +-- The materials are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; +-- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +-- + +-- $Revision: 1.424 $ + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity pdp2011_cpu is + port( + addr_v : out std_logic_vector(15 downto 0); -- the virtual address that the cpu drives out to the bus for the current read or write + datain : in std_logic_vector(15 downto 0); -- when doing a read, the data input to the cpu + dataout : out std_logic_vector(15 downto 0); -- when doing a write, the data output from the cpu + wr : out std_logic; -- if '1', the cpu is doing a write to the bus and drives addr_v and dataout + rd : out std_logic; -- if '1', the cpu is doing a read from the bus, drives addr_v and reads datain + dw8 : out std_logic; -- if '1', the read or write initiated by the cpu is 8 bits wide + cp : out std_logic; -- if '1', the read or write should use the previous cpu mode + ifetch : out std_logic; -- if '1', this read is for an instruction fetch + id : out std_logic; -- if '1', the read or write should use data space + init : out std_logic; -- if '1', the devices on the bus should reset + + iwait : out std_logic; -- if '1', the cpu is waiting for an interrupt + + br7 : in std_logic; -- interrupt request, 7 + bg7 : out std_logic; -- interrupt grant, 7 + int_vector7 : in std_logic_vector(8 downto 0); -- interrupt vector, 7 + br6 : in std_logic; + bg6 : out std_logic; + int_vector6 : in std_logic_vector(8 downto 0); + br5 : in std_logic; + bg5 : out std_logic; + int_vector5 : in std_logic_vector(8 downto 0); + bg4 : out std_logic; -- interrupt request, 4 + br4 : in std_logic; -- interrupt grant, 4 + int_vector4 : in std_logic_vector(8 downto 0); -- interrupt vector, 4 + + mmutrap : in std_logic; -- if '1', the mmu requests a trap to be serviced after the current instruction completes + ack_mmutrap : out std_logic; -- if '1', the mmu trap request is being acknowledged + mmuabort : in std_logic; -- if '1', the mmu requests that the current instruction is aborted because of a mmu fault + ack_mmuabort : out std_logic; -- if '1', the mmu abort request is being acknowledged + + npr : in std_logic; -- non-processor request + npg : out std_logic; -- non-processor grant + + nxmabort : in std_logic; -- nxm abort - a memory access cycle by the cpu refers to an address that does not exist + oddabort : in std_logic; -- odd abort - a memory access cycle by the cpu is for a full word, but uses an odd address + illhalt : out std_logic; -- a halt instruction was not executed because it was illegal in the current mode; for use in the cer cpu error register + ysv : out std_logic; -- a yellow stack trap is in progress - for use in the cer cpu error register + rsv : out std_logic; -- a red stack trap is in progress - for use in the cer cpu error register + + cpu_stack_limit : in std_logic_vector(15 downto 0); -- the cpu stack limit control register value + cpu_kmillhalt : in std_logic; -- the control register setting for kernel mode illegal halt + + sr0_ic : out std_logic; -- sr0/mmr0 instruction complete flag + sr1 : out std_logic_vector(15 downto 0); -- sr1/mmr1, address of the current instruction + sr2 : out std_logic_vector(15 downto 0); -- sr2, register autoincrement/autodecrement information for instruction restart + dstfreference : out std_logic; -- if '1', the destination reference is the final reference for this addressing mode + sr3csmenable : in std_logic; -- if '1', the enable csm instruction flag in sr3/mmr3 is set + + psw_in : in std_logic_vector(15 downto 0); -- psw input from the control register address @ 177776 + psw_in_we_even : in std_logic; -- psw input from the control register address @ 177776, write enable for the even address part + psw_in_we_odd : in std_logic; -- psw input from the control register address @ 177776, write enable for the odd address part + psw_out : out std_logic_vector(15 downto 0); -- psw output, current psw that the cpu uses + + pir_in : in std_logic_vector(15 downto 0); -- pirq value input from the control register + + modelcode : in integer range 0 to 255; -- cpu model code + have_fp : in integer range 0 to 2 := 2; -- floating point; 0=force disable; 1=force enable; 2=follow default for cpu model + have_fpa : in integer range 0 to 1 := 0; -- floating point accelerator present with J11 cpu + init_r7 : in std_logic_vector(15 downto 0) := x"f600"; -- start address after reset = o'173000' = m9312 hi rom + init_psw : in std_logic_vector(15 downto 0) := x"00e0"; -- initial psw for kernel mode, primary register set, priority 7 + + run : in std_logic := '0'; -- if '1', continue when the cpu is in halt state + clk : in std_logic; -- input clock + reset : in std_logic -- reset cpu, also causes init signal to devices on the bus to be asserted + ); +end pdp2011_cpu; + +architecture implementation of pdp2011_cpu is + +component cpuregs is + port( + raddr : in std_logic_vector(5 downto 0); + waddr : in std_logic_vector(5 downto 0); + d : in std_logic_vector(15 downto 0); + o : out std_logic_vector(15 downto 0); + we : in std_logic; + clk : in std_logic + ); +end component; + +component fpuregs is + port( + raddr : in std_logic_vector(2 downto 0); + waddr : in std_logic_vector(2 downto 0); + d : in std_logic_vector(63 downto 0); + o : out std_logic_vector(63 downto 0); + fpmode : in std_logic; + we : in std_logic; + clk : in std_logic + ); +end component; + +type state_type is ( + state_init, state_ifetch, state_idecode, + state_src0, + state_src1, + state_src2, state_src2w, + state_src3, state_src3a, + state_src4, state_src4w, + state_src5, state_src5a, + state_src6, state_src6a, + state_src7, state_src7a, state_src7b, + state_dst0, + state_dst1, + state_dst2, + state_dst3, state_dst3a, + state_dst4, + state_dst5, state_dst5a, + state_dst6, state_dst6a, + state_dst7, state_dst7a, state_dst7b, + state_sob, + state_jmp, + state_jsr, state_jsra, state_jsrb, state_jsrc, + state_rts, state_rtsa, + state_mark, state_marka, state_markb, + state_csm, state_csma, state_csmb, state_csmc, state_csmd, state_csme, state_csmf, state_csmg, state_csmh, state_csmi, + state_mfp, state_mfpa, + state_mtp, state_mtpa, + state_mtps, + state_dopr, state_dopra, state_doprb, + state_mul, state_mula, state_mulb, + state_div, state_diva, state_divb, + state_ash, state_ashb, + state_ashc, state_ashd, state_ashe, + state_xor, + state_ldfps, + state_stststore, + state_fptrap, + state_fpao, + state_fpso2, + state_fpwr, state_fpwr1, state_fpwr2, + state_fpd0, + state_fpir1, state_fpir2, + state_fpiwr, state_fpiww, state_fpiw1, state_fpiw2, + state_fpr1, state_fpr2, state_fpr3, state_fpr4, + state_fpww, state_fpw1, state_fpw2, state_fpw3, state_fpw4, + state_fprun, + state_fprunao, + state_tstset, state_wrtlck, state_wrtlcka, + state_rsv, + state_trap, state_trapa, state_trapb, state_trapc, state_trapw, state_trapd, state_trape, state_trapf, + state_rti, state_rtia, state_rtib, + state_illegalop, + state_mmuabort, state_mmutrap, + state_br7, state_br6, state_br5, state_br4, + state_store_alu_p, state_store_alu_w, state_store_alu_r, + state_npg +); + +signal state : state_type := state_init; +signal pdststate : state_type := state_store_alu_r; -- initialize to a valid value, to enable optimizing +signal psrcstate : state_type := state_store_alu_r; -- initialize to a valid value, to enable optimizing + +signal ir : std_logic_vector(15 downto 0); +signal ir_addr : std_logic_vector(15 downto 0); +signal ir_dop : std_logic; +signal ir_sop : std_logic; +signal ir_jmp : std_logic; +signal ir_jsr : std_logic; +signal ir_csm : std_logic; +signal ir_mfpi : std_logic; +signal ir_mfpd : std_logic; +signal ir_mf : std_logic; +signal ir_mtpi : std_logic; +signal ir_mtpd : std_logic; +signal ir_mt : std_logic; +signal ir_mtps : std_logic; +signal ir_mfps : std_logic; +signal ir_dopr : std_logic; +signal ir_fpsop1 : std_logic; +signal ir_fpsop2 : std_logic; +signal ir_fpao : std_logic; +signal ir_facdst : std_logic; +signal ir_facsrc : std_logic; +signal ir_facfdst : std_logic; +signal ir_facfsrc : std_logic; +signal ir_fpma48 : std_logic; +signal ir_fpmai : std_logic; +signal ir_fpmaf : std_logic; +signal ir_mpr : std_logic; +signal ir_rtt : std_logic; +signal ir_wait : std_logic; +signal ir_halt : std_logic; +signal ir_byte : std_logic; +signal ir_store : std_logic; +signal ir_srcr7 : std_logic; +signal ir_dstr7 : std_logic; +signal ir_dstm2r7 : std_logic; + +signal temp_psw : std_logic_vector(15 downto 0); +signal trap_vector : std_logic_vector(8 downto 0); +signal trap_vectorp2 : std_logic_vector(8 downto 0); + +-- addr +signal addr : std_logic_vector(15 downto 0); + +-- psw +signal psw : std_logic_vector(15 downto 0) := init_psw; +signal pswmf : std_logic_vector(15 downto 8); +signal psw_delayedupdate : std_logic_vector(15 downto 0); +signal psw_delayedupdate_even : std_logic; +signal psw_delayedupdate_odd : std_logic; + +-- pc +signal r7 : std_logic_vector(15 downto 0) := init_r7; +signal r7p2 : std_logic_vector(15 downto 0); + +-- alu signals +signal alu_input : std_logic_vector(15 downto 0); +signal alus_input : std_logic_vector(15 downto 0); +signal alut_input : std_logic_vector(15 downto 0); +signal alu_output : std_logic_vector(15 downto 0); +signal alu_output_signext : std_logic_vector(15 downto 0); +signal alu_psw : std_logic_vector(3 downto 0); + + +-- register bus +signal rbus_raddr : std_logic_vector(5 downto 0); +signal rbus_waddr : std_logic_vector(5 downto 0); +signal rbus_d : std_logic_vector(15 downto 0); +signal rbus_o : std_logic_vector(15 downto 0); +signal rbus_we : std_logic; + +signal rbus_ix : std_logic_vector(2 downto 0); +signal rbus_cpu_mode : std_logic_vector(1 downto 0); +signal rbus_data : std_logic_vector(15 downto 0); +signal rbus_data_m8 : std_logic_vector(15 downto 0); +signal rbus_data_m4 : std_logic_vector(15 downto 0); +signal rbus_data_m2 : std_logic_vector(15 downto 0); +signal rbus_data_m1 : std_logic_vector(15 downto 0); +signal rbus_data_p8 : std_logic_vector(15 downto 0); +signal rbus_data_p4 : std_logic_vector(15 downto 0); +signal rbus_data_p2 : std_logic_vector(15 downto 0); +signal rbus_data_p1 : std_logic_vector(15 downto 0); +signal rbus_data_mv : std_logic_vector(15 downto 0); +signal rbus_data_pv : std_logic_vector(15 downto 0); + +-- sr1/mmr1 +signal sr1_dst : std_logic_vector(7 downto 0); +signal sr1_src : std_logic_vector(7 downto 0); +signal sr1_dstd : std_logic_vector(4 downto 0); +signal sr1_srcd : std_logic_vector(4 downto 0); +signal sr1_p2 : std_logic_vector(4 downto 0); +signal sr1_pv : std_logic_vector(4 downto 0); +signal sr1_m2 : std_logic_vector(4 downto 0); +signal sr1_mv : std_logic_vector(4 downto 0); + +-- current/previous mode flags +signal cp_req : std_logic; +signal cp_mf : std_logic; +signal cp_mt : std_logic; + +-- id selector output based on state +signal id_select : std_logic; + +-- rd output based on state +signal rd_select : std_logic; +signal rs_mt : std_logic; +signal rs_jj : std_logic; + +-- address buffers +signal dest_addr : std_logic_vector(15 downto 0); +signal addr_indirect : std_logic_vector(15 downto 0); +signal finalreference : std_logic; + + +-- signals for eis operations (div, mul, ash, ashc) +signal eis_output : std_logic_vector(15 downto 0); +signal eis_output32 : std_logic_vector(15 downto 0); +signal eis_temp : std_logic_vector(15 downto 0); +signal eis_temp1 : std_logic_vector(31 downto 0); +signal eis_temp2 : std_logic_vector(31 downto 0); +signal eis_sequencer : std_logic_vector(4 downto 0); +signal eis_psw : std_logic_vector(3 downto 0); +signal eis_flag1 : std_logic; +signal eis_flag2 : std_logic; + + +-- counter for number of cycles to remain in init state +signal initcycles : integer range 0 to 7; + + +-- signals for yellow stack trap recognition +signal yellow_stack_trap : std_logic; +signal yellow_stack_trap_trigger : std_logic; +signal yellow_stack_trap_relevant_state : std_logic; +signal yellow_stack_trap_inhibit : std_logic; + + +-- signals for red stack trap recognition +signal red_stack_trap : std_logic; +signal red_stack_trap_trigger : std_logic; +signal red_stack_trap_relevant_state : std_logic; + + +-- floating point stuff +signal fps : std_logic_vector(15 downto 0); +signal fec : std_logic_vector(3 downto 0); +signal fea : std_logic_vector(15 downto 0); + + +-- floating point alu +signal falu_input : std_logic_vector(63 downto 0); +signal falus_input : std_logic_vector(63 downto 0); +signal falu_output : std_logic_vector(63 downto 0); +signal falu_output2 : std_logic_vector(63 downto 0); +signal falu_fps : std_logic_vector(3 downto 0); +signal falu_load : std_logic; +signal falu_done : std_logic; +signal falu_flag1 : std_logic; +type falu_fsm_type is ( + falu_idle, + falu_align, + falu_mult, + falu_div, + falu_addsub, + falu_shift, falu_shift2, falu_shifte, + falu_norm, + falu_rt, falu_rtc, + falu_sep, falu_sep2, falu_sep3, + falu_zres, + falu_res +); +signal falu_fsm : falu_fsm_type := falu_idle; +signal falu_ccw : std_logic_vector(9 downto 0); +signal falu_state : integer range 0 to 163; +signal falu_work1 : std_logic_vector(58 downto 0); +signal falu_work2 : std_logic_vector(58 downto 0); +signal falu_pending_clear : std_logic; +signal falu_pending_fic : std_logic; +signal falu_pending_fiu : std_logic; +signal falu_pending_fiv : std_logic; +signal falu_pending_divz : std_logic; + +-- floating point registers +signal fbus_raddr : std_logic_vector(2 downto 0); +signal fbus_waddr : std_logic_vector(2 downto 0); +signal fbus_d : std_logic_vector(63 downto 0); +signal fbus_o : std_logic_vector(63 downto 0); +signal fbus_we : std_logic; +signal fbus_fd : std_logic; + + +-- sob slowdown +signal sob_slowdown: integer range 0 to 255; + + +-- configuration stuff +signal have_sob_zkdjbug : integer range 0 to 1; +signal have_sob : integer range 0 to 1; +signal have_sxt : integer range 0 to 1; +signal have_rtt : integer range 0 to 1; +signal have_mark : integer range 0 to 1; +signal have_xor : integer range 0 to 1; +signal have_eis : integer range 0 to 1; +signal have_fpu_default : integer range 0 to 1; +signal have_fpu : integer range 0 to 1; +signal have_mtps : integer range 0 to 1; +signal have_mfp : integer range 0 to 1; +signal have_mpr : integer range 0 to 1; +signal have_spl : integer range 0 to 1; +signal have_csm : integer range 0 to 1; +signal have_red : integer range 0 to 1; +signal have_pswimmediateupdate : integer range 0 to 1; +signal have_mmuimmediateabort : integer range 0 to 1; +signal have_oddimmediateabort : integer range 0 to 1; + +signal have_psw1512 : integer range 0 to 1; +signal have_psw11 : integer range 0 to 1; +signal have_psw8 : integer range 0 to 1; + + +begin + cpuregs0: cpuregs port map( + raddr => rbus_raddr, + waddr => rbus_waddr, + d => rbus_d, + o => rbus_o, + we => rbus_we, + clk => clk + ); + + fpuregs0: fpuregs port map( + raddr => fbus_raddr, + waddr => fbus_waddr, + d => fbus_d, + o => fbus_o, + fpmode => fbus_fd, + we => fbus_we, + clk => clk + ); + + r7p2 <= r7 + 2; + trap_vectorp2 <= trap_vector + 2; + + alu_output_signext <= alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7 downto 0); + + +-- generate bus stuff + + iwait <= ir_wait; + +-- finalreference : this bit signals states that access the final operand +-- this is needed for a) byte accesses; b) m[f|t]p[i|d]; so several other access types can be omitted here + + with state select finalreference <= + '1' when state_dst1, + '1' when state_dst2, + '1' when state_dst3a, + '1' when state_dst4, + '1' when state_dst5a, + '1' when state_dst6a, + '1' when state_dst7b, + '1' when state_src1, + '1' when state_src2, + '1' when state_src3a, + '1' when state_src4, + '1' when state_src5a, + '1' when state_src6a, + '1' when state_src7b, + '1' when state_store_alu_w, + '0' when others; + +-- dstfreference : this bit signals states that access the final operand in dest mode only +-- this is needed for maintenance mode in the mmu, and then most likely only to be able +-- to pass diagnostics without error messages + + with state select dstfreference <= + '1' when state_dst1, + '1' when state_dst2, + '1' when state_dst3a, + '1' when state_dst4, + '1' when state_dst5a, + '1' when state_dst6a, + '1' when state_dst7b, + '1' when state_store_alu_w, + '0' when others; + + +-- generate signals for yellow stack trap + + with state select yellow_stack_trap_relevant_state <= + '1' when state_dst4, + '1' when state_dst5a, + '1' when state_src4, + '1' when state_src5a, + '1' when state_trapc, + '1' when state_trapd, + '1' when state_csmc, + '1' when state_csme, + '1' when state_csmg, + '0' when others; + + yellow_stack_trap_trigger <= '1' + when yellow_stack_trap_relevant_state = '1' + and rbus_ix = "110" + and psw(15 downto 14) = "00" + and yellow_stack_trap_inhibit = '0' + and red_stack_trap = '0' + and unsigned(cpu_stack_limit) > unsigned(rbus_data_m2) + else '0'; + + ysv <= yellow_stack_trap_trigger; + + +-- generate signals for red stack trap + + with state select red_stack_trap_relevant_state <= + '1' when state_trapc, + '1' when state_trapd, + '0' when others; + + red_stack_trap_trigger <= '1' + when red_stack_trap_relevant_state = '1' +-- and (mmuabort = '1' or oddabort = '1' or nxmabort = '1') + and (oddabort = '1' or nxmabort = '1') + else '0'; + + rsv <= red_stack_trap_trigger; + + +-- dw8 : data width 8, signals that a byte is accessed + + dw8 <= '1' when (finalreference = '1' and ir_byte = '1') else '0'; + + +-- cp : this address refers to current or previous mode + + cp_mf <= '1' when finalreference = '1' and state /= state_store_alu_w and (ir_mfpi = '1' or ir_mfpd = '1') else '0'; + cp_mt <= '1' when state = state_store_alu_w and (ir_mtpi = '1' or ir_mtpd = '1') else '0'; + cp_req <= '1' when cp_mf = '1' or cp_mt = '1' else '0'; + cp <= cp_req; + + +-- rd : cpu needs read transaction + + with state select rd_select <= + '1' when state_idecode, + '1' when state_dst1, + '1' when state_dst2, + '1' when state_dst3 | state_dst3a, + '1' when state_dst4, + '1' when state_dst5 | state_dst5a, + '1' when state_dst6 | state_dst6a, + '1' when state_dst7 | state_dst7a | state_dst7b, + '1' when state_src1, + '1' when state_src2, + '1' when state_src3 | state_src3a, + '1' when state_src4, + '1' when state_src5 | state_src5a, + '1' when state_src6 | state_src6a, + '1' when state_src7 | state_src7a | state_src7b, + '1' when state_mfpa, + '1' when state_mtp, + '1' when state_fpir1 | state_fpir2, + '1' when state_fpr1 | state_fpr2 | state_fpr3 | state_fpr4, + '1' when state_trapa | state_trapf, + '1' when state_csmi, + '1' when state_rtsa, + '1' when state_markb, + '1' when state_rtia | state_rtib, + '0' when others; + +-- rs signals - read suppression for specific cases, because raising the read line would cause a wrong memory access - potentially a trap + rs_mt <= '1' when (ir_mtpi = '1' or ir_mtpd = '1') and finalreference = '1' and state /= state_store_alu_w else '0'; + rs_jj <= '1' when (ir_jmp = '1' or ir_jsr = '1') and finalreference = '1' else '0'; + + rd <= '0' when rs_mt = '1' or rs_jj = '1' or ir_wait = '1' else rd_select; + +-- wr : cpu needs write transaction + + with state select wr <= + ir_store when state_store_alu_w, + '1' when state_stststore, + '1' when state_fpiw1 | state_fpiw2, + '1' when state_fpw1 | state_fpw2 | state_fpw3 | state_fpw4, + '1' when state_jsrb, + '1' when state_trapc | state_trapd, + '1' when state_csmc | state_csme | state_csmg, + '0' when others; + + +-- select data to write + + with state select dataout <= + alu_output when state_store_alu_w, + fea when state_stststore, + falu_output(63 downto 48) when state_fpw1, + falu_output(47 downto 32) when state_fpw2, + falu_output(31 downto 16) when state_fpw3, + falu_output(15 downto 0) when state_fpw4, + falu_output(63 downto 48) when state_fpiw1, + falu_output(47 downto 32) when state_fpiw2, + rbus_data when state_jsrb, + temp_psw when state_trapc, + r7 when state_trapd, + temp_psw when state_csmc, + r7 when state_csme, + alu_output when state_csmg, + "0000000000000000" when others; + + +-- addr : select address to drive + + with state select addr <= + r7 when state_ifetch, -- r7 is driven out during wait or halt states - only used for debugging, not to drive actual logic + r7 when state_idecode, + rbus_data when state_dst1, + rbus_data when state_dst2, + rbus_data when state_dst3, + addr_indirect when state_dst3a, + rbus_data_mv when state_dst4, + rbus_data_m2 when state_dst5, + addr_indirect when state_dst5a, + r7 when state_dst6, + addr_indirect when state_dst6a, + r7 when state_dst7, + addr_indirect when state_dst7a, + addr_indirect when state_dst7b, + rbus_data when state_src1, + rbus_data when state_src2, + rbus_data when state_src3, + addr_indirect when state_src3a, + rbus_data_mv when state_src4, + rbus_data_m2 when state_src5, + addr_indirect when state_src5a, + r7 when state_src6, + addr_indirect when state_src6a, + r7 when state_src7, + addr_indirect when state_src7a, + addr_indirect when state_src7b, + rbus_data_m2 when state_mfpa, + rbus_data when state_mtp, + addr_indirect when state_fpir1, + addr_indirect when state_fpir2, + addr_indirect when state_fpr1, + addr_indirect when state_fpr2, + addr_indirect when state_fpr3, + addr_indirect when state_fpr4, + addr_indirect when state_fpiw1, + addr_indirect when state_fpiw2, + addr_indirect when state_fpw1, + addr_indirect when state_fpw2, + addr_indirect when state_fpw3, + addr_indirect when state_fpw4, + "0000000" & trap_vectorp2 when state_trapa, + "0000000" & trap_vector when state_trapb, + rbus_data_m2 when state_trapc, + rbus_data_m2 when state_trapd, + "0000000" & trap_vector when state_trapf, + addr_indirect when state_jsrb, + addr_indirect when state_rtsa, + rbus_data when state_markb, + rbus_data when state_rtia, + rbus_data when state_rtib, + rbus_data_m2 when state_csmc, + rbus_data_m2 when state_csme, + rbus_data_m2 when state_csmg, + "0000000" & trap_vector when state_csmi, + dest_addr when state_store_alu_w, + dest_addr when state_stststore, + "0000000000000000" when others; + + addr_v <= addr; + + +-- id : map states onto instruction or data access + + ir_dstm2r7 <= '0' when ir(5 downto 0) = "010111" else '1'; + ir_srcr7 <= '0' when ir(8 downto 6) = "111" else '1'; + ir_dstr7 <= '0' when ir(2 downto 0) = "111" else '1'; + + with state select id_select <= + '0' when state_idecode, + ir_dstr7 when state_dst1, + ir_dstr7 when state_dst2, + ir_dstr7 when state_dst3, + '1' when state_dst3a, + ir_dstr7 when state_dst4, + ir_dstr7 when state_dst5, + '1' when state_dst5a, + '0' when state_dst6, + '1' when state_dst6a, + '0' when state_dst7, + '1' when state_dst7a, + '1' when state_dst7b, + ir_srcr7 when state_src1, + ir_srcr7 when state_src2, + ir_srcr7 when state_src3, + '1' when state_src3a, + ir_srcr7 when state_src4, + ir_srcr7 when state_src5, + '1' when state_src5a, + '0' when state_src6, + '1' when state_src6a, + '0' when state_src7, + '1' when state_src7a, + '1' when state_src7b, + ir_dstm2r7 when state_fpir1, + '1' when state_fpir2, + ir_dstm2r7 when state_fpiw1, + '1' when state_fpiw2, + ir_dstm2r7 when state_fpr1, + '1' when state_fpr2 | state_fpr3 | state_fpr4, + ir_dstm2r7 when state_fpw1, + '1' when state_fpw2 | state_fpw3 | state_fpw4, + '1' when state_stststore, -- always in d-space, this is the second store - first is handled by store_alu_w + '1' when state_mfpa, -- move from previous, stack push is to current d-space + '1' when state_mtp, -- move to previous, stack pop is from current d-space + '1' when state_trapa, -- d-mapping for loading the trap psw from kernel d-space + '1' when state_trapb, -- to enable debugging output via addr - d-mapping should be 1 to 1, i-mapping likely is not + '1' when state_trapc, -- stack is in d-space + '1' when state_trapd, -- stack is in d-space + '1' when state_trapf, -- d-mapping for loading the trap vector from kernel d-space + '1' when state_jsrb, + '1' when state_rtsa, + '0' when state_mark, + '0' when state_marka, + '1' when state_rtia, -- stack is in d-space + '1' when state_rtib, -- stack is in d-space + '1' when state_csmc | state_csme | state_csmg, + '0' when state_csmi, -- apparently; this at least is suggested by 0174_CKKTBD0_1144mmgmt.pdf + ir_dstm2r7 when state_store_alu_w, + '0' when others; + + id <= + '1' when ir_mfpi = '1' and psw(15 downto 12) = "1111" and cp_req = '1' + else '0' when ir_mfpi = '1' and cp_req = '1' + else '1' when ir_mfpd = '1' and cp_req = '1' + else '0' when ir_mtpi = '1' and cp_req = '1' + else '1' when ir_mtpd = '1' and cp_req = '1' + else id_select; + + +-- psw that is output to the mmu + + psw_out <= rbus_cpu_mode & pswmf(13 downto 8) & psw(7 downto 0); + +-- psw filtered by cpu modelcode + + pswmf(15 downto 12) <= psw(15 downto 12) when have_psw1512 = 1 else "0000"; + pswmf(11) <= psw(11) when have_psw11 = 1 else '0'; + pswmf(10 downto 9) <= "00"; + pswmf(8) <= psw(8) when have_psw8 = 1 else '0'; +-- pswmf(7 downto 0) <= psw(7 downto 0); + +-- registers + + rbus_raddr <= rbus_cpu_mode & pswmf(11) & rbus_ix; + with rbus_ix select rbus_data <= + r7 when "111", + rbus_o when others; + +-- calculate amount of autoincrement or autodecrement + ir_fpma48 <= '1' when (fps(7) = '1' and ir(11 downto 8) /= "1111") or (fps(7) = '0' and ir(11 downto 8) = "1111") else '0'; + + rbus_data_m8 <= rbus_data - 8; + rbus_data_m4 <= rbus_data - 4; + rbus_data_m2 <= rbus_data - 2; + rbus_data_m1 <= rbus_data - 1; + rbus_data_p8 <= rbus_data + 8; + rbus_data_p4 <= rbus_data + 4; + rbus_data_p2 <= rbus_data + 2; + rbus_data_p1 <= rbus_data + 1; + rbus_data_mv <= rbus_data_m8 when (ir_fpmaf = '1' and ir_fpma48 = '1' and rbus_ix /= "111") + else rbus_data_m4 when (ir_fpmaf = '1' and ir_fpma48 = '0' and rbus_ix /= "111") + else rbus_data_m4 when (ir_fpmai = '1' and fps(6) = '1' and rbus_ix /= "111") + else rbus_data_m1 when (ir_byte = '1' and rbus_ix(2 downto 1) /= "11") + else rbus_data_m2; + rbus_data_pv <= rbus_data_p8 when (ir_fpmaf = '1' and ir_fpma48 = '1' and rbus_ix /= "111") + else rbus_data_p4 when (ir_fpmaf = '1' and ir_fpma48 = '0' and rbus_ix /= "111") + else rbus_data_p4 when (ir_fpmai = '1' and fps(6) = '1' and rbus_ix /= "111") + else rbus_data_p1 when (ir_byte = '1' and rbus_ix(2 downto 1) /= "11") + else rbus_data_p2; + + +-- sr1 cq. mmr1 construction + + ir_mf <= '1' when ir_mfpi = '1' or ir_mfpd = '1' else '0'; + ir_mt <= '1' when ir_mtpi = '1' or ir_mtpd = '1' else '0'; + sr1_dst <= sr1_dstd & ir(2 downto 0) when sr1_dstd /= "00000" and ir(2 downto 0) /= "111" + else "00000000"; + sr1_src <= sr1_srcd & "110" when (ir_mt = '1' or ir_mf = '1' or ir_jsr = '1') and sr1_srcd /= "00000" + else sr1_srcd & ir(8 downto 6) when sr1_srcd /= "00000" and ir(8 downto 6) /= "111" and ir_dop = '1' + else "00000000"; + + sr1 <= sr1_dst & sr1_src when (ir_dop = '1' or ir_jsr = '1') and sr1_srcd /= "00000" + else sr1_dst & sr1_src when sr1_dstd = "00000" + else sr1_src & sr1_dst; + +-- sr1 <= sr1_src & sr1_dst when sr1_dstd /= "00000" and sr1_src(2 downto 0) /= sr1_dst(2 downto 0) +-- else "00000000" & (sr1_src(7 downto 3) + sr1_dst(7 downto 3)) & sr1_dst(2 downto 0) when sr1_src(2 downto 0) = sr1_dst(2 downto 0) +-- else "00000000" & sr1_src; + + sr1_p2 <= "00010"; + sr1_pv <= "01000" when (ir_fpmaf = '1' and ir_fpma48 = '1' and rbus_ix /= "111") + else "00100" when (ir_fpmaf = '1' and ir_fpma48 = '0' and rbus_ix /= "111") + else "00100" when (ir_fpmai = '1' and fps(6) = '1' and rbus_ix /= "111") + else "00001" when (ir_byte = '1' and rbus_ix(2 downto 1) /= "11") + else "00010"; + sr1_m2 <= "11110"; + sr1_mv <= "11000" when (ir_fpmaf = '1' and ir_fpma48 = '1' and rbus_ix /= "111") + else "11100" when (ir_fpmaf = '1' and ir_fpma48 = '0' and rbus_ix /= "111") + else "11100" when (ir_fpmai = '1' and fps(6) = '1' and rbus_ix /= "111") + else "11111" when (ir_byte = '1' and rbus_ix(2 downto 1) /= "11") + else "11110"; + + +-- cpu model configuration + + have_sob_zkdjbug <= 0; -- set flag to enable bugfix for zkdj maindec + with modelcode select have_sob <= + 1 when 3, + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_sxt <= + 1 when 3, + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_rtt <= + 1 when 3, + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 35 | 40, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_mark <= + 1 when 3, + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 35 | 40, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_xor <= + 1 when 3, + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 35 | 40, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_eis <= + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 35 | 40, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_fpu_default <= + 1 when 23 | 24, -- kdf11 + 1 when 34, + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + have_fpu <= have_fpu_default when have_fp = 2 else have_fp; + + with modelcode select have_mtps <= + 1 when 3, + 1 when 4, + 1 when 23 | 24, -- kdf11 + 1 when 34 | 35 | 40, -- kt11d! + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_mfp <= + 1 when 23 | 24, -- kdf11 + 1 when 34 | 35 | 40, -- kt11d! + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_mpr <= + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_spl <= + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_csm <= + 1 when 44, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_red <= + 1 when 35 | 40, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_pswimmediateupdate <= + 0 when 44, -- observed behaviour, at least from kkab + 0 when 4, +-- 0 when 5 | 10, FIXME FIXME FIXME +-- 0 when 15 | 20, + 1 when others; + + with modelcode select have_mmuimmediateabort <= +-- 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 -- as understood from 2.11BSD, trap.c + 0 when others; + + with modelcode select have_oddimmediateabort <= + 1 when others; -- found no evidence that this is not actually what all pdps do + + with modelcode select have_psw1512 <= -- curr/prev mode bits + 1 when 23 | 24, -- kdf11 + 1 when 34 | 35 | 40, -- kt11d! + 1 when 44, + 1 when 45 | 50 | 55, + 1 when 60, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_psw11 <= -- general purpose reg set bit + 1 when 45 | 50 | 55, + 1 when 70, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + + with modelcode select have_psw8 <= -- FIXME, what is this? 11/44 handbook has this as CIS insn suspension + 1 when 23 | 24, -- kdf11 + 1 when 44, + 1 when 73 | 83 | 84 | 93 | 94, -- kdj11 + 0 when others; + +-- state sequencer + process(clk) + variable v_sop : std_logic; + variable v_dop : std_logic; + variable v_jmp : std_logic; + variable v_jsr : std_logic; + variable v_csm : std_logic; + variable v_mfpi : std_logic; + variable v_mfpd : std_logic; + variable v_mtpi : std_logic; + variable v_mtpd : std_logic; + variable v_mtps : std_logic; + variable v_mfps : std_logic; + variable v_dopr : std_logic; + variable v_mpr : std_logic; + variable v_fpsop1 : std_logic; + variable v_fpsop2 : std_logic; + variable v_fpao : std_logic; + begin + if clk='1' and clk'event then + +-- +-- synchronous reset; setup some signals that must have a known value after a reset signal to the cpu +-- + + if reset='1' then + r7 <= init_r7; -- start address + psw <= init_psw; -- initial psw + rbus_cpu_mode <= "00"; -- initial rbus access for kernel mode sp + ir_rtt <= '0'; -- no rtt + ir_wait <= '0'; -- not in wait state + ir_halt <= '0'; -- not halted + + bg7 <= '0'; -- no bg7 active + bg6 <= '0'; -- no bg6 active + bg5 <= '0'; -- no bg5 active + bg4 <= '0'; -- no bg4 active + npg <= '0'; -- not granting bus + if have_red = 1 then + red_stack_trap <= '0'; -- not doing a red stack trap + end if; + yellow_stack_trap <= '0'; -- not doing a yellow stack trap + + fps <= x"0000"; -- initial fp11 status register + fea <= x"0000"; -- initial fp11 error address register + fec <= "0000"; -- initial fp11 error code register + falu_load <= '0'; -- not doing a load of the fp11 fpao alu + + psw_delayedupdate_even <= '0'; -- not updating psw after the fact - even address byte part + psw_delayedupdate_odd <= '0'; -- not updating psw after the fact - odd address byte + + state <= state_init; -- first state in the major state machine after reset + initcycles <= 7; -- setup to stay this many cycles in state_init + init <= '1'; -- send reset signal to outside + + rbus_waddr <= "000000"; -- select r0 in set 0 + rbus_d <= conv_std_logic_vector(modelcode, 16); -- set modelcode on rbus + rbus_we <= '1'; -- pulse write + else + +-- +-- main state machine; setup some default values for signals that are applicable in each state +-- + + rbus_we <= '0'; -- default is not writing to the register file + fbus_we <= '0'; -- default is not writing to the fp11 register file + ifetch <= '0'; -- default is not an instruction fetch + ack_mmuabort <= '0'; -- default not acknowledging an mmu abort + ack_mmutrap <= '0'; -- default not acknowledging an mmu trap + illhalt <= '0'; -- no illegal halt + falu_pending_clear <= '0'; -- not clearing any pending fp11 interrupt flags + + if yellow_stack_trap_trigger = '1' then -- do we have a pending yellow stack trap? + yellow_stack_trap <= '1'; -- signal to deal with it on the next pass through state_ifetch + end if; + +-- +-- aborts; these conditions abort the execution of instructions, no matter in which state the state machine is +-- + +-- the ir_csm check in here is really a dirty hack - it's to prevent state_csmi from changing r7 when an abort occurs in +-- the final memory reference. It's needed to pass zkdk - but, probably a more generic case exists for anything that changes +-- r7. The problem lies in what happens if r7 is changed, and subsequently an abort occurs - then r7 will be pushed, but +-- with the changed value, which most likely is incorrect - because the memory access was aborted. +-- It may make more sense to generically enable have_mmuimmediateabort, but, then 2.11BSD will not run - it needs the +-- decrement of a stack push to be reflected in the r6, because otherwise it will not grow a stack. Re. the ls -als problem. + + if have_red = 1 and red_stack_trap_trigger = '1' then -- if the conditions for a red stack trap have tripped + red_stack_trap <= '1'; -- set flag + state <= state_rsv; -- start red trap sequence + elsif mmuabort = '1' and (have_mmuimmediateabort = 1 or ir_csm = '1') then -- signal from mmu that an access caused an abort. dealing with the abort here suppresses any actions taken by the state itself, re. code at end of state machine + state <= state_mmuabort; -- precursor state for mmu abort + ack_mmuabort <= '1'; -- set acknowledge flag to mmu core + elsif oddabort = '1' and (have_oddimmediateabort = 1 or ir_csm = '1') then -- odd abort signal, and need to deal with it and suppress the state machine actions? + trap_vector <= o"004"; -- set vector + state <= state_trap; -- do trap + else + +-- +-- state_init; this is the first state after a reset, both the hardware signal as well as the insn. This state will +-- set the init signal towards the 'bus', and stretch it a bit, to give slower things on the bus a bit of extra time +-- to reset in their turn. Since there are not really 'slower' things on the bus, this may not be necessary, but at +-- some point it did help in debugging. +-- + + case state is + when state_init => + if initcycles = 0 then + state <= state_ifetch; + init <= '0'; + else + init <= '1'; + initcycles <= initcycles - 1; + end if; + +-- +-- state_ifetch; all things that need to happen before starting to decode a new instruction. Actually, this state +-- just sets up the memory to produce a new instruction; besides however there is a lot of logic that deduces +-- whether other things, such as handling interrupts need to be serviced before a new instruction can start. +-- +-- the if-elsif statement is a priority encoder that determines the relative priority of interrupts. +-- + + when state_ifetch => + rbus_cpu_mode <= pswmf(15 downto 14); -- set rbus to the current cpu mode + ir_wait <= '0'; + if have_red = 1 then + red_stack_trap <= '0'; + end if; + yellow_stack_trap_inhibit <= '0'; + if ir_halt = '1' then + if run = '1' then -- mostly just to allow passing a halt in a test program + state <= state_ifetch; + ir_halt <= '0'; + end if; + elsif npr = '1' then -- bus master request + state <= state_npg; + npg <= '1'; + elsif mmutrap = '1' then -- mmu trap vector = 250 + state <= state_mmutrap; + ack_mmutrap <= '1'; + elsif yellow_stack_trap = '1' then + yellow_stack_trap <= '0'; + yellow_stack_trap_inhibit <= '1'; + trap_vector <= o"004"; -- yellow stack trap, vector = 004 + state <= state_trap; + elsif falu_pending_fic = '1' then -- pending fic trap from fp11 + state <= state_fptrap; + elsif falu_pending_fiu = '1' then -- pending fiu trap from fp11 + state <= state_fptrap; + elsif falu_pending_fiv = '1' then -- pending fiv trap from fp11 + state <= state_fptrap; + elsif falu_pending_divz = '1' then -- pending div by zero trap from fp11 + state <= state_fptrap; + elsif pir_in(15) = '1' and unsigned(psw(7 downto 5)) < unsigned'("111") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif br7 = '1' and unsigned(psw(7 downto 5)) < unsigned'("111") then + state <= state_br7; -- external, level 7, vector determined by device + bg7 <= '1'; + elsif pir_in(14) = '1' and unsigned(psw(7 downto 5)) < unsigned'("110") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif br6 = '1' and unsigned(psw(7 downto 5)) < unsigned'("110") then + state <= state_br6; -- external, level 6, vector determined by device + bg6 <= '1'; + elsif pir_in(13) = '1' and unsigned(psw(7 downto 5)) < unsigned'("101") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif br5 = '1' and unsigned(psw(7 downto 5)) < unsigned'("101") then + state <= state_br5; -- external, level 5, vector determined by device + bg5 <= '1'; + elsif pir_in(12) = '1' and unsigned(psw(7 downto 5)) < unsigned'("100") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif br4 = '1' and unsigned(psw(7 downto 5)) < unsigned'("100") then + state <= state_br4; -- external, level 4, vector determined by device + bg4 <= '1'; + elsif pir_in(11) = '1' and unsigned(psw(7 downto 5)) < unsigned'("011") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif pir_in(10) = '1' and unsigned(psw(7 downto 5)) < unsigned'("010") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif pir_in(9) = '1' and unsigned(psw(7 downto 5)) < unsigned'("001") then + trap_vector <= o"240"; -- pirq, vector = 240 + state <= state_trap; + elsif psw(4) = '1' and ir_rtt = '0' then + trap_vector <= o"014"; -- trace bit, vector = 014 + state <= state_trap; + else + if ir_wait = '0' then -- if not in wait mode + state <= state_idecode; -- go process an instruction + ifetch <= '1'; -- set ifetch flag to signal instruction fetch to the outside world + else + ir_wait <= '1'; -- go into wait mode + end if; + sr1_srcd <= "00000"; -- setup mmu sr1 source part + sr1_dstd <= "00000"; -- setup mmu sr1 destination part + sr0_ic <= '1'; -- set mmu sr0 instruction complete flag + if modelcode = 44 -- fairly sure about this list, see kktb. Seems likely that at least 70 and J11 would also do this variant. However, not sure about F11 or other models + or modelcode = 45 or modelcode = 50 or modelcode = 55 -- and least sure of all about 45... but gamble is on this variant, seems 70 is most likely similar + or modelcode = 70 + or modelcode = 73 + or modelcode = 83 + or modelcode = 84 + or modelcode = 93 + or modelcode = 94 + then + sr2 <= r7; -- store address of instruction for mmu, sr2/mmr2 + end if; + end if; + + if have_pswimmediateupdate = 0 then -- some cpu models only effectuate the result of updates to the psw after the insn fetch following the update + if psw_delayedupdate_even = '1' then + psw(7 downto 5) <= psw_delayedupdate(7 downto 5); -- T bit can only be set with RTI/RTT instruction + if modelcode = 04 -- except for 11/04 etc + or modelcode = 05 or modelcode = 10 + or modelcode = 15 or modelcode = 20 + then + psw(4) <= psw_delayedupdate(4); + end if; + psw(3 downto 0) <= psw_delayedupdate(3 downto 0); + end if; + if psw_delayedupdate_odd = '1' then + psw(15 downto 8) <= psw_delayedupdate(15 downto 8); + rbus_cpu_mode <= psw_delayedupdate(15 downto 14); -- set rbus to the current cpu mode + end if; + psw_delayedupdate_even <= '0'; + psw_delayedupdate_odd <= '0'; + end if; + +-- +-- state_idecode; decode the instruction word and determine which path through the states will have to be initiated +-- + +-- +-- first, set defaults for several status flags +-- + + when state_idecode => + r7 <= r7p2; -- increment pc after instruction fetch + ir <= datain; -- store instruction word + ir_addr <= r7; -- store address of instruction + sr0_ic <= '0'; -- set instruction not complete in our part of sr0/mmr0 + if modelcode = 34 + or modelcode = 23 or modelcode = 24 -- fixme, verify this, but how? + then + sr2 <= r7; -- store address of instruction for mmu, sr2/mmr2 + end if; + ir_fpmaf <= '0'; -- not a fp 4- or 8-byte memory access + ir_fpmai <= '0'; -- not a fp integer mode memory access + + ir_sop <= '0'; -- current instruction is not single operand + ir_dop <= '0'; -- current instruction is not dual operand + ir_jmp <= '0'; -- current instruction is not jmp + ir_jsr <= '0'; -- current instruction is not jsr + ir_csm <= '0'; -- current instruction is not csm + ir_mfpi <= '0'; -- current instruction is not mfpi + ir_mfpd <= '0'; -- current instruction is not mfpd + ir_mtpi <= '0'; -- current instruction is not mtpi + ir_mtpd <= '0'; -- current instruction is not mtpd + ir_mtps <= '0'; -- current instruction is not mtps + ir_mfps <= '0'; -- current instruction is not mfps + ir_dopr <= '0'; -- current instruction is not dual operand register + ir_fpsop1 <= '0'; -- current instruction is not an fp single operand group 1 insn + ir_fpsop2 <= '0'; -- current instruction is not an fp single operand group 2 insn + ir_fpao <= '0'; -- current instruction is not an fp accumulator and operand insn + ir_facdst <= '0'; -- current instruction is not an fp accumulator and operand insn in cpu dst format + ir_facsrc <= '0'; -- current instruction is not an fp accumulator and operand insn in cpu src format + ir_facfdst <= '0'; -- current instruction is not an fp accumulator and operand insn in fp11 dst format + ir_facfsrc <= '0'; -- current instruction is not an fp accumulator and operand insn in fp11 src format + ir_mpr <= '0'; -- current instruction is not a multiprocessor instruction + ir_rtt <= '0'; -- current instruction is not rtt and no trace trap is being suppressed + fbus_fd <= fps(7); -- start on the assumption that access to the fp register set follows the fps fd flag + falu_pending_clear <= '1'; -- clear any leftover pending interrupt flags + + state <= state_illegalop; -- set catch value in case we don't decode an insn + +-- +-- setup variables to classify which of several instruction groups the current instruction is, to make the decode logic easier to follow +-- + + +-- sop - single operand insn + + if datain(14 downto 9) = "0000101" -- single operand, word or byte (x05xxx) + or datain(14 downto 8) = "00001100" -- single operand, word or byte (x06xxx), first half of range + or datain(15 downto 6) = "0000000011" -- swab + or (datain(15 downto 6) = "0000110111" and have_sxt = 1) -- sxt + then + v_sop := '1'; + else + v_sop := '0'; + end if; + + +-- dop - double operand insn + + if datain(14 downto 12) /= "000" and datain(14 downto 12) /= "111" then -- dop + v_dop := '1'; + else + v_dop := '0'; + end if; + + +-- jmp + if datain(15 downto 6) = "0000000001" then -- jmp + v_jmp := '1'; + else + v_jmp := '0'; + end if; + + +-- jsr + + if datain(15 downto 9) = "0000100" then -- jsr + v_jsr := '1'; + else + v_jsr := '0'; + end if; + + +-- csm + + if have_csm = 1 and datain(15 downto 6) = "0000111000" then -- csm + v_csm := '1'; + else + v_csm := '0'; + end if; + + +-- mfpi/mfpd/mtpi/mtpd + + if have_mfp = 1 and datain(15 downto 6) = "0000110101" then -- mfpi + v_mfpi := '1'; + else + v_mfpi := '0'; + end if; + if have_mfp = 1 and datain(15 downto 6) = "1000110101" then -- mfpd + v_mfpd := '1'; + else + v_mfpd := '0'; + end if; + if have_mfp = 1 and datain(15 downto 6) = "0000110110" then -- mtpi + v_mtpi := '1'; + else + v_mtpi := '0'; + end if; + if have_mfp = 1 and datain(15 downto 6) = "1000110110" then -- mtpd + v_mtpd := '1'; + else + v_mtpd := '0'; + end if; + + +-- mtps/mfps + + if have_mtps = 1 and datain(15 downto 6) = "1000110100" then -- mtps + v_mtps := '1'; + else + v_mtps := '0'; + end if; + if have_mtps = 1 and datain(15 downto 6) = "1000110111" then -- mfps + v_mfps := '1'; + else + v_mfps := '0'; + end if; + + +-- double operand, register - eis/xor + + if (have_eis = 1 and datain(15 downto 11) = "01110") -- mul, div, ash, ashc + or (have_xor = 1 and datain(15 downto 9) = "0111100") then -- xor + v_dopr := '1'; + else + v_dopr := '0'; + end if; + + +-- multiprocessor insns - mpr + + if have_mpr = 1 and datain(15 downto 7) = "000011101" then -- tstset/wrtlck + v_mpr := '1'; + else + v_mpr := '0'; + end if; + + +-- floating point insns - fpu, single op group 1 - those that dont have an ac as operand + + if datain(15 downto 8) = "11110000" + and datain(7 downto 6) /= "00" + and have_fpu = 1 + then -- fp11 single operand group 1: ldfps, stfps, stst + v_fpsop1 := '1'; + else + v_fpsop1 := '0'; + end if; + + +-- floating point insns - fpu, single op group 2 - those that have an ac as operand + + if datain(15 downto 8) = "11110001" + and have_fpu = 1 + then -- fp11 single operand group 2: clr(f/d), tst(f/d), abs(f/d), neg(f/d) + v_fpsop2 := '1'; + else + v_fpsop2 := '0'; + end if; + + +-- floating point insns - fpu, ac and operand group + + if datain(15 downto 12) = "1111" + and datain(11 downto 9) /= "000" + and have_fpu = 1 + then -- fp11 ac and operand group + v_fpao := '1'; + else + v_fpao := '0'; + end if; + +-- +-- setup signal copies of the variables just set, to be used in other states following idecode +-- + + if v_sop = '1' then + ir_sop <= '1'; + end if; + if v_dop = '1' then + ir_dop <= '1'; + end if; + if v_jmp = '1' then + ir_jmp <= '1'; + end if; + if v_jsr = '1' then + ir_jsr <= '1'; + end if; + if v_csm = '1' then + ir_csm <= '1'; + end if; + if v_mfpi = '1' then + ir_mfpi <= '1'; + end if; + if v_mfpd = '1' then + ir_mfpd <= '1'; + end if; + if v_mtpi = '1' then + ir_mtpi <= '1'; + end if; + if v_mtpd = '1' then + ir_mtpd <= '1'; + end if; + if v_mtps = '1' then + ir_mtps <= '1'; + end if; + if v_mfps = '1' then + ir_mfps <= '1'; + end if; + if v_dopr = '1' then + ir_dopr <= '1'; + end if; + if v_mpr = '1' then + ir_mpr <= '1'; + end if; + + +-- with the floating point insns, here we also set flags that determine whether 2 or 4 (integer), or 4 or 8 (float/double) byte memory access is needed + + if v_fpsop1 = '1' then + ir_fpsop1 <= '1'; + end if; + if v_fpsop2 = '1' then + ir_fpsop2 <= '1'; + ir_fpmaf <= '1'; + end if; + if v_fpao = '1' then + ir_fpao <= '1'; + ir_facdst <= '0'; + ir_facsrc <= '0'; + ir_facfdst <= '0'; + ir_facfsrc <= '0'; + if datain(11 downto 9) = "101" then -- stexp, stc(f|d)(i|l) + ir_facdst <= '1'; + if datain(8) = '1' then -- stc(f|d)(i|l) + ir_fpmai <= '1'; -- needs 2 or 4 byte memory access + end if; + elsif datain(11 downto 8) = "1101" then -- ldexp + ir_facsrc <= '1'; + elsif datain(11 downto 8) = "1110" then -- ldc(i|l)(f|d) + ir_facsrc <= '1'; + ir_fpmai <= '1'; -- needs 2 or 4 byte memory access + elsif datain(11 downto 8) = "1000" then -- st(f|d) + ir_facfdst <= '1'; + ir_fpmaf <= '1'; -- needs 4 or 8 byte memory access + elsif datain(11 downto 8) = "1100" then -- stc(f|d) + ir_facfdst <= '1'; + ir_fpmaf <= '1'; -- needs 4 or 8 byte memory access + else -- if not any of the other special cases, + ir_facfsrc <= '1'; -- then it should be an fsrc format insn + ir_fpmaf <= '1'; -- needs 4 or 8 byte memory access + end if; + end if; + + +-- instruction decoder proper + + if + v_sop = '1' + or v_dop = '1' + or v_jmp = '1' + or v_jsr = '1' + or v_csm = '1' + or v_mfpi = '1' + or v_mfpd = '1' + or v_mtpi = '1' + or v_mtpd = '1' + or v_mtps = '1' + or v_mfps = '1' + or v_dopr = '1' + or v_mpr = '1' + or v_fpsop1 = '1' + or v_fpsop2 = '1' + or v_fpao = '1' + then + + case datain(5 downto 3) is + when "000" => + psrcstate <= state_dst0; + when "001" => + psrcstate <= state_dst1; + when "010" => + psrcstate <= state_dst2; + when "011" => + psrcstate <= state_dst3; + when "100" => + psrcstate <= state_dst4; + when "101" => + psrcstate <= state_dst5; + when "110" => + psrcstate <= state_dst6; + when "111" => + psrcstate <= state_dst7; + when others => + null; + end case; + + if datain(5 downto 3) = "000" then + pdststate <= state_store_alu_r; + else + pdststate <= state_store_alu_p; + end if; + + if v_dop = '1' then + case datain(11 downto 9) is + when "000" => + rbus_ix <= datain(8 downto 6); + state <= state_src0; + + when "001" => + rbus_ix <= datain(8 downto 6); + state <= state_src1; + + when "010" => + rbus_ix <= datain(8 downto 6); + state <= state_src2; + + when "011" => + rbus_ix <= datain(8 downto 6); + state <= state_src3; + + when "100" => + rbus_ix <= datain(8 downto 6); + state <= state_src4; + + when "101" => + rbus_ix <= datain(8 downto 6); + state <= state_src5; + + when "110" => + rbus_ix <= datain(8 downto 6); + state <= state_src6; + + when "111" => + rbus_ix <= datain(8 downto 6); + state <= state_src7; + + when others => + null; + end case; + else + + case datain(5 downto 3) is + when "000" => + if v_jmp = '1' then + state <= state_illegalop; -- jmp with mode 0 is illegal + elsif v_jsr = '1' then + state <= state_illegalop; -- jsr with mode 0 is illegal + elsif have_mfp = 1 and (v_mfpi = '1' or v_mfpd = '1') then + if datain(2 downto 0) = "110" then + rbus_cpu_mode <= psw(13 downto 12); + end if; + rbus_ix <= datain(2 downto 0); + state <= state_dst0; + elsif have_mfp = 1 and (v_mtpi = '1' or v_mtpd = '1') then -- if mode is 0, it's not very interesting to try and read the register + rbus_ix <= "110"; + state <= state_mtp; + elsif have_mpr = 1 and v_mpr = '1' then + state <= state_illegalop; -- tstset/wrtlck mode 0 are illegal + elsif have_fpu = 1 and v_fpao = '1' then + if datain(11 downto 9) /= "101" -- stexp, stc(f/d)(i/l) + and datain(11 downto 8) /= "1101" -- ldexp + and datain(11 downto 8) /= "1110" -- ldc(i/l)(f/d) + then + if datain(2 downto 1) = "11" then -- ac6 and ac7 do not exist + fec <= "0010"; + state <= state_fptrap; + else + if datain(11) & datain(9 downto 8) = "100" then + fbus_raddr <= '0' & datain(7 downto 6); -- fdst insn, need ac + else + fbus_raddr <= datain(2 downto 0); -- fsrc insn, need mode 0 fsrc ac + end if; + state <= state_fpao; + end if; + else + fbus_raddr <= '0' & datain(7 downto 6); -- ldexp, ldc(i/l)(f/d), stexp, stc(f/d)(i/l) get ac + rbus_ix <= datain(2 downto 0); + state <= state_dst0; + end if; + elsif have_fpu = 1 and v_fpsop2 = '1' then + if datain(2 downto 1) = "11" then -- ac6 and ac7 do not exist + fec <= "0010"; + state <= state_fptrap; + else + fbus_raddr <= datain(2 downto 0); -- fsrc insn, need mode 0 fsrc ac + state <= state_fpso2; + end if; + else + rbus_ix <= datain(2 downto 0); + state <= state_dst0; + end if; + + when "001" => + state <= state_dst1; + rbus_ix <= datain(2 downto 0); + + when "010" => + state <= state_dst2; + rbus_ix <= datain(2 downto 0); + + when "011" => + state <= state_dst3; + rbus_ix <= datain(2 downto 0); + + when "100" => + state <= state_dst4; + rbus_ix <= datain(2 downto 0); + + when "101" => + state <= state_dst5; + rbus_ix <= datain(2 downto 0); + + when "110" => + state <= state_dst6; + rbus_ix <= datain(2 downto 0); + + when "111" => + state <= state_dst7; + rbus_ix <= datain(2 downto 0); + + when others => + null; + + end case; + + if v_sop = '1' then + if datain(5 downto 3) = "000" then + pdststate <= state_store_alu_r; + else + pdststate <= state_store_alu_p; + end if; + elsif v_jmp = '1' then + pdststate <= state_jmp; + elsif v_jsr = '1' then + pdststate <= state_jsr; + elsif v_csm = '1' then + pdststate <= state_csm; + elsif v_mfpi = '1' or v_mfpd = '1' then + pdststate <= state_mfp; + elsif v_mtpi = '1' or v_mtpd = '1' then + rbus_ix <= "110"; + state <= state_mtp; + elsif have_mtps = 1 and v_mtps = '1' then + pdststate <= state_mtps; + elsif have_mtps = 1 and v_mfps = '1' then + if datain(5 downto 3) = "000" then + pdststate <= state_store_alu_r; + else + pdststate <= state_store_alu_p; + end if; + elsif v_dopr = '1' then + pdststate <= state_dopr; + elsif v_mpr = '1' then + if datain(6) = '0' then + pdststate <= state_tstset; + else + pdststate <= state_wrtlck; + end if; + elsif have_fpu = 1 and v_fpsop1 = '1' then + case datain(7 downto 6) is + when "01" => -- ldfps + pdststate <= state_ldfps; + + when "10" => -- stfps + if datain(5 downto 3) = "000" then + pdststate <= state_store_alu_r; + else + pdststate <= state_store_alu_p; + end if; + + when "11" => -- stst + if datain(5 downto 3) = "000" then + pdststate <= state_store_alu_r; + else + pdststate <= state_store_alu_p; + end if; + + when others => + null; + end case; + elsif have_fpu = 1 and v_fpsop2 = '1' then + pdststate <= state_fpso2; -- clr(f|d),tst(f|d),abs(f|d),neg(f|d) + elsif have_fpu = 1 and v_fpao = '1' then + pdststate <= state_fpao; + if datain(11 downto 8) = "1101" -- ldexp + or datain(11 downto 8) = "1010" -- stexp + or datain(11) & datain(9 downto 8) = "100" -- st(f|d), stc(f|d)(d|f) + or datain(11 downto 8) = "1011" -- stc(f|d)(i|l) + then + fbus_raddr <= '0' & datain(7 downto 6); -- needed for st(f|d), stc(f|d)(d|f), ldexp, stexp + end if; + else + pdststate <= state_illegalop; + end if; + end if; + end if; + + if datain(14 downto 11) = "0000" then -- pc and ps change, excl. jsr, emt, trap + + if datain(15) = '0' and datain(10 downto 8) = "000" then -- halt group, jmp + + +-- halt is a complicated case - it is handled differently by most models - it traps either to 4, 10, or to the console, or plainly halts +-- don't have a console yet - so the last two are simple. Still, the mode bit for the J11 came as a surprise - thought I had seen all variants. + + if datain(7 downto 0) = "00000000" then -- halt + if pswmf(15 downto 14) /= "00" + and (modelcode = 73 or modelcode = 44 or modelcode = 45 or modelcode = 50 or modelcode = 55 or modelcode = 70 or modelcode = 84 or modelcode = 83 or modelcode = 93 or modelcode = 94) + then + illhalt <= '1'; + trap_vector <= o"004"; + state <= state_trap; + elsif pswmf(15 downto 14) /= "00" + and (modelcode = 23 or modelcode = 24 or modelcode = 34 or modelcode = 35 or modelcode = 40 or modelcode = 60) + then + illhalt <= '1'; + trap_vector <= o"010"; + state <= state_trap; + elsif modelcode = 3 or modelcode = 21 or modelcode = 4 or modelcode = 5 or modelcode = 10 or modelcode = 15 or modelcode = 20 + then + ir_halt <= '1'; + state <= state_ifetch; + elsif pswmf(15 downto 14) = "00" and cpu_kmillhalt = '1' + then + illhalt <= '1'; + trap_vector <= o"004"; + state <= state_trap; + elsif pswmf(15 downto 14) = "00" + then + ir_halt <= '1'; + state <= state_ifetch; + else -- the default, if we do not know the model of the cpu, is to follow the rule of J11 + illhalt <= '1'; + trap_vector <= o"004"; + state <= state_trap; + end if; + end if; + + if datain(7 downto 0) = "00000001" then -- wait + if pswmf(15 downto 14) = "00" then -- if not in kernel mode, this insn is a noop + ir_wait <= '1'; -- setting this flag will cause ifetch not to switch into idecode until an interrupt has occurred + end if; + state <= state_ifetch; -- next state is ifetch + end if; + + if datain(7 downto 0) = "00000010" then -- rti + state <= state_rti; + rbus_ix <= "110"; + if modelcode = 4 -- these models do not have rtt, but allow rti to set the t bit + or modelcode = 5 or modelcode = 10 + or modelcode = 15 or modelcode = 20 + then + if psw(4) = '0' then + ir_rtt <= '1'; + end if; + end if; + end if; + + if datain(7 downto 0) = "00000011" then -- bpt + trap_vector <= o"014"; -- bpt, vector = 014 + state <= state_trap; + end if; + + if datain(7 downto 0) = "00000100" then -- iot + trap_vector <= o"020"; -- iot, vector = 020 + state <= state_trap; + end if; + + if datain(7 downto 0) = "00000101" then -- reset + if pswmf(15 downto 14) = "00" then + initcycles <= 7; -- not as long as the original specs say, but just a bit more than a single cycle + state <= state_init; + else + state <= state_ifetch; -- reset is a no-op when not in kernel mode + end if; + end if; + + if have_rtt = 1 and datain(7 downto 0) = "00000110" then -- rtt + state <= state_rti; + rbus_ix <= "110"; + ir_rtt <= '1'; + end if; + +-- +-- mfpt : the opcode 000007 is used by some diagnostics, including at least fkaa, 11/34 basic inst tst, to trigger an illegal instruction trap +-- also, obviously it should work differently for the appropriate models +-- + + if datain(7 downto 0) = "00000111" then -- mfpt + if modelcode = 21 then + state <= state_ifetch; + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "000"; + rbus_d <= '0' & o"00004"; -- 4 = T-11 + rbus_we <= '1'; + end if; + if modelcode = 23 or modelcode = 24 then + state <= state_ifetch; + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "000"; + rbus_d <= '0' & o"00003"; -- 3 = F-11 + rbus_we <= '1'; + end if; + if modelcode = 44 then + state <= state_ifetch; + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "000"; + rbus_d <= '0' & o"00001"; -- 1 = 11/44 + rbus_we <= '1'; + end if; + if modelcode = 73 + or modelcode = 53 + or modelcode = 83 + or modelcode = 84 + or modelcode = 93 + or modelcode = 94 + then + state <= state_ifetch; + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "000"; + rbus_d <= '0' & o"00005"; -- 5 = J11 + rbus_we <= '1'; + end if; + end if; + + if datain(7 downto 3) = "10000" then -- rts + state <= state_rts; + rbus_ix <= "110"; + end if; + + if have_spl = 1 and datain(7 downto 3) = "10011" then -- spl + if pswmf(15 downto 14) = "00" then + psw(7 downto 5) <= datain(2 downto 0); + end if; + state <= state_ifetch; + end if; + + if datain(7 downto 4) = "1010" then -- clear cc + psw(3 downto 0) <= psw(3 downto 0) and (not datain(3 downto 0)); + state <= state_ifetch; + end if; + + if datain(7 downto 4) = "1011" then -- set cc + psw(3 downto 0) <= psw(3 downto 0) or datain(3 downto 0); + state <= state_ifetch; + end if; + + else -- branch group + + +-- the branch insns used to have a separate state to actually do the branch, including calculating the effective address +-- this variant, however notationally inelegant, uses less logic, and less cycles as well. + + state <= state_ifetch; + case datain(15) & datain(10 downto 8) is + when "0001" => -- br + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + + when "0010" => -- bne + if psw(2) = '0' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "0011" => -- beq + if psw(2) = '1' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "0100" => -- bge + if psw(3) = psw(1) then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "0101" => -- blt + if psw(3) /= psw(1) then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "0110" => -- bgt + if psw(2) = '0' and psw(3) = psw(1) then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "0111" => -- ble + if psw(2) = '1' or psw(3) /= psw(1) then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1000" => -- bpl + if psw(3) = '0' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1001" => -- bmi + if psw(3) = '1' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1010" => -- bhi + if psw(2) = '0' and psw(0) = '0' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1011" => -- blos + if psw(2) = '1' or psw(0) = '1' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1100" => -- bvc + if psw(1) = '0' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1101" => -- bvs + if psw(1) = '1' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1110" => -- bhis + if psw(0) = '0' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when "1111" => -- blo + if psw(0) = '1' then + r7 <= r7p2 + (datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0) & '0'); + end if; + + when others => + null; + end case; + end if; + end if; + + if datain(15 downto 9) = "1000100" then -- trap, emt etc + if datain(8) = '0' then + trap_vector <= o"030"; -- emt, vector = 030 + else + trap_vector <= o"034"; -- trap, vector = 034 + end if; + state <= state_trap; + end if; + + if have_sob = 1 and datain(15 downto 9) = "0111111" then -- sob + rbus_ix <= datain(8 downto 6); + state <= state_sob; + if have_sob_zkdjbug = 1 and (modelcode = 73 or modelcode = 83 or modelcode = 84 or modelcode = 93 or modelcode = 94) then + sob_slowdown <= 255; + end if; + end if; + + if have_mark = 1 and datain(15 downto 6) = "0000110100" then -- mark + rbus_waddr <= pswmf(15 downto 14) & "0110"; + rbus_d <= unsigned(r7p2) + unsigned(datain(5 downto 0) & '0'); + rbus_we <= '1'; + rbus_ix <= "101"; + state <= state_mark; + end if; + + if have_fpu = 1 and datain(15 downto 6) = "1111000000" then -- fp11 operate group + case datain(5 downto 0) is + when "000000" => -- cfcc + psw(3 downto 0) <= fps(3 downto 0); + state <= state_ifetch; + + when "000001" => -- setf + fps(7) <= '0'; + state <= state_ifetch; + + when "000010" => -- seti + fps(6) <= '0'; + state <= state_ifetch; + + when "001001" => -- setd + fps(7) <= '1'; + state <= state_ifetch; + + when "001010" => -- setl + fps(6) <= '1'; + state <= state_ifetch; + + when others => + if modelcode = 45 or modelcode = 50 or modelcode = 55 or modelcode = 70 then + if datain(5 downto 3) = "000" then + state <= state_ifetch; -- allow 45/55/70 specific insns ldub, ldsc, stao, mrs, stq0 not to cause a trap + else + fec <= "0010"; -- unknown insn, start trap seq + state <= state_fptrap; + end if; + else + fec <= "0010"; -- unknown insn, start trap seq + state <= state_fptrap; + end if; + + end case; + end if; + + +-- +-- illegal op : used for both catching unknown opcodes and for illegal operands to jmp and jsr, also tstset/wrtlck +-- + + when state_illegalop => +-- +-- vector for illegal operand, register mode jmp or jsr +-- manuals seem to incorrectly list what vector should be used; systems use either 004 or 010. +-- for instance, EK-DCJ11-UG-PRE_J11ug_Oct83.pdf pg. C-7 item 5 +-- however, diagnostics reveal the following: +-- 11/34 - 004, source AC-8045D-MC_CFKABD0-1134-Traps-Tst_Apr77.pdf +-- 11/44 - 010, confirmed by running kkab +-- 11/45 - 010, source PDP1145_Handbook_1973.pdf, pg. 230 +-- J11 - 010, source 0095_CZKDJB0_KDJ11.pdf, seq 166/K13 +-- + + if have_fpu = 1 and ir(15 downto 12) = "1111" then + fec <= "0010"; + state <= state_fptrap; + elsif ir_jmp = '1' or ir_jsr = '1' then + if modelcode = 34 + or modelcode = 4 -- verified 04 behaviour by running gkab + then + trap_vector <= o"004"; + else + trap_vector <= o"010"; + end if; + state <= state_trap; + else + trap_vector <= o"010"; -- illegal op, vector = 010 + state <= state_trap; + end if; + + +-- +-- jmp : move dest addr as computed into r7 +-- + + when state_jmp => + r7 <= dest_addr; + state <= state_ifetch; + +-- +-- npg : non-processor grant, ie. allow the bus to another bus master while the npr signal is active +-- + + when state_npg => + if npr = '0' then + state <= state_ifetch; + npg <= '0'; + else + npg <= '1'; + end if; + +-- +-- mmuabort : the mmu requests an abort of the current instruction, potentially halfway trough an instruction +-- + + when state_mmuabort => + if have_psw1512 = 1 and mmuabort = '0' then + ack_mmuabort <= '0'; + trap_vector <= o"250"; -- mmu, vector = 250 + state <= state_trap; + end if; + +-- +-- mmutrap : the mmu has requested a trap after the current instruction has finished; this trap will now be initiated +-- + + when state_mmutrap => + if have_psw1512 = 1 and mmutrap = '0' then + ack_mmutrap <= '0'; + trap_vector <= o"250"; -- mmu, vector = 250 + state <= state_trap; + end if; + + +-- bus request aka interrupt, prio level 7; handle br7/bg7 signals and initiate trap + + when state_br7 => + if br7 = '0' then + bg7 <= '0'; + trap_vector <= int_vector7; + state <= state_trap; + if modelcode = 45 or modelcode = 50 or modelcode = 55 + or modelcode = 70 then + sr2 <= "0000000" & int_vector7; -- set trap vector in sr2 + sr0_ic <= '0'; -- make sure to flag instruction not complete + end if; + end if; + + +-- bus request, prio level 6; handle br6/bg6 signals and initiate trap + + when state_br6 => + if br6 = '0' then + bg6 <= '0'; + trap_vector <= int_vector6; + state <= state_trap; + if modelcode = 45 or modelcode = 50 or modelcode = 55 + or modelcode = 70 then + sr2 <= "0000000" & int_vector6; -- set trap vector in sr2 + sr0_ic <= '0'; -- make sure to flag instruction not complete + end if; + end if; + + +-- bus request, prio level 5; handle br5/bg5 signals and initiate trap + + when state_br5 => + if br5 = '0' then + bg5 <= '0'; + trap_vector <= int_vector5; + state <= state_trap; + if modelcode = 45 or modelcode = 50 or modelcode = 55 + or modelcode = 70 then + sr2 <= "0000000" & int_vector5; -- set trap vector in sr2 + sr0_ic <= '0'; -- make sure to flag instruction not complete + end if; + end if; + + +-- bus request, prio level 4; handle br4/bg4 signals and initiate trap + + when state_br4 => + if br4 = '0' then + bg4 <= '0'; + trap_vector <= int_vector4; + state <= state_trap; + if modelcode = 45 or modelcode = 50 or modelcode = 55 + or modelcode = 70 then + sr2 <= "0000000" & int_vector4; -- set trap vector in sr2 + sr0_ic <= '0'; -- make sure to flag instruction not complete + end if; + end if; + + +-- floating point error trap : precursor state handles fid bit in fps and contents of fea, and pending conditions signalled by the floating point alu + + when state_fptrap => + if falu_pending_fic = '1' then -- note the order... if more than one bit is set, the order of precedence is v, u, c + fec <= "0110"; + end if; + if falu_pending_fiu = '1' then + fec <= "1010"; + end if; + if falu_pending_fiv = '1' then + fec <= "1000"; + end if; + if falu_pending_divz = '1' then + fec <= "0100"; + end if; + fea <= ir_addr; + fps(15) <= '1'; + if fps(14) = '0' then + trap_vector <= o"244"; -- floating point trap, vector = 244 + state <= state_trap; + else -- wait for pending interrupt flags to clear before continuing + if falu_pending_fic = '0' and falu_pending_fiu = '0' and falu_pending_fiv = '0' and falu_pending_divz = '0' then + state <= state_ifetch; + end if; + end if; + falu_pending_clear <= '1'; + +-- +-- rsv: red stack trap +-- implemented by setting the kernel sp to 4, and then starting a trap +-- the trap states will then decrement the sp, and save psw and r7 in +-- the right locations. +-- this approach is not necessarily correct, but passes czkdjb0 +-- and it is also as described in EK-KDJ1B-UG_KDJ11-B_Nov86.pdf +-- in chapter 1.3.2, page 1-10 +-- this takes some extra attention when sequencing through the +-- trap code to select kernel sp, though. Need to ignore whatever +-- is set in loc. 6 +-- +-- some extra explanation is probably needed for the copying of +-- psw from temp_psw. The reason is as follows: a red trap by +-- definition is a result from an earlier trap gone wrong. In the +-- first step of a normal trap, the psw is copied into temp_psw. +-- State_rsv restores that original psw into the real psw - then +-- starts a new trap. +-- + + when state_rsv => + if have_red = 1 then + psw <= temp_psw; + rbus_waddr <= "00" & "0110"; + rbus_d <= x"0004"; + rbus_we <= '1'; + trap_vector <= o"004"; -- red stack trap, vector = 004 + state <= state_trap; + end if; + + +-- trap: start a trap sequence, trap through trapf + + when state_trap => + temp_psw <= psw; + psw(15 downto 14) <= "00"; -- initial, we'll load the real mode to select the correct stack by in the next step + psw(13 downto 12) <= pswmf(15 downto 14); + rbus_cpu_mode <= "00"; -- force rbus cpu mode to 00 - this is output to the mmu to select the par/pdr set + state <= state_trapa; + + when state_trapa => + rbus_ix <= "110"; + if have_red = 1 and red_stack_trap = '1' then + rbus_cpu_mode <= "00"; + else + rbus_cpu_mode <= datain(15 downto 14); + end if; + psw(15 downto 14) <= datain(15 downto 14); + psw(11 downto 0) <= datain(11 downto 0); + state <= state_trapb; + + when state_trapb => + state <= state_trapc; + + when state_trapc => + if have_red = 1 and red_stack_trap = '1' then + rbus_waddr <= "00" & "0110"; + else + rbus_waddr <= pswmf(15 downto 14) & "0110"; + end if; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + state <= state_trapw; + + when state_trapw => + state <= state_trapd; + + when state_trapd => + if have_red = 1 and red_stack_trap = '1' then + rbus_waddr <= "00" & "0110"; + else + rbus_waddr <= pswmf(15 downto 14) & "0110"; + end if; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + state <= state_trape; + + when state_trape => + rbus_cpu_mode <= "00"; -- force rbus cpu mode to 00 - this is output to the mmu to select the par/pdr set + state <= state_trapf; + + when state_trapf => + r7 <= datain; + state <= state_ifetch; + + +-- rti: start a rti sequence, rti through rtib + + when state_rti => + state <= state_rtia; + rbus_waddr <= pswmf(15 downto 14) & "0110"; + rbus_d <= rbus_data_p2; + rbus_we <= '1'; + + when state_rtia => + state <= state_rtib; + r7 <= datain; + + when state_rtib => + state <= state_ifetch; + rbus_waddr <= pswmf(15 downto 14) & "0110"; + rbus_d <= rbus_data_p2; + rbus_we <= '1'; + if modelcode = 4 then -- FIXME, probably other models as well - 5, 10, 15, 20? 04 behaviour tested with gkab + psw_delayedupdate <= datain; + psw_delayedupdate_even <= '1'; + psw_delayedupdate_odd <= '1'; + else + psw(4 downto 0) <= datain(4 downto 0); + if pswmf(15 downto 14) = "00" then + psw(7 downto 5) <= datain(7 downto 5); + end if; + psw(10 downto 8) <= datain(10 downto 8); + if pswmf(15 downto 14) = "00" then + psw(15 downto 11) <= datain(15 downto 11); + else + psw(15 downto 11) <= datain(15 downto 11) or pswmf(15 downto 11); + end if; + end if; + + +-- csm : process csm insn + + when state_csm => + if have_csm = 1 and sr3csmenable = '1' and psw(15 downto 14) /= "00" then + temp_psw(15 downto 4) <= psw(15 downto 4); + temp_psw(3 downto 0) <= "0000"; + psw(15 downto 14) <= "01"; + psw(13 downto 12) <= psw(15 downto 14); + psw(4) <= '0'; + rbus_ix <= "110"; + rbus_cpu_mode <= psw(15 downto 14); + state <= state_csma; + else + state <= state_illegalop; + end if; + + when state_csma => + rbus_waddr <= "01" & "0110"; -- address super sp + rbus_d <= rbus_data; + rbus_we <= '1'; + state <= state_csmb; + + when state_csmb => + rbus_cpu_mode <= "01"; + state <= state_csmc; + + when state_csmc => -- push temp_psw + rbus_waddr <= "01" & "0110"; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + state <= state_csmd; + + when state_csmd => + state <= state_csme; + + when state_csme => -- push pc + rbus_waddr <= "01" & "0110"; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + state <= state_csmf; + + when state_csmf => + state <= state_csmg; + + when state_csmg => -- push alu_output + rbus_waddr <= "01" & "0110"; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + state <= state_csmh; + + when state_csmh => + trap_vector <= o"010"; -- csm loads r7 from vector = 010, but from supervisor I-space + state <= state_csmi; + + when state_csmi => + r7 <= datain; + state <= state_ifetch; + + +-- sob: deal with sob instruction + + when state_sob => + if have_sob_zkdjbug = 1 and (modelcode = 73 or modelcode = 83 or modelcode = 84 or modelcode = 93 or modelcode = 94) then + if sob_slowdown = 0 then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= rbus_data_m1; + rbus_we <= '1'; + if rbus_data_m1 = "0000000000000000" then + state <= state_ifetch; + else + r7 <= r7 - (ir(5 downto 0) & '0'); + state <= state_ifetch; + end if; + else + sob_slowdown <= sob_slowdown - 1; + end if; + else + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= rbus_data_m1; + rbus_we <= '1'; + if rbus_data_m1 = "0000000000000000" then + state <= state_ifetch; + else + r7 <= r7 - (ir(5 downto 0) & '0'); + state <= state_ifetch; + end if; + end if; + + +-- move from previous i/d + + when state_mfp => + rbus_ix <= "110"; + state <= state_mfpa; + + when state_mfpa => + dest_addr <= addr; + state <= state_store_alu_p; + sr1_srcd <= sr1_m2; -- it is the dest, actually - but that field is already used + rbus_waddr <= psw(15 downto 14) & '0' & "110"; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + + +-- move to previous i/d + + when state_mtp => + sr1_srcd <= sr1_p2; + rbus_waddr <= psw(15 downto 14) & '0' & "110"; + rbus_d <= rbus_data_p2; + rbus_we <= '1'; + state <= state_mtpa; + + when state_mtpa => + alus_input <= datain; + rbus_ix <= ir(2 downto 0); + state <= psrcstate; + + +-- mtps insn - move to ps + + when state_mtps => + if have_mtps = 1 then + if psw(15 downto 14) = "00" then + psw(7 downto 5) <= alu_output(7 downto 5); + psw(3 downto 0) <= alu_output(3 downto 0); + else + psw(3 downto 0) <= alu_output(3 downto 0); + end if; + state <= state_ifetch; + end if; + + +-- double operand,register instruction states dopr through doprb +-- these are for the EIS instruction set, ie mul, div, ash, ashc, xor +-- dopr is a precursor state, used to pick up the second operand from +-- the register file + + when state_dopr => + rbus_ix <= ir(8 downto 6); + state <= state_dopra; + + +-- dopra: setup the eis_sequencer to handle microstates for the eis alu +-- and dispatch to the states needed for each insn; also setup to read +-- ternary operand from the register file + + when state_dopra => + alus_input <= rbus_data; + rbus_ix <= ir(8 downto 7) & '1'; + if ir(11 downto 9) = "000" then + eis_sequencer <= "11111"; + state <= state_mul; + elsif ir(11 downto 9) = "010" then + eis_sequencer <= "11111"; + state <= state_ash; + elsif ir(11 downto 9) = "100" then + state <= state_xor; + else + state <= state_doprb; + end if; + + +-- doprb: read ternary operand from the rbus, setup the +-- eis_sequencer for div and ashc + + when state_doprb => + alut_input <= rbus_data; + if ir (11 downto 9) = "001" then + if ir(6) = '1' then -- illegal, R must be even acc. EK-KDJ1B-UG_KDJ11-B_Nov86.pdf, pg. 9-31, and PDP1145_Handbook_1973.pdf, pg. 71 + state <= state_ifetch; -- FIXME, does it make sense to go back to ifetch from here if the ir was illegal? + psw(3 downto 0) <= "0010"; -- not sure if this makes sense, but CZKDJB0 won't pass without + else + eis_sequencer <= "10000"; + state <= state_div; + end if; + elsif ir(11 downto 9) = "011" then + eis_sequencer <= "11111"; + state <= state_ashc; + else + state <= state_illegalop; -- should not be possible + end if; + + +-- mul through mulb: handle mul insn + + when state_mul => + if eis_sequencer = "00001" then + state <= state_mula; + end if; + eis_sequencer <= eis_sequencer + 1; + + when state_mula => + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= eis_output; + rbus_we <= '1'; + else + r7 <= eis_output; + end if; + state <= state_mulb; + + when state_mulb => + if ir(8 downto 7) /= "11" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 7) & '1'; + rbus_d <= eis_output32; + rbus_we <= '1'; + else + r7 <= eis_output32; + end if; + psw(3 downto 0) <= eis_psw; + state <= state_ifetch; + + +-- div through divb: handle div insn + + when state_div => + if eis_sequencer = "11111" then + state <= state_diva; + end if; + eis_sequencer <= eis_sequencer - 1; + + when state_diva => + if eis_psw(1 downto 0) = "00" then + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= eis_output; + rbus_we <= '1'; + else + r7 <= eis_output; + end if; + end if; + state <= state_divb; + + when state_divb => + if eis_psw(1 downto 0) = "00" then + if ir(8 downto 7) /= "11" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 7) & '1'; + rbus_d <= eis_output32; + rbus_we <= '1'; + else + r7 <= eis_output32; + end if; + end if; + psw(3 downto 0) <= eis_psw; + state <= state_ifetch; + + +-- ash through ashb: handle ash insn + + when state_ash => + if eis_sequencer = "11111" then + eis_sequencer <= eis_sequencer + 1; + else + if eis_flag2 = '1' then + state <= state_ashb; + end if; + end if; + + when state_ashb => + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= eis_output; + rbus_we <= '1'; + else + r7 <= eis_output; + end if; + psw(3 downto 0) <= eis_psw; + state <= state_ifetch; + + +-- ashc through ashe: handle ashc insn + + when state_ashc => + if eis_sequencer = "11111" then + eis_sequencer <= eis_sequencer + 1; + else + if eis_flag2 = '1' then + state <= state_ashd; + end if; + end if; + + when state_ashd => + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= eis_output; + rbus_we <= '1'; + else + r7 <= eis_output; + end if; + state <= state_ashe; + + when state_ashe => + if ir(8 downto 7) /= "11" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 7) & '1'; + rbus_d <= eis_output32; + rbus_we <= '1'; + else + r7 <= eis_output32; + end if; + psw(3 downto 0) <= eis_psw; + state <= state_ifetch; + + +-- xor: dispatch to state that stores result + + when state_xor => + if ir(5 downto 3) = "000" then + state <= state_store_alu_r; + else + state <= state_store_alu_p; + end if; + + +-- ldfps - load fpu state + + when state_ldfps => + fps <= alu_output; + state <= state_ifetch; + + +-- stst - store fpu fec and fea + + when state_stststore => + state <= state_ifetch; + + +-- dispatch insn in the fpso2 group - unless the insn is a clr(f|d), go into the +-- states that read an fp src operand + + when state_fpso2 => + addr_indirect <= dest_addr; + if ir(5 downto 3) /= "000" then + if ir(7 downto 6) = "00" then -- clr(f|d) + state <= state_fprun; -- don't need to read for clear + else + state <= state_fpr1; + end if; + else + falu_input <= fbus_o; -- fbus read already done in ifetch for mode 0 + state <= state_fprun; + end if; + + +-- dispatch insn groups for the fp acc and operand format, in +-- all forms - fsrc, fsdt, src, dst, as signalled by the main +-- state machine - and cycle into the appropriate state to +-- handle the core accesses that are required to load the +-- operands, either in f|d, or i|l format. + + when state_fpao => + if ir(5 downto 3) /= "000" then + addr_indirect <= dest_addr; + if ir_facfsrc = '1' then + fbus_raddr <= '0' & ir(7 downto 6); + state <= state_fpr1; + elsif ir_facfdst = '1' then + falu_input <= fbus_o; + state <= state_fprun; + elsif ir_facdst = '1' then + falu_input <= fbus_o; + state <= state_fprun; + elsif ir_facsrc = '1' then + falu_input <= fbus_o; + state <= state_fpir1; + else + -- FIXME, go into some cpu error state? + end if; + else -- mode 0, so input from register!!! + if ir_facfsrc = '1' then + falu_input <= fbus_o; + fbus_raddr <= '0' & ir(7 downto 6); + state <= state_fprun; + elsif ir_facfdst = '1' then + falu_input <= fbus_o; + state <= state_fprun; + elsif ir_facdst = '1' then + falu_input <= fbus_o; + state <= state_fprun; + elsif ir_facsrc = '1' then + if ir(8) = '1' then -- ldexp + falu_input <= fbus_o; + falus_input(55 downto 40) <= rbus_data; + else -- ldc(i|l)(f|d) + falu_input(55 downto 40) <= "0000000000000000"; + falu_input(39 downto 24) <= rbus_data; + falu_input(23 downto 0) <= "000000000000000000000000"; + end if; + state <= state_fprun; -- FIXME, what about long data? + end if; + end if; + + when state_fpir1 => + if ir(8) = '1' then -- state is reachable only for ldexp and ldc(i|l)(f|d); ir(8) = 1 means ldexp + state <= state_fprun; -- ldexp + falus_input(55 downto 40) <= datain; -- FIXME, it does not really make sense to put the input value here? + else + falu_input(23 downto 0) <= "000000000000000000000000"; + if fps(6) = '1' and ir(5 downto 0) /= "010111" then -- ldc(i|l)(f|d) mode 2, reg 7 : then only 1 word to be read + falu_input(55 downto 40) <= datain; + addr_indirect <= addr_indirect + 2; + state <= state_fpir2; + else + falu_input(55 downto 40) <= "0000000000000000"; + falu_input(39 downto 24) <= datain; + state <= state_fprun; + end if; + end if; + + when state_fpir2 => + falu_input(39 downto 24) <= datain; + state <= state_fprun; + + when state_fpr1 => + if datain(15 downto 7) = "100000000" and fps(11) = '1' and fps(14) = '0' then -- do we need to trigger the fiuv trap for -0, undefined variable? + state <= state_fptrap; -- cause trap + fps(15) <= '1'; -- set error flag + fec <= "1100"; -- fiuv code + else + if datain(15 downto 7) = "100000000" and fps(11) = '1' then -- if interrupts are disabled, we still signal the error... FIXME, is this required at all? + fps(15) <= '1'; -- set error flag + fec <= "1100"; -- fiuv code + end if; + falu_input(63 downto 48) <= datain; + addr_indirect <= addr_indirect + 2; + if ir(5 downto 0) = "010111" then -- mode 2, reg 7 : then only 1 word to be loaded + falu_input(47 downto 0) <= "000000000000000000000000000000000000000000000000"; + state <= state_fprun; + else + state <= state_fpr2; + end if; + end if; + + when state_fpr2 => + falu_input(47 downto 32) <= datain; + if fps(7) = '1' -- if mode is d + or (fps(7) = '0' and ir(11 downto 8) = "1111") -- or if mode is f, and the insn is ldcfd + then -- then we need to read the next two words + state <= state_fpr3; + addr_indirect <= addr_indirect + 2; + else + falu_input(31 downto 0) <= "00000000000000000000000000000000"; -- if mode is f, insn is not ldcfd, zero out the low 32 bits of the input + state <= state_fprun; + end if; + + when state_fpr3 => + falu_input(31 downto 16) <= datain; + addr_indirect <= addr_indirect + 2; + state <= state_fpr4; + + when state_fpr4 => + falu_input(15 downto 0) <= datain; + state <= state_fprun; + + when state_fpwr => + fbus_d <= falu_output; + fps(4) <= '0'; -- this appears to be needed to pass zkdl; always setting the bit to zero makes one of the other tests complain. + fps(3 downto 0) <= falu_fps; + fbus_waddr <= '0' & ir(7 downto 6); + fbus_we <= '1'; + state <= state_ifetch; + if ir(11 downto 8) = "0011" and ir(6) = '0' then -- mod with even ac, need to store ac+1 + state <= state_fpwr1; + end if; + + when state_fpwr1 => + state <= state_fpwr2; + + when state_fpwr2 => + fbus_d <= falu_output2; + fbus_waddr <= '0' & ir(7) & '1'; + fbus_we <= '1'; + state <= state_ifetch; + + when state_fpd0 => + fps(4) <= '0'; -- this appears to be needed to pass zkdl; always setting the bit to zero makes one of the other tests complain. + fps(3 downto 0) <= falu_fps; + if ir_fpsop2 = '1' and ir(7 downto 6) = "01" then -- tst(f/d) + state <= state_ifetch; + elsif ir(2 downto 1) /= "11" then + fbus_d <= falu_output; + fbus_waddr <= ir(2 downto 0); + fbus_we <= '1'; + end if; + state <= state_ifetch; + + when state_fpiwr => + if ir(2 downto 0) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + rbus_d <= falu_output(63 downto 48); + rbus_we <= '1'; + else + r7 <= falu_output(63 downto 48); -- FIXME, check what real pdp's do? + end if; + fps(4) <= '0'; -- this appears to be needed to pass zkdl; always setting the bit to zero makes one of the other tests complain. + fps(3 downto 0) <= falu_fps; + psw(3 downto 0) <= falu_fps; + state <= state_ifetch; + + when state_fpiww => + addr_indirect <= dest_addr; + fps(4) <= '0'; -- this appears to be needed to pass zkdl; always setting the bit to zero makes one of the other tests complain. + fps(3 downto 0) <= falu_fps; + psw(3 downto 0) <= falu_fps; + state <= state_fpiw1; + + when state_fpiw1 => + if ir(5 downto 0) = "010111" -- stc(f|d)(i|l) mode 2, reg 7 : then only 1 word to be written + or fps(6) = '0' -- stc(f|d)(i|l), short integer mode + or ir(11 downto 8) = "1010" -- stexp insn + then + state <= state_ifetch; + else + addr_indirect <= addr_indirect + 2; + state <= state_fpiw2; + end if; + + when state_fpiw2 => + state <= state_ifetch; + + when state_fpww => + addr_indirect <= dest_addr; + fps(4) <= '0'; -- this appears to be needed to pass zkdl; always setting the bit to zero makes one of the other tests complain. + fps(3 downto 0) <= falu_fps; + if ir_fpsop2 = '1' and ir(7 downto 6) = "01" then -- tst(f/d) + state <= state_ifetch; + else + state <= state_fpw1; + end if; + + when state_fpw1 => + if ir(5 downto 0) = "010111" then -- mode 2, reg 7 : then only 1 word to be written + state <= state_ifetch; + else + addr_indirect <= addr_indirect + 2; + state <= state_fpw2; + end if; + + when state_fpw2 => + if (fps(7) = '1' and ir(11 downto 8) /= "1100") -- reverse sense of fps D bit when insn is stc(f|d)(d|f) + or (fps(7) = '0' and ir(11 downto 8) = "1100") + then + state <= state_fpw3; + addr_indirect <= addr_indirect + 2; + else + state <= state_ifetch; + end if; + + when state_fpw3 => + addr_indirect <= addr_indirect + 2; + state <= state_fpw4; + + when state_fpw4 => + state <= state_ifetch; + + when state_fprun => + if ir_fpao = '1' then + if ir_facfsrc = '1' then + falus_input <= fbus_o; + end if; + state <= state_fprunao; + falu_load <= '1'; + falu_state <= 0; + elsif ir_fpsop2 = '1' then + if ir(5 downto 3) = "000" then + state <= state_fpd0; + else + state <= state_fpww; + end if; + else + state <= state_ifetch; -- FIXME, needed? + end if; + + when state_fprunao => + falu_state <= falu_state + 1; + falu_load <= '0'; + if falu_state > 160 then -- FIXME, this may prevent hangs. Why? + state <= state_ifetch; -- FIXME, error! + end if; + if falu_done = '1' then + falu_state <= 0; + case ir(11 downto 8) is + + when "1000" => -- st(f|d) + if ir(5 downto 3) = "000" then + state <= state_fpd0; + else + state <= state_fpww; + end if; + + when "1010" => -- stexp + if ir(5 downto 3) = "000" then + state <= state_fpiwr; + else + state <= state_fpiww; + end if; + + when "1011" => -- stc(f|d)(i|l) + if ir(5 downto 3) = "000" then + state <= state_fpiwr; + else + state <= state_fpiww; + end if; + + when "1100" => -- stc(f|d)(d|f) + fbus_fd <= '1'; -- enable full access to fp register bank + if ir(5 downto 3) = "000" then + state <= state_fpd0; + else + state <= state_fpww; + end if; + + when "1111" => -- ldc(d|f)(f|d) + fbus_fd <= '1'; -- enable full access to fp register bank + state <= state_fpwr; + + when others => + state <= state_fpwr; + + end case; + + end if; + + when state_tstset => + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "000"; + rbus_d <= alu_input; + rbus_we <= '1'; + state <= state_store_alu_p; + + when state_wrtlck => + rbus_ix <= "000"; + state <= state_wrtlcka; + + when state_wrtlcka => + alu_input <= rbus_data; + state <= state_store_alu_p; + + when state_mark => + r7 <= rbus_data; + rbus_ix <= "110"; + state <= state_marka; + + when state_marka => + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "110"; + rbus_d <= rbus_data_p2; + rbus_we <= '1'; + state <= state_markb; + + when state_markb => + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & "101"; + rbus_d <= datain; + rbus_we <= '1'; + state <= state_ifetch; + + when state_jsr => + rbus_ix <= "110"; + state <= state_jsra; + + when state_jsra => + addr_indirect <= rbus_data_m2; + rbus_waddr <= pswmf(15 downto 14) & "0110"; + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + sr1_srcd <= sr1_m2; + rbus_ix <= ir(8 downto 6); + state <= state_jsrb; + + when state_jsrb => + state <= state_jsrc; + + when state_jsrc => + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= r7; + rbus_we <= '1'; + end if; + r7 <= dest_addr; + state <= state_ifetch; + + when state_rts => + addr_indirect <= rbus_data; + if ir(2 downto 0) /= "110" then -- the r6 special case; it is not really necessary to increment sp here, since it will be loaded in the next step. Does not harm either. + rbus_waddr <= pswmf(15 downto 14) & "0110"; + rbus_d <= rbus_data_p2; + rbus_we <= '1'; +-- sr1_dstd <= sr1_p2; -- simh doesn't + end if; + rbus_ix <= ir(2 downto 0); + state <= state_rtsa; + + when state_rtsa => + if ir(2 downto 0) /= "111" then + r7 <= rbus_data; + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + rbus_d <= datain; + rbus_we <= '1'; + else + r7 <= datain; + end if; + state <= state_ifetch; + + when state_dst0 => + alu_input <= rbus_data; + state <= pdststate; + rbus_cpu_mode <= pswmf(15 downto 14); -- may have been set temporarily to handle mode 0 r6 for mfp(i|d) + + when state_src0 => + +-- handle issue 3 in programming differences list + if ir_dop = '1' and ir(8 downto 6) = "111" + and (ir(5 downto 4) = "11") + and ( + modelcode = 15 or modelcode = 20 or modelcode = 35 or modelcode = 40 + or modelcode = 53 + or modelcode = 73 or modelcode = 83 or modelcode = 84 or modelcode = 93 or modelcode = 94 + ) + then + alus_input <= rbus_data_p2; + state <= psrcstate; + rbus_ix <= ir(2 downto 0); + else + alus_input <= rbus_data; + state <= psrcstate; + rbus_ix <= ir(2 downto 0); + end if; + + when state_dst1 => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + + when state_src1 => + alus_input <= datain; + state <= psrcstate; + rbus_ix <= ir(2 downto 0); + + when state_dst2 => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + sr1_dstd <= sr1_pv; + if ir(2 downto 0) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + rbus_d <= rbus_data_pv; + rbus_we <= '1'; + else + r7 <= rbus_data_p2; + end if; + + when state_src2 => + alus_input <= datain; + if ir_dop = '1' and ir(8 downto 6) = ir(2 downto 0) and ir(2 downto 0) /= "111" then + state <= state_src2w; + else + state <= psrcstate; + end if; + rbus_ix <= ir(2 downto 0); + sr1_srcd <= sr1_pv; + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= rbus_data_pv; + rbus_we <= '1'; + else + r7 <= rbus_data_p2; + end if; + + when state_src2w => + state <= psrcstate; + + when state_dst3 => + addr_indirect <= datain; + sr1_dstd <= sr1_p2; + if ir(2 downto 0) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + rbus_d <= rbus_data_p2; + rbus_we <= '1'; + else + r7 <= rbus_data_p2; + end if; + state <= state_dst3a; + + when state_dst3a => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + + when state_src3 => + addr_indirect <= datain; + rbus_ix <= ir(2 downto 0); + sr1_srcd <= sr1_p2; + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= rbus_data_p2; + rbus_we <= '1'; + else + r7 <= rbus_data_p2; + end if; + state <= state_src3a; + + when state_src3a => + alus_input <= datain; + state <= psrcstate; + + when state_dst4 => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + sr1_dstd <= sr1_mv; + if ir(2 downto 0) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + rbus_d <= rbus_data_mv; + rbus_we <= '1'; + else + r7 <= rbus_data_m2; -- FIXME, where does this even begin to make sense - it would effectively jump to the same insn? + end if; + + when state_src4 => + alus_input <= datain; + if ir_dop = '1' and ir(8 downto 6) = ir(2 downto 0) and ir(2 downto 0) /= "111" then + state <= state_src4w; + else + state <= psrcstate; + end if; + rbus_ix <= ir(2 downto 0); + sr1_srcd <= sr1_mv; + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= rbus_data_mv; + rbus_we <= '1'; + else + r7 <= rbus_data_m2; + end if; + + when state_src4w => + state <= psrcstate; + + when state_dst5 => + addr_indirect <= datain; + sr1_dstd <= sr1_m2; + if ir(2 downto 0) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + else + r7 <= rbus_data_m2; + end if; + state <= state_dst5a; + + when state_dst5a => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + + when state_src5 => + addr_indirect <= datain; + rbus_ix <= ir(2 downto 0); + sr1_srcd <= sr1_m2; + if ir(8 downto 6) /= "111" then + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(8 downto 6); + rbus_d <= rbus_data_m2; + rbus_we <= '1'; + else + r7 <= rbus_data_m2; + end if; + state <= state_src5a; + + when state_src5a => + alus_input <= datain; + state <= psrcstate; + + when state_dst6 => + r7 <= r7p2; + if ir(2 downto 0) = "111" then + addr_indirect <= unsigned(datain) + unsigned(rbus_data_p2); + else + addr_indirect <= unsigned(datain) + unsigned(rbus_data); + end if; + state <= state_dst6a; + + when state_dst6a => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + + when state_src6 => + r7 <= r7p2; + if ir(8 downto 6) = "111" then + addr_indirect <= unsigned(datain) + unsigned(rbus_data_p2); + else + addr_indirect <= unsigned(datain) + unsigned(rbus_data); + end if; + state <= state_src6a; + + when state_src6a => + alus_input <= datain; + state <= psrcstate; + rbus_ix <= ir(2 downto 0); + + when state_dst7 => + r7 <= r7p2; + if ir(2 downto 0) = "111" then + addr_indirect <= unsigned(datain) + unsigned(rbus_data_p2); + else + addr_indirect <= unsigned(datain) + unsigned(rbus_data); + end if; + state <= state_dst7a; + + when state_dst7a => + addr_indirect <= datain; + state <= state_dst7b; + + when state_dst7b => + dest_addr <= addr; + alu_input <= datain; + state <= pdststate; + rbus_ix <= "110"; + + when state_src7 => + r7 <= r7p2; + if ir(8 downto 6) = "111" then + addr_indirect <= unsigned(datain) + unsigned(rbus_data_p2); + else + addr_indirect <= unsigned(datain) + unsigned(rbus_data); + end if; + state <= state_src7a; + + when state_src7a => + addr_indirect <= datain; + state <= state_src7b; + + when state_src7b => + alus_input <= datain; + state <= psrcstate; + rbus_ix <= ir(2 downto 0); + + when state_store_alu_p => + state <= state_store_alu_w; + + when state_store_alu_w => + psw(3 downto 0) <= alu_psw; + if psw_in_we_even = '1' then -- direct write into 777776 overrides psw setting from alu + if have_pswimmediateupdate = 1 then + psw(7 downto 5) <= psw_in(7 downto 5); -- T bit can only be set with RTI/RTT instruction + psw(3 downto 0) <= psw_in(3 downto 0); + else + psw_delayedupdate_even <= '1'; + psw_delayedupdate(7 downto 0) <= psw_in(7 downto 0); + end if; + end if; + if psw_in_we_odd = '1' then + if have_pswimmediateupdate = 1 then + psw(15 downto 8) <= psw_in(15 downto 8); + else + psw_delayedupdate_odd <= '1'; + psw_delayedupdate(15 downto 8) <= psw_in(15 downto 8); + end if; + end if; + state <= state_ifetch; + if ir(15 downto 6) = "1111000011" then -- stst? + if ir(5 downto 0) /= "010111" then -- not if mode 2, r7 -- immediate + state <= state_stststore; + dest_addr <= dest_addr + 2; + end if; + end if; + + when state_store_alu_r => + if ir_store = '1' then + if ir(2 downto 0) /= "111" then + if ir_mtpi = '1' or ir_mtpd = '1' then + rbus_waddr <= pswmf(13 downto 12) & pswmf(11) & ir(2 downto 0); + else + rbus_waddr <= pswmf(15 downto 14) & pswmf(11) & ir(2 downto 0); + end if; + if ir(15 downto 12) = "1001" then -- movb? movb needs to sign extend if the result is moved to a register + rbus_d <= alu_output_signext; + elsif have_mtps = 1 and ir_mfps = '1' then -- mfps needs sign extend if the result is moved to a register + rbus_d <= alu_output_signext; + elsif ir_byte = '1' then + rbus_d <= alu_input(15 downto 8) & alu_output(7 downto 0); + else + rbus_d <= alu_output; + end if; + rbus_we <= '1'; + else + r7 <= alu_output; + end if; + end if; + psw(3 downto 0) <= alu_psw; + state <= state_ifetch; + + when others => + null; + + end case; + end if; + + if nxmabort = '1' then + if modelcode = 34 -- FIXME, if this is disabled for these models, FKAB, KKAB will fail. However, if enabled for 45, unix v7 will fail during /etc/rc processing. + or modelcode = 44 + or modelcode = 04 + then + if state = state_src2 or state = state_src3 then + rbus_we <= '0'; + sr1_srcd <= "00000"; + end if; + if state = state_dst2 or state = state_dst3 then + rbus_we <= '0'; + sr1_dstd <= "00000"; + end if; + end if; + trap_vector <= o"004"; + state <= state_trap; + end if; + + if mmuabort = '1' and have_mmuimmediateabort = 0 then -- signal from mmu that an access caused an abort. + state <= state_mmuabort; -- precursor state for mmu abort + ack_mmuabort <= '1'; -- set acknowledge flag to mmu core + elsif oddabort = '1' and have_oddimmediateabort = 0 then -- odd abort signal + trap_vector <= o"004"; -- set vector + state <= state_trap; -- do trap + end if; + + end if; + end if; + end process; + + +-- base instruction set alu + + process(alu_input, alus_input, ir, psw(3 downto 0), + ir_sop, ir_dop, ir_mfpi, ir_csm, ir_mfpd, ir_mtpi, ir_mtpd, ir_mtps, ir_mfps, ir_dopr, ir_mpr, ir_fpsop1, + have_csm, have_mfp, have_mtps, have_xor, have_mpr, fps, fec, + modelcode) + variable result : std_logic_vector(15 downto 0); + variable result8 : std_logic_vector(7 downto 0); + begin + ir_byte <= '0'; + ir_store <= '1'; + if ir_sop = '1' then + case ir(15 downto 6) is + when "0000000011" => -- swab + result(15 downto 8) := alu_input(7 downto 0); + result(7 downto 0) := alu_input(15 downto 8); + alu_output <= result; + alu_psw(3) <= alu_input(15); + if alu_input(15 downto 8) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if modelcode = 15 or modelcode = 20 then + alu_psw(1) <= psw(1); + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= '0'; + + when "0000101000" => -- clr + result := "0000000000000000"; + alu_output <= result; + alu_psw(3 downto 0) <= "0100"; + + when "1000101000" => -- clrb + ir_byte <= '1'; + result := "0000000000000000"; + alu_output <= result; + alu_psw(3 downto 0) <= "0100"; + + when "0000101001" => -- com + result := not alu_input; + alu_output <= result; + alu_psw(3) <= not alu_input(15); + if not alu_input = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1 downto 0) <= "01"; + + when "1000101001" => -- comb + ir_byte <= '1'; + result := not alu_input; + alu_output <= result; + alu_psw(3) <= not alu_input(7); + if not alu_input(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1 downto 0) <= "01"; + + when "0000101010" => -- inc + result := alu_input + 1; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input = "0111111111111111" then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= psw(0); + + when "1000101010" => -- incb + ir_byte <= '1'; + result := alu_input + 1; + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input(7 downto 0) = "01111111" then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= psw(0); + + when "0000101011" => -- dec + result := alu_input - 1; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input = "1000000000000000" then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= psw(0); + + when "1000101011" => -- decb + ir_byte <= '1'; + result := alu_input - 1; + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input(7 downto 0) = "10000000" then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= psw(0); + + when "0000101100" => -- neg + result := (not alu_input) + 1; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + alu_psw(0) <= '0'; + else + alu_psw(2) <= '0'; + alu_psw(0) <= '1'; + end if; + if result = "1000000000000000" then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + + when "1000101100" => -- negb + ir_byte <= '1'; + result := (not alu_input) + 1; + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + alu_psw(0) <= '0'; + else + alu_psw(2) <= '0'; + alu_psw(0) <= '1'; + end if; + if result(7 downto 0) = "10000000" then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + + when "0000101101" => -- adc + result := alu_input + psw(0); + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input = "0111111111111111" and psw(0) = '1' then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + if alu_input = "1111111111111111" and psw(0) = '1' then + alu_psw(0) <= '1'; + else + alu_psw(0) <= '0'; + end if; + + when "1000101101" => -- adcb + ir_byte <= '1'; + result := alu_input + psw(0); + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input(7 downto 0) = "01111111" and psw(0) = '1' then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + if alu_input(7 downto 0) = "11111111" and psw(0) = '1' then + alu_psw(0) <= '1'; + else + alu_psw(0) <= '0'; + end if; + + when "0000101110" => -- sbc + result := alu_input - psw(0); + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input = "1000000000000000" and psw(0) = '1' then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + if alu_input = "0000000000000000" and psw(0) = '1' then + alu_psw(0) <= '1'; + else + alu_psw(0) <= '0'; + end if; + + when "1000101110" => -- sbcb + ir_byte <= '1'; + result := alu_input - psw(0); + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if alu_input(7 downto 0) = "10000000" and psw(0) = '1' then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + if alu_input(7 downto 0) = "00000000" and psw(0) = '1' then + alu_psw(0) <= '1'; + else + alu_psw(0) <= '0'; + end if; + + when "0000101111" => -- tst + result := alu_input; + alu_output <= result; + ir_store <= '0'; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1 downto 0) <= "00"; + + when "1000101111" => -- tstb + ir_byte <= '1'; + result := alu_input; + alu_output <= result; + ir_store <= '0'; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1 downto 0) <= "00"; + + when "0000110000" => -- ror + result := psw(0) & alu_input(15 downto 1); + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(0) xor result(15); + alu_psw(0) <= alu_input(0); + + when "1000110000" => -- rorb + ir_byte <= '1'; + result8 := psw(0) & alu_input(7 downto 1); + alu_output(7 downto 0) <= result8; + alu_output(15 downto 8) <= "XXXXXXXX"; + alu_psw(3) <= result8(7); + if result8 = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(0) xor result8(7); + alu_psw(0) <= alu_input(0); + + when "0000110001" => -- rol + result := alu_input(14 downto 0) & psw(0); + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(15) xor result(15); + alu_psw(0) <= alu_input(15); + + when "1000110001" => -- rolb + ir_byte <= '1'; + result8 := alu_input(6 downto 0) & psw(0); + alu_output(7 downto 0) <= result8; + alu_output(15 downto 8) <= "XXXXXXXX"; + alu_psw(3) <= result8(7); + if result8 = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(7) xor result8(7); + alu_psw(0) <= alu_input(7); + + when "0000110010" => -- asr + result := alu_input(15) & alu_input(15 downto 1); + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(0) xor result(15); + alu_psw(0) <= alu_input(0); + + when "1000110010" => -- asrb + ir_byte <= '1'; + result8 := alu_input(7) & alu_input(7 downto 1); + alu_output(7 downto 0) <= result8; + alu_output(15 downto 8) <= "XXXXXXXX"; + alu_psw(3) <= result8(7); + if result8 = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(0) xor result8(7); + alu_psw(0) <= alu_input(0); + + when "0000110011" => -- asl + result := alu_input(14 downto 0) & '0'; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(15) xor result(15); + alu_psw(0) <= alu_input(15); + + when "1000110011" => -- aslb + ir_byte <= '1'; + result8 := alu_input(6 downto 0) & '0'; + alu_output(7 downto 0) <= result8; + alu_output(15 downto 8) <= "XXXXXXXX"; + alu_psw(3) <= result8(7); + if result8 = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= alu_input(7) xor result8(7); + alu_psw(0) <= alu_input(7); + + when "0000110111" => -- sxt + if psw(3) = '0' then + result := "0000000000000000"; + alu_psw(2) <= '1'; + else + result := "1111111111111111"; + alu_psw(2) <= '0'; + end if; + alu_output <= result; + alu_psw(3) <= psw(3); + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when others => + alu_output <= "XXXXXXXXXXXXXXXX"; + alu_psw <= "XXXX"; + + end case; + + elsif ir_dop = '1' then + case ir(15 downto 12) is + when "0001" => -- mov + result := alus_input; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "1001" => -- movb + ir_byte <= '1'; + result := alus_input; + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "0010" => -- cmp + result := alus_input - alu_input; + alu_output <= alu_input; + ir_store <= '0'; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if (alu_input(15) /= alus_input(15)) and (alus_input(15) /= result(15)) then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= ((not alus_input(15)) and alu_input(15)) or ((not alus_input(15)) and result(15)) or (alu_input(15) and result(15)); + + when "1010" => -- cmpb + ir_byte <= '1'; + result8 := alus_input(7 downto 0) - alu_input(7 downto 0); + alu_output <= alu_input; + ir_store <= '0'; + alu_psw(3) <= result8(7); + if result8 = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if (alu_input(7) /= alus_input(7)) and (alus_input(7) /= result8(7)) then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= ((not alus_input(7)) and alu_input(7)) or ((not alus_input(7)) and result8(7)) or (alu_input(7) and result8(7)); + + when "0011" => -- bit + result := alus_input and alu_input; + alu_output <= alu_input; + ir_store <= '0'; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "1011" => -- bitb + ir_byte <= '1'; + result := alus_input and alu_input; + alu_output <= alu_input; + ir_store <= '0'; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "0100" => -- bic + result := (not alus_input) and alu_input; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "1100" => -- bicb + ir_byte <= '1'; + result := (not alus_input) and alu_input; + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "0101" => -- bis + result := alus_input or alu_input; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "1101" => -- bisb + ir_byte <= '1'; + result := alus_input or alu_input; + alu_output <= result; + alu_psw(3) <= result(7); + if result(7 downto 0) = "00000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when "0110" => -- add + result := alu_input + alus_input; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if (alu_input(15) = alus_input(15)) and (alus_input(15) /= result(15)) then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= (alu_input(15) and alus_input(15)) or (alu_input(15) and not result(15)) or (alus_input(15) and not result(15)); + + when "1110" => -- sub + result := alu_input - alus_input; + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + if (alu_input(15) /= alus_input(15)) and (alu_input(15) /= result(15)) then + alu_psw(1) <= '1'; + else + alu_psw(1) <= '0'; + end if; + alu_psw(0) <= ((not alu_input(15)) and alus_input(15)) or ((not alu_input(15)) and result(15)) or (alus_input(15) and result(15)); + + when others => + alu_output <= "XXXXXXXXXXXXXXXX"; + alu_psw <= "XXXX"; + + end case; + + +-- misc insns + + elsif have_csm = 1 and ir_csm = '1' then -- csm + + alu_output <= alu_input; + alu_psw <= psw(3 downto 0); + + elsif have_mfp = 1 and (ir_mfpi = '1' or ir_mfpd = '1') then -- mfpi, mfpd, mtpi, mtpd + + alu_output <= alu_input; + alu_psw(3) <= alu_input(15); + if alu_input = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + elsif have_mfp = 1 and (ir_mtpi = '1' or ir_mtpd = '1') then -- mfpi, mfpd, mtpi, mtpd + + alu_output <= alus_input; + alu_psw(3) <= alus_input(15); + if alus_input = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + elsif have_mtps = 1 and ir_mtps = '1' then -- mtps + + ir_byte <= '1'; + alu_output <= alu_input; + alu_psw <= psw(3 downto 0); + + elsif have_mtps = 1 and ir_mfps = '1' then -- mfps + + ir_byte <= '1'; + alu_output <= psw; + alu_psw(3) <= psw(7); + if psw(7 downto 0) = "0000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + elsif have_xor = 1 and ir_dopr = '1' and ir(11 downto 9) = "100" then -- xor + + result := alu_input xor alus_input; -- xor is handled here, not in the eis alu + alu_output <= result; + alu_psw(3) <= result(15); + if result = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + elsif have_mpr = 1 and ir_mpr = '1' then + + case ir(6) is + when '0' => -- tstset + result := alu_input(15 downto 1) & '1'; + alu_output <= result; + alu_psw(3) <= alu_input(15); + if alu_input = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= alu_input(0); + + when '1' => -- wrtlck + result := alu_input; + alu_output <= result; + alu_psw(3) <= alu_input(15); + if alu_input = "0000000000000000" then + alu_psw(2) <= '1'; + else + alu_psw(2) <= '0'; + end if; + alu_psw(1) <= '0'; + alu_psw(0) <= psw(0); + + when others => + null; + end case; + + +-- fp11 insns with simple integer result + + elsif ir_fpsop1 = '1' then + + alu_psw(3 downto 0) <= psw(3 downto 0); + + case ir(7 downto 6) is + when "01" => -- ldfps + result := alu_input; + alu_output <= result; + + when "10" => -- stfps + result(15 downto 14) := fps(15 downto 14); + result(13 downto 12) := "00"; -- set these unused bits to zero to stop the tests complaining + result(11 downto 0) := fps(11 downto 0); + alu_output <= result; + + when "11" => -- stst + result := "000000000000" & fec; + alu_output <= result; + + when others => + alu_output <= "XXXXXXXXXXXXXXXX"; + alu_psw <= "XXXX"; + + end case; + + else + alu_output <= "XXXXXXXXXXXXXXXX"; + alu_psw <= "XXXX"; + end if; + end process; + + +-- +-- eis alu: mul, div, ash, ashc insns +-- + + process(clk) + begin + if clk = '1' and clk'event then + if have_eis = 1 and ir_dopr = '1' and ir(11) = '0' then + case ir(10 downto 9) is + + when "00" => -- mul + + if eis_sequencer = "11111" then -- load seq. code + eis_temp1 <= signed(alu_input) * signed(alus_input); -- mul is easy, just use the hw multipliers + elsif eis_sequencer = "00000" then -- done seq. code + eis_output <= eis_temp1(31 downto 16); -- high part + eis_output32 <= eis_temp1(15 downto 0); -- low part + eis_psw(3) <= eis_temp1(31); -- set n + if eis_temp1 = "00000000000000000000000000000000" then -- set z + eis_psw(2) <= '1'; + else + eis_psw(2) <= '0'; + end if; + eis_psw(1) <= '0'; -- set v - always 0, 15bits*15bits into 31 cannot overflow + if (eis_temp1(31) = '1' and eis_temp1(30 downto 15) /= "1111111111111111") + or (eis_temp1(31) = '0' and eis_temp1(30 downto 15) /= "0000000000000000") then + eis_psw(0) <= '1'; + else + eis_psw(0) <= '0'; + end if; + end if; + + when "01" => -- div + if eis_sequencer = "10000" then -- load seq. code + if alu_input(15) = '1' then -- if input negative + eis_temp1 <= '0' & ((not alu_input) + 1) & (14 downto 0 => '0'); -- take two's complement + eis_flag1 <= '1'; + else + eis_temp1 <= '0' & alu_input & (14 downto 0 => '0'); + eis_flag1 <= '0'; + end if; + if alus_input(15) = '1' then + eis_temp2 <= (not (alus_input & alut_input)) + 1; + eis_flag2 <= '1'; + else + eis_temp2 <= alus_input & alut_input; + eis_flag2 <= '0'; + end if; + eis_psw <= "0000"; + +-- main div loop + + elsif eis_sequencer(4) = '0' then + if unsigned(eis_temp1) <= unsigned(eis_temp2) then + if eis_sequencer(3 downto 0) = "1111" then + if unsigned(eis_temp1) <= unsigned(eis_temp2) then + eis_psw(1) <= '1'; + end if; + end if; + eis_temp(conv_integer(eis_sequencer(3 downto 0))) <= '1'; + eis_temp2 <= eis_temp2 - eis_temp1; + else + eis_temp(conv_integer(eis_sequencer(3 downto 0))) <= '0'; + end if; + eis_temp1(30 downto 0) <= eis_temp1(31 downto 1); + else + +-- post processing + +-- setting the flags after the div instruction is the tricky part. A division by zero causes +-- the result not to be stored - which is handled by the state machine, results are only +-- stored if the v and c flags are 00. Still a very tricky thing considering all the +-- border cases. I believe the current model is correct - and also, it passes all the tests +-- I can find. Specifically, fkac, and zkdj - and the results make sense as well. + + if eis_flag2 = '1' then -- if 2nd op was negative + eis_output32 <= (not eis_temp2(15 downto 0)) + 1; -- sign adjust remainder + else + eis_output32 <= eis_temp2(15 downto 0); -- or just the positive + end if; + + if eis_flag1 /= eis_flag2 then -- if signs were different + eis_psw(3) <= '1'; -- set N + eis_output <= (not eis_temp) + 1; -- sign adjust result + else + eis_psw(3) <= '0'; -- clear n + eis_output <= eis_temp; -- copy result + end if; + +-- special cases : result is zero + + if eis_temp(14 downto 0) = (14 downto 0 => '0') then + if eis_temp(15) = '0' then + eis_psw(3) <= '0'; + eis_psw(2) <= '1'; + eis_output(15) <= '0'; + else + eis_psw(2) <= '0'; + end if; + if eis_temp(15) = '1' and eis_flag1 /= eis_flag2 then + eis_psw(1) <= '0'; -- special case: quotient is negative maxint - that isn't an overflow + end if; + else + eis_psw(2) <= '0'; + end if; + +-- set c and v if divisor was zero + + if alu_input = (15 downto 0 => '0') then + if modelcode = 73 or modelcode = 83 or modelcode = 84 or modelcode = 93 or modelcode = 94 or modelcode = 53 then + eis_psw(2) <= psw(2); -- observed behaviour and needed to pass zkdj FIXME + end if; + eis_psw(1) <= '1'; + eis_psw(0) <= '1'; + end if; + + end if; + + + when "10" => -- ash + + if eis_sequencer = "11111" then + eis_output <= alus_input; + eis_flag2 <= '0'; + eis_psw(1) <= '0'; + eis_psw(0) <= '0'; + eis_temp(15 downto 6) <= "0000000000"; -- for easier debugging + eis_flag1 <= alu_input(5); + if alu_input(4 downto 0) = "11111" then -- see EK-1184E-TM-001_Dec87.pdf, page B-17 + if modelcode = 73 + or modelcode = 53 + or modelcode = 83 + or modelcode = 84 + or modelcode = 93 + or modelcode = 94 + then + if have_fpa = 0 then -- Speculative - see ashc case + eis_flag1 <= '1'; + end if; + end if; + end if; + if alu_input(5) = '1' then + eis_temp(5 downto 0) <= (not alu_input(5 downto 0)) + 1; + else + eis_temp(5 downto 0) <= alu_input(5 downto 0); + end if; + else + if eis_temp(5 downto 0) /= "000000" then + if eis_flag1 = '1' then + eis_output <= eis_output(15) & eis_output(15 downto 1); + eis_psw(0) <= eis_output(0); + else + eis_output <= eis_output(14 downto 0) & '0'; + if eis_output(15 downto 14) = "10" or eis_output(15 downto 14) = "01" then + eis_psw(1) <= '1'; + end if; + eis_psw(0) <= eis_output(15); + end if; + eis_temp(5 downto 0) <= eis_temp(5 downto 0) - 1; + else + eis_flag2 <= '1'; + eis_psw(3) <= eis_output(15); + if eis_output = "0000000000000000" then + eis_psw(2) <= '1'; + else + eis_psw(2) <= '0'; + end if; + end if; + end if; + + + when "11" => -- ashc + + if eis_sequencer = "11111" then + eis_temp1 <= alus_input & alut_input; + eis_flag2 <= '0'; + eis_psw(1) <= '0'; + eis_psw(0) <= '0'; + eis_temp(15 downto 6) <= "0000000000"; -- for easier debugging + eis_flag1 <= alu_input(5); + if alu_input(4 downto 0) = "11111" then -- see EK-1184E-TM-001_Dec87.pdf, page B-17 + if modelcode = 73 + or modelcode = 53 + or modelcode = 83 + or modelcode = 84 + or modelcode = 93 + or modelcode = 94 + then + if have_fpa = 0 then -- As evidenced from the test code in RSTS V10.1L + eis_flag1 <= '1'; + end if; + end if; + end if; + if alu_input(5) = '1' then + eis_temp(5 downto 0) <= ('0' & (not alu_input(4 downto 0))) + 1; + else + eis_temp(4 downto 0) <= alu_input(4 downto 0); + eis_temp(5) <= '0'; + end if; + else + if eis_temp(5 downto 0) /= "000000" then + if eis_flag1 = '1' then + eis_temp1 <= eis_temp1(31) & eis_temp1(31 downto 1); + eis_psw(0) <= eis_temp1(0); + else + eis_temp1 <= eis_temp1(30 downto 0) & '0'; + if eis_temp1(31 downto 30) = "10" or eis_temp1(31 downto 30) = "01" then + eis_psw(1) <= '1'; + end if; + eis_psw(0) <= eis_temp1(31); + end if; + eis_temp(5 downto 0) <= eis_temp(5 downto 0) - 1; + else + eis_flag2 <= '1'; + eis_output <= eis_temp1(31 downto 16); + eis_output32 <= eis_temp1(15 downto 0); + eis_psw(3) <= eis_temp1(31); + if eis_temp1 = "00000000000000000000000000000000" then + eis_psw(2) <= '1'; + else + eis_psw(2) <= '0'; + end if; + end if; + end if; + + when others => + null; + + end case; + end if; + end if; + end process; + + +-- floating point alu + + process(clk, reset, falu_pending_clear, ir_fpao, falu_load, falu_input, falus_input, ir_wait) + variable v_caseworkaround : std_logic_vector(3 downto 0); + begin + if clk = '1' and clk'event then + + if have_fpu = 1 and reset = '1' then + falu_done <= '0'; + falu_fsm <= falu_idle; + falu_fps <= "0000"; + falu_flag1 <= '0'; + falu_pending_fiu <= '0'; + falu_pending_fiv <= '0'; + falu_pending_fic <= '0'; + falu_pending_divz <= '0'; + elsif have_fpu = 1 and ir_wait = '0' then + + if falu_pending_clear = '1' then + falu_pending_fiu <= '0'; + falu_pending_fiv <= '0'; + falu_pending_fic <= '0'; + falu_pending_divz <= '0'; + end if; + + if ir_fpao = '1' then + + +-- if the falu_load bit is one, load the work registers and the initial state for the falu state machine. +-- both of which are dependent on exactly which instruction we need to process - the sequence in the +-- state machine needs to be started at a specific point, which is not the same for all insn - and +-- definitely all insn have their own initialization requirements and special cases. +-- +-- also, the main cpu state machine includes + + if falu_load = '1' then + falu_done <= '0'; + falu_fps <= "0000"; + + case ir(11 downto 8) is + + when "0010" | "0011" => -- mul(f|d), mod(f|d) + if falu_input(63) = falus_input(63) then -- set sign - positive if both operands are same sign, negative otherwise + falu_fps(3) <= '0'; + else + falu_fps(3) <= '1'; + end if; + falu_fps(2 downto 0) <= "000"; -- set default for fps bits + falu_fsm <= falu_mult; + falu_work1 <= (others => '0'); + falu_work2 <= '0' & '1' & falus_input(54 downto 0) & '0' & '0'; + if falu_input(62 downto 55) = "00000000" or falus_input(62 downto 55) = "00000000" then -- if either input exponent is zero, we don't need to multiply at all + falu_output <= (others => '0'); + falu_output2 <= (others => '0'); + falu_fps <= "0100"; + falu_fsm <= falu_idle; + falu_done <= '1'; + end if; + falu_ccw <= ("00" & falu_input(62 downto 55)) + ("00" & falus_input(62 downto 55)) - "0010000001"; + + + when "0100" | "0110" => -- add(f|d), sub(f|d) + falu_fsm <= falu_align; + + falu_work1 <= '0' & '1' & falu_input(54 downto 0) & '0' & '0'; + falu_work2 <= '0' & '1' & falus_input(54 downto 0) & '0' & '0'; + falu_fps(3 downto 0) <= "0000"; -- set default for fps bits + if falu_input(62 downto 55) = "00000000" then -- if the primary input exponent is zero, we don't need to add (or subtract) at all + falu_output <= falus_input; + falu_fps(3) <= falus_input(63); + if falus_input(62 downto 55) = "00000000" then + falu_fps(2) <= '1'; + else + falu_fps(2) <= '0'; + end if; + falu_fsm <= falu_idle; + falu_done <= '1'; + elsif falus_input(62 downto 55) = "00000000" then -- if the secondary input exponent is zero, we don't need to add (or subtract) at all + falu_output(62 downto 0) <= falu_input(62 downto 0); + if ir(9) = '0' then + falu_fps(3) <= falu_input(63); + falu_output(63) <= falu_input(63); + else + falu_fps(3) <= not falu_input(63); + falu_output(63) <= not falu_input(63); + end if; + falu_fsm <= falu_idle; + falu_done <= '1'; + elsif unsigned(falu_input(62 downto 55)) < unsigned(falus_input(62 downto 55)) then + falu_ccw <= "00" & (unsigned(falus_input(62 downto 55)) - unsigned(falu_input(62 downto 55))); + falu_flag1 <= '1'; + elsif unsigned(falu_input(62 downto 55)) = unsigned(falus_input(62 downto 55)) then + falu_ccw <= (others => '0'); + if unsigned(falu_input(54 downto 0)) < unsigned(falus_input(54 downto 0)) then + falu_flag1 <= '1'; + else + falu_flag1 <= '0'; + end if; + else + falu_ccw <= "00" & (unsigned(falu_input(62 downto 55)) - unsigned(falus_input(62 downto 55))); + falu_flag1 <= '0'; + end if; + + when "0101" => -- ld(f|d) + falu_output <= falu_input; + falu_fps(3) <= falu_input(63); + if falu_input(62 downto 55) = "00000000" then + falu_fps(2) <= '1'; + else + falu_fps(2) <= '0'; + end if; + falu_fps(1 downto 0) <= "00"; -- set default for fps bits + falu_fsm <= falu_idle; + falu_done <= '1'; + + when "0111" => -- cmp(f|d) + falu_output <= falus_input; + falu_fps(3 downto 0) <= "0000"; -- set default for fps bits + if falu_input(63) = '1' and falus_input(63) = '0' then + falu_fps(3) <= '1'; + elsif falu_input(63) = '0' and falus_input(63) = '0' then + if unsigned(falu_input(62 downto 55)) < unsigned(falus_input(62 downto 55)) then + falu_fps(3) <= '1'; + elsif unsigned(falu_input(62 downto 55)) = unsigned(falus_input(62 downto 55)) then + if unsigned(falu_input(54 downto 0)) < unsigned(falus_input(54 downto 0)) then + falu_fps(3) <= '1'; + elsif unsigned(falu_input(54 downto 0)) = unsigned(falus_input(54 downto 0)) then + falu_fps(2) <= '1'; + else + -- n=0, z=0 + end if; + else + -- n=0, z=0 + end if; + elsif falu_input(63) = '1' and falus_input(63) = '1' then + if unsigned(falus_input(62 downto 55)) < unsigned(falu_input(62 downto 55)) then + falu_fps(3) <= '1'; + elsif unsigned(falus_input(62 downto 55)) = unsigned(falu_input(62 downto 55)) then + if unsigned(falus_input(54 downto 0)) < unsigned(falu_input(54 downto 0)) then + falu_fps(3) <= '1'; + elsif unsigned(falus_input(54 downto 0)) = unsigned(falu_input(54 downto 0)) then + falu_fps(2) <= '1'; + else + -- n=0, z=0 + end if; + else + -- n=0, z=0 + end if; + end if; + + if falu_input(62 downto 55) = "00000000" and falus_input(62 downto 55) = "00000000" then + falu_fps <= "0100"; + falu_output <= (others => '0'); + end if; + + falu_fsm <= falu_idle; + falu_done <= '1'; + + when "1000" => -- st(f|d) + falu_output <= falu_input; + falu_fps <= fps(3 downto 0); + falu_fsm <= falu_idle; + falu_done <= '1'; + + when "1001" => -- div(f|d) + if falu_input(63) = falus_input(63) then -- set sign - positive if both operands are same sign, negative otherwise + falu_fps(3) <= '0'; + else + falu_fps(3) <= '1'; + end if; + falu_fps(2 downto 0) <= "000"; -- set default for other fps bits + falu_fsm <= falu_div; + falu_work1 <= (others => '0'); + falu_work2 <= '0' & '1' & falus_input(54 downto 0) & '0' & '0'; + if falus_input(62 downto 55) = "00000000" then -- check ac operand first, then if fsrc is zero, those settings will take precedence over these + falu_output <= (others => '0'); + falu_fps <= "0100"; + falu_fsm <= falu_idle; + falu_done <= '1'; + end if; + if falu_input(62 downto 55) = "00000000" then + falu_pending_divz <= '1'; + falu_output <= falus_input; + falu_fps <= fps(3 downto 0); -- the doc is unspecific... but xxdp jfpa seems to expect no updates to fps + falu_fsm <= falu_idle; + falu_done <= '1'; + end if; + falu_ccw <= "0000111010"; + + when "1010" => -- stexp + falu_output(55 downto 48) <= falu_input(62 downto 55) - "10000000"; + if unsigned(falu_input(62 downto 55)) < unsigned'("10000000") then + falu_fps(3) <= '1'; + falu_output(63 downto 56) <= (others => '1'); + else + falu_fps(3) <= '0'; + falu_output(63 downto 56) <= (others => '0'); + end if; + if falu_input(62 downto 55) = "10000000" then + falu_fps(2) <= '1'; + else + falu_fps(2) <= '0'; + end if; + falu_fps(1) <= '0'; + falu_fps(0) <= '0'; + falu_fsm <= falu_idle; + falu_done <= '1'; + + when "1011" => -- stc(f|d)(i|l) + falu_fsm <= falu_shift; + falu_fps(3) <= falu_input(63); -- n is set from input + falu_fps(2 downto 0) <= "000"; -- set default for other fps bits + falu_work1 <= (others => '0'); -- the idea to use work1 here is that synthesis may reuse the shifter we already have for it + if fps(6) = '0' then -- if short integer mode + falu_work1(58 downto 43) <= '1' & falu_input(54 downto 40); + falu_ccw <= unsigned'("0010010000") - unsigned("00" & falu_input(62 downto 55)); -- exponent minus the bias + else + if fps(7) = '0' then -- if in long integer mode, we need to check if we're in float mode, because then we can only copy 23 bits of fraction + falu_work1(58 downto 35) <= '1' & falu_input(54 downto 32); + else + falu_work1(58 downto 26) <= '1' & falu_input(54 downto 23); + end if; + if ir(5 downto 3) = "000" or ir(5 downto 0) = "010111" then -- reg or mode 2, reg 7 + falu_ccw <= unsigned'("0010010000") - unsigned("00" & falu_input(62 downto 55)); -- exponent minus the bias + else + falu_ccw <= unsigned'("0010100000") - unsigned("00" & falu_input(62 downto 55)); -- exponent minus the bias + end if; + end if; + if unsigned(falu_input(62 downto 55)) < unsigned'("10000001") then -- it is not entirely clear in the manuals, but if the input is less than 1, the output is zero, and only the Z flag is set. It is not a conversion error! + falu_output <= (others => '0'); + falu_fps(3) <= '0'; + falu_fps(2) <= '1'; + falu_fps(1) <= '0'; + falu_fps(0) <= '0'; + falu_fsm <= falu_idle; + falu_done <= '1'; + end if; + + when "1100" | "1111" => -- stc(f|d)(d|f), ldc(d|f)(f|d) + falu_fps(3) <= falu_input(63); -- n bit is in most cases a direct copy of the input + falu_output(63 downto 55) <= falu_input(63 downto 55); -- right in most cases + falu_fps(2 downto 0) <= "000"; -- set default for other fps bits + if falu_input(62 downto 55) = "00000000" then -- if the input exponent is zero, then the z bit in fps must be set + falu_fps(2) <= '1'; + falu_fps(3) <= '0'; -- negative zero exp is ignored + falu_output <= (others => '0'); + else + falu_fps(2) <= '0'; + if (fps(7) = '0' and ir(11 downto 8) = "1100") or (fps(7) = '1' and ir(11 downto 8) = "1111") then -- convert to a double, or to a float? + falu_output(54 downto 32) <= falu_input(54 downto 32); -- just copy the high part if converting f to d + falu_output(31 downto 0) <= "00000000000000000000000000000000"; -- and set the low part to zeroes + else + if fps(5) = '1' then -- on d to f conversion, if round/trunc is trunc + falu_output(54 downto 32) <= falu_input(54 downto 32); -- just copy the high part + falu_output(31 downto 0) <= "00000000000000000000000000000000"; -- and set the low part to zeroes + else + if falu_input(62 downto 31) = "11111111111111111111111111111111" then -- this bit pattern causes overflow to occur + falu_output(62 downto 32) <= "0000000000000000000000000000000"; -- result after overflow is zeroes + falu_fps(2) <= '1'; -- set z bit, because of zeroes we just set! + falu_fps(1) <= '1'; -- set v bit to signal overflow + if fps(9) = '1' then -- if fiv enabled + falu_pending_fiv <= '1'; -- then signal the pending interrupt + end if; + else + falu_output(62 downto 31) <= falu_input(62 downto 31) + "1"; -- normal case, round bit added. Note that I count on normal arithmetic to handle increasing the exponent, if that is necessary to handle an overflow of the fraction part + end if; + falu_output(31 downto 0) <= "00000000000000000000000000000000"; -- in all cases, the low part is cleared + end if; + end if; + end if; + falu_fsm <= falu_idle; + falu_done <= '1'; + + when "1101" => -- ldexp + falu_output(63) <= falu_input(63); -- setup sign, in all cases a copy of the input + falu_output(54 downto 0) <= falu_input(54 downto 0); -- fraction is in all cases same as input + falu_fps(3) <= falu_input(63); -- setup n bit + falu_fps(2 downto 0) <= "000"; -- set default for other fps bits + if falus_input(55) = '1' then -- sign bit on, ie. is this a negative 2-complement integer + if falus_input(54 downto 47) = "11111111" -- if yes, then the next 8 bits need to be ones too, else it is an overflow + and falus_input(47 downto 40) /= "10000000" then -- would produce an overflow as well - special case + falu_output(62 downto 55) <= falus_input(47 downto 40) + "10000000"; -- not an overflow --> assign the new exponent, biased w. 200 oct + else + if fps(10) = '1' then -- if fiu enabled + falu_output(62 downto 55) <= falus_input(47 downto 40) + "10000000"; + if falus_input(47 downto 40) + "10000000" = "00000000" then + falu_fps(2) <= '1'; + end if; + falu_pending_fiu <= '1'; + else + falu_output <= (others => '0'); -- if fiu disabled, just set the output to zeroes + falu_fps(2) <= '1'; -- and dont forget to set the z bit either + falu_fps(3) <= '0'; -- and also dont forget zero is not negative + end if; + end if; + else -- positive exponent + if falus_input(54 downto 47) = "00000000" then -- for a positive exponent, the high 8 bits must be clear, otherwise it is an overflow + falu_output(62 downto 55) <= falus_input(47 downto 40) + "10000000"; -- not overflow - assign new exponent biased w. 200 oct + else + falu_fps(1) <= '1'; -- v bit is set only when exponent > 177 + if fps(9) = '1' then -- if fiv is enabled + falu_output(62 downto 55) <= falus_input(47 downto 40) + "10000000"; + if falus_input(47 downto 40) + "10000000" = "00000000" then + falu_fps(2) <= '1'; + end if; + falu_pending_fiv <= '1'; + else -- if fiv is disabled + falu_output <= (others => '0'); -- set the output to all zeroes + falu_fps(2) <= '1'; -- set z bit as well + falu_fps(3) <= '0'; + end if; + end if; + end if; + falu_fsm <= falu_idle; + falu_done <= '1'; + + + when "1110" => -- ldc(i|l)(f|d) + falu_fsm <= falu_norm; + falu_fps(2 downto 0) <= "000"; -- set default for fps bits + if fps(6) = '0' + or ir(5 downto 3) = "000" + or ir(5 downto 0) = "010111" -- mode 2, reg 7 only + then + if fps(6) = '1' then -- if fl is set ie long mode, mode must be 0 or mode 2, reg 7, and the strange exception to use the single 16bit word as the upper applies. + falu_ccw <= "0010011111"; -- 37(8) or 31(10), max number of shifts for long mode; special case + else + falu_ccw <= "0010001111"; -- 17(8) or 15(10), max number of shifts for integer mode + end if; + falu_work1 <= (others => '0'); + if falu_input(39) = '1' then + falu_fps(3) <= '1'; + falu_work1(58 downto 43) <= (not falu_input(39 downto 24)) + 1; + else + falu_fps(3) <= '0'; + falu_work1(58 downto 43) <= falu_input(39 downto 24); + end if; + else + falu_ccw <= "0010011111"; -- 37(8) or 31(10), max number of shifts for long mode + falu_work1 <= (others => '0'); + if falu_input(55) = '1' then + falu_fps(3) <= '1'; + falu_work1(58 downto 27) <= (not falu_input(55 downto 24)) + 1; + else + falu_fps(3) <= '0'; + falu_work1(58 downto 27) <= falu_input(55 downto 24); + end if; + end if; + + when others => + null; + + end case; + + else + + case falu_fsm is + + +-- multiply, ie. shifting and adding +-- this does not deal with the fd bit - all mult operations are full precision, regardless of the bit. The core +-- would be significantly faster for single prec if we would deal with the fd bit. FIXME! + + when falu_mult => + if falu_work2(57 downto 2) /= "00000000000000000000000000000000000000000000000000000000" then + if falu_work2(2) = '1' then -- if lowest order bit is a one + falu_work1 <= ('0' & falu_work1(58 downto 1) + ('0' & '1' & falu_input(54 downto 0) & "00")); -- then shift right and add + else + falu_work1 <= '0' & falu_work1(58 downto 1); -- if not set, then only shift right + end if; + falu_work2 <= '0' & falu_work2(58 downto 1); -- shift right for next round + else + falu_fsm <= falu_norm; -- if all bits done, then go into normalize state + end if; + + +-- align the operands for addition or subtraction +-- flag1 has which one of the operands needs to be shifted - and also, check the fd bit to see what the maximum value of the shift should be +-- falu_ccw has the difference - if it is 0, or shift- and decrement to 0, the addition/subtraction state is next up + + when falu_align => + if falu_ccw /= "0000000000" then + if falu_flag1 = '1' then + falu_work1 <= '0' & falu_work1(58 downto 1); + else + falu_work2 <= '0' & falu_work2(58 downto 1); + end if; + + if fps(7) = '1' and unsigned(falu_ccw) > unsigned'("0000111001") then -- > 57 ?? + falu_ccw <= "0000000000"; + if falu_flag1 = '1' then + falu_work1 <= (others => '0'); + else + falu_work2 <= (others => '0'); + end if; + falu_fsm <= falu_addsub; + elsif fps(7) = '0' and unsigned(falu_ccw) > unsigned'("0000011001") then -- > 25 ?? + falu_ccw <= "0000000000"; + if falu_flag1 = '1' then + falu_work1 <= (others => '0'); + else + falu_work2 <= (others => '0'); + end if; + falu_fsm <= falu_addsub; + else + falu_ccw <= falu_ccw - 1; + end if; + else + falu_fsm <= falu_addsub; + end if; + + + when falu_addsub => + +-- this statement: +-- case ir(9) & falu_input(63) & falus_input(63) & falu_flag1 is +-- would be a nice and elegant way to express what I would like +-- alas, ISE cannot translate it. See: +-- AR #22098 - 8.2i XST-"ERROR:HDLParsers:818 - Cannot determine the type of the selector &" + + v_caseworkaround := ir(9) & falu_input(63) & falus_input(63) & falu_flag1; + case v_caseworkaround is + when "0000" | "0001" => -- add, +|+ + falu_work1 <= falu_work1 + falu_work2; + falu_fps(3) <= '0'; + + when "0100" => -- add, !work1 -- add, work1 -- add, !work1 -- add, work1 -- add, -|- + falu_work1 <= falu_work1 + falu_work2; + falu_fps(3) <= '1'; + + when "1000" => -- sub, !work1 -- sub, work1 -- sub, -|+ + falu_work1 <= falu_work2 + falu_work1; + falu_fps(3) <= '0'; + + when "1010" | "1011" => -- sub, +|- + falu_work1 <= falu_work2 + falu_work1; + falu_fps(3) <= '1'; + + when "1110" => -- sub, !work1 -- sub, work1 + null; + end case; + + if falu_flag1 = '1' then + falu_ccw <= "00" & falus_input(62 downto 55); + else + falu_ccw <= "00" & falu_input(62 downto 55); + end if; + falu_fsm <= falu_norm; + + + when falu_div => + if unsigned(falu_work2) >= unsigned('0' & '1' & falu_input(54 downto 0) & "00") then + falu_work1 <= falu_work1(57 downto 0) & '1'; + falu_work2 <= unsigned(falu_work2(57 downto 0) & '0') - unsigned('1' & falu_input(54 downto 0) & "000"); + else + falu_work1 <= falu_work1(57 downto 0) & '0'; + falu_work2 <= falu_work2(57 downto 0) & '0'; + end if; + if falu_ccw /= "0000000000" then + falu_ccw <= falu_ccw - 1; + else + falu_fsm <= falu_norm; + falu_ccw <= unsigned("00" & falus_input(62 downto 55)) - unsigned("00" & falu_input(62 downto 55)) + unsigned'("0010000000"); + end if; + + + when falu_shift => + if falu_ccw /= "0000000000" then + falu_work1 <= '0' & falu_work1(58 downto 1); + falu_ccw <= falu_ccw - 1; + else + falu_output <= (others => '0'); + if falu_input(63) = '1' then + falu_output(63 downto 32) <= (not falu_work1(58 downto 27)) + 1; + else + falu_output(63 downto 32) <= falu_work1(58 downto 27); + end if; + falu_fsm <= falu_shift2; + end if; + + if fps(6) = '0' then + if unsigned(falu_ccw) > unsigned'("0000001111") then + falu_fsm <= falu_shifte; + end if; + else + if unsigned(falu_ccw) > unsigned'("0000011111") then + falu_fsm <= falu_shifte; + end if; + end if; + + when falu_shift2 => + if falu_output(63 downto 48) = "0000000000000000" then + if fps(6) = '0' then + falu_fps(3) <= '0'; + falu_fps(2) <= '1'; + else + if falu_output(47 downto 32) = "0000000000000000" then + falu_fps(3) <= '0'; + falu_fps(2) <= '1'; + end if; + end if; + end if; + if falu_output(63) /= falu_input(63) then + falu_fsm <= falu_shifte; + else + falu_fsm <= falu_idle; + falu_done <= '1'; + end if; + + when falu_shifte => + falu_fps(3) <= '0'; -- on error, result is not negative + falu_fps(2) <= '1'; + falu_fps(1) <= '0'; -- V bit is not used + falu_fps(0) <= '1'; + falu_output <= (others => '0'); + if fps(8) = '1' then + falu_pending_fic <= '1'; + end if; + falu_fsm <= falu_idle; + falu_done <= '1'; + + + when falu_norm => + if falu_work1(58 downto 57) = "01" then -- hidden bit in the right place, overflow bit clear? + if ir(11 downto 8) = "0011" then + falu_fsm <= falu_sep; + else + falu_fsm <= falu_rt; + end if; + elsif falu_work1(58) = '1' then -- is the overflow bit set? + falu_work1 <= '0' & falu_work1(58 downto 1); -- shift right + falu_ccw <= falu_ccw + 1; -- increase exponent + if ir(11 downto 8) = "0011" then + falu_fsm <= falu_sep; + else + falu_fsm <= falu_rt; + end if; + else +-- 76543210987654321098765432109876543210987654321098765432 + if falu_work1(57 downto 2) /= "00000000000000000000000000000000000000000000000000000000" then + falu_work1 <= falu_work1(57 downto 0) & '0'; -- shift left + falu_ccw <= falu_ccw - 1; -- decrease exponent + else -- coming here, we have lost all ones from the fraction; the output is zero + falu_fps(3) <= '0'; -- make sure that the n bit is cleared + falu_fsm <= falu_zres; -- result is zero + end if; + end if; + + + when falu_sep => + if signed(falu_ccw) <= signed'("0010000000") then + falu_output2 <= (others => '0'); + falu_fsm <= falu_rt; + elsif (signed(falu_ccw) > signed'("0010011000") and fps(7) = '0') or (signed(falu_ccw) > signed'("0010111000") and fps(7) = '1') then + falu_fsm <= falu_sep3; + else + falu_output2(63) <= falu_fps(3); + falu_output2(62 downto 55) <= falu_ccw(7 downto 0); + falu_output2(54 downto 0) <= falu_work1(56 downto 2); + falu_fsm <= falu_sep2; + falu_work2 <= (others => '0'); + falu_work2(58 downto 57) <= "10"; + end if; + + + when falu_sep2 => + if signed(falu_ccw) > signed'("0010000000") then + falu_work1 <= falu_work1(57 downto 0) & '0'; -- shift left + falu_work2 <= '1' & falu_work2(58 downto 1); -- shift right + falu_ccw <= falu_ccw - 1; + elsif falu_work1(57) /= '1' and falu_ccw /= "0000000000" then + falu_work1 <= falu_work1(57 downto 0) & '0'; -- shift left + falu_ccw <= falu_ccw - 1; + if falu_work1(57 downto 2) = "00000000000000000000000000000000000000000000000000000000" then + falu_ccw <= "0000000000"; + end if; + else + falu_output2(54 downto 0) <= falu_output2(54 downto 0) and falu_work2(56 downto 2); + falu_fsm <= falu_res; + if falu_ccw = "0000000000" then + falu_fsm <= falu_zres; -- zero result handled directly, because res would wrongly raise an underflow + end if; + end if; + + + when falu_sep3 => + falu_output <= (others => '0'); -- set fraction output to zero + falu_fps(3) <= '0'; -- if the fraction is zero, so is its sign + falu_fps(2) <= '1'; -- set z for fraction + falu_output2(63) <= falu_fps(3); + falu_output2(62 downto 55) <= falu_ccw(7 downto 0); + falu_output2(54 downto 0) <= falu_work1(56 downto 2); + if falu_ccw(8) = '1' and falu_ccw(9) /= '1' then -- overflow? + falu_fps(1) <= '1'; -- set the flag + if fps(9) = '1' then -- are overflow traps enabled? + falu_pending_fiv <= '1'; -- yes, set flag + else + falu_output2 <= (others => '0'); + end if; + end if; + falu_done <= '1'; + falu_fsm <= falu_idle; + + + when falu_rt => + if fps(5) = '0' then + if fps(7) = '0' then +-- 87654321098765432109876543 210987654321098765432109876543210 + falu_work1 <= (unsigned(falu_work1(58 downto 33)) + unsigned'("00000000000000000000000001")) & "000000000000000000000000000000000"; + else + falu_work1 <= falu_work1 + "10"; + end if; + end if; + falu_fsm <= falu_rtc; + + + when falu_rtc => + if falu_work1(58) = '1' then + falu_work1 <= '0' & falu_work1(58 downto 1); + falu_ccw <= falu_ccw + 1; + end if; + falu_fsm <= falu_res; + + + when falu_res => + falu_output(63) <= falu_fps(3); + falu_output(62 downto 55) <= falu_ccw(7 downto 0); + falu_output(54 downto 0) <= falu_work1(56 downto 2); + falu_done <= '1'; + falu_fsm <= falu_idle; + if falu_ccw(7 downto 0) = "00000000" then + falu_fps(2) <= '1'; + else + falu_fps(2) <= '0'; + end if; + if falu_ccw(9) = '1' or falu_ccw(9 downto 0) = "0000000000" then + if fps(10) = '1' then -- are underflow traps enabled? + falu_pending_fiu <= '1'; -- yes, set flag + else + falu_fsm <= falu_zres; -- traps are not enabled, output is zero + end if; + elsif falu_ccw(8) = '1' then + falu_fps(1) <= '1'; -- set the flag + if fps(9) = '1' then -- are overflow traps enabled? + falu_pending_fiv <= '1'; -- yes, set flag + else + falu_fsm <= falu_zres; -- traps are not enabled, output is zero + end if; + end if; + + + when falu_zres => + falu_output <= (others => '0'); + falu_fps(3) <= '0'; + falu_fps(2) <= '1'; + falu_fps(0) <= '0'; + falu_done <= '1'; + falu_fsm <= falu_idle; + + + when falu_idle => + falu_done <= '0'; + falu_ccw <= (others => '0'); + falu_work1 <= (others => '0'); + falu_work2 <= (others => '0'); + falu_flag1 <= '0'; + + when others => + null; + + end case; + end if; + + + elsif ir_fpsop2 = '1' then + case ir(7 downto 6) is + + when "00" => -- clr(f/d) + falu_output <= (others => '0'); + falu_fps(3 downto 0) <= "0100"; + + when "01" => -- tst(f/d) + falu_output <= falu_input; + if falu_input(62 downto 55) = "00000000" then + falu_fps(2) <= '1'; + falu_output <= (others => '0'); + else + falu_fps(2) <= '0'; + end if; + falu_fps(3) <= falu_input(63); + falu_fps(1) <= '0'; + falu_fps(0) <= '0'; + + when "10" => -- abs(f/d) + falu_output <= '0' & falu_input(62 downto 0); + if falu_input(62 downto 55) = "00000000" then + falu_fps(2) <= '1'; + falu_output <= (others => '0'); + else + falu_fps(2) <= '0'; + end if; + falu_fps(3) <= '0'; + falu_fps(1) <= '0'; + falu_fps(0) <= '0'; + + when "11" => -- neg(f/d) + if falu_input(63) = '0' then + falu_output <= '1' & falu_input(62 downto 0); + falu_fps(3) <= '1'; + else + falu_output <= '0' & falu_input(62 downto 0); + falu_fps(3) <= '0'; + end if; + if falu_input(62 downto 55) = "00000000" then + falu_output <= (others => '0'); + falu_fps(2) <= '1'; + falu_fps(3) <= '0'; + else + falu_fps(2) <= '0'; + end if; + falu_fps(1) <= '0'; + falu_fps(0) <= '0'; + + when others => + falu_output <= (others => 'X'); + falu_fps(3 downto 0) <= "XXXX"; + + end case; + falu_output2 <= (others => 'X'); + else + falu_output <= (others => 'X'); + falu_output2 <= (others => 'X'); + falu_fps(3 downto 0) <= "XXXX"; + end if; + end if; + + end if; + + end process; + +end implementation; + diff --git a/src/PDP2011/cpuregs.vhd b/src/PDP2011/cpuregs.vhd new file mode 100644 index 0000000..f9aa58d --- /dev/null +++ b/src/PDP2011/cpuregs.vhd @@ -0,0 +1,113 @@ + +-- +-- Copyright (c) 2008-2015 Sytse van Slooten +-- +-- Permission is hereby granted to any person obtaining a copy of these VHDL source files and +-- other language source files and associated documentation files ("the materials") to use +-- these materials solely for personal, non-commercial purposes. +-- You are also granted permission to make changes to the materials, on the condition that this +-- copyright notice is retained unchanged. +-- +-- The materials are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; +-- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +-- + +-- $Revision: 1.17 $ + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity cpuregs is + port( + raddr : in std_logic_vector(5 downto 0); + waddr : in std_logic_vector(5 downto 0); + d : in std_logic_vector(15 downto 0); + o : out std_logic_vector(15 downto 0); + we : in std_logic; + clk : in std_logic + ); +end cpuregs; + +architecture implementation of cpuregs is + +subtype mem_unit is std_logic_vector(15 downto 0); +type mem_type is array(15 downto 0) of mem_unit; +signal regs : mem_type := mem_type'( + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000"), + mem_unit'("0000000000000000") +); + +signal r_loc : std_logic_vector(3 downto 0); +signal w_loc : std_logic_vector(3 downto 0); + +signal r0k : std_logic_vector(15 downto 0); +signal r1k : std_logic_vector(15 downto 0); +signal r2k : std_logic_vector(15 downto 0); +signal r3k : std_logic_vector(15 downto 0); +signal r4k : std_logic_vector(15 downto 0); +signal r5k : std_logic_vector(15 downto 0); +signal r6k : std_logic_vector(15 downto 0); +signal r6s : std_logic_vector(15 downto 0); +signal r6u : std_logic_vector(15 downto 0); + +begin + + r0k <= regs(conv_integer(0)); + r1k <= regs(conv_integer(1)); + r2k <= regs(conv_integer(2)); + r3k <= regs(conv_integer(3)); + r4k <= regs(conv_integer(4)); + r5k <= regs(conv_integer(5)); + r6k <= regs(conv_integer(6)); + r6s <= regs(conv_integer(14)); + r6u <= regs(conv_integer(15)); + + r_loc <= + raddr(3 downto 0) when raddr(2 downto 1) /= "11" else -- kernel 0-5 loc 0-5, u 0-5 loc 8-13 + "0110" when raddr(2 downto 0) = "110" and raddr(5 downto 4) = "00" else -- kernel sp loc 6 + "1110" when raddr(2 downto 0) = "110" and raddr(5 downto 4) = "01" else -- super sp loc 14 + "1111" when raddr(2 downto 0) = "110" and raddr(5 downto 4) = "11" else -- user sp loc 15 + "0111"; -- invalid + + w_loc <= + waddr(3 downto 0) when waddr(2 downto 1) /= "11" else -- kernel 0-5 loc 0-5, u 0-5 loc 8-13 + "0110" when waddr(2 downto 0) = "110" and waddr(5 downto 4) = "00" else -- kernel sp loc 6 + "1110" when waddr(2 downto 0) = "110" and waddr(5 downto 4) = "01" else -- super sp loc 14 + "1111" when waddr(2 downto 0) = "110" and waddr(5 downto 4) = "11" else -- user sp loc 15 + "0111"; -- invalid + + process(clk, we, w_loc, d) + begin + if clk = '1' and clk'event then + if we = '1' and w_loc /= "0111" then + regs(conv_integer(w_loc)) <= d; + end if; + end if; + end process; + + process(r_loc, regs, raddr) + begin + if r_loc /= "0111" then + o <= regs(conv_integer(r_loc)); + else + o <= (others => '0'); + end if; + end process; + +end implementation; diff --git a/src/PDP2011/fpuregs.vhd b/src/PDP2011/fpuregs.vhd new file mode 100644 index 0000000..8360c20 --- /dev/null +++ b/src/PDP2011/fpuregs.vhd @@ -0,0 +1,123 @@ + +-- +-- Copyright (c) 2008-2015 Sytse van Slooten +-- +-- Permission is hereby granted to any person obtaining a copy of these VHDL source files and +-- other language source files and associated documentation files ("the materials") to use +-- these materials solely for personal, non-commercial purposes. +-- You are also granted permission to make changes to the materials, on the condition that this +-- copyright notice is retained unchanged. +-- +-- The materials are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; +-- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +-- + +-- $Revision: 1.15 $ + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity fpuregs is + port( + raddr : in std_logic_vector(2 downto 0); + waddr : in std_logic_vector(2 downto 0); + d : in std_logic_vector(63 downto 0); + o : out std_logic_vector(63 downto 0); + fpmode : in std_logic; + we : in std_logic; + clk : in std_logic + ); +end fpuregs; + +architecture implementation of fpuregs is + +subtype fp_unit is std_logic_vector(15 downto 0); +type fp_type is array(5 downto 0) of fp_unit; +signal fpreg1 : fp_type := fp_type'( + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000") +); +signal fpreg2 : fp_type := fp_type'( + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000") +); +signal fpreg3 : fp_type := fp_type'( + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000") +); +signal fpreg4 : fp_type := fp_type'( + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000"), + fp_unit'("0000000000000000") +); + +signal r_loc : std_logic_vector(2 downto 0); +signal w_loc : std_logic_vector(2 downto 0); + +signal ac0 : std_logic_vector(63 downto 0); +signal ac1 : std_logic_vector(63 downto 0); +signal ac2 : std_logic_vector(63 downto 0); +signal ac3 : std_logic_vector(63 downto 0); +signal ac4 : std_logic_vector(63 downto 0); +signal ac5 : std_logic_vector(63 downto 0); + + +begin + + ac0 <= fpreg1(conv_integer("0")) & fpreg2(conv_integer("0")) & fpreg3(conv_integer("0")) & fpreg4(conv_integer("0")); + ac1 <= fpreg1(conv_integer("1")) & fpreg2(conv_integer("1")) & fpreg3(conv_integer("1")) & fpreg4(conv_integer("1")); + ac2 <= fpreg1(conv_integer("10")) & fpreg2(conv_integer("10")) & fpreg3(conv_integer("10")) & fpreg4(conv_integer("10")); + ac3 <= fpreg1(conv_integer("11")) & fpreg2(conv_integer("11")) & fpreg3(conv_integer("11")) & fpreg4(conv_integer("11")); + ac4 <= fpreg1(conv_integer("100")) & fpreg2(conv_integer("100")) & fpreg3(conv_integer("100")) & fpreg4(conv_integer("100")); + ac5 <= fpreg1(conv_integer("101")) & fpreg2(conv_integer("101")) & fpreg3(conv_integer("101")) & fpreg4(conv_integer("101")); + + r_loc <= raddr; + w_loc <= waddr; + + process(clk, we, w_loc, d, fpmode) + begin + if clk = '1' and clk'event then + if we = '1' and w_loc(2 downto 1) /= "11" then + if fpmode = '1' then + fpreg1(conv_integer(w_loc)) <= d(63 downto 48); + fpreg2(conv_integer(w_loc)) <= d(47 downto 32); + fpreg3(conv_integer(w_loc)) <= d(31 downto 16); + fpreg4(conv_integer(w_loc)) <= d(15 downto 0); + else + fpreg1(conv_integer(w_loc)) <= d(63 downto 48); + fpreg2(conv_integer(w_loc)) <= d(47 downto 32); + end if; + end if; + end if; + end process; + + process(r_loc, fpreg1, fpreg2, fpreg3, fpreg4, fpmode) + begin + if r_loc(2 downto 1) /= "11" then + if fpmode = '1' then + o <= fpreg1(conv_integer(r_loc)) & fpreg2(conv_integer(r_loc)) & fpreg3(conv_integer(r_loc)) & fpreg4(conv_integer(r_loc)); + else + o <= fpreg1(conv_integer(r_loc)) & fpreg2(conv_integer(r_loc)) & "00000000000000000000000000000000"; + end if; + else + o <= "0000000000000000000000000000000000000000000000000000000000000000"; + end if; + end process; + +end implementation; diff --git a/src/RAM/RAM_32K.vhd b/src/RAM/RAM_32K.vhd new file mode 100644 index 0000000..e80db85 --- /dev/null +++ b/src/RAM/RAM_32K.vhd @@ -0,0 +1,37 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity RAM_32K is + port ( + clk : in std_logic; + we_uP : in std_logic; + ce : in std_logic; + addr_uP : in std_logic_vector (14 downto 0); + D_uP : in std_logic_vector (7 downto 0); + Q_uP : out std_logic_vector (7 downto 0)); +end; + +architecture BEHAVIORAL of RAM_32K is + + type ram_type is array (32767 downto 0) of std_logic_vector (7 downto 0); + signal RAM : ram_type := (32767 downto 0 => X"ff"); + attribute RAM_STYLE : string; + attribute RAM_STYLE of RAM : signal is "BLOCK"; + +begin + + process (clk) + begin + if rising_edge(clk) then + if (we_UP = '1' and ce = '1') then + RAM(conv_integer(addr_uP(14 downto 0))) <= D_up; + end if; + Q_up <= RAM(conv_integer(addr_uP(14 downto 0))); + + end if; + end process; +end BEHAVIORAL; + + + diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd new file mode 100644 index 0000000..3563917 --- /dev/null +++ b/src/ROM/tuberom_pdp11.vhd @@ -0,0 +1,1057 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tuberom_pdp11 is + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(9 downto 0); + DATA : out std_logic_vector(15 downto 0) + ); +end; + +architecture RTL of tuberom_pdp11 is + + signal rom_addr : std_logic_vector(11 downto 0); + +begin + + p_addr : process(ADDR) + begin + rom_addr <= (others => '0'); + rom_addr(9 downto 0) <= ADDR; + end process; + + p_rom : process + begin + wait until rising_edge(CLK); + DATA <= (others => '0'); + case rom_addr is + when x"000" => DATA <= x"0077"; + when x"001" => DATA <= x"001a"; + when x"002" => DATA <= x"500a"; + when x"003" => DATA <= x"5044"; + when x"004" => DATA <= x"312d"; + when x"005" => DATA <= x"2031"; + when x"006" => DATA <= x"5554"; + when x"007" => DATA <= x"4542"; + when x"008" => DATA <= x"3620"; + when x"009" => DATA <= x"4b34"; + when x"00a" => DATA <= x"3020"; + when x"00b" => DATA <= x"312e"; + when x"00c" => DATA <= x"0a36"; + when x"00d" => DATA <= x"0d0a"; + when x"00e" => DATA <= x"0000"; + when x"00f" => DATA <= x"15c6"; + when x"010" => DATA <= x"f500"; + when x"011" => DATA <= x"09f7"; + when x"012" => DATA <= x"0562"; + when x"013" => DATA <= x"17df"; + when x"014" => DATA <= x"f5fc"; + when x"015" => DATA <= x"f5f8"; + when x"016" => DATA <= x"15c1"; + when x"017" => DATA <= x"f804"; + when x"018" => DATA <= x"09f7"; + when x"019" => DATA <= x"006a"; + when x"01a" => DATA <= x"09f7"; + when x"01b" => DATA <= x"0472"; + when x"01c" => DATA <= x"00a1"; + when x"01d" => DATA <= x"09f7"; + when x"01e" => DATA <= x"007c"; + when x"01f" => DATA <= x"15c6"; + when x"020" => DATA <= x"f500"; + when x"021" => DATA <= x"09f7"; + when x"022" => DATA <= x"0542"; + when x"023" => DATA <= x"15c1"; + when x"024" => DATA <= x"f862"; + when x"025" => DATA <= x"09f7"; + when x"026" => DATA <= x"0050"; + when x"027" => DATA <= x"15c1"; + when x"028" => DATA <= x"f86a"; + when x"029" => DATA <= x"09f7"; + when x"02a" => DATA <= x"01e6"; + when x"02b" => DATA <= x"870c"; + when x"02c" => DATA <= x"15c0"; -- was 15c1 MOV #CLIBUF,R1 -> MOV #CLIBUF,R0 + when x"02d" => DATA <= x"f520"; + when x"02e" => DATA <= x"09f7"; + when x"02f" => DATA <= x"0044"; + when x"030" => DATA <= x"01ee"; + when x"031" => DATA <= x"4450"; + when x"032" => DATA <= x"3150"; + when x"033" => DATA <= x"3e31"; + when x"034" => DATA <= x"002a"; + when x"035" => DATA <= x"f520"; + when x"036" => DATA <= x"20c0"; + when x"037" => DATA <= x"ffff"; + when x"038" => DATA <= x"15c0"; + when x"039" => DATA <= x"007e"; + when x"03a" => DATA <= x"09f7"; + when x"03b" => DATA <= x"013a"; + when x"03c" => DATA <= x"09f7"; + when x"03d" => DATA <= x"065c"; + when x"03e" => DATA <= x"4511"; + when x"03f" => DATA <= x"6373"; + when x"040" => DATA <= x"7061"; + when x"041" => DATA <= x"0065"; + when x"042" => DATA <= x"15c6"; + when x"043" => DATA <= x"f500"; + when x"044" => DATA <= x"1001"; + when x"045" => DATA <= x"0a81"; + when x"046" => DATA <= x"09f7"; + when x"047" => DATA <= x"000e"; + when x"048" => DATA <= x"01d6"; + when x"049" => DATA <= x"6000"; + when x"04a" => DATA <= x"901f"; + when x"04b" => DATA <= x"f5e6"; + when x"04c" => DATA <= x"0087"; + when x"04d" => DATA <= x"09f7"; + when x"04e" => DATA <= x"040c"; + when x"04f" => DATA <= x"9440"; + when x"050" => DATA <= x"02fc"; + when x"051" => DATA <= x"0087"; + when x"052" => DATA <= x"1066"; + when x"053" => DATA <= x"1026"; + when x"054" => DATA <= x"15c0"; + when x"055" => DATA <= x"0002"; + when x"056" => DATA <= x"09f7"; + when x"057" => DATA <= x"058e"; + when x"058" => DATA <= x"1581"; + when x"059" => DATA <= x"09f7"; + when x"05a" => DATA <= x"0558"; + when x"05b" => DATA <= x"1581"; + when x"05c" => DATA <= x"00b1"; + when x"05d" => DATA <= x"09f7"; + when x"05e" => DATA <= x"03b8"; + when x"05f" => DATA <= x"8102"; + when x"060" => DATA <= x"0a00"; + when x"061" => DATA <= x"0087"; + when x"062" => DATA <= x"17c1"; + when x"063" => DATA <= x"f5f8"; + when x"064" => DATA <= x"1066"; + when x"065" => DATA <= x"9c40"; + when x"066" => DATA <= x"0007"; + when x"067" => DATA <= x"45c0"; + when x"068" => DATA <= x"ff00"; + when x"069" => DATA <= x"6001"; + when x"06a" => DATA <= x"8bd1"; + when x"06b" => DATA <= x"0230"; + when x"06c" => DATA <= x"a457"; + when x"06d" => DATA <= x"0028"; + when x"06e" => DATA <= x"022d"; + when x"06f" => DATA <= x"a457"; + when x"070" => DATA <= x"0043"; + when x"071" => DATA <= x"022a"; + when x"072" => DATA <= x"a457"; + when x"073" => DATA <= x"0029"; + when x"074" => DATA <= x"0227"; + when x"075" => DATA <= x"1381"; + when x"076" => DATA <= x"9c40"; + when x"077" => DATA <= x"0006"; + when x"078" => DATA <= x"0bd7"; + when x"079" => DATA <= x"0040"; + when x"07a" => DATA <= x"0341"; + when x"07b" => DATA <= x"45c0"; + when x"07c" => DATA <= x"00f0"; + when x"07d" => DATA <= x"2017"; + when x"07e" => DATA <= x"0007"; + when x"07f" => DATA <= x"024a"; + when x"080" => DATA <= x"9c40"; + when x"081" => DATA <= x"0006"; + when x"082" => DATA <= x"0bd7"; + when x"083" => DATA <= x"0020"; + when x"084" => DATA <= x"0315"; + when x"085" => DATA <= x"9c40"; + when x"086" => DATA <= x"0007"; + when x"087" => DATA <= x"45c0"; + when x"088" => DATA <= x"ff00"; + when x"089" => DATA <= x"6001"; + when x"08a" => DATA <= x"0a81"; + when x"08b" => DATA <= x"8bd1"; + when x"08c" => DATA <= x"02fe"; + when x"08d" => DATA <= x"6057"; + when x"08e" => DATA <= x"0004"; + when x"08f" => DATA <= x"9440"; + when x"090" => DATA <= x"9241"; + when x"091" => DATA <= x"00c1"; + when x"092" => DATA <= x"45c0"; + when x"093" => DATA <= x"ff00"; + when x"094" => DATA <= x"45c1"; + when x"095" => DATA <= x"00ff"; + when x"096" => DATA <= x"5040"; + when x"097" => DATA <= x"1581"; + when x"098" => DATA <= x"6001"; + when x"099" => DATA <= x"1066"; + when x"09a" => DATA <= x"105f"; + when x"09b" => DATA <= x"f5fc"; + when x"09c" => DATA <= x"1581"; + when x"09d" => DATA <= x"1240"; + when x"09e" => DATA <= x"2017"; + when x"09f" => DATA <= x"0105"; + when x"0a0" => DATA <= x"871a"; + when x"0a1" => DATA <= x"2017"; + when x"0a2" => DATA <= x"0109"; + when x"0a3" => DATA <= x"8617"; + when x"0a4" => DATA <= x"1c42"; + when x"0a5" => DATA <= x"0002"; + when x"0a6" => DATA <= x"1c43"; + when x"0a7" => DATA <= x"0004"; + when x"0a8" => DATA <= x"60c2"; + when x"0a9" => DATA <= x"1c43"; + when x"0aa" => DATA <= x"0006"; + when x"0ab" => DATA <= x"0a00"; + when x"0ac" => DATA <= x"65c1"; + when x"0ad" => DATA <= x"0010"; + when x"0ae" => DATA <= x"1450"; + when x"0af" => DATA <= x"e097"; + when x"0b0" => DATA <= x"0002"; + when x"0b1" => DATA <= x"02fc"; + when x"0b2" => DATA <= x"0bc3"; + when x"0b3" => DATA <= x"0304"; + when x"0b4" => DATA <= x"0a10"; + when x"0b5" => DATA <= x"e0d7"; + when x"0b6" => DATA <= x"0002"; + when x"0b7" => DATA <= x"02fc"; + when x"0b8" => DATA <= x"0a01"; + when x"0b9" => DATA <= x"105f"; + when x"0ba" => DATA <= x"f5fc"; + when x"0bb" => DATA <= x"1047"; + when x"0bc" => DATA <= x"09f7"; + when x"0bd" => DATA <= x"055c"; + when x"0be" => DATA <= x"54f9"; + when x"0bf" => DATA <= x"6968"; + when x"0c0" => DATA <= x"2073"; + when x"0c1" => DATA <= x"7369"; + when x"0c2" => DATA <= x"6e20"; + when x"0c3" => DATA <= x"746f"; + when x"0c4" => DATA <= x"6120"; + when x"0c5" => DATA <= x"6c20"; + when x"0c6" => DATA <= x"6e61"; + when x"0c7" => DATA <= x"7567"; + when x"0c8" => DATA <= x"6761"; + when x"0c9" => DATA <= x"0065"; + when x"0ca" => DATA <= x"09f7"; + when x"0cb" => DATA <= x"0540"; + when x"0cc" => DATA <= x"54f9"; + when x"0cd" => DATA <= x"6968"; + when x"0ce" => DATA <= x"2073"; + when x"0cf" => DATA <= x"7369"; + when x"0d0" => DATA <= x"6e20"; + when x"0d1" => DATA <= x"746f"; + when x"0d2" => DATA <= x"5020"; + when x"0d3" => DATA <= x"5044"; + when x"0d4" => DATA <= x"312d"; + when x"0d5" => DATA <= x"2031"; + when x"0d6" => DATA <= x"6f63"; + when x"0d7" => DATA <= x"6564"; + when x"0d8" => DATA <= x"0000"; + when x"0d9" => DATA <= x"8bc0"; + when x"0da" => DATA <= x"810d"; + when x"0db" => DATA <= x"1026"; + when x"0dc" => DATA <= x"15c0"; + when x"0dd" => DATA <= x"0004"; + when x"0de" => DATA <= x"09f7"; + when x"0df" => DATA <= x"0478"; + when x"0e0" => DATA <= x"1380"; + when x"0e1" => DATA <= x"09f7"; + when x"0e2" => DATA <= x"0478"; + when x"0e3" => DATA <= x"09f7"; + when x"0e4" => DATA <= x"02ac"; + when x"0e5" => DATA <= x"1001"; + when x"0e6" => DATA <= x"1580"; + when x"0e7" => DATA <= x"0087"; + when x"0e8" => DATA <= x"2017"; + when x"0e9" => DATA <= x"0082"; + when x"0ea" => DATA <= x"0326"; + when x"0eb" => DATA <= x"2017"; + when x"0ec" => DATA <= x"0083"; + when x"0ed" => DATA <= x"0326"; + when x"0ee" => DATA <= x"2017"; + when x"0ef" => DATA <= x"0084"; + when x"0f0" => DATA <= x"0328"; + when x"0f1" => DATA <= x"1026"; + when x"0f2" => DATA <= x"15c0"; + when x"0f3" => DATA <= x"0006"; + when x"0f4" => DATA <= x"09f7"; + when x"0f5" => DATA <= x"044c"; + when x"0f6" => DATA <= x"1080"; + when x"0f7" => DATA <= x"09f7"; + when x"0f8" => DATA <= x"044c"; + when x"0f9" => DATA <= x"1580"; + when x"0fa" => DATA <= x"09f7"; + when x"0fb" => DATA <= x"0446"; + when x"0fc" => DATA <= x"2017"; + when x"0fd" => DATA <= x"009d"; + when x"0fe" => DATA <= x"030f"; + when x"0ff" => DATA <= x"2017"; + when x"100" => DATA <= x"008e"; + when x"101" => DATA <= x"030d"; + when x"102" => DATA <= x"1026"; + when x"103" => DATA <= x"09f7"; + when x"104" => DATA <= x"026c"; + when x"105" => DATA <= x"6017"; + when x"106" => DATA <= x"ff80"; + when x"107" => DATA <= x"09f7"; + when x"108" => DATA <= x"0264"; + when x"109" => DATA <= x"1002"; + when x"10a" => DATA <= x"09f7"; + when x"10b" => DATA <= x"025e"; + when x"10c" => DATA <= x"1001"; + when x"10d" => DATA <= x"1580"; + when x"10e" => DATA <= x"0087"; + when x"10f" => DATA <= x"0077"; + when x"110" => DATA <= x"fe98"; + when x"111" => DATA <= x"0a01"; + when x"112" => DATA <= x"0a02"; + when x"113" => DATA <= x"0087"; + when x"114" => DATA <= x"15c1"; + when x"115" => DATA <= x"0100"; + when x"116" => DATA <= x"15c2"; + when x"117" => DATA <= x"0001"; + when x"118" => DATA <= x"0087"; + when x"119" => DATA <= x"15c1"; + when x"11a" => DATA <= x"f500"; + when x"11b" => DATA <= x"15c2"; + when x"11c" => DATA <= x"00f5"; + when x"11d" => DATA <= x"0087"; + when x"11e" => DATA <= x"0bc0"; + when x"11f" => DATA <= x"034e"; + when x"120" => DATA <= x"10e6"; + when x"121" => DATA <= x"10a6"; + when x"122" => DATA <= x"1026"; + when x"123" => DATA <= x"15c0"; + when x"124" => DATA <= x"0008"; + when x"125" => DATA <= x"09f7"; + when x"126" => DATA <= x"03f0"; + when x"127" => DATA <= x"1380"; + when x"128" => DATA <= x"09f7"; + when x"129" => DATA <= x"03ea"; + when x"12a" => DATA <= x"8bc0"; + when x"12b" => DATA <= x"8004"; + when x"12c" => DATA <= x"9402"; + when x"12d" => DATA <= x"9203"; + when x"12e" => DATA <= x"0ac0"; + when x"12f" => DATA <= x"010c"; + when x"130" => DATA <= x"15c2"; + when x"131" => DATA <= x"0010"; + when x"132" => DATA <= x"15c3"; + when x"133" => DATA <= x"0010"; + when x"134" => DATA <= x"2017"; + when x"135" => DATA <= x"0015"; + when x"136" => DATA <= x"8605"; + when x"137" => DATA <= x"6000"; + when x"138" => DATA <= x"6dc0"; + when x"139" => DATA <= x"003e"; + when x"13a" => DATA <= x"9402"; + when x"13b" => DATA <= x"9403"; + when x"13c" => DATA <= x"1080"; + when x"13d" => DATA <= x"09f7"; + when x"13e" => DATA <= x"03c0"; + when x"13f" => DATA <= x"6081"; + when x"140" => DATA <= x"0ac2"; + when x"141" => DATA <= x"2097"; + when x"142" => DATA <= x"0080"; + when x"143" => DATA <= x"8605"; + when x"144" => DATA <= x"9840"; + when x"145" => DATA <= x"09f7"; + when x"146" => DATA <= x"03b0"; + when x"147" => DATA <= x"0ac2"; + when x"148" => DATA <= x"80fb"; + when x"149" => DATA <= x"10c0"; + when x"14a" => DATA <= x"09f7"; + when x"14b" => DATA <= x"03a6"; + when x"14c" => DATA <= x"60c1"; + when x"14d" => DATA <= x"0ac3"; + when x"14e" => DATA <= x"20d7"; + when x"14f" => DATA <= x"0080"; + when x"150" => DATA <= x"8605"; + when x"151" => DATA <= x"09f7"; + when x"152" => DATA <= x"01d0"; + when x"153" => DATA <= x"9021"; + when x"154" => DATA <= x"0ac3"; + when x"155" => DATA <= x"80fb"; + when x"156" => DATA <= x"1580"; + when x"157" => DATA <= x"1582"; + when x"158" => DATA <= x"1583"; + when x"159" => DATA <= x"0087"; + when x"15a" => DATA <= x"0500"; + when x"15b" => DATA <= x"0005"; + when x"15c" => DATA <= x"0500"; + when x"15d" => DATA <= x"0005"; + when x"15e" => DATA <= x"0504"; + when x"15f" => DATA <= x"0005"; + when x"160" => DATA <= x"0008"; + when x"161" => DATA <= x"000e"; + when x"162" => DATA <= x"0504"; + when x"163" => DATA <= x"0901"; + when x"164" => DATA <= x"0501"; + when x"165" => DATA <= x"0005"; + when x"166" => DATA <= x"0800"; + when x"167" => DATA <= x"1910"; + when x"168" => DATA <= x"0020"; + when x"169" => DATA <= x"0110"; + when x"16a" => DATA <= x"0d0d"; + when x"16b" => DATA <= x"8000"; + when x"16c" => DATA <= x"0808"; + when x"16d" => DATA <= x"8080"; + when x"16e" => DATA <= x"15c0"; + when x"16f" => DATA <= x"000a"; + when x"170" => DATA <= x"09f7"; + when x"171" => DATA <= x"035a"; + when x"172" => DATA <= x"65c1"; + when x"173" => DATA <= x"0002"; + when x"174" => DATA <= x"10a6"; + when x"175" => DATA <= x"15c2"; + when x"176" => DATA <= x"0003"; + when x"177" => DATA <= x"09f7"; + when x"178" => DATA <= x"032a"; + when x"179" => DATA <= x"1582"; + when x"17a" => DATA <= x"15c0"; + when x"17b" => DATA <= x"0007"; + when x"17c" => DATA <= x"09f7"; + when x"17d" => DATA <= x"0342"; + when x"17e" => DATA <= x"0a00"; + when x"17f" => DATA <= x"09f7"; + when x"180" => DATA <= x"033c"; + when x"181" => DATA <= x"09f7"; + when x"182" => DATA <= x"0170"; + when x"183" => DATA <= x"6017"; + when x"184" => DATA <= x"ff80"; + when x"185" => DATA <= x"870c"; + when x"186" => DATA <= x"e5c1"; + when x"187" => DATA <= x"0002"; + when x"188" => DATA <= x"1241"; -- was 1049 - MOV R1,(R1) => MOV (R1),R1 + when x"189" => DATA <= x"0a02"; + when x"18a" => DATA <= x"09f7"; + when x"18b" => DATA <= x"015e"; + when x"18c" => DATA <= x"9011"; + when x"18d" => DATA <= x"0a82"; + when x"18e" => DATA <= x"2017"; + when x"18f" => DATA <= x"000d"; + when x"190" => DATA <= x"02f8"; + when x"191" => DATA <= x"0ac2"; + when x"192" => DATA <= x"0087"; + when x"193" => DATA <= x"10a6"; + when x"194" => DATA <= x"1066"; + when x"195" => DATA <= x"1026"; + when x"196" => DATA <= x"15c0"; + when x"197" => DATA <= x"000c"; + when x"198" => DATA <= x"09f7"; + when x"199" => DATA <= x"0304"; + when x"19a" => DATA <= x"1081"; + when x"19b" => DATA <= x"15c2"; + when x"19c" => DATA <= x"0004"; + when x"19d" => DATA <= x"09f7"; + when x"19e" => DATA <= x"02de"; + when x"19f" => DATA <= x"1580"; + when x"1a0" => DATA <= x"09f7"; + when x"1a1" => DATA <= x"02fa"; + when x"1a2" => DATA <= x"09f7"; + when x"1a3" => DATA <= x"012e"; + when x"1a4" => DATA <= x"1026"; + when x"1a5" => DATA <= x"15c2"; + when x"1a6" => DATA <= x"0004"; + when x"1a7" => DATA <= x"09f7"; + when x"1a8" => DATA <= x"02d8"; + when x"1a9" => DATA <= x"1580"; + when x"1aa" => DATA <= x"1581"; + when x"1ab" => DATA <= x"1582"; + when x"1ac" => DATA <= x"0087"; + when x"1ad" => DATA <= x"1026"; + when x"1ae" => DATA <= x"15c0"; + when x"1af" => DATA <= x"0012"; + when x"1b0" => DATA <= x"09f7"; + when x"1b1" => DATA <= x"02da"; + when x"1b2" => DATA <= x"1580"; + when x"1b3" => DATA <= x"09f7"; + when x"1b4" => DATA <= x"02d4"; + when x"1b5" => DATA <= x"0bc0"; + when x"1b6" => DATA <= x"0206"; + when x"1b7" => DATA <= x"09f7"; + when x"1b8" => DATA <= x"02ca"; + when x"1b9" => DATA <= x"09f7"; + when x"1ba" => DATA <= x"0100"; + when x"1bb" => DATA <= x"0a00"; + when x"1bc" => DATA <= x"0087"; + when x"1bd" => DATA <= x"1066"; + when x"1be" => DATA <= x"09f7"; + when x"1bf" => DATA <= x"028e"; + when x"1c0" => DATA <= x"09f7"; + when x"1c1" => DATA <= x"00f2"; + when x"1c2" => DATA <= x"1581"; + when x"1c3" => DATA <= x"0087"; + when x"1c4" => DATA <= x"10a6"; + when x"1c5" => DATA <= x"1066"; + when x"1c6" => DATA <= x"1026"; + when x"1c7" => DATA <= x"15c0"; + when x"1c8" => DATA <= x"0014"; + when x"1c9" => DATA <= x"09f7"; + when x"1ca" => DATA <= x"02a8"; + when x"1cb" => DATA <= x"65c1"; + when x"1cc" => DATA <= x"0002"; + when x"1cd" => DATA <= x"15c2"; + when x"1ce" => DATA <= x"0010"; + when x"1cf" => DATA <= x"09f7"; + when x"1d0" => DATA <= x"027a"; + when x"1d1" => DATA <= x"e5c1"; + when x"1d2" => DATA <= x"0002"; + when x"1d3" => DATA <= x"1241"; + when x"1d4" => DATA <= x"09f7"; + when x"1d5" => DATA <= x"0262"; + when x"1d6" => DATA <= x"1580"; + when x"1d7" => DATA <= x"09f7"; + when x"1d8" => DATA <= x"028c"; + when x"1d9" => DATA <= x"09f7"; + when x"1da" => DATA <= x"00c0"; + when x"1db" => DATA <= x"1381"; + when x"1dc" => DATA <= x"1026"; + when x"1dd" => DATA <= x"65c1"; + when x"1de" => DATA <= x"0002"; + when x"1df" => DATA <= x"15c2"; + when x"1e0" => DATA <= x"0010"; + when x"1e1" => DATA <= x"09f7"; + when x"1e2" => DATA <= x"0264"; + when x"1e3" => DATA <= x"1580"; + when x"1e4" => DATA <= x"1581"; + when x"1e5" => DATA <= x"1582"; + when x"1e6" => DATA <= x"0087"; + when x"1e7" => DATA <= x"8bc9"; + when x"1e8" => DATA <= x"0205"; + when x"1e9" => DATA <= x"0bc0"; + when x"1ea" => DATA <= x"0303"; + when x"1eb" => DATA <= x"2017"; + when x"1ec" => DATA <= x"0005"; + when x"1ed" => DATA <= x"8713"; + when x"1ee" => DATA <= x"10a6"; + when x"1ef" => DATA <= x"1026"; + when x"1f0" => DATA <= x"15c0"; + when x"1f1" => DATA <= x"0016"; + when x"1f2" => DATA <= x"09f7"; + when x"1f3" => DATA <= x"0256"; + when x"1f4" => DATA <= x"15c2"; + when x"1f5" => DATA <= x"000d"; + when x"1f6" => DATA <= x"09f7"; + when x"1f7" => DATA <= x"022c"; + when x"1f8" => DATA <= x"1580"; + when x"1f9" => DATA <= x"09f7"; + when x"1fa" => DATA <= x"0248"; + when x"1fb" => DATA <= x"15c2"; + when x"1fc" => DATA <= x"000d"; + when x"1fd" => DATA <= x"09f7"; + when x"1fe" => DATA <= x"022c"; + when x"1ff" => DATA <= x"1582"; + when x"200" => DATA <= x"0136"; + when x"201" => DATA <= x"10a6"; + when x"202" => DATA <= x"1026"; + when x"203" => DATA <= x"9c40"; + when x"204" => DATA <= x"0001"; + when x"205" => DATA <= x"45c0"; + when x"206" => DATA <= x"ff00"; + when x"207" => DATA <= x"9c42"; + when x"208" => DATA <= x"0002"; + when x"209" => DATA <= x"45c2"; + when x"20a" => DATA <= x"ff00"; + when x"20b" => DATA <= x"00c2"; + when x"20c" => DATA <= x"5002"; + when x"20d" => DATA <= x"2397"; + when x"20e" => DATA <= x"0003"; + when x"20f" => DATA <= x"8604"; + when x"210" => DATA <= x"9480"; + when x"211" => DATA <= x"09f7"; + when x"212" => DATA <= x"0084"; + when x"213" => DATA <= x"0104"; + when x"214" => DATA <= x"09f7"; + when x"215" => DATA <= x"003c"; + when x"216" => DATA <= x"870d"; + when x"217" => DATA <= x"9012"; + when x"218" => DATA <= x"8bf1"; + when x"219" => DATA <= x"0005"; + when x"21a" => DATA <= x"0202"; + when x"21b" => DATA <= x"8af1"; + when x"21c" => DATA <= x"0006"; + when x"21d" => DATA <= x"8af1"; + when x"21e" => DATA <= x"0005"; + when x"21f" => DATA <= x"02ed"; + when x"220" => DATA <= x"8bf1"; + when x"221" => DATA <= x"0006"; + when x"222" => DATA <= x"02ea"; + when x"223" => DATA <= x"00a1"; + when x"224" => DATA <= x"90b1"; + when x"225" => DATA <= x"0001"; + when x"226" => DATA <= x"00c2"; + when x"227" => DATA <= x"90b1"; + when x"228" => DATA <= x"0002"; + when x"229" => DATA <= x"1580"; + when x"22a" => DATA <= x"1582"; + when x"22b" => DATA <= x"0a00"; + when x"22c" => DATA <= x"0087"; + when x"22d" => DATA <= x"0bc1"; + when x"22e" => DATA <= x"0305"; + when x"22f" => DATA <= x"15c0"; + when x"230" => DATA <= x"000e"; + when x"231" => DATA <= x"09f7"; + when x"232" => DATA <= x"01d2"; + when x"233" => DATA <= x"0103"; + when x"234" => DATA <= x"0a00"; + when x"235" => DATA <= x"09f7"; + when x"236" => DATA <= x"01d0"; + when x"237" => DATA <= x"09f7"; + when x"238" => DATA <= x"0004"; + when x"239" => DATA <= x"65c0"; + when x"23a" => DATA <= x"ff80"; + when x"23b" => DATA <= x"97c0"; + when x"23c" => DATA <= x"fff4"; + when x"23d" => DATA <= x"80fd"; + when x"23e" => DATA <= x"97c0"; + when x"23f" => DATA <= x"fff6"; + when x"240" => DATA <= x"0087"; + when x"241" => DATA <= x"0bc1"; + when x"242" => DATA <= x"0312"; + when x"243" => DATA <= x"1026"; + when x"244" => DATA <= x"15c0"; + when x"245" => DATA <= x"0010"; + when x"246" => DATA <= x"09f7"; + when x"247" => DATA <= x"01a8"; + when x"248" => DATA <= x"1380"; + when x"249" => DATA <= x"09f7"; + when x"24a" => DATA <= x"01a8"; + when x"24b" => DATA <= x"09f7"; + when x"24c" => DATA <= x"ffdc"; + when x"24d" => DATA <= x"1580"; + when x"24e" => DATA <= x"0087"; + when x"24f" => DATA <= x"15c0"; + when x"250" => DATA <= x"000a"; + when x"251" => DATA <= x"09f7"; + when x"252" => DATA <= x"0004"; + when x"253" => DATA <= x"15c0"; + when x"254" => DATA <= x"000d"; + when x"255" => DATA <= x"1026"; + when x"256" => DATA <= x"97c0"; + when x"257" => DATA <= x"fff0"; + when x"258" => DATA <= x"45c0"; + when x"259" => DATA <= x"00bf"; + when x"25a" => DATA <= x"03fb"; + when x"25b" => DATA <= x"1580"; + when x"25c" => DATA <= x"901f"; + when x"25d" => DATA <= x"fff2"; + when x"25e" => DATA <= x"0087"; + when x"25f" => DATA <= x"45f6"; + when x"260" => DATA <= x"fff0"; + when x"261" => DATA <= x"0002"; + when x"262" => DATA <= x"17e6"; + when x"263" => DATA <= x"f5e8"; + when x"264" => DATA <= x"17e6"; + when x"265" => DATA <= x"f5f4"; + when x"266" => DATA <= x"119f"; + when x"267" => DATA <= x"f5f4"; + when x"268" => DATA <= x"15df"; + when x"269" => DATA <= x"fd08"; + when x"26a" => DATA <= x"f5e8"; + when x"26b" => DATA <= x"1026"; + when x"26c" => DATA <= x"1026"; + when x"26d" => DATA <= x"1d80"; + when x"26e" => DATA <= x"0008"; + when x"26f" => DATA <= x"1c00"; + when x"270" => DATA <= x"fffe"; + when x"271" => DATA <= x"45c0"; + when x"272" => DATA <= x"ff00"; + when x"273" => DATA <= x"6000"; + when x"274" => DATA <= x"6fc0"; + when x"275" => DATA <= x"f90a"; + when x"276" => DATA <= x"1236"; + when x"277" => DATA <= x"0002"; + when x"278" => DATA <= x"1580"; + when x"279" => DATA <= x"09d6"; + when x"27a" => DATA <= x"8509"; + when x"27b" => DATA <= x"8603"; + when x"27c" => DATA <= x"55f6"; + when x"27d" => DATA <= x"0001"; + when x"27e" => DATA <= x"0006"; + when x"27f" => DATA <= x"159f"; + when x"280" => DATA <= x"f5f4"; + when x"281" => DATA <= x"159f"; + when x"282" => DATA <= x"f5e8"; + when x"283" => DATA <= x"0002"; + when x"284" => DATA <= x"17c6"; + when x"285" => DATA <= x"f5f4"; + when x"286" => DATA <= x"55f6"; + when x"287" => DATA <= x"0002"; + when x"288" => DATA <= x"0006"; + when x"289" => DATA <= x"01f5"; + when x"28a" => DATA <= x"0bd6"; + when x"28b" => DATA <= x"159f"; + when x"28c" => DATA <= x"f5f4"; + when x"28d" => DATA <= x"159f"; + when x"28e" => DATA <= x"f5e8"; + when x"28f" => DATA <= x"1380"; + when x"290" => DATA <= x"17ce"; + when x"291" => DATA <= x"f5e8"; + when x"292" => DATA <= x"0002"; + when x"293" => DATA <= x"0bd6"; + when x"294" => DATA <= x"159f"; + when x"295" => DATA <= x"f5f4"; + when x"296" => DATA <= x"159f"; + when x"297" => DATA <= x"f5e8"; + when x"298" => DATA <= x"1026"; + when x"299" => DATA <= x"810d"; + when x"29a" => DATA <= x"2017"; + when x"29b" => DATA <= x"0100"; + when x"29c" => DATA <= x"8608"; + when x"29d" => DATA <= x"6000"; + when x"29e" => DATA <= x"67c0"; + when x"29f" => DATA <= x"f5f6"; + when x"2a0" => DATA <= x"1226"; + when x"2a1" => DATA <= x"0bc1"; + when x"2a2" => DATA <= x"0301"; + when x"2a3" => DATA <= x"1048"; + when x"2a4" => DATA <= x"1581"; + when x"2a5" => DATA <= x"1580"; + when x"2a6" => DATA <= x"0002"; + when x"2a7" => DATA <= x"0a40"; + when x"2a8" => DATA <= x"2017"; + when x"2a9" => DATA <= x"0006"; + when x"2aa" => DATA <= x"86fa"; + when x"2ab" => DATA <= x"6000"; + when x"2ac" => DATA <= x"6000"; + when x"2ad" => DATA <= x"65c0"; + when x"2ae" => DATA <= x"f5e0"; + when x"2af" => DATA <= x"1226"; + when x"2b0" => DATA <= x"0bc1"; + when x"2b1" => DATA <= x"0301"; + when x"2b2" => DATA <= x"1050"; + when x"2b3" => DATA <= x"1226"; + when x"2b4" => DATA <= x"0bc2"; + when x"2b5" => DATA <= x"0301"; + when x"2b6" => DATA <= x"1088"; + when x"2b7" => DATA <= x"1582"; + when x"2b8" => DATA <= x"1581"; + when x"2b9" => DATA <= x"1580"; + when x"2ba" => DATA <= x"0002"; + when x"2bb" => DATA <= x"2017"; + when x"2bc" => DATA <= x"0001"; + when x"2bd" => DATA <= x"0306"; + when x"2be" => DATA <= x"2017"; + when x"2bf" => DATA <= x"0002"; + when x"2c0" => DATA <= x"0312"; + when x"2c1" => DATA <= x"0087"; + when x"2c2" => DATA <= x"005f"; + when x"2c3" => DATA <= x"f5e0"; + when x"2c4" => DATA <= x"15df"; + when x"2c5" => DATA <= x"fcbe"; + when x"2c6" => DATA <= x"0004"; + when x"2c7" => DATA <= x"0a1f"; + when x"2c8" => DATA <= x"0006"; + when x"2c9" => DATA <= x"15df"; + when x"2ca" => DATA <= x"ffba"; + when x"2cb" => DATA <= x"0084"; + when x"2cc" => DATA <= x"0a1f"; + when x"2cd" => DATA <= x"0086"; + when x"2ce" => DATA <= x"15df"; + when x"2cf" => DATA <= x"fe6a"; + when x"2d0" => DATA <= x"0080"; + when x"2d1" => DATA <= x"0a1f"; + when x"2d2" => DATA <= x"0082"; + when x"2d3" => DATA <= x"15c0"; + when x"2d4" => DATA <= x"fdcc"; + when x"2d5" => DATA <= x"15c1"; + when x"2d6" => DATA <= x"f5e0"; + when x"2d7" => DATA <= x"15c2"; + when x"2d8" => DATA <= x"0040"; + when x"2d9" => DATA <= x"17e6"; + when x"2da" => DATA <= x"f5fc"; + when x"2db" => DATA <= x"1411"; + when x"2dc" => DATA <= x"0ac2"; + when x"2dd" => DATA <= x"02fd"; + when x"2de" => DATA <= x"159f"; + when x"2df" => DATA <= x"f5fc"; + when x"2e0" => DATA <= x"15c2"; + when x"2e1" => DATA <= x"00e0"; + when x"2e2" => DATA <= x"1211"; + when x"2e3" => DATA <= x"0ac2"; + when x"2e4" => DATA <= x"02fd"; + when x"2e5" => DATA <= x"0087"; + when x"2e6" => DATA <= x"f83e"; + when x"2e7" => DATA <= x"0000"; + when x"2e8" => DATA <= x"f892"; + when x"2e9" => DATA <= x"f5ff"; + when x"2ea" => DATA <= x"f884"; + when x"2eb" => DATA <= x"f500"; + when x"2ec" => DATA <= x"fd82"; + when x"2ed" => DATA <= x"0000"; + when x"2ee" => DATA <= x"fea2"; + when x"2ef" => DATA <= x"0000"; + when x"2f0" => DATA <= x"0000"; + when x"2f1" => DATA <= x"f600"; + when x"2f2" => DATA <= x"0000"; + when x"2f3" => DATA <= x"0000"; + when x"2f4" => DATA <= x"f81e"; + when x"2f5" => DATA <= x"0000"; + when x"2f6" => DATA <= x"fd84"; + when x"2f7" => DATA <= x"f8a4"; + when x"2f8" => DATA <= x"f9b2"; + when x"2f9" => DATA <= x"fa3c"; + when x"2fa" => DATA <= x"fcaa"; + when x"2fb" => DATA <= x"fc9e"; + when x"2fc" => DATA <= x"fc68"; + when x"2fd" => DATA <= x"fb88"; + when x"2fe" => DATA <= x"fb26"; + when x"2ff" => DATA <= x"fc5a"; + when x"300" => DATA <= x"fc82"; + when x"301" => DATA <= x"fbce"; + when x"302" => DATA <= x"fb5a"; + when x"303" => DATA <= x"fd76"; + when x"304" => DATA <= x"fd26"; + when x"305" => DATA <= x"fd14"; + when x"306" => DATA <= x"fd82"; + when x"307" => DATA <= x"9440"; + when x"308" => DATA <= x"09f7"; + when x"309" => DATA <= x"002a"; + when x"30a" => DATA <= x"2017"; + when x"30b" => DATA <= x"000d"; + when x"30c" => DATA <= x"02fa"; + when x"30d" => DATA <= x"0087"; + when x"30e" => DATA <= x"6081"; + when x"30f" => DATA <= x"9840"; + when x"310" => DATA <= x"09f7"; + when x"311" => DATA <= x"001a"; + when x"312" => DATA <= x"0ac2"; + when x"313" => DATA <= x"02fb"; + when x"314" => DATA <= x"0087"; + when x"315" => DATA <= x"6081"; + when x"316" => DATA <= x"09f7"; + when x"317" => DATA <= x"fe46"; + when x"318" => DATA <= x"9021"; + when x"319" => DATA <= x"0ac2"; + when x"31a" => DATA <= x"02fb"; + when x"31b" => DATA <= x"0087"; + when x"31c" => DATA <= x"09f7"; + when x"31d" => DATA <= x"0002"; + when x"31e" => DATA <= x"1040"; + when x"31f" => DATA <= x"1026"; + when x"320" => DATA <= x"97c0"; + when x"321" => DATA <= x"fff4"; + when x"322" => DATA <= x"45c0"; + when x"323" => DATA <= x"00bf"; + when x"324" => DATA <= x"03fb"; + when x"325" => DATA <= x"1580"; + when x"326" => DATA <= x"901f"; + when x"327" => DATA <= x"fff6"; + when x"328" => DATA <= x"0087"; + when x"329" => DATA <= x"97c0"; + when x"32a" => DATA <= x"fff0"; + when x"32b" => DATA <= x"80fd"; + when x"32c" => DATA <= x"97c0"; + when x"32d" => DATA <= x"fff2"; + when x"32e" => DATA <= x"0087"; + when x"32f" => DATA <= x"97c0"; + when x"330" => DATA <= x"fffc"; + when x"331" => DATA <= x"80fd"; + when x"332" => DATA <= x"97c0"; + when x"333" => DATA <= x"fffe"; + when x"334" => DATA <= x"0087"; + when x"335" => DATA <= x"1026"; + when x"336" => DATA <= x"97c0"; + when x"337" => DATA <= x"fffc"; + when x"338" => DATA <= x"811d"; + when x"339" => DATA <= x"97c0"; + when x"33a" => DATA <= x"fff0"; + when x"33b" => DATA <= x"8103"; + when x"33c" => DATA <= x"1580"; + when x"33d" => DATA <= x"005f"; + when x"33e" => DATA <= x"f5f0"; + when x"33f" => DATA <= x"97c0"; + when x"340" => DATA <= x"fff2"; + when x"341" => DATA <= x"8110"; + when x"342" => DATA <= x"1066"; + when x"343" => DATA <= x"10a6"; + when x"344" => DATA <= x"09f7"; + when x"345" => DATA <= x"ffc6"; + when x"346" => DATA <= x"1002"; + when x"347" => DATA <= x"09f7"; + when x"348" => DATA <= x"ffc0"; + when x"349" => DATA <= x"1001"; + when x"34a" => DATA <= x"09f7"; + when x"34b" => DATA <= x"ffba"; + when x"34c" => DATA <= x"09df"; + when x"34d" => DATA <= x"f5ec"; + when x"34e" => DATA <= x"1582"; + when x"34f" => DATA <= x"1581"; + when x"350" => DATA <= x"1580"; + when x"351" => DATA <= x"0002"; + when x"352" => DATA <= x"09df"; + when x"353" => DATA <= x"f5e4"; + when x"354" => DATA <= x"1580"; + when x"355" => DATA <= x"0002"; + when x"356" => DATA <= x"97c0"; + when x"357" => DATA <= x"fffe"; + when x"358" => DATA <= x"8016"; + when x"359" => DATA <= x"1066"; + when x"35a" => DATA <= x"09f7"; + when x"35b" => DATA <= x"fdbe"; + when x"35c" => DATA <= x"17c1"; + when x"35d" => DATA <= x"f5ea"; + when x"35e" => DATA <= x"09f7"; + when x"35f" => DATA <= x"fdb6"; + when x"360" => DATA <= x"9011"; + when x"361" => DATA <= x"09f7"; + when x"362" => DATA <= x"fdb0"; + when x"363" => DATA <= x"1011"; + when x"364" => DATA <= x"02fc"; + when x"365" => DATA <= x"1581"; + when x"366" => DATA <= x"1580"; + when x"367" => DATA <= x"17c0"; + when x"368" => DATA <= x"f5ea"; + when x"369" => DATA <= x"17ce"; + when x"36a" => DATA <= x"f5e8"; + when x"36b" => DATA <= x"0002"; + when x"36c" => DATA <= x"1580"; + when x"36d" => DATA <= x"005f"; + when x"36e" => DATA <= x"f5e8"; + when x"36f" => DATA <= x"1026"; + when x"370" => DATA <= x"09f7"; + when x"371" => DATA <= x"ff7a"; + when x"372" => DATA <= x"1380"; + when x"373" => DATA <= x"2017"; + when x"374" => DATA <= x"0005"; + when x"375" => DATA <= x"0331"; + when x"376" => DATA <= x"09f7"; + when x"377" => DATA <= x"ff6e"; + when x"378" => DATA <= x"103f"; + when x"379" => DATA <= x"f707"; + when x"37a" => DATA <= x"09f7"; + when x"37b" => DATA <= x"ff66"; + when x"37c" => DATA <= x"103f"; + when x"37d" => DATA <= x"f6fe"; + when x"37e" => DATA <= x"09f7"; + when x"37f" => DATA <= x"ff5e"; + when x"380" => DATA <= x"103f"; + when x"381" => DATA <= x"f6f5"; + when x"382" => DATA <= x"09f7"; + when x"383" => DATA <= x"ff56"; + when x"384" => DATA <= x"103f"; + when x"385" => DATA <= x"f6ec"; + when x"386" => DATA <= x"97c0"; + when x"387" => DATA <= x"fffa"; + when x"388" => DATA <= x"97c0"; + when x"389" => DATA <= x"fffa"; + when x"38a" => DATA <= x"09f7"; + when x"38b" => DATA <= x"ff46"; + when x"38c" => DATA <= x"1580"; + when x"38d" => DATA <= x"6000"; + when x"38e" => DATA <= x"1c1f"; + when x"38f" => DATA <= x"ffc0"; + when x"390" => DATA <= x"0084"; + when x"391" => DATA <= x"1066"; + when x"392" => DATA <= x"15c1"; + when x"393" => DATA <= x"0100"; + when x"394" => DATA <= x"2017"; + when x"395" => DATA <= x"000c"; + when x"396" => DATA <= x"870f"; + when x"397" => DATA <= x"0211"; + when x"398" => DATA <= x"17c0"; + when x"399" => DATA <= x"f5f8"; + when x"39a" => DATA <= x"8bff"; + when x"39b" => DATA <= x"00c0"; + when x"39c" => DATA <= x"80fd"; + when x"39d" => DATA <= x"941f"; + when x"39e" => DATA <= x"fffa"; + when x"39f" => DATA <= x"0ac1"; + when x"3a0" => DATA <= x"02f9"; + when x"3a1" => DATA <= x"8bdf"; + when x"3a2" => DATA <= x"fff8"; + when x"3a3" => DATA <= x"80fd"; + when x"3a4" => DATA <= x"0a1f"; + when x"3a5" => DATA <= x"fffa"; + when x"3a6" => DATA <= x"1581"; + when x"3a7" => DATA <= x"1580"; + when x"3a8" => DATA <= x"0002"; + when x"3a9" => DATA <= x"17c0"; + when x"3aa" => DATA <= x"f5f8"; + when x"3ab" => DATA <= x"8bdf"; + when x"3ac" => DATA <= x"fff8"; + when x"3ad" => DATA <= x"80fd"; + when x"3ae" => DATA <= x"97d0"; + when x"3af" => DATA <= x"fffa"; + when x"3b0" => DATA <= x"0ac1"; + when x"3b1" => DATA <= x"02f9"; + when x"3b2" => DATA <= x"1581"; + when x"3b3" => DATA <= x"1580"; + when x"3b4" => DATA <= x"0002"; + when x"3b5" => DATA <= x"1026"; + when x"3b6" => DATA <= x"17c0"; + when x"3b7" => DATA <= x"f5f8"; + when x"3b8" => DATA <= x"941f"; + when x"3b9" => DATA <= x"fffa"; + when x"3ba" => DATA <= x"101f"; + when x"3bb" => DATA <= x"f5f8"; + when x"3bc" => DATA <= x"1580"; + when x"3bd" => DATA <= x"0002"; + when x"3be" => DATA <= x"1026"; + when x"3bf" => DATA <= x"17c0"; + when x"3c0" => DATA <= x"f5f8"; + when x"3c1" => DATA <= x"97d0"; + when x"3c2" => DATA <= x"fffa"; + when x"3c3" => DATA <= x"101f"; + when x"3c4" => DATA <= x"f5f8"; + when x"3c5" => DATA <= x"1580"; + when x"3c6" => DATA <= x"0002"; + when x"3c7" => DATA <= x"1026"; + when x"3c8" => DATA <= x"17c0"; + when x"3c9" => DATA <= x"f5f8"; + when x"3ca" => DATA <= x"941f"; + when x"3cb" => DATA <= x"fffa"; + when x"3cc" => DATA <= x"941f"; + when x"3cd" => DATA <= x"fffa"; + when x"3ce" => DATA <= x"101f"; + when x"3cf" => DATA <= x"f5f8"; + when x"3d0" => DATA <= x"1580"; + when x"3d1" => DATA <= x"0002"; + when x"3d2" => DATA <= x"1026"; + when x"3d3" => DATA <= x"17c0"; + when x"3d4" => DATA <= x"f5f8"; + when x"3d5" => DATA <= x"97d0"; + when x"3d6" => DATA <= x"fffa"; + when x"3d7" => DATA <= x"97d0"; + when x"3d8" => DATA <= x"fffa"; + when x"3d9" => DATA <= x"101f"; + when x"3da" => DATA <= x"f5f8"; + when x"3db" => DATA <= x"1580"; + when x"3dc" => DATA <= x"0002"; + when x"3dd" => DATA <= x"8a1f"; + when x"3de" => DATA <= x"fffa"; + when x"3df" => DATA <= x"0002"; + when x"3e0" => DATA <= x"ff6a"; + when x"3e1" => DATA <= x"ff7c"; + when x"3e2" => DATA <= x"ff8e"; + when x"3e3" => DATA <= x"ffa4"; + when x"3e4" => DATA <= x"ffba"; + when x"3e5" => DATA <= x"ffba"; + when x"3e6" => DATA <= x"ffba"; + when x"3e7" => DATA <= x"ffba"; + when x"3e8" => DATA <= x"0000"; + when x"3e9" => DATA <= x"0000"; + when x"3ea" => DATA <= x"0000"; + when x"3eb" => DATA <= x"0000"; + when x"3ec" => DATA <= x"0000"; + when x"3ed" => DATA <= x"0000"; + when x"3ee" => DATA <= x"0000"; + when x"3ef" => DATA <= x"0000"; + when x"3f0" => DATA <= x"0000"; + when x"3f1" => DATA <= x"0000"; + when x"3f2" => DATA <= x"0000"; + when x"3f3" => DATA <= x"0000"; + when x"3f4" => DATA <= x"0000"; + when x"3f5" => DATA <= x"0000"; + when x"3f6" => DATA <= x"0000"; + when x"3f7" => DATA <= x"0000"; + when x"3f8" => DATA <= x"0000"; + when x"3f9" => DATA <= x"0000"; + when x"3fa" => DATA <= x"0000"; + when x"3fb" => DATA <= x"0000"; + when x"3fc" => DATA <= x"0000"; + when x"3fd" => DATA <= x"0000"; + when x"3fe" => DATA <= x"0000"; + when x"3ff" => DATA <= x"0000"; + when others => DATA <= (others => '0'); + end case; + end process; +end RTL; From 2327d4d94dcb1f78974b7efc07fe3b5c4af47f80 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 9 Aug 2015 22:15:13 +0100 Subject: [PATCH 22/61] Updated to PDP11 Client to v18 with some patches; now *SAVE works Change-Id: Ia44da4f1e8a1c1336f67487cb50c6a4bb99acea8 --- src/LX9Co_CoProPDP11.vhd | 36 +- src/ROM/tuberom_pdp11.vhd | 1834 ++++++++++++++++++------------------- 2 files changed, 939 insertions(+), 931 deletions(-) diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index 423849a..f66f6b6 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -122,10 +122,10 @@ begin iwait => open, -- if '1', the cpu is waiting for an interrupt br7 => cpu_NMI_req, -- interrupt request, 7 bg7 => cpu_NMI_ack, -- interrupt grant, 7 - int_vector7 => "0" & x"84", -- interrupt vector, 7 + int_vector7 => "0" & x"80", -- interrupt vector, 7 br6 => cpu_IRQ_req, -- interrupt request, 6 bg6 => cpu_IRQ_ack, -- interrupt grant, 6 - int_vector6 => "0" & x"80", -- interrupt vector, 6 + int_vector6 => "0" & x"84", -- interrupt vector, 6 br5 => '0', -- interrupt request, 5 bg5 => open, -- interrupt grant, 5 int_vector5 => (others => '0'), -- interrupt vector, 5 @@ -234,19 +234,27 @@ begin -------------------------------------------------------- -- test signals -------------------------------------------------------- --- test(8) <= '1' when ifetch = '1' and cpu_addr = x"f800" else '0'; --- test(7) <= '1' when ifetch = '1' and cpu_addr = x"F81E" else '0'; --- test(8) <= cpu_IRQ_sync; --- test(7) <= cpu_NMI_sync; - test(8) <= '1' when ifetch = '1' and cpu_addr = x"F83E" else '0'; - test(7) <= '1' when ifetch = '1' and cpu_addr = x"F84E" else '0'; - test(6) <= '1' when ifetch = '1' and cpu_addr = x"F858" else '0'; - test(5) <= '1' when ifetch = '1' and cpu_addr = x"FB12" else '0'; - test(4) <= '1' when ifetch = '1' and cpu_addr = x"FE0E" else '0'; - test(3) <= cpu_IRQ_req; - test(2) <= '1' when ifetch = '1' and cpu_addr = x"FE6A" else '0'; - test(1) <= '1' when ifetch = '1' and cpu_addr = x"F892" else '0'; + + test(8) <= cpu_wr; + test(7) <= cpu_dw8; + test(6) <= '1' when cpu_addr(15 downto 4) = x"f5f" else '0'; + test(5) <= '1' when cpu_addr(15 downto 8) = x"f5" else '0'; + +-- test(8) <= '1' when cpu_wr = '1' and cpu_addr = x"f5fb" else '0'; +-- test(7) <= '1' when cpu_wr = '1' and cpu_addr = x"f5fa" else '0'; +-- test(6) <= '1' when cpu_wr = '1' and cpu_addr = x"f5f9" else '0'; +-- test(5) <= '1' when cpu_wr = '1' and cpu_addr = x"f5f8" else '0'; +-- test(8) <= '1' when ifetch = '1' and cpu_addr = x"ff72" else '0'; +-- test(7) <= '1' when ifetch = '1' and cpu_addr = x"ff82" else '0'; +-- test(6) <= '1' when ifetch = '1' and cpu_addr = x"ff84" else '0'; +-- test(5) <= '1' when ifetch = '1' and cpu_addr = x"ff94" else '0'; + test(4) <= cpu_IRQ_req; + test(3) <= cpu_NMI_req; + test(2) <= '1' when ifetch = '1' and (cpu_addr = x"ff84" or cpu_addr = x"ff72") else '0'; + test(1) <= '1' when ifetch = '1' and cpu_addr = x"fef4" else '0'; + +-- -------------------------------------------------------- -- clock enable generator -------------------------------------------------------- diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 3563917..1c618ef 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -39,42 +39,42 @@ begin when x"009" => DATA <= x"4b34"; when x"00a" => DATA <= x"3020"; when x"00b" => DATA <= x"312e"; - when x"00c" => DATA <= x"0a36"; + when x"00c" => DATA <= x"0a38"; when x"00d" => DATA <= x"0d0a"; when x"00e" => DATA <= x"0000"; when x"00f" => DATA <= x"15c6"; when x"010" => DATA <= x"f500"; when x"011" => DATA <= x"09f7"; - when x"012" => DATA <= x"0562"; + when x"012" => DATA <= x"0566"; when x"013" => DATA <= x"17df"; when x"014" => DATA <= x"f5fc"; when x"015" => DATA <= x"f5f8"; when x"016" => DATA <= x"15c1"; when x"017" => DATA <= x"f804"; when x"018" => DATA <= x"09f7"; - when x"019" => DATA <= x"006a"; + when x"019" => DATA <= x"0084"; when x"01a" => DATA <= x"09f7"; - when x"01b" => DATA <= x"0472"; + when x"01b" => DATA <= x"0476"; when x"01c" => DATA <= x"00a1"; when x"01d" => DATA <= x"09f7"; - when x"01e" => DATA <= x"007c"; + when x"01e" => DATA <= x"0096"; when x"01f" => DATA <= x"15c6"; when x"020" => DATA <= x"f500"; when x"021" => DATA <= x"09f7"; - when x"022" => DATA <= x"0542"; + when x"022" => DATA <= x"0546"; when x"023" => DATA <= x"15c1"; when x"024" => DATA <= x"f862"; when x"025" => DATA <= x"09f7"; - when x"026" => DATA <= x"0050"; + when x"026" => DATA <= x"006a"; when x"027" => DATA <= x"15c1"; when x"028" => DATA <= x"f86a"; when x"029" => DATA <= x"09f7"; - when x"02a" => DATA <= x"01e6"; + when x"02a" => DATA <= x"01fa"; when x"02b" => DATA <= x"870c"; - when x"02c" => DATA <= x"15c0"; -- was 15c1 MOV #CLIBUF,R1 -> MOV #CLIBUF,R0 + when x"02c" => DATA <= x"15c0"; when x"02d" => DATA <= x"f520"; when x"02e" => DATA <= x"09f7"; - when x"02f" => DATA <= x"0044"; + when x"02f" => DATA <= x"005e"; when x"030" => DATA <= x"01ee"; when x"031" => DATA <= x"4450"; when x"032" => DATA <= x"3150"; @@ -86,9 +86,9 @@ begin when x"038" => DATA <= x"15c0"; when x"039" => DATA <= x"007e"; when x"03a" => DATA <= x"09f7"; - when x"03b" => DATA <= x"013a"; + when x"03b" => DATA <= x"014e"; when x"03c" => DATA <= x"09f7"; - when x"03d" => DATA <= x"065c"; + when x"03d" => DATA <= x"0664"; when x"03e" => DATA <= x"4511"; when x"03f" => DATA <= x"6373"; when x"040" => DATA <= x"7061"; @@ -98,939 +98,939 @@ begin when x"044" => DATA <= x"1001"; when x"045" => DATA <= x"0a81"; when x"046" => DATA <= x"09f7"; - when x"047" => DATA <= x"000e"; - when x"048" => DATA <= x"01d6"; - when x"049" => DATA <= x"6000"; - when x"04a" => DATA <= x"901f"; - when x"04b" => DATA <= x"f5e6"; - when x"04c" => DATA <= x"0087"; - when x"04d" => DATA <= x"09f7"; - when x"04e" => DATA <= x"040c"; - when x"04f" => DATA <= x"9440"; - when x"050" => DATA <= x"02fc"; - when x"051" => DATA <= x"0087"; - when x"052" => DATA <= x"1066"; - when x"053" => DATA <= x"1026"; - when x"054" => DATA <= x"15c0"; - when x"055" => DATA <= x"0002"; - when x"056" => DATA <= x"09f7"; - when x"057" => DATA <= x"058e"; - when x"058" => DATA <= x"1581"; - when x"059" => DATA <= x"09f7"; - when x"05a" => DATA <= x"0558"; - when x"05b" => DATA <= x"1581"; - when x"05c" => DATA <= x"00b1"; - when x"05d" => DATA <= x"09f7"; - when x"05e" => DATA <= x"03b8"; - when x"05f" => DATA <= x"8102"; - when x"060" => DATA <= x"0a00"; - when x"061" => DATA <= x"0087"; - when x"062" => DATA <= x"17c1"; - when x"063" => DATA <= x"f5f8"; - when x"064" => DATA <= x"1066"; - when x"065" => DATA <= x"9c40"; - when x"066" => DATA <= x"0007"; - when x"067" => DATA <= x"45c0"; - when x"068" => DATA <= x"ff00"; - when x"069" => DATA <= x"6001"; - when x"06a" => DATA <= x"8bd1"; - when x"06b" => DATA <= x"0230"; - when x"06c" => DATA <= x"a457"; - when x"06d" => DATA <= x"0028"; - when x"06e" => DATA <= x"022d"; - when x"06f" => DATA <= x"a457"; - when x"070" => DATA <= x"0043"; - when x"071" => DATA <= x"022a"; - when x"072" => DATA <= x"a457"; - when x"073" => DATA <= x"0029"; - when x"074" => DATA <= x"0227"; - when x"075" => DATA <= x"1381"; - when x"076" => DATA <= x"9c40"; - when x"077" => DATA <= x"0006"; - when x"078" => DATA <= x"0bd7"; - when x"079" => DATA <= x"0040"; - when x"07a" => DATA <= x"0341"; - when x"07b" => DATA <= x"45c0"; - when x"07c" => DATA <= x"00f0"; - when x"07d" => DATA <= x"2017"; - when x"07e" => DATA <= x"0007"; - when x"07f" => DATA <= x"024a"; - when x"080" => DATA <= x"9c40"; - when x"081" => DATA <= x"0006"; - when x"082" => DATA <= x"0bd7"; - when x"083" => DATA <= x"0020"; - when x"084" => DATA <= x"0315"; - when x"085" => DATA <= x"9c40"; - when x"086" => DATA <= x"0007"; - when x"087" => DATA <= x"45c0"; - when x"088" => DATA <= x"ff00"; - when x"089" => DATA <= x"6001"; - when x"08a" => DATA <= x"0a81"; - when x"08b" => DATA <= x"8bd1"; - when x"08c" => DATA <= x"02fe"; - when x"08d" => DATA <= x"6057"; - when x"08e" => DATA <= x"0004"; - when x"08f" => DATA <= x"9440"; - when x"090" => DATA <= x"9241"; - when x"091" => DATA <= x"00c1"; - when x"092" => DATA <= x"45c0"; - when x"093" => DATA <= x"ff00"; - when x"094" => DATA <= x"45c1"; - when x"095" => DATA <= x"00ff"; - when x"096" => DATA <= x"5040"; - when x"097" => DATA <= x"1581"; - when x"098" => DATA <= x"6001"; - when x"099" => DATA <= x"1066"; - when x"09a" => DATA <= x"105f"; - when x"09b" => DATA <= x"f5fc"; - when x"09c" => DATA <= x"1581"; - when x"09d" => DATA <= x"1240"; - when x"09e" => DATA <= x"2017"; - when x"09f" => DATA <= x"0105"; - when x"0a0" => DATA <= x"871a"; - when x"0a1" => DATA <= x"2017"; - when x"0a2" => DATA <= x"0109"; - when x"0a3" => DATA <= x"8617"; - when x"0a4" => DATA <= x"1c42"; - when x"0a5" => DATA <= x"0002"; - when x"0a6" => DATA <= x"1c43"; - when x"0a7" => DATA <= x"0004"; - when x"0a8" => DATA <= x"60c2"; - when x"0a9" => DATA <= x"1c43"; - when x"0aa" => DATA <= x"0006"; - when x"0ab" => DATA <= x"0a00"; - when x"0ac" => DATA <= x"65c1"; - when x"0ad" => DATA <= x"0010"; - when x"0ae" => DATA <= x"1450"; - when x"0af" => DATA <= x"e097"; + when x"047" => DATA <= x"0412"; + when x"048" => DATA <= x"09f7"; + when x"049" => DATA <= x"0024"; + when x"04a" => DATA <= x"01d4"; + when x"04b" => DATA <= x"6000"; + when x"04c" => DATA <= x"901f"; + when x"04d" => DATA <= x"f5e6"; + when x"04e" => DATA <= x"0087"; + when x"04f" => DATA <= x"e5c1"; + when x"050" => DATA <= x"0002"; + when x"051" => DATA <= x"9440"; + when x"052" => DATA <= x"45c0"; + when x"053" => DATA <= x"ff00"; + when x"054" => DATA <= x"9241"; + when x"055" => DATA <= x"45c1"; + when x"056" => DATA <= x"ff00"; + when x"057" => DATA <= x"00c1"; + when x"058" => DATA <= x"5001"; + when x"059" => DATA <= x"0087"; + when x"05a" => DATA <= x"09f7"; + when x"05b" => DATA <= x"03f6"; + when x"05c" => DATA <= x"9440"; + when x"05d" => DATA <= x"02fc"; + when x"05e" => DATA <= x"0087"; + when x"05f" => DATA <= x"1066"; + when x"060" => DATA <= x"1026"; + when x"061" => DATA <= x"15c0"; + when x"062" => DATA <= x"0002"; + when x"063" => DATA <= x"09f7"; + when x"064" => DATA <= x"057c"; + when x"065" => DATA <= x"1581"; + when x"066" => DATA <= x"09f7"; + when x"067" => DATA <= x"0546"; + when x"068" => DATA <= x"1581"; + when x"069" => DATA <= x"00b1"; + when x"06a" => DATA <= x"09f7"; + when x"06b" => DATA <= x"03a2"; + when x"06c" => DATA <= x"8102"; + when x"06d" => DATA <= x"0a00"; + when x"06e" => DATA <= x"0087"; + when x"06f" => DATA <= x"15c2"; + when x"070" => DATA <= x"0000"; + when x"071" => DATA <= x"0c42"; + when x"072" => DATA <= x"17c1"; + when x"073" => DATA <= x"f5f8"; + when x"074" => DATA <= x"1066"; + when x"075" => DATA <= x"9c40"; + when x"076" => DATA <= x"0007"; + when x"077" => DATA <= x"45c0"; + when x"078" => DATA <= x"ff00"; + when x"079" => DATA <= x"6001"; + when x"07a" => DATA <= x"8bd1"; + when x"07b" => DATA <= x"0229"; + when x"07c" => DATA <= x"a457"; + when x"07d" => DATA <= x"0028"; + when x"07e" => DATA <= x"0226"; + when x"07f" => DATA <= x"a457"; + when x"080" => DATA <= x"0043"; + when x"081" => DATA <= x"0223"; + when x"082" => DATA <= x"a457"; + when x"083" => DATA <= x"0029"; + when x"084" => DATA <= x"0220"; + when x"085" => DATA <= x"1381"; + when x"086" => DATA <= x"9c40"; + when x"087" => DATA <= x"0006"; + when x"088" => DATA <= x"0bd7"; + when x"089" => DATA <= x"0040"; + when x"08a" => DATA <= x"0345"; + when x"08b" => DATA <= x"45c0"; + when x"08c" => DATA <= x"00f0"; + when x"08d" => DATA <= x"2017"; + when x"08e" => DATA <= x"0007"; + when x"08f" => DATA <= x"0240"; + when x"090" => DATA <= x"9c40"; + when x"091" => DATA <= x"0006"; + when x"092" => DATA <= x"0bd7"; + when x"093" => DATA <= x"0020"; + when x"094" => DATA <= x"030e"; + when x"095" => DATA <= x"9c40"; + when x"096" => DATA <= x"0007"; + when x"097" => DATA <= x"45c0"; + when x"098" => DATA <= x"ff00"; + when x"099" => DATA <= x"6001"; + when x"09a" => DATA <= x"0a81"; + when x"09b" => DATA <= x"8bd1"; + when x"09c" => DATA <= x"02fe"; + when x"09d" => DATA <= x"6057"; + when x"09e" => DATA <= x"0004"; + when x"09f" => DATA <= x"09f7"; + when x"0a0" => DATA <= x"ff60"; + when x"0a1" => DATA <= x"6581"; + when x"0a2" => DATA <= x"1066"; + when x"0a3" => DATA <= x"65c2"; + when x"0a4" => DATA <= x"0002"; + when x"0a5" => DATA <= x"1581"; + when x"0a6" => DATA <= x"45c1"; + when x"0a7" => DATA <= x"0001"; + when x"0a8" => DATA <= x"1240"; + when x"0a9" => DATA <= x"2017"; + when x"0aa" => DATA <= x"0105"; + when x"0ab" => DATA <= x"8718"; + when x"0ac" => DATA <= x"2017"; + when x"0ad" => DATA <= x"0109"; + when x"0ae" => DATA <= x"8615"; + when x"0af" => DATA <= x"1c42"; when x"0b0" => DATA <= x"0002"; - when x"0b1" => DATA <= x"02fc"; - when x"0b2" => DATA <= x"0bc3"; - when x"0b3" => DATA <= x"0304"; - when x"0b4" => DATA <= x"0a10"; - when x"0b5" => DATA <= x"e0d7"; - when x"0b6" => DATA <= x"0002"; - when x"0b7" => DATA <= x"02fc"; - when x"0b8" => DATA <= x"0a01"; - when x"0b9" => DATA <= x"105f"; - when x"0ba" => DATA <= x"f5fc"; - when x"0bb" => DATA <= x"1047"; - when x"0bc" => DATA <= x"09f7"; - when x"0bd" => DATA <= x"055c"; - when x"0be" => DATA <= x"54f9"; - when x"0bf" => DATA <= x"6968"; - when x"0c0" => DATA <= x"2073"; - when x"0c1" => DATA <= x"7369"; - when x"0c2" => DATA <= x"6e20"; - when x"0c3" => DATA <= x"746f"; - when x"0c4" => DATA <= x"6120"; - when x"0c5" => DATA <= x"6c20"; - when x"0c6" => DATA <= x"6e61"; - when x"0c7" => DATA <= x"7567"; - when x"0c8" => DATA <= x"6761"; - when x"0c9" => DATA <= x"0065"; - when x"0ca" => DATA <= x"09f7"; - when x"0cb" => DATA <= x"0540"; - when x"0cc" => DATA <= x"54f9"; - when x"0cd" => DATA <= x"6968"; - when x"0ce" => DATA <= x"2073"; - when x"0cf" => DATA <= x"7369"; - when x"0d0" => DATA <= x"6e20"; - when x"0d1" => DATA <= x"746f"; - when x"0d2" => DATA <= x"5020"; - when x"0d3" => DATA <= x"5044"; - when x"0d4" => DATA <= x"312d"; - when x"0d5" => DATA <= x"2031"; - when x"0d6" => DATA <= x"6f63"; - when x"0d7" => DATA <= x"6564"; - when x"0d8" => DATA <= x"0000"; - when x"0d9" => DATA <= x"8bc0"; - when x"0da" => DATA <= x"810d"; - when x"0db" => DATA <= x"1026"; - when x"0dc" => DATA <= x"15c0"; - when x"0dd" => DATA <= x"0004"; - when x"0de" => DATA <= x"09f7"; - when x"0df" => DATA <= x"0478"; - when x"0e0" => DATA <= x"1380"; - when x"0e1" => DATA <= x"09f7"; - when x"0e2" => DATA <= x"0478"; - when x"0e3" => DATA <= x"09f7"; - when x"0e4" => DATA <= x"02ac"; - when x"0e5" => DATA <= x"1001"; - when x"0e6" => DATA <= x"1580"; - when x"0e7" => DATA <= x"0087"; - when x"0e8" => DATA <= x"2017"; - when x"0e9" => DATA <= x"0082"; - when x"0ea" => DATA <= x"0326"; - when x"0eb" => DATA <= x"2017"; - when x"0ec" => DATA <= x"0083"; - when x"0ed" => DATA <= x"0326"; - when x"0ee" => DATA <= x"2017"; - when x"0ef" => DATA <= x"0084"; - when x"0f0" => DATA <= x"0328"; - when x"0f1" => DATA <= x"1026"; - when x"0f2" => DATA <= x"15c0"; - when x"0f3" => DATA <= x"0006"; - when x"0f4" => DATA <= x"09f7"; - when x"0f5" => DATA <= x"044c"; - when x"0f6" => DATA <= x"1080"; - when x"0f7" => DATA <= x"09f7"; - when x"0f8" => DATA <= x"044c"; - when x"0f9" => DATA <= x"1580"; - when x"0fa" => DATA <= x"09f7"; - when x"0fb" => DATA <= x"0446"; - when x"0fc" => DATA <= x"2017"; - when x"0fd" => DATA <= x"009d"; - when x"0fe" => DATA <= x"030f"; - when x"0ff" => DATA <= x"2017"; - when x"100" => DATA <= x"008e"; - when x"101" => DATA <= x"030d"; - when x"102" => DATA <= x"1026"; - when x"103" => DATA <= x"09f7"; - when x"104" => DATA <= x"026c"; - when x"105" => DATA <= x"6017"; - when x"106" => DATA <= x"ff80"; - when x"107" => DATA <= x"09f7"; - when x"108" => DATA <= x"0264"; - when x"109" => DATA <= x"1002"; - when x"10a" => DATA <= x"09f7"; - when x"10b" => DATA <= x"025e"; - when x"10c" => DATA <= x"1001"; - when x"10d" => DATA <= x"1580"; - when x"10e" => DATA <= x"0087"; - when x"10f" => DATA <= x"0077"; - when x"110" => DATA <= x"fe98"; - when x"111" => DATA <= x"0a01"; - when x"112" => DATA <= x"0a02"; - when x"113" => DATA <= x"0087"; - when x"114" => DATA <= x"15c1"; - when x"115" => DATA <= x"0100"; - when x"116" => DATA <= x"15c2"; - when x"117" => DATA <= x"0001"; + when x"0b1" => DATA <= x"1c43"; + when x"0b2" => DATA <= x"0004"; + when x"0b3" => DATA <= x"60c2"; + when x"0b4" => DATA <= x"1c43"; + when x"0b5" => DATA <= x"0006"; + when x"0b6" => DATA <= x"0a00"; + when x"0b7" => DATA <= x"65c1"; + when x"0b8" => DATA <= x"0010"; + when x"0b9" => DATA <= x"1450"; + when x"0ba" => DATA <= x"e097"; + when x"0bb" => DATA <= x"0002"; + when x"0bc" => DATA <= x"02fc"; + when x"0bd" => DATA <= x"0bc3"; + when x"0be" => DATA <= x"0304"; + when x"0bf" => DATA <= x"0a10"; + when x"0c0" => DATA <= x"e0d7"; + when x"0c1" => DATA <= x"0002"; + when x"0c2" => DATA <= x"02fc"; + when x"0c3" => DATA <= x"0a01"; + when x"0c4" => DATA <= x"1080"; + when x"0c5" => DATA <= x"0c80"; + when x"0c6" => DATA <= x"0308"; + when x"0c7" => DATA <= x"17e6"; + when x"0c8" => DATA <= x"f5fc"; + when x"0c9" => DATA <= x"105f"; + when x"0ca" => DATA <= x"f5fc"; + when x"0cb" => DATA <= x"09c9"; + when x"0cc" => DATA <= x"159f"; + when x"0cd" => DATA <= x"f5fc"; + when x"0ce" => DATA <= x"0087"; + when x"0cf" => DATA <= x"0049"; + when x"0d0" => DATA <= x"0c02"; + when x"0d1" => DATA <= x"860f"; + when x"0d2" => DATA <= x"09f7"; + when x"0d3" => DATA <= x"0538"; + when x"0d4" => DATA <= x"54f9"; + when x"0d5" => DATA <= x"6968"; + when x"0d6" => DATA <= x"2073"; + when x"0d7" => DATA <= x"7369"; + when x"0d8" => DATA <= x"6e20"; + when x"0d9" => DATA <= x"746f"; + when x"0da" => DATA <= x"5020"; + when x"0db" => DATA <= x"5044"; + when x"0dc" => DATA <= x"312d"; + when x"0dd" => DATA <= x"2031"; + when x"0de" => DATA <= x"6f63"; + when x"0df" => DATA <= x"6564"; + when x"0e0" => DATA <= x"0000"; + when x"0e1" => DATA <= x"0077"; + when x"0e2" => DATA <= x"fe78"; + when x"0e3" => DATA <= x"8bc0"; + when x"0e4" => DATA <= x"810d"; + when x"0e5" => DATA <= x"1026"; + when x"0e6" => DATA <= x"15c0"; + when x"0e7" => DATA <= x"0004"; + when x"0e8" => DATA <= x"09f7"; + when x"0e9" => DATA <= x"046c"; + when x"0ea" => DATA <= x"1380"; + when x"0eb" => DATA <= x"09f7"; + when x"0ec" => DATA <= x"046c"; + when x"0ed" => DATA <= x"09f7"; + when x"0ee" => DATA <= x"029c"; + when x"0ef" => DATA <= x"1001"; + when x"0f0" => DATA <= x"1580"; + when x"0f1" => DATA <= x"0087"; + when x"0f2" => DATA <= x"2017"; + when x"0f3" => DATA <= x"0082"; + when x"0f4" => DATA <= x"0326"; + when x"0f5" => DATA <= x"2017"; + when x"0f6" => DATA <= x"0083"; + when x"0f7" => DATA <= x"0326"; + when x"0f8" => DATA <= x"2017"; + when x"0f9" => DATA <= x"0084"; + when x"0fa" => DATA <= x"0328"; + when x"0fb" => DATA <= x"1026"; + when x"0fc" => DATA <= x"15c0"; + when x"0fd" => DATA <= x"0006"; + when x"0fe" => DATA <= x"09f7"; + when x"0ff" => DATA <= x"0440"; + when x"100" => DATA <= x"1080"; + when x"101" => DATA <= x"09f7"; + when x"102" => DATA <= x"0440"; + when x"103" => DATA <= x"1580"; + when x"104" => DATA <= x"09f7"; + when x"105" => DATA <= x"043a"; + when x"106" => DATA <= x"2017"; + when x"107" => DATA <= x"009d"; + when x"108" => DATA <= x"030f"; + when x"109" => DATA <= x"2017"; + when x"10a" => DATA <= x"008e"; + when x"10b" => DATA <= x"030d"; + when x"10c" => DATA <= x"1026"; + when x"10d" => DATA <= x"09f7"; + when x"10e" => DATA <= x"025c"; + when x"10f" => DATA <= x"6017"; + when x"110" => DATA <= x"ff80"; + when x"111" => DATA <= x"09f7"; + when x"112" => DATA <= x"0254"; + when x"113" => DATA <= x"1002"; + when x"114" => DATA <= x"09f7"; + when x"115" => DATA <= x"024e"; + when x"116" => DATA <= x"1001"; + when x"117" => DATA <= x"1580"; when x"118" => DATA <= x"0087"; - when x"119" => DATA <= x"15c1"; - when x"11a" => DATA <= x"f500"; - when x"11b" => DATA <= x"15c2"; - when x"11c" => DATA <= x"00f5"; + when x"119" => DATA <= x"0077"; + when x"11a" => DATA <= x"fe9c"; + when x"11b" => DATA <= x"0a01"; + when x"11c" => DATA <= x"0a02"; when x"11d" => DATA <= x"0087"; - when x"11e" => DATA <= x"0bc0"; - when x"11f" => DATA <= x"034e"; - when x"120" => DATA <= x"10e6"; - when x"121" => DATA <= x"10a6"; - when x"122" => DATA <= x"1026"; - when x"123" => DATA <= x"15c0"; - when x"124" => DATA <= x"0008"; - when x"125" => DATA <= x"09f7"; - when x"126" => DATA <= x"03f0"; - when x"127" => DATA <= x"1380"; - when x"128" => DATA <= x"09f7"; - when x"129" => DATA <= x"03ea"; - when x"12a" => DATA <= x"8bc0"; - when x"12b" => DATA <= x"8004"; - when x"12c" => DATA <= x"9402"; - when x"12d" => DATA <= x"9203"; - when x"12e" => DATA <= x"0ac0"; - when x"12f" => DATA <= x"010c"; - when x"130" => DATA <= x"15c2"; - when x"131" => DATA <= x"0010"; - when x"132" => DATA <= x"15c3"; - when x"133" => DATA <= x"0010"; - when x"134" => DATA <= x"2017"; - when x"135" => DATA <= x"0015"; - when x"136" => DATA <= x"8605"; - when x"137" => DATA <= x"6000"; - when x"138" => DATA <= x"6dc0"; - when x"139" => DATA <= x"003e"; - when x"13a" => DATA <= x"9402"; - when x"13b" => DATA <= x"9403"; - when x"13c" => DATA <= x"1080"; - when x"13d" => DATA <= x"09f7"; - when x"13e" => DATA <= x"03c0"; - when x"13f" => DATA <= x"6081"; - when x"140" => DATA <= x"0ac2"; - when x"141" => DATA <= x"2097"; - when x"142" => DATA <= x"0080"; - when x"143" => DATA <= x"8605"; - when x"144" => DATA <= x"9840"; - when x"145" => DATA <= x"09f7"; - when x"146" => DATA <= x"03b0"; - when x"147" => DATA <= x"0ac2"; - when x"148" => DATA <= x"80fb"; - when x"149" => DATA <= x"10c0"; - when x"14a" => DATA <= x"09f7"; - when x"14b" => DATA <= x"03a6"; - when x"14c" => DATA <= x"60c1"; - when x"14d" => DATA <= x"0ac3"; - when x"14e" => DATA <= x"20d7"; - when x"14f" => DATA <= x"0080"; - when x"150" => DATA <= x"8605"; - when x"151" => DATA <= x"09f7"; - when x"152" => DATA <= x"01d0"; - when x"153" => DATA <= x"9021"; - when x"154" => DATA <= x"0ac3"; - when x"155" => DATA <= x"80fb"; - when x"156" => DATA <= x"1580"; - when x"157" => DATA <= x"1582"; - when x"158" => DATA <= x"1583"; - when x"159" => DATA <= x"0087"; - when x"15a" => DATA <= x"0500"; - when x"15b" => DATA <= x"0005"; - when x"15c" => DATA <= x"0500"; - when x"15d" => DATA <= x"0005"; - when x"15e" => DATA <= x"0504"; - when x"15f" => DATA <= x"0005"; - when x"160" => DATA <= x"0008"; - when x"161" => DATA <= x"000e"; - when x"162" => DATA <= x"0504"; - when x"163" => DATA <= x"0901"; - when x"164" => DATA <= x"0501"; - when x"165" => DATA <= x"0005"; - when x"166" => DATA <= x"0800"; - when x"167" => DATA <= x"1910"; - when x"168" => DATA <= x"0020"; - when x"169" => DATA <= x"0110"; - when x"16a" => DATA <= x"0d0d"; - when x"16b" => DATA <= x"8000"; - when x"16c" => DATA <= x"0808"; - when x"16d" => DATA <= x"8080"; - when x"16e" => DATA <= x"15c0"; - when x"16f" => DATA <= x"000a"; - when x"170" => DATA <= x"09f7"; - when x"171" => DATA <= x"035a"; - when x"172" => DATA <= x"65c1"; - when x"173" => DATA <= x"0002"; - when x"174" => DATA <= x"10a6"; - when x"175" => DATA <= x"15c2"; - when x"176" => DATA <= x"0003"; - when x"177" => DATA <= x"09f7"; - when x"178" => DATA <= x"032a"; - when x"179" => DATA <= x"1582"; - when x"17a" => DATA <= x"15c0"; - when x"17b" => DATA <= x"0007"; - when x"17c" => DATA <= x"09f7"; - when x"17d" => DATA <= x"0342"; - when x"17e" => DATA <= x"0a00"; + when x"11e" => DATA <= x"15c1"; + when x"11f" => DATA <= x"0100"; + when x"120" => DATA <= x"15c2"; + when x"121" => DATA <= x"0001"; + when x"122" => DATA <= x"0087"; + when x"123" => DATA <= x"15c1"; + when x"124" => DATA <= x"f500"; + when x"125" => DATA <= x"15c2"; + when x"126" => DATA <= x"00f5"; + when x"127" => DATA <= x"0087"; + when x"128" => DATA <= x"0bc0"; + when x"129" => DATA <= x"034d"; + when x"12a" => DATA <= x"10e6"; + when x"12b" => DATA <= x"10a6"; + when x"12c" => DATA <= x"1026"; + when x"12d" => DATA <= x"15c0"; + when x"12e" => DATA <= x"0008"; + when x"12f" => DATA <= x"09f7"; + when x"130" => DATA <= x"03e4"; + when x"131" => DATA <= x"1380"; + when x"132" => DATA <= x"09f7"; + when x"133" => DATA <= x"03de"; + when x"134" => DATA <= x"8bc0"; + when x"135" => DATA <= x"8003"; + when x"136" => DATA <= x"9402"; + when x"137" => DATA <= x"9203"; + when x"138" => DATA <= x"010c"; + when x"139" => DATA <= x"15c2"; + when x"13a" => DATA <= x"0010"; + when x"13b" => DATA <= x"15c3"; + when x"13c" => DATA <= x"0010"; + when x"13d" => DATA <= x"2017"; + when x"13e" => DATA <= x"0015"; + when x"13f" => DATA <= x"8605"; + when x"140" => DATA <= x"6000"; + when x"141" => DATA <= x"6dc0"; + when x"142" => DATA <= x"003e"; + when x"143" => DATA <= x"9402"; + when x"144" => DATA <= x"9203"; + when x"145" => DATA <= x"1080"; + when x"146" => DATA <= x"09f7"; + when x"147" => DATA <= x"03b6"; + when x"148" => DATA <= x"6081"; + when x"149" => DATA <= x"0ac2"; + when x"14a" => DATA <= x"2097"; + when x"14b" => DATA <= x"0080"; + when x"14c" => DATA <= x"8605"; + when x"14d" => DATA <= x"9840"; + when x"14e" => DATA <= x"09f7"; + when x"14f" => DATA <= x"03a6"; + when x"150" => DATA <= x"0ac2"; + when x"151" => DATA <= x"80fb"; + when x"152" => DATA <= x"10c0"; + when x"153" => DATA <= x"09f7"; + when x"154" => DATA <= x"039c"; + when x"155" => DATA <= x"60c1"; + when x"156" => DATA <= x"0ac3"; + when x"157" => DATA <= x"20d7"; + when x"158" => DATA <= x"0080"; + when x"159" => DATA <= x"8605"; + when x"15a" => DATA <= x"09f7"; + when x"15b" => DATA <= x"01c2"; + when x"15c" => DATA <= x"9021"; + when x"15d" => DATA <= x"0ac3"; + when x"15e" => DATA <= x"80fb"; + when x"15f" => DATA <= x"1580"; + when x"160" => DATA <= x"1582"; + when x"161" => DATA <= x"1583"; + when x"162" => DATA <= x"0087"; + when x"163" => DATA <= x"0500"; + when x"164" => DATA <= x"0005"; + when x"165" => DATA <= x"0500"; + when x"166" => DATA <= x"0005"; + when x"167" => DATA <= x"0504"; + when x"168" => DATA <= x"0005"; + when x"169" => DATA <= x"0008"; + when x"16a" => DATA <= x"000e"; + when x"16b" => DATA <= x"0504"; + when x"16c" => DATA <= x"0901"; + when x"16d" => DATA <= x"0501"; + when x"16e" => DATA <= x"0005"; + when x"16f" => DATA <= x"0800"; + when x"170" => DATA <= x"1910"; + when x"171" => DATA <= x"0020"; + when x"172" => DATA <= x"0110"; + when x"173" => DATA <= x"0d0d"; + when x"174" => DATA <= x"8000"; + when x"175" => DATA <= x"0808"; + when x"176" => DATA <= x"8080"; + when x"177" => DATA <= x"15c0"; + when x"178" => DATA <= x"000a"; + when x"179" => DATA <= x"09f7"; + when x"17a" => DATA <= x"0350"; + when x"17b" => DATA <= x"65c1"; + when x"17c" => DATA <= x"0002"; + when x"17d" => DATA <= x"15c2"; + when x"17e" => DATA <= x"0003"; when x"17f" => DATA <= x"09f7"; - when x"180" => DATA <= x"033c"; - when x"181" => DATA <= x"09f7"; - when x"182" => DATA <= x"0170"; - when x"183" => DATA <= x"6017"; - when x"184" => DATA <= x"ff80"; - when x"185" => DATA <= x"870c"; - when x"186" => DATA <= x"e5c1"; - when x"187" => DATA <= x"0002"; - when x"188" => DATA <= x"1241"; -- was 1049 - MOV R1,(R1) => MOV (R1),R1 - when x"189" => DATA <= x"0a02"; - when x"18a" => DATA <= x"09f7"; - when x"18b" => DATA <= x"015e"; - when x"18c" => DATA <= x"9011"; - when x"18d" => DATA <= x"0a82"; - when x"18e" => DATA <= x"2017"; - when x"18f" => DATA <= x"000d"; - when x"190" => DATA <= x"02f8"; - when x"191" => DATA <= x"0ac2"; - when x"192" => DATA <= x"0087"; - when x"193" => DATA <= x"10a6"; - when x"194" => DATA <= x"1066"; - when x"195" => DATA <= x"1026"; - when x"196" => DATA <= x"15c0"; - when x"197" => DATA <= x"000c"; - when x"198" => DATA <= x"09f7"; - when x"199" => DATA <= x"0304"; - when x"19a" => DATA <= x"1081"; - when x"19b" => DATA <= x"15c2"; - when x"19c" => DATA <= x"0004"; - when x"19d" => DATA <= x"09f7"; - when x"19e" => DATA <= x"02de"; - when x"19f" => DATA <= x"1580"; - when x"1a0" => DATA <= x"09f7"; - when x"1a1" => DATA <= x"02fa"; - when x"1a2" => DATA <= x"09f7"; - when x"1a3" => DATA <= x"012e"; - when x"1a4" => DATA <= x"1026"; - when x"1a5" => DATA <= x"15c2"; - when x"1a6" => DATA <= x"0004"; - when x"1a7" => DATA <= x"09f7"; - when x"1a8" => DATA <= x"02d8"; - when x"1a9" => DATA <= x"1580"; - when x"1aa" => DATA <= x"1581"; - when x"1ab" => DATA <= x"1582"; - when x"1ac" => DATA <= x"0087"; - when x"1ad" => DATA <= x"1026"; - when x"1ae" => DATA <= x"15c0"; - when x"1af" => DATA <= x"0012"; - when x"1b0" => DATA <= x"09f7"; - when x"1b1" => DATA <= x"02da"; - when x"1b2" => DATA <= x"1580"; - when x"1b3" => DATA <= x"09f7"; - when x"1b4" => DATA <= x"02d4"; - when x"1b5" => DATA <= x"0bc0"; - when x"1b6" => DATA <= x"0206"; - when x"1b7" => DATA <= x"09f7"; - when x"1b8" => DATA <= x"02ca"; + when x"180" => DATA <= x"0322"; + when x"181" => DATA <= x"15c0"; + when x"182" => DATA <= x"0007"; + when x"183" => DATA <= x"09f7"; + when x"184" => DATA <= x"033c"; + when x"185" => DATA <= x"0a00"; + when x"186" => DATA <= x"09f7"; + when x"187" => DATA <= x"0336"; + when x"188" => DATA <= x"09f7"; + when x"189" => DATA <= x"0166"; + when x"18a" => DATA <= x"6017"; + when x"18b" => DATA <= x"ff80"; + when x"18c" => DATA <= x"870b"; + when x"18d" => DATA <= x"09f7"; + when x"18e" => DATA <= x"fd80"; + when x"18f" => DATA <= x"0a02"; + when x"190" => DATA <= x"09f7"; + when x"191" => DATA <= x"0156"; + when x"192" => DATA <= x"9011"; + when x"193" => DATA <= x"0a82"; + when x"194" => DATA <= x"2017"; + when x"195" => DATA <= x"000d"; + when x"196" => DATA <= x"02f9"; + when x"197" => DATA <= x"0ac2"; + when x"198" => DATA <= x"0087"; + when x"199" => DATA <= x"10a6"; + when x"19a" => DATA <= x"1066"; + when x"19b" => DATA <= x"1026"; + when x"19c" => DATA <= x"15c0"; + when x"19d" => DATA <= x"000c"; + when x"19e" => DATA <= x"09f7"; + when x"19f" => DATA <= x"0300"; + when x"1a0" => DATA <= x"1081"; + when x"1a1" => DATA <= x"15c2"; + when x"1a2" => DATA <= x"0004"; + when x"1a3" => DATA <= x"09f7"; + when x"1a4" => DATA <= x"02da"; + when x"1a5" => DATA <= x"1580"; + when x"1a6" => DATA <= x"09f7"; + when x"1a7" => DATA <= x"02f6"; + when x"1a8" => DATA <= x"09f7"; + when x"1a9" => DATA <= x"0126"; + when x"1aa" => DATA <= x"1026"; + when x"1ab" => DATA <= x"15c2"; + when x"1ac" => DATA <= x"0004"; + when x"1ad" => DATA <= x"09f7"; + when x"1ae" => DATA <= x"02d4"; + when x"1af" => DATA <= x"1580"; + when x"1b0" => DATA <= x"1581"; + when x"1b1" => DATA <= x"1582"; + when x"1b2" => DATA <= x"0087"; + when x"1b3" => DATA <= x"1026"; + when x"1b4" => DATA <= x"15c0"; + when x"1b5" => DATA <= x"0012"; + when x"1b6" => DATA <= x"09f7"; + when x"1b7" => DATA <= x"02d6"; + when x"1b8" => DATA <= x"1580"; when x"1b9" => DATA <= x"09f7"; - when x"1ba" => DATA <= x"0100"; - when x"1bb" => DATA <= x"0a00"; - when x"1bc" => DATA <= x"0087"; - when x"1bd" => DATA <= x"1066"; - when x"1be" => DATA <= x"09f7"; - when x"1bf" => DATA <= x"028e"; - when x"1c0" => DATA <= x"09f7"; - when x"1c1" => DATA <= x"00f2"; - when x"1c2" => DATA <= x"1581"; - when x"1c3" => DATA <= x"0087"; - when x"1c4" => DATA <= x"10a6"; - when x"1c5" => DATA <= x"1066"; - when x"1c6" => DATA <= x"1026"; - when x"1c7" => DATA <= x"15c0"; - when x"1c8" => DATA <= x"0014"; - when x"1c9" => DATA <= x"09f7"; - when x"1ca" => DATA <= x"02a8"; - when x"1cb" => DATA <= x"65c1"; - when x"1cc" => DATA <= x"0002"; - when x"1cd" => DATA <= x"15c2"; - when x"1ce" => DATA <= x"0010"; + when x"1ba" => DATA <= x"02d0"; + when x"1bb" => DATA <= x"0bc0"; + when x"1bc" => DATA <= x"0206"; + when x"1bd" => DATA <= x"09f7"; + when x"1be" => DATA <= x"02c6"; + when x"1bf" => DATA <= x"09f7"; + when x"1c0" => DATA <= x"00f8"; + when x"1c1" => DATA <= x"0a00"; + when x"1c2" => DATA <= x"0087"; + when x"1c3" => DATA <= x"1066"; + when x"1c4" => DATA <= x"09f7"; + when x"1c5" => DATA <= x"028a"; + when x"1c6" => DATA <= x"09f7"; + when x"1c7" => DATA <= x"00ea"; + when x"1c8" => DATA <= x"1581"; + when x"1c9" => DATA <= x"0087"; + when x"1ca" => DATA <= x"10a6"; + when x"1cb" => DATA <= x"1066"; + when x"1cc" => DATA <= x"1026"; + when x"1cd" => DATA <= x"15c0"; + when x"1ce" => DATA <= x"0014"; when x"1cf" => DATA <= x"09f7"; - when x"1d0" => DATA <= x"027a"; - when x"1d1" => DATA <= x"e5c1"; + when x"1d0" => DATA <= x"02a4"; + when x"1d1" => DATA <= x"65c1"; when x"1d2" => DATA <= x"0002"; - when x"1d3" => DATA <= x"1241"; - when x"1d4" => DATA <= x"09f7"; - when x"1d5" => DATA <= x"0262"; - when x"1d6" => DATA <= x"1580"; + when x"1d3" => DATA <= x"15c2"; + when x"1d4" => DATA <= x"0010"; + when x"1d5" => DATA <= x"09f7"; + when x"1d6" => DATA <= x"0276"; when x"1d7" => DATA <= x"09f7"; - when x"1d8" => DATA <= x"028c"; + when x"1d8" => DATA <= x"fcec"; when x"1d9" => DATA <= x"09f7"; - when x"1da" => DATA <= x"00c0"; - when x"1db" => DATA <= x"1381"; - when x"1dc" => DATA <= x"1026"; - when x"1dd" => DATA <= x"65c1"; - when x"1de" => DATA <= x"0002"; - when x"1df" => DATA <= x"15c2"; - when x"1e0" => DATA <= x"0010"; - when x"1e1" => DATA <= x"09f7"; - when x"1e2" => DATA <= x"0264"; - when x"1e3" => DATA <= x"1580"; - when x"1e4" => DATA <= x"1581"; - when x"1e5" => DATA <= x"1582"; - when x"1e6" => DATA <= x"0087"; - when x"1e7" => DATA <= x"8bc9"; - when x"1e8" => DATA <= x"0205"; - when x"1e9" => DATA <= x"0bc0"; - when x"1ea" => DATA <= x"0303"; - when x"1eb" => DATA <= x"2017"; - when x"1ec" => DATA <= x"0005"; - when x"1ed" => DATA <= x"8713"; - when x"1ee" => DATA <= x"10a6"; - when x"1ef" => DATA <= x"1026"; - when x"1f0" => DATA <= x"15c0"; - when x"1f1" => DATA <= x"0016"; - when x"1f2" => DATA <= x"09f7"; - when x"1f3" => DATA <= x"0256"; - when x"1f4" => DATA <= x"15c2"; - when x"1f5" => DATA <= x"000d"; - when x"1f6" => DATA <= x"09f7"; - when x"1f7" => DATA <= x"022c"; - when x"1f8" => DATA <= x"1580"; - when x"1f9" => DATA <= x"09f7"; - when x"1fa" => DATA <= x"0248"; - when x"1fb" => DATA <= x"15c2"; - when x"1fc" => DATA <= x"000d"; - when x"1fd" => DATA <= x"09f7"; - when x"1fe" => DATA <= x"022c"; - when x"1ff" => DATA <= x"1582"; - when x"200" => DATA <= x"0136"; - when x"201" => DATA <= x"10a6"; - when x"202" => DATA <= x"1026"; - when x"203" => DATA <= x"9c40"; - when x"204" => DATA <= x"0001"; - when x"205" => DATA <= x"45c0"; - when x"206" => DATA <= x"ff00"; - when x"207" => DATA <= x"9c42"; - when x"208" => DATA <= x"0002"; - when x"209" => DATA <= x"45c2"; - when x"20a" => DATA <= x"ff00"; - when x"20b" => DATA <= x"00c2"; - when x"20c" => DATA <= x"5002"; - when x"20d" => DATA <= x"2397"; - when x"20e" => DATA <= x"0003"; - when x"20f" => DATA <= x"8604"; - when x"210" => DATA <= x"9480"; - when x"211" => DATA <= x"09f7"; - when x"212" => DATA <= x"0084"; - when x"213" => DATA <= x"0104"; - when x"214" => DATA <= x"09f7"; - when x"215" => DATA <= x"003c"; - when x"216" => DATA <= x"870d"; - when x"217" => DATA <= x"9012"; - when x"218" => DATA <= x"8bf1"; - when x"219" => DATA <= x"0005"; - when x"21a" => DATA <= x"0202"; - when x"21b" => DATA <= x"8af1"; - when x"21c" => DATA <= x"0006"; - when x"21d" => DATA <= x"8af1"; - when x"21e" => DATA <= x"0005"; - when x"21f" => DATA <= x"02ed"; - when x"220" => DATA <= x"8bf1"; - when x"221" => DATA <= x"0006"; - when x"222" => DATA <= x"02ea"; - when x"223" => DATA <= x"00a1"; - when x"224" => DATA <= x"90b1"; - when x"225" => DATA <= x"0001"; - when x"226" => DATA <= x"00c2"; - when x"227" => DATA <= x"90b1"; - when x"228" => DATA <= x"0002"; - when x"229" => DATA <= x"1580"; - when x"22a" => DATA <= x"1582"; - when x"22b" => DATA <= x"0a00"; - when x"22c" => DATA <= x"0087"; - when x"22d" => DATA <= x"0bc1"; - when x"22e" => DATA <= x"0305"; - when x"22f" => DATA <= x"15c0"; - when x"230" => DATA <= x"000e"; - when x"231" => DATA <= x"09f7"; - when x"232" => DATA <= x"01d2"; - when x"233" => DATA <= x"0103"; - when x"234" => DATA <= x"0a00"; - when x"235" => DATA <= x"09f7"; - when x"236" => DATA <= x"01d0"; + when x"1da" => DATA <= x"0260"; + when x"1db" => DATA <= x"1580"; + when x"1dc" => DATA <= x"09f7"; + when x"1dd" => DATA <= x"028a"; + when x"1de" => DATA <= x"09f7"; + when x"1df" => DATA <= x"00ba"; + when x"1e0" => DATA <= x"1381"; + when x"1e1" => DATA <= x"1026"; + when x"1e2" => DATA <= x"65c1"; + when x"1e3" => DATA <= x"0002"; + when x"1e4" => DATA <= x"15c2"; + when x"1e5" => DATA <= x"0010"; + when x"1e6" => DATA <= x"09f7"; + when x"1e7" => DATA <= x"0262"; + when x"1e8" => DATA <= x"1580"; + when x"1e9" => DATA <= x"1581"; + when x"1ea" => DATA <= x"1582"; + when x"1eb" => DATA <= x"0087"; + when x"1ec" => DATA <= x"8bc9"; + when x"1ed" => DATA <= x"0205"; + when x"1ee" => DATA <= x"0bc0"; + when x"1ef" => DATA <= x"0303"; + when x"1f0" => DATA <= x"2017"; + when x"1f1" => DATA <= x"0005"; + when x"1f2" => DATA <= x"8713"; + when x"1f3" => DATA <= x"10a6"; + when x"1f4" => DATA <= x"1026"; + when x"1f5" => DATA <= x"15c0"; + when x"1f6" => DATA <= x"0016"; + when x"1f7" => DATA <= x"09f7"; + when x"1f8" => DATA <= x"0254"; + when x"1f9" => DATA <= x"15c2"; + when x"1fa" => DATA <= x"000d"; + when x"1fb" => DATA <= x"09f7"; + when x"1fc" => DATA <= x"022a"; + when x"1fd" => DATA <= x"1580"; + when x"1fe" => DATA <= x"09f7"; + when x"1ff" => DATA <= x"0246"; + when x"200" => DATA <= x"15c2"; + when x"201" => DATA <= x"000d"; + when x"202" => DATA <= x"09f7"; + when x"203" => DATA <= x"022a"; + when x"204" => DATA <= x"1582"; + when x"205" => DATA <= x"0133"; + when x"206" => DATA <= x"10a6"; + when x"207" => DATA <= x"1026"; + when x"208" => DATA <= x"1066"; + when x"209" => DATA <= x"0a81"; + when x"20a" => DATA <= x"09f7"; + when x"20b" => DATA <= x"fc8a"; + when x"20c" => DATA <= x"1042"; + when x"20d" => DATA <= x"1581"; + when x"20e" => DATA <= x"2397"; + when x"20f" => DATA <= x"0003"; + when x"210" => DATA <= x"8604"; + when x"211" => DATA <= x"9480"; + when x"212" => DATA <= x"09f7"; + when x"213" => DATA <= x"0086"; + when x"214" => DATA <= x"0104"; + when x"215" => DATA <= x"09f7"; + when x"216" => DATA <= x"003e"; + when x"217" => DATA <= x"870d"; + when x"218" => DATA <= x"9012"; + when x"219" => DATA <= x"8bf1"; + when x"21a" => DATA <= x"0005"; + when x"21b" => DATA <= x"0202"; + when x"21c" => DATA <= x"8af1"; + when x"21d" => DATA <= x"0006"; + when x"21e" => DATA <= x"8af1"; + when x"21f" => DATA <= x"0005"; + when x"220" => DATA <= x"02ed"; + when x"221" => DATA <= x"8bf1"; + when x"222" => DATA <= x"0006"; + when x"223" => DATA <= x"02ea"; + when x"224" => DATA <= x"00a1"; + when x"225" => DATA <= x"90b1"; + when x"226" => DATA <= x"0001"; + when x"227" => DATA <= x"00c2"; + when x"228" => DATA <= x"90b1"; + when x"229" => DATA <= x"0002"; + when x"22a" => DATA <= x"0bd6"; + when x"22b" => DATA <= x"1582"; + when x"22c" => DATA <= x"15c0"; + when x"22d" => DATA <= x"0000"; + when x"22e" => DATA <= x"0087"; + when x"22f" => DATA <= x"0bc1"; + when x"230" => DATA <= x"0305"; + when x"231" => DATA <= x"15c0"; + when x"232" => DATA <= x"000e"; + when x"233" => DATA <= x"09f7"; + when x"234" => DATA <= x"01d6"; + when x"235" => DATA <= x"0103"; + when x"236" => DATA <= x"0a00"; when x"237" => DATA <= x"09f7"; - when x"238" => DATA <= x"0004"; - when x"239" => DATA <= x"65c0"; - when x"23a" => DATA <= x"ff80"; - when x"23b" => DATA <= x"97c0"; - when x"23c" => DATA <= x"fff4"; - when x"23d" => DATA <= x"80fd"; - when x"23e" => DATA <= x"97c0"; - when x"23f" => DATA <= x"fff6"; - when x"240" => DATA <= x"0087"; - when x"241" => DATA <= x"0bc1"; - when x"242" => DATA <= x"0312"; - when x"243" => DATA <= x"1026"; - when x"244" => DATA <= x"15c0"; - when x"245" => DATA <= x"0010"; - when x"246" => DATA <= x"09f7"; - when x"247" => DATA <= x"01a8"; - when x"248" => DATA <= x"1380"; - when x"249" => DATA <= x"09f7"; - when x"24a" => DATA <= x"01a8"; + when x"238" => DATA <= x"01d4"; + when x"239" => DATA <= x"09f7"; + when x"23a" => DATA <= x"0004"; + when x"23b" => DATA <= x"65c0"; + when x"23c" => DATA <= x"ff80"; + when x"23d" => DATA <= x"97c0"; + when x"23e" => DATA <= x"fff4"; + when x"23f" => DATA <= x"80fd"; + when x"240" => DATA <= x"97c0"; + when x"241" => DATA <= x"fff6"; + when x"242" => DATA <= x"0087"; + when x"243" => DATA <= x"0bc1"; + when x"244" => DATA <= x"0312"; + when x"245" => DATA <= x"1026"; + when x"246" => DATA <= x"15c0"; + when x"247" => DATA <= x"0010"; + when x"248" => DATA <= x"09f7"; + when x"249" => DATA <= x"01ac"; + when x"24a" => DATA <= x"1380"; when x"24b" => DATA <= x"09f7"; - when x"24c" => DATA <= x"ffdc"; - when x"24d" => DATA <= x"1580"; - when x"24e" => DATA <= x"0087"; - when x"24f" => DATA <= x"15c0"; - when x"250" => DATA <= x"000a"; - when x"251" => DATA <= x"09f7"; - when x"252" => DATA <= x"0004"; - when x"253" => DATA <= x"15c0"; - when x"254" => DATA <= x"000d"; - when x"255" => DATA <= x"1026"; - when x"256" => DATA <= x"97c0"; - when x"257" => DATA <= x"fff0"; - when x"258" => DATA <= x"45c0"; - when x"259" => DATA <= x"00bf"; - when x"25a" => DATA <= x"03fb"; - when x"25b" => DATA <= x"1580"; - when x"25c" => DATA <= x"901f"; - when x"25d" => DATA <= x"fff2"; - when x"25e" => DATA <= x"0087"; - when x"25f" => DATA <= x"45f6"; - when x"260" => DATA <= x"fff0"; - when x"261" => DATA <= x"0002"; - when x"262" => DATA <= x"17e6"; - when x"263" => DATA <= x"f5e8"; + when x"24c" => DATA <= x"01ac"; + when x"24d" => DATA <= x"09f7"; + when x"24e" => DATA <= x"ffdc"; + when x"24f" => DATA <= x"1580"; + when x"250" => DATA <= x"0087"; + when x"251" => DATA <= x"15c0"; + when x"252" => DATA <= x"000a"; + when x"253" => DATA <= x"09f7"; + when x"254" => DATA <= x"0004"; + when x"255" => DATA <= x"15c0"; + when x"256" => DATA <= x"000d"; + when x"257" => DATA <= x"1026"; + when x"258" => DATA <= x"97c0"; + when x"259" => DATA <= x"fff0"; + when x"25a" => DATA <= x"45c0"; + when x"25b" => DATA <= x"00bf"; + when x"25c" => DATA <= x"03fb"; + when x"25d" => DATA <= x"1580"; + when x"25e" => DATA <= x"901f"; + when x"25f" => DATA <= x"fff2"; + when x"260" => DATA <= x"0087"; + when x"261" => DATA <= x"45f6"; + when x"262" => DATA <= x"fff0"; + when x"263" => DATA <= x"0002"; when x"264" => DATA <= x"17e6"; - when x"265" => DATA <= x"f5f4"; - when x"266" => DATA <= x"119f"; + when x"265" => DATA <= x"f5e8"; + when x"266" => DATA <= x"17e6"; when x"267" => DATA <= x"f5f4"; - when x"268" => DATA <= x"15df"; - when x"269" => DATA <= x"fd08"; - when x"26a" => DATA <= x"f5e8"; - when x"26b" => DATA <= x"1026"; - when x"26c" => DATA <= x"1026"; - when x"26d" => DATA <= x"1d80"; - when x"26e" => DATA <= x"0008"; - when x"26f" => DATA <= x"1c00"; - when x"270" => DATA <= x"fffe"; - when x"271" => DATA <= x"45c0"; - when x"272" => DATA <= x"ff00"; - when x"273" => DATA <= x"6000"; - when x"274" => DATA <= x"6fc0"; - when x"275" => DATA <= x"f90a"; - when x"276" => DATA <= x"1236"; - when x"277" => DATA <= x"0002"; - when x"278" => DATA <= x"1580"; - when x"279" => DATA <= x"09d6"; - when x"27a" => DATA <= x"8509"; - when x"27b" => DATA <= x"8603"; - when x"27c" => DATA <= x"55f6"; - when x"27d" => DATA <= x"0001"; - when x"27e" => DATA <= x"0006"; - when x"27f" => DATA <= x"159f"; - when x"280" => DATA <= x"f5f4"; + when x"268" => DATA <= x"119f"; + when x"269" => DATA <= x"f5f4"; + when x"26a" => DATA <= x"15df"; + when x"26b" => DATA <= x"fd0c"; + when x"26c" => DATA <= x"f5e8"; + when x"26d" => DATA <= x"1026"; + when x"26e" => DATA <= x"1026"; + when x"26f" => DATA <= x"1d80"; + when x"270" => DATA <= x"0008"; + when x"271" => DATA <= x"1c00"; + when x"272" => DATA <= x"fffe"; + when x"273" => DATA <= x"45c0"; + when x"274" => DATA <= x"ff00"; + when x"275" => DATA <= x"6000"; + when x"276" => DATA <= x"6fc0"; + when x"277" => DATA <= x"f906"; + when x"278" => DATA <= x"1236"; + when x"279" => DATA <= x"0002"; + when x"27a" => DATA <= x"1580"; + when x"27b" => DATA <= x"09de"; + when x"27c" => DATA <= x"8509"; + when x"27d" => DATA <= x"8603"; + when x"27e" => DATA <= x"55f6"; + when x"27f" => DATA <= x"0001"; + when x"280" => DATA <= x"0006"; when x"281" => DATA <= x"159f"; - when x"282" => DATA <= x"f5e8"; - when x"283" => DATA <= x"0002"; - when x"284" => DATA <= x"17c6"; - when x"285" => DATA <= x"f5f4"; - when x"286" => DATA <= x"55f6"; - when x"287" => DATA <= x"0002"; - when x"288" => DATA <= x"0006"; - when x"289" => DATA <= x"01f5"; - when x"28a" => DATA <= x"0bd6"; - when x"28b" => DATA <= x"159f"; - when x"28c" => DATA <= x"f5f4"; + when x"282" => DATA <= x"f5f4"; + when x"283" => DATA <= x"159f"; + when x"284" => DATA <= x"f5e8"; + when x"285" => DATA <= x"0002"; + when x"286" => DATA <= x"17c6"; + when x"287" => DATA <= x"f5f4"; + when x"288" => DATA <= x"55f6"; + when x"289" => DATA <= x"0002"; + when x"28a" => DATA <= x"0006"; + when x"28b" => DATA <= x"01f5"; + when x"28c" => DATA <= x"0bd6"; when x"28d" => DATA <= x"159f"; - when x"28e" => DATA <= x"f5e8"; - when x"28f" => DATA <= x"1380"; - when x"290" => DATA <= x"17ce"; - when x"291" => DATA <= x"f5e8"; - when x"292" => DATA <= x"0002"; - when x"293" => DATA <= x"0bd6"; - when x"294" => DATA <= x"159f"; - when x"295" => DATA <= x"f5f4"; + when x"28e" => DATA <= x"f5f4"; + when x"28f" => DATA <= x"159f"; + when x"290" => DATA <= x"f5e8"; + when x"291" => DATA <= x"1380"; + when x"292" => DATA <= x"17ce"; + when x"293" => DATA <= x"f5e8"; + when x"294" => DATA <= x"0002"; + when x"295" => DATA <= x"0bd6"; when x"296" => DATA <= x"159f"; - when x"297" => DATA <= x"f5e8"; - when x"298" => DATA <= x"1026"; - when x"299" => DATA <= x"810d"; - when x"29a" => DATA <= x"2017"; - when x"29b" => DATA <= x"0100"; - when x"29c" => DATA <= x"8608"; - when x"29d" => DATA <= x"6000"; - when x"29e" => DATA <= x"67c0"; - when x"29f" => DATA <= x"f5f6"; - when x"2a0" => DATA <= x"1226"; - when x"2a1" => DATA <= x"0bc1"; - when x"2a2" => DATA <= x"0301"; - when x"2a3" => DATA <= x"1048"; - when x"2a4" => DATA <= x"1581"; - when x"2a5" => DATA <= x"1580"; - when x"2a6" => DATA <= x"0002"; - when x"2a7" => DATA <= x"0a40"; - when x"2a8" => DATA <= x"2017"; - when x"2a9" => DATA <= x"0006"; - when x"2aa" => DATA <= x"86fa"; - when x"2ab" => DATA <= x"6000"; - when x"2ac" => DATA <= x"6000"; - when x"2ad" => DATA <= x"65c0"; - when x"2ae" => DATA <= x"f5e0"; - when x"2af" => DATA <= x"1226"; - when x"2b0" => DATA <= x"0bc1"; - when x"2b1" => DATA <= x"0301"; - when x"2b2" => DATA <= x"1050"; - when x"2b3" => DATA <= x"1226"; - when x"2b4" => DATA <= x"0bc2"; - when x"2b5" => DATA <= x"0301"; - when x"2b6" => DATA <= x"1088"; - when x"2b7" => DATA <= x"1582"; - when x"2b8" => DATA <= x"1581"; - when x"2b9" => DATA <= x"1580"; - when x"2ba" => DATA <= x"0002"; - when x"2bb" => DATA <= x"2017"; - when x"2bc" => DATA <= x"0001"; - when x"2bd" => DATA <= x"0306"; - when x"2be" => DATA <= x"2017"; - when x"2bf" => DATA <= x"0002"; - when x"2c0" => DATA <= x"0312"; - when x"2c1" => DATA <= x"0087"; - when x"2c2" => DATA <= x"005f"; - when x"2c3" => DATA <= x"f5e0"; - when x"2c4" => DATA <= x"15df"; - when x"2c5" => DATA <= x"fcbe"; - when x"2c6" => DATA <= x"0004"; - when x"2c7" => DATA <= x"0a1f"; - when x"2c8" => DATA <= x"0006"; - when x"2c9" => DATA <= x"15df"; - when x"2ca" => DATA <= x"ffba"; - when x"2cb" => DATA <= x"0084"; - when x"2cc" => DATA <= x"0a1f"; - when x"2cd" => DATA <= x"0086"; + when x"297" => DATA <= x"f5f4"; + when x"298" => DATA <= x"159f"; + when x"299" => DATA <= x"f5e8"; + when x"29a" => DATA <= x"1026"; + when x"29b" => DATA <= x"810d"; + when x"29c" => DATA <= x"2017"; + when x"29d" => DATA <= x"0100"; + when x"29e" => DATA <= x"8608"; + when x"29f" => DATA <= x"6000"; + when x"2a0" => DATA <= x"67c0"; + when x"2a1" => DATA <= x"f5f6"; + when x"2a2" => DATA <= x"1226"; + when x"2a3" => DATA <= x"0bc1"; + when x"2a4" => DATA <= x"0301"; + when x"2a5" => DATA <= x"1048"; + when x"2a6" => DATA <= x"1581"; + when x"2a7" => DATA <= x"1580"; + when x"2a8" => DATA <= x"0002"; + when x"2a9" => DATA <= x"0a40"; + when x"2aa" => DATA <= x"2017"; + when x"2ab" => DATA <= x"0006"; + when x"2ac" => DATA <= x"86fa"; + when x"2ad" => DATA <= x"6000"; + when x"2ae" => DATA <= x"6000"; + when x"2af" => DATA <= x"65c0"; + when x"2b0" => DATA <= x"f5e0"; + when x"2b1" => DATA <= x"1226"; + when x"2b2" => DATA <= x"0bc1"; + when x"2b3" => DATA <= x"0301"; + when x"2b4" => DATA <= x"1050"; + when x"2b5" => DATA <= x"1226"; + when x"2b6" => DATA <= x"0bc2"; + when x"2b7" => DATA <= x"0301"; + when x"2b8" => DATA <= x"1088"; + when x"2b9" => DATA <= x"1582"; + when x"2ba" => DATA <= x"1581"; + when x"2bb" => DATA <= x"1580"; + when x"2bc" => DATA <= x"0002"; + when x"2bd" => DATA <= x"2017"; + when x"2be" => DATA <= x"0001"; + when x"2bf" => DATA <= x"0306"; + when x"2c0" => DATA <= x"2017"; + when x"2c1" => DATA <= x"0002"; + when x"2c2" => DATA <= x"0314"; + when x"2c3" => DATA <= x"0087"; + when x"2c4" => DATA <= x"007f"; + when x"2c5" => DATA <= x"f854"; + when x"2c6" => DATA <= x"15df"; + when x"2c7" => DATA <= x"fcc2"; + when x"2c8" => DATA <= x"0018"; + when x"2c9" => DATA <= x"0a1f"; + when x"2ca" => DATA <= x"001a"; + when x"2cb" => DATA <= x"15df"; + when x"2cc" => DATA <= x"ffc2"; + when x"2cd" => DATA <= x"0080"; when x"2ce" => DATA <= x"15df"; - when x"2cf" => DATA <= x"fe6a"; - when x"2d0" => DATA <= x"0080"; - when x"2d1" => DATA <= x"0a1f"; - when x"2d2" => DATA <= x"0082"; - when x"2d3" => DATA <= x"15c0"; - when x"2d4" => DATA <= x"fdcc"; - when x"2d5" => DATA <= x"15c1"; - when x"2d6" => DATA <= x"f5e0"; - when x"2d7" => DATA <= x"15c2"; - when x"2d8" => DATA <= x"0040"; - when x"2d9" => DATA <= x"17e6"; - when x"2da" => DATA <= x"f5fc"; - when x"2db" => DATA <= x"1411"; - when x"2dc" => DATA <= x"0ac2"; - when x"2dd" => DATA <= x"02fd"; - when x"2de" => DATA <= x"159f"; - when x"2df" => DATA <= x"f5fc"; - when x"2e0" => DATA <= x"15c2"; - when x"2e1" => DATA <= x"00e0"; - when x"2e2" => DATA <= x"1211"; - when x"2e3" => DATA <= x"0ac2"; - when x"2e4" => DATA <= x"02fd"; - when x"2e5" => DATA <= x"0087"; - when x"2e6" => DATA <= x"f83e"; - when x"2e7" => DATA <= x"0000"; - when x"2e8" => DATA <= x"f892"; - when x"2e9" => DATA <= x"f5ff"; - when x"2ea" => DATA <= x"f884"; - when x"2eb" => DATA <= x"f500"; - when x"2ec" => DATA <= x"fd82"; - when x"2ed" => DATA <= x"0000"; - when x"2ee" => DATA <= x"fea2"; - when x"2ef" => DATA <= x"0000"; - when x"2f0" => DATA <= x"0000"; - when x"2f1" => DATA <= x"f600"; - when x"2f2" => DATA <= x"0000"; + when x"2cf" => DATA <= x"00e0"; + when x"2d0" => DATA <= x"0082"; -- was 0086 + when x"2d1" => DATA <= x"15df"; + when x"2d2" => DATA <= x"fe72"; + when x"2d3" => DATA <= x"0084"; + when x"2d4" => DATA <= x"15df"; + when x"2d5" => DATA <= x"00c0"; + when x"2d6" => DATA <= x"0086"; + when x"2d7" => DATA <= x"15c0"; + when x"2d8" => DATA <= x"fdd4"; + when x"2d9" => DATA <= x"15c1"; + when x"2da" => DATA <= x"f5e0"; + when x"2db" => DATA <= x"15c2"; + when x"2dc" => DATA <= x"0040"; + when x"2dd" => DATA <= x"17e6"; + when x"2de" => DATA <= x"f5fc"; + when x"2df" => DATA <= x"1411"; + when x"2e0" => DATA <= x"0ac2"; + when x"2e1" => DATA <= x"02fd"; + when x"2e2" => DATA <= x"159f"; + when x"2e3" => DATA <= x"f5fc"; + when x"2e4" => DATA <= x"15c2"; + when x"2e5" => DATA <= x"00e0"; + when x"2e6" => DATA <= x"1211"; + when x"2e7" => DATA <= x"0ac2"; + when x"2e8" => DATA <= x"02fd"; + when x"2e9" => DATA <= x"0087"; + when x"2ea" => DATA <= x"f83e"; + when x"2eb" => DATA <= x"0000"; + when x"2ec" => DATA <= x"f896"; + when x"2ed" => DATA <= x"f5ff"; + when x"2ee" => DATA <= x"f884"; + when x"2ef" => DATA <= x"f500"; + when x"2f0" => DATA <= x"fd86"; + when x"2f1" => DATA <= x"0000"; + when x"2f2" => DATA <= x"feaa"; when x"2f3" => DATA <= x"0000"; - when x"2f4" => DATA <= x"f81e"; - when x"2f5" => DATA <= x"0000"; - when x"2f6" => DATA <= x"fd84"; - when x"2f7" => DATA <= x"f8a4"; - when x"2f8" => DATA <= x"f9b2"; - when x"2f9" => DATA <= x"fa3c"; - when x"2fa" => DATA <= x"fcaa"; - when x"2fb" => DATA <= x"fc9e"; - when x"2fc" => DATA <= x"fc68"; - when x"2fd" => DATA <= x"fb88"; - when x"2fe" => DATA <= x"fb26"; - when x"2ff" => DATA <= x"fc5a"; - when x"300" => DATA <= x"fc82"; - when x"301" => DATA <= x"fbce"; - when x"302" => DATA <= x"fb5a"; - when x"303" => DATA <= x"fd76"; - when x"304" => DATA <= x"fd26"; - when x"305" => DATA <= x"fd14"; - when x"306" => DATA <= x"fd82"; - when x"307" => DATA <= x"9440"; - when x"308" => DATA <= x"09f7"; - when x"309" => DATA <= x"002a"; - when x"30a" => DATA <= x"2017"; - when x"30b" => DATA <= x"000d"; - when x"30c" => DATA <= x"02fa"; - when x"30d" => DATA <= x"0087"; - when x"30e" => DATA <= x"6081"; - when x"30f" => DATA <= x"9840"; - when x"310" => DATA <= x"09f7"; - when x"311" => DATA <= x"001a"; - when x"312" => DATA <= x"0ac2"; - when x"313" => DATA <= x"02fb"; - when x"314" => DATA <= x"0087"; - when x"315" => DATA <= x"6081"; - when x"316" => DATA <= x"09f7"; - when x"317" => DATA <= x"fe46"; - when x"318" => DATA <= x"9021"; - when x"319" => DATA <= x"0ac2"; - when x"31a" => DATA <= x"02fb"; - when x"31b" => DATA <= x"0087"; - when x"31c" => DATA <= x"09f7"; - when x"31d" => DATA <= x"0002"; - when x"31e" => DATA <= x"1040"; - when x"31f" => DATA <= x"1026"; - when x"320" => DATA <= x"97c0"; - when x"321" => DATA <= x"fff4"; - when x"322" => DATA <= x"45c0"; - when x"323" => DATA <= x"00bf"; - when x"324" => DATA <= x"03fb"; - when x"325" => DATA <= x"1580"; - when x"326" => DATA <= x"901f"; - when x"327" => DATA <= x"fff6"; - when x"328" => DATA <= x"0087"; - when x"329" => DATA <= x"97c0"; - when x"32a" => DATA <= x"fff0"; - when x"32b" => DATA <= x"80fd"; - when x"32c" => DATA <= x"97c0"; - when x"32d" => DATA <= x"fff2"; - when x"32e" => DATA <= x"0087"; - when x"32f" => DATA <= x"97c0"; - when x"330" => DATA <= x"fffc"; - when x"331" => DATA <= x"80fd"; - when x"332" => DATA <= x"97c0"; - when x"333" => DATA <= x"fffe"; - when x"334" => DATA <= x"0087"; - when x"335" => DATA <= x"1026"; + when x"2f4" => DATA <= x"0000"; + when x"2f5" => DATA <= x"f600"; + when x"2f6" => DATA <= x"0000"; + when x"2f7" => DATA <= x"0000"; + when x"2f8" => DATA <= x"f81e"; + when x"2f9" => DATA <= x"0000"; + when x"2fa" => DATA <= x"fd88"; + when x"2fb" => DATA <= x"f8be"; + when x"2fc" => DATA <= x"f9c6"; + when x"2fd" => DATA <= x"fa50"; + when x"2fe" => DATA <= x"fcae"; + when x"2ff" => DATA <= x"fca2"; + when x"300" => DATA <= x"fc6c"; + when x"301" => DATA <= x"fb94"; + when x"302" => DATA <= x"fb32"; + when x"303" => DATA <= x"fc5e"; + when x"304" => DATA <= x"fc86"; + when x"305" => DATA <= x"fbd8"; + when x"306" => DATA <= x"fb66"; + when x"307" => DATA <= x"fd7a"; + when x"308" => DATA <= x"fd2a"; + when x"309" => DATA <= x"fd18"; + when x"30a" => DATA <= x"fd86"; + when x"30b" => DATA <= x"9440"; + when x"30c" => DATA <= x"09f7"; + when x"30d" => DATA <= x"002a"; + when x"30e" => DATA <= x"2017"; + when x"30f" => DATA <= x"000d"; + when x"310" => DATA <= x"02fa"; + when x"311" => DATA <= x"0087"; + when x"312" => DATA <= x"6081"; + when x"313" => DATA <= x"9840"; + when x"314" => DATA <= x"09f7"; + when x"315" => DATA <= x"001a"; + when x"316" => DATA <= x"0ac2"; + when x"317" => DATA <= x"02fb"; + when x"318" => DATA <= x"0087"; + when x"319" => DATA <= x"6081"; + when x"31a" => DATA <= x"09f7"; + when x"31b" => DATA <= x"fe42"; + when x"31c" => DATA <= x"9021"; + when x"31d" => DATA <= x"0ac2"; + when x"31e" => DATA <= x"02fb"; + when x"31f" => DATA <= x"0087"; + when x"320" => DATA <= x"09f7"; + when x"321" => DATA <= x"0002"; + when x"322" => DATA <= x"1040"; + when x"323" => DATA <= x"1026"; + when x"324" => DATA <= x"97c0"; + when x"325" => DATA <= x"fff4"; + when x"326" => DATA <= x"45c0"; + when x"327" => DATA <= x"00bf"; + when x"328" => DATA <= x"03fb"; + when x"329" => DATA <= x"1580"; + when x"32a" => DATA <= x"901f"; + when x"32b" => DATA <= x"fff6"; + when x"32c" => DATA <= x"0087"; + when x"32d" => DATA <= x"97c0"; + when x"32e" => DATA <= x"fff0"; + when x"32f" => DATA <= x"80fd"; + when x"330" => DATA <= x"97c0"; + when x"331" => DATA <= x"fff2"; + when x"332" => DATA <= x"0087"; + when x"333" => DATA <= x"97c0"; + when x"334" => DATA <= x"fffc"; + when x"335" => DATA <= x"80fd"; when x"336" => DATA <= x"97c0"; - when x"337" => DATA <= x"fffc"; - when x"338" => DATA <= x"811d"; - when x"339" => DATA <= x"97c0"; - when x"33a" => DATA <= x"fff0"; - when x"33b" => DATA <= x"8103"; - when x"33c" => DATA <= x"1580"; - when x"33d" => DATA <= x"005f"; - when x"33e" => DATA <= x"f5f0"; - when x"33f" => DATA <= x"97c0"; - when x"340" => DATA <= x"fff2"; - when x"341" => DATA <= x"8110"; - when x"342" => DATA <= x"1066"; - when x"343" => DATA <= x"10a6"; - when x"344" => DATA <= x"09f7"; - when x"345" => DATA <= x"ffc6"; - when x"346" => DATA <= x"1002"; - when x"347" => DATA <= x"09f7"; - when x"348" => DATA <= x"ffc0"; - when x"349" => DATA <= x"1001"; - when x"34a" => DATA <= x"09f7"; - when x"34b" => DATA <= x"ffba"; - when x"34c" => DATA <= x"09df"; - when x"34d" => DATA <= x"f5ec"; - when x"34e" => DATA <= x"1582"; - when x"34f" => DATA <= x"1581"; - when x"350" => DATA <= x"1580"; - when x"351" => DATA <= x"0002"; - when x"352" => DATA <= x"09df"; - when x"353" => DATA <= x"f5e4"; + when x"337" => DATA <= x"fffe"; + when x"338" => DATA <= x"0087"; + when x"339" => DATA <= x"1026"; + when x"33a" => DATA <= x"97c0"; + when x"33b" => DATA <= x"fffc"; + when x"33c" => DATA <= x"811d"; + when x"33d" => DATA <= x"97c0"; + when x"33e" => DATA <= x"fff0"; + when x"33f" => DATA <= x"8103"; + when x"340" => DATA <= x"1580"; + when x"341" => DATA <= x"007f"; + when x"342" => DATA <= x"f76a"; + when x"343" => DATA <= x"97c0"; + when x"344" => DATA <= x"fff2"; + when x"345" => DATA <= x"8110"; + when x"346" => DATA <= x"1066"; + when x"347" => DATA <= x"10a6"; + when x"348" => DATA <= x"09f7"; + when x"349" => DATA <= x"ffc6"; + when x"34a" => DATA <= x"1002"; + when x"34b" => DATA <= x"09f7"; + when x"34c" => DATA <= x"ffc0"; + when x"34d" => DATA <= x"1001"; + when x"34e" => DATA <= x"09f7"; + when x"34f" => DATA <= x"ffba"; + when x"350" => DATA <= x"09ff"; + when x"351" => DATA <= x"f748"; + when x"352" => DATA <= x"1582"; + when x"353" => DATA <= x"1581"; when x"354" => DATA <= x"1580"; when x"355" => DATA <= x"0002"; - when x"356" => DATA <= x"97c0"; - when x"357" => DATA <= x"fffe"; - when x"358" => DATA <= x"8016"; - when x"359" => DATA <= x"1066"; - when x"35a" => DATA <= x"09f7"; - when x"35b" => DATA <= x"fdbe"; - when x"35c" => DATA <= x"17c1"; - when x"35d" => DATA <= x"f5ea"; + when x"356" => DATA <= x"09ff"; + when x"357" => DATA <= x"f734"; + when x"358" => DATA <= x"1580"; + when x"359" => DATA <= x"0002"; + when x"35a" => DATA <= x"97c0"; + when x"35b" => DATA <= x"fffe"; + when x"35c" => DATA <= x"8016"; + when x"35d" => DATA <= x"1066"; when x"35e" => DATA <= x"09f7"; - when x"35f" => DATA <= x"fdb6"; - when x"360" => DATA <= x"9011"; - when x"361" => DATA <= x"09f7"; - when x"362" => DATA <= x"fdb0"; - when x"363" => DATA <= x"1011"; - when x"364" => DATA <= x"02fc"; - when x"365" => DATA <= x"1581"; - when x"366" => DATA <= x"1580"; - when x"367" => DATA <= x"17c0"; - when x"368" => DATA <= x"f5ea"; - when x"369" => DATA <= x"17ce"; - when x"36a" => DATA <= x"f5e8"; - when x"36b" => DATA <= x"0002"; - when x"36c" => DATA <= x"1580"; - when x"36d" => DATA <= x"005f"; + when x"35f" => DATA <= x"fdba"; + when x"360" => DATA <= x"17c1"; + when x"361" => DATA <= x"f5ea"; + when x"362" => DATA <= x"09f7"; + when x"363" => DATA <= x"fdb2"; + when x"364" => DATA <= x"9011"; + when x"365" => DATA <= x"09f7"; + when x"366" => DATA <= x"fdac"; + when x"367" => DATA <= x"1011"; + when x"368" => DATA <= x"02fc"; + when x"369" => DATA <= x"1581"; + when x"36a" => DATA <= x"1580"; + when x"36b" => DATA <= x"17c0"; + when x"36c" => DATA <= x"f5ea"; + when x"36d" => DATA <= x"17ce"; when x"36e" => DATA <= x"f5e8"; - when x"36f" => DATA <= x"1026"; - when x"370" => DATA <= x"09f7"; - when x"371" => DATA <= x"ff7a"; - when x"372" => DATA <= x"1380"; - when x"373" => DATA <= x"2017"; - when x"374" => DATA <= x"0005"; - when x"375" => DATA <= x"0331"; - when x"376" => DATA <= x"09f7"; - when x"377" => DATA <= x"ff6e"; - when x"378" => DATA <= x"103f"; - when x"379" => DATA <= x"f707"; + when x"36f" => DATA <= x"0002"; + when x"370" => DATA <= x"1580"; + when x"371" => DATA <= x"007f"; + when x"372" => DATA <= x"f702"; + when x"373" => DATA <= x"1026"; + when x"374" => DATA <= x"09f7"; + when x"375" => DATA <= x"ff7a"; + when x"376" => DATA <= x"1380"; + when x"377" => DATA <= x"2017"; + when x"378" => DATA <= x"0005"; + when x"379" => DATA <= x"0331"; when x"37a" => DATA <= x"09f7"; - when x"37b" => DATA <= x"ff66"; - when x"37c" => DATA <= x"103f"; - when x"37d" => DATA <= x"f6fe"; + when x"37b" => DATA <= x"ff6e"; + when x"37c" => DATA <= x"901f"; -- was 903f + when x"37d" => DATA <= x"f5fb"; -- was f6ff when x"37e" => DATA <= x"09f7"; - when x"37f" => DATA <= x"ff5e"; - when x"380" => DATA <= x"103f"; - when x"381" => DATA <= x"f6f5"; + when x"37f" => DATA <= x"ff66"; + when x"380" => DATA <= x"901f"; -- was 903f + when x"381" => DATA <= x"f5fa"; -- was f6f6 when x"382" => DATA <= x"09f7"; - when x"383" => DATA <= x"ff56"; - when x"384" => DATA <= x"103f"; - when x"385" => DATA <= x"f6ec"; - when x"386" => DATA <= x"97c0"; - when x"387" => DATA <= x"fffa"; - when x"388" => DATA <= x"97c0"; - when x"389" => DATA <= x"fffa"; - when x"38a" => DATA <= x"09f7"; - when x"38b" => DATA <= x"ff46"; - when x"38c" => DATA <= x"1580"; - when x"38d" => DATA <= x"6000"; - when x"38e" => DATA <= x"1c1f"; - when x"38f" => DATA <= x"ffc0"; - when x"390" => DATA <= x"0084"; - when x"391" => DATA <= x"1066"; - when x"392" => DATA <= x"15c1"; - when x"393" => DATA <= x"0100"; - when x"394" => DATA <= x"2017"; - when x"395" => DATA <= x"000c"; - when x"396" => DATA <= x"870f"; - when x"397" => DATA <= x"0211"; - when x"398" => DATA <= x"17c0"; - when x"399" => DATA <= x"f5f8"; - when x"39a" => DATA <= x"8bff"; - when x"39b" => DATA <= x"00c0"; - when x"39c" => DATA <= x"80fd"; - when x"39d" => DATA <= x"941f"; - when x"39e" => DATA <= x"fffa"; - when x"39f" => DATA <= x"0ac1"; - when x"3a0" => DATA <= x"02f9"; - when x"3a1" => DATA <= x"8bdf"; - when x"3a2" => DATA <= x"fff8"; - when x"3a3" => DATA <= x"80fd"; - when x"3a4" => DATA <= x"0a1f"; - when x"3a5" => DATA <= x"fffa"; - when x"3a6" => DATA <= x"1581"; - when x"3a7" => DATA <= x"1580"; - when x"3a8" => DATA <= x"0002"; - when x"3a9" => DATA <= x"17c0"; - when x"3aa" => DATA <= x"f5f8"; - when x"3ab" => DATA <= x"8bdf"; - when x"3ac" => DATA <= x"fff8"; - when x"3ad" => DATA <= x"80fd"; - when x"3ae" => DATA <= x"97d0"; - when x"3af" => DATA <= x"fffa"; - when x"3b0" => DATA <= x"0ac1"; - when x"3b1" => DATA <= x"02f9"; - when x"3b2" => DATA <= x"1581"; - when x"3b3" => DATA <= x"1580"; - when x"3b4" => DATA <= x"0002"; - when x"3b5" => DATA <= x"1026"; - when x"3b6" => DATA <= x"17c0"; - when x"3b7" => DATA <= x"f5f8"; - when x"3b8" => DATA <= x"941f"; - when x"3b9" => DATA <= x"fffa"; - when x"3ba" => DATA <= x"101f"; + when x"383" => DATA <= x"ff5e"; + when x"384" => DATA <= x"901f"; -- was 903f + when x"385" => DATA <= x"f5f9"; -- was f6ed + when x"386" => DATA <= x"09f7"; + when x"387" => DATA <= x"ff56"; + when x"388" => DATA <= x"901f"; -- was 903f + when x"389" => DATA <= x"f5f8"; -- was f6e4 + when x"38a" => DATA <= x"97c0"; + when x"38b" => DATA <= x"fffa"; + when x"38c" => DATA <= x"97c0"; + when x"38d" => DATA <= x"fffa"; + when x"38e" => DATA <= x"09f7"; + when x"38f" => DATA <= x"ff46"; + when x"390" => DATA <= x"1580"; + when x"391" => DATA <= x"6000"; + when x"392" => DATA <= x"1c1f"; + when x"393" => DATA <= x"ffc8"; + when x"394" => DATA <= x"0080"; + when x"395" => DATA <= x"1066"; + when x"396" => DATA <= x"15c1"; + when x"397" => DATA <= x"0100"; + when x"398" => DATA <= x"2017"; + when x"399" => DATA <= x"000c"; + when x"39a" => DATA <= x"870f"; + when x"39b" => DATA <= x"0211"; + when x"39c" => DATA <= x"17c0"; + when x"39d" => DATA <= x"f5f8"; + when x"39e" => DATA <= x"8bdf"; + when x"39f" => DATA <= x"fff8"; + when x"3a0" => DATA <= x"80fd"; + when x"3a1" => DATA <= x"941f"; + when x"3a2" => DATA <= x"fffa"; + when x"3a3" => DATA <= x"0ac1"; + when x"3a4" => DATA <= x"02f9"; + when x"3a5" => DATA <= x"8bdf"; + when x"3a6" => DATA <= x"fff8"; + when x"3a7" => DATA <= x"80fd"; + when x"3a8" => DATA <= x"8a1f"; + when x"3a9" => DATA <= x"fffa"; + when x"3aa" => DATA <= x"1581"; + when x"3ab" => DATA <= x"1580"; + when x"3ac" => DATA <= x"0002"; + when x"3ad" => DATA <= x"17c0"; + when x"3ae" => DATA <= x"f5f8"; + when x"3af" => DATA <= x"8bdf"; + when x"3b0" => DATA <= x"fff8"; + when x"3b1" => DATA <= x"80fd"; + when x"3b2" => DATA <= x"97d0"; + when x"3b3" => DATA <= x"fffa"; + when x"3b4" => DATA <= x"0ac1"; + when x"3b5" => DATA <= x"02f9"; + when x"3b6" => DATA <= x"1581"; + when x"3b7" => DATA <= x"1580"; + when x"3b8" => DATA <= x"0002"; + when x"3b9" => DATA <= x"1026"; + when x"3ba" => DATA <= x"17c0"; when x"3bb" => DATA <= x"f5f8"; - when x"3bc" => DATA <= x"1580"; - when x"3bd" => DATA <= x"0002"; - when x"3be" => DATA <= x"1026"; - when x"3bf" => DATA <= x"17c0"; - when x"3c0" => DATA <= x"f5f8"; - when x"3c1" => DATA <= x"97d0"; - when x"3c2" => DATA <= x"fffa"; - when x"3c3" => DATA <= x"101f"; + when x"3bc" => DATA <= x"941f"; + when x"3bd" => DATA <= x"fffa"; + when x"3be" => DATA <= x"101f"; + when x"3bf" => DATA <= x"f5f8"; + when x"3c0" => DATA <= x"1580"; + when x"3c1" => DATA <= x"0002"; + when x"3c2" => DATA <= x"1026"; + when x"3c3" => DATA <= x"17c0"; when x"3c4" => DATA <= x"f5f8"; - when x"3c5" => DATA <= x"1580"; - when x"3c6" => DATA <= x"0002"; - when x"3c7" => DATA <= x"1026"; - when x"3c8" => DATA <= x"17c0"; - when x"3c9" => DATA <= x"f5f8"; - when x"3ca" => DATA <= x"941f"; - when x"3cb" => DATA <= x"fffa"; - when x"3cc" => DATA <= x"941f"; - when x"3cd" => DATA <= x"fffa"; - when x"3ce" => DATA <= x"101f"; - when x"3cf" => DATA <= x"f5f8"; - when x"3d0" => DATA <= x"1580"; - when x"3d1" => DATA <= x"0002"; - when x"3d2" => DATA <= x"1026"; - when x"3d3" => DATA <= x"17c0"; - when x"3d4" => DATA <= x"f5f8"; - when x"3d5" => DATA <= x"97d0"; - when x"3d6" => DATA <= x"fffa"; - when x"3d7" => DATA <= x"97d0"; - when x"3d8" => DATA <= x"fffa"; - when x"3d9" => DATA <= x"101f"; - when x"3da" => DATA <= x"f5f8"; - when x"3db" => DATA <= x"1580"; - when x"3dc" => DATA <= x"0002"; - when x"3dd" => DATA <= x"8a1f"; - when x"3de" => DATA <= x"fffa"; - when x"3df" => DATA <= x"0002"; - when x"3e0" => DATA <= x"ff6a"; - when x"3e1" => DATA <= x"ff7c"; - when x"3e2" => DATA <= x"ff8e"; - when x"3e3" => DATA <= x"ffa4"; - when x"3e4" => DATA <= x"ffba"; - when x"3e5" => DATA <= x"ffba"; - when x"3e6" => DATA <= x"ffba"; - when x"3e7" => DATA <= x"ffba"; - when x"3e8" => DATA <= x"0000"; - when x"3e9" => DATA <= x"0000"; - when x"3ea" => DATA <= x"0000"; - when x"3eb" => DATA <= x"0000"; + when x"3c5" => DATA <= x"97d0"; + when x"3c6" => DATA <= x"fffa"; + when x"3c7" => DATA <= x"101f"; + when x"3c8" => DATA <= x"f5f8"; + when x"3c9" => DATA <= x"1580"; + when x"3ca" => DATA <= x"0002"; + when x"3cb" => DATA <= x"1026"; + when x"3cc" => DATA <= x"17c0"; + when x"3cd" => DATA <= x"f5f8"; + when x"3ce" => DATA <= x"941f"; + when x"3cf" => DATA <= x"fffa"; + when x"3d0" => DATA <= x"941f"; + when x"3d1" => DATA <= x"fffa"; + when x"3d2" => DATA <= x"101f"; + when x"3d3" => DATA <= x"f5f8"; + when x"3d4" => DATA <= x"1580"; + when x"3d5" => DATA <= x"0002"; + when x"3d6" => DATA <= x"1026"; + when x"3d7" => DATA <= x"17c0"; + when x"3d8" => DATA <= x"f5f8"; + when x"3d9" => DATA <= x"97d0"; + when x"3da" => DATA <= x"fffa"; + when x"3db" => DATA <= x"97d0"; + when x"3dc" => DATA <= x"fffa"; + when x"3dd" => DATA <= x"101f"; + when x"3de" => DATA <= x"f5f8"; + when x"3df" => DATA <= x"1580"; + when x"3e0" => DATA <= x"0002"; + when x"3e1" => DATA <= x"8a1f"; + when x"3e2" => DATA <= x"fffa"; + when x"3e3" => DATA <= x"0002"; + when x"3e4" => DATA <= x"ff72"; + when x"3e5" => DATA <= x"ff84"; + when x"3e6" => DATA <= x"ff96"; + when x"3e7" => DATA <= x"ffac"; + when x"3e8" => DATA <= x"ffc2"; + when x"3e9" => DATA <= x"ffc2"; + when x"3ea" => DATA <= x"ffc2"; + when x"3eb" => DATA <= x"ffc2"; when x"3ec" => DATA <= x"0000"; when x"3ed" => DATA <= x"0000"; when x"3ee" => DATA <= x"0000"; From 55a5a009f6e00fb2197de8e4b56d8968fcc97f86 Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 10 Aug 2015 17:13:46 +0100 Subject: [PATCH 23/61] Fixed the clocking issue breaking LOAD, updated to latest v18 client with a few patches Change-Id: I0bc436c4e1ef94b1106f5cdbb768f788bdbb89df --- src/LX9Co_CoProPDP11.vhd | 37 +- src/ROM/tuberom_pdp11.vhd | 1452 ++++++++++++++++++------------------- 2 files changed, 745 insertions(+), 744 deletions(-) diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index f66f6b6..f2930ba 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -235,24 +235,25 @@ begin -- test signals -------------------------------------------------------- - test(8) <= cpu_wr; - test(7) <= cpu_dw8; - test(6) <= '1' when cpu_addr(15 downto 4) = x"f5f" else '0'; - test(5) <= '1' when cpu_addr(15 downto 8) = x"f5" else '0'; +-- test(8) <= clk_cpu; +-- test(7) <= clk_tube; +-- test(6) <= '1' when p_cs_b = '0' and cpu_addr(3 downto 1) = "101" and cpu_wr = '0' else '0'; +-- test(5) <= cpu_NMI_n; +-- test(4) <= cpu_din(3); +-- test(3) <= cpu_din(2); +-- test(2) <= cpu_din(1); +-- test(1) <= cpu_din(0); + --- test(8) <= '1' when cpu_wr = '1' and cpu_addr = x"f5fb" else '0'; --- test(7) <= '1' when cpu_wr = '1' and cpu_addr = x"f5fa" else '0'; --- test(6) <= '1' when cpu_wr = '1' and cpu_addr = x"f5f9" else '0'; --- test(5) <= '1' when cpu_wr = '1' and cpu_addr = x"f5f8" else '0'; --- test(8) <= '1' when ifetch = '1' and cpu_addr = x"ff72" else '0'; --- test(7) <= '1' when ifetch = '1' and cpu_addr = x"ff82" else '0'; --- test(6) <= '1' when ifetch = '1' and cpu_addr = x"ff84" else '0'; --- test(5) <= '1' when ifetch = '1' and cpu_addr = x"ff94" else '0'; - test(4) <= cpu_IRQ_req; - test(3) <= cpu_NMI_req; - test(2) <= '1' when ifetch = '1' and (cpu_addr = x"ff84" or cpu_addr = x"ff72") else '0'; - test(1) <= '1' when ifetch = '1' and cpu_addr = x"fef4" else '0'; + test(8) <= '1' when ifetch = '1' and cpu_addr = o"174340" else '0'; + test(7) <= '1' when ifetch = '1' and cpu_addr = o"174470" else '0'; + test(6) <= '1' when ifetch = '1' and cpu_addr = o"174514" else '0'; + test(5) <= '1' when ifetch = '1' and cpu_addr = o"174564" else '0'; + test(4) <= '1' when ifetch = '1' and cpu_addr = o"174600" else '0'; + test(3) <= '1' when ifetch = '1' and cpu_addr = o"174610" else '0'; + test(2) <= '1' when ifetch = '1' and cpu_addr = o"174612" else '0'; + test(1) <= '1' when ifetch = '0' and cpu_addr = x"80a6" else '0'; -- -------------------------------------------------------- @@ -262,9 +263,9 @@ begin begin if rising_edge(clk_16M00) then clken_counter <= clken_counter + 1; - clk_cpu <= not clken_counter(1); + clk_cpu <= not clken_counter(0); + clk_tube <= not clken_counter(0); clk_ram <= clk_cpu; - clk_tube <= clk_cpu; end if; end process; diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 1c618ef..f2fb7ca 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -28,300 +28,300 @@ begin DATA <= (others => '0'); case rom_addr is when x"000" => DATA <= x"0077"; - when x"001" => DATA <= x"001a"; - when x"002" => DATA <= x"500a"; + when x"001" => DATA <= x"0018"; + when x"002" => DATA <= x"500d"; when x"003" => DATA <= x"5044"; - when x"004" => DATA <= x"312d"; - when x"005" => DATA <= x"2031"; - when x"006" => DATA <= x"5554"; - when x"007" => DATA <= x"4542"; - when x"008" => DATA <= x"3620"; - when x"009" => DATA <= x"4b34"; - when x"00a" => DATA <= x"3020"; - when x"00b" => DATA <= x"312e"; - when x"00c" => DATA <= x"0a38"; - when x"00d" => DATA <= x"0d0a"; - when x"00e" => DATA <= x"0000"; - when x"00f" => DATA <= x"15c6"; - when x"010" => DATA <= x"f500"; - when x"011" => DATA <= x"09f7"; - when x"012" => DATA <= x"0566"; - when x"013" => DATA <= x"17df"; - when x"014" => DATA <= x"f5fc"; - when x"015" => DATA <= x"f5f8"; - when x"016" => DATA <= x"15c1"; - when x"017" => DATA <= x"f804"; - when x"018" => DATA <= x"09f7"; - when x"019" => DATA <= x"0084"; - when x"01a" => DATA <= x"09f7"; - when x"01b" => DATA <= x"0476"; - when x"01c" => DATA <= x"00a1"; - when x"01d" => DATA <= x"09f7"; - when x"01e" => DATA <= x"0096"; - when x"01f" => DATA <= x"15c6"; - when x"020" => DATA <= x"f500"; - when x"021" => DATA <= x"09f7"; - when x"022" => DATA <= x"0546"; - when x"023" => DATA <= x"15c1"; - when x"024" => DATA <= x"f862"; - when x"025" => DATA <= x"09f7"; - when x"026" => DATA <= x"006a"; - when x"027" => DATA <= x"15c1"; - when x"028" => DATA <= x"f86a"; - when x"029" => DATA <= x"09f7"; - when x"02a" => DATA <= x"01fa"; - when x"02b" => DATA <= x"870c"; - when x"02c" => DATA <= x"15c0"; - when x"02d" => DATA <= x"f520"; - when x"02e" => DATA <= x"09f7"; - when x"02f" => DATA <= x"005e"; - when x"030" => DATA <= x"01ee"; - when x"031" => DATA <= x"4450"; - when x"032" => DATA <= x"3150"; - when x"033" => DATA <= x"3e31"; - when x"034" => DATA <= x"002a"; - when x"035" => DATA <= x"f520"; - when x"036" => DATA <= x"20c0"; - when x"037" => DATA <= x"ffff"; - when x"038" => DATA <= x"15c0"; - when x"039" => DATA <= x"007e"; - when x"03a" => DATA <= x"09f7"; - when x"03b" => DATA <= x"014e"; - when x"03c" => DATA <= x"09f7"; - when x"03d" => DATA <= x"0664"; - when x"03e" => DATA <= x"4511"; - when x"03f" => DATA <= x"6373"; - when x"040" => DATA <= x"7061"; - when x"041" => DATA <= x"0065"; - when x"042" => DATA <= x"15c6"; - when x"043" => DATA <= x"f500"; - when x"044" => DATA <= x"1001"; - when x"045" => DATA <= x"0a81"; - when x"046" => DATA <= x"09f7"; - when x"047" => DATA <= x"0412"; - when x"048" => DATA <= x"09f7"; - when x"049" => DATA <= x"0024"; - when x"04a" => DATA <= x"01d4"; - when x"04b" => DATA <= x"6000"; - when x"04c" => DATA <= x"901f"; - when x"04d" => DATA <= x"f5e6"; - when x"04e" => DATA <= x"0087"; - when x"04f" => DATA <= x"e5c1"; - when x"050" => DATA <= x"0002"; - when x"051" => DATA <= x"9440"; - when x"052" => DATA <= x"45c0"; - when x"053" => DATA <= x"ff00"; - when x"054" => DATA <= x"9241"; - when x"055" => DATA <= x"45c1"; - when x"056" => DATA <= x"ff00"; - when x"057" => DATA <= x"00c1"; - when x"058" => DATA <= x"5001"; - when x"059" => DATA <= x"0087"; - when x"05a" => DATA <= x"09f7"; - when x"05b" => DATA <= x"03f6"; - when x"05c" => DATA <= x"9440"; - when x"05d" => DATA <= x"02fc"; - when x"05e" => DATA <= x"0087"; - when x"05f" => DATA <= x"1066"; - when x"060" => DATA <= x"1026"; - when x"061" => DATA <= x"15c0"; - when x"062" => DATA <= x"0002"; - when x"063" => DATA <= x"09f7"; - when x"064" => DATA <= x"057c"; - when x"065" => DATA <= x"1581"; - when x"066" => DATA <= x"09f7"; - when x"067" => DATA <= x"0546"; - when x"068" => DATA <= x"1581"; - when x"069" => DATA <= x"00b1"; - when x"06a" => DATA <= x"09f7"; - when x"06b" => DATA <= x"03a2"; - when x"06c" => DATA <= x"8102"; - when x"06d" => DATA <= x"0a00"; - when x"06e" => DATA <= x"0087"; - when x"06f" => DATA <= x"15c2"; - when x"070" => DATA <= x"0000"; - when x"071" => DATA <= x"0c42"; - when x"072" => DATA <= x"17c1"; - when x"073" => DATA <= x"f5f8"; - when x"074" => DATA <= x"1066"; - when x"075" => DATA <= x"9c40"; - when x"076" => DATA <= x"0007"; - when x"077" => DATA <= x"45c0"; - when x"078" => DATA <= x"ff00"; - when x"079" => DATA <= x"6001"; - when x"07a" => DATA <= x"8bd1"; - when x"07b" => DATA <= x"0229"; - when x"07c" => DATA <= x"a457"; - when x"07d" => DATA <= x"0028"; - when x"07e" => DATA <= x"0226"; - when x"07f" => DATA <= x"a457"; - when x"080" => DATA <= x"0043"; - when x"081" => DATA <= x"0223"; - when x"082" => DATA <= x"a457"; - when x"083" => DATA <= x"0029"; - when x"084" => DATA <= x"0220"; - when x"085" => DATA <= x"1381"; - when x"086" => DATA <= x"9c40"; - when x"087" => DATA <= x"0006"; - when x"088" => DATA <= x"0bd7"; - when x"089" => DATA <= x"0040"; - when x"08a" => DATA <= x"0345"; - when x"08b" => DATA <= x"45c0"; - when x"08c" => DATA <= x"00f0"; - when x"08d" => DATA <= x"2017"; - when x"08e" => DATA <= x"0007"; - when x"08f" => DATA <= x"0240"; - when x"090" => DATA <= x"9c40"; - when x"091" => DATA <= x"0006"; - when x"092" => DATA <= x"0bd7"; - when x"093" => DATA <= x"0020"; - when x"094" => DATA <= x"030e"; - when x"095" => DATA <= x"9c40"; - when x"096" => DATA <= x"0007"; - when x"097" => DATA <= x"45c0"; - when x"098" => DATA <= x"ff00"; - when x"099" => DATA <= x"6001"; - when x"09a" => DATA <= x"0a81"; - when x"09b" => DATA <= x"8bd1"; - when x"09c" => DATA <= x"02fe"; - when x"09d" => DATA <= x"6057"; - when x"09e" => DATA <= x"0004"; - when x"09f" => DATA <= x"09f7"; - when x"0a0" => DATA <= x"ff60"; - when x"0a1" => DATA <= x"6581"; - when x"0a2" => DATA <= x"1066"; - when x"0a3" => DATA <= x"65c2"; - when x"0a4" => DATA <= x"0002"; - when x"0a5" => DATA <= x"1581"; - when x"0a6" => DATA <= x"45c1"; - when x"0a7" => DATA <= x"0001"; - when x"0a8" => DATA <= x"1240"; - when x"0a9" => DATA <= x"2017"; - when x"0aa" => DATA <= x"0105"; - when x"0ab" => DATA <= x"8718"; - when x"0ac" => DATA <= x"2017"; - when x"0ad" => DATA <= x"0109"; - when x"0ae" => DATA <= x"8615"; - when x"0af" => DATA <= x"1c42"; - when x"0b0" => DATA <= x"0002"; - when x"0b1" => DATA <= x"1c43"; - when x"0b2" => DATA <= x"0004"; - when x"0b3" => DATA <= x"60c2"; - when x"0b4" => DATA <= x"1c43"; - when x"0b5" => DATA <= x"0006"; - when x"0b6" => DATA <= x"0a00"; - when x"0b7" => DATA <= x"65c1"; - when x"0b8" => DATA <= x"0010"; - when x"0b9" => DATA <= x"1450"; - when x"0ba" => DATA <= x"e097"; - when x"0bb" => DATA <= x"0002"; - when x"0bc" => DATA <= x"02fc"; - when x"0bd" => DATA <= x"0bc3"; - when x"0be" => DATA <= x"0304"; - when x"0bf" => DATA <= x"0a10"; - when x"0c0" => DATA <= x"e0d7"; - when x"0c1" => DATA <= x"0002"; - when x"0c2" => DATA <= x"02fc"; - when x"0c3" => DATA <= x"0a01"; - when x"0c4" => DATA <= x"1080"; - when x"0c5" => DATA <= x"0c80"; - when x"0c6" => DATA <= x"0308"; - when x"0c7" => DATA <= x"17e6"; - when x"0c8" => DATA <= x"f5fc"; - when x"0c9" => DATA <= x"105f"; - when x"0ca" => DATA <= x"f5fc"; - when x"0cb" => DATA <= x"09c9"; - when x"0cc" => DATA <= x"159f"; - when x"0cd" => DATA <= x"f5fc"; - when x"0ce" => DATA <= x"0087"; - when x"0cf" => DATA <= x"0049"; - when x"0d0" => DATA <= x"0c02"; - when x"0d1" => DATA <= x"860f"; - when x"0d2" => DATA <= x"09f7"; - when x"0d3" => DATA <= x"0538"; - when x"0d4" => DATA <= x"54f9"; - when x"0d5" => DATA <= x"6968"; - when x"0d6" => DATA <= x"2073"; - when x"0d7" => DATA <= x"7369"; - when x"0d8" => DATA <= x"6e20"; - when x"0d9" => DATA <= x"746f"; - when x"0da" => DATA <= x"5020"; - when x"0db" => DATA <= x"5044"; - when x"0dc" => DATA <= x"312d"; - when x"0dd" => DATA <= x"2031"; - when x"0de" => DATA <= x"6f63"; - when x"0df" => DATA <= x"6564"; - when x"0e0" => DATA <= x"0000"; - when x"0e1" => DATA <= x"0077"; - when x"0e2" => DATA <= x"fe78"; - when x"0e3" => DATA <= x"8bc0"; - when x"0e4" => DATA <= x"810d"; - when x"0e5" => DATA <= x"1026"; - when x"0e6" => DATA <= x"15c0"; - when x"0e7" => DATA <= x"0004"; - when x"0e8" => DATA <= x"09f7"; - when x"0e9" => DATA <= x"046c"; - when x"0ea" => DATA <= x"1380"; - when x"0eb" => DATA <= x"09f7"; - when x"0ec" => DATA <= x"046c"; - when x"0ed" => DATA <= x"09f7"; - when x"0ee" => DATA <= x"029c"; - when x"0ef" => DATA <= x"1001"; - when x"0f0" => DATA <= x"1580"; - when x"0f1" => DATA <= x"0087"; - when x"0f2" => DATA <= x"2017"; - when x"0f3" => DATA <= x"0082"; - when x"0f4" => DATA <= x"0326"; - when x"0f5" => DATA <= x"2017"; - when x"0f6" => DATA <= x"0083"; - when x"0f7" => DATA <= x"0326"; - when x"0f8" => DATA <= x"2017"; - when x"0f9" => DATA <= x"0084"; - when x"0fa" => DATA <= x"0328"; - when x"0fb" => DATA <= x"1026"; - when x"0fc" => DATA <= x"15c0"; - when x"0fd" => DATA <= x"0006"; - when x"0fe" => DATA <= x"09f7"; - when x"0ff" => DATA <= x"0440"; - when x"100" => DATA <= x"1080"; - when x"101" => DATA <= x"09f7"; - when x"102" => DATA <= x"0440"; - when x"103" => DATA <= x"1580"; - when x"104" => DATA <= x"09f7"; - when x"105" => DATA <= x"043a"; - when x"106" => DATA <= x"2017"; - when x"107" => DATA <= x"009d"; - when x"108" => DATA <= x"030f"; - when x"109" => DATA <= x"2017"; - when x"10a" => DATA <= x"008e"; - when x"10b" => DATA <= x"030d"; - when x"10c" => DATA <= x"1026"; - when x"10d" => DATA <= x"09f7"; - when x"10e" => DATA <= x"025c"; - when x"10f" => DATA <= x"6017"; - when x"110" => DATA <= x"ff80"; - when x"111" => DATA <= x"09f7"; - when x"112" => DATA <= x"0254"; - when x"113" => DATA <= x"1002"; - when x"114" => DATA <= x"09f7"; - when x"115" => DATA <= x"024e"; - when x"116" => DATA <= x"1001"; - when x"117" => DATA <= x"1580"; - when x"118" => DATA <= x"0087"; - when x"119" => DATA <= x"0077"; - when x"11a" => DATA <= x"fe9c"; - when x"11b" => DATA <= x"0a01"; - when x"11c" => DATA <= x"0a02"; - when x"11d" => DATA <= x"0087"; - when x"11e" => DATA <= x"15c1"; - when x"11f" => DATA <= x"0100"; - when x"120" => DATA <= x"15c2"; - when x"121" => DATA <= x"0001"; - when x"122" => DATA <= x"0087"; - when x"123" => DATA <= x"15c1"; - when x"124" => DATA <= x"f500"; - when x"125" => DATA <= x"15c2"; - when x"126" => DATA <= x"00f5"; + when x"004" => DATA <= x"3131"; + when x"005" => DATA <= x"5420"; + when x"006" => DATA <= x"4255"; + when x"007" => DATA <= x"2045"; + when x"008" => DATA <= x"3436"; + when x"009" => DATA <= x"204b"; + when x"00a" => DATA <= x"2e30"; + when x"00b" => DATA <= x"3831"; + when x"00c" => DATA <= x"0d0d"; + when x"00d" => DATA <= x"0000"; + when x"00e" => DATA <= x"15c6"; + when x"00f" => DATA <= x"f500"; + when x"010" => DATA <= x"09f7"; + when x"011" => DATA <= x"056e"; + when x"012" => DATA <= x"17df"; + when x"013" => DATA <= x"f5fc"; + when x"014" => DATA <= x"f5f8"; + when x"015" => DATA <= x"15c1"; + when x"016" => DATA <= x"f804"; + when x"017" => DATA <= x"09f7"; + when x"018" => DATA <= x"0088"; + when x"019" => DATA <= x"09f7"; + when x"01a" => DATA <= x"047e"; + when x"01b" => DATA <= x"00a1"; + when x"01c" => DATA <= x"09f7"; + when x"01d" => DATA <= x"009a"; + when x"01e" => DATA <= x"15c6"; + when x"01f" => DATA <= x"f500"; + when x"020" => DATA <= x"09f7"; + when x"021" => DATA <= x"054e"; + when x"022" => DATA <= x"15c1"; + when x"023" => DATA <= x"f860"; + when x"024" => DATA <= x"09f7"; + when x"025" => DATA <= x"006e"; + when x"026" => DATA <= x"15c1"; + when x"027" => DATA <= x"f868"; + when x"028" => DATA <= x"09f7"; + when x"029" => DATA <= x"01fc"; + when x"02a" => DATA <= x"870c"; + when x"02b" => DATA <= x"15c0"; + when x"02c" => DATA <= x"f520"; + when x"02d" => DATA <= x"09f7"; + when x"02e" => DATA <= x"0062"; + when x"02f" => DATA <= x"01ee"; + when x"030" => DATA <= x"4450"; + when x"031" => DATA <= x"3150"; + when x"032" => DATA <= x"3e31"; + when x"033" => DATA <= x"002a"; + when x"034" => DATA <= x"f520"; + when x"035" => DATA <= x"20c0"; + when x"036" => DATA <= x"ffff"; + when x"037" => DATA <= x"15c0"; + when x"038" => DATA <= x"007e"; + when x"039" => DATA <= x"09f7"; + when x"03a" => DATA <= x"0148"; + when x"03b" => DATA <= x"09f7"; + when x"03c" => DATA <= x"066c"; + when x"03d" => DATA <= x"4511"; + when x"03e" => DATA <= x"6373"; + when x"03f" => DATA <= x"7061"; + when x"040" => DATA <= x"0065"; + when x"041" => DATA <= x"15c6"; + when x"042" => DATA <= x"f500"; + when x"043" => DATA <= x"1001"; + when x"044" => DATA <= x"0a81"; + when x"045" => DATA <= x"09f7"; + when x"046" => DATA <= x"041a"; + when x"047" => DATA <= x"09f7"; + when x"048" => DATA <= x"0028"; + when x"049" => DATA <= x"09f7"; + when x"04a" => DATA <= x"0412"; + when x"04b" => DATA <= x"01d2"; + when x"04c" => DATA <= x"6000"; + when x"04d" => DATA <= x"901f"; + when x"04e" => DATA <= x"f5e6"; + when x"04f" => DATA <= x"0087"; + when x"050" => DATA <= x"e5c1"; + when x"051" => DATA <= x"0002"; + when x"052" => DATA <= x"9440"; + when x"053" => DATA <= x"45c0"; + when x"054" => DATA <= x"ff00"; + when x"055" => DATA <= x"9241"; + when x"056" => DATA <= x"45c1"; + when x"057" => DATA <= x"ff00"; + when x"058" => DATA <= x"00c1"; + when x"059" => DATA <= x"5001"; + when x"05a" => DATA <= x"0087"; + when x"05b" => DATA <= x"09f7"; + when x"05c" => DATA <= x"03e8"; + when x"05d" => DATA <= x"9440"; + when x"05e" => DATA <= x"02fc"; + when x"05f" => DATA <= x"0087"; + when x"060" => DATA <= x"1066"; + when x"061" => DATA <= x"1026"; + when x"062" => DATA <= x"15c0"; + when x"063" => DATA <= x"0002"; + when x"064" => DATA <= x"09f7"; + when x"065" => DATA <= x"0580"; + when x"066" => DATA <= x"1581"; + when x"067" => DATA <= x"09f7"; + when x"068" => DATA <= x"054a"; + when x"069" => DATA <= x"1581"; + when x"06a" => DATA <= x"00b1"; + when x"06b" => DATA <= x"09f7"; + when x"06c" => DATA <= x"03a0"; + when x"06d" => DATA <= x"8102"; + when x"06e" => DATA <= x"0a00"; + when x"06f" => DATA <= x"0087"; + when x"070" => DATA <= x"15c2"; + when x"071" => DATA <= x"0000"; + when x"072" => DATA <= x"0c42"; + when x"073" => DATA <= x"17c1"; + when x"074" => DATA <= x"f5f8"; + when x"075" => DATA <= x"1066"; + when x"076" => DATA <= x"9c40"; + when x"077" => DATA <= x"0007"; + when x"078" => DATA <= x"45c0"; + when x"079" => DATA <= x"ff00"; + when x"07a" => DATA <= x"6001"; + when x"07b" => DATA <= x"8bd1"; + when x"07c" => DATA <= x"0229"; + when x"07d" => DATA <= x"a457"; + when x"07e" => DATA <= x"0028"; + when x"07f" => DATA <= x"0226"; + when x"080" => DATA <= x"a457"; + when x"081" => DATA <= x"0043"; + when x"082" => DATA <= x"0223"; + when x"083" => DATA <= x"a457"; + when x"084" => DATA <= x"0029"; + when x"085" => DATA <= x"0220"; + when x"086" => DATA <= x"1381"; + when x"087" => DATA <= x"9c40"; + when x"088" => DATA <= x"0006"; + when x"089" => DATA <= x"35c0"; -- was 0bd7 + when x"08a" => DATA <= x"0040"; + when x"08b" => DATA <= x"0345"; + when x"08c" => DATA <= x"45c0"; + when x"08d" => DATA <= x"fff0"; -- was 00ff + when x"08e" => DATA <= x"2017"; + when x"08f" => DATA <= x"0007"; + when x"090" => DATA <= x"0240"; + when x"091" => DATA <= x"9c40"; + when x"092" => DATA <= x"0006"; + when x"093" => DATA <= x"35c0"; -- was 0bd7 + when x"094" => DATA <= x"0020"; + when x"095" => DATA <= x"030e"; + when x"096" => DATA <= x"9c40"; + when x"097" => DATA <= x"0007"; + when x"098" => DATA <= x"45c0"; + when x"099" => DATA <= x"ff00"; + when x"09a" => DATA <= x"6001"; + when x"09b" => DATA <= x"0a81"; + when x"09c" => DATA <= x"8bd1"; + when x"09d" => DATA <= x"02fe"; + when x"09e" => DATA <= x"6057"; + when x"09f" => DATA <= x"0004"; + when x"0a0" => DATA <= x"09f7"; + when x"0a1" => DATA <= x"ff60"; + when x"0a2" => DATA <= x"6581"; + when x"0a3" => DATA <= x"1066"; + when x"0a4" => DATA <= x"65c2"; + when x"0a5" => DATA <= x"0002"; + when x"0a6" => DATA <= x"1581"; + when x"0a7" => DATA <= x"45c1"; + when x"0a8" => DATA <= x"0001"; + when x"0a9" => DATA <= x"1240"; + when x"0aa" => DATA <= x"2017"; + when x"0ab" => DATA <= x"0105"; + when x"0ac" => DATA <= x"8718"; + when x"0ad" => DATA <= x"2017"; + when x"0ae" => DATA <= x"0109"; + when x"0af" => DATA <= x"8615"; + when x"0b0" => DATA <= x"1c42"; + when x"0b1" => DATA <= x"0002"; + when x"0b2" => DATA <= x"1c43"; + when x"0b3" => DATA <= x"0004"; + when x"0b4" => DATA <= x"60c2"; + when x"0b5" => DATA <= x"1c43"; + when x"0b6" => DATA <= x"0006"; + when x"0b7" => DATA <= x"0a00"; + when x"0b8" => DATA <= x"65c1"; + when x"0b9" => DATA <= x"0010"; + when x"0ba" => DATA <= x"1450"; + when x"0bb" => DATA <= x"e097"; + when x"0bc" => DATA <= x"0002"; + when x"0bd" => DATA <= x"02fc"; + when x"0be" => DATA <= x"0bc3"; + when x"0bf" => DATA <= x"0304"; + when x"0c0" => DATA <= x"0a10"; + when x"0c1" => DATA <= x"e0d7"; + when x"0c2" => DATA <= x"0002"; + when x"0c3" => DATA <= x"02fc"; + when x"0c4" => DATA <= x"0a01"; + when x"0c5" => DATA <= x"1080"; + when x"0c6" => DATA <= x"0c80"; + when x"0c7" => DATA <= x"0308"; + when x"0c8" => DATA <= x"17e6"; + when x"0c9" => DATA <= x"f5fc"; + when x"0ca" => DATA <= x"105f"; + when x"0cb" => DATA <= x"f5fc"; + when x"0cc" => DATA <= x"09c9"; + when x"0cd" => DATA <= x"159f"; + when x"0ce" => DATA <= x"f5fc"; + when x"0cf" => DATA <= x"0087"; + when x"0d0" => DATA <= x"0049"; + when x"0d1" => DATA <= x"0c02"; + when x"0d2" => DATA <= x"860a"; + when x"0d3" => DATA <= x"09f7"; + when x"0d4" => DATA <= x"053c"; + when x"0d5" => DATA <= x"4ef9"; + when x"0d6" => DATA <= x"746f"; + when x"0d7" => DATA <= x"5020"; + when x"0d8" => DATA <= x"5044"; + when x"0d9" => DATA <= x"3131"; + when x"0da" => DATA <= x"6320"; + when x"0db" => DATA <= x"646f"; + when x"0dc" => DATA <= x"0065"; + when x"0dd" => DATA <= x"0077"; + when x"0de" => DATA <= x"fe7e"; + when x"0df" => DATA <= x"1026"; + when x"0e0" => DATA <= x"8bc0"; + when x"0e1" => DATA <= x"810c"; + when x"0e2" => DATA <= x"15c0"; + when x"0e3" => DATA <= x"0004"; + when x"0e4" => DATA <= x"09f7"; + when x"0e5" => DATA <= x"047a"; + when x"0e6" => DATA <= x"1380"; + when x"0e7" => DATA <= x"09f7"; + when x"0e8" => DATA <= x"047a"; + when x"0e9" => DATA <= x"09f7"; + when x"0ea" => DATA <= x"02a4"; + when x"0eb" => DATA <= x"1001"; + when x"0ec" => DATA <= x"1580"; + when x"0ed" => DATA <= x"0087"; + when x"0ee" => DATA <= x"2017"; + when x"0ef" => DATA <= x"0082"; + when x"0f0" => DATA <= x"032b"; + when x"0f1" => DATA <= x"2017"; + when x"0f2" => DATA <= x"0083"; + when x"0f3" => DATA <= x"032a"; + when x"0f4" => DATA <= x"2017"; + when x"0f5" => DATA <= x"0084"; + when x"0f6" => DATA <= x"0327"; + when x"0f7" => DATA <= x"15c0"; + when x"0f8" => DATA <= x"0006"; + when x"0f9" => DATA <= x"09f7"; + when x"0fa" => DATA <= x"0450"; + when x"0fb" => DATA <= x"1080"; + when x"0fc" => DATA <= x"09f7"; + when x"0fd" => DATA <= x"0450"; + when x"0fe" => DATA <= x"1580"; + when x"0ff" => DATA <= x"09f7"; + when x"100" => DATA <= x"044a"; + when x"101" => DATA <= x"2017"; + when x"102" => DATA <= x"009d"; + when x"103" => DATA <= x"0315"; + when x"104" => DATA <= x"2017"; + when x"105" => DATA <= x"008e"; + when x"106" => DATA <= x"0313"; + when x"107" => DATA <= x"1026"; + when x"108" => DATA <= x"09f7"; + when x"109" => DATA <= x"0266"; + when x"10a" => DATA <= x"6017"; + when x"10b" => DATA <= x"ff80"; + when x"10c" => DATA <= x"09f7"; + when x"10d" => DATA <= x"025e"; + when x"10e" => DATA <= x"45c0"; + when x"10f" => DATA <= x"ff00"; + when x"110" => DATA <= x"1002"; + when x"111" => DATA <= x"00c0"; + when x"112" => DATA <= x"1001"; + when x"113" => DATA <= x"09f7"; + when x"114" => DATA <= x"0250"; + when x"115" => DATA <= x"45c0"; + when x"116" => DATA <= x"ff00"; + when x"117" => DATA <= x"5001"; + when x"118" => DATA <= x"1580"; + when x"119" => DATA <= x"0087"; + when x"11a" => DATA <= x"0077"; + when x"11b" => DATA <= x"fe9c"; + when x"11c" => DATA <= x"15c0"; + when x"11d" => DATA <= x"0086"; + when x"11e" => DATA <= x"8cc0"; + when x"11f" => DATA <= x"8cc0"; + when x"120" => DATA <= x"1c01"; + when x"121" => DATA <= x"f5e2"; + when x"122" => DATA <= x"1042"; + when x"123" => DATA <= x"00c2"; + when x"124" => DATA <= x"45c2"; + when x"125" => DATA <= x"ff00"; + when x"126" => DATA <= x"1580"; when x"127" => DATA <= x"0087"; when x"128" => DATA <= x"0bc0"; when x"129" => DATA <= x"034d"; @@ -331,10 +331,10 @@ begin when x"12d" => DATA <= x"15c0"; when x"12e" => DATA <= x"0008"; when x"12f" => DATA <= x"09f7"; - when x"130" => DATA <= x"03e4"; + when x"130" => DATA <= x"03ea"; when x"131" => DATA <= x"1380"; when x"132" => DATA <= x"09f7"; - when x"133" => DATA <= x"03de"; + when x"133" => DATA <= x"03e4"; when x"134" => DATA <= x"8bc0"; when x"135" => DATA <= x"8003"; when x"136" => DATA <= x"9402"; @@ -354,7 +354,7 @@ begin when x"144" => DATA <= x"9203"; when x"145" => DATA <= x"1080"; when x"146" => DATA <= x"09f7"; - when x"147" => DATA <= x"03b6"; + when x"147" => DATA <= x"03bc"; when x"148" => DATA <= x"6081"; when x"149" => DATA <= x"0ac2"; when x"14a" => DATA <= x"2097"; @@ -362,12 +362,12 @@ begin when x"14c" => DATA <= x"8605"; when x"14d" => DATA <= x"9840"; when x"14e" => DATA <= x"09f7"; - when x"14f" => DATA <= x"03a6"; + when x"14f" => DATA <= x"03ac"; when x"150" => DATA <= x"0ac2"; when x"151" => DATA <= x"80fb"; when x"152" => DATA <= x"10c0"; when x"153" => DATA <= x"09f7"; - when x"154" => DATA <= x"039c"; + when x"154" => DATA <= x"03a2"; when x"155" => DATA <= x"60c1"; when x"156" => DATA <= x"0ac3"; when x"157" => DATA <= x"20d7"; @@ -405,27 +405,27 @@ begin when x"177" => DATA <= x"15c0"; when x"178" => DATA <= x"000a"; when x"179" => DATA <= x"09f7"; - when x"17a" => DATA <= x"0350"; + when x"17a" => DATA <= x"0356"; when x"17b" => DATA <= x"65c1"; when x"17c" => DATA <= x"0002"; when x"17d" => DATA <= x"15c2"; when x"17e" => DATA <= x"0003"; when x"17f" => DATA <= x"09f7"; - when x"180" => DATA <= x"0322"; + when x"180" => DATA <= x"0328"; when x"181" => DATA <= x"15c0"; when x"182" => DATA <= x"0007"; when x"183" => DATA <= x"09f7"; - when x"184" => DATA <= x"033c"; + when x"184" => DATA <= x"0342"; when x"185" => DATA <= x"0a00"; when x"186" => DATA <= x"09f7"; - when x"187" => DATA <= x"0336"; + when x"187" => DATA <= x"033c"; when x"188" => DATA <= x"09f7"; when x"189" => DATA <= x"0166"; when x"18a" => DATA <= x"6017"; when x"18b" => DATA <= x"ff80"; when x"18c" => DATA <= x"870b"; when x"18d" => DATA <= x"09f7"; - when x"18e" => DATA <= x"fd80"; + when x"18e" => DATA <= x"fd82"; when x"18f" => DATA <= x"0a02"; when x"190" => DATA <= x"09f7"; when x"191" => DATA <= x"0156"; @@ -442,22 +442,22 @@ begin when x"19c" => DATA <= x"15c0"; when x"19d" => DATA <= x"000c"; when x"19e" => DATA <= x"09f7"; - when x"19f" => DATA <= x"0300"; + when x"19f" => DATA <= x"0306"; when x"1a0" => DATA <= x"1081"; when x"1a1" => DATA <= x"15c2"; when x"1a2" => DATA <= x"0004"; when x"1a3" => DATA <= x"09f7"; - when x"1a4" => DATA <= x"02da"; + when x"1a4" => DATA <= x"02e0"; when x"1a5" => DATA <= x"1580"; when x"1a6" => DATA <= x"09f7"; - when x"1a7" => DATA <= x"02f6"; + when x"1a7" => DATA <= x"02fc"; when x"1a8" => DATA <= x"09f7"; when x"1a9" => DATA <= x"0126"; when x"1aa" => DATA <= x"1026"; when x"1ab" => DATA <= x"15c2"; when x"1ac" => DATA <= x"0004"; when x"1ad" => DATA <= x"09f7"; - when x"1ae" => DATA <= x"02d4"; + when x"1ae" => DATA <= x"02da"; when x"1af" => DATA <= x"1580"; when x"1b0" => DATA <= x"1581"; when x"1b1" => DATA <= x"1582"; @@ -466,21 +466,21 @@ begin when x"1b4" => DATA <= x"15c0"; when x"1b5" => DATA <= x"0012"; when x"1b6" => DATA <= x"09f7"; - when x"1b7" => DATA <= x"02d6"; + when x"1b7" => DATA <= x"02dc"; when x"1b8" => DATA <= x"1580"; when x"1b9" => DATA <= x"09f7"; - when x"1ba" => DATA <= x"02d0"; + when x"1ba" => DATA <= x"02d6"; when x"1bb" => DATA <= x"0bc0"; when x"1bc" => DATA <= x"0206"; when x"1bd" => DATA <= x"09f7"; - when x"1be" => DATA <= x"02c6"; + when x"1be" => DATA <= x"02cc"; when x"1bf" => DATA <= x"09f7"; when x"1c0" => DATA <= x"00f8"; when x"1c1" => DATA <= x"0a00"; when x"1c2" => DATA <= x"0087"; when x"1c3" => DATA <= x"1066"; when x"1c4" => DATA <= x"09f7"; - when x"1c5" => DATA <= x"028a"; + when x"1c5" => DATA <= x"0290"; when x"1c6" => DATA <= x"09f7"; when x"1c7" => DATA <= x"00ea"; when x"1c8" => DATA <= x"1581"; @@ -491,20 +491,20 @@ begin when x"1cd" => DATA <= x"15c0"; when x"1ce" => DATA <= x"0014"; when x"1cf" => DATA <= x"09f7"; - when x"1d0" => DATA <= x"02a4"; + when x"1d0" => DATA <= x"02aa"; when x"1d1" => DATA <= x"65c1"; when x"1d2" => DATA <= x"0002"; when x"1d3" => DATA <= x"15c2"; when x"1d4" => DATA <= x"0010"; when x"1d5" => DATA <= x"09f7"; - when x"1d6" => DATA <= x"0276"; + when x"1d6" => DATA <= x"027c"; when x"1d7" => DATA <= x"09f7"; - when x"1d8" => DATA <= x"fcec"; + when x"1d8" => DATA <= x"fcee"; when x"1d9" => DATA <= x"09f7"; - when x"1da" => DATA <= x"0260"; + when x"1da" => DATA <= x"0266"; when x"1db" => DATA <= x"1580"; when x"1dc" => DATA <= x"09f7"; - when x"1dd" => DATA <= x"028a"; + when x"1dd" => DATA <= x"0290"; when x"1de" => DATA <= x"09f7"; when x"1df" => DATA <= x"00ba"; when x"1e0" => DATA <= x"1381"; @@ -514,7 +514,7 @@ begin when x"1e4" => DATA <= x"15c2"; when x"1e5" => DATA <= x"0010"; when x"1e6" => DATA <= x"09f7"; - when x"1e7" => DATA <= x"0262"; + when x"1e7" => DATA <= x"0268"; when x"1e8" => DATA <= x"1580"; when x"1e9" => DATA <= x"1581"; when x"1ea" => DATA <= x"1582"; @@ -531,18 +531,18 @@ begin when x"1f5" => DATA <= x"15c0"; when x"1f6" => DATA <= x"0016"; when x"1f7" => DATA <= x"09f7"; - when x"1f8" => DATA <= x"0254"; + when x"1f8" => DATA <= x"025a"; when x"1f9" => DATA <= x"15c2"; when x"1fa" => DATA <= x"000d"; when x"1fb" => DATA <= x"09f7"; - when x"1fc" => DATA <= x"022a"; + when x"1fc" => DATA <= x"0230"; when x"1fd" => DATA <= x"1580"; when x"1fe" => DATA <= x"09f7"; - when x"1ff" => DATA <= x"0246"; + when x"1ff" => DATA <= x"024c"; when x"200" => DATA <= x"15c2"; when x"201" => DATA <= x"000d"; when x"202" => DATA <= x"09f7"; - when x"203" => DATA <= x"022a"; + when x"203" => DATA <= x"0230"; when x"204" => DATA <= x"1582"; when x"205" => DATA <= x"0133"; when x"206" => DATA <= x"10a6"; @@ -550,7 +550,7 @@ begin when x"208" => DATA <= x"1066"; when x"209" => DATA <= x"0a81"; when x"20a" => DATA <= x"09f7"; - when x"20b" => DATA <= x"fc8a"; + when x"20b" => DATA <= x"fc8c"; when x"20c" => DATA <= x"1042"; when x"20d" => DATA <= x"1581"; when x"20e" => DATA <= x"2397"; @@ -558,7 +558,7 @@ begin when x"210" => DATA <= x"8604"; when x"211" => DATA <= x"9480"; when x"212" => DATA <= x"09f7"; - when x"213" => DATA <= x"0086"; + when x"213" => DATA <= x"008c"; when x"214" => DATA <= x"0104"; when x"215" => DATA <= x"09f7"; when x"216" => DATA <= x"003e"; @@ -591,11 +591,11 @@ begin when x"231" => DATA <= x"15c0"; when x"232" => DATA <= x"000e"; when x"233" => DATA <= x"09f7"; - when x"234" => DATA <= x"01d6"; + when x"234" => DATA <= x"01dc"; when x"235" => DATA <= x"0103"; when x"236" => DATA <= x"0a00"; when x"237" => DATA <= x"09f7"; - when x"238" => DATA <= x"01d4"; + when x"238" => DATA <= x"01da"; when x"239" => DATA <= x"09f7"; when x"23a" => DATA <= x"0004"; when x"23b" => DATA <= x"65c0"; @@ -607,433 +607,433 @@ begin when x"241" => DATA <= x"fff6"; when x"242" => DATA <= x"0087"; when x"243" => DATA <= x"0bc1"; - when x"244" => DATA <= x"0312"; + when x"244" => DATA <= x"0315"; when x"245" => DATA <= x"1026"; when x"246" => DATA <= x"15c0"; when x"247" => DATA <= x"0010"; when x"248" => DATA <= x"09f7"; - when x"249" => DATA <= x"01ac"; + when x"249" => DATA <= x"01b2"; when x"24a" => DATA <= x"1380"; when x"24b" => DATA <= x"09f7"; - when x"24c" => DATA <= x"01ac"; + when x"24c" => DATA <= x"01b2"; when x"24d" => DATA <= x"09f7"; when x"24e" => DATA <= x"ffdc"; when x"24f" => DATA <= x"1580"; when x"250" => DATA <= x"0087"; - when x"251" => DATA <= x"15c0"; - when x"252" => DATA <= x"000a"; - when x"253" => DATA <= x"09f7"; - when x"254" => DATA <= x"0004"; - when x"255" => DATA <= x"15c0"; - when x"256" => DATA <= x"000d"; - when x"257" => DATA <= x"1026"; - when x"258" => DATA <= x"97c0"; - when x"259" => DATA <= x"fff0"; - when x"25a" => DATA <= x"45c0"; - when x"25b" => DATA <= x"00bf"; - when x"25c" => DATA <= x"03fb"; - when x"25d" => DATA <= x"1580"; - when x"25e" => DATA <= x"901f"; - when x"25f" => DATA <= x"fff2"; - when x"260" => DATA <= x"0087"; - when x"261" => DATA <= x"45f6"; - when x"262" => DATA <= x"fff0"; - when x"263" => DATA <= x"0002"; - when x"264" => DATA <= x"17e6"; - when x"265" => DATA <= x"f5e8"; - when x"266" => DATA <= x"17e6"; - when x"267" => DATA <= x"f5f4"; - when x"268" => DATA <= x"119f"; - when x"269" => DATA <= x"f5f4"; - when x"26a" => DATA <= x"15df"; - when x"26b" => DATA <= x"fd0c"; - when x"26c" => DATA <= x"f5e8"; - when x"26d" => DATA <= x"1026"; - when x"26e" => DATA <= x"1026"; - when x"26f" => DATA <= x"1d80"; - when x"270" => DATA <= x"0008"; - when x"271" => DATA <= x"1c00"; - when x"272" => DATA <= x"fffe"; - when x"273" => DATA <= x"45c0"; - when x"274" => DATA <= x"ff00"; - when x"275" => DATA <= x"6000"; - when x"276" => DATA <= x"6fc0"; - when x"277" => DATA <= x"f906"; - when x"278" => DATA <= x"1236"; - when x"279" => DATA <= x"0002"; - when x"27a" => DATA <= x"1580"; - when x"27b" => DATA <= x"09de"; - when x"27c" => DATA <= x"8509"; - when x"27d" => DATA <= x"8603"; - when x"27e" => DATA <= x"55f6"; - when x"27f" => DATA <= x"0001"; - when x"280" => DATA <= x"0006"; - when x"281" => DATA <= x"159f"; - when x"282" => DATA <= x"f5f4"; - when x"283" => DATA <= x"159f"; - when x"284" => DATA <= x"f5e8"; - when x"285" => DATA <= x"0002"; - when x"286" => DATA <= x"17c6"; - when x"287" => DATA <= x"f5f4"; - when x"288" => DATA <= x"55f6"; - when x"289" => DATA <= x"0002"; - when x"28a" => DATA <= x"0006"; - when x"28b" => DATA <= x"01f5"; - when x"28c" => DATA <= x"0bd6"; - when x"28d" => DATA <= x"159f"; - when x"28e" => DATA <= x"f5f4"; - when x"28f" => DATA <= x"159f"; - when x"290" => DATA <= x"f5e8"; - when x"291" => DATA <= x"1380"; - when x"292" => DATA <= x"17ce"; + when x"251" => DATA <= x"25c0"; + when x"252" => DATA <= x"000d"; + when x"253" => DATA <= x"0206"; + when x"254" => DATA <= x"15c0"; + when x"255" => DATA <= x"000a"; + when x"256" => DATA <= x"09f7"; + when x"257" => DATA <= x"0004"; + when x"258" => DATA <= x"15c0"; + when x"259" => DATA <= x"000d"; + when x"25a" => DATA <= x"1026"; + when x"25b" => DATA <= x"97c0"; + when x"25c" => DATA <= x"fff0"; + when x"25d" => DATA <= x"45c0"; + when x"25e" => DATA <= x"00bf"; + when x"25f" => DATA <= x"03fb"; + when x"260" => DATA <= x"1580"; + when x"261" => DATA <= x"901f"; + when x"262" => DATA <= x"fff2"; + when x"263" => DATA <= x"0087"; + when x"264" => DATA <= x"45f6"; + when x"265" => DATA <= x"fff0"; + when x"266" => DATA <= x"0002"; + when x"267" => DATA <= x"17e6"; + when x"268" => DATA <= x"f5e8"; + when x"269" => DATA <= x"17e6"; + when x"26a" => DATA <= x"f5f4"; + when x"26b" => DATA <= x"119f"; + when x"26c" => DATA <= x"f5f4"; + when x"26d" => DATA <= x"15df"; + when x"26e" => DATA <= x"fd12"; + when x"26f" => DATA <= x"f5e8"; + when x"270" => DATA <= x"1026"; + when x"271" => DATA <= x"1026"; + when x"272" => DATA <= x"1d80"; + when x"273" => DATA <= x"0008"; + when x"274" => DATA <= x"1c00"; + when x"275" => DATA <= x"fffe"; + when x"276" => DATA <= x"45c0"; + when x"277" => DATA <= x"ff00"; + when x"278" => DATA <= x"6000"; + when x"279" => DATA <= x"67c0"; -- was 6fc0 + when x"27a" => DATA <= x"f5f6"; -- was f900 + when x"27b" => DATA <= x"1236"; + when x"27c" => DATA <= x"0002"; + when x"27d" => DATA <= x"1580"; + when x"27e" => DATA <= x"09de"; + when x"27f" => DATA <= x"8509"; + when x"280" => DATA <= x"8603"; + when x"281" => DATA <= x"55f6"; + when x"282" => DATA <= x"0001"; + when x"283" => DATA <= x"0006"; + when x"284" => DATA <= x"159f"; + when x"285" => DATA <= x"f5f4"; + when x"286" => DATA <= x"159f"; + when x"287" => DATA <= x"f5e8"; + when x"288" => DATA <= x"0002"; + when x"289" => DATA <= x"17c6"; + when x"28a" => DATA <= x"f5f4"; + when x"28b" => DATA <= x"55f6"; + when x"28c" => DATA <= x"0002"; + when x"28d" => DATA <= x"0006"; + when x"28e" => DATA <= x"01f5"; + when x"28f" => DATA <= x"0bd6"; + when x"290" => DATA <= x"159f"; + when x"291" => DATA <= x"f5f4"; + when x"292" => DATA <= x"159f"; when x"293" => DATA <= x"f5e8"; - when x"294" => DATA <= x"0002"; - when x"295" => DATA <= x"0bd6"; - when x"296" => DATA <= x"159f"; - when x"297" => DATA <= x"f5f4"; - when x"298" => DATA <= x"159f"; - when x"299" => DATA <= x"f5e8"; - when x"29a" => DATA <= x"1026"; - when x"29b" => DATA <= x"810d"; - when x"29c" => DATA <= x"2017"; - when x"29d" => DATA <= x"0100"; - when x"29e" => DATA <= x"8608"; - when x"29f" => DATA <= x"6000"; - when x"2a0" => DATA <= x"67c0"; - when x"2a1" => DATA <= x"f5f6"; - when x"2a2" => DATA <= x"1226"; - when x"2a3" => DATA <= x"0bc1"; - when x"2a4" => DATA <= x"0301"; - when x"2a5" => DATA <= x"1048"; - when x"2a6" => DATA <= x"1581"; - when x"2a7" => DATA <= x"1580"; - when x"2a8" => DATA <= x"0002"; - when x"2a9" => DATA <= x"0a40"; - when x"2aa" => DATA <= x"2017"; - when x"2ab" => DATA <= x"0006"; - when x"2ac" => DATA <= x"86fa"; - when x"2ad" => DATA <= x"6000"; - when x"2ae" => DATA <= x"6000"; - when x"2af" => DATA <= x"65c0"; - when x"2b0" => DATA <= x"f5e0"; - when x"2b1" => DATA <= x"1226"; - when x"2b2" => DATA <= x"0bc1"; - when x"2b3" => DATA <= x"0301"; - when x"2b4" => DATA <= x"1050"; - when x"2b5" => DATA <= x"1226"; - when x"2b6" => DATA <= x"0bc2"; - when x"2b7" => DATA <= x"0301"; - when x"2b8" => DATA <= x"1088"; - when x"2b9" => DATA <= x"1582"; - when x"2ba" => DATA <= x"1581"; - when x"2bb" => DATA <= x"1580"; - when x"2bc" => DATA <= x"0002"; - when x"2bd" => DATA <= x"2017"; - when x"2be" => DATA <= x"0001"; - when x"2bf" => DATA <= x"0306"; + when x"294" => DATA <= x"1380"; + when x"295" => DATA <= x"17ce"; + when x"296" => DATA <= x"f5e8"; + when x"297" => DATA <= x"0002"; + when x"298" => DATA <= x"0bd6"; + when x"299" => DATA <= x"159f"; + when x"29a" => DATA <= x"f5f4"; + when x"29b" => DATA <= x"159f"; + when x"29c" => DATA <= x"f5e8"; + when x"29d" => DATA <= x"1026"; + when x"29e" => DATA <= x"810d"; + when x"29f" => DATA <= x"2017"; + when x"2a0" => DATA <= x"0100"; + when x"2a1" => DATA <= x"8608"; + when x"2a2" => DATA <= x"6000"; + when x"2a3" => DATA <= x"67c0"; + when x"2a4" => DATA <= x"f5f6"; + when x"2a5" => DATA <= x"1226"; + when x"2a6" => DATA <= x"0bc1"; + when x"2a7" => DATA <= x"0301"; + when x"2a8" => DATA <= x"1048"; + when x"2a9" => DATA <= x"1581"; + when x"2aa" => DATA <= x"1580"; + when x"2ab" => DATA <= x"0002"; + when x"2ac" => DATA <= x"0a40"; + when x"2ad" => DATA <= x"2017"; + when x"2ae" => DATA <= x"0006"; + when x"2af" => DATA <= x"86fa"; + when x"2b0" => DATA <= x"6000"; + when x"2b1" => DATA <= x"6000"; + when x"2b2" => DATA <= x"65c0"; + when x"2b3" => DATA <= x"f5e0"; + when x"2b4" => DATA <= x"1226"; + when x"2b5" => DATA <= x"0bc1"; + when x"2b6" => DATA <= x"0301"; + when x"2b7" => DATA <= x"1050"; + when x"2b8" => DATA <= x"1226"; + when x"2b9" => DATA <= x"0bc2"; + when x"2ba" => DATA <= x"0301"; + when x"2bb" => DATA <= x"1088"; + when x"2bc" => DATA <= x"1582"; + when x"2bd" => DATA <= x"1581"; + when x"2be" => DATA <= x"1580"; + when x"2bf" => DATA <= x"0002"; when x"2c0" => DATA <= x"2017"; - when x"2c1" => DATA <= x"0002"; - when x"2c2" => DATA <= x"0314"; - when x"2c3" => DATA <= x"0087"; - when x"2c4" => DATA <= x"007f"; - when x"2c5" => DATA <= x"f854"; - when x"2c6" => DATA <= x"15df"; - when x"2c7" => DATA <= x"fcc2"; - when x"2c8" => DATA <= x"0018"; - when x"2c9" => DATA <= x"0a1f"; - when x"2ca" => DATA <= x"001a"; - when x"2cb" => DATA <= x"15df"; - when x"2cc" => DATA <= x"ffc2"; - when x"2cd" => DATA <= x"0080"; + when x"2c1" => DATA <= x"0001"; + when x"2c2" => DATA <= x"0306"; + when x"2c3" => DATA <= x"2017"; + when x"2c4" => DATA <= x"0002"; + when x"2c5" => DATA <= x"0314"; + when x"2c6" => DATA <= x"0087"; + when x"2c7" => DATA <= x"007f"; + when x"2c8" => DATA <= x"f84e"; + when x"2c9" => DATA <= x"15df"; + when x"2ca" => DATA <= x"fcc8"; + when x"2cb" => DATA <= x"0018"; + when x"2cc" => DATA <= x"0a1f"; + when x"2cd" => DATA <= x"001a"; when x"2ce" => DATA <= x"15df"; - when x"2cf" => DATA <= x"00e0"; - when x"2d0" => DATA <= x"0082"; -- was 0086 + when x"2cf" => DATA <= x"ffc8"; + when x"2d0" => DATA <= x"0080"; when x"2d1" => DATA <= x"15df"; - when x"2d2" => DATA <= x"fe72"; - when x"2d3" => DATA <= x"0084"; + when x"2d2" => DATA <= x"00e0"; + when x"2d3" => DATA <= x"0082"; when x"2d4" => DATA <= x"15df"; - when x"2d5" => DATA <= x"00c0"; - when x"2d6" => DATA <= x"0086"; - when x"2d7" => DATA <= x"15c0"; - when x"2d8" => DATA <= x"fdd4"; - when x"2d9" => DATA <= x"15c1"; - when x"2da" => DATA <= x"f5e0"; - when x"2db" => DATA <= x"15c2"; - when x"2dc" => DATA <= x"0040"; - when x"2dd" => DATA <= x"17e6"; - when x"2de" => DATA <= x"f5fc"; - when x"2df" => DATA <= x"1411"; - when x"2e0" => DATA <= x"0ac2"; - when x"2e1" => DATA <= x"02fd"; - when x"2e2" => DATA <= x"159f"; - when x"2e3" => DATA <= x"f5fc"; - when x"2e4" => DATA <= x"15c2"; - when x"2e5" => DATA <= x"00e0"; - when x"2e6" => DATA <= x"1211"; - when x"2e7" => DATA <= x"0ac2"; - when x"2e8" => DATA <= x"02fd"; - when x"2e9" => DATA <= x"0087"; - when x"2ea" => DATA <= x"f83e"; - when x"2eb" => DATA <= x"0000"; - when x"2ec" => DATA <= x"f896"; - when x"2ed" => DATA <= x"f5ff"; - when x"2ee" => DATA <= x"f884"; - when x"2ef" => DATA <= x"f500"; - when x"2f0" => DATA <= x"fd86"; - when x"2f1" => DATA <= x"0000"; - when x"2f2" => DATA <= x"feaa"; - when x"2f3" => DATA <= x"0000"; - when x"2f4" => DATA <= x"0000"; - when x"2f5" => DATA <= x"f600"; - when x"2f6" => DATA <= x"0000"; + when x"2d5" => DATA <= x"fe78"; + when x"2d6" => DATA <= x"0084"; + when x"2d7" => DATA <= x"15df"; + when x"2d8" => DATA <= x"00c0"; + when x"2d9" => DATA <= x"0086"; + when x"2da" => DATA <= x"15c0"; + when x"2db" => DATA <= x"fdda"; + when x"2dc" => DATA <= x"15c1"; + when x"2dd" => DATA <= x"f5e0"; + when x"2de" => DATA <= x"15c2"; + when x"2df" => DATA <= x"0040"; + when x"2e0" => DATA <= x"17e6"; + when x"2e1" => DATA <= x"f5fc"; + when x"2e2" => DATA <= x"1411"; + when x"2e3" => DATA <= x"0ac2"; + when x"2e4" => DATA <= x"02fd"; + when x"2e5" => DATA <= x"159f"; + when x"2e6" => DATA <= x"f5fc"; + when x"2e7" => DATA <= x"15c2"; + when x"2e8" => DATA <= x"00e0"; + when x"2e9" => DATA <= x"1211"; + when x"2ea" => DATA <= x"0ac2"; + when x"2eb" => DATA <= x"02fd"; + when x"2ec" => DATA <= x"0087"; + when x"2ed" => DATA <= x"f83c"; + when x"2ee" => DATA <= x"0000"; + when x"2ef" => DATA <= x"f898"; + when x"2f0" => DATA <= x"f5ff"; + when x"2f1" => DATA <= x"f882"; + when x"2f2" => DATA <= x"f500"; + when x"2f3" => DATA <= x"fd8c"; + when x"2f4" => DATA <= x"0100"; + when x"2f5" => DATA <= x"feb0"; + when x"2f6" => DATA <= x"f500"; when x"2f7" => DATA <= x"0000"; - when x"2f8" => DATA <= x"f81e"; + when x"2f8" => DATA <= x"f600"; when x"2f9" => DATA <= x"0000"; - when x"2fa" => DATA <= x"fd88"; - when x"2fb" => DATA <= x"f8be"; - when x"2fc" => DATA <= x"f9c6"; - when x"2fd" => DATA <= x"fa50"; - when x"2fe" => DATA <= x"fcae"; - when x"2ff" => DATA <= x"fca2"; - when x"300" => DATA <= x"fc6c"; - when x"301" => DATA <= x"fb94"; - when x"302" => DATA <= x"fb32"; - when x"303" => DATA <= x"fc5e"; - when x"304" => DATA <= x"fc86"; - when x"305" => DATA <= x"fbd8"; - when x"306" => DATA <= x"fb66"; - when x"307" => DATA <= x"fd7a"; - when x"308" => DATA <= x"fd2a"; - when x"309" => DATA <= x"fd18"; - when x"30a" => DATA <= x"fd86"; - when x"30b" => DATA <= x"9440"; - when x"30c" => DATA <= x"09f7"; - when x"30d" => DATA <= x"002a"; - when x"30e" => DATA <= x"2017"; - when x"30f" => DATA <= x"000d"; - when x"310" => DATA <= x"02fa"; - when x"311" => DATA <= x"0087"; - when x"312" => DATA <= x"6081"; - when x"313" => DATA <= x"9840"; - when x"314" => DATA <= x"09f7"; - when x"315" => DATA <= x"001a"; - when x"316" => DATA <= x"0ac2"; - when x"317" => DATA <= x"02fb"; - when x"318" => DATA <= x"0087"; - when x"319" => DATA <= x"6081"; - when x"31a" => DATA <= x"09f7"; - when x"31b" => DATA <= x"fe42"; - when x"31c" => DATA <= x"9021"; - when x"31d" => DATA <= x"0ac2"; - when x"31e" => DATA <= x"02fb"; - when x"31f" => DATA <= x"0087"; - when x"320" => DATA <= x"09f7"; - when x"321" => DATA <= x"0002"; - when x"322" => DATA <= x"1040"; - when x"323" => DATA <= x"1026"; - when x"324" => DATA <= x"97c0"; - when x"325" => DATA <= x"fff4"; - when x"326" => DATA <= x"45c0"; - when x"327" => DATA <= x"00bf"; - when x"328" => DATA <= x"03fb"; - when x"329" => DATA <= x"1580"; - when x"32a" => DATA <= x"901f"; - when x"32b" => DATA <= x"fff6"; - when x"32c" => DATA <= x"0087"; - when x"32d" => DATA <= x"97c0"; - when x"32e" => DATA <= x"fff0"; - when x"32f" => DATA <= x"80fd"; + when x"2fa" => DATA <= x"0000"; + when x"2fb" => DATA <= x"f81c"; + when x"2fc" => DATA <= x"0000"; + when x"2fd" => DATA <= x"fd8e"; + when x"2fe" => DATA <= x"f8c0"; + when x"2ff" => DATA <= x"f9be"; + when x"300" => DATA <= x"fa50"; + when x"301" => DATA <= x"fcb4"; + when x"302" => DATA <= x"fca8"; + when x"303" => DATA <= x"fc6c"; + when x"304" => DATA <= x"fb94"; + when x"305" => DATA <= x"fb32"; + when x"306" => DATA <= x"fc5e"; + when x"307" => DATA <= x"fc86"; + when x"308" => DATA <= x"fbd8"; + when x"309" => DATA <= x"fb66"; + when x"30a" => DATA <= x"fd80"; + when x"30b" => DATA <= x"fd30"; + when x"30c" => DATA <= x"fd1e"; + when x"30d" => DATA <= x"fd8c"; + when x"30e" => DATA <= x"9440"; + when x"30f" => DATA <= x"09f7"; + when x"310" => DATA <= x"002a"; + when x"311" => DATA <= x"2017"; + when x"312" => DATA <= x"000d"; + when x"313" => DATA <= x"02fa"; + when x"314" => DATA <= x"0087"; + when x"315" => DATA <= x"6081"; + when x"316" => DATA <= x"9840"; + when x"317" => DATA <= x"09f7"; + when x"318" => DATA <= x"001a"; + when x"319" => DATA <= x"0ac2"; + when x"31a" => DATA <= x"02fb"; + when x"31b" => DATA <= x"0087"; + when x"31c" => DATA <= x"6081"; + when x"31d" => DATA <= x"09f7"; + when x"31e" => DATA <= x"fe3c"; + when x"31f" => DATA <= x"9021"; + when x"320" => DATA <= x"0ac2"; + when x"321" => DATA <= x"02fb"; + when x"322" => DATA <= x"0087"; + when x"323" => DATA <= x"09f7"; + when x"324" => DATA <= x"0002"; + when x"325" => DATA <= x"1040"; + when x"326" => DATA <= x"1026"; + when x"327" => DATA <= x"97c0"; + when x"328" => DATA <= x"fff4"; + when x"329" => DATA <= x"45c0"; + when x"32a" => DATA <= x"00bf"; + when x"32b" => DATA <= x"03fb"; + when x"32c" => DATA <= x"1580"; + when x"32d" => DATA <= x"901f"; + when x"32e" => DATA <= x"fff6"; + when x"32f" => DATA <= x"0087"; when x"330" => DATA <= x"97c0"; - when x"331" => DATA <= x"fff2"; - when x"332" => DATA <= x"0087"; + when x"331" => DATA <= x"fff0"; + when x"332" => DATA <= x"80fd"; when x"333" => DATA <= x"97c0"; - when x"334" => DATA <= x"fffc"; - when x"335" => DATA <= x"80fd"; + when x"334" => DATA <= x"fff2"; + when x"335" => DATA <= x"0087"; when x"336" => DATA <= x"97c0"; - when x"337" => DATA <= x"fffe"; - when x"338" => DATA <= x"0087"; - when x"339" => DATA <= x"1026"; - when x"33a" => DATA <= x"97c0"; - when x"33b" => DATA <= x"fffc"; - when x"33c" => DATA <= x"811d"; + when x"337" => DATA <= x"fffc"; + when x"338" => DATA <= x"80fd"; + when x"339" => DATA <= x"97c0"; + when x"33a" => DATA <= x"fffe"; + when x"33b" => DATA <= x"0087"; + when x"33c" => DATA <= x"1026"; when x"33d" => DATA <= x"97c0"; - when x"33e" => DATA <= x"fff0"; - when x"33f" => DATA <= x"8103"; - when x"340" => DATA <= x"1580"; - when x"341" => DATA <= x"007f"; - when x"342" => DATA <= x"f76a"; - when x"343" => DATA <= x"97c0"; - when x"344" => DATA <= x"fff2"; - when x"345" => DATA <= x"8110"; - when x"346" => DATA <= x"1066"; - when x"347" => DATA <= x"10a6"; - when x"348" => DATA <= x"09f7"; - when x"349" => DATA <= x"ffc6"; - when x"34a" => DATA <= x"1002"; + when x"33e" => DATA <= x"fffc"; + when x"33f" => DATA <= x"811d"; + when x"340" => DATA <= x"97c0"; + when x"341" => DATA <= x"fff0"; + when x"342" => DATA <= x"8103"; + when x"343" => DATA <= x"1580"; + when x"344" => DATA <= x"007f"; + when x"345" => DATA <= x"f764"; + when x"346" => DATA <= x"97c0"; + when x"347" => DATA <= x"fff2"; + when x"348" => DATA <= x"8110"; + when x"349" => DATA <= x"1066"; + when x"34a" => DATA <= x"10a6"; when x"34b" => DATA <= x"09f7"; - when x"34c" => DATA <= x"ffc0"; - when x"34d" => DATA <= x"1001"; + when x"34c" => DATA <= x"ffc6"; + when x"34d" => DATA <= x"1002"; when x"34e" => DATA <= x"09f7"; - when x"34f" => DATA <= x"ffba"; - when x"350" => DATA <= x"09ff"; - when x"351" => DATA <= x"f748"; - when x"352" => DATA <= x"1582"; - when x"353" => DATA <= x"1581"; - when x"354" => DATA <= x"1580"; - when x"355" => DATA <= x"0002"; - when x"356" => DATA <= x"09ff"; - when x"357" => DATA <= x"f734"; - when x"358" => DATA <= x"1580"; - when x"359" => DATA <= x"0002"; - when x"35a" => DATA <= x"97c0"; - when x"35b" => DATA <= x"fffe"; - when x"35c" => DATA <= x"8016"; - when x"35d" => DATA <= x"1066"; - when x"35e" => DATA <= x"09f7"; - when x"35f" => DATA <= x"fdba"; - when x"360" => DATA <= x"17c1"; - when x"361" => DATA <= x"f5ea"; - when x"362" => DATA <= x"09f7"; - when x"363" => DATA <= x"fdb2"; - when x"364" => DATA <= x"9011"; + when x"34f" => DATA <= x"ffc0"; + when x"350" => DATA <= x"1001"; + when x"351" => DATA <= x"09f7"; + when x"352" => DATA <= x"ffba"; + when x"353" => DATA <= x"09ff"; + when x"354" => DATA <= x"f742"; + when x"355" => DATA <= x"1582"; + when x"356" => DATA <= x"1581"; + when x"357" => DATA <= x"1580"; + when x"358" => DATA <= x"0002"; + when x"359" => DATA <= x"09ff"; + when x"35a" => DATA <= x"f72e"; + when x"35b" => DATA <= x"1580"; + when x"35c" => DATA <= x"0002"; + when x"35d" => DATA <= x"97c0"; + when x"35e" => DATA <= x"fffe"; + when x"35f" => DATA <= x"8016"; + when x"360" => DATA <= x"1066"; + when x"361" => DATA <= x"09f7"; + when x"362" => DATA <= x"fdb4"; + when x"363" => DATA <= x"17c1"; + when x"364" => DATA <= x"f5ea"; when x"365" => DATA <= x"09f7"; when x"366" => DATA <= x"fdac"; - when x"367" => DATA <= x"1011"; - when x"368" => DATA <= x"02fc"; - when x"369" => DATA <= x"1581"; - when x"36a" => DATA <= x"1580"; - when x"36b" => DATA <= x"17c0"; - when x"36c" => DATA <= x"f5ea"; - when x"36d" => DATA <= x"17ce"; - when x"36e" => DATA <= x"f5e8"; - when x"36f" => DATA <= x"0002"; - when x"370" => DATA <= x"1580"; - when x"371" => DATA <= x"007f"; - when x"372" => DATA <= x"f702"; - when x"373" => DATA <= x"1026"; - when x"374" => DATA <= x"09f7"; - when x"375" => DATA <= x"ff7a"; - when x"376" => DATA <= x"1380"; - when x"377" => DATA <= x"2017"; - when x"378" => DATA <= x"0005"; - when x"379" => DATA <= x"0331"; - when x"37a" => DATA <= x"09f7"; - when x"37b" => DATA <= x"ff6e"; - when x"37c" => DATA <= x"901f"; -- was 903f - when x"37d" => DATA <= x"f5fb"; -- was f6ff - when x"37e" => DATA <= x"09f7"; - when x"37f" => DATA <= x"ff66"; - when x"380" => DATA <= x"901f"; -- was 903f - when x"381" => DATA <= x"f5fa"; -- was f6f6 - when x"382" => DATA <= x"09f7"; - when x"383" => DATA <= x"ff5e"; - when x"384" => DATA <= x"901f"; -- was 903f - when x"385" => DATA <= x"f5f9"; -- was f6ed - when x"386" => DATA <= x"09f7"; - when x"387" => DATA <= x"ff56"; - when x"388" => DATA <= x"901f"; -- was 903f - when x"389" => DATA <= x"f5f8"; -- was f6e4 - when x"38a" => DATA <= x"97c0"; - when x"38b" => DATA <= x"fffa"; - when x"38c" => DATA <= x"97c0"; - when x"38d" => DATA <= x"fffa"; - when x"38e" => DATA <= x"09f7"; - when x"38f" => DATA <= x"ff46"; - when x"390" => DATA <= x"1580"; - when x"391" => DATA <= x"6000"; - when x"392" => DATA <= x"1c1f"; - when x"393" => DATA <= x"ffc8"; - when x"394" => DATA <= x"0080"; - when x"395" => DATA <= x"1066"; - when x"396" => DATA <= x"15c1"; - when x"397" => DATA <= x"0100"; - when x"398" => DATA <= x"2017"; - when x"399" => DATA <= x"000c"; - when x"39a" => DATA <= x"870f"; - when x"39b" => DATA <= x"0211"; - when x"39c" => DATA <= x"17c0"; - when x"39d" => DATA <= x"f5f8"; - when x"39e" => DATA <= x"8bdf"; - when x"39f" => DATA <= x"fff8"; - when x"3a0" => DATA <= x"80fd"; - when x"3a1" => DATA <= x"941f"; - when x"3a2" => DATA <= x"fffa"; - when x"3a3" => DATA <= x"0ac1"; - when x"3a4" => DATA <= x"02f9"; - when x"3a5" => DATA <= x"8bdf"; - when x"3a6" => DATA <= x"fff8"; - when x"3a7" => DATA <= x"80fd"; - when x"3a8" => DATA <= x"8a1f"; - when x"3a9" => DATA <= x"fffa"; - when x"3aa" => DATA <= x"1581"; - when x"3ab" => DATA <= x"1580"; - when x"3ac" => DATA <= x"0002"; - when x"3ad" => DATA <= x"17c0"; - when x"3ae" => DATA <= x"f5f8"; - when x"3af" => DATA <= x"8bdf"; - when x"3b0" => DATA <= x"fff8"; - when x"3b1" => DATA <= x"80fd"; - when x"3b2" => DATA <= x"97d0"; - when x"3b3" => DATA <= x"fffa"; - when x"3b4" => DATA <= x"0ac1"; - when x"3b5" => DATA <= x"02f9"; - when x"3b6" => DATA <= x"1581"; - when x"3b7" => DATA <= x"1580"; - when x"3b8" => DATA <= x"0002"; - when x"3b9" => DATA <= x"1026"; - when x"3ba" => DATA <= x"17c0"; - when x"3bb" => DATA <= x"f5f8"; - when x"3bc" => DATA <= x"941f"; - when x"3bd" => DATA <= x"fffa"; - when x"3be" => DATA <= x"101f"; - when x"3bf" => DATA <= x"f5f8"; - when x"3c0" => DATA <= x"1580"; - when x"3c1" => DATA <= x"0002"; - when x"3c2" => DATA <= x"1026"; - when x"3c3" => DATA <= x"17c0"; - when x"3c4" => DATA <= x"f5f8"; - when x"3c5" => DATA <= x"97d0"; - when x"3c6" => DATA <= x"fffa"; - when x"3c7" => DATA <= x"101f"; - when x"3c8" => DATA <= x"f5f8"; - when x"3c9" => DATA <= x"1580"; - when x"3ca" => DATA <= x"0002"; - when x"3cb" => DATA <= x"1026"; - when x"3cc" => DATA <= x"17c0"; - when x"3cd" => DATA <= x"f5f8"; - when x"3ce" => DATA <= x"941f"; - when x"3cf" => DATA <= x"fffa"; - when x"3d0" => DATA <= x"941f"; - when x"3d1" => DATA <= x"fffa"; - when x"3d2" => DATA <= x"101f"; - when x"3d3" => DATA <= x"f5f8"; - when x"3d4" => DATA <= x"1580"; - when x"3d5" => DATA <= x"0002"; - when x"3d6" => DATA <= x"1026"; - when x"3d7" => DATA <= x"17c0"; - when x"3d8" => DATA <= x"f5f8"; - when x"3d9" => DATA <= x"97d0"; - when x"3da" => DATA <= x"fffa"; - when x"3db" => DATA <= x"97d0"; - when x"3dc" => DATA <= x"fffa"; - when x"3dd" => DATA <= x"101f"; - when x"3de" => DATA <= x"f5f8"; - when x"3df" => DATA <= x"1580"; - when x"3e0" => DATA <= x"0002"; - when x"3e1" => DATA <= x"8a1f"; - when x"3e2" => DATA <= x"fffa"; + when x"367" => DATA <= x"9011"; + when x"368" => DATA <= x"09f7"; + when x"369" => DATA <= x"fda6"; + when x"36a" => DATA <= x"9011"; + when x"36b" => DATA <= x"02fc"; + when x"36c" => DATA <= x"1581"; + when x"36d" => DATA <= x"1580"; + when x"36e" => DATA <= x"17c0"; + when x"36f" => DATA <= x"f5ea"; + when x"370" => DATA <= x"17ce"; + when x"371" => DATA <= x"f5e8"; + when x"372" => DATA <= x"0002"; + when x"373" => DATA <= x"1580"; + when x"374" => DATA <= x"007f"; + when x"375" => DATA <= x"f6fc"; + when x"376" => DATA <= x"1026"; + when x"377" => DATA <= x"09f7"; + when x"378" => DATA <= x"ff7a"; + when x"379" => DATA <= x"1380"; + when x"37a" => DATA <= x"2017"; + when x"37b" => DATA <= x"0005"; + when x"37c" => DATA <= x"0316"; -- was 0331 + when x"37d" => DATA <= x"09f7"; + when x"37e" => DATA <= x"ff6e"; + when x"37f" => DATA <= x"901f"; + when x"380" => DATA <= x"f5fb"; + when x"381" => DATA <= x"09f7"; + when x"382" => DATA <= x"ff66"; + when x"383" => DATA <= x"901f"; + when x"384" => DATA <= x"f5fa"; + when x"385" => DATA <= x"09f7"; + when x"386" => DATA <= x"ff5e"; + when x"387" => DATA <= x"901f"; + when x"388" => DATA <= x"f5f9"; + when x"389" => DATA <= x"09f7"; + when x"38a" => DATA <= x"ff56"; + when x"38b" => DATA <= x"901f"; + when x"38c" => DATA <= x"f5f8"; + when x"38d" => DATA <= x"97c0"; + when x"38e" => DATA <= x"fffa"; + when x"38f" => DATA <= x"97c0"; + when x"390" => DATA <= x"fffa"; + when x"391" => DATA <= x"09f7"; + when x"392" => DATA <= x"ff46"; + when x"393" => DATA <= x"1580"; + when x"394" => DATA <= x"6000"; + when x"395" => DATA <= x"1c1f"; + when x"396" => DATA <= x"ffce"; + when x"397" => DATA <= x"0080"; + when x"398" => DATA <= x"1066"; + when x"399" => DATA <= x"15c1"; + when x"39a" => DATA <= x"0100"; + when x"39b" => DATA <= x"2017"; + when x"39c" => DATA <= x"000c"; + when x"39d" => DATA <= x"870f"; + when x"39e" => DATA <= x"0211"; + when x"39f" => DATA <= x"17c0"; + when x"3a0" => DATA <= x"f5f8"; + when x"3a1" => DATA <= x"8bdf"; + when x"3a2" => DATA <= x"fff8"; + when x"3a3" => DATA <= x"80fd"; + when x"3a4" => DATA <= x"941f"; + when x"3a5" => DATA <= x"fffa"; + when x"3a6" => DATA <= x"0ac1"; + when x"3a7" => DATA <= x"02f9"; + when x"3a8" => DATA <= x"8bdf"; + when x"3a9" => DATA <= x"fff8"; + when x"3aa" => DATA <= x"80fd"; + when x"3ab" => DATA <= x"8a1f"; + when x"3ac" => DATA <= x"fffa"; + when x"3ad" => DATA <= x"1581"; + when x"3ae" => DATA <= x"1580"; + when x"3af" => DATA <= x"0002"; + when x"3b0" => DATA <= x"17c0"; + when x"3b1" => DATA <= x"f5f8"; + when x"3b2" => DATA <= x"8bdf"; + when x"3b3" => DATA <= x"fff8"; + when x"3b4" => DATA <= x"80fd"; + when x"3b5" => DATA <= x"97d0"; + when x"3b6" => DATA <= x"fffa"; + when x"3b7" => DATA <= x"0ac1"; + when x"3b8" => DATA <= x"02f9"; + when x"3b9" => DATA <= x"1581"; + when x"3ba" => DATA <= x"1580"; + when x"3bb" => DATA <= x"0002"; + when x"3bc" => DATA <= x"1026"; + when x"3bd" => DATA <= x"17c0"; + when x"3be" => DATA <= x"f5f8"; + when x"3bf" => DATA <= x"941f"; + when x"3c0" => DATA <= x"fffa"; + when x"3c1" => DATA <= x"101f"; + when x"3c2" => DATA <= x"f5f8"; + when x"3c3" => DATA <= x"1580"; + when x"3c4" => DATA <= x"0002"; + when x"3c5" => DATA <= x"1026"; + when x"3c6" => DATA <= x"17c0"; + when x"3c7" => DATA <= x"f5f8"; + when x"3c8" => DATA <= x"97d0"; + when x"3c9" => DATA <= x"fffa"; + when x"3ca" => DATA <= x"101f"; + when x"3cb" => DATA <= x"f5f8"; + when x"3cc" => DATA <= x"1580"; + when x"3cd" => DATA <= x"0002"; + when x"3ce" => DATA <= x"1026"; + when x"3cf" => DATA <= x"17c0"; + when x"3d0" => DATA <= x"f5f8"; + when x"3d1" => DATA <= x"941f"; + when x"3d2" => DATA <= x"fffa"; + when x"3d3" => DATA <= x"941f"; + when x"3d4" => DATA <= x"fffa"; + when x"3d5" => DATA <= x"101f"; + when x"3d6" => DATA <= x"f5f8"; + when x"3d7" => DATA <= x"1580"; + when x"3d8" => DATA <= x"0002"; + when x"3d9" => DATA <= x"1026"; + when x"3da" => DATA <= x"17c0"; + when x"3db" => DATA <= x"f5f8"; + when x"3dc" => DATA <= x"97d0"; + when x"3dd" => DATA <= x"fffa"; + when x"3de" => DATA <= x"97d0"; + when x"3df" => DATA <= x"fffa"; + when x"3e0" => DATA <= x"101f"; + when x"3e1" => DATA <= x"f5f8"; + when x"3e2" => DATA <= x"1580"; when x"3e3" => DATA <= x"0002"; - when x"3e4" => DATA <= x"ff72"; - when x"3e5" => DATA <= x"ff84"; - when x"3e6" => DATA <= x"ff96"; - when x"3e7" => DATA <= x"ffac"; - when x"3e8" => DATA <= x"ffc2"; - when x"3e9" => DATA <= x"ffc2"; - when x"3ea" => DATA <= x"ffc2"; - when x"3eb" => DATA <= x"ffc2"; - when x"3ec" => DATA <= x"0000"; - when x"3ed" => DATA <= x"0000"; - when x"3ee" => DATA <= x"0000"; + when x"3e4" => DATA <= x"8a1f"; + when x"3e5" => DATA <= x"fffa"; + when x"3e6" => DATA <= x"0002"; + when x"3e7" => DATA <= x"ff78"; + when x"3e8" => DATA <= x"ff8a"; + when x"3e9" => DATA <= x"ff9c"; + when x"3ea" => DATA <= x"ffb2"; + when x"3eb" => DATA <= x"ffc8"; + when x"3ec" => DATA <= x"ffc8"; + when x"3ed" => DATA <= x"ffc8"; + when x"3ee" => DATA <= x"ffc8"; when x"3ef" => DATA <= x"0000"; when x"3f0" => DATA <= x"0000"; when x"3f1" => DATA <= x"0000"; From 0dce2be40910f716d41e6763559487066427ea85 Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 10 Aug 2015 18:43:54 +0100 Subject: [PATCH 24/61] More bug fixes, but now PDP-11 Basic will run Change-Id: I4b5d6c4393a216b9acd7644e29fced3562ebadea --- src/LX9Co_CoProPDP11.vhd | 18 +- src/ROM/tuberom_pdp11.vhd | 1652 ++++++++++++++++++------------------- 2 files changed, 835 insertions(+), 835 deletions(-) diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index f2930ba..b94f69f 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -155,7 +155,7 @@ begin psw_in_we_odd => '0', -- psw input from the control register address @ 177776, write enable for the odd address part psw_out => open, -- psw output, current psw that the cpu uses pir_in => x"0000", -- pirq value input from the control register - modelcode => 20, -- cpu model code + modelcode => 40, -- cpu model code init_r7 => x"f800", -- start address after reset = o'173000' = m9312 hi rom init_psw => x"00a0" -- initial psw sets interrupt priority 5, allowing BR6 and BR7 ); @@ -246,14 +246,14 @@ begin - test(8) <= '1' when ifetch = '1' and cpu_addr = o"174340" else '0'; - test(7) <= '1' when ifetch = '1' and cpu_addr = o"174470" else '0'; - test(6) <= '1' when ifetch = '1' and cpu_addr = o"174514" else '0'; - test(5) <= '1' when ifetch = '1' and cpu_addr = o"174564" else '0'; - test(4) <= '1' when ifetch = '1' and cpu_addr = o"174600" else '0'; - test(3) <= '1' when ifetch = '1' and cpu_addr = o"174610" else '0'; - test(2) <= '1' when ifetch = '1' and cpu_addr = o"174612" else '0'; - test(1) <= '1' when ifetch = '0' and cpu_addr = x"80a6" else '0'; + test(8) <= '1' when ifetch = '1' and cpu_addr = o"176320" else '0'; + test(7) <= '1' when ifetch = '1' and cpu_addr = o"176404" else '0'; + test(6) <= '1' when ifetch = '1' and cpu_addr = o"176406" else '0'; + test(5) <= '1' when ifetch = '1' and cpu_addr = o"176430" else '0'; + test(4) <= '1' when ifetch = '1' and cpu_addr = o"176432" else '0'; + test(3) <= '1' when ifetch = '1' and cpu_addr = x"1000" else '0'; + test(2) <= '1' when ifetch = '1' and cpu_addr = x"0000" else '0'; + test(1) <= cpu_IRQ_n; -- -------------------------------------------------------- diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index f2fb7ca..21f13af 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -38,13 +38,13 @@ begin when x"008" => DATA <= x"3436"; when x"009" => DATA <= x"204b"; when x"00a" => DATA <= x"2e30"; - when x"00b" => DATA <= x"3831"; + when x"00b" => DATA <= x"3931"; when x"00c" => DATA <= x"0d0d"; when x"00d" => DATA <= x"0000"; when x"00e" => DATA <= x"15c6"; when x"00f" => DATA <= x"f500"; when x"010" => DATA <= x"09f7"; - when x"011" => DATA <= x"056e"; + when x"011" => DATA <= x"0576"; when x"012" => DATA <= x"17df"; when x"013" => DATA <= x"f5fc"; when x"014" => DATA <= x"f5f8"; @@ -53,14 +53,14 @@ begin when x"017" => DATA <= x"09f7"; when x"018" => DATA <= x"0088"; when x"019" => DATA <= x"09f7"; - when x"01a" => DATA <= x"047e"; + when x"01a" => DATA <= x"0486"; when x"01b" => DATA <= x"00a1"; when x"01c" => DATA <= x"09f7"; when x"01d" => DATA <= x"009a"; when x"01e" => DATA <= x"15c6"; when x"01f" => DATA <= x"f500"; when x"020" => DATA <= x"09f7"; - when x"021" => DATA <= x"054e"; + when x"021" => DATA <= x"0556"; when x"022" => DATA <= x"15c1"; when x"023" => DATA <= x"f860"; when x"024" => DATA <= x"09f7"; @@ -68,7 +68,7 @@ begin when x"026" => DATA <= x"15c1"; when x"027" => DATA <= x"f868"; when x"028" => DATA <= x"09f7"; - when x"029" => DATA <= x"01fc"; + when x"029" => DATA <= x"0204"; when x"02a" => DATA <= x"870c"; when x"02b" => DATA <= x"15c0"; when x"02c" => DATA <= x"f520"; @@ -85,9 +85,9 @@ begin when x"037" => DATA <= x"15c0"; when x"038" => DATA <= x"007e"; when x"039" => DATA <= x"09f7"; - when x"03a" => DATA <= x"0148"; + when x"03a" => DATA <= x"0150"; when x"03b" => DATA <= x"09f7"; - when x"03c" => DATA <= x"066c"; + when x"03c" => DATA <= x"0674"; when x"03d" => DATA <= x"4511"; when x"03e" => DATA <= x"6373"; when x"03f" => DATA <= x"7061"; @@ -97,11 +97,11 @@ begin when x"043" => DATA <= x"1001"; when x"044" => DATA <= x"0a81"; when x"045" => DATA <= x"09f7"; - when x"046" => DATA <= x"041a"; + when x"046" => DATA <= x"0422"; when x"047" => DATA <= x"09f7"; when x"048" => DATA <= x"0028"; when x"049" => DATA <= x"09f7"; - when x"04a" => DATA <= x"0412"; + when x"04a" => DATA <= x"041a"; when x"04b" => DATA <= x"01d2"; when x"04c" => DATA <= x"6000"; when x"04d" => DATA <= x"901f"; @@ -119,7 +119,7 @@ begin when x"059" => DATA <= x"5001"; when x"05a" => DATA <= x"0087"; when x"05b" => DATA <= x"09f7"; - when x"05c" => DATA <= x"03e8"; + when x"05c" => DATA <= x"03f0"; when x"05d" => DATA <= x"9440"; when x"05e" => DATA <= x"02fc"; when x"05f" => DATA <= x"0087"; @@ -128,14 +128,14 @@ begin when x"062" => DATA <= x"15c0"; when x"063" => DATA <= x"0002"; when x"064" => DATA <= x"09f7"; - when x"065" => DATA <= x"0580"; + when x"065" => DATA <= x"0588"; when x"066" => DATA <= x"1581"; when x"067" => DATA <= x"09f7"; - when x"068" => DATA <= x"054a"; + when x"068" => DATA <= x"0552"; when x"069" => DATA <= x"1581"; when x"06a" => DATA <= x"00b1"; when x"06b" => DATA <= x"09f7"; - when x"06c" => DATA <= x"03a0"; + when x"06c" => DATA <= x"03a8"; when x"06d" => DATA <= x"8102"; when x"06e" => DATA <= x"0a00"; when x"06f" => DATA <= x"0087"; @@ -166,12 +166,12 @@ begin when x"088" => DATA <= x"0006"; when x"089" => DATA <= x"35c0"; -- was 0bd7 when x"08a" => DATA <= x"0040"; - when x"08b" => DATA <= x"0345"; + when x"08b" => DATA <= x"0349"; when x"08c" => DATA <= x"45c0"; when x"08d" => DATA <= x"fff0"; -- was 00ff when x"08e" => DATA <= x"2017"; when x"08f" => DATA <= x"0007"; - when x"090" => DATA <= x"0240"; + when x"090" => DATA <= x"0244"; when x"091" => DATA <= x"9c40"; when x"092" => DATA <= x"0006"; when x"093" => DATA <= x"35c0"; -- was 0bd7 @@ -185,7 +185,7 @@ begin when x"09b" => DATA <= x"0a81"; when x"09c" => DATA <= x"8bd1"; when x"09d" => DATA <= x"02fe"; - when x"09e" => DATA <= x"6057"; + when x"09e" => DATA <= x"65c1"; when x"09f" => DATA <= x"0004"; when x"0a0" => DATA <= x"09f7"; when x"0a1" => DATA <= x"ff60"; @@ -199,10 +199,10 @@ begin when x"0a9" => DATA <= x"1240"; when x"0aa" => DATA <= x"2017"; when x"0ab" => DATA <= x"0105"; - when x"0ac" => DATA <= x"8718"; + when x"0ac" => DATA <= x"871a"; when x"0ad" => DATA <= x"2017"; when x"0ae" => DATA <= x"0109"; - when x"0af" => DATA <= x"8615"; + when x"0af" => DATA <= x"8617"; when x"0b0" => DATA <= x"1c42"; when x"0b1" => DATA <= x"0002"; when x"0b2" => DATA <= x"1c43"; @@ -210,835 +210,835 @@ begin when x"0b4" => DATA <= x"60c2"; when x"0b5" => DATA <= x"1c43"; when x"0b6" => DATA <= x"0006"; - when x"0b7" => DATA <= x"0a00"; - when x"0b8" => DATA <= x"65c1"; - when x"0b9" => DATA <= x"0010"; - when x"0ba" => DATA <= x"1450"; - when x"0bb" => DATA <= x"e097"; - when x"0bc" => DATA <= x"0002"; - when x"0bd" => DATA <= x"02fc"; - when x"0be" => DATA <= x"0bc3"; - when x"0bf" => DATA <= x"0304"; - when x"0c0" => DATA <= x"0a10"; - when x"0c1" => DATA <= x"e0d7"; - when x"0c2" => DATA <= x"0002"; - when x"0c3" => DATA <= x"02fc"; - when x"0c4" => DATA <= x"0a01"; - when x"0c5" => DATA <= x"1080"; - when x"0c6" => DATA <= x"0c80"; - when x"0c7" => DATA <= x"0308"; - when x"0c8" => DATA <= x"17e6"; - when x"0c9" => DATA <= x"f5fc"; - when x"0ca" => DATA <= x"105f"; - when x"0cb" => DATA <= x"f5fc"; - when x"0cc" => DATA <= x"09c9"; - when x"0cd" => DATA <= x"159f"; - when x"0ce" => DATA <= x"f5fc"; - when x"0cf" => DATA <= x"0087"; - when x"0d0" => DATA <= x"0049"; - when x"0d1" => DATA <= x"0c02"; - when x"0d2" => DATA <= x"860a"; - when x"0d3" => DATA <= x"09f7"; - when x"0d4" => DATA <= x"053c"; - when x"0d5" => DATA <= x"4ef9"; - when x"0d6" => DATA <= x"746f"; - when x"0d7" => DATA <= x"5020"; - when x"0d8" => DATA <= x"5044"; - when x"0d9" => DATA <= x"3131"; - when x"0da" => DATA <= x"6320"; - when x"0db" => DATA <= x"646f"; - when x"0dc" => DATA <= x"0065"; - when x"0dd" => DATA <= x"0077"; - when x"0de" => DATA <= x"fe7e"; - when x"0df" => DATA <= x"1026"; - when x"0e0" => DATA <= x"8bc0"; - when x"0e1" => DATA <= x"810c"; - when x"0e2" => DATA <= x"15c0"; - when x"0e3" => DATA <= x"0004"; - when x"0e4" => DATA <= x"09f7"; - when x"0e5" => DATA <= x"047a"; - when x"0e6" => DATA <= x"1380"; - when x"0e7" => DATA <= x"09f7"; - when x"0e8" => DATA <= x"047a"; - when x"0e9" => DATA <= x"09f7"; - when x"0ea" => DATA <= x"02a4"; - when x"0eb" => DATA <= x"1001"; - when x"0ec" => DATA <= x"1580"; - when x"0ed" => DATA <= x"0087"; - when x"0ee" => DATA <= x"2017"; - when x"0ef" => DATA <= x"0082"; - when x"0f0" => DATA <= x"032b"; - when x"0f1" => DATA <= x"2017"; - when x"0f2" => DATA <= x"0083"; - when x"0f3" => DATA <= x"032a"; - when x"0f4" => DATA <= x"2017"; - when x"0f5" => DATA <= x"0084"; - when x"0f6" => DATA <= x"0327"; - when x"0f7" => DATA <= x"15c0"; - when x"0f8" => DATA <= x"0006"; - when x"0f9" => DATA <= x"09f7"; - when x"0fa" => DATA <= x"0450"; - when x"0fb" => DATA <= x"1080"; - when x"0fc" => DATA <= x"09f7"; - when x"0fd" => DATA <= x"0450"; - when x"0fe" => DATA <= x"1580"; - when x"0ff" => DATA <= x"09f7"; - when x"100" => DATA <= x"044a"; - when x"101" => DATA <= x"2017"; - when x"102" => DATA <= x"009d"; - when x"103" => DATA <= x"0315"; - when x"104" => DATA <= x"2017"; - when x"105" => DATA <= x"008e"; - when x"106" => DATA <= x"0313"; - when x"107" => DATA <= x"1026"; - when x"108" => DATA <= x"09f7"; - when x"109" => DATA <= x"0266"; - when x"10a" => DATA <= x"6017"; - when x"10b" => DATA <= x"ff80"; + when x"0b7" => DATA <= x"17c0"; + when x"0b8" => DATA <= x"f5ee"; + when x"0b9" => DATA <= x"65c1"; + when x"0ba" => DATA <= x"0010"; + when x"0bb" => DATA <= x"1450"; + when x"0bc" => DATA <= x"e5c2"; + when x"0bd" => DATA <= x"0002"; + when x"0be" => DATA <= x"02fc"; + when x"0bf" => DATA <= x"0bc3"; + when x"0c0" => DATA <= x"0304"; + when x"0c1" => DATA <= x"0a10"; + when x"0c2" => DATA <= x"e5c3"; + when x"0c3" => DATA <= x"0002"; + when x"0c4" => DATA <= x"02fc"; + when x"0c5" => DATA <= x"17c1"; -- was 17c0 + when x"0c6" => DATA <= x"f5ee"; + when x"0c7" => DATA <= x"15c5"; + when x"0c8" => DATA <= x"0bbc"; + when x"0c9" => DATA <= x"1080"; + when x"0ca" => DATA <= x"0c80"; + when x"0cb" => DATA <= x"0308"; + when x"0cc" => DATA <= x"17e6"; + when x"0cd" => DATA <= x"f5fc"; + when x"0ce" => DATA <= x"105f"; + when x"0cf" => DATA <= x"f5fc"; + when x"0d0" => DATA <= x"09c9"; + when x"0d1" => DATA <= x"159f"; + when x"0d2" => DATA <= x"f5fc"; + when x"0d3" => DATA <= x"0087"; + when x"0d4" => DATA <= x"0049"; + when x"0d5" => DATA <= x"0c02"; + when x"0d6" => DATA <= x"860a"; + when x"0d7" => DATA <= x"09f7"; + when x"0d8" => DATA <= x"053c"; + when x"0d9" => DATA <= x"4ef9"; + when x"0da" => DATA <= x"746f"; + when x"0db" => DATA <= x"5020"; + when x"0dc" => DATA <= x"5044"; + when x"0dd" => DATA <= x"3131"; + when x"0de" => DATA <= x"6320"; + when x"0df" => DATA <= x"646f"; + when x"0e0" => DATA <= x"0065"; + when x"0e1" => DATA <= x"0077"; + when x"0e2" => DATA <= x"fe76"; + when x"0e3" => DATA <= x"1026"; + when x"0e4" => DATA <= x"8bc0"; + when x"0e5" => DATA <= x"810c"; + when x"0e6" => DATA <= x"15c0"; + when x"0e7" => DATA <= x"0004"; + when x"0e8" => DATA <= x"09f7"; + when x"0e9" => DATA <= x"047a"; + when x"0ea" => DATA <= x"1380"; + when x"0eb" => DATA <= x"09f7"; + when x"0ec" => DATA <= x"047a"; + when x"0ed" => DATA <= x"09f7"; + when x"0ee" => DATA <= x"02a4"; + when x"0ef" => DATA <= x"1001"; + when x"0f0" => DATA <= x"1580"; + when x"0f1" => DATA <= x"0087"; + when x"0f2" => DATA <= x"2017"; + when x"0f3" => DATA <= x"0082"; + when x"0f4" => DATA <= x"032b"; + when x"0f5" => DATA <= x"2017"; + when x"0f6" => DATA <= x"0083"; + when x"0f7" => DATA <= x"032a"; + when x"0f8" => DATA <= x"2017"; + when x"0f9" => DATA <= x"0084"; + when x"0fa" => DATA <= x"0327"; + when x"0fb" => DATA <= x"15c0"; + when x"0fc" => DATA <= x"0006"; + when x"0fd" => DATA <= x"09f7"; + when x"0fe" => DATA <= x"0450"; + when x"0ff" => DATA <= x"1080"; + when x"100" => DATA <= x"09f7"; + when x"101" => DATA <= x"0450"; + when x"102" => DATA <= x"1580"; + when x"103" => DATA <= x"09f7"; + when x"104" => DATA <= x"044a"; + when x"105" => DATA <= x"2017"; + when x"106" => DATA <= x"009d"; + when x"107" => DATA <= x"0315"; + when x"108" => DATA <= x"2017"; + when x"109" => DATA <= x"008e"; + when x"10a" => DATA <= x"0313"; + when x"10b" => DATA <= x"1026"; when x"10c" => DATA <= x"09f7"; - when x"10d" => DATA <= x"025e"; - when x"10e" => DATA <= x"45c0"; - when x"10f" => DATA <= x"ff00"; - when x"110" => DATA <= x"1002"; - when x"111" => DATA <= x"00c0"; - when x"112" => DATA <= x"1001"; - when x"113" => DATA <= x"09f7"; - when x"114" => DATA <= x"0250"; - when x"115" => DATA <= x"45c0"; - when x"116" => DATA <= x"ff00"; - when x"117" => DATA <= x"5001"; - when x"118" => DATA <= x"1580"; - when x"119" => DATA <= x"0087"; - when x"11a" => DATA <= x"0077"; - when x"11b" => DATA <= x"fe9c"; - when x"11c" => DATA <= x"15c0"; - when x"11d" => DATA <= x"0086"; - when x"11e" => DATA <= x"8cc0"; - when x"11f" => DATA <= x"8cc0"; - when x"120" => DATA <= x"1c01"; - when x"121" => DATA <= x"f5e2"; - when x"122" => DATA <= x"1042"; - when x"123" => DATA <= x"00c2"; - when x"124" => DATA <= x"45c2"; - when x"125" => DATA <= x"ff00"; - when x"126" => DATA <= x"1580"; - when x"127" => DATA <= x"0087"; - when x"128" => DATA <= x"0bc0"; - when x"129" => DATA <= x"034d"; - when x"12a" => DATA <= x"10e6"; - when x"12b" => DATA <= x"10a6"; - when x"12c" => DATA <= x"1026"; - when x"12d" => DATA <= x"15c0"; - when x"12e" => DATA <= x"0008"; - when x"12f" => DATA <= x"09f7"; - when x"130" => DATA <= x"03ea"; - when x"131" => DATA <= x"1380"; - when x"132" => DATA <= x"09f7"; - when x"133" => DATA <= x"03e4"; - when x"134" => DATA <= x"8bc0"; - when x"135" => DATA <= x"8003"; - when x"136" => DATA <= x"9402"; - when x"137" => DATA <= x"9203"; - when x"138" => DATA <= x"010c"; - when x"139" => DATA <= x"15c2"; - when x"13a" => DATA <= x"0010"; - when x"13b" => DATA <= x"15c3"; - when x"13c" => DATA <= x"0010"; - when x"13d" => DATA <= x"2017"; - when x"13e" => DATA <= x"0015"; - when x"13f" => DATA <= x"8605"; - when x"140" => DATA <= x"6000"; - when x"141" => DATA <= x"6dc0"; - when x"142" => DATA <= x"003e"; - when x"143" => DATA <= x"9402"; - when x"144" => DATA <= x"9203"; - when x"145" => DATA <= x"1080"; - when x"146" => DATA <= x"09f7"; - when x"147" => DATA <= x"03bc"; - when x"148" => DATA <= x"6081"; - when x"149" => DATA <= x"0ac2"; - when x"14a" => DATA <= x"2097"; - when x"14b" => DATA <= x"0080"; - when x"14c" => DATA <= x"8605"; - when x"14d" => DATA <= x"9840"; - when x"14e" => DATA <= x"09f7"; - when x"14f" => DATA <= x"03ac"; - when x"150" => DATA <= x"0ac2"; - when x"151" => DATA <= x"80fb"; - when x"152" => DATA <= x"10c0"; - when x"153" => DATA <= x"09f7"; - when x"154" => DATA <= x"03a2"; - when x"155" => DATA <= x"60c1"; - when x"156" => DATA <= x"0ac3"; - when x"157" => DATA <= x"20d7"; - when x"158" => DATA <= x"0080"; - when x"159" => DATA <= x"8605"; - when x"15a" => DATA <= x"09f7"; - when x"15b" => DATA <= x"01c2"; - when x"15c" => DATA <= x"9021"; - when x"15d" => DATA <= x"0ac3"; - when x"15e" => DATA <= x"80fb"; - when x"15f" => DATA <= x"1580"; - when x"160" => DATA <= x"1582"; - when x"161" => DATA <= x"1583"; - when x"162" => DATA <= x"0087"; - when x"163" => DATA <= x"0500"; - when x"164" => DATA <= x"0005"; - when x"165" => DATA <= x"0500"; - when x"166" => DATA <= x"0005"; - when x"167" => DATA <= x"0504"; + when x"10d" => DATA <= x"0266"; + when x"10e" => DATA <= x"65c0"; + when x"10f" => DATA <= x"ff80"; + when x"110" => DATA <= x"09f7"; + when x"111" => DATA <= x"025e"; + when x"112" => DATA <= x"45c0"; + when x"113" => DATA <= x"ff00"; + when x"114" => DATA <= x"1002"; + when x"115" => DATA <= x"00c0"; + when x"116" => DATA <= x"1001"; + when x"117" => DATA <= x"09f7"; + when x"118" => DATA <= x"0250"; + when x"119" => DATA <= x"45c0"; + when x"11a" => DATA <= x"ff00"; + when x"11b" => DATA <= x"5001"; + when x"11c" => DATA <= x"1580"; + when x"11d" => DATA <= x"0087"; + when x"11e" => DATA <= x"0077"; + when x"11f" => DATA <= x"fe94"; + when x"120" => DATA <= x"15c0"; + when x"121" => DATA <= x"0086"; + when x"122" => DATA <= x"8cc0"; + when x"123" => DATA <= x"8cc0"; + when x"124" => DATA <= x"1c01"; + when x"125" => DATA <= x"f5e2"; + when x"126" => DATA <= x"1042"; + when x"127" => DATA <= x"00c2"; + when x"128" => DATA <= x"45c2"; + when x"129" => DATA <= x"ff00"; + when x"12a" => DATA <= x"1580"; + when x"12b" => DATA <= x"0087"; + when x"12c" => DATA <= x"0bc0"; + when x"12d" => DATA <= x"034d"; + when x"12e" => DATA <= x"10e6"; + when x"12f" => DATA <= x"10a6"; + when x"130" => DATA <= x"1026"; + when x"131" => DATA <= x"15c0"; + when x"132" => DATA <= x"0008"; + when x"133" => DATA <= x"09f7"; + when x"134" => DATA <= x"03ea"; + when x"135" => DATA <= x"1380"; + when x"136" => DATA <= x"09f7"; + when x"137" => DATA <= x"03e4"; + when x"138" => DATA <= x"8bc0"; + when x"139" => DATA <= x"8003"; + when x"13a" => DATA <= x"9402"; + when x"13b" => DATA <= x"9203"; + when x"13c" => DATA <= x"010c"; + when x"13d" => DATA <= x"15c2"; + when x"13e" => DATA <= x"0010"; + when x"13f" => DATA <= x"15c3"; + when x"140" => DATA <= x"0010"; + when x"141" => DATA <= x"2017"; + when x"142" => DATA <= x"0015"; + when x"143" => DATA <= x"8605"; + when x"144" => DATA <= x"6000"; + when x"145" => DATA <= x"6dc0"; + when x"146" => DATA <= x"003e"; + when x"147" => DATA <= x"9402"; + when x"148" => DATA <= x"9203"; + when x"149" => DATA <= x"1080"; + when x"14a" => DATA <= x"09f7"; + when x"14b" => DATA <= x"03bc"; + when x"14c" => DATA <= x"6081"; + when x"14d" => DATA <= x"0ac2"; + when x"14e" => DATA <= x"2097"; + when x"14f" => DATA <= x"0080"; + when x"150" => DATA <= x"8605"; + when x"151" => DATA <= x"9840"; + when x"152" => DATA <= x"09f7"; + when x"153" => DATA <= x"03ac"; + when x"154" => DATA <= x"0ac2"; + when x"155" => DATA <= x"80fb"; + when x"156" => DATA <= x"10c0"; + when x"157" => DATA <= x"09f7"; + when x"158" => DATA <= x"03a2"; + when x"159" => DATA <= x"60c1"; + when x"15a" => DATA <= x"0ac3"; + when x"15b" => DATA <= x"20d7"; + when x"15c" => DATA <= x"0080"; + when x"15d" => DATA <= x"8605"; + when x"15e" => DATA <= x"09f7"; + when x"15f" => DATA <= x"01c2"; + when x"160" => DATA <= x"9021"; + when x"161" => DATA <= x"0ac3"; + when x"162" => DATA <= x"80fb"; + when x"163" => DATA <= x"1580"; + when x"164" => DATA <= x"1582"; + when x"165" => DATA <= x"1583"; + when x"166" => DATA <= x"0087"; + when x"167" => DATA <= x"0500"; when x"168" => DATA <= x"0005"; - when x"169" => DATA <= x"0008"; - when x"16a" => DATA <= x"000e"; + when x"169" => DATA <= x"0500"; + when x"16a" => DATA <= x"0005"; when x"16b" => DATA <= x"0504"; - when x"16c" => DATA <= x"0901"; - when x"16d" => DATA <= x"0501"; - when x"16e" => DATA <= x"0005"; - when x"16f" => DATA <= x"0800"; - when x"170" => DATA <= x"1910"; - when x"171" => DATA <= x"0020"; - when x"172" => DATA <= x"0110"; - when x"173" => DATA <= x"0d0d"; - when x"174" => DATA <= x"8000"; - when x"175" => DATA <= x"0808"; - when x"176" => DATA <= x"8080"; - when x"177" => DATA <= x"15c0"; - when x"178" => DATA <= x"000a"; - when x"179" => DATA <= x"09f7"; - when x"17a" => DATA <= x"0356"; - when x"17b" => DATA <= x"65c1"; - when x"17c" => DATA <= x"0002"; - when x"17d" => DATA <= x"15c2"; - when x"17e" => DATA <= x"0003"; - when x"17f" => DATA <= x"09f7"; - when x"180" => DATA <= x"0328"; - when x"181" => DATA <= x"15c0"; - when x"182" => DATA <= x"0007"; + when x"16c" => DATA <= x"0005"; + when x"16d" => DATA <= x"0008"; + when x"16e" => DATA <= x"000e"; + when x"16f" => DATA <= x"0504"; + when x"170" => DATA <= x"0901"; + when x"171" => DATA <= x"0501"; + when x"172" => DATA <= x"0005"; + when x"173" => DATA <= x"0800"; + when x"174" => DATA <= x"1910"; + when x"175" => DATA <= x"0020"; + when x"176" => DATA <= x"0110"; + when x"177" => DATA <= x"0d0d"; + when x"178" => DATA <= x"8000"; + when x"179" => DATA <= x"0808"; + when x"17a" => DATA <= x"8080"; + when x"17b" => DATA <= x"15c0"; + when x"17c" => DATA <= x"000a"; + when x"17d" => DATA <= x"09f7"; + when x"17e" => DATA <= x"0356"; + when x"17f" => DATA <= x"65c1"; + when x"180" => DATA <= x"0002"; + when x"181" => DATA <= x"15c2"; + when x"182" => DATA <= x"0003"; when x"183" => DATA <= x"09f7"; - when x"184" => DATA <= x"0342"; - when x"185" => DATA <= x"0a00"; - when x"186" => DATA <= x"09f7"; - when x"187" => DATA <= x"033c"; - when x"188" => DATA <= x"09f7"; - when x"189" => DATA <= x"0166"; - when x"18a" => DATA <= x"6017"; - when x"18b" => DATA <= x"ff80"; - when x"18c" => DATA <= x"870b"; - when x"18d" => DATA <= x"09f7"; - when x"18e" => DATA <= x"fd82"; - when x"18f" => DATA <= x"0a02"; - when x"190" => DATA <= x"09f7"; - when x"191" => DATA <= x"0156"; - when x"192" => DATA <= x"9011"; - when x"193" => DATA <= x"0a82"; - when x"194" => DATA <= x"2017"; - when x"195" => DATA <= x"000d"; - when x"196" => DATA <= x"02f9"; - when x"197" => DATA <= x"0ac2"; - when x"198" => DATA <= x"0087"; - when x"199" => DATA <= x"10a6"; - when x"19a" => DATA <= x"1066"; - when x"19b" => DATA <= x"1026"; - when x"19c" => DATA <= x"15c0"; - when x"19d" => DATA <= x"000c"; - when x"19e" => DATA <= x"09f7"; - when x"19f" => DATA <= x"0306"; - when x"1a0" => DATA <= x"1081"; - when x"1a1" => DATA <= x"15c2"; - when x"1a2" => DATA <= x"0004"; - when x"1a3" => DATA <= x"09f7"; - when x"1a4" => DATA <= x"02e0"; - when x"1a5" => DATA <= x"1580"; - when x"1a6" => DATA <= x"09f7"; - when x"1a7" => DATA <= x"02fc"; - when x"1a8" => DATA <= x"09f7"; - when x"1a9" => DATA <= x"0126"; - when x"1aa" => DATA <= x"1026"; - when x"1ab" => DATA <= x"15c2"; - when x"1ac" => DATA <= x"0004"; - when x"1ad" => DATA <= x"09f7"; - when x"1ae" => DATA <= x"02da"; - when x"1af" => DATA <= x"1580"; - when x"1b0" => DATA <= x"1581"; - when x"1b1" => DATA <= x"1582"; - when x"1b2" => DATA <= x"0087"; - when x"1b3" => DATA <= x"1026"; - when x"1b4" => DATA <= x"15c0"; - when x"1b5" => DATA <= x"0012"; - when x"1b6" => DATA <= x"09f7"; - when x"1b7" => DATA <= x"02dc"; - when x"1b8" => DATA <= x"1580"; - when x"1b9" => DATA <= x"09f7"; - when x"1ba" => DATA <= x"02d6"; - when x"1bb" => DATA <= x"0bc0"; - when x"1bc" => DATA <= x"0206"; + when x"184" => DATA <= x"0328"; + when x"185" => DATA <= x"15c0"; + when x"186" => DATA <= x"0007"; + when x"187" => DATA <= x"09f7"; + when x"188" => DATA <= x"0342"; + when x"189" => DATA <= x"0a00"; + when x"18a" => DATA <= x"09f7"; + when x"18b" => DATA <= x"033c"; + when x"18c" => DATA <= x"09f7"; + when x"18d" => DATA <= x"0166"; + when x"18e" => DATA <= x"65c0"; + when x"18f" => DATA <= x"ff80"; + when x"190" => DATA <= x"870b"; + when x"191" => DATA <= x"09f7"; + when x"192" => DATA <= x"fd7a"; + when x"193" => DATA <= x"0a02"; + when x"194" => DATA <= x"09f7"; + when x"195" => DATA <= x"0156"; + when x"196" => DATA <= x"9011"; + when x"197" => DATA <= x"0a82"; + when x"198" => DATA <= x"2017"; + when x"199" => DATA <= x"000d"; + when x"19a" => DATA <= x"02f9"; + when x"19b" => DATA <= x"0ac2"; + when x"19c" => DATA <= x"0087"; + when x"19d" => DATA <= x"10a6"; + when x"19e" => DATA <= x"1066"; + when x"19f" => DATA <= x"1026"; + when x"1a0" => DATA <= x"15c0"; + when x"1a1" => DATA <= x"000c"; + when x"1a2" => DATA <= x"09f7"; + when x"1a3" => DATA <= x"0306"; + when x"1a4" => DATA <= x"1081"; + when x"1a5" => DATA <= x"15c2"; + when x"1a6" => DATA <= x"0004"; + when x"1a7" => DATA <= x"09f7"; + when x"1a8" => DATA <= x"02e0"; + when x"1a9" => DATA <= x"1580"; + when x"1aa" => DATA <= x"09f7"; + when x"1ab" => DATA <= x"02fc"; + when x"1ac" => DATA <= x"09f7"; + when x"1ad" => DATA <= x"0126"; + when x"1ae" => DATA <= x"1026"; + when x"1af" => DATA <= x"15c2"; + when x"1b0" => DATA <= x"0004"; + when x"1b1" => DATA <= x"09f7"; + when x"1b2" => DATA <= x"02da"; + when x"1b3" => DATA <= x"1580"; + when x"1b4" => DATA <= x"1581"; + when x"1b5" => DATA <= x"1582"; + when x"1b6" => DATA <= x"0087"; + when x"1b7" => DATA <= x"1026"; + when x"1b8" => DATA <= x"15c0"; + when x"1b9" => DATA <= x"0012"; + when x"1ba" => DATA <= x"09f7"; + when x"1bb" => DATA <= x"02dc"; + when x"1bc" => DATA <= x"1580"; when x"1bd" => DATA <= x"09f7"; - when x"1be" => DATA <= x"02cc"; - when x"1bf" => DATA <= x"09f7"; - when x"1c0" => DATA <= x"00f8"; - when x"1c1" => DATA <= x"0a00"; - when x"1c2" => DATA <= x"0087"; - when x"1c3" => DATA <= x"1066"; - when x"1c4" => DATA <= x"09f7"; - when x"1c5" => DATA <= x"0290"; - when x"1c6" => DATA <= x"09f7"; - when x"1c7" => DATA <= x"00ea"; - when x"1c8" => DATA <= x"1581"; - when x"1c9" => DATA <= x"0087"; - when x"1ca" => DATA <= x"10a6"; - when x"1cb" => DATA <= x"1066"; - when x"1cc" => DATA <= x"1026"; - when x"1cd" => DATA <= x"15c0"; - when x"1ce" => DATA <= x"0014"; - when x"1cf" => DATA <= x"09f7"; - when x"1d0" => DATA <= x"02aa"; - when x"1d1" => DATA <= x"65c1"; - when x"1d2" => DATA <= x"0002"; - when x"1d3" => DATA <= x"15c2"; - when x"1d4" => DATA <= x"0010"; - when x"1d5" => DATA <= x"09f7"; - when x"1d6" => DATA <= x"027c"; - when x"1d7" => DATA <= x"09f7"; - when x"1d8" => DATA <= x"fcee"; + when x"1be" => DATA <= x"02d6"; + when x"1bf" => DATA <= x"0bc0"; + when x"1c0" => DATA <= x"0206"; + when x"1c1" => DATA <= x"09f7"; + when x"1c2" => DATA <= x"02cc"; + when x"1c3" => DATA <= x"09f7"; + when x"1c4" => DATA <= x"00f8"; + when x"1c5" => DATA <= x"0a00"; + when x"1c6" => DATA <= x"0087"; + when x"1c7" => DATA <= x"1066"; + when x"1c8" => DATA <= x"09f7"; + when x"1c9" => DATA <= x"0290"; + when x"1ca" => DATA <= x"09f7"; + when x"1cb" => DATA <= x"00ea"; + when x"1cc" => DATA <= x"1581"; + when x"1cd" => DATA <= x"0087"; + when x"1ce" => DATA <= x"10a6"; + when x"1cf" => DATA <= x"1066"; + when x"1d0" => DATA <= x"1026"; + when x"1d1" => DATA <= x"15c0"; + when x"1d2" => DATA <= x"0014"; + when x"1d3" => DATA <= x"09f7"; + when x"1d4" => DATA <= x"02aa"; + when x"1d5" => DATA <= x"65c1"; + when x"1d6" => DATA <= x"0002"; + when x"1d7" => DATA <= x"15c2"; + when x"1d8" => DATA <= x"0010"; when x"1d9" => DATA <= x"09f7"; - when x"1da" => DATA <= x"0266"; - when x"1db" => DATA <= x"1580"; - when x"1dc" => DATA <= x"09f7"; - when x"1dd" => DATA <= x"0290"; - when x"1de" => DATA <= x"09f7"; - when x"1df" => DATA <= x"00ba"; - when x"1e0" => DATA <= x"1381"; - when x"1e1" => DATA <= x"1026"; - when x"1e2" => DATA <= x"65c1"; - when x"1e3" => DATA <= x"0002"; - when x"1e4" => DATA <= x"15c2"; - when x"1e5" => DATA <= x"0010"; - when x"1e6" => DATA <= x"09f7"; - when x"1e7" => DATA <= x"0268"; - when x"1e8" => DATA <= x"1580"; - when x"1e9" => DATA <= x"1581"; - when x"1ea" => DATA <= x"1582"; - when x"1eb" => DATA <= x"0087"; - when x"1ec" => DATA <= x"8bc9"; - when x"1ed" => DATA <= x"0205"; - when x"1ee" => DATA <= x"0bc0"; - when x"1ef" => DATA <= x"0303"; - when x"1f0" => DATA <= x"2017"; - when x"1f1" => DATA <= x"0005"; - when x"1f2" => DATA <= x"8713"; - when x"1f3" => DATA <= x"10a6"; - when x"1f4" => DATA <= x"1026"; - when x"1f5" => DATA <= x"15c0"; - when x"1f6" => DATA <= x"0016"; - when x"1f7" => DATA <= x"09f7"; - when x"1f8" => DATA <= x"025a"; - when x"1f9" => DATA <= x"15c2"; - when x"1fa" => DATA <= x"000d"; + when x"1da" => DATA <= x"027c"; + when x"1db" => DATA <= x"09f7"; + when x"1dc" => DATA <= x"fce6"; + when x"1dd" => DATA <= x"09f7"; + when x"1de" => DATA <= x"0266"; + when x"1df" => DATA <= x"1580"; + when x"1e0" => DATA <= x"09f7"; + when x"1e1" => DATA <= x"0290"; + when x"1e2" => DATA <= x"09f7"; + when x"1e3" => DATA <= x"00ba"; + when x"1e4" => DATA <= x"1381"; + when x"1e5" => DATA <= x"1026"; + when x"1e6" => DATA <= x"65c1"; + when x"1e7" => DATA <= x"0002"; + when x"1e8" => DATA <= x"15c2"; + when x"1e9" => DATA <= x"0010"; + when x"1ea" => DATA <= x"09f7"; + when x"1eb" => DATA <= x"0268"; + when x"1ec" => DATA <= x"1580"; + when x"1ed" => DATA <= x"1581"; + when x"1ee" => DATA <= x"1582"; + when x"1ef" => DATA <= x"0087"; + when x"1f0" => DATA <= x"8bc9"; + when x"1f1" => DATA <= x"0205"; + when x"1f2" => DATA <= x"0bc0"; + when x"1f3" => DATA <= x"0303"; + when x"1f4" => DATA <= x"2017"; + when x"1f5" => DATA <= x"0005"; + when x"1f6" => DATA <= x"8713"; + when x"1f7" => DATA <= x"10a6"; + when x"1f8" => DATA <= x"1026"; + when x"1f9" => DATA <= x"15c0"; + when x"1fa" => DATA <= x"0016"; when x"1fb" => DATA <= x"09f7"; - when x"1fc" => DATA <= x"0230"; - when x"1fd" => DATA <= x"1580"; - when x"1fe" => DATA <= x"09f7"; - when x"1ff" => DATA <= x"024c"; - when x"200" => DATA <= x"15c2"; - when x"201" => DATA <= x"000d"; + when x"1fc" => DATA <= x"025a"; + when x"1fd" => DATA <= x"15c2"; + when x"1fe" => DATA <= x"000d"; + when x"1ff" => DATA <= x"09f7"; + when x"200" => DATA <= x"0230"; + when x"201" => DATA <= x"1580"; when x"202" => DATA <= x"09f7"; - when x"203" => DATA <= x"0230"; - when x"204" => DATA <= x"1582"; - when x"205" => DATA <= x"0133"; - when x"206" => DATA <= x"10a6"; - when x"207" => DATA <= x"1026"; - when x"208" => DATA <= x"1066"; - when x"209" => DATA <= x"0a81"; - when x"20a" => DATA <= x"09f7"; - when x"20b" => DATA <= x"fc8c"; - when x"20c" => DATA <= x"1042"; - when x"20d" => DATA <= x"1581"; - when x"20e" => DATA <= x"2397"; - when x"20f" => DATA <= x"0003"; - when x"210" => DATA <= x"8604"; - when x"211" => DATA <= x"9480"; - when x"212" => DATA <= x"09f7"; - when x"213" => DATA <= x"008c"; - when x"214" => DATA <= x"0104"; - when x"215" => DATA <= x"09f7"; - when x"216" => DATA <= x"003e"; - when x"217" => DATA <= x"870d"; - when x"218" => DATA <= x"9012"; - when x"219" => DATA <= x"8bf1"; - when x"21a" => DATA <= x"0005"; - when x"21b" => DATA <= x"0202"; - when x"21c" => DATA <= x"8af1"; - when x"21d" => DATA <= x"0006"; - when x"21e" => DATA <= x"8af1"; - when x"21f" => DATA <= x"0005"; - when x"220" => DATA <= x"02ed"; - when x"221" => DATA <= x"8bf1"; - when x"222" => DATA <= x"0006"; - when x"223" => DATA <= x"02ea"; - when x"224" => DATA <= x"00a1"; - when x"225" => DATA <= x"90b1"; - when x"226" => DATA <= x"0001"; - when x"227" => DATA <= x"00c2"; - when x"228" => DATA <= x"90b1"; - when x"229" => DATA <= x"0002"; - when x"22a" => DATA <= x"0bd6"; - when x"22b" => DATA <= x"1582"; - when x"22c" => DATA <= x"15c0"; - when x"22d" => DATA <= x"0000"; - when x"22e" => DATA <= x"0087"; - when x"22f" => DATA <= x"0bc1"; - when x"230" => DATA <= x"0305"; - when x"231" => DATA <= x"15c0"; - when x"232" => DATA <= x"000e"; - when x"233" => DATA <= x"09f7"; - when x"234" => DATA <= x"01dc"; - when x"235" => DATA <= x"0103"; - when x"236" => DATA <= x"0a00"; + when x"203" => DATA <= x"024c"; + when x"204" => DATA <= x"15c2"; + when x"205" => DATA <= x"000d"; + when x"206" => DATA <= x"09f7"; + when x"207" => DATA <= x"0230"; + when x"208" => DATA <= x"1582"; + when x"209" => DATA <= x"0133"; + when x"20a" => DATA <= x"10a6"; + when x"20b" => DATA <= x"1026"; + when x"20c" => DATA <= x"1066"; + when x"20d" => DATA <= x"0a81"; + when x"20e" => DATA <= x"09f7"; + when x"20f" => DATA <= x"fc84"; + when x"210" => DATA <= x"1042"; + when x"211" => DATA <= x"1581"; + when x"212" => DATA <= x"2397"; + when x"213" => DATA <= x"0003"; + when x"214" => DATA <= x"8604"; + when x"215" => DATA <= x"9480"; + when x"216" => DATA <= x"09f7"; + when x"217" => DATA <= x"008c"; + when x"218" => DATA <= x"0104"; + when x"219" => DATA <= x"09f7"; + when x"21a" => DATA <= x"003e"; + when x"21b" => DATA <= x"870d"; + when x"21c" => DATA <= x"9012"; + when x"21d" => DATA <= x"8bf1"; + when x"21e" => DATA <= x"0005"; + when x"21f" => DATA <= x"0202"; + when x"220" => DATA <= x"8af1"; + when x"221" => DATA <= x"0006"; + when x"222" => DATA <= x"8af1"; + when x"223" => DATA <= x"0005"; + when x"224" => DATA <= x"02ed"; + when x"225" => DATA <= x"8bf1"; + when x"226" => DATA <= x"0006"; + when x"227" => DATA <= x"02ea"; + when x"228" => DATA <= x"00a1"; + when x"229" => DATA <= x"90b1"; + when x"22a" => DATA <= x"0001"; + when x"22b" => DATA <= x"00c2"; + when x"22c" => DATA <= x"90b1"; + when x"22d" => DATA <= x"0002"; + when x"22e" => DATA <= x"0bd6"; + when x"22f" => DATA <= x"1582"; + when x"230" => DATA <= x"15c0"; + when x"231" => DATA <= x"0000"; + when x"232" => DATA <= x"0087"; + when x"233" => DATA <= x"0bc1"; + when x"234" => DATA <= x"0305"; + when x"235" => DATA <= x"15c0"; + when x"236" => DATA <= x"000e"; when x"237" => DATA <= x"09f7"; - when x"238" => DATA <= x"01da"; - when x"239" => DATA <= x"09f7"; - when x"23a" => DATA <= x"0004"; - when x"23b" => DATA <= x"65c0"; - when x"23c" => DATA <= x"ff80"; - when x"23d" => DATA <= x"97c0"; - when x"23e" => DATA <= x"fff4"; - when x"23f" => DATA <= x"80fd"; - when x"240" => DATA <= x"97c0"; - when x"241" => DATA <= x"fff6"; - when x"242" => DATA <= x"0087"; - when x"243" => DATA <= x"0bc1"; - when x"244" => DATA <= x"0315"; - when x"245" => DATA <= x"1026"; - when x"246" => DATA <= x"15c0"; - when x"247" => DATA <= x"0010"; - when x"248" => DATA <= x"09f7"; - when x"249" => DATA <= x"01b2"; - when x"24a" => DATA <= x"1380"; - when x"24b" => DATA <= x"09f7"; - when x"24c" => DATA <= x"01b2"; - when x"24d" => DATA <= x"09f7"; - when x"24e" => DATA <= x"ffdc"; - when x"24f" => DATA <= x"1580"; - when x"250" => DATA <= x"0087"; - when x"251" => DATA <= x"25c0"; - when x"252" => DATA <= x"000d"; - when x"253" => DATA <= x"0206"; - when x"254" => DATA <= x"15c0"; - when x"255" => DATA <= x"000a"; - when x"256" => DATA <= x"09f7"; - when x"257" => DATA <= x"0004"; + when x"238" => DATA <= x"01dc"; + when x"239" => DATA <= x"0103"; + when x"23a" => DATA <= x"0a00"; + when x"23b" => DATA <= x"09f7"; + when x"23c" => DATA <= x"01da"; + when x"23d" => DATA <= x"09f7"; + when x"23e" => DATA <= x"0004"; + when x"23f" => DATA <= x"65c0"; + when x"240" => DATA <= x"ff80"; + when x"241" => DATA <= x"97c0"; + when x"242" => DATA <= x"fff4"; + when x"243" => DATA <= x"80fd"; + when x"244" => DATA <= x"97c0"; + when x"245" => DATA <= x"fff6"; + when x"246" => DATA <= x"0087"; + when x"247" => DATA <= x"0bc1"; + when x"248" => DATA <= x"0315"; + when x"249" => DATA <= x"1026"; + when x"24a" => DATA <= x"15c0"; + when x"24b" => DATA <= x"0010"; + when x"24c" => DATA <= x"09f7"; + when x"24d" => DATA <= x"01b2"; + when x"24e" => DATA <= x"1380"; + when x"24f" => DATA <= x"09f7"; + when x"250" => DATA <= x"01b2"; + when x"251" => DATA <= x"09f7"; + when x"252" => DATA <= x"ffdc"; + when x"253" => DATA <= x"1580"; + when x"254" => DATA <= x"0087"; + when x"255" => DATA <= x"25c0"; + when x"256" => DATA <= x"000d"; + when x"257" => DATA <= x"0206"; when x"258" => DATA <= x"15c0"; - when x"259" => DATA <= x"000d"; - when x"25a" => DATA <= x"1026"; - when x"25b" => DATA <= x"97c0"; - when x"25c" => DATA <= x"fff0"; - when x"25d" => DATA <= x"45c0"; - when x"25e" => DATA <= x"00bf"; - when x"25f" => DATA <= x"03fb"; - when x"260" => DATA <= x"1580"; - when x"261" => DATA <= x"901f"; - when x"262" => DATA <= x"fff2"; - when x"263" => DATA <= x"0087"; - when x"264" => DATA <= x"45f6"; - when x"265" => DATA <= x"fff0"; - when x"266" => DATA <= x"0002"; - when x"267" => DATA <= x"17e6"; - when x"268" => DATA <= x"f5e8"; - when x"269" => DATA <= x"17e6"; - when x"26a" => DATA <= x"f5f4"; - when x"26b" => DATA <= x"119f"; - when x"26c" => DATA <= x"f5f4"; - when x"26d" => DATA <= x"15df"; - when x"26e" => DATA <= x"fd12"; - when x"26f" => DATA <= x"f5e8"; - when x"270" => DATA <= x"1026"; - when x"271" => DATA <= x"1026"; - when x"272" => DATA <= x"1d80"; - when x"273" => DATA <= x"0008"; - when x"274" => DATA <= x"1c00"; - when x"275" => DATA <= x"fffe"; - when x"276" => DATA <= x"45c0"; - when x"277" => DATA <= x"ff00"; - when x"278" => DATA <= x"6000"; - when x"279" => DATA <= x"67c0"; -- was 6fc0 - when x"27a" => DATA <= x"f5f6"; -- was f900 - when x"27b" => DATA <= x"1236"; - when x"27c" => DATA <= x"0002"; - when x"27d" => DATA <= x"1580"; - when x"27e" => DATA <= x"09de"; - when x"27f" => DATA <= x"8509"; - when x"280" => DATA <= x"8603"; - when x"281" => DATA <= x"55f6"; - when x"282" => DATA <= x"0001"; - when x"283" => DATA <= x"0006"; - when x"284" => DATA <= x"159f"; - when x"285" => DATA <= x"f5f4"; - when x"286" => DATA <= x"159f"; - when x"287" => DATA <= x"f5e8"; - when x"288" => DATA <= x"0002"; - when x"289" => DATA <= x"17c6"; - when x"28a" => DATA <= x"f5f4"; - when x"28b" => DATA <= x"55f6"; + when x"259" => DATA <= x"000a"; + when x"25a" => DATA <= x"09f7"; + when x"25b" => DATA <= x"0004"; + when x"25c" => DATA <= x"15c0"; + when x"25d" => DATA <= x"000d"; + when x"25e" => DATA <= x"1026"; + when x"25f" => DATA <= x"97c0"; + when x"260" => DATA <= x"fff0"; + when x"261" => DATA <= x"45c0"; + when x"262" => DATA <= x"00bf"; + when x"263" => DATA <= x"03fb"; + when x"264" => DATA <= x"1580"; + when x"265" => DATA <= x"901f"; + when x"266" => DATA <= x"fff2"; + when x"267" => DATA <= x"0087"; + when x"268" => DATA <= x"45f6"; + when x"269" => DATA <= x"fff0"; + when x"26a" => DATA <= x"0002"; + when x"26b" => DATA <= x"17e6"; + when x"26c" => DATA <= x"f5e8"; + when x"26d" => DATA <= x"17e6"; + when x"26e" => DATA <= x"f5f4"; + when x"26f" => DATA <= x"119f"; + when x"270" => DATA <= x"f5f4"; + when x"271" => DATA <= x"15df"; + when x"272" => DATA <= x"fd1a"; + when x"273" => DATA <= x"f5e8"; + when x"274" => DATA <= x"1026"; + when x"275" => DATA <= x"1026"; + when x"276" => DATA <= x"1d80"; + when x"277" => DATA <= x"0008"; + when x"278" => DATA <= x"1c00"; + when x"279" => DATA <= x"fffe"; -- was 6fc0 + when x"27a" => DATA <= x"45c0"; -- was f900 + when x"27b" => DATA <= x"ff00"; + when x"27c" => DATA <= x"6000"; + when x"27d" => DATA <= x"67c0"; + when x"27e" => DATA <= x"f5f6"; + when x"27f" => DATA <= x"1236"; + when x"280" => DATA <= x"0002"; + when x"281" => DATA <= x"1580"; + when x"282" => DATA <= x"09de"; + when x"283" => DATA <= x"8509"; + when x"284" => DATA <= x"8603"; + when x"285" => DATA <= x"55f6"; + when x"286" => DATA <= x"0001"; + when x"287" => DATA <= x"0006"; + when x"288" => DATA <= x"159f"; + when x"289" => DATA <= x"f5f4"; + when x"28a" => DATA <= x"159f"; + when x"28b" => DATA <= x"f5e8"; when x"28c" => DATA <= x"0002"; - when x"28d" => DATA <= x"0006"; - when x"28e" => DATA <= x"01f5"; - when x"28f" => DATA <= x"0bd6"; - when x"290" => DATA <= x"159f"; - when x"291" => DATA <= x"f5f4"; - when x"292" => DATA <= x"159f"; - when x"293" => DATA <= x"f5e8"; - when x"294" => DATA <= x"1380"; - when x"295" => DATA <= x"17ce"; - when x"296" => DATA <= x"f5e8"; - when x"297" => DATA <= x"0002"; - when x"298" => DATA <= x"0bd6"; - when x"299" => DATA <= x"159f"; - when x"29a" => DATA <= x"f5f4"; - when x"29b" => DATA <= x"159f"; - when x"29c" => DATA <= x"f5e8"; - when x"29d" => DATA <= x"1026"; - when x"29e" => DATA <= x"810d"; - when x"29f" => DATA <= x"2017"; - when x"2a0" => DATA <= x"0100"; - when x"2a1" => DATA <= x"8608"; - when x"2a2" => DATA <= x"6000"; - when x"2a3" => DATA <= x"67c0"; - when x"2a4" => DATA <= x"f5f6"; - when x"2a5" => DATA <= x"1226"; - when x"2a6" => DATA <= x"0bc1"; - when x"2a7" => DATA <= x"0301"; - when x"2a8" => DATA <= x"1048"; - when x"2a9" => DATA <= x"1581"; - when x"2aa" => DATA <= x"1580"; - when x"2ab" => DATA <= x"0002"; - when x"2ac" => DATA <= x"0a40"; - when x"2ad" => DATA <= x"2017"; - when x"2ae" => DATA <= x"0006"; - when x"2af" => DATA <= x"86fa"; - when x"2b0" => DATA <= x"6000"; - when x"2b1" => DATA <= x"6000"; - when x"2b2" => DATA <= x"65c0"; - when x"2b3" => DATA <= x"f5e0"; - when x"2b4" => DATA <= x"1226"; - when x"2b5" => DATA <= x"0bc1"; - when x"2b6" => DATA <= x"0301"; - when x"2b7" => DATA <= x"1050"; + when x"28d" => DATA <= x"17c6"; + when x"28e" => DATA <= x"f5f4"; + when x"28f" => DATA <= x"55f6"; + when x"290" => DATA <= x"0002"; + when x"291" => DATA <= x"0006"; + when x"292" => DATA <= x"01f5"; + when x"293" => DATA <= x"0bd6"; + when x"294" => DATA <= x"159f"; + when x"295" => DATA <= x"f5f4"; + when x"296" => DATA <= x"159f"; + when x"297" => DATA <= x"f5e8"; + when x"298" => DATA <= x"1380"; + when x"299" => DATA <= x"17ce"; + when x"29a" => DATA <= x"f5e8"; + when x"29b" => DATA <= x"0002"; + when x"29c" => DATA <= x"0bd6"; + when x"29d" => DATA <= x"159f"; + when x"29e" => DATA <= x"f5f4"; + when x"29f" => DATA <= x"159f"; + when x"2a0" => DATA <= x"f5e8"; + when x"2a1" => DATA <= x"1026"; + when x"2a2" => DATA <= x"810d"; + when x"2a3" => DATA <= x"2017"; + when x"2a4" => DATA <= x"0100"; + when x"2a5" => DATA <= x"8608"; + when x"2a6" => DATA <= x"6000"; + when x"2a7" => DATA <= x"67c0"; + when x"2a8" => DATA <= x"f5f6"; + when x"2a9" => DATA <= x"1226"; + when x"2aa" => DATA <= x"0bc1"; + when x"2ab" => DATA <= x"0301"; + when x"2ac" => DATA <= x"1048"; + when x"2ad" => DATA <= x"1581"; + when x"2ae" => DATA <= x"1580"; + when x"2af" => DATA <= x"0002"; + when x"2b0" => DATA <= x"0a40"; + when x"2b1" => DATA <= x"2017"; + when x"2b2" => DATA <= x"0006"; + when x"2b3" => DATA <= x"86fa"; + when x"2b4" => DATA <= x"6000"; + when x"2b5" => DATA <= x"6000"; + when x"2b6" => DATA <= x"65c0"; + when x"2b7" => DATA <= x"f5e0"; when x"2b8" => DATA <= x"1226"; - when x"2b9" => DATA <= x"0bc2"; + when x"2b9" => DATA <= x"0bc1"; when x"2ba" => DATA <= x"0301"; - when x"2bb" => DATA <= x"1088"; - when x"2bc" => DATA <= x"1582"; - when x"2bd" => DATA <= x"1581"; - when x"2be" => DATA <= x"1580"; - when x"2bf" => DATA <= x"0002"; - when x"2c0" => DATA <= x"2017"; - when x"2c1" => DATA <= x"0001"; - when x"2c2" => DATA <= x"0306"; - when x"2c3" => DATA <= x"2017"; - when x"2c4" => DATA <= x"0002"; - when x"2c5" => DATA <= x"0314"; - when x"2c6" => DATA <= x"0087"; - when x"2c7" => DATA <= x"007f"; - when x"2c8" => DATA <= x"f84e"; - when x"2c9" => DATA <= x"15df"; - when x"2ca" => DATA <= x"fcc8"; - when x"2cb" => DATA <= x"0018"; - when x"2cc" => DATA <= x"0a1f"; - when x"2cd" => DATA <= x"001a"; - when x"2ce" => DATA <= x"15df"; - when x"2cf" => DATA <= x"ffc8"; - when x"2d0" => DATA <= x"0080"; - when x"2d1" => DATA <= x"15df"; - when x"2d2" => DATA <= x"00e0"; - when x"2d3" => DATA <= x"0082"; - when x"2d4" => DATA <= x"15df"; - when x"2d5" => DATA <= x"fe78"; - when x"2d6" => DATA <= x"0084"; - when x"2d7" => DATA <= x"15df"; - when x"2d8" => DATA <= x"00c0"; - when x"2d9" => DATA <= x"0086"; - when x"2da" => DATA <= x"15c0"; - when x"2db" => DATA <= x"fdda"; - when x"2dc" => DATA <= x"15c1"; - when x"2dd" => DATA <= x"f5e0"; - when x"2de" => DATA <= x"15c2"; - when x"2df" => DATA <= x"0040"; - when x"2e0" => DATA <= x"17e6"; - when x"2e1" => DATA <= x"f5fc"; - when x"2e2" => DATA <= x"1411"; - when x"2e3" => DATA <= x"0ac2"; - when x"2e4" => DATA <= x"02fd"; - when x"2e5" => DATA <= x"159f"; - when x"2e6" => DATA <= x"f5fc"; - when x"2e7" => DATA <= x"15c2"; - when x"2e8" => DATA <= x"00e0"; - when x"2e9" => DATA <= x"1211"; - when x"2ea" => DATA <= x"0ac2"; - when x"2eb" => DATA <= x"02fd"; - when x"2ec" => DATA <= x"0087"; - when x"2ed" => DATA <= x"f83c"; - when x"2ee" => DATA <= x"0000"; - when x"2ef" => DATA <= x"f898"; - when x"2f0" => DATA <= x"f5ff"; - when x"2f1" => DATA <= x"f882"; - when x"2f2" => DATA <= x"f500"; - when x"2f3" => DATA <= x"fd8c"; - when x"2f4" => DATA <= x"0100"; - when x"2f5" => DATA <= x"feb0"; + when x"2bb" => DATA <= x"1050"; + when x"2bc" => DATA <= x"1226"; + when x"2bd" => DATA <= x"0bc2"; + when x"2be" => DATA <= x"0301"; + when x"2bf" => DATA <= x"1088"; + when x"2c0" => DATA <= x"1582"; + when x"2c1" => DATA <= x"1581"; + when x"2c2" => DATA <= x"1580"; + when x"2c3" => DATA <= x"0002"; + when x"2c4" => DATA <= x"2017"; + when x"2c5" => DATA <= x"0001"; + when x"2c6" => DATA <= x"0306"; + when x"2c7" => DATA <= x"2017"; + when x"2c8" => DATA <= x"0002"; + when x"2c9" => DATA <= x"0314"; + when x"2ca" => DATA <= x"0087"; + when x"2cb" => DATA <= x"007f"; + when x"2cc" => DATA <= x"f846"; + when x"2cd" => DATA <= x"15df"; + when x"2ce" => DATA <= x"fcd0"; + when x"2cf" => DATA <= x"0018"; + when x"2d0" => DATA <= x"0a1f"; + when x"2d1" => DATA <= x"001a"; + when x"2d2" => DATA <= x"15df"; + when x"2d3" => DATA <= x"ffd2"; + when x"2d4" => DATA <= x"0080"; + when x"2d5" => DATA <= x"15df"; + when x"2d6" => DATA <= x"00e0"; + when x"2d7" => DATA <= x"0082"; + when x"2d8" => DATA <= x"15df"; + when x"2d9" => DATA <= x"fe80"; + when x"2da" => DATA <= x"0084"; + when x"2db" => DATA <= x"15df"; + when x"2dc" => DATA <= x"00c0"; + when x"2dd" => DATA <= x"0086"; + when x"2de" => DATA <= x"15c0"; + when x"2df" => DATA <= x"fde2"; + when x"2e0" => DATA <= x"15c1"; + when x"2e1" => DATA <= x"f5e0"; + when x"2e2" => DATA <= x"15c2"; + when x"2e3" => DATA <= x"0040"; + when x"2e4" => DATA <= x"17e6"; + when x"2e5" => DATA <= x"f5fc"; + when x"2e6" => DATA <= x"1411"; + when x"2e7" => DATA <= x"0ac2"; + when x"2e8" => DATA <= x"02fd"; + when x"2e9" => DATA <= x"159f"; + when x"2ea" => DATA <= x"f5fc"; + when x"2eb" => DATA <= x"15c2"; + when x"2ec" => DATA <= x"00e0"; + when x"2ed" => DATA <= x"1211"; + when x"2ee" => DATA <= x"0ac2"; + when x"2ef" => DATA <= x"02fd"; + when x"2f0" => DATA <= x"0087"; + when x"2f1" => DATA <= x"f83c"; + when x"2f2" => DATA <= x"0000"; + when x"2f3" => DATA <= x"f898"; + when x"2f4" => DATA <= x"f5ff"; + when x"2f5" => DATA <= x"f882"; when x"2f6" => DATA <= x"f500"; - when x"2f7" => DATA <= x"0000"; - when x"2f8" => DATA <= x"f600"; - when x"2f9" => DATA <= x"0000"; - when x"2fa" => DATA <= x"0000"; - when x"2fb" => DATA <= x"f81c"; - when x"2fc" => DATA <= x"0000"; - when x"2fd" => DATA <= x"fd8e"; - when x"2fe" => DATA <= x"f8c0"; - when x"2ff" => DATA <= x"f9be"; - when x"300" => DATA <= x"fa50"; - when x"301" => DATA <= x"fcb4"; - when x"302" => DATA <= x"fca8"; - when x"303" => DATA <= x"fc6c"; - when x"304" => DATA <= x"fb94"; - when x"305" => DATA <= x"fb32"; - when x"306" => DATA <= x"fc5e"; - when x"307" => DATA <= x"fc86"; - when x"308" => DATA <= x"fbd8"; - when x"309" => DATA <= x"fb66"; - when x"30a" => DATA <= x"fd80"; - when x"30b" => DATA <= x"fd30"; - when x"30c" => DATA <= x"fd1e"; - when x"30d" => DATA <= x"fd8c"; - when x"30e" => DATA <= x"9440"; - when x"30f" => DATA <= x"09f7"; - when x"310" => DATA <= x"002a"; - when x"311" => DATA <= x"2017"; - when x"312" => DATA <= x"000d"; - when x"313" => DATA <= x"02fa"; - when x"314" => DATA <= x"0087"; - when x"315" => DATA <= x"6081"; - when x"316" => DATA <= x"9840"; - when x"317" => DATA <= x"09f7"; - when x"318" => DATA <= x"001a"; - when x"319" => DATA <= x"0ac2"; - when x"31a" => DATA <= x"02fb"; - when x"31b" => DATA <= x"0087"; - when x"31c" => DATA <= x"6081"; - when x"31d" => DATA <= x"09f7"; - when x"31e" => DATA <= x"fe3c"; - when x"31f" => DATA <= x"9021"; - when x"320" => DATA <= x"0ac2"; - when x"321" => DATA <= x"02fb"; - when x"322" => DATA <= x"0087"; - when x"323" => DATA <= x"09f7"; - when x"324" => DATA <= x"0002"; - when x"325" => DATA <= x"1040"; - when x"326" => DATA <= x"1026"; - when x"327" => DATA <= x"97c0"; - when x"328" => DATA <= x"fff4"; - when x"329" => DATA <= x"45c0"; - when x"32a" => DATA <= x"00bf"; - when x"32b" => DATA <= x"03fb"; - when x"32c" => DATA <= x"1580"; - when x"32d" => DATA <= x"901f"; - when x"32e" => DATA <= x"fff6"; - when x"32f" => DATA <= x"0087"; - when x"330" => DATA <= x"97c0"; - when x"331" => DATA <= x"fff0"; - when x"332" => DATA <= x"80fd"; - when x"333" => DATA <= x"97c0"; - when x"334" => DATA <= x"fff2"; - when x"335" => DATA <= x"0087"; - when x"336" => DATA <= x"97c0"; - when x"337" => DATA <= x"fffc"; - when x"338" => DATA <= x"80fd"; - when x"339" => DATA <= x"97c0"; - when x"33a" => DATA <= x"fffe"; - when x"33b" => DATA <= x"0087"; - when x"33c" => DATA <= x"1026"; + when x"2f7" => DATA <= x"fd94"; + when x"2f8" => DATA <= x"0100"; + when x"2f9" => DATA <= x"feb8"; + when x"2fa" => DATA <= x"f500"; + when x"2fb" => DATA <= x"0000"; + when x"2fc" => DATA <= x"f600"; + when x"2fd" => DATA <= x"0000"; + when x"2fe" => DATA <= x"0000"; + when x"2ff" => DATA <= x"f81c"; + when x"300" => DATA <= x"0000"; + when x"301" => DATA <= x"fd96"; + when x"302" => DATA <= x"f8c0"; + when x"303" => DATA <= x"f9c6"; + when x"304" => DATA <= x"fa58"; + when x"305" => DATA <= x"fcbc"; + when x"306" => DATA <= x"fcb0"; + when x"307" => DATA <= x"fc74"; + when x"308" => DATA <= x"fb9c"; + when x"309" => DATA <= x"fb3a"; + when x"30a" => DATA <= x"fc66"; + when x"30b" => DATA <= x"fc8e"; + when x"30c" => DATA <= x"fbe0"; + when x"30d" => DATA <= x"fb6e"; + when x"30e" => DATA <= x"fd88"; + when x"30f" => DATA <= x"fd38"; + when x"310" => DATA <= x"fd26"; + when x"311" => DATA <= x"fd94"; + when x"312" => DATA <= x"9440"; + when x"313" => DATA <= x"09f7"; + when x"314" => DATA <= x"002a"; + when x"315" => DATA <= x"2017"; + when x"316" => DATA <= x"000d"; + when x"317" => DATA <= x"02fa"; + when x"318" => DATA <= x"0087"; + when x"319" => DATA <= x"6081"; + when x"31a" => DATA <= x"9840"; + when x"31b" => DATA <= x"09f7"; + when x"31c" => DATA <= x"001a"; + when x"31d" => DATA <= x"0ac2"; + when x"31e" => DATA <= x"02fb"; + when x"31f" => DATA <= x"0087"; + when x"320" => DATA <= x"6081"; + when x"321" => DATA <= x"09f7"; + when x"322" => DATA <= x"fe3c"; + when x"323" => DATA <= x"9021"; + when x"324" => DATA <= x"0ac2"; + when x"325" => DATA <= x"02fb"; + when x"326" => DATA <= x"0087"; + when x"327" => DATA <= x"09f7"; + when x"328" => DATA <= x"0002"; + when x"329" => DATA <= x"1040"; + when x"32a" => DATA <= x"1026"; + when x"32b" => DATA <= x"97c0"; + when x"32c" => DATA <= x"fff4"; + when x"32d" => DATA <= x"45c0"; + when x"32e" => DATA <= x"00bf"; + when x"32f" => DATA <= x"03fb"; + when x"330" => DATA <= x"1580"; + when x"331" => DATA <= x"901f"; + when x"332" => DATA <= x"fff6"; + when x"333" => DATA <= x"0087"; + when x"334" => DATA <= x"97c0"; + when x"335" => DATA <= x"fff0"; + when x"336" => DATA <= x"80fd"; + when x"337" => DATA <= x"97c0"; + when x"338" => DATA <= x"fff2"; + when x"339" => DATA <= x"0087"; + when x"33a" => DATA <= x"97c0"; + when x"33b" => DATA <= x"fffc"; + when x"33c" => DATA <= x"80fd"; when x"33d" => DATA <= x"97c0"; - when x"33e" => DATA <= x"fffc"; - when x"33f" => DATA <= x"811d"; - when x"340" => DATA <= x"97c0"; - when x"341" => DATA <= x"fff0"; - when x"342" => DATA <= x"8103"; - when x"343" => DATA <= x"1580"; - when x"344" => DATA <= x"007f"; - when x"345" => DATA <= x"f764"; - when x"346" => DATA <= x"97c0"; - when x"347" => DATA <= x"fff2"; - when x"348" => DATA <= x"8110"; - when x"349" => DATA <= x"1066"; - when x"34a" => DATA <= x"10a6"; - when x"34b" => DATA <= x"09f7"; - when x"34c" => DATA <= x"ffc6"; - when x"34d" => DATA <= x"1002"; - when x"34e" => DATA <= x"09f7"; - when x"34f" => DATA <= x"ffc0"; - when x"350" => DATA <= x"1001"; - when x"351" => DATA <= x"09f7"; - when x"352" => DATA <= x"ffba"; - when x"353" => DATA <= x"09ff"; - when x"354" => DATA <= x"f742"; - when x"355" => DATA <= x"1582"; - when x"356" => DATA <= x"1581"; - when x"357" => DATA <= x"1580"; - when x"358" => DATA <= x"0002"; - when x"359" => DATA <= x"09ff"; - when x"35a" => DATA <= x"f72e"; + when x"33e" => DATA <= x"fffe"; + when x"33f" => DATA <= x"0087"; + when x"340" => DATA <= x"1026"; + when x"341" => DATA <= x"97c0"; + when x"342" => DATA <= x"fffc"; + when x"343" => DATA <= x"811d"; + when x"344" => DATA <= x"97c0"; + when x"345" => DATA <= x"fff0"; + when x"346" => DATA <= x"8103"; + when x"347" => DATA <= x"1580"; + when x"348" => DATA <= x"007f"; + when x"349" => DATA <= x"f75c"; + when x"34a" => DATA <= x"97c0"; + when x"34b" => DATA <= x"fff2"; + when x"34c" => DATA <= x"8110"; + when x"34d" => DATA <= x"1066"; + when x"34e" => DATA <= x"10a6"; + when x"34f" => DATA <= x"09f7"; + when x"350" => DATA <= x"ffc6"; + when x"351" => DATA <= x"1002"; + when x"352" => DATA <= x"09f7"; + when x"353" => DATA <= x"ffc0"; + when x"354" => DATA <= x"1001"; + when x"355" => DATA <= x"09f7"; + when x"356" => DATA <= x"ffba"; + when x"357" => DATA <= x"09ff"; + when x"358" => DATA <= x"f73a"; + when x"359" => DATA <= x"1582"; + when x"35a" => DATA <= x"1581"; when x"35b" => DATA <= x"1580"; when x"35c" => DATA <= x"0002"; - when x"35d" => DATA <= x"97c0"; - when x"35e" => DATA <= x"fffe"; - when x"35f" => DATA <= x"8016"; - when x"360" => DATA <= x"1066"; - when x"361" => DATA <= x"09f7"; - when x"362" => DATA <= x"fdb4"; - when x"363" => DATA <= x"17c1"; - when x"364" => DATA <= x"f5ea"; + when x"35d" => DATA <= x"09ff"; + when x"35e" => DATA <= x"f726"; + when x"35f" => DATA <= x"1580"; + when x"360" => DATA <= x"0002"; + when x"361" => DATA <= x"97c0"; + when x"362" => DATA <= x"fffe"; + when x"363" => DATA <= x"8016"; + when x"364" => DATA <= x"1066"; when x"365" => DATA <= x"09f7"; - when x"366" => DATA <= x"fdac"; - when x"367" => DATA <= x"9011"; - when x"368" => DATA <= x"09f7"; - when x"369" => DATA <= x"fda6"; - when x"36a" => DATA <= x"9011"; - when x"36b" => DATA <= x"02fc"; - when x"36c" => DATA <= x"1581"; - when x"36d" => DATA <= x"1580"; - when x"36e" => DATA <= x"17c0"; - when x"36f" => DATA <= x"f5ea"; - when x"370" => DATA <= x"17ce"; - when x"371" => DATA <= x"f5e8"; - when x"372" => DATA <= x"0002"; - when x"373" => DATA <= x"1580"; - when x"374" => DATA <= x"007f"; - when x"375" => DATA <= x"f6fc"; - when x"376" => DATA <= x"1026"; - when x"377" => DATA <= x"09f7"; - when x"378" => DATA <= x"ff7a"; - when x"379" => DATA <= x"1380"; - when x"37a" => DATA <= x"2017"; - when x"37b" => DATA <= x"0005"; - when x"37c" => DATA <= x"0316"; -- was 0331 - when x"37d" => DATA <= x"09f7"; - when x"37e" => DATA <= x"ff6e"; - when x"37f" => DATA <= x"901f"; - when x"380" => DATA <= x"f5fb"; - when x"381" => DATA <= x"09f7"; - when x"382" => DATA <= x"ff66"; - when x"383" => DATA <= x"901f"; - when x"384" => DATA <= x"f5fa"; - when x"385" => DATA <= x"09f7"; - when x"386" => DATA <= x"ff5e"; - when x"387" => DATA <= x"901f"; - when x"388" => DATA <= x"f5f9"; - when x"389" => DATA <= x"09f7"; - when x"38a" => DATA <= x"ff56"; - when x"38b" => DATA <= x"901f"; - when x"38c" => DATA <= x"f5f8"; - when x"38d" => DATA <= x"97c0"; - when x"38e" => DATA <= x"fffa"; - when x"38f" => DATA <= x"97c0"; - when x"390" => DATA <= x"fffa"; - when x"391" => DATA <= x"09f7"; - when x"392" => DATA <= x"ff46"; - when x"393" => DATA <= x"1580"; - when x"394" => DATA <= x"6000"; - when x"395" => DATA <= x"1c1f"; - when x"396" => DATA <= x"ffce"; - when x"397" => DATA <= x"0080"; - when x"398" => DATA <= x"1066"; - when x"399" => DATA <= x"15c1"; - when x"39a" => DATA <= x"0100"; - when x"39b" => DATA <= x"2017"; - when x"39c" => DATA <= x"000c"; - when x"39d" => DATA <= x"870f"; - when x"39e" => DATA <= x"0211"; - when x"39f" => DATA <= x"17c0"; - when x"3a0" => DATA <= x"f5f8"; - when x"3a1" => DATA <= x"8bdf"; - when x"3a2" => DATA <= x"fff8"; - when x"3a3" => DATA <= x"80fd"; - when x"3a4" => DATA <= x"941f"; - when x"3a5" => DATA <= x"fffa"; - when x"3a6" => DATA <= x"0ac1"; - when x"3a7" => DATA <= x"02f9"; - when x"3a8" => DATA <= x"8bdf"; - when x"3a9" => DATA <= x"fff8"; - when x"3aa" => DATA <= x"80fd"; - when x"3ab" => DATA <= x"8a1f"; - when x"3ac" => DATA <= x"fffa"; - when x"3ad" => DATA <= x"1581"; - when x"3ae" => DATA <= x"1580"; - when x"3af" => DATA <= x"0002"; - when x"3b0" => DATA <= x"17c0"; - when x"3b1" => DATA <= x"f5f8"; - when x"3b2" => DATA <= x"8bdf"; - when x"3b3" => DATA <= x"fff8"; - when x"3b4" => DATA <= x"80fd"; - when x"3b5" => DATA <= x"97d0"; - when x"3b6" => DATA <= x"fffa"; - when x"3b7" => DATA <= x"0ac1"; - when x"3b8" => DATA <= x"02f9"; - when x"3b9" => DATA <= x"1581"; - when x"3ba" => DATA <= x"1580"; - when x"3bb" => DATA <= x"0002"; - when x"3bc" => DATA <= x"1026"; - when x"3bd" => DATA <= x"17c0"; - when x"3be" => DATA <= x"f5f8"; - when x"3bf" => DATA <= x"941f"; - when x"3c0" => DATA <= x"fffa"; - when x"3c1" => DATA <= x"101f"; - when x"3c2" => DATA <= x"f5f8"; - when x"3c3" => DATA <= x"1580"; - when x"3c4" => DATA <= x"0002"; - when x"3c5" => DATA <= x"1026"; - when x"3c6" => DATA <= x"17c0"; + when x"366" => DATA <= x"fdb4"; + when x"367" => DATA <= x"17c1"; + when x"368" => DATA <= x"f5ea"; + when x"369" => DATA <= x"09f7"; + when x"36a" => DATA <= x"fdac"; + when x"36b" => DATA <= x"9011"; + when x"36c" => DATA <= x"09f7"; + when x"36d" => DATA <= x"fda6"; + when x"36e" => DATA <= x"9011"; + when x"36f" => DATA <= x"02fc"; + when x"370" => DATA <= x"1581"; + when x"371" => DATA <= x"1580"; + when x"372" => DATA <= x"17c0"; + when x"373" => DATA <= x"f5ea"; + when x"374" => DATA <= x"17ce"; + when x"375" => DATA <= x"f5e8"; + when x"376" => DATA <= x"0002"; + when x"377" => DATA <= x"1580"; + when x"378" => DATA <= x"007f"; + when x"379" => DATA <= x"f6f4"; + when x"37a" => DATA <= x"1026"; + when x"37b" => DATA <= x"09f7"; + when x"37c" => DATA <= x"ff7a"; -- was 0331 + when x"37d" => DATA <= x"1580"; + when x"37e" => DATA <= x"2017"; + when x"37f" => DATA <= x"0005"; + when x"380" => DATA <= x"0332"; + when x"381" => DATA <= x"1026"; + when x"382" => DATA <= x"09f7"; + when x"383" => DATA <= x"ff6c"; + when x"384" => DATA <= x"901f"; + when x"385" => DATA <= x"f5fb"; + when x"386" => DATA <= x"09f7"; + when x"387" => DATA <= x"ff64"; + when x"388" => DATA <= x"901f"; + when x"389" => DATA <= x"f5fa"; + when x"38a" => DATA <= x"09f7"; + when x"38b" => DATA <= x"ff5c"; + when x"38c" => DATA <= x"901f"; + when x"38d" => DATA <= x"f5f9"; + when x"38e" => DATA <= x"09f7"; + when x"38f" => DATA <= x"ff54"; + when x"390" => DATA <= x"901f"; + when x"391" => DATA <= x"f5f8"; + when x"392" => DATA <= x"97c0"; + when x"393" => DATA <= x"fffa"; + when x"394" => DATA <= x"97c0"; + when x"395" => DATA <= x"fffa"; + when x"396" => DATA <= x"09f7"; + when x"397" => DATA <= x"ff44"; + when x"398" => DATA <= x"1580"; + when x"399" => DATA <= x"6000"; + when x"39a" => DATA <= x"1c1f"; + when x"39b" => DATA <= x"ffd8"; + when x"39c" => DATA <= x"0080"; + when x"39d" => DATA <= x"1066"; + when x"39e" => DATA <= x"15c1"; + when x"39f" => DATA <= x"0100"; + when x"3a0" => DATA <= x"2017"; + when x"3a1" => DATA <= x"000c"; + when x"3a2" => DATA <= x"870f"; + when x"3a3" => DATA <= x"0211"; + when x"3a4" => DATA <= x"17c0"; + when x"3a5" => DATA <= x"f5f8"; + when x"3a6" => DATA <= x"8bdf"; + when x"3a7" => DATA <= x"fff8"; + when x"3a8" => DATA <= x"80fd"; + when x"3a9" => DATA <= x"941f"; + when x"3aa" => DATA <= x"fffa"; + when x"3ab" => DATA <= x"0ac1"; + when x"3ac" => DATA <= x"02f9"; + when x"3ad" => DATA <= x"8bdf"; + when x"3ae" => DATA <= x"fff8"; + when x"3af" => DATA <= x"80fd"; + when x"3b0" => DATA <= x"8a1f"; + when x"3b1" => DATA <= x"fffa"; + when x"3b2" => DATA <= x"1581"; + when x"3b3" => DATA <= x"1580"; + when x"3b4" => DATA <= x"0002"; + when x"3b5" => DATA <= x"17c0"; + when x"3b6" => DATA <= x"f5f8"; + when x"3b7" => DATA <= x"8bdf"; + when x"3b8" => DATA <= x"fff8"; + when x"3b9" => DATA <= x"80fd"; + when x"3ba" => DATA <= x"97d0"; + when x"3bb" => DATA <= x"fffa"; + when x"3bc" => DATA <= x"0ac1"; + when x"3bd" => DATA <= x"02f9"; + when x"3be" => DATA <= x"1581"; + when x"3bf" => DATA <= x"1580"; + when x"3c0" => DATA <= x"0002"; + when x"3c1" => DATA <= x"1026"; + when x"3c2" => DATA <= x"17c0"; + when x"3c3" => DATA <= x"f5f8"; + when x"3c4" => DATA <= x"941f"; + when x"3c5" => DATA <= x"fffa"; + when x"3c6" => DATA <= x"101f"; when x"3c7" => DATA <= x"f5f8"; - when x"3c8" => DATA <= x"97d0"; - when x"3c9" => DATA <= x"fffa"; - when x"3ca" => DATA <= x"101f"; - when x"3cb" => DATA <= x"f5f8"; - when x"3cc" => DATA <= x"1580"; - when x"3cd" => DATA <= x"0002"; - when x"3ce" => DATA <= x"1026"; - when x"3cf" => DATA <= x"17c0"; + when x"3c8" => DATA <= x"1580"; + when x"3c9" => DATA <= x"0002"; + when x"3ca" => DATA <= x"1026"; + when x"3cb" => DATA <= x"17c0"; + when x"3cc" => DATA <= x"f5f8"; + when x"3cd" => DATA <= x"97d0"; + when x"3ce" => DATA <= x"fffa"; + when x"3cf" => DATA <= x"101f"; when x"3d0" => DATA <= x"f5f8"; - when x"3d1" => DATA <= x"941f"; - when x"3d2" => DATA <= x"fffa"; - when x"3d3" => DATA <= x"941f"; - when x"3d4" => DATA <= x"fffa"; - when x"3d5" => DATA <= x"101f"; - when x"3d6" => DATA <= x"f5f8"; - when x"3d7" => DATA <= x"1580"; - when x"3d8" => DATA <= x"0002"; - when x"3d9" => DATA <= x"1026"; - when x"3da" => DATA <= x"17c0"; + when x"3d1" => DATA <= x"1580"; + when x"3d2" => DATA <= x"0002"; + when x"3d3" => DATA <= x"1026"; + when x"3d4" => DATA <= x"17c0"; + when x"3d5" => DATA <= x"f5f8"; + when x"3d6" => DATA <= x"941f"; + when x"3d7" => DATA <= x"fffa"; + when x"3d8" => DATA <= x"941f"; + when x"3d9" => DATA <= x"fffa"; + when x"3da" => DATA <= x"101f"; when x"3db" => DATA <= x"f5f8"; - when x"3dc" => DATA <= x"97d0"; - when x"3dd" => DATA <= x"fffa"; - when x"3de" => DATA <= x"97d0"; - when x"3df" => DATA <= x"fffa"; - when x"3e0" => DATA <= x"101f"; - when x"3e1" => DATA <= x"f5f8"; - when x"3e2" => DATA <= x"1580"; - when x"3e3" => DATA <= x"0002"; - when x"3e4" => DATA <= x"8a1f"; - when x"3e5" => DATA <= x"fffa"; - when x"3e6" => DATA <= x"0002"; - when x"3e7" => DATA <= x"ff78"; - when x"3e8" => DATA <= x"ff8a"; - when x"3e9" => DATA <= x"ff9c"; - when x"3ea" => DATA <= x"ffb2"; - when x"3eb" => DATA <= x"ffc8"; - when x"3ec" => DATA <= x"ffc8"; - when x"3ed" => DATA <= x"ffc8"; - when x"3ee" => DATA <= x"ffc8"; - when x"3ef" => DATA <= x"0000"; - when x"3f0" => DATA <= x"0000"; - when x"3f1" => DATA <= x"0000"; - when x"3f2" => DATA <= x"0000"; - when x"3f3" => DATA <= x"0000"; + when x"3dc" => DATA <= x"1580"; + when x"3dd" => DATA <= x"0002"; + when x"3de" => DATA <= x"1026"; + when x"3df" => DATA <= x"17c0"; + when x"3e0" => DATA <= x"f5f8"; + when x"3e1" => DATA <= x"97d0"; + when x"3e2" => DATA <= x"fffa"; + when x"3e3" => DATA <= x"97d0"; + when x"3e4" => DATA <= x"fffa"; + when x"3e5" => DATA <= x"101f"; + when x"3e6" => DATA <= x"f5f8"; + when x"3e7" => DATA <= x"1580"; + when x"3e8" => DATA <= x"0002"; + when x"3e9" => DATA <= x"8a1f"; + when x"3ea" => DATA <= x"fffa"; + when x"3eb" => DATA <= x"0002"; + when x"3ec" => DATA <= x"ff82"; + when x"3ed" => DATA <= x"ff94"; + when x"3ee" => DATA <= x"ffa6"; + when x"3ef" => DATA <= x"ffbc"; + when x"3f0" => DATA <= x"ffd2"; + when x"3f1" => DATA <= x"ffd2"; + when x"3f2" => DATA <= x"ffd2"; + when x"3f3" => DATA <= x"ffd2"; when x"3f4" => DATA <= x"0000"; when x"3f5" => DATA <= x"0000"; when x"3f6" => DATA <= x"0000"; From a093cee76d4a8af73d63e5d202710958582bb236 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 11 Aug 2015 18:21:30 +0100 Subject: [PATCH 25/61] A day of bugfixing with JGH, pretty much everything now working with PDP BBC Basic Change-Id: Id10052f0eaf693ad1af62d2dc6ff7e7e6bc24a0d --- src/ROM/tuberom_pdp11.vhd | 734 +++++++++++++++++++------------------- 1 file changed, 367 insertions(+), 367 deletions(-) diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 21f13af..26d0a0f 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -44,7 +44,7 @@ begin when x"00e" => DATA <= x"15c6"; when x"00f" => DATA <= x"f500"; when x"010" => DATA <= x"09f7"; - when x"011" => DATA <= x"0576"; + when x"011" => DATA <= x"0578"; when x"012" => DATA <= x"17df"; when x"013" => DATA <= x"f5fc"; when x"014" => DATA <= x"f5f8"; @@ -60,7 +60,7 @@ begin when x"01e" => DATA <= x"15c6"; when x"01f" => DATA <= x"f500"; when x"020" => DATA <= x"09f7"; - when x"021" => DATA <= x"0556"; + when x"021" => DATA <= x"0558"; when x"022" => DATA <= x"15c1"; when x"023" => DATA <= x"f860"; when x"024" => DATA <= x"09f7"; @@ -87,7 +87,7 @@ begin when x"039" => DATA <= x"09f7"; when x"03a" => DATA <= x"0150"; when x"03b" => DATA <= x"09f7"; - when x"03c" => DATA <= x"0674"; + when x"03c" => DATA <= x"0676"; when x"03d" => DATA <= x"4511"; when x"03e" => DATA <= x"6373"; when x"03f" => DATA <= x"7061"; @@ -104,8 +104,8 @@ begin when x"04a" => DATA <= x"041a"; when x"04b" => DATA <= x"01d2"; when x"04c" => DATA <= x"6000"; - when x"04d" => DATA <= x"901f"; - when x"04e" => DATA <= x"f5e6"; + when x"04d" => DATA <= x"903f"; + when x"04e" => DATA <= x"fd48"; when x"04f" => DATA <= x"0087"; when x"050" => DATA <= x"e5c1"; when x"051" => DATA <= x"0002"; @@ -128,10 +128,10 @@ begin when x"062" => DATA <= x"15c0"; when x"063" => DATA <= x"0002"; when x"064" => DATA <= x"09f7"; - when x"065" => DATA <= x"0588"; + when x"065" => DATA <= x"058a"; when x"066" => DATA <= x"1581"; when x"067" => DATA <= x"09f7"; - when x"068" => DATA <= x"0552"; + when x"068" => DATA <= x"0554"; when x"069" => DATA <= x"1581"; when x"06a" => DATA <= x"00b1"; when x"06b" => DATA <= x"09f7"; @@ -139,9 +139,9 @@ begin when x"06d" => DATA <= x"8102"; when x"06e" => DATA <= x"0a00"; when x"06f" => DATA <= x"0087"; - when x"070" => DATA <= x"15c2"; + when x"070" => DATA <= x"15c4"; when x"071" => DATA <= x"0000"; - when x"072" => DATA <= x"0c42"; + when x"072" => DATA <= x"0c44"; when x"073" => DATA <= x"17c1"; when x"074" => DATA <= x"f5f8"; when x"075" => DATA <= x"1066"; @@ -191,7 +191,7 @@ begin when x"0a1" => DATA <= x"ff60"; when x"0a2" => DATA <= x"6581"; when x"0a3" => DATA <= x"1066"; - when x"0a4" => DATA <= x"65c2"; + when x"0a4" => DATA <= x"65c4"; when x"0a5" => DATA <= x"0002"; when x"0a6" => DATA <= x"1581"; when x"0a7" => DATA <= x"45c1"; @@ -224,11 +224,11 @@ begin when x"0c2" => DATA <= x"e5c3"; when x"0c3" => DATA <= x"0002"; when x"0c4" => DATA <= x"02fc"; - when x"0c5" => DATA <= x"17c1"; -- was 17c0 + when x"0c5" => DATA <= x"17c1"; when x"0c6" => DATA <= x"f5ee"; when x"0c7" => DATA <= x"15c5"; when x"0c8" => DATA <= x"0bbc"; - when x"0c9" => DATA <= x"1080"; + when x"0c9" => DATA <= x"1100"; when x"0ca" => DATA <= x"0c80"; when x"0cb" => DATA <= x"0308"; when x"0cc" => DATA <= x"17e6"; @@ -243,7 +243,7 @@ begin when x"0d5" => DATA <= x"0c02"; when x"0d6" => DATA <= x"860a"; when x"0d7" => DATA <= x"09f7"; - when x"0d8" => DATA <= x"053c"; + when x"0d8" => DATA <= x"053e"; when x"0d9" => DATA <= x"4ef9"; when x"0da" => DATA <= x"746f"; when x"0db" => DATA <= x"5020"; @@ -260,10 +260,10 @@ begin when x"0e6" => DATA <= x"15c0"; when x"0e7" => DATA <= x"0004"; when x"0e8" => DATA <= x"09f7"; - when x"0e9" => DATA <= x"047a"; + when x"0e9" => DATA <= x"047c"; when x"0ea" => DATA <= x"1380"; when x"0eb" => DATA <= x"09f7"; - when x"0ec" => DATA <= x"047a"; + when x"0ec" => DATA <= x"047c"; when x"0ed" => DATA <= x"09f7"; when x"0ee" => DATA <= x"02a4"; when x"0ef" => DATA <= x"1001"; @@ -281,13 +281,13 @@ begin when x"0fb" => DATA <= x"15c0"; when x"0fc" => DATA <= x"0006"; when x"0fd" => DATA <= x"09f7"; - when x"0fe" => DATA <= x"0450"; + when x"0fe" => DATA <= x"0452"; when x"0ff" => DATA <= x"1080"; when x"100" => DATA <= x"09f7"; - when x"101" => DATA <= x"0450"; + when x"101" => DATA <= x"0452"; when x"102" => DATA <= x"1580"; when x"103" => DATA <= x"09f7"; - when x"104" => DATA <= x"044a"; + when x"104" => DATA <= x"044c"; when x"105" => DATA <= x"2017"; when x"106" => DATA <= x"009d"; when x"107" => DATA <= x"0315"; @@ -335,14 +335,14 @@ begin when x"131" => DATA <= x"15c0"; when x"132" => DATA <= x"0008"; when x"133" => DATA <= x"09f7"; - when x"134" => DATA <= x"03ea"; + when x"134" => DATA <= x"03ec"; when x"135" => DATA <= x"1380"; when x"136" => DATA <= x"09f7"; - when x"137" => DATA <= x"03e4"; + when x"137" => DATA <= x"03e6"; when x"138" => DATA <= x"8bc0"; when x"139" => DATA <= x"8003"; - when x"13a" => DATA <= x"9402"; - when x"13b" => DATA <= x"9203"; + when x"13a" => DATA <= x"9442"; + when x"13b" => DATA <= x"9243"; when x"13c" => DATA <= x"010c"; when x"13d" => DATA <= x"15c2"; when x"13e" => DATA <= x"0010"; @@ -352,13 +352,13 @@ begin when x"142" => DATA <= x"0015"; when x"143" => DATA <= x"8605"; when x"144" => DATA <= x"6000"; - when x"145" => DATA <= x"6dc0"; - when x"146" => DATA <= x"003e"; + when x"145" => DATA <= x"65c0"; + when x"146" => DATA <= x"facc"; when x"147" => DATA <= x"9402"; when x"148" => DATA <= x"9203"; when x"149" => DATA <= x"1080"; when x"14a" => DATA <= x"09f7"; - when x"14b" => DATA <= x"03bc"; + when x"14b" => DATA <= x"03be"; when x"14c" => DATA <= x"6081"; when x"14d" => DATA <= x"0ac2"; when x"14e" => DATA <= x"2097"; @@ -366,12 +366,12 @@ begin when x"150" => DATA <= x"8605"; when x"151" => DATA <= x"9840"; when x"152" => DATA <= x"09f7"; - when x"153" => DATA <= x"03ac"; + when x"153" => DATA <= x"03ae"; when x"154" => DATA <= x"0ac2"; when x"155" => DATA <= x"80fb"; when x"156" => DATA <= x"10c0"; when x"157" => DATA <= x"09f7"; - when x"158" => DATA <= x"03a2"; + when x"158" => DATA <= x"03a4"; when x"159" => DATA <= x"60c1"; when x"15a" => DATA <= x"0ac3"; when x"15b" => DATA <= x"20d7"; @@ -409,20 +409,20 @@ begin when x"17b" => DATA <= x"15c0"; when x"17c" => DATA <= x"000a"; when x"17d" => DATA <= x"09f7"; - when x"17e" => DATA <= x"0356"; + when x"17e" => DATA <= x"0358"; when x"17f" => DATA <= x"65c1"; when x"180" => DATA <= x"0002"; when x"181" => DATA <= x"15c2"; when x"182" => DATA <= x"0003"; when x"183" => DATA <= x"09f7"; - when x"184" => DATA <= x"0328"; + when x"184" => DATA <= x"032a"; when x"185" => DATA <= x"15c0"; when x"186" => DATA <= x"0007"; when x"187" => DATA <= x"09f7"; - when x"188" => DATA <= x"0342"; + when x"188" => DATA <= x"0344"; when x"189" => DATA <= x"0a00"; when x"18a" => DATA <= x"09f7"; - when x"18b" => DATA <= x"033c"; + when x"18b" => DATA <= x"033e"; when x"18c" => DATA <= x"09f7"; when x"18d" => DATA <= x"0166"; when x"18e" => DATA <= x"65c0"; @@ -446,22 +446,22 @@ begin when x"1a0" => DATA <= x"15c0"; when x"1a1" => DATA <= x"000c"; when x"1a2" => DATA <= x"09f7"; - when x"1a3" => DATA <= x"0306"; + when x"1a3" => DATA <= x"0308"; when x"1a4" => DATA <= x"1081"; when x"1a5" => DATA <= x"15c2"; when x"1a6" => DATA <= x"0004"; when x"1a7" => DATA <= x"09f7"; - when x"1a8" => DATA <= x"02e0"; + when x"1a8" => DATA <= x"02e2"; when x"1a9" => DATA <= x"1580"; when x"1aa" => DATA <= x"09f7"; - when x"1ab" => DATA <= x"02fc"; + when x"1ab" => DATA <= x"02fe"; when x"1ac" => DATA <= x"09f7"; when x"1ad" => DATA <= x"0126"; when x"1ae" => DATA <= x"1026"; when x"1af" => DATA <= x"15c2"; when x"1b0" => DATA <= x"0004"; when x"1b1" => DATA <= x"09f7"; - when x"1b2" => DATA <= x"02da"; + when x"1b2" => DATA <= x"02dc"; when x"1b3" => DATA <= x"1580"; when x"1b4" => DATA <= x"1581"; when x"1b5" => DATA <= x"1582"; @@ -470,21 +470,21 @@ begin when x"1b8" => DATA <= x"15c0"; when x"1b9" => DATA <= x"0012"; when x"1ba" => DATA <= x"09f7"; - when x"1bb" => DATA <= x"02dc"; + when x"1bb" => DATA <= x"02de"; when x"1bc" => DATA <= x"1580"; when x"1bd" => DATA <= x"09f7"; - when x"1be" => DATA <= x"02d6"; + when x"1be" => DATA <= x"02d8"; when x"1bf" => DATA <= x"0bc0"; when x"1c0" => DATA <= x"0206"; when x"1c1" => DATA <= x"09f7"; - when x"1c2" => DATA <= x"02cc"; + when x"1c2" => DATA <= x"02ce"; when x"1c3" => DATA <= x"09f7"; when x"1c4" => DATA <= x"00f8"; when x"1c5" => DATA <= x"0a00"; when x"1c6" => DATA <= x"0087"; when x"1c7" => DATA <= x"1066"; when x"1c8" => DATA <= x"09f7"; - when x"1c9" => DATA <= x"0290"; + when x"1c9" => DATA <= x"0292"; when x"1ca" => DATA <= x"09f7"; when x"1cb" => DATA <= x"00ea"; when x"1cc" => DATA <= x"1581"; @@ -495,20 +495,20 @@ begin when x"1d1" => DATA <= x"15c0"; when x"1d2" => DATA <= x"0014"; when x"1d3" => DATA <= x"09f7"; - when x"1d4" => DATA <= x"02aa"; + when x"1d4" => DATA <= x"02ac"; when x"1d5" => DATA <= x"65c1"; when x"1d6" => DATA <= x"0002"; when x"1d7" => DATA <= x"15c2"; when x"1d8" => DATA <= x"0010"; when x"1d9" => DATA <= x"09f7"; - when x"1da" => DATA <= x"027c"; + when x"1da" => DATA <= x"027e"; when x"1db" => DATA <= x"09f7"; when x"1dc" => DATA <= x"fce6"; when x"1dd" => DATA <= x"09f7"; - when x"1de" => DATA <= x"0266"; + when x"1de" => DATA <= x"0268"; when x"1df" => DATA <= x"1580"; when x"1e0" => DATA <= x"09f7"; - when x"1e1" => DATA <= x"0290"; + when x"1e1" => DATA <= x"0292"; when x"1e2" => DATA <= x"09f7"; when x"1e3" => DATA <= x"00ba"; when x"1e4" => DATA <= x"1381"; @@ -518,7 +518,7 @@ begin when x"1e8" => DATA <= x"15c2"; when x"1e9" => DATA <= x"0010"; when x"1ea" => DATA <= x"09f7"; - when x"1eb" => DATA <= x"0268"; + when x"1eb" => DATA <= x"026a"; when x"1ec" => DATA <= x"1580"; when x"1ed" => DATA <= x"1581"; when x"1ee" => DATA <= x"1582"; @@ -535,18 +535,18 @@ begin when x"1f9" => DATA <= x"15c0"; when x"1fa" => DATA <= x"0016"; when x"1fb" => DATA <= x"09f7"; - when x"1fc" => DATA <= x"025a"; + when x"1fc" => DATA <= x"025c"; when x"1fd" => DATA <= x"15c2"; when x"1fe" => DATA <= x"000d"; when x"1ff" => DATA <= x"09f7"; - when x"200" => DATA <= x"0230"; + when x"200" => DATA <= x"0232"; when x"201" => DATA <= x"1580"; when x"202" => DATA <= x"09f7"; - when x"203" => DATA <= x"024c"; + when x"203" => DATA <= x"024e"; when x"204" => DATA <= x"15c2"; when x"205" => DATA <= x"000d"; when x"206" => DATA <= x"09f7"; - when x"207" => DATA <= x"0230"; + when x"207" => DATA <= x"0232"; when x"208" => DATA <= x"1582"; when x"209" => DATA <= x"0133"; when x"20a" => DATA <= x"10a6"; @@ -595,11 +595,11 @@ begin when x"235" => DATA <= x"15c0"; when x"236" => DATA <= x"000e"; when x"237" => DATA <= x"09f7"; - when x"238" => DATA <= x"01dc"; + when x"238" => DATA <= x"01de"; when x"239" => DATA <= x"0103"; when x"23a" => DATA <= x"0a00"; when x"23b" => DATA <= x"09f7"; - when x"23c" => DATA <= x"01da"; + when x"23c" => DATA <= x"01dc"; when x"23d" => DATA <= x"09f7"; when x"23e" => DATA <= x"0004"; when x"23f" => DATA <= x"65c0"; @@ -616,10 +616,10 @@ begin when x"24a" => DATA <= x"15c0"; when x"24b" => DATA <= x"0010"; when x"24c" => DATA <= x"09f7"; - when x"24d" => DATA <= x"01b2"; + when x"24d" => DATA <= x"01b4"; when x"24e" => DATA <= x"1380"; when x"24f" => DATA <= x"09f7"; - when x"250" => DATA <= x"01b2"; + when x"250" => DATA <= x"01b4"; when x"251" => DATA <= x"09f7"; when x"252" => DATA <= x"ffdc"; when x"253" => DATA <= x"1580"; @@ -660,8 +660,8 @@ begin when x"276" => DATA <= x"1d80"; when x"277" => DATA <= x"0008"; when x"278" => DATA <= x"1c00"; - when x"279" => DATA <= x"fffe"; -- was 6fc0 - when x"27a" => DATA <= x"45c0"; -- was f900 + when x"279" => DATA <= x"fffe"; + when x"27a" => DATA <= x"45c0"; when x"27b" => DATA <= x"ff00"; when x"27c" => DATA <= x"6000"; when x"27d" => DATA <= x"67c0"; @@ -726,320 +726,320 @@ begin when x"2b8" => DATA <= x"1226"; when x"2b9" => DATA <= x"0bc1"; when x"2ba" => DATA <= x"0301"; - when x"2bb" => DATA <= x"1050"; - when x"2bc" => DATA <= x"1226"; - when x"2bd" => DATA <= x"0bc2"; - when x"2be" => DATA <= x"0301"; - when x"2bf" => DATA <= x"1088"; - when x"2c0" => DATA <= x"1582"; - when x"2c1" => DATA <= x"1581"; - when x"2c2" => DATA <= x"1580"; - when x"2c3" => DATA <= x"0002"; - when x"2c4" => DATA <= x"2017"; - when x"2c5" => DATA <= x"0001"; - when x"2c6" => DATA <= x"0306"; - when x"2c7" => DATA <= x"2017"; - when x"2c8" => DATA <= x"0002"; - when x"2c9" => DATA <= x"0314"; - when x"2ca" => DATA <= x"0087"; - when x"2cb" => DATA <= x"007f"; - when x"2cc" => DATA <= x"f846"; - when x"2cd" => DATA <= x"15df"; - when x"2ce" => DATA <= x"fcd0"; - when x"2cf" => DATA <= x"0018"; - when x"2d0" => DATA <= x"0a1f"; - when x"2d1" => DATA <= x"001a"; - when x"2d2" => DATA <= x"15df"; - when x"2d3" => DATA <= x"ffd2"; - when x"2d4" => DATA <= x"0080"; - when x"2d5" => DATA <= x"15df"; - when x"2d6" => DATA <= x"00e0"; - when x"2d7" => DATA <= x"0082"; - when x"2d8" => DATA <= x"15df"; - when x"2d9" => DATA <= x"fe80"; - when x"2da" => DATA <= x"0084"; - when x"2db" => DATA <= x"15df"; - when x"2dc" => DATA <= x"00c0"; - when x"2dd" => DATA <= x"0086"; - when x"2de" => DATA <= x"15c0"; - when x"2df" => DATA <= x"fde2"; - when x"2e0" => DATA <= x"15c1"; - when x"2e1" => DATA <= x"f5e0"; - when x"2e2" => DATA <= x"15c2"; - when x"2e3" => DATA <= x"0040"; - when x"2e4" => DATA <= x"17e6"; - when x"2e5" => DATA <= x"f5fc"; - when x"2e6" => DATA <= x"1411"; - when x"2e7" => DATA <= x"0ac2"; - when x"2e8" => DATA <= x"02fd"; - when x"2e9" => DATA <= x"159f"; - when x"2ea" => DATA <= x"f5fc"; - when x"2eb" => DATA <= x"15c2"; - when x"2ec" => DATA <= x"00e0"; - when x"2ed" => DATA <= x"1211"; - when x"2ee" => DATA <= x"0ac2"; - when x"2ef" => DATA <= x"02fd"; - when x"2f0" => DATA <= x"0087"; - when x"2f1" => DATA <= x"f83c"; - when x"2f2" => DATA <= x"0000"; - when x"2f3" => DATA <= x"f898"; - when x"2f4" => DATA <= x"f5ff"; - when x"2f5" => DATA <= x"f882"; - when x"2f6" => DATA <= x"f500"; - when x"2f7" => DATA <= x"fd94"; - when x"2f8" => DATA <= x"0100"; - when x"2f9" => DATA <= x"feb8"; - when x"2fa" => DATA <= x"f500"; - when x"2fb" => DATA <= x"0000"; - when x"2fc" => DATA <= x"f600"; - when x"2fd" => DATA <= x"0000"; + when x"2bb" => DATA <= x"1048"; + when x"2bc" => DATA <= x"0bd0"; + when x"2bd" => DATA <= x"1226"; + when x"2be" => DATA <= x"0bc2"; + when x"2bf" => DATA <= x"0301"; + when x"2c0" => DATA <= x"1088"; + when x"2c1" => DATA <= x"1582"; + when x"2c2" => DATA <= x"1581"; + when x"2c3" => DATA <= x"1580"; + when x"2c4" => DATA <= x"0002"; + when x"2c5" => DATA <= x"2017"; + when x"2c6" => DATA <= x"0001"; + when x"2c7" => DATA <= x"0306"; + when x"2c8" => DATA <= x"2017"; + when x"2c9" => DATA <= x"0002"; + when x"2ca" => DATA <= x"0314"; + when x"2cb" => DATA <= x"0087"; + when x"2cc" => DATA <= x"007f"; + when x"2cd" => DATA <= x"f844"; + when x"2ce" => DATA <= x"15df"; + when x"2cf" => DATA <= x"fcd0"; + when x"2d0" => DATA <= x"0018"; + when x"2d1" => DATA <= x"0a1f"; + when x"2d2" => DATA <= x"001a"; + when x"2d3" => DATA <= x"15df"; + when x"2d4" => DATA <= x"ffd4"; + when x"2d5" => DATA <= x"0080"; + when x"2d6" => DATA <= x"15df"; + when x"2d7" => DATA <= x"00e0"; + when x"2d8" => DATA <= x"0082"; + when x"2d9" => DATA <= x"15df"; + when x"2da" => DATA <= x"fe82"; + when x"2db" => DATA <= x"0084"; + when x"2dc" => DATA <= x"15df"; + when x"2dd" => DATA <= x"00c0"; + when x"2de" => DATA <= x"0086"; + when x"2df" => DATA <= x"15c2"; + when x"2e0" => DATA <= x"f5e0"; + when x"2e1" => DATA <= x"15c1"; + when x"2e2" => DATA <= x"fde4"; + when x"2e3" => DATA <= x"15c0"; + when x"2e4" => DATA <= x"0020"; + when x"2e5" => DATA <= x"17e6"; + when x"2e6" => DATA <= x"f5fc"; + when x"2e7" => DATA <= x"1452"; + when x"2e8" => DATA <= x"0ac0"; + when x"2e9" => DATA <= x"02fd"; + when x"2ea" => DATA <= x"159f"; + when x"2eb" => DATA <= x"f5fc"; + when x"2ec" => DATA <= x"15c0"; + when x"2ed" => DATA <= x"00f0"; + when x"2ee" => DATA <= x"1252"; + when x"2ef" => DATA <= x"0ac0"; + when x"2f0" => DATA <= x"02fd"; + when x"2f1" => DATA <= x"0087"; + when x"2f2" => DATA <= x"f83c"; + when x"2f3" => DATA <= x"0000"; + when x"2f4" => DATA <= x"f898"; + when x"2f5" => DATA <= x"f5ff"; + when x"2f6" => DATA <= x"f882"; + when x"2f7" => DATA <= x"f500"; + when x"2f8" => DATA <= x"fd96"; + when x"2f9" => DATA <= x"0100"; + when x"2fa" => DATA <= x"feba"; + when x"2fb" => DATA <= x"f500"; + when x"2fc" => DATA <= x"0000"; + when x"2fd" => DATA <= x"f600"; when x"2fe" => DATA <= x"0000"; - when x"2ff" => DATA <= x"f81c"; - when x"300" => DATA <= x"0000"; - when x"301" => DATA <= x"fd96"; - when x"302" => DATA <= x"f8c0"; - when x"303" => DATA <= x"f9c6"; - when x"304" => DATA <= x"fa58"; - when x"305" => DATA <= x"fcbc"; - when x"306" => DATA <= x"fcb0"; - when x"307" => DATA <= x"fc74"; - when x"308" => DATA <= x"fb9c"; - when x"309" => DATA <= x"fb3a"; - when x"30a" => DATA <= x"fc66"; - when x"30b" => DATA <= x"fc8e"; - when x"30c" => DATA <= x"fbe0"; - when x"30d" => DATA <= x"fb6e"; - when x"30e" => DATA <= x"fd88"; - when x"30f" => DATA <= x"fd38"; - when x"310" => DATA <= x"fd26"; - when x"311" => DATA <= x"fd94"; - when x"312" => DATA <= x"9440"; - when x"313" => DATA <= x"09f7"; - when x"314" => DATA <= x"002a"; - when x"315" => DATA <= x"2017"; - when x"316" => DATA <= x"000d"; - when x"317" => DATA <= x"02fa"; - when x"318" => DATA <= x"0087"; - when x"319" => DATA <= x"6081"; - when x"31a" => DATA <= x"9840"; - when x"31b" => DATA <= x"09f7"; - when x"31c" => DATA <= x"001a"; - when x"31d" => DATA <= x"0ac2"; - when x"31e" => DATA <= x"02fb"; - when x"31f" => DATA <= x"0087"; - when x"320" => DATA <= x"6081"; - when x"321" => DATA <= x"09f7"; - when x"322" => DATA <= x"fe3c"; - when x"323" => DATA <= x"9021"; - when x"324" => DATA <= x"0ac2"; - when x"325" => DATA <= x"02fb"; - when x"326" => DATA <= x"0087"; - when x"327" => DATA <= x"09f7"; - when x"328" => DATA <= x"0002"; - when x"329" => DATA <= x"1040"; - when x"32a" => DATA <= x"1026"; - when x"32b" => DATA <= x"97c0"; - when x"32c" => DATA <= x"fff4"; - when x"32d" => DATA <= x"45c0"; - when x"32e" => DATA <= x"00bf"; - when x"32f" => DATA <= x"03fb"; - when x"330" => DATA <= x"1580"; - when x"331" => DATA <= x"901f"; - when x"332" => DATA <= x"fff6"; - when x"333" => DATA <= x"0087"; - when x"334" => DATA <= x"97c0"; - when x"335" => DATA <= x"fff0"; - when x"336" => DATA <= x"80fd"; - when x"337" => DATA <= x"97c0"; - when x"338" => DATA <= x"fff2"; - when x"339" => DATA <= x"0087"; - when x"33a" => DATA <= x"97c0"; - when x"33b" => DATA <= x"fffc"; - when x"33c" => DATA <= x"80fd"; - when x"33d" => DATA <= x"97c0"; - when x"33e" => DATA <= x"fffe"; - when x"33f" => DATA <= x"0087"; - when x"340" => DATA <= x"1026"; - when x"341" => DATA <= x"97c0"; - when x"342" => DATA <= x"fffc"; - when x"343" => DATA <= x"811d"; - when x"344" => DATA <= x"97c0"; - when x"345" => DATA <= x"fff0"; - when x"346" => DATA <= x"8103"; - when x"347" => DATA <= x"1580"; - when x"348" => DATA <= x"007f"; - when x"349" => DATA <= x"f75c"; - when x"34a" => DATA <= x"97c0"; - when x"34b" => DATA <= x"fff2"; - when x"34c" => DATA <= x"8110"; - when x"34d" => DATA <= x"1066"; - when x"34e" => DATA <= x"10a6"; - when x"34f" => DATA <= x"09f7"; - when x"350" => DATA <= x"ffc6"; - when x"351" => DATA <= x"1002"; - when x"352" => DATA <= x"09f7"; - when x"353" => DATA <= x"ffc0"; - when x"354" => DATA <= x"1001"; - when x"355" => DATA <= x"09f7"; - when x"356" => DATA <= x"ffba"; - when x"357" => DATA <= x"09ff"; - when x"358" => DATA <= x"f73a"; - when x"359" => DATA <= x"1582"; - when x"35a" => DATA <= x"1581"; - when x"35b" => DATA <= x"1580"; - when x"35c" => DATA <= x"0002"; - when x"35d" => DATA <= x"09ff"; - when x"35e" => DATA <= x"f726"; - when x"35f" => DATA <= x"1580"; - when x"360" => DATA <= x"0002"; - when x"361" => DATA <= x"97c0"; - when x"362" => DATA <= x"fffe"; - when x"363" => DATA <= x"8016"; - when x"364" => DATA <= x"1066"; - when x"365" => DATA <= x"09f7"; - when x"366" => DATA <= x"fdb4"; - when x"367" => DATA <= x"17c1"; - when x"368" => DATA <= x"f5ea"; - when x"369" => DATA <= x"09f7"; - when x"36a" => DATA <= x"fdac"; - when x"36b" => DATA <= x"9011"; - when x"36c" => DATA <= x"09f7"; - when x"36d" => DATA <= x"fda6"; - when x"36e" => DATA <= x"9011"; - when x"36f" => DATA <= x"02fc"; - when x"370" => DATA <= x"1581"; - when x"371" => DATA <= x"1580"; - when x"372" => DATA <= x"17c0"; - when x"373" => DATA <= x"f5ea"; - when x"374" => DATA <= x"17ce"; - when x"375" => DATA <= x"f5e8"; - when x"376" => DATA <= x"0002"; - when x"377" => DATA <= x"1580"; - when x"378" => DATA <= x"007f"; - when x"379" => DATA <= x"f6f4"; - when x"37a" => DATA <= x"1026"; - when x"37b" => DATA <= x"09f7"; - when x"37c" => DATA <= x"ff7a"; -- was 0331 - when x"37d" => DATA <= x"1580"; - when x"37e" => DATA <= x"2017"; - when x"37f" => DATA <= x"0005"; - when x"380" => DATA <= x"0332"; - when x"381" => DATA <= x"1026"; - when x"382" => DATA <= x"09f7"; - when x"383" => DATA <= x"ff6c"; - when x"384" => DATA <= x"901f"; - when x"385" => DATA <= x"f5fb"; - when x"386" => DATA <= x"09f7"; - when x"387" => DATA <= x"ff64"; - when x"388" => DATA <= x"901f"; - when x"389" => DATA <= x"f5fa"; - when x"38a" => DATA <= x"09f7"; - when x"38b" => DATA <= x"ff5c"; - when x"38c" => DATA <= x"901f"; - when x"38d" => DATA <= x"f5f9"; - when x"38e" => DATA <= x"09f7"; - when x"38f" => DATA <= x"ff54"; - when x"390" => DATA <= x"901f"; - when x"391" => DATA <= x"f5f8"; - when x"392" => DATA <= x"97c0"; - when x"393" => DATA <= x"fffa"; - when x"394" => DATA <= x"97c0"; - when x"395" => DATA <= x"fffa"; - when x"396" => DATA <= x"09f7"; - when x"397" => DATA <= x"ff44"; - when x"398" => DATA <= x"1580"; - when x"399" => DATA <= x"6000"; - when x"39a" => DATA <= x"1c1f"; - when x"39b" => DATA <= x"ffd8"; - when x"39c" => DATA <= x"0080"; - when x"39d" => DATA <= x"1066"; - when x"39e" => DATA <= x"15c1"; - when x"39f" => DATA <= x"0100"; - when x"3a0" => DATA <= x"2017"; - when x"3a1" => DATA <= x"000c"; - when x"3a2" => DATA <= x"870f"; - when x"3a3" => DATA <= x"0211"; - when x"3a4" => DATA <= x"17c0"; - when x"3a5" => DATA <= x"f5f8"; - when x"3a6" => DATA <= x"8bdf"; - when x"3a7" => DATA <= x"fff8"; - when x"3a8" => DATA <= x"80fd"; - when x"3a9" => DATA <= x"941f"; - when x"3aa" => DATA <= x"fffa"; - when x"3ab" => DATA <= x"0ac1"; - when x"3ac" => DATA <= x"02f9"; - when x"3ad" => DATA <= x"8bdf"; - when x"3ae" => DATA <= x"fff8"; - when x"3af" => DATA <= x"80fd"; - when x"3b0" => DATA <= x"8a1f"; - when x"3b1" => DATA <= x"fffa"; - when x"3b2" => DATA <= x"1581"; - when x"3b3" => DATA <= x"1580"; - when x"3b4" => DATA <= x"0002"; - when x"3b5" => DATA <= x"17c0"; - when x"3b6" => DATA <= x"f5f8"; - when x"3b7" => DATA <= x"8bdf"; - when x"3b8" => DATA <= x"fff8"; - when x"3b9" => DATA <= x"80fd"; - when x"3ba" => DATA <= x"97d0"; - when x"3bb" => DATA <= x"fffa"; - when x"3bc" => DATA <= x"0ac1"; - when x"3bd" => DATA <= x"02f9"; - when x"3be" => DATA <= x"1581"; - when x"3bf" => DATA <= x"1580"; - when x"3c0" => DATA <= x"0002"; - when x"3c1" => DATA <= x"1026"; - when x"3c2" => DATA <= x"17c0"; - when x"3c3" => DATA <= x"f5f8"; - when x"3c4" => DATA <= x"941f"; - when x"3c5" => DATA <= x"fffa"; - when x"3c6" => DATA <= x"101f"; - when x"3c7" => DATA <= x"f5f8"; - when x"3c8" => DATA <= x"1580"; - when x"3c9" => DATA <= x"0002"; - when x"3ca" => DATA <= x"1026"; - when x"3cb" => DATA <= x"17c0"; - when x"3cc" => DATA <= x"f5f8"; - when x"3cd" => DATA <= x"97d0"; - when x"3ce" => DATA <= x"fffa"; - when x"3cf" => DATA <= x"101f"; - when x"3d0" => DATA <= x"f5f8"; - when x"3d1" => DATA <= x"1580"; - when x"3d2" => DATA <= x"0002"; - when x"3d3" => DATA <= x"1026"; - when x"3d4" => DATA <= x"17c0"; - when x"3d5" => DATA <= x"f5f8"; - when x"3d6" => DATA <= x"941f"; - when x"3d7" => DATA <= x"fffa"; - when x"3d8" => DATA <= x"941f"; - when x"3d9" => DATA <= x"fffa"; - when x"3da" => DATA <= x"101f"; - when x"3db" => DATA <= x"f5f8"; - when x"3dc" => DATA <= x"1580"; - when x"3dd" => DATA <= x"0002"; - when x"3de" => DATA <= x"1026"; - when x"3df" => DATA <= x"17c0"; - when x"3e0" => DATA <= x"f5f8"; - when x"3e1" => DATA <= x"97d0"; - when x"3e2" => DATA <= x"fffa"; - when x"3e3" => DATA <= x"97d0"; - when x"3e4" => DATA <= x"fffa"; - when x"3e5" => DATA <= x"101f"; - when x"3e6" => DATA <= x"f5f8"; - when x"3e7" => DATA <= x"1580"; - when x"3e8" => DATA <= x"0002"; - when x"3e9" => DATA <= x"8a1f"; - when x"3ea" => DATA <= x"fffa"; - when x"3eb" => DATA <= x"0002"; - when x"3ec" => DATA <= x"ff82"; - when x"3ed" => DATA <= x"ff94"; - when x"3ee" => DATA <= x"ffa6"; - when x"3ef" => DATA <= x"ffbc"; - when x"3f0" => DATA <= x"ffd2"; - when x"3f1" => DATA <= x"ffd2"; - when x"3f2" => DATA <= x"ffd2"; - when x"3f3" => DATA <= x"ffd2"; - when x"3f4" => DATA <= x"0000"; + when x"2ff" => DATA <= x"0000"; + when x"300" => DATA <= x"f81c"; + when x"301" => DATA <= x"0000"; + when x"302" => DATA <= x"fd98"; + when x"303" => DATA <= x"f8c0"; + when x"304" => DATA <= x"f9c6"; + when x"305" => DATA <= x"fa58"; + when x"306" => DATA <= x"fcbc"; + when x"307" => DATA <= x"fcb0"; + when x"308" => DATA <= x"fc74"; + when x"309" => DATA <= x"fb9c"; + when x"30a" => DATA <= x"fb3a"; + when x"30b" => DATA <= x"fc66"; + when x"30c" => DATA <= x"fc8e"; + when x"30d" => DATA <= x"fbe0"; + when x"30e" => DATA <= x"fb6e"; + when x"30f" => DATA <= x"fd8a"; + when x"310" => DATA <= x"fd38"; + when x"311" => DATA <= x"fd26"; + when x"312" => DATA <= x"fd96"; + when x"313" => DATA <= x"9440"; + when x"314" => DATA <= x"09f7"; + when x"315" => DATA <= x"002a"; + when x"316" => DATA <= x"2017"; + when x"317" => DATA <= x"000d"; + when x"318" => DATA <= x"02fa"; + when x"319" => DATA <= x"0087"; + when x"31a" => DATA <= x"6081"; + when x"31b" => DATA <= x"9840"; + when x"31c" => DATA <= x"09f7"; + when x"31d" => DATA <= x"001a"; + when x"31e" => DATA <= x"0ac2"; + when x"31f" => DATA <= x"02fb"; + when x"320" => DATA <= x"0087"; + when x"321" => DATA <= x"6081"; + when x"322" => DATA <= x"09f7"; + when x"323" => DATA <= x"fe3a"; + when x"324" => DATA <= x"9021"; + when x"325" => DATA <= x"0ac2"; + when x"326" => DATA <= x"02fb"; + when x"327" => DATA <= x"0087"; + when x"328" => DATA <= x"09f7"; + when x"329" => DATA <= x"0002"; + when x"32a" => DATA <= x"1040"; + when x"32b" => DATA <= x"1026"; + when x"32c" => DATA <= x"97c0"; + when x"32d" => DATA <= x"fff4"; + when x"32e" => DATA <= x"45c0"; + when x"32f" => DATA <= x"00bf"; + when x"330" => DATA <= x"03fb"; + when x"331" => DATA <= x"1580"; + when x"332" => DATA <= x"901f"; + when x"333" => DATA <= x"fff6"; + when x"334" => DATA <= x"0087"; + when x"335" => DATA <= x"97c0"; + when x"336" => DATA <= x"fff0"; + when x"337" => DATA <= x"80fd"; + when x"338" => DATA <= x"97c0"; + when x"339" => DATA <= x"fff2"; + when x"33a" => DATA <= x"0087"; + when x"33b" => DATA <= x"97c0"; + when x"33c" => DATA <= x"fffc"; + when x"33d" => DATA <= x"80fd"; + when x"33e" => DATA <= x"97c0"; + when x"33f" => DATA <= x"fffe"; + when x"340" => DATA <= x"0087"; + when x"341" => DATA <= x"1026"; + when x"342" => DATA <= x"97c0"; + when x"343" => DATA <= x"fffc"; + when x"344" => DATA <= x"811d"; + when x"345" => DATA <= x"97c0"; + when x"346" => DATA <= x"fff0"; + when x"347" => DATA <= x"8103"; + when x"348" => DATA <= x"1580"; + when x"349" => DATA <= x"007f"; + when x"34a" => DATA <= x"f75a"; + when x"34b" => DATA <= x"97c0"; + when x"34c" => DATA <= x"fff2"; + when x"34d" => DATA <= x"8110"; + when x"34e" => DATA <= x"1066"; + when x"34f" => DATA <= x"10a6"; + when x"350" => DATA <= x"09f7"; + when x"351" => DATA <= x"ffc6"; + when x"352" => DATA <= x"1002"; + when x"353" => DATA <= x"09f7"; + when x"354" => DATA <= x"ffc0"; + when x"355" => DATA <= x"1001"; + when x"356" => DATA <= x"09f7"; + when x"357" => DATA <= x"ffba"; + when x"358" => DATA <= x"09ff"; + when x"359" => DATA <= x"f738"; + when x"35a" => DATA <= x"1582"; + when x"35b" => DATA <= x"1581"; + when x"35c" => DATA <= x"1580"; + when x"35d" => DATA <= x"0002"; + when x"35e" => DATA <= x"09ff"; + when x"35f" => DATA <= x"f724"; + when x"360" => DATA <= x"1580"; + when x"361" => DATA <= x"0002"; + when x"362" => DATA <= x"97c0"; + when x"363" => DATA <= x"fffe"; + when x"364" => DATA <= x"8016"; + when x"365" => DATA <= x"1066"; + when x"366" => DATA <= x"09f7"; + when x"367" => DATA <= x"fdb2"; + when x"368" => DATA <= x"17c1"; + when x"369" => DATA <= x"f5ea"; + when x"36a" => DATA <= x"09f7"; + when x"36b" => DATA <= x"fdaa"; + when x"36c" => DATA <= x"9011"; + when x"36d" => DATA <= x"09f7"; + when x"36e" => DATA <= x"fda4"; + when x"36f" => DATA <= x"9011"; + when x"370" => DATA <= x"02fc"; + when x"371" => DATA <= x"1581"; + when x"372" => DATA <= x"1580"; + when x"373" => DATA <= x"17c0"; + when x"374" => DATA <= x"f5ea"; + when x"375" => DATA <= x"17ce"; + when x"376" => DATA <= x"f5e8"; + when x"377" => DATA <= x"0002"; + when x"378" => DATA <= x"1580"; + when x"379" => DATA <= x"007f"; + when x"37a" => DATA <= x"f6f2"; + when x"37b" => DATA <= x"1026"; + when x"37c" => DATA <= x"09f7"; + when x"37d" => DATA <= x"ff7a"; + when x"37e" => DATA <= x"1580"; + when x"37f" => DATA <= x"2017"; + when x"380" => DATA <= x"0005"; + when x"381" => DATA <= x"0332"; + when x"382" => DATA <= x"1026"; + when x"383" => DATA <= x"09f7"; + when x"384" => DATA <= x"ff6c"; + when x"385" => DATA <= x"901f"; + when x"386" => DATA <= x"f5fb"; + when x"387" => DATA <= x"09f7"; + when x"388" => DATA <= x"ff64"; + when x"389" => DATA <= x"901f"; + when x"38a" => DATA <= x"f5fa"; + when x"38b" => DATA <= x"09f7"; + when x"38c" => DATA <= x"ff5c"; + when x"38d" => DATA <= x"901f"; + when x"38e" => DATA <= x"f5f9"; + when x"38f" => DATA <= x"09f7"; + when x"390" => DATA <= x"ff54"; + when x"391" => DATA <= x"901f"; + when x"392" => DATA <= x"f5f8"; + when x"393" => DATA <= x"97c0"; + when x"394" => DATA <= x"fffa"; + when x"395" => DATA <= x"97c0"; + when x"396" => DATA <= x"fffa"; + when x"397" => DATA <= x"09f7"; + when x"398" => DATA <= x"ff44"; + when x"399" => DATA <= x"1580"; + when x"39a" => DATA <= x"6000"; + when x"39b" => DATA <= x"1c1f"; + when x"39c" => DATA <= x"ffda"; + when x"39d" => DATA <= x"0080"; + when x"39e" => DATA <= x"1066"; + when x"39f" => DATA <= x"15c1"; + when x"3a0" => DATA <= x"0100"; + when x"3a1" => DATA <= x"2017"; + when x"3a2" => DATA <= x"000c"; + when x"3a3" => DATA <= x"870f"; + when x"3a4" => DATA <= x"0211"; + when x"3a5" => DATA <= x"17c0"; + when x"3a6" => DATA <= x"f5f8"; + when x"3a7" => DATA <= x"8bdf"; + when x"3a8" => DATA <= x"fff8"; + when x"3a9" => DATA <= x"80fd"; + when x"3aa" => DATA <= x"941f"; + when x"3ab" => DATA <= x"fffa"; + when x"3ac" => DATA <= x"0ac1"; + when x"3ad" => DATA <= x"02f9"; + when x"3ae" => DATA <= x"8bdf"; + when x"3af" => DATA <= x"fff8"; + when x"3b0" => DATA <= x"80fd"; + when x"3b1" => DATA <= x"8a1f"; + when x"3b2" => DATA <= x"fffa"; + when x"3b3" => DATA <= x"1581"; + when x"3b4" => DATA <= x"1580"; + when x"3b5" => DATA <= x"0002"; + when x"3b6" => DATA <= x"17c0"; + when x"3b7" => DATA <= x"f5f8"; + when x"3b8" => DATA <= x"8bdf"; + when x"3b9" => DATA <= x"fff8"; + when x"3ba" => DATA <= x"80fd"; + when x"3bb" => DATA <= x"97d0"; + when x"3bc" => DATA <= x"fffa"; + when x"3bd" => DATA <= x"0ac1"; + when x"3be" => DATA <= x"02f9"; + when x"3bf" => DATA <= x"1581"; + when x"3c0" => DATA <= x"1580"; + when x"3c1" => DATA <= x"0002"; + when x"3c2" => DATA <= x"1026"; + when x"3c3" => DATA <= x"17c0"; + when x"3c4" => DATA <= x"f5f8"; + when x"3c5" => DATA <= x"941f"; + when x"3c6" => DATA <= x"fffa"; + when x"3c7" => DATA <= x"101f"; + when x"3c8" => DATA <= x"f5f8"; + when x"3c9" => DATA <= x"1580"; + when x"3ca" => DATA <= x"0002"; + when x"3cb" => DATA <= x"1026"; + when x"3cc" => DATA <= x"17c0"; + when x"3cd" => DATA <= x"f5f8"; + when x"3ce" => DATA <= x"97d0"; + when x"3cf" => DATA <= x"fffa"; + when x"3d0" => DATA <= x"101f"; + when x"3d1" => DATA <= x"f5f8"; + when x"3d2" => DATA <= x"1580"; + when x"3d3" => DATA <= x"0002"; + when x"3d4" => DATA <= x"1026"; + when x"3d5" => DATA <= x"17c0"; + when x"3d6" => DATA <= x"f5f8"; + when x"3d7" => DATA <= x"941f"; + when x"3d8" => DATA <= x"fffa"; + when x"3d9" => DATA <= x"941f"; + when x"3da" => DATA <= x"fffa"; + when x"3db" => DATA <= x"101f"; + when x"3dc" => DATA <= x"f5f8"; + when x"3dd" => DATA <= x"1580"; + when x"3de" => DATA <= x"0002"; + when x"3df" => DATA <= x"1026"; + when x"3e0" => DATA <= x"17c0"; + when x"3e1" => DATA <= x"f5f8"; + when x"3e2" => DATA <= x"97d0"; + when x"3e3" => DATA <= x"fffa"; + when x"3e4" => DATA <= x"97d0"; + when x"3e5" => DATA <= x"fffa"; + when x"3e6" => DATA <= x"101f"; + when x"3e7" => DATA <= x"f5f8"; + when x"3e8" => DATA <= x"1580"; + when x"3e9" => DATA <= x"0002"; + when x"3ea" => DATA <= x"8a1f"; + when x"3eb" => DATA <= x"fffa"; + when x"3ec" => DATA <= x"0002"; + when x"3ed" => DATA <= x"ff84"; + when x"3ee" => DATA <= x"ff96"; + when x"3ef" => DATA <= x"ffa8"; + when x"3f0" => DATA <= x"ffbe"; + when x"3f1" => DATA <= x"ffd4"; + when x"3f2" => DATA <= x"ffd4"; + when x"3f3" => DATA <= x"ffd4"; + when x"3f4" => DATA <= x"ffd4"; when x"3f5" => DATA <= x"0000"; when x"3f6" => DATA <= x"0000"; when x"3f7" => DATA <= x"0000"; From c7284cb027883b6ec739944e46aa38d0919c58ad Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 11 Aug 2015 20:17:58 +0100 Subject: [PATCH 26/61] Enabled SXT and SOB in the PDP2011 core; added to standard build; tested MCS file Change-Id: Id3ecc60eac27b873dcbe9c50079f387406ed16fd --- gen_mcs.sh | 13 +++++++------ ise_build_all.tcl | 3 +++ ise_clean_all.tcl | 3 +++ src/ICAP_reboot.v | 2 ++ src/PDP2011/cpu.vhd | 2 ++ 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gen_mcs.sh b/gen_mcs.sh index 1e3a7d0..0e2845c 100755 --- a/gen_mcs.sh +++ b/gen_mcs.sh @@ -9,12 +9,12 @@ # design 0010 - 0x0fc000 - working/LX9CoPro6809.bit # design 0011 - 0x150000 - working/LX9CoPro80186.bit # design 0100 - 0x1a4000 - working/LX9Co_BIST.bit -# design 1000 - 0x1f8000 - working/LX9CoPro6502fast.bit (32/16/8/4MHz) -# design 1001 - 0x24c000 - working/LX9CoProZ80fast.bit(36/24/12/8Mhz) -# design 1010 - 0x2a0000 - spare -# design 1011 - 0x2f4000 - spare -# design 1011 - 0x348000 - spare -# design xxxx - 0x39c000 - spare +# design 10xx - 0x1f8000 - working/LX9CoPro6502fast.bit (32/16/8/4MHz) +# design 11xx - 0x24c000 - working/LX9CoProZ80fast.bit(36/24/12/8Mhz) +# design 0111 - 0x2a0000 - working/LX9CoProPDP11.bit +# design 0110 - 0x2f4000 - spare +# design 0101 - 0x348000 - spare +# design ???? - 0x39c000 - spare NAME=multiboot/LX9CoProCombined_$(date +"%Y%m%d_%H%M")_$USER @@ -29,6 +29,7 @@ promgen \ -u 1A4000 working/LX9Co_BIST.bit \ -u 1F8000 working/LX9CoPro6502fast.bit \ -u 24C000 working/LX9CoProZ80fast.bit \ +-u 2A0000 working/LX9CoProPDP11.bit \ -o $NAME.mcs -p mcs -w -spi -s 8192 rm -f $NAME.cfi $NAME.prm diff --git a/ise_build_all.tcl b/ise_build_all.tcl index f063810..683e608 100755 --- a/ise_build_all.tcl +++ b/ise_build_all.tcl @@ -23,5 +23,8 @@ project close project open LX9Co-z80fast.xise process run "Generate Programming File" project close +project open LX9Co-PDP11.xise +process run "Generate Programming File" +project close exit diff --git a/ise_clean_all.tcl b/ise_clean_all.tcl index eadcb98..66c16c9 100755 --- a/ise_clean_all.tcl +++ b/ise_clean_all.tcl @@ -23,4 +23,7 @@ project close project open LX9Co-z80fast.xise project clean project close +project open LX9Co-PDP11.xise +project clean +project close exit diff --git a/src/ICAP_reboot.v b/src/ICAP_reboot.v index 89fc59c..6bd42d6 100644 --- a/src/ICAP_reboot.v +++ b/src/ICAP_reboot.v @@ -147,6 +147,7 @@ always @(MBT_REBOOT or state or sw) 4'b0010: icap_din = 16'hC000; 4'b0011: icap_din = 16'h0000; 4'b0100: icap_din = 16'h4000; + 4'b0111: icap_din = 16'h0000; 4'b1000: icap_din = 16'h8000; 4'b1001: icap_din = 16'h8000; 4'b1010: icap_din = 16'h8000; @@ -181,6 +182,7 @@ always @(MBT_REBOOT or state or sw) 4'b0010: icap_din = 16'h030f; 4'b0011: icap_din = 16'h0315; 4'b0100: icap_din = 16'h031a; + 4'b0111: icap_din = 16'h032a; 4'b1000: icap_din = 16'h031f; 4'b1001: icap_din = 16'h031f; 4'b1010: icap_din = 16'h031f; diff --git a/src/PDP2011/cpu.vhd b/src/PDP2011/cpu.vhd index 1e8b0bb..41de0ab 100644 --- a/src/PDP2011/cpu.vhd +++ b/src/PDP2011/cpu.vhd @@ -797,6 +797,7 @@ begin 1 when 3, 1 when 23 | 24, -- kdf11 1 when 34, + 1 when 35 | 40, 1 when 44, 1 when 45 | 50 | 55, 1 when 60, @@ -808,6 +809,7 @@ begin 1 when 3, 1 when 23 | 24, -- kdf11 1 when 34, + 1 when 35 | 40, 1 when 44, 1 when 45 | 50 | 55, 1 when 60, From 82032a077a89f62df051579c30f66c7f9ef9ad47 Mon Sep 17 00:00:00 2001 From: David Banks Date: Fri, 14 Aug 2015 18:30:17 +0100 Subject: [PATCH 27/61] Updated PDP11 clock to 32 MHz; final 0.19 firmware prior to bumping version to 0.20 Change-Id: I38298cb50c4829a160531241082581f00df26cbe --- LX9Co-PDP11.xise | 6 +----- src/LX9Co_CoProPDP11.vhd | 29 ++++++----------------------- 2 files changed, 7 insertions(+), 28 deletions(-) diff --git a/LX9Co-PDP11.xise b/LX9Co-PDP11.xise index 3fca8f5..dfa73d5 100644 --- a/LX9Co-PDP11.xise +++ b/LX9Co-PDP11.xise @@ -43,7 +43,7 @@
- + @@ -57,10 +57,6 @@ - - - - diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index b94f69f..5f591ca 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -36,7 +36,6 @@ architecture BEHAVIORAL of LX9CoProPDP11 is -- clock and reset signals ------------------------------------------------- - signal clk_16M00 : std_logic; signal clk_cpu : std_logic; signal clk_ram : std_logic; signal clk_tube : std_logic; @@ -92,16 +91,9 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_16 : entity work.dcm_32_16 port map ( - CLKIN_IN => fastclk, - CLK0_OUT => clk_16M00, - CLK0_OUT1 => open, - CLK2X_OUT => open - ); - inst_tuberom : entity work.tuberom_pdp11 port map ( - CLK => clk_16M00, + CLK => clk_ram, ADDR => cpu_addr(10 downto 1), DATA => rom_data_out ); @@ -243,8 +235,6 @@ begin -- test(3) <= cpu_din(2); -- test(2) <= cpu_din(1); -- test(1) <= cpu_din(0); - - test(8) <= '1' when ifetch = '1' and cpu_addr = o"176320" else '0'; test(7) <= '1' when ifetch = '1' and cpu_addr = o"176404" else '0'; @@ -255,26 +245,19 @@ begin test(2) <= '1' when ifetch = '1' and cpu_addr = x"0000" else '0'; test(1) <= cpu_IRQ_n; --- -------------------------------------------------------- -- clock enable generator -------------------------------------------------------- - clk_gen : process(clk_16M00, RSTn) - begin - if rising_edge(clk_16M00) then - clken_counter <= clken_counter + 1; - clk_cpu <= not clken_counter(0); - clk_tube <= not clken_counter(0); - clk_ram <= clk_cpu; - end if; - end process; + clk_cpu <= fastclk; + clk_tube <= fastclk; + clk_ram <= not fastclk; -------------------------------------------------------- -- power up reset -------------------------------------------------------- - reset_gen : process(clk_16M00) + reset_gen : process(clk_cpu) begin - if rising_edge(clk_16M00) then + if rising_edge(clk_cpu) then if (reset_counter(8) = '0') then reset_counter <= reset_counter + 1; end if; From 7464a84f54e959612a7d78839410a830dfbea021 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 19 Aug 2015 11:08:15 +0100 Subject: [PATCH 28/61] Fixed PDP11 stack limit issue; updated to 0.21 client firmware Change-Id: Id831b03899b261fd22e4221007890a59adddcc42 --- client/pdp11/021/Client11.lst | 1496 ++++++++++++++++++++++++++ client/pdp11/021/Client11.pdp | Bin 0 -> 2048 bytes client/pdp11/021/Client11.src | 1490 +++++++++++++++++++++++++ src/LX9Co_CoProPDP11.vhd | 2 +- src/ROM/tuberom_pdp11.vhd | 1908 ++++++++++++++++----------------- 5 files changed, 3941 insertions(+), 955 deletions(-) create mode 100644 client/pdp11/021/Client11.lst create mode 100644 client/pdp11/021/Client11.pdp create mode 100644 client/pdp11/021/Client11.src diff --git a/client/pdp11/021/Client11.lst b/client/pdp11/021/Client11.lst new file mode 100644 index 0000000..ebf7e7f --- /dev/null +++ b/client/pdp11/021/Client11.lst @@ -0,0 +1,1496 @@ +000000 ; PDP11 Tube Client Code +000000 ; ====================== +000000 ; Copyright (C)1989,2008,2014,2015 J.G.Harston +000000 ; +000000 ; v0.10 1989 JGH: Initial version, untested proof of concept. +000000 ; v0.11 2005 JGH: Altered some labels to assemble from BASIC +000000 ; v0.12 2008 JGH: Interupt handler data transfers. +000000 ; v0.13 2008 JGH: Added EMT handler. +000000 ; v0.14 2008 JGH: Checks executed code for ROM and Unix headers. +000000 ; v0.15 2008 JGH: Rearranged MOS interface code around, changed some labels. +000000 ; v0.16 2014 JGH: Optimised some common calls to SEND_BYTE. +000000 ; v0.17 01-Jan-2015 JGH: Addresses in control blocks allowed to be unaligned. +000000 VERSION: EQU &0018 +000000 ; v0.18 09-Aug-2015 DMB: Bugfix: CLICOM calling OSCLI with wrong register, RDLINE has +000000 ; (R1),R1 wrong way around, IRQHandler needs to have IRQs disabled. +000000 ; JGH: GBPB from channel 0 and EXECUTE uses FETCHBYTE. EXECUTE checks +000000 ; RESET/OSCLI flag on error, saves/restores PROG. IRQ_DATA stores +000000 ; ADDR with MOVBs. +000000 ; DMB: EMTVEC corrected. Indirect JMP/JSRs may be wrong, testing with @vec instead +000000 ; of @#vec and JSR PC,@(SP)+ in EMT dispatcher. +000000 ; JGH: Uses OSASCI for SEND_TXT, OSBYTE returns 16-bit results, MEMBOT and MEMTOP +000000 ; are variables. +000000 ; DMB: GetADDR in IRQ_DATA needs to use @#ADDR+n instead of @ADDR+n. MOVB used to +000000 ; read errors. +000000 VERSION: EQU &0019 +000000 ; v0.19 10-Aug-2015 DMB: Bugfix: EMT dispatcher index into vectors, unbalanced stack in Release. +000000 ; BIT #n,R in EXECUTE should be BIT #n,R. A few ADD/SUB #n wrong way around. +000000 ; JGH: Code with a Unix header copied to MEMBOT instead of &0000 as no MMU in +000000 ; this implementation. +000000 ; Bugs: EXECUTE doesn't prepare valid stack frame for code with Unix header. +000000 ; 11-Aug-2015 DMB: Bugfix, OSWORD <>0 wasn't fetching block lengths correctly. EMT 14 wrote +000000 ; wrong 'address' if not passed 'handler'. ESCHAND should use @ESCADDR. +000000 ; HANDLERS equate had wrong arithmetic. +000000 ; JGH: INIT_ENV correctly initialises EMTs 0-15 and nulls 16-255 instead of +000000 ; setting 16-31 to garbage and missing 240-255 completely. EQUs used to allow +000000 ; more handlers to be added easily. +000000 ; v0.19a 11-Aug-2015 JGH: Crunched some blocks of common code. +000000 ; v0.19b 11-Aug-2015 JGH: Crunched NMI data transfer code. +000000 ; v0.19c 12-Aug-2015 JGH: STARTUP uses internal stack. MEMBOT and MEMTOP fetched from variables. All +000000 ; unused hardware vectors set to NULLIRQ. +000000 ; v0.19d 13-Aug-2015 JGH: Tidied up and optimised EXECUTE, OSCLI saves all registers, uses internal +000000 ; stack. EMT14 optimised. +000000 ; v0.19e 16-Aug-2015 JGH: TRAP jumps to error, EMT 15 used instead of MKERR. +000000 ; v0.19f 16-Aug-2015 DMB: Bugfix: INIT_ENV was looping forever, wrong number of WORKSPACE words initialised +000000 ; starting from wrong workspace offset, TRAP vector was wrong. Wrong address +000000 ; mode in MOV @#COM_BLK,R0 in CLICOM. +000000 ; v0.19g 16-Aug-2015 BMB: All NMIs were failing to update ADDR by returning via wrong exit. +000000 VERSION: EQU &0020 +000000 ; v0.20 17-Aug-2015 JGH: EXECUTE possibly not working when entering BASIC. +000000 ; v0.20a 18-Aug-2015 DMB: Bugfix: EMT handler lost R0, EMT14 restored ERRV even after attempts to change it. +000000 ; Optimised EMT15 to free up space to fit EMT14 bugfix. +000000 ; v0.20b 18-Aug-2015 DMB: Bugfix: EMT15 optimisation used EMTHANDLER ERRV instead of mainline ERRV. +000000 VERSION: EQU &0021 +000000 ; v0.21 19-Aug-2015 JGH: Incremented to version 0.21. Added conditional switch to remove BPUT/BGET/GBPB to +000000 ; channel 0, saves about 100 bytes if removed. +000000 ; +000000 ; +000000 ; This code may be freely reused. +000000 ; +000000 ; This code assumes a single memory space and assumes that code can access I/O devices, low memory +000000 ; vectors and user memory with ordinary MOV instructions. This will work with no seperate +000000 ; Kernal/User space, or with code never running in User mode. +000000 +000000 ; Some naming conventions +000000 ; xxxxVEC - hardware vectors, eg EMTVEC, NMIVEC, etc +000000 ; xxxxV - software vectors, eg ESCV, ERRV, etc. +000000 ; xxxx or xxxHAND - handler for xxxx, eg ESCHAND, ERRHAND, etc. +000000 ; OSxxx or _xxx - routines handled by xxx, eg OSFILE handled by _FILE +000000 +000000 ; Memory map: +000000 ; +-----------------------+ 0000 +000000 ; | Hardware vectors, etc | +000000 ; MEMBOT +-----------------------+ 0100 +000000 ; | | +000000 ; | | +000000 ; MEMTOP | ^^^User Stack^^^ | +000000 ; WORKSP +-----------------------+ F500 +000000 ; | ERRBLK--> <--CLISTK | +000000 ; +-----------------------+ F530 +000000 ; | CLIBUF--> <--ERRSTK | +000000 ; HANDLERS +-----------------------+ +000000 ; | EXITV EXITADDR | F5D8 +000000 ; | ESCV ESCADDR | F5DC +000000 ; | ERRV ERRADDR | F5E0 +000000 ; | EVENTV EVENTADDR | F5E4 +000000 ; | USERIRQV USERIRQADDR | F5E8 +000000 ; | EMTV EMTADDR | F5EC +000000 ; | SPARE LPTR | F5F0 +000000 ; | MEMBOT MEMTOP | F5F4 +000000 ; ADDR | Transfer address | F5F8 +000000 ; PROG | Current program | F5FC +000000 ; PROG+2 | unused byte | F5FE +000000 ; ESCFLG | Escape flag | F5FF +000000 ; EMTTABLE +-----------------------+ +000000 ; | EMT 0 code address | F600 +000000 ; | EMT 1 code address | F602 +000000 ; | EMT 2 code address | F604 +000000 ; | EMT 3 code address | F606 +000000 ; | EMT 4 code address | F608 +000000 ; | ... | +000000 ; | EMT 255 code address | F7FE +000000 ; START +-----------------------+ F800 +000000 ; | Tube client code | +000000 ; +-----------------------+ FFF0 +000000 ; | Tube I/O registers | +000000 ; +-----------------------+ FFFF +000000 +000000 +000000 ; PDP-11 hardware addresses +000000 ; ========================= +000000 STACKVEC: EQU &04 ; Stack too low +000000 EMTVEC: EQU &18 ; Vector called by EMT call +000000 TRAPVEC: EQU &1C ; Vector called by TRAP call DMB +000000 +000000 +000000 ; Tube client system configuration tweekables +000000 ; =========================================== +000000 START: EQU &F800 ; Start of code +000000 TUBEIO: EQU &FFF0 ; Base of Tube I/O registers +000000 NMIVEC: EQU &80 ; Vector called by Tube NMIs with priority 7 +000000 IRQVEC: EQU &84 ; Vector called by Tube IRQs with priority 6 +000000 +000000 EMTMAX: EQU 256 ; Number of EMTs +000000 EMTTABLE: EQU START-EMTMAX*2 ; EMT dispatch table +000000 WORKSP: EQU EMTTABLE-256 ; 256 bytes for buffers, etc +000000 RAMSTART: EQU &0100 ; Lowest available user memory address +000000 RAMEND: EQU WORKSP ; Highest available user memory address +000000 +000000 ;NOCHNZERO: EQU 1 ; Remove bput/bget#0 -> wrch/rdch, saves about 100 bytes +000000 +000000 +000000 ; Internal buffers, etc +000000 ; ===================== +000000 ERRBLK: EQU WORKSP ; Buffer to store host error block +000000 CLIBUF: EQU WORKSP+&30 ; Space to enter command line from CLI prompt +000000 CLISTK: EQU CLIBUF ; Internal stack for CLI commands +000000 ; as main memory may be overwritten +000000 CLIEND: EQU HANDLERS +000000 ERRSTK: EQU CLIEND ; Internal stack for host errors +000000 +000000 WORKSPMAX: EQU 16 ; 16 bytes of general workspace +000000 HANDLEMAX: EQU 6 ; 6 environment handlers +000000 HANDLERS: EQU WORKSP+256-WORKSPMAX-4*HANDLEMAX ; Address of environment handlers +000000 EXITV: EQU HANDLERS+&00 ; Address of exit handler +000000 EXITADDR: EQU HANDLERS+&02 ; unused +000000 ESCV: EQU HANDLERS+&04 ; Address of escape handler +000000 ESCADDR: EQU HANDLERS+&06 ; Address of escape flag +000000 ERRV: EQU HANDLERS+&08 ; Address of error handler +000000 ERRADDR: EQU HANDLERS+&0A ; Address of error buffer +000000 EVENTV: EQU HANDLERS+&0C ; Address of event handler +000000 EVENTADDR: EQU HANDLERS+&0E ; unused +000000 USERIRQV: EQU HANDLERS+&10 ; Address of unknown IRQ handler +000000 USERIRQADDR: EQU HANDLERS+&12 ; unused +000000 EMTV: EQU HANDLERS+&14 ; Old SP within EMT handler +000000 EMTADDR: EQU HANDLERS+&16 ; Address of EMT dispatch table +000000 +000000 SPARE: EQU WORKSP+&F0 ; unused +000000 LPTR: EQU WORKSP+&F2 ; Point to command line (unused) +000000 MEMBOT: EQU WORKSP+&F4 ; Lowest user memory address +000000 MEMTOP: EQU WORKSP+&F6 ; Highest user memory address +000000 ADDR: EQU WORKSP+&F8 ; Transfer address +000000 PROG: EQU WORKSP+&FC ; Current program +000000 PROG2: EQU WORKSP+&FE ; unused +000000 ESCFLG: EQU WORKSP+&FF ; Escape flag +000000 +000000 +000000 ; Tube I/O devices +000000 ; ================ +000000 TUBE1S: EQU TUBEIO+0 ; Tube Status 1 +000000 TUBE1: EQU TUBEIO+2 ; Tube Data 1 - VDU +000000 TUBE2S: EQU TUBEIO+4 ; Tube Status 2 +000000 TUBE2: EQU TUBEIO+6 ; Tube Data 2 - Command +000000 TUBE3S: EQU TUBEIO+8 ; Tube Status 3 +000000 TUBE3: EQU TUBEIO+10 ; Tube Data 3 - Data +000000 TUBE4S: EQU TUBEIO+12 ; Tube Status 4 +000000 TUBE4: EQU TUBEIO+14 ; Tube Data 4 - Interrupt +000000 +000000 +000000 ; Code Entry +000000 ; ========== +000000 ; Set up vectors, hardware, memory, etc. +000000 ; Must be entered in Kernel mode. +174000 ORG START +174000 000167 000030 JMP STARTUP ; Jump to start up Tube code +174004 +174004 +174004 ; STARTUP +174004 ; ======= +174004 ; Tube data: via R1: string &00 -- via R2: &7F or &80 +174004 ; +174004 BANNER: +174004 015 EQUB 13 +174005 120 104 120 061 061 040 124 125 + 102 105 040 066 064 113 040 EQUS "PDP11 TUBE 64K " +174024 060 EQUB ((VERSION >> 8) AND 15)+48 +174025 056 EQUS "." +174026 062 EQUB ((VERSION >> 4) AND 15)+48 +174027 061 EQUB (VERSION AND 15)+48 +174030 #ifdef TESTBUILD +174030 EQUB 96+TESTBUILD +174030 #endif +174030 015 EQUB 13 +174031 015 EQUB 13 +174032 000 EQUB 0 +174033 000 ALIGN +174034 STARTUP: +174034 012706 172460 MOV #CLISTK,SP ; Use internal stack +174040 004767 002610 JSR PC,INIT_ENV ; Set up default handlers, preserving PROG +174044 013737 172774 172770 MOV @#PROG,@#ADDR ; Set current program as default entry address +174052 012701 174004 MOV #BANNER,R1 ; Point to startup banner +174056 004767 000206 JSR PC,SEND_TXT ; Print it via Tube WRCH protocol +174062 ;CLR R0 ; SEND_TXT returns R0=0 +174062 004767 002230 JSR PC,_WRCH ; Send terminating zero byte +174066 000241 CLC ; Clear Carry Flag to indicate Reset +174070 004767 000306 JSR PC,CLI_WAIT ; Wait for and check result byte +174074 ; Fall through to CLICOM if nothing executed +174074 +174074 ; Supervisor Command line prompt +174074 ; ============================== +174074 ; Allow user to enter *commands. +174074 ; We deliberately call _WORD and _CLI so if EMTs vectors are trashed we can still access MOS and so +174074 ; that errors go via ERRV instead of us having to check returned V flag. +174074 ; We will normally be running in Kernal mode so we can see the system vectors and high memory. +174074 ; +174074 CLICOM: +174074 EXITHAND: +174074 013706 172766 MOV @#MEMTOP,SP ; Put stack at top of user memory +174100 012700 000003 MOV #3,R0 +174104 004767 002576 JSR PC,INIT_IRQ ; Initialise IRQ/NMI and environment handlers +174110 CLILOOP: +174110 012701 174140 MOV #PROMPT,R1 +174114 004767 000150 JSR PC,SEND_TXT ; Display prompt +174120 ;CLR R0 ; SEND_TXT returns R0=0 +174120 ;MOV #COM_BLK,R1 ; Point to control block, SENT_TXT returns R1=COM_BLK +174120 004767 001040 JSR PC,_WORD ; Read a line of text +174124 103414 BCS COM_ESC ; Escape pressed +174126 013700 174150 MOV @#COM_BLK,R0 ; Get address of input buffer DMB +174132 004767 000140 JSR PC,_CLI ; Execute command +174136 000764 BR CLILOOP ; Loop back for another line +174140 PROMPT: +174140 120 104 120 061 061 076 052 EQUS "PDP11>*" ; Command prompt +174147 000 EQUB 0 +174150 ALIGN +174150 ; +174150 COM_BLK: +174150 172460 EQUW CLIBUF ; Input buffer +174152 250 EQUB CLIEND-CLIBUF ; Buffer length +174153 040 EQUB 32 ; Lowest acceptable char +174154 377 EQUB 255 ; Highest acceptable char +174155 377 ALIGN +174156 ; +174156 COM_ESC: +174156 012700 000176 MOV #126,R0 +174162 004767 000572 JSR PC,_BYTE ; Acknowledge Escape +174166 ; JSR PC,MKERR +174166 104017 EMT 15 +174170 021 105 163 143 141 160 145 000 + EQUB 17,"Escape",0 +174200 ALIGN +174200 +174200 ; Default error handler +174200 ; --------------------- +174200 ; On entry, R0=>error block +174200 ERRHAND: +174200 013706 172766 MOV @#MEMTOP,SP ; Reset stack to top of user memory +174204 010001 MOV R0,R1 ; Point R1=>error block +174206 005201 INC R1 ; Step past error number +174210 004767 002066 JSR PC,_NEWL ; Print a newline +174214 004767 000050 JSR PC,SEND_TXT ; Print error message +174220 004767 002056 JSR PC,_NEWL ; Print another newline +174224 000723 BR CLICOM +174226 +174226 ; Default escape handler +174226 ; ---------------------- +174226 ESCHAND: +174226 060000 ADD R0,R0 ; Move b6 into b7 +174230 110077 176502 MOVB R0,@ESCADDR ; Store Escape flag +174234 000207 RTS PC +174236 +174236 +174236 ; Fetch word from unaligned R1 to R1 +174236 ; ================================== +174236 ; Unaligned version of MOV (R1),R1, corrupts R0 +174236 ; FETCHWORD2 - R1=>word+2 +174236 ; FETCHWORD - R1=>word +174236 ; +174236 FETCHWORD2: +174236 162701 000002 SUB #2,R1 ; Step back to point to word +174242 FETCHWORD: +174242 112100 MOVB (R1)+,R0 ; Fetch low byte +174244 042700 177400 BIC #&FF00,R0 ; Ensure 8-bit value +174250 111101 MOVB (R1),R1 ; Fetch high byte +174252 042701 177400 BIC #&FF00,R1 ; Ensure 8-bit word +174256 000301 SWAB R1 ; Swap high byte to top of register +174260 050001 BIS R0,R1 ; Merge together +174262 000207 RTS PC +174264 +174264 +174264 ; Print zero-terminated text string at R1 +174264 ; ======================================= +174264 SEND_TXTLP: +174264 004767 002004 JSR PC,_ASCII ; Send to WRCH via Tube R1 +174270 SEND_TXT: +174270 112100 MOVB (R1)+,R0 ; Get byte from R1, increment R1 +174272 001374 BNE SEND_TXTLP ; Loop until &00 byte +174274 000207 RTS PC +174276 +174276 +174276 ; ************* +174276 ; MOS INTERFACE +174276 ; ************* +174276 +174276 ; OSCLI - Send command line to host +174276 ; ================================= +174276 ; On entry: R0=>command string +174276 ; On exit: R0=return value +174276 ; +174276 ; Tube data: &02 string &0D -- &7F or &80 +174276 ; +174276 _CLI: +174276 010146 MOV R1,-(SP) ; Save registers +174300 010246 MOV R2,-(SP) +174302 010346 MOV R3,-(SP) +174304 010446 MOV R4,-(SP) +174306 010546 MOV R5,-(SP) +174310 +174310 ; As a *command may result in data transfer, that data may end up overwriting stack in user memory, +174310 ; so use a temporary stack to do OSCLI. If OSCLI ends up jumping to a new process, a new stack will +174310 ; be set up by that new process. If we are already using the internal stack we continue using it +174310 ; so that transient OSCLIs can call more OSCLIs. +174310 +174310 010605 MOV SP,R5 ; Copy stack pointer so we can stack it +174312 020527 172400 CMP R5,#WORKSP ; Check where the stack is +174316 103002 BCC CLI_SYSSTK ; We're already using internal stack +174320 012706 172460 MOV #CLISTK,SP ; Use internal stack +174324 CLI_SYSSTK: +174324 010546 MOV R5,-(SP) ; Save caller's stack pointer +174326 013746 172774 MOV @#PROG,-(SP) ; Save current program as top item on stack +174332 004767 000024 JSR PC,CLI_GO ; Do the OSCLI call +174336 012637 172774 MOV (SP)+,@#PROG ; Restore current program +174342 011606 MOV (SP),SP ; Restore caller's stack pointer +174344 012605 MOV (SP)+,R5 ; Restore registers +174346 012604 MOV (SP)+,R4 +174350 012603 MOV (SP)+,R3 +174352 012602 MOV (SP)+,R2 +174354 012601 MOV (SP)+,R1 +174356 005000 CLR R0 ; Return R0=0 from OSCLI +174360 CLI_DONE: +174360 000207 RTS PC +174362 +174362 CLI_GO: +174362 010001 MOV R0,R1 ; R1=pointer to command string +174364 012700 000002 MOV #2,R0 +174370 004767 002602 JSR PC,SEND_CMD ; Send command &02 - OSCLI +174374 004767 002516 JSR PC,SEND_STR ; Send command string at R1 +174400 CLI_WAIT1: +174400 000261 SEC ; Set Carry to indicate OSCLI +174402 CLI_WAIT: +174402 004767 001616 JSR PC,WAIT_BYTE ; Wait for result via Tube R2 (preserves Cy) +174406 ; WAIT_BYTE returns flags set from R0 +174406 100364 BPL CLI_DONE ; No code to be executed +174410 ; Fall through into EXECUTE +174410 +174410 +174410 ; EXECUTE - Enter code at ADDR +174410 ; ============================ +174410 ; Checks for possible code header, makes code current PROGRAM. +174410 ; On entry, ADDRESS=code entry address +174410 ; CC=entering from RESET +174410 ; CS=entering from OSCLI/OSBYTE +174410 ; +174410 ; Caller should preserve registers before calling here. +174410 ; +174410 EXECUTE: +174410 012700 000000 MOV #0,R0 ; R0=0 - prepare for raw code +174414 006100 ROL R0 ; Save RESET/OSCLI flag in Carry in R0 +174416 013701 172770 MOV @#ADDR,R1 ; Get transfer address +174422 010146 MOV R1,-(SP) ; Save entry address +174424 116102 000007 MOVB 7(R1),R2 ; Get copyright offset +174430 042702 177400 BIC #&FF00,R2 ; Ensure 8-bit value +174434 060201 ADD R2,R1 ; R1=>copyright string +174436 105721 TSTB (R1)+ ; Check for copyright string +174440 001051 BNE EXEC_NOTROM +174442 122127 000050 CMPB (R1)+,#ASC"(" +174446 001046 BNE EXEC_NOTROM +174450 122127 000103 CMPB (R1)+,#ASC"C" +174454 001043 BNE EXEC_NOTROM +174456 122127 000051 CMPB (R1)+,#ASC")" +174462 001040 BNE EXEC_NOTROM +174464 011601 MOV (SP),R1 ; Get entry address back +174466 116102 000006 MOVB 6(R1),R2 ; Get ROM type +174472 032702 000100 BIT #&40,R2 ; DMB: BIT, not TST +174476 001506 BEQ EXEC_NOTLANG +174500 042702 177760 BIC #&FFF0,R2 ; Mask out non-CPU bits +174504 020227 000007 CMP R2,#&07 +174510 001101 BNE EXEC_NOTPDP +174512 116102 000006 MOVB 6(R1),R2 ; Get ROM type again +174516 032702 000040 BIT #&20,R2 ; Does Tube transfer address exist? DMB: BIT, not TST +174522 001416 BEQ EXEC_ROM ; No, use stacked entry address +174524 116102 000007 MOVB 7(R1),R2 ; Get copyright offset +174530 042702 177400 BIC #&FF00,R2 ; Ensure 8-bit value +174534 060201 ADD R2,R1 ; Point to copyright message +174536 005201 INC R1 ; Step past first zero byte +174540 EXEC_SKIP: +174540 105721 TSTB (R1)+ ; Find terminating zero byte +174542 001376 BNE EXEC_SKIP +174544 062701 000004 ADD #4,R1 ; Step past transfer address +174550 004767 177466 JSR PC,FETCHWORD ; R1=offset from start address +174554 062601 ADD (SP)+,R1 ; Add start entry to offset, R1 is now entry address +174556 010146 MOV R1,-(SP) ; Push it back +174560 EXEC_ROM: +174560 052700 000002 BIS #2,R0 ; R0.1=1 to indicate code with header (will become R1=1) +174564 ; See if a Unix header also exists +174564 ; +174564 EXEC_NOTROM: +174564 012601 MOV (SP)+,R1 ; Get entry address back +174566 042701 000001 BIC #1,R1 ; Ensure word aligned +174572 011102 MOV (R1),R2 ; Get magic number +174574 020227 000405 CMP R2,#&105 ; &o0405 - overlay +174600 103434 BCS EXEC_CODE ; &o0407 - normal +174602 020227 000411 CMP R2,#&109 ; &o0410 - read-only text +174606 103031 BCC EXEC_CODE ; &o0411 - seperated I&D +174610 005721 TST (R1)+ ; Step to next entry +174612 012103 MOV (R1)+,R3 ; Size of text +174614 012104 MOV (R1)+,R4 ; Size of initialised data +174616 060403 ADD R4,R3 ; Size of program +174620 012104 MOV (R1)+,R4 ; Size of uninitialised data +174622 013702 172764 MOV @#MEMBOT,R2 ; Destination address +174626 062701 000010 ADD #8,R1 ; Set past other fields to start of code +174632 +174632 ; R1=source +174632 ; R2=dest +174632 ; R3=size of code+data +174632 ; R4=size to be zeroed +174632 +174632 006203 ASR R3 ; Divide by two to get size in words +174634 EXEC_COPY: +174634 012122 MOV (R1)+,(R2)+ ; Copy program to MEMBOT +174636 005303 DEC R3 ; Decrement number of words to copy +174640 001375 BNE EXEC_COPY +174642 006204 ASR R4 ; Divide by two to get size in words +174644 001403 BEQ EXEC_ENTER ; No uninitialised data to clear +174646 EXEC_ZERO: +174646 005022 CLR (R2)+ ; Zero uninitialised data +174650 005304 DEC R4 ; Decrement number of words to clear +174652 001375 BNE EXEC_ZERO +174654 EXEC_ENTER: +174654 042700 177776 BIC #&FFFE,R0 ; Prepare R0=0 for code without a ROM header +174660 013701 172764 MOV @#MEMBOT,R1 ; Entry address +174664 ; Build an empty stack frame +174664 005046 CLR -(SP) ; argv[1]=0 +174666 005046 CLR -(SP) ; argv[0]=0 +174670 005046 CLR -(SP) ; argn=0 +174672 +174672 EXEC_CODE: +174672 012705 005674 MOV #&0BBC,R5 ; R5=&0BBC to indicate BBC EMTs available +174676 006200 ASR R0 ; R0=0/1 for raw/header, Cy=RESET/OSCLI +174700 010137 172774 MOV R1,@#PROG ; Set as current program +174704 010146 MOV R1,-(SP) ; Stack destination address +174706 012701 174004 MOV #BANNER,R1 ; R1=> for no command line +174712 000207 RTS PC ; Jump to code via RTS +174714 +174714 EXEC_NOTLANG: +174714 ; ASR R0 +174714 ; BCC EXEC_CLICOM ; Entered from RESET, drop into CLICOM +174714 ;; JSR PC,MKERR +174714 ; EMT 15 +174714 ; EQUB 249,"This is not a language",0 +174714 ; ALIGN +174714 ; +174714 EXEC_NOTPDP: +174714 006200 ASR R0 +174716 103015 BCC EXEC_CLICOM ; Entered from RESET, drop into CLICOM +174720 012700 000003 MOV #3,R0 +174724 004767 002006 JSR PC,INIT_HANDLES ; Connect to default error handler +174730 ; JSR PC,MKERR +174730 104017 EMT 15 +174732 371 116 157 164 040 120 104 120 + 061 061 040 143 157 144 145 000 + EQUB 249,"Not PDP11 code",0 +174752 ALIGN +174752 +174752 EXEC_CLICOM: +174752 000167 177116 JMP CLICOM ; Drop into Supervisor command prompt +174756 +174756 +174756 ; OSBYTE +174756 ; ====== +174756 ; On entry: R0,R1,R2=OSBYTE parameters +174756 ; On exit: R0 preserved +174756 ; If R0<&80, R1=returned value +174756 ; If R0>&7F, R1, R2, Carry=returned values +174756 ; +174756 ; Tube data: &04 X A -- X +174756 ; &06 X Y A -- Cy Y X +174756 ; +174756 BYTE_WAIT: +174756 000610 BR CLI_WAIT1 ; Jump to wait for ack. from OSCLI/OSBYTE +174760 _BYTE: +174760 010046 MOV R0,-(SP) ; Save R0 +174762 105700 TSTB R0 +174764 100413 BMI BYTE_HI ; Jump with high OSBYTEs +174766 012700 000004 MOV #4,R0 +174772 004767 002172 JSR PC,SEND_CMD_R1 ; Send command and second parameter +174776 011600 MOV (SP),R0 ; Get first parameter from top of stack +175000 004767 002172 JSR PC,SEND_BYTE ; Send first parameter +175004 004767 001214 JSR PC,WAIT_BYTE ; Wait for response +175010 010001 MOV R0,R1 ; Pass to R1 +175012 000462 BR BYTE_DONE +175014 ; MOV (SP)+,R0 ; Restore R0 +175014 ; RTS PC +175014 +175014 ; OSBYTE >&7F +175014 ; ----------- +175014 BYTE_HI: +175014 ; CMP R0,#&82 +175014 ; BEQ MEM82 ; Fetch address high word +175014 ; CMP R0,#&83 +175014 ; BEQ MEM83 ; Fetch low memory limit +175014 ; CMP R0,#&84 +175014 ; BEQ MEM84 ; Fetch high memory limit +175014 ; +175014 020027 000202 CMP R0,#&82 +175020 103404 BCS BYTE_HI1 ; Not a memory OSBYTE +175022 001445 BEQ MEM82 ; Fetch address high word +175024 020027 000205 CMP R0,#&85 +175030 103444 BCS MEM83 ; Fetch low/high memory limit +175032 BYTE_HI1: +175032 012700 000006 MOV #6,R0 +175036 004767 002126 JSR PC,SEND_CMD_R1 ; Send command and second parameter +175042 010200 MOV R2,R0 +175044 004767 002126 JSR PC,SEND_BYTE ; Send third parameter +175050 012600 MOV (SP)+,R0 ; Get first parameter from stack +175052 004767 002120 JSR PC,SEND_BYTE ; Send first parameter +175056 020027 000235 CMP R0,#&9D ; Was it Fast BPut? +175062 001437 BEQ BYTE_DONE1 ; Don't wait for response +175064 020027 000216 CMP R0,#&8E ; Was it language startup? +175070 001732 BEQ BYTE_WAIT ; Wait for program startup +175072 010046 MOV R0,-(SP) ; Save R0 again +175074 004767 001124 JSR PC,WAIT_BYTE ; Wait for response +175100 062700 177600 ADD #&FF80,R0 ; Copy b7 into Carry +175104 004767 001114 JSR PC,WAIT_BYTE ; Wait for response +175110 042700 177400 BIC #&FF00,R0 ; Ensure 8-bit value +175114 010002 MOV R0,R2 ; Pass to R2 +175116 000300 SWAB R0 +175120 010001 MOV R0,R1 ; Pass to R1 as b8-b15 of result +175122 004767 001076 JSR PC,WAIT_BYTE ; Wait for response +175126 042700 177400 BIC #&FF00,R0 ; Ensure 8-bit value +175132 050001 BIS R0,R1 ; Merge with b8-b15 set from R2 +175134 000411 BR BYTE_DONE +175136 ;BYTE_DONE: +175136 ; MOV (SP)+,R0 ; Restore R0 +175136 ; RTS PC +175136 +175136 ; Read memory locations +175136 ; --------------------- +175136 MEM82: +175136 012700 000206 MOV #&86,R0 ; Point to ADDR+2 +175142 MEM83: +175142 MEM84: +175142 006300 ASL R0 ; A=&0106,&0108,&010C +175144 016001 172356 MOV MEMBOT-&106(R0),R1 ; Fetch address value +175150 010102 MOV R1,R2 ; R2=R1 DIV 256 +175152 000302 SWAB R2 +175154 042702 177400 BIC #&FF00,R2 +175160 BYTE_DONE: +175160 012600 MOV (SP)+,R0 ; Restore R0 +175162 BYTE_DONE1: +175162 000207 RTS PC +175164 +175164 +175164 ; OSWORD +175164 ; ====== +175164 ; On entry: R0=OSWORD number +175164 ; R1=>control block +175164 ; +175164 _WORD: +175164 005700 TST R0 +175166 001515 BEQ RDLINE ; OSWORD 0, jump to read line +175170 ; +175170 ; OSWORD <>&00 +175170 ; ------------ +175170 ; Tube data: &08 function in_length block out_length -- block +175170 ; +175170 010346 MOV R3,-(SP) ; Save R3 +175172 010246 MOV R2,-(SP) ; Save R2 +175174 010046 MOV R0,-(SP) ; Save R0 +175176 012700 000010 MOV #8,R0 +175202 004767 001770 JSR PC,SEND_CMD ; Send command &08 - OSWORD +175206 011600 MOV (SP),R0 ; Get R0 back +175210 004767 001762 JSR PC,SEND_BYTE ; Send OSWORD number +175214 105700 TSTB R0 ; Check OSWORD number +175216 100003 BPL WORDLO ; <&80, calculate control block sizes +175220 112102 MOVB (R1)+,R2 ; Get transmit size from control block DMB: should be R1 +175222 111103 MOVB (R1),R3 ; Get receive size from control block DMB: should be R1 +175224 000414 BR WORDGO ; Jump to send OSWORD command +175226 WORDLO: +175226 012702 000020 MOV #&10,R2 ; OSWORD &15-&7F uses 16 bytes both ways +175232 012703 000020 MOV #&10,R3 +175236 020027 000025 CMP R0,#&15 ; OSWORD &01-&7F use fixed control block sizes +175242 103005 BCC WORDGO ; OSWORD &15-&7F, jump to send OSWORD command +175244 060000 ADD R0,R0 ; Double R0 to index into table +175246 062700 175350 ADD #WORD_TABLE-2,R0 ; Point to table entry DMB: #WORD_TABLE +175252 112002 MOVB (R0)+,R2 ; Fetch send length +175254 111003 MOVB (R0),R3 ; Fetch receive length +175256 WORDGO: +175256 010200 MOV R2,R0 ; Get transmit block length +175260 004767 001712 JSR PC,SEND_BYTE ; Send transmit block length +175264 060201 ADD R2,R1 ; Point to past end of control block +175266 005302 DEC R2 ; Convert 0 to -1 +175270 020227 000200 CMP R2,#&80 ; Check length of transmit block +175274 103005 BCC WORD_NOTX ; Transmit block=0 or >&80, send nothing +175276 WORD_TX: +175276 114100 MOVB -(R1),R0 ; Get byte from control block +175300 004767 001672 JSR PC,SEND_BYTE ; Send byte to Tube R2 +175304 005302 DEC R2 +175306 100373 BPL WORD_TX ; Loop to send control block +175310 WORD_NOTX: +175310 010300 MOV R3,R0 ; Get recive block length +175312 004767 001660 JSR PC,SEND_BYTE ; Send receive block length +175316 060301 ADD R3,R1 ; Point past end of control block +175320 005303 DEC R3 ; Convert 0 to -1 +175322 020327 000200 CMP R3,#&80 ; Check length of received block +175326 103005 BCC WORD_NORX ; Receive block=0 or >&80, receive nothing +175330 WORD_RX: +175330 004767 000670 JSR PC,WAIT_BYTE ; Get byte from Tube R2 +175334 110041 MOVB R0,-(R1) ; Store byte in control block +175336 005303 DEC R3 +175340 100373 BPL WORD_RX ; Loop to receive control block +175342 WORD_NORX: +175342 012600 MOV (SP)+,R0 ; Restore registers +175344 012602 MOV (SP)+,R2 +175346 012603 MOV (SP)+,R3 +175350 000207 RTS PC +175352 ; +175352 ; Table of OSWORD control block lengths for &01-&14 +175352 ; ------------------------------------------------- +175352 ; low byte=send length, high byte=recive length +175352 WORD_TABLE: +175352 002400 EQUW &0500 ; &01 =TIME +175354 000005 EQUW &0005 ; &02 TIME= +175356 002400 EQUW &0500 ; &03 =TIMER +175360 000005 EQUW &0005 ; &04 TIMER= +175362 002404 EQUW &0504 ; &05 =MEM +175364 000005 EQUW &0005 ; &06 MEM= +175366 000010 EQUW &0008 ; &07 SOUND +175370 000016 EQUW &000E ; &08 ENVELOPE +175372 002404 EQUW &0504 ; &09 =POINT +175374 004401 EQUW &0901 ; &0A Read bitmap +175376 002401 EQUW &0501 ; &0B Read palette +175400 000005 EQUW &0005 ; &0C Write palette +175402 004000 EQUW &0800 ; &0D Read graphics coords +175404 014420 EQUW &1910 ; &0E =TIME$ +175406 000040 EQUW &0020 ; &0F TIME$= +175410 000420 EQUW &0110 ; &10 Net_Tx +175412 006415 EQUW &0D0D ; &11 Net_Rx +175414 100000 EQUW &8000 ; &12 Net_Params +175416 004010 EQUW &0808 ; &13 Net_Info +175420 100200 EQUW &8080 ; &14 NetFS_Op +175422 +175422 +175422 ; Read a line of text +175422 ; ------------------- +175422 ; Tube data: &0A block -- &FF or &7F string &0D +175422 ; +175422 RDLINE: +175422 012700 000012 MOV #10,R0 +175426 004767 001544 JSR PC,SEND_CMD ; Send command &0A - RDLINE +175432 062701 000002 ADD #2,R1 +175436 012702 000003 MOV #3,R2 +175442 004767 001466 JSR PC,SEND_BLK ; Send 3-byte control block +175446 012700 000007 MOV #7,R0 +175452 004767 001520 JSR PC,SEND_BYTE ; Send &0700 +175456 005000 CLR R0 +175460 004767 001512 JSR PC,SEND_BYTE +175464 004767 000534 JSR PC,WAIT_BYTE ; Wait for response +175470 062700 177600 ADD #&FF80,R0 ; Copy b7 into Carry +175474 103413 BCS RD_DONE +175476 004767 176534 JSR PC,FETCHWORD2 ; Get address to store text, allowing for nonalignment +175502 005002 CLR R2 ; Clear count of received bytes +175504 RD_STR: +175504 004767 000514 JSR PC,WAIT_BYTE ; Wait for byte from Tube R2 +175510 110021 MOVB R0,(R1)+ ; Store it +175512 005202 INC R2 ; Increment number of bytes +175514 020027 000015 CMP R0,#13 ; Check current byte +175520 001371 BNE RD_STR ; Loop until and Clear Carry +175522 005302 DEC R2 ; R2 is length of string +175524 RD_DONE: +175524 000207 RTS PC +175526 +175526 +175526 ; OSARGS - Read info on open file or filing system +175526 ; ================================================ +175526 ; On entry: R0=function +175526 ; R1=handle +175526 ; R2=>control block +175526 ; On exit: R0=returned value +175526 ; R1 preserved +175526 ; R2 preserved +175526 ; +175526 ; Tube Data: &0C handle block function -- result block +175526 ; +175526 _ARGS: +175526 010246 MOV R2,-(SP) ; Save control block pointer +175530 010146 MOV R1,-(SP) ; Save handle +175532 010046 MOV R0,-(SP) ; Save function +175534 012700 000014 MOV #&0C,R0 +175540 004767 001424 JSR PC,SEND_CMD_R1 ; Send command and handle +175544 010201 MOV R2,R1 +175546 012702 000004 MOV #4,R2 +175552 004767 001356 JSR PC,SEND_BLK ; Send four-byte control block +175556 012600 MOV (SP)+,R0 +175560 004767 001412 JSR PC,SEND_BYTE ; Send function +175564 004767 000434 JSR PC,WAIT_BYTE ; Wait for returned result +175570 010046 MOV R0,-(SP) ; Save result +175572 012702 000004 MOV #4,R2 ; Prepare to wait for 4-byte control block +175576 ; JSR PC,WAIT_BLK ; Wait for four-byte control block +175576 ; MOV (SP)+,R0 ; Get result back +175576 ; MOV (SP)+,R1 ; Get handle back +175576 ; MOV (SP)+,R2 ; Get control block pointer back +175576 ; RTS PC +175576 000463 BR FILE_DONE ; Wait for control block, restore and return +175600 +175600 +175600 ; OSFIND - Open or Close a file +175600 ; ============================= +175600 ; On entry: R0=function +175600 ; R1=handle or =>filename +175600 ; On exit: R0=zero or handle +175600 ; +175600 ; Tube data: &12 function string &0D -- handle +175600 ; &12 &00 handle -- &7F +175600 ; +175600 _FIND: +175600 010046 MOV R0,-(SP) ; Save R0 +175602 012700 000022 MOV #&12,R0 +175606 004767 001364 JSR PC,SEND_CMD ; Send command &12 - OSFIND +175612 012600 MOV (SP)+,R0 ; Get R0 back +175614 004767 001356 JSR PC,SEND_BYTE ; Send function +175620 005700 TST R0 ; Check function +175622 001006 BNE OPEN ; Jump to deal with OPEN +175624 ; CLOSE +175624 004767 001344 JSR PC,SEND_BYTE_R1 ; Send handle to Tube +175630 004767 000370 JSR PC,WAIT_BYTE ; Wait for acknowledgement +175634 005000 CLR R0 ; Zero R0 +175636 000207 RTS PC +175640 OPEN: +175640 010146 MOV R1,-(SP) ; Save R1 +175642 004767 001250 JSR PC,SEND_STR ; Send string at R1 +175646 004767 000352 JSR PC,WAIT_BYTE ; Wait for returned handle +175652 012601 MOV (SP)+,R1 ; Restore R1 +175654 000207 RTS PC +175656 +175656 +175656 ; OSFILE - Operate on whole files +175656 ; =============================== +175656 ; On entry: R0=function +175656 ; R1=>control block +175656 ; On exit: R0=result +175656 ; R1 preserved +175656 ; control block updated +175656 ; +175656 ; Tube data: &14 block string function -- result block +175656 ; +175656 _FILE: +175656 010246 MOV R2,-(SP) ; Save R2 +175660 010146 MOV R1,-(SP) ; Save R1 +175662 010046 MOV R0,-(SP) ; Save function +175664 012700 000024 MOV #&14,R0 +175670 004767 001302 JSR PC,SEND_CMD ; Send command &14 - OSFILE +175674 062701 000002 ADD #2,R1 ; Point to control block contents +175700 012702 000020 MOV #16,R2 +175704 004767 001224 JSR PC,SEND_BLK ; Send 16-byte control block +175710 004767 176322 JSR PC,FETCHWORD2 ; Get address of filename, allowing for nonalignment +175714 004767 001176 JSR PC,SEND_STR ; Send filename string +175720 012600 MOV (SP)+,R0 +175722 004767 001250 JSR PC,SEND_BYTE ; Send function +175726 004767 000272 JSR PC,WAIT_BYTE ; Wait for returned result +175732 011601 MOV (SP),R1 ; Get control block pointer back +175734 010046 MOV R0,-(SP) ; Save result +175736 062701 000002 ADD #2,R1 ; Point to control block contents +175742 012702 000020 MOV #16,R2 ; Prepate to wait for 16-byte control block +175746 FILE_DONE: +175746 004767 001200 JSR PC,WAIT_BLK ; Wait for control block +175752 012600 MOV (SP)+,R0 ; Get result back +175754 012601 MOV (SP)+,R1 ; Get control block pointer back +175756 012602 MOV (SP)+,R2 ; Get R2 back +175760 000207 RTS PC +175762 +175762 +175762 ; OS_GBPB - Multiple byte read and write +175762 ; ===================================== +175762 ; On entry: R0=function +175762 ; R1=>control block +175762 ; On exit: R0=returned value +175762 ; control block updated +175762 ; +175762 ; Tube data: &16 block function -- block Carry result +175762 ; +175762 _GBPB: +175762 #ifndef NOCHNZERO +175762 105711 TSTB (R1) ; Check handle +175764 001005 BNE GBPB1 ; Non-zero handle +175766 005700 TST R0 ; Check function +175770 001403 BEQ GBPB1 ; Pass OSGBPB 0 to Tube +175772 020027 000005 CMP R0,#5 +175776 103423 BCS GBPB_RDWR ; Channel 0 via OSRDCH/OSWRCH +176000 #endif +176000 GBPB1: +176000 010246 MOV R2,-(SP) ; Save R2 +176002 010046 MOV R0,-(SP) ; Save function +176004 012700 000026 MOV #&16,R0 +176010 004767 001162 JSR PC,SEND_CMD ; Send command &16 - OSGBPB +176014 012702 000015 MOV #13,R2 +176020 004767 001110 JSR PC,SEND_BLK ; Send 13-byte control block +176024 012600 MOV (SP)+,R0 +176026 004767 001144 JSR PC,SEND_BYTE ; Send function +176032 012702 000015 MOV #13,R2 +176036 004767 001110 JSR PC,WAIT_BLK ; Wait for 13-byte control block +176042 012602 MOV (SP)+,R2 ; Get R2 back +176044 000463 BR WAIT_CHAR ; Get Carry and result byte +176046 ; +176046 ; Read or write block of memory to/from OSWRCH/OSRDCH +176046 ; --------------------------------------------------- +176046 ; NB, only uses 16-bit address and count, b16-b31 ignored and not updated +176046 ; +176046 #ifndef NOCHNZERO +176046 GBPB_RDWR: +176046 010246 MOV R2,-(SP) ; Save R2 +176050 010046 MOV R0,-(SP) ; Save function +176052 010146 MOV R1,-(SP) ; Save pointer to control block +176054 005201 INC R1 ; Point to Address +176056 004767 176160 JSR PC,FETCHWORD ; R1=Address, allowing for nonalignment +176062 010102 MOV R1,R2 ; R2=Address +176064 012601 MOV (SP)+,R1 ; Restore pointer to control block +176066 +176066 GBPB_LP: +176066 021627 000003 CMP (SP),#3 +176072 103004 BCC GBPB_RD ; Function 3/4, read characters +176074 ; Function 1/2, write characters +176074 112200 MOVB (R2)+,R0 ; Get character from memory +176076 004767 000214 JSR PC,_WRCH ; Write it +176102 000404 BR GBPB_NEXT ; Jump to update and loop +176104 GBPB_RD: +176104 004767 000076 JSR PC,_RDCH ; Read character +176110 103415 BCS GBPB_EXIT ; Carry set, exit +176112 110022 MOVB R0,(R2)+ ; Store character +176114 GBPB_NEXT: +176114 105761 000005 TSTB 5(R1) ; Test byte low byte +176120 001002 BNE GBPB_LO ; Count<>&xx00 +176122 105361 000006 DECB 6(R1) ; Decrement count high byte +176126 GBPB_LO: +176126 105361 000005 DECB 5(R1) ; Decrement count low byte +176132 001355 BNE GBPB_LP ; Loop until all done +176134 105761 000006 TSTB 6(R1) ; Test count high byte +176140 001352 BNE GBPB_LP ; Loop until all done +176142 000241 CLC ; Clear carry for OK +176144 GBPB_EXIT: +176144 110261 000001 MOVB R2,1(R1) +176150 000302 SWAB R2 +176152 110261 000002 MOVB R2,2(R1) ; Update address +176156 005726 TST (SP)+ ; Drop function +176160 012602 MOV (SP)+,R2 ; Restore R2 +176162 012700 000000 MOV #0,R0 ; R0=0, function supported, don't affect Carry +176166 000207 RTS PC +176170 #endif +176170 +176170 +176170 ; OSBGET - Get a byte from open file +176170 ; ================================== +176170 ; On entry: R1=handle +176170 ; On exit: R0=byte Read +176170 ; R1=preserved +176170 ; Cy set if EOF +176170 ; +176170 ; Tube data: &0E handle -- Carry byte +176170 ; +176170 _BGET: +176170 #ifndef NOCHNZERO +176170 005701 TST R1 ; Check handle +176172 001405 BEQ _RDCH ; BGET#0 calls OSRDCH +176174 #endif +176174 012700 000016 MOV #&0E,R0 +176200 004767 000764 JSR PC,SEND_CMD_R1 ; Send command and handle +176204 000403 BR WAIT_CHAR ; Wait for Carry, Byte +176206 +176206 +176206 ; OSRDCH - Wait for character from input stream +176206 ; ============================================= +176206 ; On exit: R0=char, Cy=carry +176206 ; +176206 ; Tube data: &00 -- Carry Char +176206 ; +176206 _RDCH: +176206 005000 CLR R0 +176210 004767 000762 JSR PC,SEND_CMD ; Send command &00 - OSRDCH +176214 WAIT_CHAR: +176214 004767 000004 JSR PC,WAIT_BYTE ; Get returned byte +176220 062700 177600 ADD #&FF80,R0 ; Copy b7 into carry +176224 ; Continue to fetch byte from Tube R2 +176224 +176224 +176224 ; Wait for byte in Tube Register 1 to return in R0, preserving Carry +176224 ; ================================================================== +176224 WAIT_BYTE: +176224 113700 177764 MOVB @#TUBE2S,R0 ; Read Tube R2 status +176230 100375 BPL WAIT_BYTE ; Loop until b7 set +176232 113700 177766 MOVB @#TUBE2,R0 ; Get byte from Tube R2 +176236 000207 RTS PC +176240 +176240 +176240 ; OSBPUT - Put a byte to an open file +176240 ; =================================== +176240 ; On entry: R0=byte to write +176240 ; R1=handle +176240 ; On exit: R0=preserved +176240 ; R1=preserved +176240 ; +176240 ; Tube data: &10 handle byte -- &7F +176240 ; +176240 _BPUT: +176240 #ifndef NOCHNZERO +176240 005701 TST R1 ; Check handle +176242 001425 BEQ _WRCH ; BPUT#0 calls OSWRCH +176244 #endif +176244 010046 MOV R0,-(SP) ; Save R0 +176246 012700 000020 MOV #&10,R0 +176252 004767 000712 JSR PC,SEND_CMD_R1 ; Send command and handle +176256 011600 MOV (SP),R0 ; Get R0 back +176260 004767 000712 JSR PC,SEND_BYTE ; Send byte to Tube +176264 004767 177734 JSR PC,WAIT_BYTE ; Wait for acknowledgement +176270 012600 MOV (SP)+,R0 ; Restore R0 +176272 000207 RTS PC +176274 +176274 +176274 ; OSASCI - Send ASCII character +176274 ; ============================= +176274 _ASCII: +176274 022700 000015 CMP #13,R0 ; If not , send raw character +176300 001006 BNE _WRCH ; If , fall through to send NEWL +176302 +176302 +176302 ; OSNEWL - Send LF/CR sequence +176302 ; ============================ +176302 _NEWL: +176302 012700 000012 MOV #10,R0 +176306 004767 000004 JSR PC,_WRCH ; Output LF +176312 012700 000015 MOV #13,R0 ; Fall through into WRCH +176316 +176316 +176316 ; OSWRCH - Send character in R0 to Tube Register 1 +176316 ; ================================================ +176316 _WRCH: +176316 010046 MOV R0,-(SP) ; Save R0 +176320 SEND_R1LP: +176320 113700 177760 MOVB @#TUBE1S,R0 ; Read Tube R1 status +176324 042700 000277 BIC #&BF,R0 ; Check b6 of status +176330 001773 BEQ SEND_R1LP ; Loop until b6 set +176332 012600 MOV (SP)+,R0 ; Get R0 back +176334 110037 177762 MOVB R0,@#TUBE1 ; Send byte to Tube R1 +176340 000207 RTS PC +176342 +176342 +176342 ; TRAP handler +176342 ; ============ +176342 ; TRAP is used for Unix calls and is followed by a variable number of inline parameters, +176342 ; so it is impossible to simply do a null return. So, the safest option is to give the +176342 ; standard CoPro client 'unsupported' error. +176342 TRAP_HANDLER: +176342 104017 EMT 15 +176344 377 EQUB 255 +176345 102 141 144 EQUS "Bad" +176350 000 EQUB 0 +176351 000 ALIGN +176352 +176352 +176352 ; EMT handler +176352 ; =========== +176352 ; On extry, R0-R5 contain any parameters +176352 ; PSW ignored +176352 ; On exit, R0-R5 contain any returned values +176352 ; C returns any returned value +176352 ; V set if error, R0=>error block +176352 ; +176352 EMT_HANDLER: +176352 042766 177760 000002 BIC #&FFF0,2(SP) ; Clear stacked flags +176360 013746 172740 MOV @#ERRV,-(SP) ; Save old ERR handler +176364 013746 172754 MOV @#EMTV,-(SP) ; Save old EMT SP +176370 010637 172754 MOV SP,@#EMTV ; Save current EMT SP +176374 012737 176440 172740 MOV #EMT_ERROR,@#ERRV ; Catch EMT errors +176402 005746 TST -(SP) ; Make space on stack +176404 010046 MOV R0,-(SP) ; Save R0 +176406 016600 000010 MOV 8(SP),R0 ; Get return address +176412 ; MOV -2(R0),R0 ; Get EMT instruction +176412 014000 MOV -(R0),R0 ; Get EMT instruction v0.20a +176414 042700 177400 BIC #&FF00,R0 ; Get EMT number +176420 ;CMP R0,#EMTMAX +176420 ;BCC EMT_IGNORE ; Out of range +176420 060000 ADD R0,R0 ; Index into dispatch table +176422 063700 172756 ADD @#EMTADDR,R0 ; Index into dispatch table +176426 011066 000002 MOV (R0),2(SP) ; Copy address to stack +176432 012600 MOV (SP)+,R0 ; Restore R0 +176434 004736 JSR PC,@(SP)+ ; Jump to routine +176436 ; BVS EMT_ERROR ; V set, set stacked V flag +176436 102005 BVC EMT_NOERROR ; V clear, jump to check Carry +176440 EMT_ERROR: +176440 013706 172754 MOV @#EMTV,SP ; Get saved EMT SP +176444 052766 000002 000006 BIS #2,6(SP) ; Set stacked V flag +176452 EMT_NOERROR: +176452 103003 BCC EMT_EXIT ; C clear, jump to exit +176454 052766 000001 000006 BIS #1,6(SP) ; Set stacked C flag +176462 EMT_EXIT: +176462 012637 172754 MOV (SP)+,@#EMTV ; Restore old EMT SP +176466 012637 172740 MOV (SP)+,@#ERRV ; Restore old error handler +176472 000002 RTI ; Return from EMT +176474 ;EMT_IGNORE: +176474 ;MOV (SP)+,R0 ; Restore R0 +176474 ;TST (SP)+ ; Balance stack +176474 ;BR EMT_EXIT +176474 +176474 +176474 ; EMT 15 - Generate an error +176474 ; -------------------------- +176474 EMT15: +176474 ; TST (SP)+ ; Drop return to EMT handler +176474 ; MOV (SP)+,@#EMTV ; Restore old EMT SP +176474 ; MOV (SP)+,@#ERRV ; Restore mainline error handler +176474 ; MOV (SP),R0 ; Get return address pointing to inline error block +176474 ; MOV @#ERRV,(SP) ; Replace with address of error handler +176474 ; RTI ; Jump to handler, restoring PSW +176474 ; v0.20a optimisation +176474 016600 000006 MOV 6(SP),R0 ; Get return address pointing to inline error block +176500 016666 000004 000006 MOV 4(SP),6(SP) ; Replace return address with mainline error handler +176506 000207 RTS PC ; Return to EMT handler, thence to error handler +176510 +176510 +176510 ; EMT 14 - Read/Write handlers, etc. +176510 ; ---------------------------------- +176510 ; On entry: R0=0..255 to claim EMTs 0..255 +176510 ; R1=new routine address or 0 to read +176510 ; R0=&FFxx to set environment handlers +176510 ; R1=new handler address or 0 to read +176510 ; R2=new handler data address or 0 to read +176510 ; On exit: R0=preserved +176510 ; R1=old address +176510 ; R2=old handler address or preserved +176510 ; +176510 EMT14: +176510 ; So that EMT14 can change the ERRV we have to rewind out of the EMT handler and restore ERRV so that +176510 ; it can be changed. Otherwise, the EMT handler will just restore ERRV to whatever it was before. +176510 005726 TST (SP)+ ; Drop return to EMT handler +176512 012637 172754 MOV (SP)+,@#EMTV ; Restore old EMT SP +176516 012637 172740 MOV (SP)+,@#ERRV ; Restore mainline error handler +176522 010046 MOV R0,-(SP) ; Save R0 +176524 100413 BMI EMT14_HANDLER ; Negative, set up handler +176526 020027 000400 CMP R0,#EMTMAX +176532 103033 BCC EMT14_QUIT ; Out of range +176534 060000 ADD R0,R0 ; Double R0 to offset into table +176536 063700 172756 ADD @#EMTADDR,R0 ; Index into EMT dispatch table +176542 011046 MOV (R0),-(SP) ; Get old address +176544 005701 TST R1 +176546 001424 BEQ EMT14_READ ; Zero, just read +176550 010110 MOV R1,(R0) ; Store new address if non-zero +176552 000422 BR EMT14_READ +176554 +176554 EMT14_HANDLER: +176554 005100 COM R0 +176556 020027 000006 CMP R0,#HANDLEMAX +176562 103017 BCC EMT14_QUIT ; Out of range +176564 060000 ADD R0,R0 +176566 060000 ADD R0,R0 ; Times four to offset into table +176570 062700 172730 ADD #HANDLERS,R0 ; Index into handlers +176574 011046 MOV (R0),-(SP) ; Save old handler address +176576 005701 TST R1 +176600 001401 BEQ EMT14_HAND2 ; Just read old handler address +176602 010110 MOV R1,(R0) ; Store new handler address +176604 EMT14_HAND2: +176604 005720 TST (R0)+ ; DMB: Step to data address +176606 011046 MOV (R0),-(SP) ; Save old data address +176610 005702 TST R2 +176612 001401 BEQ EMT14_HAND3 ; Just read old data address +176614 010210 MOV R2,(R0) ; Store new data address +176616 EMT14_HAND3: +176616 012602 MOV (SP)+,R2 ; Get old data +176620 EMT14_READ: +176620 012601 MOV (SP)+,R1 ; Get old address +176622 EMT14_QUIT: +176622 012600 MOV (SP)+,R0 ; Restore R0 +176624 ; RTS PC +176624 000002 RTI +176626 +176626 ; EMT 13 - Misc control functions +176626 ; ------------------------------- +176626 ; On entry: R0=0 - Load BBC BASIC +176626 ; 1 - Set up default environment: IRQ/NMI, EMTs, handlers +176626 ; 2 - Set up default EMTs and handlers +176626 ; 3 - Set up default handlers only +176626 EMT13: +176626 005700 TST R0 +176630 001406 BEQ EMTXX ; R0=0 - unsupported +176632 020027 000001 CMP R0,#1 +176636 001406 BEQ INIT_ENV ; R0=1 - Set up hardware and software handlers and EMTs +176640 ; CMP R0,#2 +176640 ; BEQ INIT_HANDLES ; Set up software handlers and EMTs +176640 ; CMP R0,#3 +176640 ; BEQ INIT_HANDLES ; Set up software handlers +176640 020027 000004 CMP R0,#4 +176644 103434 BCS INIT_HANDLES ; R0=2, R0=3 - Set up software handlers +176646 ; Fall through with others, returning R0 preserved +176646 +176646 EMTXX: ; EMTs 16-255 +176646 EVENT: ; Null event handler +176646 000207 RTS PC +176650 +176650 ; EMT 0 - Exit current program +176650 ; ---------------------------- +176650 EMT0: +176650 ; JMP @#EXITV ; Jump via exit handler +176650 000177 174054 JMP @EXITV ; DMB Jump via exit handler +176654 +176654 +176654 ; Set up default system environment +176654 ; ================================= +176654 INIT_ENV: +176654 005000 CLR R0 +176656 INIT_LP1: +176656 012720 177732 MOV #NULLIRQ,(R0)+ ; Set all hardware vectors to NULLIRQ +176662 005020 CLR (R0)+ ; Allow all interupts +176664 020027 000400 CMP R0,#&100 ; Hardware vectors at at &0000-&00FF +176670 001372 BNE INIT_LP1 +176672 ; +176672 ; MOV #CLICOM,@#STACKVEC ; Could also catch Bad Stack vector +176672 ; ; There's no easy way to recover from a Bad Stack, so would have +176672 ; ; bomb out to somewhere safe. +176672 012737 176342 000034 MOV #TRAP_HANDLER,@#TRAPVEC ; Set up TRAP vector to give an error +176700 012737 176352 000030 MOV #EMT_HANDLER,@#EMTVEC ; Set up EMT vector +176706 ; CLR @#EMTVEC+2 ; EMT processor status - allow all interupts +176706 INIT_IRQ: +176706 012737 177726 000200 MOV #NMI_ACK,@#NMIVEC+0 ; Set up NMI vector +176714 012737 000340 000202 MOV #&00E0,@#NMIVEC+2 ; NMI processor status - bar all interupts +176722 012737 177252 000204 MOV #IRQ,@#IRQVEC+0 ; Set up IRQ vector +176730 012737 000300 000206 MOV #&00C0,@#IRQVEC+2 ; IRQ processor status - bar all except NMIs +176736 ; +176736 INIT_HANDLES: +176736 ; Should check R0, if R0=3 set handlers only +176736 012702 172730 MOV #HANDLERS,R2 ; R2=> Start of handlers DMB +176742 012701 177004 MOV #HANDDEFAULT,R1 ; R1=> Default handlers and EMTs +176746 012700 000044 MOV #HANDLEMAX*2+WORKSPMAX/2+16,R0 ; R0=word count of handlers (2 per handle) + workspace (counted in bytes) + core EMTs DMB +176752 013746 172774 MOV @#PROG,-(SP) ; Save PROG +176756 INIT_LP2: +176756 012122 MOV (R1)+,(R2)+ ; Set up initial settings +176760 005300 DEC R0 ; and EMT dispatch table +176762 001375 BNE INIT_LP2 +176764 012637 172774 MOV (SP)+,@#PROG ; Restore PROG +176770 ; +176770 012700 000360 MOV #EMTMAX-16,R0 ; Number of unused EMTs +176774 INIT_CLR: +176774 011122 MOV (R1),(R2)+ ; EMTs 16-255 do nothing +176776 005300 DEC R0 +177000 001375 BNE INIT_CLR +177002 INIT_DONE: +177002 000207 RTS PC ; Return with R0=0, R1,R2 corrupted +177004 +177004 ; Default settings and EMT table +177004 ; ============================== +177004 HANDDEFAULT: +177004 174074 EQUW EXITHAND ; &D8 - Default exit handler +177006 000000 EQUW 0 ; &DA - Default exit address +177010 174226 EQUW ESCHAND ; &DC - Default escape handler +177012 172777 EQUW ESCFLG ; &DE - Default escape flag +177014 174200 EQUW ERRHAND ; &E0 - Default error handler +177016 172400 EQUW ERRBLK ; &E2 - Default error buffer +177020 176646 EQUW EVENT ; &E4 - Default event handler +177022 000000 EQUW 0 ; &E6 - Unused +177024 177732 EQUW USERIRQ ; &E8 - Default unknown IRQ handler +177026 000000 EQUW 0 ; &EA - Unused +177030 000000 EQUW 0 ; &EC - Holds old SP within EMT handler +177032 173000 EQUW EMTTABLE ; &EE - Default EMT dispatch table +177034 +177034 000000 EQUW 0 ; &F0 - unused +177036 174004 EQUW BANNER ; &F2 - Line pointer +177040 000400 EQUW RAMSTART ; &F4 - Lowest user memory +177042 172400 EQUW RAMEND ; &F6 - Highest user memory +177044 000000 000000 EQUD 0 ; &F8 - Transfer address +177050 174034 EQUW STARTUP ; &FC - Default current program +177052 000 EQUB 0 ; &FE - Spare byte +177053 000 EQUB 0 ; &FF - Escape flag +177054 EMTDEFAULT: +177054 176650 EQUW EMT0 ; EMT 0 - QUIT +177056 174276 EQUW _CLI ; EMT 1 - OSCLI +177060 174760 EQUW _BYTE ; EMT 2 - OSBYTE +177062 175164 EQUW _WORD ; EMT 3 - OSWORD +177064 176316 EQUW _WRCH ; EMT 4 - OSWRCH +177066 176302 EQUW _NEWL ; EMT 5 - OSNEWL +177070 176206 EQUW _RDCH ; EMT 6 - OSRDCH +177072 175656 EQUW _FILE ; EMT 7 - OSFILE +177074 175526 EQUW _ARGS ; EMT 8 - OSARGS +177076 176170 EQUW _BGET ; EMT 9 - OSBGET +177100 176240 EQUW _BPUT ; EMT 10 - OSBPUT +177102 175762 EQUW _GBPB ; EMT 11 - OSGBPB +177104 175600 EQUW _FIND ; EMT 12 - OSFIND +177106 176626 EQUW EMT13 ; EMT 13 - System control +177110 176510 EQUW EMT14 ; EMT 14 - Set handlers +177112 176474 EQUW EMT15 ; EMT 15 - ERROR +177114 176646 EQUW EMTXX ; EMTs 16-255 - unused +177116 +177116 +177116 ; ***************** +177116 ; TUBE I/O ROUTINES +177116 ; ***************** +177116 +177116 ; Send -string at R1 to Tube Register 2 +177116 ; ========================================= +177116 SEND_STR: +177116 112100 MOVB (R1)+,R0 ; Get byte from R1, increment R1 +177120 004767 000052 JSR PC,SEND_BYTE ; Send byte via Tube R2 +177124 020027 000015 CMP R0,#13 ; Test current character +177130 001372 BNE SEND_STR ; Loop until sent +177132 000207 RTS PC +177134 +177134 +177134 ; Send block at R1 to Tube Register 2 +177134 ; =================================== +177134 SEND_BLK: +177134 060201 ADD R2,R1 ; Add length of control block to R1 +177136 SEND_BLKLP: +177136 114100 MOVB -(R1),R0 ; Decrement R1, Get byte from R1 +177140 004767 000032 JSR PC,SEND_BYTE ; Send byte via Tube R2 +177144 005302 DEC R2 ; Decrement count +177146 001373 BNE SEND_BLKLP ; Loop until all sent +177150 000207 RTS PC +177152 +177152 +177152 ; Wait for block at R1 from Tube Register 2 +177152 ; ========================================= +177152 WAIT_BLK: +177152 060201 ADD R2,R1 ; Add length of control block to R1 +177154 WAIT_BLKLP: +177154 004767 177044 JSR PC,WAIT_BYTE ; Wait for byte via Tube R2 +177160 110041 MOVB R0,-(R1) ; Decrement R1, store byte to R1 +177162 005302 DEC R2 ; Decrement count +177164 001373 BNE WAIT_BLKLP ; Loop until all received +177166 000207 RTS PC +177170 +177170 +177170 ; Send command in R0 followed by byte in R1 +177170 ; ========================================= +177170 SEND_CMD_R1: +177170 004767 000002 JSR PC,SEND_CMD ; Send command +177174 +177174 +177174 ; Send byte in R1 to Tube Register 2 +177174 ; ================================== +177174 SEND_BYTE_R1: +177174 010100 MOV R1,R0 ; Pass byte to R0 and fall through +177176 +177176 +177176 ; Send byte in R0 to Tube Register 2 +177176 ; ================================== +177176 SEND_CMD: +177176 SEND_BYTE: +177176 010046 MOV R0,-(SP) ; Save R0 +177200 SEND_BYTELP: +177200 113700 177764 MOVB @#TUBE2S,R0 ; Read Tube R2 status +177204 042700 000277 BIC #&BF,R0 ; Check b6 of status +177210 001773 BEQ SEND_BYTELP ; Loop until b6 set +177212 012600 MOV (SP)+,R0 ; Get R0 back +177214 110037 177766 MOVB R0,@#TUBE2 ; Send byte to Tube R2 +177220 000207 RTS PC +177222 +177222 +177222 ; Host->Client communication via interupts +177222 ; ======================================== +177222 Get_R1: +177222 113700 177760 MOVB @#TUBE1S,R0 ; Read Tube R1 status +177226 100375 BPL Get_R1 ; Loop until b7 set +177230 113700 177762 MOVB @#TUBE1,R0 ; Get byte from Tube R1 +177234 000207 RTS PC +177236 +177236 Get_R4: +177236 113700 177774 MOVB @#TUBE4S,R0 ; Read Tube R4 status +177242 100375 BPL Get_R4 ; Loop until b7 set +177244 113700 177776 MOVB @#TUBE4,R0 ; Get byte from Tube R4 +177250 000207 RTS PC +177252 +177252 +177252 ; Interrupt handler +177252 ; ================ +177252 ; When Host sends a byte to R1 or R4 it generates a Client IRQ. +177252 ; Within the interupt handler PSW has been saved on the stack +177252 ; and further interrupts are disabled. +177252 ; +177252 IRQ: +177252 010046 MOV R0,-(SP) ; Save R0 +177254 113700 177774 MOVB @#TUBE4S,R0 ; Read Tube R4 status +177260 100434 BMI IRQ_R4 ; If b7 set, R4 generated the interrupt +177262 113700 177760 MOVB @#TUBE1S,R0 ; Read Tube R1 status +177266 100403 BMI IRQ_R1 ; If b7 set, R1 generated the interrupt +177270 012600 MOV (SP)+,R0 ; Get R0 back +177272 ; JMP @#USERIRQV ; Something else generated the interrupt +177272 000177 173452 JMP @USERIRQV ; DMB Something else generated the interrupt +177276 +177276 ; Data present in Tube R1 generated an interrupt +177276 ; +177276 IRQ_R1: +177276 113700 177762 MOVB @#TUBE1,R0 ; Get byte from Tube R1 +177302 100420 BMI IRQ_ESCAPE ; b7 set, change Escape state +177304 ; +177304 ; R1<&80 - Host event being passed to client +177304 ; Tube data: via R1: &00 Y X A +177304 ; +177304 010146 MOV R1,-(SP) ; Save R1 +177306 010246 MOV R2,-(SP) ; Save R2 +177310 004767 177706 JSR PC,Get_R1 ; Wait for byte via Tube R1 +177314 010002 MOV R0,R2 ; Pass to R2 +177316 004767 177700 JSR PC,Get_R1 ; Wait for byte via Tube R1 +177322 010001 MOV R0,R1 ; Pass to R1 +177324 004767 177672 JSR PC,Get_R1 ; Wait for byte via Tube R1 +177330 ; JSR PC,@#EVENTV ; Call event vector +177330 004777 173410 JSR PC,@EVENTV ; DMB Call event vector +177334 012602 MOV (SP)+,R2 ; Restore R2 +177336 ; BR NMI_DONE2 ; Restore registers and return from interrupt +177336 NMI_DONE2: +177336 012601 MOV (SP)+,R1 +177340 012600 MOV (SP)+,R0 +177342 000002 RTI ; Return from interupt +177344 +177344 ; R1>&7F - Host changing Escape state +177344 ; Tube data: via R1: flag, b7=1, b6=state +177344 ; +177344 IRQ_ESCAPE: +177344 ; JSR PC,@#ESCV ; Call Escape handler +177344 004777 173364 JSR PC,@ESCV ; DMB Call Escape handler +177350 000526 BR NMI_DONE1 ; Restore and return from interrupt +177352 ; MOV (SP)+,R0 ; Restore R0 +177352 ; RTI ; Return from interupt +177352 +177352 ; Data present in Tube R4 generated an interupt +177352 ; +177352 IRQ_R4: +177352 113700 177776 MOVB @#TUBE4,R0 ; Get byte from Tube R4 +177356 100023 BPL IRQ_DATA ; b7=0, jump to do data transfer +177360 +177360 ; R4>&7F - Error occured +177360 ; Tube data: via R4: &FF, via R2: &00 err string &00 +177360 ; +177360 010146 MOV R1,-(SP) ; Remove this when errjmp done +177362 004767 176636 JSR PC,WAIT_BYTE ; Wait for an initial byte from R2 +177366 013701 172742 MOV @#ERRADDR,R1 ; Point to error buffer +177372 004767 176626 JSR PC,WAIT_BYTE +177376 110021 MOVB R0,(R1)+ ; Store error number +177400 IRQ_R4LP: +177400 004767 176620 JSR PC,WAIT_BYTE ; Wait for byte of error string +177404 110021 MOVB R0,(R1)+ ; Store in error buffer +177406 001374 BNE IRQ_R4LP ; Loop until terminating &00 received +177410 012601 MOV (SP)+,R1 ; Restore R1 +177412 012600 MOV (SP)+,R0 ; Balance stack +177414 013700 172742 MOV @#ERRADDR,R0 ; Point to error block +177420 013716 172740 MOV @#ERRV,(SP) ; Replace return address with error handler +177424 000002 RTI ; Restore PSW and jump to error handler +177426 +177426 ;; Generate an error without using EMT call +177426 ;; ---------------------------------------- +177426 ;MKERR: +177426 ; MOV (SP)+,R0 ; Point to inline error block +177426 ;; JMP @#ERRV ; Jump to error handler +177426 ; JMP @ERRV ; DMB Jump to error handler +177426 +177426 ; R4<&80 - Data transfer +177426 ; Tube data: via R4: action ID address sync, via R3: data +177426 ; +177426 IRQ_DATA: +177426 ; R0=transfer type, (sp)=mainline R0 +177426 ; +177426 010146 MOV R1,-(SP) ; Save R1 +177430 010001 MOV R0,R1 ; Save transfer type in R2 +177432 004767 177600 JSR PC,Get_R4 ; Wait for caller ID +177436 020127 000005 CMP R1,#5 ; Is transfer 'release'? +177442 001735 BEQ NMI_DONE2 ; Exit if 'release' +177444 004767 177566 JSR PC,Get_R4 ; Get data address byte 4 +177450 110037 172773 MOVB R0,@#ADDR+3 +177454 004767 177556 JSR PC,Get_R4 ; Get data address byte 3 +177460 110037 172772 MOVB R0,@#ADDR+2 +177464 004767 177546 JSR PC,Get_R4 ; Get data address byte 2 +177470 110037 172771 MOVB R0,@#ADDR+1 +177474 004767 177536 JSR PC,Get_R4 ; Get data address byte 1 +177500 110037 172770 MOVB R0,@#ADDR+0 +177504 113700 177772 MOVB @#TUBE3,R0 ; Clear Tube3 FIFO +177510 113700 177772 MOVB @#TUBE3,R0 +177514 004767 177516 JSR PC,Get_R4 ; Get sync byte +177520 060101 ADD R1,R1 ; Index into NMI dispatch table +177522 016137 177734 000200 MOV NMIADDRS(R1),@#NMIVEC ; Set up NMI vector +177530 013700 172770 MOV @#ADDR,R0 ; Get transfer address +177534 020127 000014 CMP R1,#12 ; check transfer type +177540 103676 BCS NMI_DONE2 ; Jump to exit if not 256-byte transfers +177542 001412 BEQ NMI6 ; Jump with 256-byte write +177544 +177544 ; Transfer 7 - Read 256 bytes from Host via R3 +177544 ; -------------------------------------------- +177544 NMI7: +177544 012701 000400 MOV #256,R1 ; Prepare to transfer 256 bytes +177550 NMI7_LOOP: +177550 105737 177770 TSTB @#TUBE3S +177554 100375 BPL NMI7_LOOP ; Wait for Tube R3 ready +177556 113720 177772 MOVB @#TUBE3,(R0)+ ; Fetch byte from Tube R3 and store +177562 005301 DEC R1 ; Decrement count +177564 001371 BNE NMI7_LOOP ; Loop for 256 bytes +177566 000416 BR NMI_DONE +177570 +177570 ; Transfer 6 - Send 256 bytes to Host via R3 +177570 ; ------------------------------------------ +177570 NMI6: +177570 012701 000400 MOV #256,R1 ; Prepare to transfer 256 bytes +177574 NMI6_LOOP: +177574 105737 177770 TSTB @#TUBE3S +177600 100375 BPL NMI6_LOOP ; Wait for Tube R3 ready +177602 112037 177772 MOVB (R0)+,@#TUBE3 ; Fetch byte and send to Tube R3 +177606 005301 DEC R1 ; Decrement count +177610 001371 BNE NMI6_LOOP ; Loop for 256 bytes +177612 NMI6_DONE: +177612 105737 177770 TSTB @#TUBE3S +177616 100375 BPL NMI6_DONE ; Wait for Tube R3 ready again +177620 105037 177772 CLRB @#TUBE3 ; Send final sync byte +177624 NMI_DONE: +177624 012601 MOV (SP)+,R1 ; Restore and return +177626 NMI_DONE1: +177626 010037 172770 MOV R0,@#ADDR ; Save updated transfer address +177632 012600 MOV (SP)+,R0 +177634 000002 RTI +177636 +177636 +177636 ; Transfer 3 - Read double bytes from host +177636 ; ---------------------------------------- +177636 NMI3: +177636 010046 MOV R0,-(SP) +177640 013700 172770 MOV @#ADDR,R0 ; Get transfer address +177644 113720 177772 MOVB @#TUBE3,(R0)+ ; Read two bytes +177650 113720 177772 MOVB @#TUBE3,(R0)+ +177654 000764 BR NMI_DONE1 +177656 +177656 ; Transfer 2 - Send double bytes to host +177656 ; -------------------------------------- +177656 NMI2: +177656 010046 MOV R0,-(SP) +177660 013700 172770 MOV @#ADDR,R0 ; Get transfer address +177664 112037 177772 MOVB (R0)+,@#TUBE3 ; Send two bytes +177670 112037 177772 MOVB (R0)+,@#TUBE3 +177674 000754 BR NMI_DONE1 +177676 +177676 ; Transfer 1 - Read single byte from host +177676 ; --------------------------------------- +177676 NMI1: +177676 010046 MOV R0,-(SP) +177700 013700 172770 MOV @#ADDR,R0 ; Get transfer address +177704 113720 177772 MOVB @#TUBE3,(R0)+ ; Transfer byte from Tube +177710 000746 BR NMI_DONE1 +177712 +177712 ; Transfer 0 - Send single byte to Host +177712 ; ------------------------------------- +177712 NMI0: +177712 010046 MOV R0,-(SP) +177714 013700 172770 MOV @#ADDR,R0 ; Get transfer address +177720 112037 177772 MOVB (R0)+,@#TUBE3 ; Transfer byte to Tube +177724 000740 BR NMI_DONE1 +177726 ;NMI_DONE1: +177726 ; MOV (SP)+,R0 +177726 ; RTI +177726 +177726 ; Transfers 4,5,6,7 - Just acknowledge NMI +177726 ; ---------------------------------------- +177726 NMI_ACK: +177726 105037 177772 CLRB @#TUBE3 ; Store to Tube R3 to acknowledge NMI +177732 USERIRQ: ; Default unknown IRQ handler +177732 NULLIRQ: ; Default unused hardware vector handler +177732 000002 RTI +177734 +177734 ; NMI transfer dispatch table +177734 ; --------------------------- +177734 NMIADDRS: +177734 177712 EQUW NMI0 ; Single byte to host +177736 177676 EQUW NMI1 ; Single byte from host +177740 177656 EQUW NMI2 ; Double byte to host +177742 177636 EQUW NMI3 ; Double byte from host +177744 177726 EQUW NMI_ACK ; Execute +177746 177726 EQUW NMI_ACK ; Release +177750 177726 EQUW NMI_ACK ; 256 bytes to host +177752 177726 EQUW NMI_ACK ; 256 bytes from host +177754 +177754 000 000 000 000 EQUM TUBEIO-$ ; Spare space +177760 +177760 ; Tube I/O registers +177760 ; ------------------ +177760 000000 000000 000000 000000 + 000000 000000 000000 000000 EQUW 0,0,0,0,0,0,0,0 ; Tube registers +200000 +Errors: 0 diff --git a/client/pdp11/021/Client11.pdp b/client/pdp11/021/Client11.pdp new file mode 100644 index 0000000000000000000000000000000000000000..f03dcd4f302ef680d92daa54dfd562fbe5266403 GIT binary patch literal 2048 zcmZ8iU2GIp6h8OP?9$mEm~QvFpd}q5Y=9WTkM@aRS*Rh3O+y4;j4Xk!JPA=Eh6k7_ zu+vaOHl$&BK+(hy;scQvV~D}Ki;~C#0Zot)wS;J62ofMWoozeY@w-#7#@*a=@AO&xMZi&<(YcK z^?5@ReS7y?GnL)7clQ7tpuXuLmN(^a(vd<%bWpcD6!nddIWt$YoHawXMI9l(4U|?S|0MZxE!!U-`I@UDCDL@c70=A#Ib&ZNl_-5Vx12g z1+yOI)D|wu7Mqq(HV zn8B2+&0JuS$$)sft<44!5{PNHRvX|{kI>z%NiheqevN?B*EQdGo2h#zU94Ihvdyf$ zGMLC&X`0}5VC}|^SVf5-W2)R{Vz8t)-YvNin?@PP%s@)eNiL5Y>xmrq%%~U(r%{mcsNF! zKRzC($H!yzH-9`Fr~CYKx>#XU2jz4tIVe=8p|g`QWOXjiYcP$eygq>+om5_BwGp;# zSsf3RodD8gbjxc@;p7_ZehniWElE?H&(sS$5j`xck3!k|9ZhMr=&C${hj~L`Vdrk5 zadaxDvD{s6Ecd`W+y1~C6;=yeGH==o+lb~X3aXoNV#C5j%Pnw&Up8IBDha ztqk*7f!*S+2aAPq`g)-bnTwk}ljqH(le37upl}Oc`AjXD)i#+K)&qpZX&&SX(YGTF zgXTsupQ$IAHe{+d%Es#i6resh4OFL2*QLYsQj-!l#GTND7h;oqRNMRvpQBX-`pyRfBx2L68jGG7EmaN1(qFzNQ9?_PJ;#^t_sGVwtp4}wxT#M*V zNa{CEq&JC?r129wyBST&w?jY_SC7?rq!m8LDyXWjYA35fw4TOV*#=>!qx70% zi^H_sS5~H@z5@6j;r;Oq8LAiPQWzR-{9cn|X=<`U)!%3-D@(8V{cGN;mc&-Cd@0 wasn't fetching block lengths correctly. EMT 14 wrote +; wrong 'address' if not passed 'handler'. ESCHAND should use @ESCADDR. +; HANDLERS equate had wrong arithmetic. +; JGH: INIT_ENV correctly initialises EMTs 0-15 and nulls 16-255 instead of +; setting 16-31 to garbage and missing 240-255 completely. EQUs used to allow +; more handlers to be added easily. +; v0.19a 11-Aug-2015 JGH: Crunched some blocks of common code. +; v0.19b 11-Aug-2015 JGH: Crunched NMI data transfer code. +; v0.19c 12-Aug-2015 JGH: STARTUP uses internal stack. MEMBOT and MEMTOP fetched from variables. All +; unused hardware vectors set to NULLIRQ. +; v0.19d 13-Aug-2015 JGH: Tidied up and optimised EXECUTE, OSCLI saves all registers, uses internal +; stack. EMT14 optimised. +; v0.19e 16-Aug-2015 JGH: TRAP jumps to error, EMT 15 used instead of MKERR. +; v0.19f 16-Aug-2015 DMB: Bugfix: INIT_ENV was looping forever, wrong number of WORKSPACE words initialised +; starting from wrong workspace offset, TRAP vector was wrong. Wrong address +; mode in MOV @#COM_BLK,R0 in CLICOM. +; v0.19g 16-Aug-2015 BMB: All NMIs were failing to update ADDR by returning via wrong exit. +VERSION: EQU &0020 +; v0.20 17-Aug-2015 JGH: EXECUTE possibly not working when entering BASIC. +; v0.20a 18-Aug-2015 DMB: Bugfix: EMT handler lost R0, EMT14 restored ERRV even after attempts to change it. +; Optimised EMT15 to free up space to fit EMT14 bugfix. +; v0.20b 18-Aug-2015 DMB: Bugfix: EMT15 optimisation used EMTHANDLER ERRV instead of mainline ERRV. +VERSION: EQU &0021 +; v0.21 19-Aug-2015 JGH: Incremented to version 0.21. Added conditional switch to remove BPUT/BGET/GBPB to +; channel 0, saves about 100 bytes if removed. +; +; +; This code may be freely reused. +; +; This code assumes a single memory space and assumes that code can access I/O devices, low memory +; vectors and user memory with ordinary MOV instructions. This will work with no seperate +; Kernal/User space, or with code never running in User mode. + +; Some naming conventions +; xxxxVEC - hardware vectors, eg EMTVEC, NMIVEC, etc +; xxxxV - software vectors, eg ESCV, ERRV, etc. +; xxxx or xxxHAND - handler for xxxx, eg ESCHAND, ERRHAND, etc. +; OSxxx or _xxx - routines handled by xxx, eg OSFILE handled by _FILE + +; Memory map: +; +-----------------------+ 0000 +; | Hardware vectors, etc | +; MEMBOT +-----------------------+ 0100 +; | | +; | | +; MEMTOP | ^^^User Stack^^^ | +; WORKSP +-----------------------+ F500 +; | ERRBLK--> <--CLISTK | +; +-----------------------+ F530 +; | CLIBUF--> <--ERRSTK | +; HANDLERS +-----------------------+ +; | EXITV EXITADDR | F5D8 +; | ESCV ESCADDR | F5DC +; | ERRV ERRADDR | F5E0 +; | EVENTV EVENTADDR | F5E4 +; | USERIRQV USERIRQADDR | F5E8 +; | EMTV EMTADDR | F5EC +; | SPARE LPTR | F5F0 +; | MEMBOT MEMTOP | F5F4 +; ADDR | Transfer address | F5F8 +; PROG | Current program | F5FC +; PROG+2 | unused byte | F5FE +; ESCFLG | Escape flag | F5FF +; EMTTABLE +-----------------------+ +; | EMT 0 code address | F600 +; | EMT 1 code address | F602 +; | EMT 2 code address | F604 +; | EMT 3 code address | F606 +; | EMT 4 code address | F608 +; | ... | +; | EMT 255 code address | F7FE +; START +-----------------------+ F800 +; | Tube client code | +; +-----------------------+ FFF0 +; | Tube I/O registers | +; +-----------------------+ FFFF + + +; PDP-11 hardware addresses +; ========================= +STACKVEC: EQU &04 ; Stack too low +EMTVEC: EQU &18 ; Vector called by EMT call +TRAPVEC: EQU &1C ; Vector called by TRAP call DMB + + +; Tube client system configuration tweekables +; =========================================== +START: EQU &F800 ; Start of code +TUBEIO: EQU &FFF0 ; Base of Tube I/O registers +NMIVEC: EQU &80 ; Vector called by Tube NMIs with priority 7 +IRQVEC: EQU &84 ; Vector called by Tube IRQs with priority 6 + +EMTMAX: EQU 256 ; Number of EMTs +EMTTABLE: EQU START-EMTMAX*2 ; EMT dispatch table +WORKSP: EQU EMTTABLE-256 ; 256 bytes for buffers, etc +RAMSTART: EQU &0100 ; Lowest available user memory address +RAMEND: EQU WORKSP ; Highest available user memory address + +;NOCHNZERO: EQU 1 ; Remove bput/bget#0 -> wrch/rdch, saves about 100 bytes + + +; Internal buffers, etc +; ===================== +ERRBLK: EQU WORKSP ; Buffer to store host error block +CLIBUF: EQU WORKSP+&30 ; Space to enter command line from CLI prompt +CLISTK: EQU CLIBUF ; Internal stack for CLI commands + ; as main memory may be overwritten +CLIEND: EQU HANDLERS +ERRSTK: EQU CLIEND ; Internal stack for host errors + +WORKSPMAX: EQU 16 ; 16 bytes of general workspace +HANDLEMAX: EQU 6 ; 6 environment handlers +HANDLERS: EQU WORKSP+256-WORKSPMAX-4*HANDLEMAX ; Address of environment handlers +EXITV: EQU HANDLERS+&00 ; Address of exit handler +EXITADDR: EQU HANDLERS+&02 ; unused +ESCV: EQU HANDLERS+&04 ; Address of escape handler +ESCADDR: EQU HANDLERS+&06 ; Address of escape flag +ERRV: EQU HANDLERS+&08 ; Address of error handler +ERRADDR: EQU HANDLERS+&0A ; Address of error buffer +EVENTV: EQU HANDLERS+&0C ; Address of event handler +EVENTADDR: EQU HANDLERS+&0E ; unused +USERIRQV: EQU HANDLERS+&10 ; Address of unknown IRQ handler +USERIRQADDR: EQU HANDLERS+&12 ; unused +EMTV: EQU HANDLERS+&14 ; Old SP within EMT handler +EMTADDR: EQU HANDLERS+&16 ; Address of EMT dispatch table + +SPARE: EQU WORKSP+&F0 ; unused +LPTR: EQU WORKSP+&F2 ; Point to command line (unused) +MEMBOT: EQU WORKSP+&F4 ; Lowest user memory address +MEMTOP: EQU WORKSP+&F6 ; Highest user memory address +ADDR: EQU WORKSP+&F8 ; Transfer address +PROG: EQU WORKSP+&FC ; Current program +PROG2: EQU WORKSP+&FE ; unused +ESCFLG: EQU WORKSP+&FF ; Escape flag + + +; Tube I/O devices +; ================ +TUBE1S: EQU TUBEIO+0 ; Tube Status 1 +TUBE1: EQU TUBEIO+2 ; Tube Data 1 - VDU +TUBE2S: EQU TUBEIO+4 ; Tube Status 2 +TUBE2: EQU TUBEIO+6 ; Tube Data 2 - Command +TUBE3S: EQU TUBEIO+8 ; Tube Status 3 +TUBE3: EQU TUBEIO+10 ; Tube Data 3 - Data +TUBE4S: EQU TUBEIO+12 ; Tube Status 4 +TUBE4: EQU TUBEIO+14 ; Tube Data 4 - Interrupt + + +; Code Entry +; ========== +; Set up vectors, hardware, memory, etc. +; Must be entered in Kernel mode. + ORG START + JMP STARTUP ; Jump to start up Tube code + + +; STARTUP +; ======= +; Tube data: via R1: string &00 -- via R2: &7F or &80 +; +BANNER: + EQUB 13 + EQUS "PDP11 TUBE 64K " + EQUB ((VERSION >> 8) AND 15)+48 + EQUS "." + EQUB ((VERSION >> 4) AND 15)+48 + EQUB (VERSION AND 15)+48 +#ifdef TESTBUILD + EQUB 96+TESTBUILD +#endif + EQUB 13 + EQUB 13 + EQUB 0 + ALIGN +STARTUP: + MOV #CLISTK,SP ; Use internal stack + JSR PC,INIT_ENV ; Set up default handlers, preserving PROG + MOV @#PROG,@#ADDR ; Set current program as default entry address + MOV #BANNER,R1 ; Point to startup banner + JSR PC,SEND_TXT ; Print it via Tube WRCH protocol + ;CLR R0 ; SEND_TXT returns R0=0 + JSR PC,_WRCH ; Send terminating zero byte + CLC ; Clear Carry Flag to indicate Reset + JSR PC,CLI_WAIT ; Wait for and check result byte + ; Fall through to CLICOM if nothing executed + +; Supervisor Command line prompt +; ============================== +; Allow user to enter *commands. +; We deliberately call _WORD and _CLI so if EMTs vectors are trashed we can still access MOS and so +; that errors go via ERRV instead of us having to check returned V flag. +; We will normally be running in Kernal mode so we can see the system vectors and high memory. +; +CLICOM: +EXITHAND: + MOV @#MEMTOP,SP ; Put stack at top of user memory + MOV #3,R0 + JSR PC,INIT_IRQ ; Initialise IRQ/NMI and environment handlers +CLILOOP: + MOV #PROMPT,R1 + JSR PC,SEND_TXT ; Display prompt + ;CLR R0 ; SEND_TXT returns R0=0 + ;MOV #COM_BLK,R1 ; Point to control block, SENT_TXT returns R1=COM_BLK + JSR PC,_WORD ; Read a line of text + BCS COM_ESC ; Escape pressed + MOV @#COM_BLK,R0 ; Get address of input buffer DMB + JSR PC,_CLI ; Execute command + BR CLILOOP ; Loop back for another line +PROMPT: + EQUS "PDP11>*" ; Command prompt + EQUB 0 + ALIGN +; +COM_BLK: + EQUW CLIBUF ; Input buffer + EQUB CLIEND-CLIBUF ; Buffer length + EQUB 32 ; Lowest acceptable char + EQUB 255 ; Highest acceptable char + ALIGN +; +COM_ESC: + MOV #126,R0 + JSR PC,_BYTE ; Acknowledge Escape +; JSR PC,MKERR + EMT 15 + EQUB 17,"Escape",0 + ALIGN + +; Default error handler +; --------------------- +; On entry, R0=>error block +ERRHAND: + MOV @#MEMTOP,SP ; Reset stack to top of user memory + MOV R0,R1 ; Point R1=>error block + INC R1 ; Step past error number + JSR PC,_NEWL ; Print a newline + JSR PC,SEND_TXT ; Print error message + JSR PC,_NEWL ; Print another newline + BR CLICOM + +; Default escape handler +; ---------------------- +ESCHAND: + ADD R0,R0 ; Move b6 into b7 + MOVB R0,@ESCADDR ; Store Escape flag + RTS PC + + +; Fetch word from unaligned R1 to R1 +; ================================== +; Unaligned version of MOV (R1),R1, corrupts R0 +; FETCHWORD2 - R1=>word+2 +; FETCHWORD - R1=>word +; +FETCHWORD2: + SUB #2,R1 ; Step back to point to word +FETCHWORD: + MOVB (R1)+,R0 ; Fetch low byte + BIC #&FF00,R0 ; Ensure 8-bit value + MOVB (R1),R1 ; Fetch high byte + BIC #&FF00,R1 ; Ensure 8-bit word + SWAB R1 ; Swap high byte to top of register + BIS R0,R1 ; Merge together + RTS PC + + +; Print zero-terminated text string at R1 +; ======================================= +SEND_TXTLP: + JSR PC,_ASCII ; Send to WRCH via Tube R1 +SEND_TXT: + MOVB (R1)+,R0 ; Get byte from R1, increment R1 + BNE SEND_TXTLP ; Loop until &00 byte + RTS PC + + +; ************* +; MOS INTERFACE +; ************* + +; OSCLI - Send command line to host +; ================================= +; On entry: R0=>command string +; On exit: R0=return value +; +; Tube data: &02 string &0D -- &7F or &80 +; +_CLI: + MOV R1,-(SP) ; Save registers + MOV R2,-(SP) + MOV R3,-(SP) + MOV R4,-(SP) + MOV R5,-(SP) + +; As a *command may result in data transfer, that data may end up overwriting stack in user memory, +; so use a temporary stack to do OSCLI. If OSCLI ends up jumping to a new process, a new stack will +; be set up by that new process. If we are already using the internal stack we continue using it +; so that transient OSCLIs can call more OSCLIs. + + MOV SP,R5 ; Copy stack pointer so we can stack it + CMP R5,#WORKSP ; Check where the stack is + BCC CLI_SYSSTK ; We're already using internal stack + MOV #CLISTK,SP ; Use internal stack +CLI_SYSSTK: + MOV R5,-(SP) ; Save caller's stack pointer + MOV @#PROG,-(SP) ; Save current program as top item on stack + JSR PC,CLI_GO ; Do the OSCLI call + MOV (SP)+,@#PROG ; Restore current program + MOV (SP),SP ; Restore caller's stack pointer + MOV (SP)+,R5 ; Restore registers + MOV (SP)+,R4 + MOV (SP)+,R3 + MOV (SP)+,R2 + MOV (SP)+,R1 + CLR R0 ; Return R0=0 from OSCLI +CLI_DONE: + RTS PC + +CLI_GO: + MOV R0,R1 ; R1=pointer to command string + MOV #2,R0 + JSR PC,SEND_CMD ; Send command &02 - OSCLI + JSR PC,SEND_STR ; Send command string at R1 +CLI_WAIT1: + SEC ; Set Carry to indicate OSCLI +CLI_WAIT: + JSR PC,WAIT_BYTE ; Wait for result via Tube R2 (preserves Cy) + ; WAIT_BYTE returns flags set from R0 + BPL CLI_DONE ; No code to be executed + ; Fall through into EXECUTE + + +; EXECUTE - Enter code at ADDR +; ============================ +; Checks for possible code header, makes code current PROGRAM. +; On entry, ADDRESS=code entry address +; CC=entering from RESET +; CS=entering from OSCLI/OSBYTE +; +; Caller should preserve registers before calling here. +; +EXECUTE: + MOV #0,R0 ; R0=0 - prepare for raw code + ROL R0 ; Save RESET/OSCLI flag in Carry in R0 + MOV @#ADDR,R1 ; Get transfer address + MOV R1,-(SP) ; Save entry address + MOVB 7(R1),R2 ; Get copyright offset + BIC #&FF00,R2 ; Ensure 8-bit value + ADD R2,R1 ; R1=>copyright string + TSTB (R1)+ ; Check for copyright string + BNE EXEC_NOTROM + CMPB (R1)+,#ASC"(" + BNE EXEC_NOTROM + CMPB (R1)+,#ASC"C" + BNE EXEC_NOTROM + CMPB (R1)+,#ASC")" + BNE EXEC_NOTROM + MOV (SP),R1 ; Get entry address back + MOVB 6(R1),R2 ; Get ROM type + BIT #&40,R2 ; DMB: BIT, not TST + BEQ EXEC_NOTLANG + BIC #&FFF0,R2 ; Mask out non-CPU bits + CMP R2,#&07 + BNE EXEC_NOTPDP + MOVB 6(R1),R2 ; Get ROM type again + BIT #&20,R2 ; Does Tube transfer address exist? DMB: BIT, not TST + BEQ EXEC_ROM ; No, use stacked entry address + MOVB 7(R1),R2 ; Get copyright offset + BIC #&FF00,R2 ; Ensure 8-bit value + ADD R2,R1 ; Point to copyright message + INC R1 ; Step past first zero byte +EXEC_SKIP: + TSTB (R1)+ ; Find terminating zero byte + BNE EXEC_SKIP + ADD #4,R1 ; Step past transfer address + JSR PC,FETCHWORD ; R1=offset from start address + ADD (SP)+,R1 ; Add start entry to offset, R1 is now entry address + MOV R1,-(SP) ; Push it back +EXEC_ROM: + BIS #2,R0 ; R0.1=1 to indicate code with header (will become R1=1) + ; See if a Unix header also exists +; +EXEC_NOTROM: + MOV (SP)+,R1 ; Get entry address back + BIC #1,R1 ; Ensure word aligned + MOV (R1),R2 ; Get magic number + CMP R2,#&105 ; &o0405 - overlay + BCS EXEC_CODE ; &o0407 - normal + CMP R2,#&109 ; &o0410 - read-only text + BCC EXEC_CODE ; &o0411 - seperated I&D + TST (R1)+ ; Step to next entry + MOV (R1)+,R3 ; Size of text + MOV (R1)+,R4 ; Size of initialised data + ADD R4,R3 ; Size of program + MOV (R1)+,R4 ; Size of uninitialised data + MOV @#MEMBOT,R2 ; Destination address + ADD #8,R1 ; Set past other fields to start of code + +; R1=source +; R2=dest +; R3=size of code+data +; R4=size to be zeroed + + ASR R3 ; Divide by two to get size in words +EXEC_COPY: + MOV (R1)+,(R2)+ ; Copy program to MEMBOT + DEC R3 ; Decrement number of words to copy + BNE EXEC_COPY + ASR R4 ; Divide by two to get size in words + BEQ EXEC_ENTER ; No uninitialised data to clear +EXEC_ZERO: + CLR (R2)+ ; Zero uninitialised data + DEC R4 ; Decrement number of words to clear + BNE EXEC_ZERO +EXEC_ENTER: + BIC #&FFFE,R0 ; Prepare R0=0 for code without a ROM header + MOV @#MEMBOT,R1 ; Entry address + ; Build an empty stack frame + CLR -(SP) ; argv[1]=0 + CLR -(SP) ; argv[0]=0 + CLR -(SP) ; argn=0 + +EXEC_CODE: + MOV #&0BBC,R5 ; R5=&0BBC to indicate BBC EMTs available + ASR R0 ; R0=0/1 for raw/header, Cy=RESET/OSCLI + MOV R1,@#PROG ; Set as current program + MOV R1,-(SP) ; Stack destination address + MOV #BANNER,R1 ; R1=> for no command line + RTS PC ; Jump to code via RTS + +EXEC_NOTLANG: +; ASR R0 +; BCC EXEC_CLICOM ; Entered from RESET, drop into CLICOM +;; JSR PC,MKERR +; EMT 15 +; EQUB 249,"This is not a language",0 +; ALIGN +; +EXEC_NOTPDP: + ASR R0 + BCC EXEC_CLICOM ; Entered from RESET, drop into CLICOM + MOV #3,R0 + JSR PC,INIT_HANDLES ; Connect to default error handler +; JSR PC,MKERR + EMT 15 + EQUB 249,"Not PDP11 code",0 + ALIGN + +EXEC_CLICOM: + JMP CLICOM ; Drop into Supervisor command prompt + + +; OSBYTE +; ====== +; On entry: R0,R1,R2=OSBYTE parameters +; On exit: R0 preserved +; If R0<&80, R1=returned value +; If R0>&7F, R1, R2, Carry=returned values +; +; Tube data: &04 X A -- X +; &06 X Y A -- Cy Y X +; +BYTE_WAIT: + BR CLI_WAIT1 ; Jump to wait for ack. from OSCLI/OSBYTE +_BYTE: + MOV R0,-(SP) ; Save R0 + TSTB R0 + BMI BYTE_HI ; Jump with high OSBYTEs + MOV #4,R0 + JSR PC,SEND_CMD_R1 ; Send command and second parameter + MOV (SP),R0 ; Get first parameter from top of stack + JSR PC,SEND_BYTE ; Send first parameter + JSR PC,WAIT_BYTE ; Wait for response + MOV R0,R1 ; Pass to R1 + BR BYTE_DONE +; MOV (SP)+,R0 ; Restore R0 +; RTS PC + +; OSBYTE >&7F +; ----------- +BYTE_HI: +; CMP R0,#&82 +; BEQ MEM82 ; Fetch address high word +; CMP R0,#&83 +; BEQ MEM83 ; Fetch low memory limit +; CMP R0,#&84 +; BEQ MEM84 ; Fetch high memory limit +; + CMP R0,#&82 + BCS BYTE_HI1 ; Not a memory OSBYTE + BEQ MEM82 ; Fetch address high word + CMP R0,#&85 + BCS MEM83 ; Fetch low/high memory limit +BYTE_HI1: + MOV #6,R0 + JSR PC,SEND_CMD_R1 ; Send command and second parameter + MOV R2,R0 + JSR PC,SEND_BYTE ; Send third parameter + MOV (SP)+,R0 ; Get first parameter from stack + JSR PC,SEND_BYTE ; Send first parameter + CMP R0,#&9D ; Was it Fast BPut? + BEQ BYTE_DONE1 ; Don't wait for response + CMP R0,#&8E ; Was it language startup? + BEQ BYTE_WAIT ; Wait for program startup + MOV R0,-(SP) ; Save R0 again + JSR PC,WAIT_BYTE ; Wait for response + ADD #&FF80,R0 ; Copy b7 into Carry + JSR PC,WAIT_BYTE ; Wait for response + BIC #&FF00,R0 ; Ensure 8-bit value + MOV R0,R2 ; Pass to R2 + SWAB R0 + MOV R0,R1 ; Pass to R1 as b8-b15 of result + JSR PC,WAIT_BYTE ; Wait for response + BIC #&FF00,R0 ; Ensure 8-bit value + BIS R0,R1 ; Merge with b8-b15 set from R2 + BR BYTE_DONE +;BYTE_DONE: +; MOV (SP)+,R0 ; Restore R0 +; RTS PC + +; Read memory locations +; --------------------- +MEM82: + MOV #&86,R0 ; Point to ADDR+2 +MEM83: +MEM84: + ASL R0 ; A=&0106,&0108,&010C + MOV MEMBOT-&106(R0),R1 ; Fetch address value + MOV R1,R2 ; R2=R1 DIV 256 + SWAB R2 + BIC #&FF00,R2 +BYTE_DONE: + MOV (SP)+,R0 ; Restore R0 +BYTE_DONE1: + RTS PC + + +; OSWORD +; ====== +; On entry: R0=OSWORD number +; R1=>control block +; +_WORD: + TST R0 + BEQ RDLINE ; OSWORD 0, jump to read line +; +; OSWORD <>&00 +; ------------ +; Tube data: &08 function in_length block out_length -- block +; + MOV R3,-(SP) ; Save R3 + MOV R2,-(SP) ; Save R2 + MOV R0,-(SP) ; Save R0 + MOV #8,R0 + JSR PC,SEND_CMD ; Send command &08 - OSWORD + MOV (SP),R0 ; Get R0 back + JSR PC,SEND_BYTE ; Send OSWORD number + TSTB R0 ; Check OSWORD number + BPL WORDLO ; <&80, calculate control block sizes + MOVB (R1)+,R2 ; Get transmit size from control block DMB: should be R1 + MOVB (R1),R3 ; Get receive size from control block DMB: should be R1 + BR WORDGO ; Jump to send OSWORD command +WORDLO: + MOV #&10,R2 ; OSWORD &15-&7F uses 16 bytes both ways + MOV #&10,R3 + CMP R0,#&15 ; OSWORD &01-&7F use fixed control block sizes + BCC WORDGO ; OSWORD &15-&7F, jump to send OSWORD command + ADD R0,R0 ; Double R0 to index into table + ADD #WORD_TABLE-2,R0 ; Point to table entry DMB: #WORD_TABLE + MOVB (R0)+,R2 ; Fetch send length + MOVB (R0),R3 ; Fetch receive length +WORDGO: + MOV R2,R0 ; Get transmit block length + JSR PC,SEND_BYTE ; Send transmit block length + ADD R2,R1 ; Point to past end of control block + DEC R2 ; Convert 0 to -1 + CMP R2,#&80 ; Check length of transmit block + BCC WORD_NOTX ; Transmit block=0 or >&80, send nothing +WORD_TX: + MOVB -(R1),R0 ; Get byte from control block + JSR PC,SEND_BYTE ; Send byte to Tube R2 + DEC R2 + BPL WORD_TX ; Loop to send control block +WORD_NOTX: + MOV R3,R0 ; Get recive block length + JSR PC,SEND_BYTE ; Send receive block length + ADD R3,R1 ; Point past end of control block + DEC R3 ; Convert 0 to -1 + CMP R3,#&80 ; Check length of received block + BCC WORD_NORX ; Receive block=0 or >&80, receive nothing +WORD_RX: + JSR PC,WAIT_BYTE ; Get byte from Tube R2 + MOVB R0,-(R1) ; Store byte in control block + DEC R3 + BPL WORD_RX ; Loop to receive control block +WORD_NORX: + MOV (SP)+,R0 ; Restore registers + MOV (SP)+,R2 + MOV (SP)+,R3 + RTS PC +; +; Table of OSWORD control block lengths for &01-&14 +; ------------------------------------------------- +; low byte=send length, high byte=recive length +WORD_TABLE: + EQUW &0500 ; &01 =TIME + EQUW &0005 ; &02 TIME= + EQUW &0500 ; &03 =TIMER + EQUW &0005 ; &04 TIMER= + EQUW &0504 ; &05 =MEM + EQUW &0005 ; &06 MEM= + EQUW &0008 ; &07 SOUND + EQUW &000E ; &08 ENVELOPE + EQUW &0504 ; &09 =POINT + EQUW &0901 ; &0A Read bitmap + EQUW &0501 ; &0B Read palette + EQUW &0005 ; &0C Write palette + EQUW &0800 ; &0D Read graphics coords + EQUW &1910 ; &0E =TIME$ + EQUW &0020 ; &0F TIME$= + EQUW &0110 ; &10 Net_Tx + EQUW &0D0D ; &11 Net_Rx + EQUW &8000 ; &12 Net_Params + EQUW &0808 ; &13 Net_Info + EQUW &8080 ; &14 NetFS_Op + + +; Read a line of text +; ------------------- +; Tube data: &0A block -- &FF or &7F string &0D +; +RDLINE: + MOV #10,R0 + JSR PC,SEND_CMD ; Send command &0A - RDLINE + ADD #2,R1 + MOV #3,R2 + JSR PC,SEND_BLK ; Send 3-byte control block + MOV #7,R0 + JSR PC,SEND_BYTE ; Send &0700 + CLR R0 + JSR PC,SEND_BYTE + JSR PC,WAIT_BYTE ; Wait for response + ADD #&FF80,R0 ; Copy b7 into Carry + BCS RD_DONE + JSR PC,FETCHWORD2 ; Get address to store text, allowing for nonalignment + CLR R2 ; Clear count of received bytes +RD_STR: + JSR PC,WAIT_BYTE ; Wait for byte from Tube R2 + MOVB R0,(R1)+ ; Store it + INC R2 ; Increment number of bytes + CMP R0,#13 ; Check current byte + BNE RD_STR ; Loop until and Clear Carry + DEC R2 ; R2 is length of string +RD_DONE: + RTS PC + + +; OSARGS - Read info on open file or filing system +; ================================================ +; On entry: R0=function +; R1=handle +; R2=>control block +; On exit: R0=returned value +; R1 preserved +; R2 preserved +; +; Tube Data: &0C handle block function -- result block +; +_ARGS: + MOV R2,-(SP) ; Save control block pointer + MOV R1,-(SP) ; Save handle + MOV R0,-(SP) ; Save function + MOV #&0C,R0 + JSR PC,SEND_CMD_R1 ; Send command and handle + MOV R2,R1 + MOV #4,R2 + JSR PC,SEND_BLK ; Send four-byte control block + MOV (SP)+,R0 + JSR PC,SEND_BYTE ; Send function + JSR PC,WAIT_BYTE ; Wait for returned result + MOV R0,-(SP) ; Save result + MOV #4,R2 ; Prepare to wait for 4-byte control block +; JSR PC,WAIT_BLK ; Wait for four-byte control block +; MOV (SP)+,R0 ; Get result back +; MOV (SP)+,R1 ; Get handle back +; MOV (SP)+,R2 ; Get control block pointer back +; RTS PC + BR FILE_DONE ; Wait for control block, restore and return + + +; OSFIND - Open or Close a file +; ============================= +; On entry: R0=function +; R1=handle or =>filename +; On exit: R0=zero or handle +; +; Tube data: &12 function string &0D -- handle +; &12 &00 handle -- &7F +; +_FIND: + MOV R0,-(SP) ; Save R0 + MOV #&12,R0 + JSR PC,SEND_CMD ; Send command &12 - OSFIND + MOV (SP)+,R0 ; Get R0 back + JSR PC,SEND_BYTE ; Send function + TST R0 ; Check function + BNE OPEN ; Jump to deal with OPEN +; CLOSE + JSR PC,SEND_BYTE_R1 ; Send handle to Tube + JSR PC,WAIT_BYTE ; Wait for acknowledgement + CLR R0 ; Zero R0 + RTS PC +OPEN: + MOV R1,-(SP) ; Save R1 + JSR PC,SEND_STR ; Send string at R1 + JSR PC,WAIT_BYTE ; Wait for returned handle + MOV (SP)+,R1 ; Restore R1 + RTS PC + + +; OSFILE - Operate on whole files +; =============================== +; On entry: R0=function +; R1=>control block +; On exit: R0=result +; R1 preserved +; control block updated +; +; Tube data: &14 block string function -- result block +; +_FILE: + MOV R2,-(SP) ; Save R2 + MOV R1,-(SP) ; Save R1 + MOV R0,-(SP) ; Save function + MOV #&14,R0 + JSR PC,SEND_CMD ; Send command &14 - OSFILE + ADD #2,R1 ; Point to control block contents + MOV #16,R2 + JSR PC,SEND_BLK ; Send 16-byte control block + JSR PC,FETCHWORD2 ; Get address of filename, allowing for nonalignment + JSR PC,SEND_STR ; Send filename string + MOV (SP)+,R0 + JSR PC,SEND_BYTE ; Send function + JSR PC,WAIT_BYTE ; Wait for returned result + MOV (SP),R1 ; Get control block pointer back + MOV R0,-(SP) ; Save result + ADD #2,R1 ; Point to control block contents + MOV #16,R2 ; Prepate to wait for 16-byte control block +FILE_DONE: + JSR PC,WAIT_BLK ; Wait for control block + MOV (SP)+,R0 ; Get result back + MOV (SP)+,R1 ; Get control block pointer back + MOV (SP)+,R2 ; Get R2 back + RTS PC + + +; OS_GBPB - Multiple byte read and write +; ===================================== +; On entry: R0=function +; R1=>control block +; On exit: R0=returned value +; control block updated +; +; Tube data: &16 block function -- block Carry result +; +_GBPB: +#ifndef NOCHNZERO + TSTB (R1) ; Check handle + BNE GBPB1 ; Non-zero handle + TST R0 ; Check function + BEQ GBPB1 ; Pass OSGBPB 0 to Tube + CMP R0,#5 + BCS GBPB_RDWR ; Channel 0 via OSRDCH/OSWRCH +#endif +GBPB1: + MOV R2,-(SP) ; Save R2 + MOV R0,-(SP) ; Save function + MOV #&16,R0 + JSR PC,SEND_CMD ; Send command &16 - OSGBPB + MOV #13,R2 + JSR PC,SEND_BLK ; Send 13-byte control block + MOV (SP)+,R0 + JSR PC,SEND_BYTE ; Send function + MOV #13,R2 + JSR PC,WAIT_BLK ; Wait for 13-byte control block + MOV (SP)+,R2 ; Get R2 back + BR WAIT_CHAR ; Get Carry and result byte +; +; Read or write block of memory to/from OSWRCH/OSRDCH +; --------------------------------------------------- +; NB, only uses 16-bit address and count, b16-b31 ignored and not updated +; +#ifndef NOCHNZERO +GBPB_RDWR: + MOV R2,-(SP) ; Save R2 + MOV R0,-(SP) ; Save function + MOV R1,-(SP) ; Save pointer to control block + INC R1 ; Point to Address + JSR PC,FETCHWORD ; R1=Address, allowing for nonalignment + MOV R1,R2 ; R2=Address + MOV (SP)+,R1 ; Restore pointer to control block + +GBPB_LP: + CMP (SP),#3 + BCC GBPB_RD ; Function 3/4, read characters + ; Function 1/2, write characters + MOVB (R2)+,R0 ; Get character from memory + JSR PC,_WRCH ; Write it + BR GBPB_NEXT ; Jump to update and loop +GBPB_RD: + JSR PC,_RDCH ; Read character + BCS GBPB_EXIT ; Carry set, exit + MOVB R0,(R2)+ ; Store character +GBPB_NEXT: + TSTB 5(R1) ; Test byte low byte + BNE GBPB_LO ; Count<>&xx00 + DECB 6(R1) ; Decrement count high byte +GBPB_LO: + DECB 5(R1) ; Decrement count low byte + BNE GBPB_LP ; Loop until all done + TSTB 6(R1) ; Test count high byte + BNE GBPB_LP ; Loop until all done + CLC ; Clear carry for OK +GBPB_EXIT: + MOVB R2,1(R1) + SWAB R2 + MOVB R2,2(R1) ; Update address + TST (SP)+ ; Drop function + MOV (SP)+,R2 ; Restore R2 + MOV #0,R0 ; R0=0, function supported, don't affect Carry + RTS PC +#endif + + +; OSBGET - Get a byte from open file +; ================================== +; On entry: R1=handle +; On exit: R0=byte Read +; R1=preserved +; Cy set if EOF +; +; Tube data: &0E handle -- Carry byte +; +_BGET: +#ifndef NOCHNZERO + TST R1 ; Check handle + BEQ _RDCH ; BGET#0 calls OSRDCH +#endif + MOV #&0E,R0 + JSR PC,SEND_CMD_R1 ; Send command and handle + BR WAIT_CHAR ; Wait for Carry, Byte + + +; OSRDCH - Wait for character from input stream +; ============================================= +; On exit: R0=char, Cy=carry +; +; Tube data: &00 -- Carry Char +; +_RDCH: + CLR R0 + JSR PC,SEND_CMD ; Send command &00 - OSRDCH +WAIT_CHAR: + JSR PC,WAIT_BYTE ; Get returned byte + ADD #&FF80,R0 ; Copy b7 into carry + ; Continue to fetch byte from Tube R2 + + +; Wait for byte in Tube Register 1 to return in R0, preserving Carry +; ================================================================== +WAIT_BYTE: + MOVB @#TUBE2S,R0 ; Read Tube R2 status + BPL WAIT_BYTE ; Loop until b7 set + MOVB @#TUBE2,R0 ; Get byte from Tube R2 + RTS PC + + +; OSBPUT - Put a byte to an open file +; =================================== +; On entry: R0=byte to write +; R1=handle +; On exit: R0=preserved +; R1=preserved +; +; Tube data: &10 handle byte -- &7F +; +_BPUT: +#ifndef NOCHNZERO + TST R1 ; Check handle + BEQ _WRCH ; BPUT#0 calls OSWRCH +#endif + MOV R0,-(SP) ; Save R0 + MOV #&10,R0 + JSR PC,SEND_CMD_R1 ; Send command and handle + MOV (SP),R0 ; Get R0 back + JSR PC,SEND_BYTE ; Send byte to Tube + JSR PC,WAIT_BYTE ; Wait for acknowledgement + MOV (SP)+,R0 ; Restore R0 + RTS PC + + +; OSASCI - Send ASCII character +; ============================= +_ASCII: + CMP #13,R0 ; If not , send raw character + BNE _WRCH ; If , fall through to send NEWL + + +; OSNEWL - Send LF/CR sequence +; ============================ +_NEWL: + MOV #10,R0 + JSR PC,_WRCH ; Output LF + MOV #13,R0 ; Fall through into WRCH + + +; OSWRCH - Send character in R0 to Tube Register 1 +; ================================================ +_WRCH: + MOV R0,-(SP) ; Save R0 +SEND_R1LP: + MOVB @#TUBE1S,R0 ; Read Tube R1 status + BIC #&BF,R0 ; Check b6 of status + BEQ SEND_R1LP ; Loop until b6 set + MOV (SP)+,R0 ; Get R0 back + MOVB R0,@#TUBE1 ; Send byte to Tube R1 + RTS PC + + +; TRAP handler +; ============ +; TRAP is used for Unix calls and is followed by a variable number of inline parameters, +; so it is impossible to simply do a null return. So, the safest option is to give the +; standard CoPro client 'unsupported' error. +TRAP_HANDLER: + EMT 15 + EQUB 255 + EQUS "Bad" + EQUB 0 + ALIGN + + +; EMT handler +; =========== +; On extry, R0-R5 contain any parameters +; PSW ignored +; On exit, R0-R5 contain any returned values +; C returns any returned value +; V set if error, R0=>error block +; +EMT_HANDLER: + BIC #&FFF0,2(SP) ; Clear stacked flags + MOV @#ERRV,-(SP) ; Save old ERR handler + MOV @#EMTV,-(SP) ; Save old EMT SP + MOV SP,@#EMTV ; Save current EMT SP + MOV #EMT_ERROR,@#ERRV ; Catch EMT errors + TST -(SP) ; Make space on stack + MOV R0,-(SP) ; Save R0 + MOV 8(SP),R0 ; Get return address +; MOV -2(R0),R0 ; Get EMT instruction + MOV -(R0),R0 ; Get EMT instruction v0.20a + BIC #&FF00,R0 ; Get EMT number + ;CMP R0,#EMTMAX + ;BCC EMT_IGNORE ; Out of range + ADD R0,R0 ; Index into dispatch table + ADD @#EMTADDR,R0 ; Index into dispatch table + MOV (R0),2(SP) ; Copy address to stack + MOV (SP)+,R0 ; Restore R0 + JSR PC,@(SP)+ ; Jump to routine +; BVS EMT_ERROR ; V set, set stacked V flag + BVC EMT_NOERROR ; V clear, jump to check Carry +EMT_ERROR: + MOV @#EMTV,SP ; Get saved EMT SP + BIS #2,6(SP) ; Set stacked V flag +EMT_NOERROR: + BCC EMT_EXIT ; C clear, jump to exit + BIS #1,6(SP) ; Set stacked C flag +EMT_EXIT: + MOV (SP)+,@#EMTV ; Restore old EMT SP + MOV (SP)+,@#ERRV ; Restore old error handler + RTI ; Return from EMT +;EMT_IGNORE: + ;MOV (SP)+,R0 ; Restore R0 + ;TST (SP)+ ; Balance stack + ;BR EMT_EXIT + + +; EMT 15 - Generate an error +; -------------------------- +EMT15: +; TST (SP)+ ; Drop return to EMT handler +; MOV (SP)+,@#EMTV ; Restore old EMT SP +; MOV (SP)+,@#ERRV ; Restore mainline error handler +; MOV (SP),R0 ; Get return address pointing to inline error block +; MOV @#ERRV,(SP) ; Replace with address of error handler +; RTI ; Jump to handler, restoring PSW +; v0.20a optimisation + MOV 6(SP),R0 ; Get return address pointing to inline error block + MOV 4(SP),6(SP) ; Replace return address with mainline error handler + RTS PC ; Return to EMT handler, thence to error handler + + +; EMT 14 - Read/Write handlers, etc. +; ---------------------------------- +; On entry: R0=0..255 to claim EMTs 0..255 +; R1=new routine address or 0 to read +; R0=&FFxx to set environment handlers +; R1=new handler address or 0 to read +; R2=new handler data address or 0 to read +; On exit: R0=preserved +; R1=old address +; R2=old handler address or preserved +; +EMT14: +; So that EMT14 can change the ERRV we have to rewind out of the EMT handler and restore ERRV so that +; it can be changed. Otherwise, the EMT handler will just restore ERRV to whatever it was before. + TST (SP)+ ; Drop return to EMT handler + MOV (SP)+,@#EMTV ; Restore old EMT SP + MOV (SP)+,@#ERRV ; Restore mainline error handler + MOV R0,-(SP) ; Save R0 + BMI EMT14_HANDLER ; Negative, set up handler + CMP R0,#EMTMAX + BCC EMT14_QUIT ; Out of range + ADD R0,R0 ; Double R0 to offset into table + ADD @#EMTADDR,R0 ; Index into EMT dispatch table + MOV (R0),-(SP) ; Get old address + TST R1 + BEQ EMT14_READ ; Zero, just read + MOV R1,(R0) ; Store new address if non-zero + BR EMT14_READ + +EMT14_HANDLER: + COM R0 + CMP R0,#HANDLEMAX + BCC EMT14_QUIT ; Out of range + ADD R0,R0 + ADD R0,R0 ; Times four to offset into table + ADD #HANDLERS,R0 ; Index into handlers + MOV (R0),-(SP) ; Save old handler address + TST R1 + BEQ EMT14_HAND2 ; Just read old handler address + MOV R1,(R0) ; Store new handler address +EMT14_HAND2: + TST (R0)+ ; DMB: Step to data address + MOV (R0),-(SP) ; Save old data address + TST R2 + BEQ EMT14_HAND3 ; Just read old data address + MOV R2,(R0) ; Store new data address +EMT14_HAND3: + MOV (SP)+,R2 ; Get old data +EMT14_READ: + MOV (SP)+,R1 ; Get old address +EMT14_QUIT: + MOV (SP)+,R0 ; Restore R0 +; RTS PC + RTI + +; EMT 13 - Misc control functions +; ------------------------------- +; On entry: R0=0 - Load BBC BASIC +; 1 - Set up default environment: IRQ/NMI, EMTs, handlers +; 2 - Set up default EMTs and handlers +; 3 - Set up default handlers only +EMT13: + TST R0 + BEQ EMTXX ; R0=0 - unsupported + CMP R0,#1 + BEQ INIT_ENV ; R0=1 - Set up hardware and software handlers and EMTs +; CMP R0,#2 +; BEQ INIT_HANDLES ; Set up software handlers and EMTs +; CMP R0,#3 +; BEQ INIT_HANDLES ; Set up software handlers + CMP R0,#4 + BCS INIT_HANDLES ; R0=2, R0=3 - Set up software handlers + ; Fall through with others, returning R0 preserved + +EMTXX: ; EMTs 16-255 +EVENT: ; Null event handler + RTS PC + +; EMT 0 - Exit current program +; ---------------------------- +EMT0: +; JMP @#EXITV ; Jump via exit handler + JMP @EXITV ; DMB Jump via exit handler + + +; Set up default system environment +; ================================= +INIT_ENV: + CLR R0 +INIT_LP1: + MOV #NULLIRQ,(R0)+ ; Set all hardware vectors to NULLIRQ + CLR (R0)+ ; Allow all interupts + CMP R0,#&100 ; Hardware vectors at at &0000-&00FF + BNE INIT_LP1 +; +; MOV #CLICOM,@#STACKVEC ; Could also catch Bad Stack vector +; ; There's no easy way to recover from a Bad Stack, so would have +; ; bomb out to somewhere safe. + MOV #TRAP_HANDLER,@#TRAPVEC ; Set up TRAP vector to give an error + MOV #EMT_HANDLER,@#EMTVEC ; Set up EMT vector +; CLR @#EMTVEC+2 ; EMT processor status - allow all interupts +INIT_IRQ: + MOV #NMI_ACK,@#NMIVEC+0 ; Set up NMI vector + MOV #&00E0,@#NMIVEC+2 ; NMI processor status - bar all interupts + MOV #IRQ,@#IRQVEC+0 ; Set up IRQ vector + MOV #&00C0,@#IRQVEC+2 ; IRQ processor status - bar all except NMIs +; +INIT_HANDLES: + ; Should check R0, if R0=3 set handlers only + MOV #HANDLERS,R2 ; R2=> Start of handlers DMB + MOV #HANDDEFAULT,R1 ; R1=> Default handlers and EMTs + MOV #HANDLEMAX*2+WORKSPMAX/2+16,R0 ; R0=word count of handlers (2 per handle) + workspace (counted in bytes) + core EMTs DMB + MOV @#PROG,-(SP) ; Save PROG +INIT_LP2: + MOV (R1)+,(R2)+ ; Set up initial settings + DEC R0 ; and EMT dispatch table + BNE INIT_LP2 + MOV (SP)+,@#PROG ; Restore PROG +; + MOV #EMTMAX-16,R0 ; Number of unused EMTs +INIT_CLR: + MOV (R1),(R2)+ ; EMTs 16-255 do nothing + DEC R0 + BNE INIT_CLR +INIT_DONE: + RTS PC ; Return with R0=0, R1,R2 corrupted + +; Default settings and EMT table +; ============================== +HANDDEFAULT: + EQUW EXITHAND ; &D8 - Default exit handler + EQUW 0 ; &DA - Default exit address + EQUW ESCHAND ; &DC - Default escape handler + EQUW ESCFLG ; &DE - Default escape flag + EQUW ERRHAND ; &E0 - Default error handler + EQUW ERRBLK ; &E2 - Default error buffer + EQUW EVENT ; &E4 - Default event handler + EQUW 0 ; &E6 - Unused + EQUW USERIRQ ; &E8 - Default unknown IRQ handler + EQUW 0 ; &EA - Unused + EQUW 0 ; &EC - Holds old SP within EMT handler + EQUW EMTTABLE ; &EE - Default EMT dispatch table + + EQUW 0 ; &F0 - unused + EQUW BANNER ; &F2 - Line pointer + EQUW RAMSTART ; &F4 - Lowest user memory + EQUW RAMEND ; &F6 - Highest user memory + EQUD 0 ; &F8 - Transfer address + EQUW STARTUP ; &FC - Default current program + EQUB 0 ; &FE - Spare byte + EQUB 0 ; &FF - Escape flag +EMTDEFAULT: + EQUW EMT0 ; EMT 0 - QUIT + EQUW _CLI ; EMT 1 - OSCLI + EQUW _BYTE ; EMT 2 - OSBYTE + EQUW _WORD ; EMT 3 - OSWORD + EQUW _WRCH ; EMT 4 - OSWRCH + EQUW _NEWL ; EMT 5 - OSNEWL + EQUW _RDCH ; EMT 6 - OSRDCH + EQUW _FILE ; EMT 7 - OSFILE + EQUW _ARGS ; EMT 8 - OSARGS + EQUW _BGET ; EMT 9 - OSBGET + EQUW _BPUT ; EMT 10 - OSBPUT + EQUW _GBPB ; EMT 11 - OSGBPB + EQUW _FIND ; EMT 12 - OSFIND + EQUW EMT13 ; EMT 13 - System control + EQUW EMT14 ; EMT 14 - Set handlers + EQUW EMT15 ; EMT 15 - ERROR + EQUW EMTXX ; EMTs 16-255 - unused + + +; ***************** +; TUBE I/O ROUTINES +; ***************** + +; Send -string at R1 to Tube Register 2 +; ========================================= +SEND_STR: + MOVB (R1)+,R0 ; Get byte from R1, increment R1 + JSR PC,SEND_BYTE ; Send byte via Tube R2 + CMP R0,#13 ; Test current character + BNE SEND_STR ; Loop until sent + RTS PC + + +; Send block at R1 to Tube Register 2 +; =================================== +SEND_BLK: + ADD R2,R1 ; Add length of control block to R1 +SEND_BLKLP: + MOVB -(R1),R0 ; Decrement R1, Get byte from R1 + JSR PC,SEND_BYTE ; Send byte via Tube R2 + DEC R2 ; Decrement count + BNE SEND_BLKLP ; Loop until all sent + RTS PC + + +; Wait for block at R1 from Tube Register 2 +; ========================================= +WAIT_BLK: + ADD R2,R1 ; Add length of control block to R1 +WAIT_BLKLP: + JSR PC,WAIT_BYTE ; Wait for byte via Tube R2 + MOVB R0,-(R1) ; Decrement R1, store byte to R1 + DEC R2 ; Decrement count + BNE WAIT_BLKLP ; Loop until all received + RTS PC + + +; Send command in R0 followed by byte in R1 +; ========================================= +SEND_CMD_R1: + JSR PC,SEND_CMD ; Send command + + +; Send byte in R1 to Tube Register 2 +; ================================== +SEND_BYTE_R1: + MOV R1,R0 ; Pass byte to R0 and fall through + + +; Send byte in R0 to Tube Register 2 +; ================================== +SEND_CMD: +SEND_BYTE: + MOV R0,-(SP) ; Save R0 +SEND_BYTELP: + MOVB @#TUBE2S,R0 ; Read Tube R2 status + BIC #&BF,R0 ; Check b6 of status + BEQ SEND_BYTELP ; Loop until b6 set + MOV (SP)+,R0 ; Get R0 back + MOVB R0,@#TUBE2 ; Send byte to Tube R2 + RTS PC + + +; Host->Client communication via interupts +; ======================================== +Get_R1: + MOVB @#TUBE1S,R0 ; Read Tube R1 status + BPL Get_R1 ; Loop until b7 set + MOVB @#TUBE1,R0 ; Get byte from Tube R1 + RTS PC + +Get_R4: + MOVB @#TUBE4S,R0 ; Read Tube R4 status + BPL Get_R4 ; Loop until b7 set + MOVB @#TUBE4,R0 ; Get byte from Tube R4 + RTS PC + + +; Interrupt handler +; ================ +; When Host sends a byte to R1 or R4 it generates a Client IRQ. +; Within the interupt handler PSW has been saved on the stack +; and further interrupts are disabled. +; +IRQ: + MOV R0,-(SP) ; Save R0 + MOVB @#TUBE4S,R0 ; Read Tube R4 status + BMI IRQ_R4 ; If b7 set, R4 generated the interrupt + MOVB @#TUBE1S,R0 ; Read Tube R1 status + BMI IRQ_R1 ; If b7 set, R1 generated the interrupt + MOV (SP)+,R0 ; Get R0 back +; JMP @#USERIRQV ; Something else generated the interrupt + JMP @USERIRQV ; DMB Something else generated the interrupt + +; Data present in Tube R1 generated an interrupt +; +IRQ_R1: + MOVB @#TUBE1,R0 ; Get byte from Tube R1 + BMI IRQ_ESCAPE ; b7 set, change Escape state +; +; R1<&80 - Host event being passed to client +; Tube data: via R1: &00 Y X A +; + MOV R1,-(SP) ; Save R1 + MOV R2,-(SP) ; Save R2 + JSR PC,Get_R1 ; Wait for byte via Tube R1 + MOV R0,R2 ; Pass to R2 + JSR PC,Get_R1 ; Wait for byte via Tube R1 + MOV R0,R1 ; Pass to R1 + JSR PC,Get_R1 ; Wait for byte via Tube R1 +; JSR PC,@#EVENTV ; Call event vector + JSR PC,@EVENTV ; DMB Call event vector + MOV (SP)+,R2 ; Restore R2 +; BR NMI_DONE2 ; Restore registers and return from interrupt +NMI_DONE2: + MOV (SP)+,R1 + MOV (SP)+,R0 + RTI ; Return from interupt + +; R1>&7F - Host changing Escape state +; Tube data: via R1: flag, b7=1, b6=state +; +IRQ_ESCAPE: +; JSR PC,@#ESCV ; Call Escape handler + JSR PC,@ESCV ; DMB Call Escape handler + BR NMI_DONE1 ; Restore and return from interrupt +; MOV (SP)+,R0 ; Restore R0 +; RTI ; Return from interupt + +; Data present in Tube R4 generated an interupt +; +IRQ_R4: + MOVB @#TUBE4,R0 ; Get byte from Tube R4 + BPL IRQ_DATA ; b7=0, jump to do data transfer + +; R4>&7F - Error occured +; Tube data: via R4: &FF, via R2: &00 err string &00 +; + MOV R1,-(SP) ; Remove this when errjmp done + JSR PC,WAIT_BYTE ; Wait for an initial byte from R2 + MOV @#ERRADDR,R1 ; Point to error buffer + JSR PC,WAIT_BYTE + MOVB R0,(R1)+ ; Store error number +IRQ_R4LP: + JSR PC,WAIT_BYTE ; Wait for byte of error string + MOVB R0,(R1)+ ; Store in error buffer + BNE IRQ_R4LP ; Loop until terminating &00 received + MOV (SP)+,R1 ; Restore R1 + MOV (SP)+,R0 ; Balance stack + MOV @#ERRADDR,R0 ; Point to error block + MOV @#ERRV,(SP) ; Replace return address with error handler + RTI ; Restore PSW and jump to error handler + +;; Generate an error without using EMT call +;; ---------------------------------------- +;MKERR: +; MOV (SP)+,R0 ; Point to inline error block +;; JMP @#ERRV ; Jump to error handler +; JMP @ERRV ; DMB Jump to error handler + +; R4<&80 - Data transfer +; Tube data: via R4: action ID address sync, via R3: data +; +IRQ_DATA: +; R0=transfer type, (sp)=mainline R0 +; + MOV R1,-(SP) ; Save R1 + MOV R0,R1 ; Save transfer type in R2 + JSR PC,Get_R4 ; Wait for caller ID + CMP R1,#5 ; Is transfer 'release'? + BEQ NMI_DONE2 ; Exit if 'release' + JSR PC,Get_R4 ; Get data address byte 4 + MOVB R0,@#ADDR+3 + JSR PC,Get_R4 ; Get data address byte 3 + MOVB R0,@#ADDR+2 + JSR PC,Get_R4 ; Get data address byte 2 + MOVB R0,@#ADDR+1 + JSR PC,Get_R4 ; Get data address byte 1 + MOVB R0,@#ADDR+0 + MOVB @#TUBE3,R0 ; Clear Tube3 FIFO + MOVB @#TUBE3,R0 + JSR PC,Get_R4 ; Get sync byte + ADD R1,R1 ; Index into NMI dispatch table + MOV NMIADDRS(R1),@#NMIVEC ; Set up NMI vector + MOV @#ADDR,R0 ; Get transfer address + CMP R1,#12 ; check transfer type + BCS NMI_DONE2 ; Jump to exit if not 256-byte transfers + BEQ NMI6 ; Jump with 256-byte write + +; Transfer 7 - Read 256 bytes from Host via R3 +; -------------------------------------------- +NMI7: + MOV #256,R1 ; Prepare to transfer 256 bytes +NMI7_LOOP: + TSTB @#TUBE3S + BPL NMI7_LOOP ; Wait for Tube R3 ready + MOVB @#TUBE3,(R0)+ ; Fetch byte from Tube R3 and store + DEC R1 ; Decrement count + BNE NMI7_LOOP ; Loop for 256 bytes + BR NMI_DONE + +; Transfer 6 - Send 256 bytes to Host via R3 +; ------------------------------------------ +NMI6: + MOV #256,R1 ; Prepare to transfer 256 bytes +NMI6_LOOP: + TSTB @#TUBE3S + BPL NMI6_LOOP ; Wait for Tube R3 ready + MOVB (R0)+,@#TUBE3 ; Fetch byte and send to Tube R3 + DEC R1 ; Decrement count + BNE NMI6_LOOP ; Loop for 256 bytes +NMI6_DONE: + TSTB @#TUBE3S + BPL NMI6_DONE ; Wait for Tube R3 ready again + CLRB @#TUBE3 ; Send final sync byte +NMI_DONE: + MOV (SP)+,R1 ; Restore and return +NMI_DONE1: + MOV R0,@#ADDR ; Save updated transfer address + MOV (SP)+,R0 + RTI + + +; Transfer 3 - Read double bytes from host +; ---------------------------------------- +NMI3: + MOV R0,-(SP) + MOV @#ADDR,R0 ; Get transfer address + MOVB @#TUBE3,(R0)+ ; Read two bytes + MOVB @#TUBE3,(R0)+ + BR NMI_DONE1 + +; Transfer 2 - Send double bytes to host +; -------------------------------------- +NMI2: + MOV R0,-(SP) + MOV @#ADDR,R0 ; Get transfer address + MOVB (R0)+,@#TUBE3 ; Send two bytes + MOVB (R0)+,@#TUBE3 + BR NMI_DONE1 + +; Transfer 1 - Read single byte from host +; --------------------------------------- +NMI1: + MOV R0,-(SP) + MOV @#ADDR,R0 ; Get transfer address + MOVB @#TUBE3,(R0)+ ; Transfer byte from Tube + BR NMI_DONE1 + +; Transfer 0 - Send single byte to Host +; ------------------------------------- +NMI0: + MOV R0,-(SP) + MOV @#ADDR,R0 ; Get transfer address + MOVB (R0)+,@#TUBE3 ; Transfer byte to Tube + BR NMI_DONE1 +;NMI_DONE1: +; MOV (SP)+,R0 +; RTI + +; Transfers 4,5,6,7 - Just acknowledge NMI +; ---------------------------------------- +NMI_ACK: + CLRB @#TUBE3 ; Store to Tube R3 to acknowledge NMI +USERIRQ: ; Default unknown IRQ handler +NULLIRQ: ; Default unused hardware vector handler + RTI + +; NMI transfer dispatch table +; --------------------------- +NMIADDRS: + EQUW NMI0 ; Single byte to host + EQUW NMI1 ; Single byte from host + EQUW NMI2 ; Double byte to host + EQUW NMI3 ; Double byte from host + EQUW NMI_ACK ; Execute + EQUW NMI_ACK ; Release + EQUW NMI_ACK ; 256 bytes to host + EQUW NMI_ACK ; 256 bytes from host + + EQUM TUBEIO-$ ; Spare space + +; Tube I/O registers +; ------------------ + EQUW 0,0,0,0,0,0,0,0 ; Tube registers + diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index 5f591ca..c300f52 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -135,7 +135,7 @@ begin illhalt => open, -- a halt instruction was not executed because it was illegal in the current mode; for use in the cer cpu error register ysv => open, -- a yellow stack trap is in progress - for use in the cer cpu error register rsv => open, -- a red stack trap is in progress - for use in the cer cpu error register - cpu_stack_limit => x"8000", -- the cpu stack limit control register value + cpu_stack_limit => x"0100", -- the cpu stack limit control register value cpu_kmillhalt => '0', -- the control register setting for kernel mode illegal halt sr0_ic => open, -- sr0/mmr0 instruction complete flag sr1 => open, -- sr1/mmr1, address of the current instruction diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 26d0a0f..0d9c688 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -38,1009 +38,1009 @@ begin when x"008" => DATA <= x"3436"; when x"009" => DATA <= x"204b"; when x"00a" => DATA <= x"2e30"; - when x"00b" => DATA <= x"3931"; + when x"00b" => DATA <= x"3132"; when x"00c" => DATA <= x"0d0d"; when x"00d" => DATA <= x"0000"; when x"00e" => DATA <= x"15c6"; - when x"00f" => DATA <= x"f500"; + when x"00f" => DATA <= x"f530"; when x"010" => DATA <= x"09f7"; - when x"011" => DATA <= x"0578"; + when x"011" => DATA <= x"0588"; when x"012" => DATA <= x"17df"; when x"013" => DATA <= x"f5fc"; when x"014" => DATA <= x"f5f8"; when x"015" => DATA <= x"15c1"; when x"016" => DATA <= x"f804"; when x"017" => DATA <= x"09f7"; - when x"018" => DATA <= x"0088"; + when x"018" => DATA <= x"0086"; when x"019" => DATA <= x"09f7"; - when x"01a" => DATA <= x"0486"; + when x"01a" => DATA <= x"0498"; when x"01b" => DATA <= x"00a1"; when x"01c" => DATA <= x"09f7"; - when x"01d" => DATA <= x"009a"; - when x"01e" => DATA <= x"15c6"; - when x"01f" => DATA <= x"f500"; - when x"020" => DATA <= x"09f7"; - when x"021" => DATA <= x"0558"; - when x"022" => DATA <= x"15c1"; - when x"023" => DATA <= x"f860"; - when x"024" => DATA <= x"09f7"; - when x"025" => DATA <= x"006e"; - when x"026" => DATA <= x"15c1"; - when x"027" => DATA <= x"f868"; + when x"01d" => DATA <= x"00c6"; + when x"01e" => DATA <= x"17c6"; + when x"01f" => DATA <= x"f5f6"; + when x"020" => DATA <= x"15c0"; + when x"021" => DATA <= x"0003"; + when x"022" => DATA <= x"09f7"; + when x"023" => DATA <= x"057e"; + when x"024" => DATA <= x"15c1"; + when x"025" => DATA <= x"f860"; + when x"026" => DATA <= x"09f7"; + when x"027" => DATA <= x"0068"; when x"028" => DATA <= x"09f7"; - when x"029" => DATA <= x"0204"; + when x"029" => DATA <= x"0220"; when x"02a" => DATA <= x"870c"; - when x"02b" => DATA <= x"15c0"; - when x"02c" => DATA <= x"f520"; + when x"02b" => DATA <= x"17c0"; + when x"02c" => DATA <= x"f868"; when x"02d" => DATA <= x"09f7"; - when x"02e" => DATA <= x"0062"; - when x"02f" => DATA <= x"01ee"; + when x"02e" => DATA <= x"0060"; + when x"02f" => DATA <= x"01f4"; when x"030" => DATA <= x"4450"; when x"031" => DATA <= x"3150"; when x"032" => DATA <= x"3e31"; when x"033" => DATA <= x"002a"; - when x"034" => DATA <= x"f520"; - when x"035" => DATA <= x"20c0"; + when x"034" => DATA <= x"f530"; + when x"035" => DATA <= x"20a8"; when x"036" => DATA <= x"ffff"; when x"037" => DATA <= x"15c0"; when x"038" => DATA <= x"007e"; when x"039" => DATA <= x"09f7"; - when x"03a" => DATA <= x"0150"; - when x"03b" => DATA <= x"09f7"; - when x"03c" => DATA <= x"0676"; - when x"03d" => DATA <= x"4511"; - when x"03e" => DATA <= x"6373"; - when x"03f" => DATA <= x"7061"; - when x"040" => DATA <= x"0065"; - when x"041" => DATA <= x"15c6"; - when x"042" => DATA <= x"f500"; - when x"043" => DATA <= x"1001"; - when x"044" => DATA <= x"0a81"; - when x"045" => DATA <= x"09f7"; - when x"046" => DATA <= x"0422"; - when x"047" => DATA <= x"09f7"; - when x"048" => DATA <= x"0028"; - when x"049" => DATA <= x"09f7"; - when x"04a" => DATA <= x"041a"; - when x"04b" => DATA <= x"01d2"; - when x"04c" => DATA <= x"6000"; - when x"04d" => DATA <= x"903f"; - when x"04e" => DATA <= x"fd48"; - when x"04f" => DATA <= x"0087"; - when x"050" => DATA <= x"e5c1"; - when x"051" => DATA <= x"0002"; - when x"052" => DATA <= x"9440"; - when x"053" => DATA <= x"45c0"; - when x"054" => DATA <= x"ff00"; - when x"055" => DATA <= x"9241"; - when x"056" => DATA <= x"45c1"; - when x"057" => DATA <= x"ff00"; - when x"058" => DATA <= x"00c1"; - when x"059" => DATA <= x"5001"; - when x"05a" => DATA <= x"0087"; - when x"05b" => DATA <= x"09f7"; - when x"05c" => DATA <= x"03f0"; - when x"05d" => DATA <= x"9440"; - when x"05e" => DATA <= x"02fc"; - when x"05f" => DATA <= x"0087"; - when x"060" => DATA <= x"1066"; - when x"061" => DATA <= x"1026"; - when x"062" => DATA <= x"15c0"; - when x"063" => DATA <= x"0002"; - when x"064" => DATA <= x"09f7"; - when x"065" => DATA <= x"058a"; - when x"066" => DATA <= x"1581"; - when x"067" => DATA <= x"09f7"; - when x"068" => DATA <= x"0554"; - when x"069" => DATA <= x"1581"; - when x"06a" => DATA <= x"00b1"; - when x"06b" => DATA <= x"09f7"; - when x"06c" => DATA <= x"03a8"; - when x"06d" => DATA <= x"8102"; - when x"06e" => DATA <= x"0a00"; - when x"06f" => DATA <= x"0087"; - when x"070" => DATA <= x"15c4"; - when x"071" => DATA <= x"0000"; - when x"072" => DATA <= x"0c44"; - when x"073" => DATA <= x"17c1"; - when x"074" => DATA <= x"f5f8"; - when x"075" => DATA <= x"1066"; - when x"076" => DATA <= x"9c40"; - when x"077" => DATA <= x"0007"; - when x"078" => DATA <= x"45c0"; - when x"079" => DATA <= x"ff00"; - when x"07a" => DATA <= x"6001"; - when x"07b" => DATA <= x"8bd1"; - when x"07c" => DATA <= x"0229"; - when x"07d" => DATA <= x"a457"; - when x"07e" => DATA <= x"0028"; - when x"07f" => DATA <= x"0226"; - when x"080" => DATA <= x"a457"; - when x"081" => DATA <= x"0043"; - when x"082" => DATA <= x"0223"; - when x"083" => DATA <= x"a457"; - when x"084" => DATA <= x"0029"; - when x"085" => DATA <= x"0220"; - when x"086" => DATA <= x"1381"; - when x"087" => DATA <= x"9c40"; - when x"088" => DATA <= x"0006"; - when x"089" => DATA <= x"35c0"; -- was 0bd7 - when x"08a" => DATA <= x"0040"; - when x"08b" => DATA <= x"0349"; - when x"08c" => DATA <= x"45c0"; - when x"08d" => DATA <= x"fff0"; -- was 00ff - when x"08e" => DATA <= x"2017"; - when x"08f" => DATA <= x"0007"; - when x"090" => DATA <= x"0244"; - when x"091" => DATA <= x"9c40"; - when x"092" => DATA <= x"0006"; - when x"093" => DATA <= x"35c0"; -- was 0bd7 - when x"094" => DATA <= x"0020"; - when x"095" => DATA <= x"030e"; - when x"096" => DATA <= x"9c40"; - when x"097" => DATA <= x"0007"; - when x"098" => DATA <= x"45c0"; - when x"099" => DATA <= x"ff00"; - when x"09a" => DATA <= x"6001"; - when x"09b" => DATA <= x"0a81"; - when x"09c" => DATA <= x"8bd1"; - when x"09d" => DATA <= x"02fe"; - when x"09e" => DATA <= x"65c1"; - when x"09f" => DATA <= x"0004"; - when x"0a0" => DATA <= x"09f7"; - when x"0a1" => DATA <= x"ff60"; - when x"0a2" => DATA <= x"6581"; - when x"0a3" => DATA <= x"1066"; - when x"0a4" => DATA <= x"65c4"; - when x"0a5" => DATA <= x"0002"; - when x"0a6" => DATA <= x"1581"; - when x"0a7" => DATA <= x"45c1"; - when x"0a8" => DATA <= x"0001"; - when x"0a9" => DATA <= x"1240"; - when x"0aa" => DATA <= x"2017"; - when x"0ab" => DATA <= x"0105"; - when x"0ac" => DATA <= x"871a"; - when x"0ad" => DATA <= x"2017"; - when x"0ae" => DATA <= x"0109"; - when x"0af" => DATA <= x"8617"; - when x"0b0" => DATA <= x"1c42"; - when x"0b1" => DATA <= x"0002"; - when x"0b2" => DATA <= x"1c43"; + when x"03a" => DATA <= x"017a"; + when x"03b" => DATA <= x"880f"; + when x"03c" => DATA <= x"4511"; + when x"03d" => DATA <= x"6373"; + when x"03e" => DATA <= x"7061"; + when x"03f" => DATA <= x"0065"; + when x"040" => DATA <= x"17c6"; + when x"041" => DATA <= x"f5f6"; + when x"042" => DATA <= x"1001"; + when x"043" => DATA <= x"0a81"; + when x"044" => DATA <= x"09f7"; + when x"045" => DATA <= x"0436"; + when x"046" => DATA <= x"09f7"; + when x"047" => DATA <= x"0028"; + when x"048" => DATA <= x"09f7"; + when x"049" => DATA <= x"042e"; + when x"04a" => DATA <= x"01d3"; + when x"04b" => DATA <= x"6000"; + when x"04c" => DATA <= x"903f"; + when x"04d" => DATA <= x"fd42"; + when x"04e" => DATA <= x"0087"; + when x"04f" => DATA <= x"e5c1"; + when x"050" => DATA <= x"0002"; + when x"051" => DATA <= x"9440"; + when x"052" => DATA <= x"45c0"; + when x"053" => DATA <= x"ff00"; + when x"054" => DATA <= x"9241"; + when x"055" => DATA <= x"45c1"; + when x"056" => DATA <= x"ff00"; + when x"057" => DATA <= x"00c1"; + when x"058" => DATA <= x"5001"; + when x"059" => DATA <= x"0087"; + when x"05a" => DATA <= x"09f7"; + when x"05b" => DATA <= x"0404"; + when x"05c" => DATA <= x"9440"; + when x"05d" => DATA <= x"02fc"; + when x"05e" => DATA <= x"0087"; + when x"05f" => DATA <= x"1066"; + when x"060" => DATA <= x"10a6"; + when x"061" => DATA <= x"10e6"; + when x"062" => DATA <= x"1126"; + when x"063" => DATA <= x"1166"; + when x"064" => DATA <= x"1185"; + when x"065" => DATA <= x"2157"; + when x"066" => DATA <= x"f500"; + when x"067" => DATA <= x"8602"; + when x"068" => DATA <= x"15c6"; + when x"069" => DATA <= x"f530"; + when x"06a" => DATA <= x"1166"; + when x"06b" => DATA <= x"17e6"; + when x"06c" => DATA <= x"f5fc"; + when x"06d" => DATA <= x"09f7"; + when x"06e" => DATA <= x"0014"; + when x"06f" => DATA <= x"159f"; + when x"070" => DATA <= x"f5fc"; + when x"071" => DATA <= x"1386"; + when x"072" => DATA <= x"1585"; + when x"073" => DATA <= x"1584"; + when x"074" => DATA <= x"1583"; + when x"075" => DATA <= x"1582"; + when x"076" => DATA <= x"1581"; + when x"077" => DATA <= x"0a00"; + when x"078" => DATA <= x"0087"; + when x"079" => DATA <= x"1001"; + when x"07a" => DATA <= x"15c0"; + when x"07b" => DATA <= x"0002"; + when x"07c" => DATA <= x"09f7"; + when x"07d" => DATA <= x"0582"; + when x"07e" => DATA <= x"09f7"; + when x"07f" => DATA <= x"054e"; + when x"080" => DATA <= x"00b1"; + when x"081" => DATA <= x"09f7"; + when x"082" => DATA <= x"038e"; + when x"083" => DATA <= x"80f4"; + when x"084" => DATA <= x"15c0"; + when x"085" => DATA <= x"0000"; + when x"086" => DATA <= x"0c40"; + when x"087" => DATA <= x"17c1"; + when x"088" => DATA <= x"f5f8"; + when x"089" => DATA <= x"1066"; + when x"08a" => DATA <= x"9c42"; + when x"08b" => DATA <= x"0007"; + when x"08c" => DATA <= x"45c2"; + when x"08d" => DATA <= x"ff00"; + when x"08e" => DATA <= x"6081"; + when x"08f" => DATA <= x"8bd1"; + when x"090" => DATA <= x"0229"; + when x"091" => DATA <= x"a457"; + when x"092" => DATA <= x"0028"; + when x"093" => DATA <= x"0226"; + when x"094" => DATA <= x"a457"; + when x"095" => DATA <= x"0043"; + when x"096" => DATA <= x"0223"; + when x"097" => DATA <= x"a457"; + when x"098" => DATA <= x"0029"; + when x"099" => DATA <= x"0220"; + when x"09a" => DATA <= x"1381"; + when x"09b" => DATA <= x"9c42"; + when x"09c" => DATA <= x"0006"; + when x"09d" => DATA <= x"35c2"; + when x"09e" => DATA <= x"0040"; + when x"09f" => DATA <= x"0346"; + when x"0a0" => DATA <= x"45c2"; + when x"0a1" => DATA <= x"fff0"; + when x"0a2" => DATA <= x"2097"; + when x"0a3" => DATA <= x"0007"; + when x"0a4" => DATA <= x"0241"; + when x"0a5" => DATA <= x"9c42"; + when x"0a6" => DATA <= x"0006"; + when x"0a7" => DATA <= x"35c2"; + when x"0a8" => DATA <= x"0020"; + when x"0a9" => DATA <= x"030e"; + when x"0aa" => DATA <= x"9c42"; + when x"0ab" => DATA <= x"0007"; + when x"0ac" => DATA <= x"45c2"; + when x"0ad" => DATA <= x"ff00"; + when x"0ae" => DATA <= x"6081"; + when x"0af" => DATA <= x"0a81"; + when x"0b0" => DATA <= x"8bd1"; + when x"0b1" => DATA <= x"02fe"; + when x"0b2" => DATA <= x"65c1"; when x"0b3" => DATA <= x"0004"; - when x"0b4" => DATA <= x"60c2"; - when x"0b5" => DATA <= x"1c43"; - when x"0b6" => DATA <= x"0006"; - when x"0b7" => DATA <= x"17c0"; - when x"0b8" => DATA <= x"f5ee"; - when x"0b9" => DATA <= x"65c1"; - when x"0ba" => DATA <= x"0010"; - when x"0bb" => DATA <= x"1450"; - when x"0bc" => DATA <= x"e5c2"; - when x"0bd" => DATA <= x"0002"; - when x"0be" => DATA <= x"02fc"; - when x"0bf" => DATA <= x"0bc3"; - when x"0c0" => DATA <= x"0304"; - when x"0c1" => DATA <= x"0a10"; - when x"0c2" => DATA <= x"e5c3"; - when x"0c3" => DATA <= x"0002"; - when x"0c4" => DATA <= x"02fc"; - when x"0c5" => DATA <= x"17c1"; - when x"0c6" => DATA <= x"f5ee"; - when x"0c7" => DATA <= x"15c5"; - when x"0c8" => DATA <= x"0bbc"; - when x"0c9" => DATA <= x"1100"; - when x"0ca" => DATA <= x"0c80"; - when x"0cb" => DATA <= x"0308"; - when x"0cc" => DATA <= x"17e6"; - when x"0cd" => DATA <= x"f5fc"; - when x"0ce" => DATA <= x"105f"; - when x"0cf" => DATA <= x"f5fc"; - when x"0d0" => DATA <= x"09c9"; - when x"0d1" => DATA <= x"159f"; - when x"0d2" => DATA <= x"f5fc"; - when x"0d3" => DATA <= x"0087"; - when x"0d4" => DATA <= x"0049"; - when x"0d5" => DATA <= x"0c02"; - when x"0d6" => DATA <= x"860a"; - when x"0d7" => DATA <= x"09f7"; - when x"0d8" => DATA <= x"053e"; - when x"0d9" => DATA <= x"4ef9"; - when x"0da" => DATA <= x"746f"; - when x"0db" => DATA <= x"5020"; - when x"0dc" => DATA <= x"5044"; - when x"0dd" => DATA <= x"3131"; - when x"0de" => DATA <= x"6320"; - when x"0df" => DATA <= x"646f"; - when x"0e0" => DATA <= x"0065"; - when x"0e1" => DATA <= x"0077"; - when x"0e2" => DATA <= x"fe76"; - when x"0e3" => DATA <= x"1026"; - when x"0e4" => DATA <= x"8bc0"; - when x"0e5" => DATA <= x"810c"; - when x"0e6" => DATA <= x"15c0"; - when x"0e7" => DATA <= x"0004"; - when x"0e8" => DATA <= x"09f7"; - when x"0e9" => DATA <= x"047c"; - when x"0ea" => DATA <= x"1380"; - when x"0eb" => DATA <= x"09f7"; - when x"0ec" => DATA <= x"047c"; - when x"0ed" => DATA <= x"09f7"; - when x"0ee" => DATA <= x"02a4"; - when x"0ef" => DATA <= x"1001"; - when x"0f0" => DATA <= x"1580"; - when x"0f1" => DATA <= x"0087"; - when x"0f2" => DATA <= x"2017"; - when x"0f3" => DATA <= x"0082"; - when x"0f4" => DATA <= x"032b"; - when x"0f5" => DATA <= x"2017"; - when x"0f6" => DATA <= x"0083"; - when x"0f7" => DATA <= x"032a"; - when x"0f8" => DATA <= x"2017"; - when x"0f9" => DATA <= x"0084"; - when x"0fa" => DATA <= x"0327"; + when x"0b4" => DATA <= x"09f7"; + when x"0b5" => DATA <= x"ff36"; + when x"0b6" => DATA <= x"6581"; + when x"0b7" => DATA <= x"1066"; + when x"0b8" => DATA <= x"55c0"; + when x"0b9" => DATA <= x"0002"; + when x"0ba" => DATA <= x"1581"; + when x"0bb" => DATA <= x"45c1"; + when x"0bc" => DATA <= x"0001"; + when x"0bd" => DATA <= x"1242"; + when x"0be" => DATA <= x"2097"; + when x"0bf" => DATA <= x"0105"; + when x"0c0" => DATA <= x"871c"; + when x"0c1" => DATA <= x"2097"; + when x"0c2" => DATA <= x"0109"; + when x"0c3" => DATA <= x"8619"; + when x"0c4" => DATA <= x"0bd1"; + when x"0c5" => DATA <= x"1443"; + when x"0c6" => DATA <= x"1444"; + when x"0c7" => DATA <= x"6103"; + when x"0c8" => DATA <= x"1444"; + when x"0c9" => DATA <= x"17c2"; + when x"0ca" => DATA <= x"f5f4"; + when x"0cb" => DATA <= x"65c1"; + when x"0cc" => DATA <= x"0008"; + when x"0cd" => DATA <= x"0c83"; + when x"0ce" => DATA <= x"1452"; + when x"0cf" => DATA <= x"0ac3"; + when x"0d0" => DATA <= x"02fd"; + when x"0d1" => DATA <= x"0c84"; + when x"0d2" => DATA <= x"0303"; + when x"0d3" => DATA <= x"0a12"; + when x"0d4" => DATA <= x"0ac4"; + when x"0d5" => DATA <= x"02fd"; + when x"0d6" => DATA <= x"45c0"; + when x"0d7" => DATA <= x"fffe"; + when x"0d8" => DATA <= x"17c1"; + when x"0d9" => DATA <= x"f5f4"; + when x"0da" => DATA <= x"0a26"; + when x"0db" => DATA <= x"0a26"; + when x"0dc" => DATA <= x"0a26"; + when x"0dd" => DATA <= x"15c5"; + when x"0de" => DATA <= x"0bbc"; + when x"0df" => DATA <= x"0c80"; + when x"0e0" => DATA <= x"105f"; + when x"0e1" => DATA <= x"f5fc"; + when x"0e2" => DATA <= x"1066"; + when x"0e3" => DATA <= x"15c1"; + when x"0e4" => DATA <= x"f804"; + when x"0e5" => DATA <= x"0087"; + when x"0e6" => DATA <= x"0c80"; + when x"0e7" => DATA <= x"860d"; + when x"0e8" => DATA <= x"15c0"; + when x"0e9" => DATA <= x"0003"; + when x"0ea" => DATA <= x"09f7"; + when x"0eb" => DATA <= x"0406"; + when x"0ec" => DATA <= x"880f"; + when x"0ed" => DATA <= x"4ef9"; + when x"0ee" => DATA <= x"746f"; + when x"0ef" => DATA <= x"5020"; + when x"0f0" => DATA <= x"5044"; + when x"0f1" => DATA <= x"3131"; + when x"0f2" => DATA <= x"6320"; + when x"0f3" => DATA <= x"646f"; + when x"0f4" => DATA <= x"0065"; + when x"0f5" => DATA <= x"0077"; + when x"0f6" => DATA <= x"fe4e"; + when x"0f7" => DATA <= x"0188"; + when x"0f8" => DATA <= x"1026"; + when x"0f9" => DATA <= x"8bc0"; + when x"0fa" => DATA <= x"810b"; when x"0fb" => DATA <= x"15c0"; - when x"0fc" => DATA <= x"0006"; + when x"0fc" => DATA <= x"0004"; when x"0fd" => DATA <= x"09f7"; - when x"0fe" => DATA <= x"0452"; - when x"0ff" => DATA <= x"1080"; + when x"0fe" => DATA <= x"047a"; + when x"0ff" => DATA <= x"1380"; when x"100" => DATA <= x"09f7"; - when x"101" => DATA <= x"0452"; - when x"102" => DATA <= x"1580"; - when x"103" => DATA <= x"09f7"; - when x"104" => DATA <= x"044c"; - when x"105" => DATA <= x"2017"; - when x"106" => DATA <= x"009d"; - when x"107" => DATA <= x"0315"; - when x"108" => DATA <= x"2017"; - when x"109" => DATA <= x"008e"; - when x"10a" => DATA <= x"0313"; - when x"10b" => DATA <= x"1026"; - when x"10c" => DATA <= x"09f7"; - when x"10d" => DATA <= x"0266"; - when x"10e" => DATA <= x"65c0"; - when x"10f" => DATA <= x"ff80"; - when x"110" => DATA <= x"09f7"; - when x"111" => DATA <= x"025e"; - when x"112" => DATA <= x"45c0"; - when x"113" => DATA <= x"ff00"; - when x"114" => DATA <= x"1002"; - when x"115" => DATA <= x"00c0"; - when x"116" => DATA <= x"1001"; - when x"117" => DATA <= x"09f7"; - when x"118" => DATA <= x"0250"; - when x"119" => DATA <= x"45c0"; - when x"11a" => DATA <= x"ff00"; - when x"11b" => DATA <= x"5001"; - when x"11c" => DATA <= x"1580"; - when x"11d" => DATA <= x"0087"; - when x"11e" => DATA <= x"0077"; - when x"11f" => DATA <= x"fe94"; - when x"120" => DATA <= x"15c0"; - when x"121" => DATA <= x"0086"; - when x"122" => DATA <= x"8cc0"; - when x"123" => DATA <= x"8cc0"; - when x"124" => DATA <= x"1c01"; - when x"125" => DATA <= x"f5e2"; - when x"126" => DATA <= x"1042"; - when x"127" => DATA <= x"00c2"; - when x"128" => DATA <= x"45c2"; - when x"129" => DATA <= x"ff00"; - when x"12a" => DATA <= x"1580"; - when x"12b" => DATA <= x"0087"; - when x"12c" => DATA <= x"0bc0"; - when x"12d" => DATA <= x"034d"; - when x"12e" => DATA <= x"10e6"; - when x"12f" => DATA <= x"10a6"; - when x"130" => DATA <= x"1026"; - when x"131" => DATA <= x"15c0"; - when x"132" => DATA <= x"0008"; - when x"133" => DATA <= x"09f7"; - when x"134" => DATA <= x"03ec"; - when x"135" => DATA <= x"1380"; - when x"136" => DATA <= x"09f7"; - when x"137" => DATA <= x"03e6"; - when x"138" => DATA <= x"8bc0"; - when x"139" => DATA <= x"8003"; - when x"13a" => DATA <= x"9442"; - when x"13b" => DATA <= x"9243"; - when x"13c" => DATA <= x"010c"; - when x"13d" => DATA <= x"15c2"; - when x"13e" => DATA <= x"0010"; - when x"13f" => DATA <= x"15c3"; - when x"140" => DATA <= x"0010"; - when x"141" => DATA <= x"2017"; - when x"142" => DATA <= x"0015"; - when x"143" => DATA <= x"8605"; - when x"144" => DATA <= x"6000"; - when x"145" => DATA <= x"65c0"; - when x"146" => DATA <= x"facc"; - when x"147" => DATA <= x"9402"; - when x"148" => DATA <= x"9203"; - when x"149" => DATA <= x"1080"; - when x"14a" => DATA <= x"09f7"; - when x"14b" => DATA <= x"03be"; - when x"14c" => DATA <= x"6081"; - when x"14d" => DATA <= x"0ac2"; - when x"14e" => DATA <= x"2097"; - when x"14f" => DATA <= x"0080"; - when x"150" => DATA <= x"8605"; - when x"151" => DATA <= x"9840"; - when x"152" => DATA <= x"09f7"; - when x"153" => DATA <= x"03ae"; - when x"154" => DATA <= x"0ac2"; - when x"155" => DATA <= x"80fb"; - when x"156" => DATA <= x"10c0"; - when x"157" => DATA <= x"09f7"; - when x"158" => DATA <= x"03a4"; - when x"159" => DATA <= x"60c1"; - when x"15a" => DATA <= x"0ac3"; - when x"15b" => DATA <= x"20d7"; - when x"15c" => DATA <= x"0080"; - when x"15d" => DATA <= x"8605"; - when x"15e" => DATA <= x"09f7"; - when x"15f" => DATA <= x"01c2"; - when x"160" => DATA <= x"9021"; - when x"161" => DATA <= x"0ac3"; - when x"162" => DATA <= x"80fb"; - when x"163" => DATA <= x"1580"; - when x"164" => DATA <= x"1582"; - when x"165" => DATA <= x"1583"; - when x"166" => DATA <= x"0087"; - when x"167" => DATA <= x"0500"; - when x"168" => DATA <= x"0005"; - when x"169" => DATA <= x"0500"; - when x"16a" => DATA <= x"0005"; - when x"16b" => DATA <= x"0504"; - when x"16c" => DATA <= x"0005"; - when x"16d" => DATA <= x"0008"; - when x"16e" => DATA <= x"000e"; - when x"16f" => DATA <= x"0504"; - when x"170" => DATA <= x"0901"; - when x"171" => DATA <= x"0501"; - when x"172" => DATA <= x"0005"; - when x"173" => DATA <= x"0800"; - when x"174" => DATA <= x"1910"; - when x"175" => DATA <= x"0020"; - when x"176" => DATA <= x"0110"; - when x"177" => DATA <= x"0d0d"; - when x"178" => DATA <= x"8000"; - when x"179" => DATA <= x"0808"; - when x"17a" => DATA <= x"8080"; - when x"17b" => DATA <= x"15c0"; - when x"17c" => DATA <= x"000a"; - when x"17d" => DATA <= x"09f7"; - when x"17e" => DATA <= x"0358"; - when x"17f" => DATA <= x"65c1"; - when x"180" => DATA <= x"0002"; - when x"181" => DATA <= x"15c2"; - when x"182" => DATA <= x"0003"; - when x"183" => DATA <= x"09f7"; - when x"184" => DATA <= x"032a"; - when x"185" => DATA <= x"15c0"; - when x"186" => DATA <= x"0007"; - when x"187" => DATA <= x"09f7"; - when x"188" => DATA <= x"0344"; - when x"189" => DATA <= x"0a00"; - when x"18a" => DATA <= x"09f7"; - when x"18b" => DATA <= x"033e"; - when x"18c" => DATA <= x"09f7"; - when x"18d" => DATA <= x"0166"; - when x"18e" => DATA <= x"65c0"; - when x"18f" => DATA <= x"ff80"; - when x"190" => DATA <= x"870b"; + when x"101" => DATA <= x"047a"; + when x"102" => DATA <= x"09f7"; + when x"103" => DATA <= x"028c"; + when x"104" => DATA <= x"1001"; + when x"105" => DATA <= x"0132"; + when x"106" => DATA <= x"2017"; + when x"107" => DATA <= x"0082"; + when x"108" => DATA <= x"8704"; + when x"109" => DATA <= x"0325"; + when x"10a" => DATA <= x"2017"; + when x"10b" => DATA <= x"0085"; + when x"10c" => DATA <= x"8724"; + when x"10d" => DATA <= x"15c0"; + when x"10e" => DATA <= x"0006"; + when x"10f" => DATA <= x"09f7"; + when x"110" => DATA <= x"0456"; + when x"111" => DATA <= x"1080"; + when x"112" => DATA <= x"09f7"; + when x"113" => DATA <= x"0456"; + when x"114" => DATA <= x"1580"; + when x"115" => DATA <= x"09f7"; + when x"116" => DATA <= x"0450"; + when x"117" => DATA <= x"2017"; + when x"118" => DATA <= x"009d"; + when x"119" => DATA <= x"031f"; + when x"11a" => DATA <= x"2017"; + when x"11b" => DATA <= x"008e"; + when x"11c" => DATA <= x"03da"; + when x"11d" => DATA <= x"1026"; + when x"11e" => DATA <= x"09f7"; + when x"11f" => DATA <= x"0254"; + when x"120" => DATA <= x"65c0"; + when x"121" => DATA <= x"ff80"; + when x"122" => DATA <= x"09f7"; + when x"123" => DATA <= x"024c"; + when x"124" => DATA <= x"45c0"; + when x"125" => DATA <= x"ff00"; + when x"126" => DATA <= x"1002"; + when x"127" => DATA <= x"00c0"; + when x"128" => DATA <= x"1001"; + when x"129" => DATA <= x"09f7"; + when x"12a" => DATA <= x"023e"; + when x"12b" => DATA <= x"45c0"; + when x"12c" => DATA <= x"ff00"; + when x"12d" => DATA <= x"5001"; + when x"12e" => DATA <= x"0109"; + when x"12f" => DATA <= x"15c0"; + when x"130" => DATA <= x"0086"; + when x"131" => DATA <= x"0cc0"; + when x"132" => DATA <= x"1c01"; + when x"133" => DATA <= x"f4ee"; + when x"134" => DATA <= x"1042"; + when x"135" => DATA <= x"00c2"; + when x"136" => DATA <= x"45c2"; + when x"137" => DATA <= x"ff00"; + when x"138" => DATA <= x"1580"; + when x"139" => DATA <= x"0087"; + when x"13a" => DATA <= x"0bc0"; + when x"13b" => DATA <= x"034d"; + when x"13c" => DATA <= x"10e6"; + when x"13d" => DATA <= x"10a6"; + when x"13e" => DATA <= x"1026"; + when x"13f" => DATA <= x"15c0"; + when x"140" => DATA <= x"0008"; + when x"141" => DATA <= x"09f7"; + when x"142" => DATA <= x"03f8"; + when x"143" => DATA <= x"1380"; + when x"144" => DATA <= x"09f7"; + when x"145" => DATA <= x"03f2"; + when x"146" => DATA <= x"8bc0"; + when x"147" => DATA <= x"8003"; + when x"148" => DATA <= x"9442"; + when x"149" => DATA <= x"9243"; + when x"14a" => DATA <= x"010c"; + when x"14b" => DATA <= x"15c2"; + when x"14c" => DATA <= x"0010"; + when x"14d" => DATA <= x"15c3"; + when x"14e" => DATA <= x"0010"; + when x"14f" => DATA <= x"2017"; + when x"150" => DATA <= x"0015"; + when x"151" => DATA <= x"8605"; + when x"152" => DATA <= x"6000"; + when x"153" => DATA <= x"65c0"; + when x"154" => DATA <= x"fae8"; + when x"155" => DATA <= x"9402"; + when x"156" => DATA <= x"9203"; + when x"157" => DATA <= x"1080"; + when x"158" => DATA <= x"09f7"; + when x"159" => DATA <= x"03ca"; + when x"15a" => DATA <= x"6081"; + when x"15b" => DATA <= x"0ac2"; + when x"15c" => DATA <= x"2097"; + when x"15d" => DATA <= x"0080"; + when x"15e" => DATA <= x"8605"; + when x"15f" => DATA <= x"9840"; + when x"160" => DATA <= x"09f7"; + when x"161" => DATA <= x"03ba"; + when x"162" => DATA <= x"0ac2"; + when x"163" => DATA <= x"80fb"; + when x"164" => DATA <= x"10c0"; + when x"165" => DATA <= x"09f7"; + when x"166" => DATA <= x"03b0"; + when x"167" => DATA <= x"60c1"; + when x"168" => DATA <= x"0ac3"; + when x"169" => DATA <= x"20d7"; + when x"16a" => DATA <= x"0080"; + when x"16b" => DATA <= x"8605"; + when x"16c" => DATA <= x"09f7"; + when x"16d" => DATA <= x"01b8"; + when x"16e" => DATA <= x"9021"; + when x"16f" => DATA <= x"0ac3"; + when x"170" => DATA <= x"80fb"; + when x"171" => DATA <= x"1580"; + when x"172" => DATA <= x"1582"; + when x"173" => DATA <= x"1583"; + when x"174" => DATA <= x"0087"; + when x"175" => DATA <= x"0500"; + when x"176" => DATA <= x"0005"; + when x"177" => DATA <= x"0500"; + when x"178" => DATA <= x"0005"; + when x"179" => DATA <= x"0504"; + when x"17a" => DATA <= x"0005"; + when x"17b" => DATA <= x"0008"; + when x"17c" => DATA <= x"000e"; + when x"17d" => DATA <= x"0504"; + when x"17e" => DATA <= x"0901"; + when x"17f" => DATA <= x"0501"; + when x"180" => DATA <= x"0005"; + when x"181" => DATA <= x"0800"; + when x"182" => DATA <= x"1910"; + when x"183" => DATA <= x"0020"; + when x"184" => DATA <= x"0110"; + when x"185" => DATA <= x"0d0d"; + when x"186" => DATA <= x"8000"; + when x"187" => DATA <= x"0808"; + when x"188" => DATA <= x"8080"; + when x"189" => DATA <= x"15c0"; + when x"18a" => DATA <= x"000a"; + when x"18b" => DATA <= x"09f7"; + when x"18c" => DATA <= x"0364"; + when x"18d" => DATA <= x"65c1"; + when x"18e" => DATA <= x"0002"; + when x"18f" => DATA <= x"15c2"; + when x"190" => DATA <= x"0003"; when x"191" => DATA <= x"09f7"; - when x"192" => DATA <= x"fd7a"; - when x"193" => DATA <= x"0a02"; - when x"194" => DATA <= x"09f7"; - when x"195" => DATA <= x"0156"; - when x"196" => DATA <= x"9011"; - when x"197" => DATA <= x"0a82"; - when x"198" => DATA <= x"2017"; - when x"199" => DATA <= x"000d"; - when x"19a" => DATA <= x"02f9"; - when x"19b" => DATA <= x"0ac2"; - when x"19c" => DATA <= x"0087"; - when x"19d" => DATA <= x"10a6"; - when x"19e" => DATA <= x"1066"; - when x"19f" => DATA <= x"1026"; - when x"1a0" => DATA <= x"15c0"; - when x"1a1" => DATA <= x"000c"; + when x"192" => DATA <= x"0336"; + when x"193" => DATA <= x"15c0"; + when x"194" => DATA <= x"0007"; + when x"195" => DATA <= x"09f7"; + when x"196" => DATA <= x"0350"; + when x"197" => DATA <= x"0a00"; + when x"198" => DATA <= x"09f7"; + when x"199" => DATA <= x"034a"; + when x"19a" => DATA <= x"09f7"; + when x"19b" => DATA <= x"015c"; + when x"19c" => DATA <= x"65c0"; + when x"19d" => DATA <= x"ff80"; + when x"19e" => DATA <= x"870b"; + when x"19f" => DATA <= x"09f7"; + when x"1a0" => DATA <= x"fd5c"; + when x"1a1" => DATA <= x"0a02"; when x"1a2" => DATA <= x"09f7"; - when x"1a3" => DATA <= x"0308"; - when x"1a4" => DATA <= x"1081"; - when x"1a5" => DATA <= x"15c2"; - when x"1a6" => DATA <= x"0004"; - when x"1a7" => DATA <= x"09f7"; - when x"1a8" => DATA <= x"02e2"; - when x"1a9" => DATA <= x"1580"; - when x"1aa" => DATA <= x"09f7"; - when x"1ab" => DATA <= x"02fe"; - when x"1ac" => DATA <= x"09f7"; - when x"1ad" => DATA <= x"0126"; - when x"1ae" => DATA <= x"1026"; - when x"1af" => DATA <= x"15c2"; - when x"1b0" => DATA <= x"0004"; - when x"1b1" => DATA <= x"09f7"; - when x"1b2" => DATA <= x"02dc"; - when x"1b3" => DATA <= x"1580"; - when x"1b4" => DATA <= x"1581"; - when x"1b5" => DATA <= x"1582"; - when x"1b6" => DATA <= x"0087"; - when x"1b7" => DATA <= x"1026"; - when x"1b8" => DATA <= x"15c0"; - when x"1b9" => DATA <= x"0012"; + when x"1a3" => DATA <= x"014c"; + when x"1a4" => DATA <= x"9011"; + when x"1a5" => DATA <= x"0a82"; + when x"1a6" => DATA <= x"2017"; + when x"1a7" => DATA <= x"000d"; + when x"1a8" => DATA <= x"02f9"; + when x"1a9" => DATA <= x"0ac2"; + when x"1aa" => DATA <= x"0087"; + when x"1ab" => DATA <= x"10a6"; + when x"1ac" => DATA <= x"1066"; + when x"1ad" => DATA <= x"1026"; + when x"1ae" => DATA <= x"15c0"; + when x"1af" => DATA <= x"000c"; + when x"1b0" => DATA <= x"09f7"; + when x"1b1" => DATA <= x"0314"; + when x"1b2" => DATA <= x"1081"; + when x"1b3" => DATA <= x"15c2"; + when x"1b4" => DATA <= x"0004"; + when x"1b5" => DATA <= x"09f7"; + when x"1b6" => DATA <= x"02ee"; + when x"1b7" => DATA <= x"1580"; + when x"1b8" => DATA <= x"09f7"; + when x"1b9" => DATA <= x"030a"; when x"1ba" => DATA <= x"09f7"; - when x"1bb" => DATA <= x"02de"; - when x"1bc" => DATA <= x"1580"; - when x"1bd" => DATA <= x"09f7"; - when x"1be" => DATA <= x"02d8"; - when x"1bf" => DATA <= x"0bc0"; - when x"1c0" => DATA <= x"0206"; - when x"1c1" => DATA <= x"09f7"; - when x"1c2" => DATA <= x"02ce"; + when x"1bb" => DATA <= x"011c"; + when x"1bc" => DATA <= x"1026"; + when x"1bd" => DATA <= x"15c2"; + when x"1be" => DATA <= x"0004"; + when x"1bf" => DATA <= x"0133"; + when x"1c0" => DATA <= x"1026"; + when x"1c1" => DATA <= x"15c0"; + when x"1c2" => DATA <= x"0012"; when x"1c3" => DATA <= x"09f7"; - when x"1c4" => DATA <= x"00f8"; - when x"1c5" => DATA <= x"0a00"; - when x"1c6" => DATA <= x"0087"; - when x"1c7" => DATA <= x"1066"; - when x"1c8" => DATA <= x"09f7"; - when x"1c9" => DATA <= x"0292"; + when x"1c4" => DATA <= x"02f4"; + when x"1c5" => DATA <= x"1580"; + when x"1c6" => DATA <= x"09f7"; + when x"1c7" => DATA <= x"02ee"; + when x"1c8" => DATA <= x"0bc0"; + when x"1c9" => DATA <= x"0206"; when x"1ca" => DATA <= x"09f7"; - when x"1cb" => DATA <= x"00ea"; - when x"1cc" => DATA <= x"1581"; - when x"1cd" => DATA <= x"0087"; - when x"1ce" => DATA <= x"10a6"; - when x"1cf" => DATA <= x"1066"; - when x"1d0" => DATA <= x"1026"; - when x"1d1" => DATA <= x"15c0"; - when x"1d2" => DATA <= x"0014"; + when x"1cb" => DATA <= x"02e4"; + when x"1cc" => DATA <= x"09f7"; + when x"1cd" => DATA <= x"00f8"; + when x"1ce" => DATA <= x"0a00"; + when x"1cf" => DATA <= x"0087"; + when x"1d0" => DATA <= x"1066"; + when x"1d1" => DATA <= x"09f7"; + when x"1d2" => DATA <= x"02a8"; when x"1d3" => DATA <= x"09f7"; - when x"1d4" => DATA <= x"02ac"; - when x"1d5" => DATA <= x"65c1"; - when x"1d6" => DATA <= x"0002"; - when x"1d7" => DATA <= x"15c2"; - when x"1d8" => DATA <= x"0010"; - when x"1d9" => DATA <= x"09f7"; - when x"1da" => DATA <= x"027e"; - when x"1db" => DATA <= x"09f7"; - when x"1dc" => DATA <= x"fce6"; - when x"1dd" => DATA <= x"09f7"; - when x"1de" => DATA <= x"0268"; - when x"1df" => DATA <= x"1580"; - when x"1e0" => DATA <= x"09f7"; - when x"1e1" => DATA <= x"0292"; + when x"1d4" => DATA <= x"00ea"; + when x"1d5" => DATA <= x"1581"; + when x"1d6" => DATA <= x"0087"; + when x"1d7" => DATA <= x"10a6"; + when x"1d8" => DATA <= x"1066"; + when x"1d9" => DATA <= x"1026"; + when x"1da" => DATA <= x"15c0"; + when x"1db" => DATA <= x"0014"; + when x"1dc" => DATA <= x"09f7"; + when x"1dd" => DATA <= x"02c2"; + when x"1de" => DATA <= x"65c1"; + when x"1df" => DATA <= x"0002"; + when x"1e0" => DATA <= x"15c2"; + when x"1e1" => DATA <= x"0010"; when x"1e2" => DATA <= x"09f7"; - when x"1e3" => DATA <= x"00ba"; - when x"1e4" => DATA <= x"1381"; - when x"1e5" => DATA <= x"1026"; - when x"1e6" => DATA <= x"65c1"; - when x"1e7" => DATA <= x"0002"; - when x"1e8" => DATA <= x"15c2"; - when x"1e9" => DATA <= x"0010"; - when x"1ea" => DATA <= x"09f7"; - when x"1eb" => DATA <= x"026a"; - when x"1ec" => DATA <= x"1580"; - when x"1ed" => DATA <= x"1581"; - when x"1ee" => DATA <= x"1582"; - when x"1ef" => DATA <= x"0087"; - when x"1f0" => DATA <= x"8bc9"; - when x"1f1" => DATA <= x"0205"; - when x"1f2" => DATA <= x"0bc0"; - when x"1f3" => DATA <= x"0303"; - when x"1f4" => DATA <= x"2017"; - when x"1f5" => DATA <= x"0005"; - when x"1f6" => DATA <= x"8713"; - when x"1f7" => DATA <= x"10a6"; - when x"1f8" => DATA <= x"1026"; - when x"1f9" => DATA <= x"15c0"; - when x"1fa" => DATA <= x"0016"; - when x"1fb" => DATA <= x"09f7"; - when x"1fc" => DATA <= x"025c"; - when x"1fd" => DATA <= x"15c2"; - when x"1fe" => DATA <= x"000d"; - when x"1ff" => DATA <= x"09f7"; - when x"200" => DATA <= x"0232"; - when x"201" => DATA <= x"1580"; - when x"202" => DATA <= x"09f7"; - when x"203" => DATA <= x"024e"; - when x"204" => DATA <= x"15c2"; - when x"205" => DATA <= x"000d"; - when x"206" => DATA <= x"09f7"; - when x"207" => DATA <= x"0232"; - when x"208" => DATA <= x"1582"; - when x"209" => DATA <= x"0133"; - when x"20a" => DATA <= x"10a6"; - when x"20b" => DATA <= x"1026"; - when x"20c" => DATA <= x"1066"; - when x"20d" => DATA <= x"0a81"; - when x"20e" => DATA <= x"09f7"; - when x"20f" => DATA <= x"fc84"; - when x"210" => DATA <= x"1042"; - when x"211" => DATA <= x"1581"; - when x"212" => DATA <= x"2397"; - when x"213" => DATA <= x"0003"; - when x"214" => DATA <= x"8604"; - when x"215" => DATA <= x"9480"; - when x"216" => DATA <= x"09f7"; - when x"217" => DATA <= x"008c"; - when x"218" => DATA <= x"0104"; - when x"219" => DATA <= x"09f7"; - when x"21a" => DATA <= x"003e"; - when x"21b" => DATA <= x"870d"; - when x"21c" => DATA <= x"9012"; - when x"21d" => DATA <= x"8bf1"; - when x"21e" => DATA <= x"0005"; - when x"21f" => DATA <= x"0202"; - when x"220" => DATA <= x"8af1"; - when x"221" => DATA <= x"0006"; - when x"222" => DATA <= x"8af1"; - when x"223" => DATA <= x"0005"; - when x"224" => DATA <= x"02ed"; - when x"225" => DATA <= x"8bf1"; - when x"226" => DATA <= x"0006"; - when x"227" => DATA <= x"02ea"; - when x"228" => DATA <= x"00a1"; - when x"229" => DATA <= x"90b1"; - when x"22a" => DATA <= x"0001"; - when x"22b" => DATA <= x"00c2"; - when x"22c" => DATA <= x"90b1"; - when x"22d" => DATA <= x"0002"; - when x"22e" => DATA <= x"0bd6"; - when x"22f" => DATA <= x"1582"; - when x"230" => DATA <= x"15c0"; - when x"231" => DATA <= x"0000"; - when x"232" => DATA <= x"0087"; - when x"233" => DATA <= x"0bc1"; - when x"234" => DATA <= x"0305"; - when x"235" => DATA <= x"15c0"; - when x"236" => DATA <= x"000e"; - when x"237" => DATA <= x"09f7"; - when x"238" => DATA <= x"01de"; - when x"239" => DATA <= x"0103"; - when x"23a" => DATA <= x"0a00"; - when x"23b" => DATA <= x"09f7"; - when x"23c" => DATA <= x"01dc"; - when x"23d" => DATA <= x"09f7"; - when x"23e" => DATA <= x"0004"; - when x"23f" => DATA <= x"65c0"; - when x"240" => DATA <= x"ff80"; - when x"241" => DATA <= x"97c0"; - when x"242" => DATA <= x"fff4"; - when x"243" => DATA <= x"80fd"; - when x"244" => DATA <= x"97c0"; - when x"245" => DATA <= x"fff6"; - when x"246" => DATA <= x"0087"; - when x"247" => DATA <= x"0bc1"; - when x"248" => DATA <= x"0315"; - when x"249" => DATA <= x"1026"; - when x"24a" => DATA <= x"15c0"; - when x"24b" => DATA <= x"0010"; - when x"24c" => DATA <= x"09f7"; - when x"24d" => DATA <= x"01b4"; - when x"24e" => DATA <= x"1380"; - when x"24f" => DATA <= x"09f7"; - when x"250" => DATA <= x"01b4"; - when x"251" => DATA <= x"09f7"; - when x"252" => DATA <= x"ffdc"; - when x"253" => DATA <= x"1580"; - when x"254" => DATA <= x"0087"; - when x"255" => DATA <= x"25c0"; - when x"256" => DATA <= x"000d"; - when x"257" => DATA <= x"0206"; - when x"258" => DATA <= x"15c0"; - when x"259" => DATA <= x"000a"; + when x"1e3" => DATA <= x"0294"; + when x"1e4" => DATA <= x"09f7"; + when x"1e5" => DATA <= x"fcd2"; + when x"1e6" => DATA <= x"09f7"; + when x"1e7" => DATA <= x"027e"; + when x"1e8" => DATA <= x"1580"; + when x"1e9" => DATA <= x"09f7"; + when x"1ea" => DATA <= x"02a8"; + when x"1eb" => DATA <= x"09f7"; + when x"1ec" => DATA <= x"00ba"; + when x"1ed" => DATA <= x"1381"; + when x"1ee" => DATA <= x"1026"; + when x"1ef" => DATA <= x"65c1"; + when x"1f0" => DATA <= x"0002"; + when x"1f1" => DATA <= x"15c2"; + when x"1f2" => DATA <= x"0010"; + when x"1f3" => DATA <= x"09f7"; + when x"1f4" => DATA <= x"0280"; + when x"1f5" => DATA <= x"1580"; + when x"1f6" => DATA <= x"1581"; + when x"1f7" => DATA <= x"1582"; + when x"1f8" => DATA <= x"0087"; + when x"1f9" => DATA <= x"8bc9"; + when x"1fa" => DATA <= x"0205"; + when x"1fb" => DATA <= x"0bc0"; + when x"1fc" => DATA <= x"0303"; + when x"1fd" => DATA <= x"2017"; + when x"1fe" => DATA <= x"0005"; + when x"1ff" => DATA <= x"8713"; + when x"200" => DATA <= x"10a6"; + when x"201" => DATA <= x"1026"; + when x"202" => DATA <= x"15c0"; + when x"203" => DATA <= x"0016"; + when x"204" => DATA <= x"09f7"; + when x"205" => DATA <= x"0272"; + when x"206" => DATA <= x"15c2"; + when x"207" => DATA <= x"000d"; + when x"208" => DATA <= x"09f7"; + when x"209" => DATA <= x"0248"; + when x"20a" => DATA <= x"1580"; + when x"20b" => DATA <= x"09f7"; + when x"20c" => DATA <= x"0264"; + when x"20d" => DATA <= x"15c2"; + when x"20e" => DATA <= x"000d"; + when x"20f" => DATA <= x"09f7"; + when x"210" => DATA <= x"0248"; + when x"211" => DATA <= x"1582"; + when x"212" => DATA <= x"0133"; + when x"213" => DATA <= x"10a6"; + when x"214" => DATA <= x"1026"; + when x"215" => DATA <= x"1066"; + when x"216" => DATA <= x"0a81"; + when x"217" => DATA <= x"09f7"; + when x"218" => DATA <= x"fc70"; + when x"219" => DATA <= x"1042"; + when x"21a" => DATA <= x"1581"; + when x"21b" => DATA <= x"2397"; + when x"21c" => DATA <= x"0003"; + when x"21d" => DATA <= x"8604"; + when x"21e" => DATA <= x"9480"; + when x"21f" => DATA <= x"09f7"; + when x"220" => DATA <= x"008c"; + when x"221" => DATA <= x"0104"; + when x"222" => DATA <= x"09f7"; + when x"223" => DATA <= x"003e"; + when x"224" => DATA <= x"870d"; + when x"225" => DATA <= x"9012"; + when x"226" => DATA <= x"8bf1"; + when x"227" => DATA <= x"0005"; + when x"228" => DATA <= x"0202"; + when x"229" => DATA <= x"8af1"; + when x"22a" => DATA <= x"0006"; + when x"22b" => DATA <= x"8af1"; + when x"22c" => DATA <= x"0005"; + when x"22d" => DATA <= x"02ed"; + when x"22e" => DATA <= x"8bf1"; + when x"22f" => DATA <= x"0006"; + when x"230" => DATA <= x"02ea"; + when x"231" => DATA <= x"00a1"; + when x"232" => DATA <= x"90b1"; + when x"233" => DATA <= x"0001"; + when x"234" => DATA <= x"00c2"; + when x"235" => DATA <= x"90b1"; + when x"236" => DATA <= x"0002"; + when x"237" => DATA <= x"0bd6"; + when x"238" => DATA <= x"1582"; + when x"239" => DATA <= x"15c0"; + when x"23a" => DATA <= x"0000"; + when x"23b" => DATA <= x"0087"; + when x"23c" => DATA <= x"0bc1"; + when x"23d" => DATA <= x"0305"; + when x"23e" => DATA <= x"15c0"; + when x"23f" => DATA <= x"000e"; + when x"240" => DATA <= x"09f7"; + when x"241" => DATA <= x"01f4"; + when x"242" => DATA <= x"0103"; + when x"243" => DATA <= x"0a00"; + when x"244" => DATA <= x"09f7"; + when x"245" => DATA <= x"01f2"; + when x"246" => DATA <= x"09f7"; + when x"247" => DATA <= x"0004"; + when x"248" => DATA <= x"65c0"; + when x"249" => DATA <= x"ff80"; + when x"24a" => DATA <= x"97c0"; + when x"24b" => DATA <= x"fff4"; + when x"24c" => DATA <= x"80fd"; + when x"24d" => DATA <= x"97c0"; + when x"24e" => DATA <= x"fff6"; + when x"24f" => DATA <= x"0087"; + when x"250" => DATA <= x"0bc1"; + when x"251" => DATA <= x"0315"; + when x"252" => DATA <= x"1026"; + when x"253" => DATA <= x"15c0"; + when x"254" => DATA <= x"0010"; + when x"255" => DATA <= x"09f7"; + when x"256" => DATA <= x"01ca"; + when x"257" => DATA <= x"1380"; + when x"258" => DATA <= x"09f7"; + when x"259" => DATA <= x"01ca"; when x"25a" => DATA <= x"09f7"; - when x"25b" => DATA <= x"0004"; - when x"25c" => DATA <= x"15c0"; - when x"25d" => DATA <= x"000d"; - when x"25e" => DATA <= x"1026"; - when x"25f" => DATA <= x"97c0"; - when x"260" => DATA <= x"fff0"; - when x"261" => DATA <= x"45c0"; - when x"262" => DATA <= x"00bf"; - when x"263" => DATA <= x"03fb"; - when x"264" => DATA <= x"1580"; - when x"265" => DATA <= x"901f"; - when x"266" => DATA <= x"fff2"; - when x"267" => DATA <= x"0087"; - when x"268" => DATA <= x"45f6"; + when x"25b" => DATA <= x"ffdc"; + when x"25c" => DATA <= x"1580"; + when x"25d" => DATA <= x"0087"; + when x"25e" => DATA <= x"25c0"; + when x"25f" => DATA <= x"000d"; + when x"260" => DATA <= x"0206"; + when x"261" => DATA <= x"15c0"; + when x"262" => DATA <= x"000a"; + when x"263" => DATA <= x"09f7"; + when x"264" => DATA <= x"0004"; + when x"265" => DATA <= x"15c0"; + when x"266" => DATA <= x"000d"; + when x"267" => DATA <= x"1026"; + when x"268" => DATA <= x"97c0"; when x"269" => DATA <= x"fff0"; - when x"26a" => DATA <= x"0002"; - when x"26b" => DATA <= x"17e6"; - when x"26c" => DATA <= x"f5e8"; - when x"26d" => DATA <= x"17e6"; - when x"26e" => DATA <= x"f5f4"; - when x"26f" => DATA <= x"119f"; - when x"270" => DATA <= x"f5f4"; - when x"271" => DATA <= x"15df"; - when x"272" => DATA <= x"fd1a"; - when x"273" => DATA <= x"f5e8"; - when x"274" => DATA <= x"1026"; - when x"275" => DATA <= x"1026"; - when x"276" => DATA <= x"1d80"; - when x"277" => DATA <= x"0008"; - when x"278" => DATA <= x"1c00"; - when x"279" => DATA <= x"fffe"; - when x"27a" => DATA <= x"45c0"; - when x"27b" => DATA <= x"ff00"; - when x"27c" => DATA <= x"6000"; - when x"27d" => DATA <= x"67c0"; - when x"27e" => DATA <= x"f5f6"; - when x"27f" => DATA <= x"1236"; - when x"280" => DATA <= x"0002"; - when x"281" => DATA <= x"1580"; - when x"282" => DATA <= x"09de"; - when x"283" => DATA <= x"8509"; - when x"284" => DATA <= x"8603"; - when x"285" => DATA <= x"55f6"; - when x"286" => DATA <= x"0001"; - when x"287" => DATA <= x"0006"; - when x"288" => DATA <= x"159f"; - when x"289" => DATA <= x"f5f4"; - when x"28a" => DATA <= x"159f"; - when x"28b" => DATA <= x"f5e8"; + when x"26a" => DATA <= x"45c0"; + when x"26b" => DATA <= x"00bf"; + when x"26c" => DATA <= x"03fb"; + when x"26d" => DATA <= x"1580"; + when x"26e" => DATA <= x"901f"; + when x"26f" => DATA <= x"fff2"; + when x"270" => DATA <= x"0087"; + when x"271" => DATA <= x"880f"; + when x"272" => DATA <= x"42ff"; + when x"273" => DATA <= x"6461"; + when x"274" => DATA <= x"0000"; + when x"275" => DATA <= x"45f6"; + when x"276" => DATA <= x"fff0"; + when x"277" => DATA <= x"0002"; + when x"278" => DATA <= x"17e6"; + when x"279" => DATA <= x"f5e0"; + when x"27a" => DATA <= x"17e6"; + when x"27b" => DATA <= x"f5ec"; + when x"27c" => DATA <= x"119f"; + when x"27d" => DATA <= x"f5ec"; + when x"27e" => DATA <= x"15df"; + when x"27f" => DATA <= x"fd20"; + when x"280" => DATA <= x"f5e0"; + when x"281" => DATA <= x"0be6"; + when x"282" => DATA <= x"1026"; + when x"283" => DATA <= x"1d80"; + when x"284" => DATA <= x"0008"; + when x"285" => DATA <= x"1800"; + when x"286" => DATA <= x"45c0"; + when x"287" => DATA <= x"ff00"; + when x"288" => DATA <= x"6000"; + when x"289" => DATA <= x"67c0"; + when x"28a" => DATA <= x"f5ee"; + when x"28b" => DATA <= x"1236"; when x"28c" => DATA <= x"0002"; - when x"28d" => DATA <= x"17c6"; - when x"28e" => DATA <= x"f5f4"; - when x"28f" => DATA <= x"55f6"; - when x"290" => DATA <= x"0002"; - when x"291" => DATA <= x"0006"; - when x"292" => DATA <= x"01f5"; - when x"293" => DATA <= x"0bd6"; - when x"294" => DATA <= x"159f"; - when x"295" => DATA <= x"f5f4"; - when x"296" => DATA <= x"159f"; - when x"297" => DATA <= x"f5e8"; - when x"298" => DATA <= x"1380"; - when x"299" => DATA <= x"17ce"; - when x"29a" => DATA <= x"f5e8"; - when x"29b" => DATA <= x"0002"; - when x"29c" => DATA <= x"0bd6"; - when x"29d" => DATA <= x"159f"; - when x"29e" => DATA <= x"f5f4"; - when x"29f" => DATA <= x"159f"; - when x"2a0" => DATA <= x"f5e8"; - when x"2a1" => DATA <= x"1026"; - when x"2a2" => DATA <= x"810d"; - when x"2a3" => DATA <= x"2017"; - when x"2a4" => DATA <= x"0100"; - when x"2a5" => DATA <= x"8608"; - when x"2a6" => DATA <= x"6000"; - when x"2a7" => DATA <= x"67c0"; - when x"2a8" => DATA <= x"f5f6"; - when x"2a9" => DATA <= x"1226"; - when x"2aa" => DATA <= x"0bc1"; - when x"2ab" => DATA <= x"0301"; - when x"2ac" => DATA <= x"1048"; - when x"2ad" => DATA <= x"1581"; - when x"2ae" => DATA <= x"1580"; - when x"2af" => DATA <= x"0002"; - when x"2b0" => DATA <= x"0a40"; - when x"2b1" => DATA <= x"2017"; - when x"2b2" => DATA <= x"0006"; - when x"2b3" => DATA <= x"86fa"; - when x"2b4" => DATA <= x"6000"; - when x"2b5" => DATA <= x"6000"; - when x"2b6" => DATA <= x"65c0"; - when x"2b7" => DATA <= x"f5e0"; - when x"2b8" => DATA <= x"1226"; - when x"2b9" => DATA <= x"0bc1"; - when x"2ba" => DATA <= x"0301"; - when x"2bb" => DATA <= x"1048"; - when x"2bc" => DATA <= x"0bd0"; - when x"2bd" => DATA <= x"1226"; - when x"2be" => DATA <= x"0bc2"; - when x"2bf" => DATA <= x"0301"; - when x"2c0" => DATA <= x"1088"; - when x"2c1" => DATA <= x"1582"; - when x"2c2" => DATA <= x"1581"; - when x"2c3" => DATA <= x"1580"; - when x"2c4" => DATA <= x"0002"; - when x"2c5" => DATA <= x"2017"; - when x"2c6" => DATA <= x"0001"; - when x"2c7" => DATA <= x"0306"; - when x"2c8" => DATA <= x"2017"; - when x"2c9" => DATA <= x"0002"; - when x"2ca" => DATA <= x"0314"; - when x"2cb" => DATA <= x"0087"; - when x"2cc" => DATA <= x"007f"; - when x"2cd" => DATA <= x"f844"; - when x"2ce" => DATA <= x"15df"; - when x"2cf" => DATA <= x"fcd0"; - when x"2d0" => DATA <= x"0018"; - when x"2d1" => DATA <= x"0a1f"; - when x"2d2" => DATA <= x"001a"; - when x"2d3" => DATA <= x"15df"; - when x"2d4" => DATA <= x"ffd4"; - when x"2d5" => DATA <= x"0080"; - when x"2d6" => DATA <= x"15df"; - when x"2d7" => DATA <= x"00e0"; - when x"2d8" => DATA <= x"0082"; - when x"2d9" => DATA <= x"15df"; - when x"2da" => DATA <= x"fe82"; - when x"2db" => DATA <= x"0084"; - when x"2dc" => DATA <= x"15df"; - when x"2dd" => DATA <= x"00c0"; - when x"2de" => DATA <= x"0086"; - when x"2df" => DATA <= x"15c2"; - when x"2e0" => DATA <= x"f5e0"; - when x"2e1" => DATA <= x"15c1"; - when x"2e2" => DATA <= x"fde4"; - when x"2e3" => DATA <= x"15c0"; - when x"2e4" => DATA <= x"0020"; - when x"2e5" => DATA <= x"17e6"; - when x"2e6" => DATA <= x"f5fc"; - when x"2e7" => DATA <= x"1452"; - when x"2e8" => DATA <= x"0ac0"; - when x"2e9" => DATA <= x"02fd"; - when x"2ea" => DATA <= x"159f"; - when x"2eb" => DATA <= x"f5fc"; - when x"2ec" => DATA <= x"15c0"; - when x"2ed" => DATA <= x"00f0"; - when x"2ee" => DATA <= x"1252"; - when x"2ef" => DATA <= x"0ac0"; - when x"2f0" => DATA <= x"02fd"; - when x"2f1" => DATA <= x"0087"; - when x"2f2" => DATA <= x"f83c"; - when x"2f3" => DATA <= x"0000"; - when x"2f4" => DATA <= x"f898"; - when x"2f5" => DATA <= x"f5ff"; - when x"2f6" => DATA <= x"f882"; - when x"2f7" => DATA <= x"f500"; - when x"2f8" => DATA <= x"fd96"; - when x"2f9" => DATA <= x"0100"; - when x"2fa" => DATA <= x"feba"; - when x"2fb" => DATA <= x"f500"; - when x"2fc" => DATA <= x"0000"; - when x"2fd" => DATA <= x"f600"; - when x"2fe" => DATA <= x"0000"; - when x"2ff" => DATA <= x"0000"; - when x"300" => DATA <= x"f81c"; - when x"301" => DATA <= x"0000"; - when x"302" => DATA <= x"fd98"; - when x"303" => DATA <= x"f8c0"; - when x"304" => DATA <= x"f9c6"; - when x"305" => DATA <= x"fa58"; - when x"306" => DATA <= x"fcbc"; - when x"307" => DATA <= x"fcb0"; - when x"308" => DATA <= x"fc74"; - when x"309" => DATA <= x"fb9c"; - when x"30a" => DATA <= x"fb3a"; - when x"30b" => DATA <= x"fc66"; - when x"30c" => DATA <= x"fc8e"; - when x"30d" => DATA <= x"fbe0"; - when x"30e" => DATA <= x"fb6e"; - when x"30f" => DATA <= x"fd8a"; - when x"310" => DATA <= x"fd38"; - when x"311" => DATA <= x"fd26"; - when x"312" => DATA <= x"fd96"; - when x"313" => DATA <= x"9440"; - when x"314" => DATA <= x"09f7"; - when x"315" => DATA <= x"002a"; - when x"316" => DATA <= x"2017"; - when x"317" => DATA <= x"000d"; - when x"318" => DATA <= x"02fa"; - when x"319" => DATA <= x"0087"; - when x"31a" => DATA <= x"6081"; - when x"31b" => DATA <= x"9840"; - when x"31c" => DATA <= x"09f7"; - when x"31d" => DATA <= x"001a"; - when x"31e" => DATA <= x"0ac2"; - when x"31f" => DATA <= x"02fb"; - when x"320" => DATA <= x"0087"; - when x"321" => DATA <= x"6081"; - when x"322" => DATA <= x"09f7"; - when x"323" => DATA <= x"fe3a"; - when x"324" => DATA <= x"9021"; - when x"325" => DATA <= x"0ac2"; - when x"326" => DATA <= x"02fb"; - when x"327" => DATA <= x"0087"; + when x"28d" => DATA <= x"1580"; + when x"28e" => DATA <= x"09de"; + when x"28f" => DATA <= x"8405"; + when x"290" => DATA <= x"17c6"; + when x"291" => DATA <= x"f5ec"; + when x"292" => DATA <= x"55f6"; + when x"293" => DATA <= x"0002"; + when x"294" => DATA <= x"0006"; + when x"295" => DATA <= x"8603"; + when x"296" => DATA <= x"55f6"; + when x"297" => DATA <= x"0001"; + when x"298" => DATA <= x"0006"; + when x"299" => DATA <= x"159f"; + when x"29a" => DATA <= x"f5ec"; + when x"29b" => DATA <= x"159f"; + when x"29c" => DATA <= x"f5e0"; + when x"29d" => DATA <= x"0002"; + when x"29e" => DATA <= x"1d80"; + when x"29f" => DATA <= x"0006"; + when x"2a0" => DATA <= x"1db6"; -- was 17f6 + when x"2a1" => DATA <= x"0004"; -- was f5e0 + when x"2a2" => DATA <= x"0006"; + when x"2a3" => DATA <= x"0087"; + when x"2a4" => DATA <= x"0bd6"; + when x"2a5" => DATA <= x"159f"; + when x"2a6" => DATA <= x"f5ec"; + when x"2a7" => DATA <= x"159f"; + when x"2a8" => DATA <= x"f5e0"; + when x"2a9" => DATA <= x"1026"; + when x"2aa" => DATA <= x"810b"; + when x"2ab" => DATA <= x"2017"; + when x"2ac" => DATA <= x"0100"; + when x"2ad" => DATA <= x"861b"; + when x"2ae" => DATA <= x"6000"; + when x"2af" => DATA <= x"67c0"; + when x"2b0" => DATA <= x"f5ee"; + when x"2b1" => DATA <= x"1226"; + when x"2b2" => DATA <= x"0bc1"; + when x"2b3" => DATA <= x"0314"; + when x"2b4" => DATA <= x"1048"; + when x"2b5" => DATA <= x"0112"; + when x"2b6" => DATA <= x"0a40"; + when x"2b7" => DATA <= x"2017"; + when x"2b8" => DATA <= x"0006"; + when x"2b9" => DATA <= x"860f"; + when x"2ba" => DATA <= x"6000"; + when x"2bb" => DATA <= x"6000"; + when x"2bc" => DATA <= x"65c0"; + when x"2bd" => DATA <= x"f5d8"; + when x"2be" => DATA <= x"1226"; + when x"2bf" => DATA <= x"0bc1"; + when x"2c0" => DATA <= x"0301"; + when x"2c1" => DATA <= x"1048"; + when x"2c2" => DATA <= x"0bd0"; + when x"2c3" => DATA <= x"1226"; + when x"2c4" => DATA <= x"0bc2"; + when x"2c5" => DATA <= x"0301"; + when x"2c6" => DATA <= x"1088"; + when x"2c7" => DATA <= x"1582"; + when x"2c8" => DATA <= x"1581"; + when x"2c9" => DATA <= x"1580"; + when x"2ca" => DATA <= x"0002"; + when x"2cb" => DATA <= x"0bc0"; + when x"2cc" => DATA <= x"0306"; + when x"2cd" => DATA <= x"2017"; + when x"2ce" => DATA <= x"0001"; + when x"2cf" => DATA <= x"0306"; + when x"2d0" => DATA <= x"2017"; + when x"2d1" => DATA <= x"0004"; + when x"2d2" => DATA <= x"871c"; + when x"2d3" => DATA <= x"0087"; + when x"2d4" => DATA <= x"007f"; + when x"2d5" => DATA <= x"f82c"; + when x"2d6" => DATA <= x"0a00"; + when x"2d7" => DATA <= x"15d0"; + when x"2d8" => DATA <= x"ffda"; + when x"2d9" => DATA <= x"0a10"; + when x"2da" => DATA <= x"2017"; + when x"2db" => DATA <= x"0100"; + when x"2dc" => DATA <= x"02fa"; + when x"2dd" => DATA <= x"15df"; + when x"2de" => DATA <= x"fce2"; + when x"2df" => DATA <= x"001c"; + when x"2e0" => DATA <= x"15df"; + when x"2e1" => DATA <= x"fcea"; + when x"2e2" => DATA <= x"0018"; + when x"2e3" => DATA <= x"15df"; + when x"2e4" => DATA <= x"ffd6"; + when x"2e5" => DATA <= x"0080"; + when x"2e6" => DATA <= x"15df"; + when x"2e7" => DATA <= x"00e0"; + when x"2e8" => DATA <= x"0082"; + when x"2e9" => DATA <= x"15df"; + when x"2ea" => DATA <= x"feaa"; + when x"2eb" => DATA <= x"0084"; + when x"2ec" => DATA <= x"15df"; + when x"2ed" => DATA <= x"00c0"; + when x"2ee" => DATA <= x"0086"; + when x"2ef" => DATA <= x"15c2"; + when x"2f0" => DATA <= x"f5d8"; + when x"2f1" => DATA <= x"15c1"; + when x"2f2" => DATA <= x"fe04"; + when x"2f3" => DATA <= x"15c0"; + when x"2f4" => DATA <= x"0024"; + when x"2f5" => DATA <= x"17e6"; + when x"2f6" => DATA <= x"f5fc"; + when x"2f7" => DATA <= x"1452"; + when x"2f8" => DATA <= x"0ac0"; + when x"2f9" => DATA <= x"02fd"; + when x"2fa" => DATA <= x"159f"; + when x"2fb" => DATA <= x"f5fc"; + when x"2fc" => DATA <= x"15c0"; + when x"2fd" => DATA <= x"00f0"; + when x"2fe" => DATA <= x"1252"; + when x"2ff" => DATA <= x"0ac0"; + when x"300" => DATA <= x"02fd"; + when x"301" => DATA <= x"0087"; + when x"302" => DATA <= x"f83c"; + when x"303" => DATA <= x"0000"; + when x"304" => DATA <= x"f896"; + when x"305" => DATA <= x"f5ff"; + when x"306" => DATA <= x"f880"; + when x"307" => DATA <= x"f500"; + when x"308" => DATA <= x"fda6"; + when x"309" => DATA <= x"0000"; + when x"30a" => DATA <= x"ffda"; + when x"30b" => DATA <= x"0000"; + when x"30c" => DATA <= x"0000"; + when x"30d" => DATA <= x"f600"; + when x"30e" => DATA <= x"0000"; + when x"30f" => DATA <= x"f804"; + when x"310" => DATA <= x"0100"; + when x"311" => DATA <= x"f500"; + when x"312" => DATA <= x"0000"; + when x"313" => DATA <= x"0000"; + when x"314" => DATA <= x"f81c"; + when x"315" => DATA <= x"0000"; + when x"316" => DATA <= x"fda8"; + when x"317" => DATA <= x"f8be"; + when x"318" => DATA <= x"f9f0"; + when x"319" => DATA <= x"fa74"; + when x"31a" => DATA <= x"fcce"; + when x"31b" => DATA <= x"fcc2"; + when x"31c" => DATA <= x"fc86"; + when x"31d" => DATA <= x"fbae"; + when x"31e" => DATA <= x"fb56"; + when x"31f" => DATA <= x"fc78"; + when x"320" => DATA <= x"fca0"; + when x"321" => DATA <= x"fbf2"; + when x"322" => DATA <= x"fb80"; + when x"323" => DATA <= x"fd96"; + when x"324" => DATA <= x"fd48"; + when x"325" => DATA <= x"fd3c"; + when x"326" => DATA <= x"fda6"; + when x"327" => DATA <= x"9440"; when x"328" => DATA <= x"09f7"; - when x"329" => DATA <= x"0002"; - when x"32a" => DATA <= x"1040"; - when x"32b" => DATA <= x"1026"; - when x"32c" => DATA <= x"97c0"; - when x"32d" => DATA <= x"fff4"; - when x"32e" => DATA <= x"45c0"; - when x"32f" => DATA <= x"00bf"; - when x"330" => DATA <= x"03fb"; - when x"331" => DATA <= x"1580"; - when x"332" => DATA <= x"901f"; - when x"333" => DATA <= x"fff6"; + when x"329" => DATA <= x"002a"; + when x"32a" => DATA <= x"2017"; + when x"32b" => DATA <= x"000d"; + when x"32c" => DATA <= x"02fa"; + when x"32d" => DATA <= x"0087"; + when x"32e" => DATA <= x"6081"; + when x"32f" => DATA <= x"9840"; + when x"330" => DATA <= x"09f7"; + when x"331" => DATA <= x"001a"; + when x"332" => DATA <= x"0ac2"; + when x"333" => DATA <= x"02fb"; when x"334" => DATA <= x"0087"; - when x"335" => DATA <= x"97c0"; - when x"336" => DATA <= x"fff0"; - when x"337" => DATA <= x"80fd"; - when x"338" => DATA <= x"97c0"; - when x"339" => DATA <= x"fff2"; - when x"33a" => DATA <= x"0087"; - when x"33b" => DATA <= x"97c0"; - when x"33c" => DATA <= x"fffc"; - when x"33d" => DATA <= x"80fd"; - when x"33e" => DATA <= x"97c0"; - when x"33f" => DATA <= x"fffe"; - when x"340" => DATA <= x"0087"; - when x"341" => DATA <= x"1026"; - when x"342" => DATA <= x"97c0"; - when x"343" => DATA <= x"fffc"; - when x"344" => DATA <= x"811d"; - when x"345" => DATA <= x"97c0"; - when x"346" => DATA <= x"fff0"; - when x"347" => DATA <= x"8103"; - when x"348" => DATA <= x"1580"; - when x"349" => DATA <= x"007f"; - when x"34a" => DATA <= x"f75a"; - when x"34b" => DATA <= x"97c0"; - when x"34c" => DATA <= x"fff2"; - when x"34d" => DATA <= x"8110"; - when x"34e" => DATA <= x"1066"; - when x"34f" => DATA <= x"10a6"; - when x"350" => DATA <= x"09f7"; - when x"351" => DATA <= x"ffc6"; - when x"352" => DATA <= x"1002"; - when x"353" => DATA <= x"09f7"; - when x"354" => DATA <= x"ffc0"; - when x"355" => DATA <= x"1001"; - when x"356" => DATA <= x"09f7"; - when x"357" => DATA <= x"ffba"; - when x"358" => DATA <= x"09ff"; - when x"359" => DATA <= x"f738"; - when x"35a" => DATA <= x"1582"; - when x"35b" => DATA <= x"1581"; + when x"335" => DATA <= x"6081"; + when x"336" => DATA <= x"09f7"; + when x"337" => DATA <= x"fe24"; + when x"338" => DATA <= x"9021"; + when x"339" => DATA <= x"0ac2"; + when x"33a" => DATA <= x"02fb"; + when x"33b" => DATA <= x"0087"; + when x"33c" => DATA <= x"09f7"; + when x"33d" => DATA <= x"0002"; + when x"33e" => DATA <= x"1040"; + when x"33f" => DATA <= x"1026"; + when x"340" => DATA <= x"97c0"; + when x"341" => DATA <= x"fff4"; + when x"342" => DATA <= x"45c0"; + when x"343" => DATA <= x"00bf"; + when x"344" => DATA <= x"03fb"; + when x"345" => DATA <= x"1580"; + when x"346" => DATA <= x"901f"; + when x"347" => DATA <= x"fff6"; + when x"348" => DATA <= x"0087"; + when x"349" => DATA <= x"97c0"; + when x"34a" => DATA <= x"fff0"; + when x"34b" => DATA <= x"80fd"; + when x"34c" => DATA <= x"97c0"; + when x"34d" => DATA <= x"fff2"; + when x"34e" => DATA <= x"0087"; + when x"34f" => DATA <= x"97c0"; + when x"350" => DATA <= x"fffc"; + when x"351" => DATA <= x"80fd"; + when x"352" => DATA <= x"97c0"; + when x"353" => DATA <= x"fffe"; + when x"354" => DATA <= x"0087"; + when x"355" => DATA <= x"1026"; + when x"356" => DATA <= x"97c0"; + when x"357" => DATA <= x"fffc"; + when x"358" => DATA <= x"811c"; + when x"359" => DATA <= x"97c0"; + when x"35a" => DATA <= x"fff0"; + when x"35b" => DATA <= x"8103"; when x"35c" => DATA <= x"1580"; - when x"35d" => DATA <= x"0002"; - when x"35e" => DATA <= x"09ff"; - when x"35f" => DATA <= x"f724"; - when x"360" => DATA <= x"1580"; - when x"361" => DATA <= x"0002"; - when x"362" => DATA <= x"97c0"; - when x"363" => DATA <= x"fffe"; - when x"364" => DATA <= x"8016"; - when x"365" => DATA <= x"1066"; - when x"366" => DATA <= x"09f7"; - when x"367" => DATA <= x"fdb2"; - when x"368" => DATA <= x"17c1"; - when x"369" => DATA <= x"f5ea"; + when x"35d" => DATA <= x"007f"; + when x"35e" => DATA <= x"f72a"; + when x"35f" => DATA <= x"97c0"; + when x"360" => DATA <= x"fff2"; + when x"361" => DATA <= x"8110"; + when x"362" => DATA <= x"1066"; + when x"363" => DATA <= x"10a6"; + when x"364" => DATA <= x"09f7"; + when x"365" => DATA <= x"ffc6"; + when x"366" => DATA <= x"1002"; + when x"367" => DATA <= x"09f7"; + when x"368" => DATA <= x"ffc0"; + when x"369" => DATA <= x"1001"; when x"36a" => DATA <= x"09f7"; - when x"36b" => DATA <= x"fdaa"; - when x"36c" => DATA <= x"9011"; - when x"36d" => DATA <= x"09f7"; - when x"36e" => DATA <= x"fda4"; - when x"36f" => DATA <= x"9011"; - when x"370" => DATA <= x"02fc"; - when x"371" => DATA <= x"1581"; - when x"372" => DATA <= x"1580"; - when x"373" => DATA <= x"17c0"; - when x"374" => DATA <= x"f5ea"; - when x"375" => DATA <= x"17ce"; - when x"376" => DATA <= x"f5e8"; - when x"377" => DATA <= x"0002"; - when x"378" => DATA <= x"1580"; - when x"379" => DATA <= x"007f"; - when x"37a" => DATA <= x"f6f2"; - when x"37b" => DATA <= x"1026"; - when x"37c" => DATA <= x"09f7"; - when x"37d" => DATA <= x"ff7a"; - when x"37e" => DATA <= x"1580"; - when x"37f" => DATA <= x"2017"; - when x"380" => DATA <= x"0005"; - when x"381" => DATA <= x"0332"; - when x"382" => DATA <= x"1026"; - when x"383" => DATA <= x"09f7"; - when x"384" => DATA <= x"ff6c"; - when x"385" => DATA <= x"901f"; - when x"386" => DATA <= x"f5fb"; - when x"387" => DATA <= x"09f7"; - when x"388" => DATA <= x"ff64"; - when x"389" => DATA <= x"901f"; - when x"38a" => DATA <= x"f5fa"; - when x"38b" => DATA <= x"09f7"; - when x"38c" => DATA <= x"ff5c"; - when x"38d" => DATA <= x"901f"; - when x"38e" => DATA <= x"f5f9"; - when x"38f" => DATA <= x"09f7"; - when x"390" => DATA <= x"ff54"; - when x"391" => DATA <= x"901f"; - when x"392" => DATA <= x"f5f8"; - when x"393" => DATA <= x"97c0"; - when x"394" => DATA <= x"fffa"; - when x"395" => DATA <= x"97c0"; - when x"396" => DATA <= x"fffa"; - when x"397" => DATA <= x"09f7"; - when x"398" => DATA <= x"ff44"; - when x"399" => DATA <= x"1580"; - when x"39a" => DATA <= x"6000"; - when x"39b" => DATA <= x"1c1f"; - when x"39c" => DATA <= x"ffda"; - when x"39d" => DATA <= x"0080"; - when x"39e" => DATA <= x"1066"; - when x"39f" => DATA <= x"15c1"; - when x"3a0" => DATA <= x"0100"; - when x"3a1" => DATA <= x"2017"; - when x"3a2" => DATA <= x"000c"; - when x"3a3" => DATA <= x"870f"; - when x"3a4" => DATA <= x"0211"; - when x"3a5" => DATA <= x"17c0"; - when x"3a6" => DATA <= x"f5f8"; - when x"3a7" => DATA <= x"8bdf"; - when x"3a8" => DATA <= x"fff8"; - when x"3a9" => DATA <= x"80fd"; - when x"3aa" => DATA <= x"941f"; - when x"3ab" => DATA <= x"fffa"; - when x"3ac" => DATA <= x"0ac1"; - when x"3ad" => DATA <= x"02f9"; - when x"3ae" => DATA <= x"8bdf"; - when x"3af" => DATA <= x"fff8"; - when x"3b0" => DATA <= x"80fd"; - when x"3b1" => DATA <= x"8a1f"; - when x"3b2" => DATA <= x"fffa"; - when x"3b3" => DATA <= x"1581"; - when x"3b4" => DATA <= x"1580"; - when x"3b5" => DATA <= x"0002"; - when x"3b6" => DATA <= x"17c0"; - when x"3b7" => DATA <= x"f5f8"; - when x"3b8" => DATA <= x"8bdf"; - when x"3b9" => DATA <= x"fff8"; - when x"3ba" => DATA <= x"80fd"; - when x"3bb" => DATA <= x"97d0"; - when x"3bc" => DATA <= x"fffa"; - when x"3bd" => DATA <= x"0ac1"; - when x"3be" => DATA <= x"02f9"; - when x"3bf" => DATA <= x"1581"; - when x"3c0" => DATA <= x"1580"; - when x"3c1" => DATA <= x"0002"; - when x"3c2" => DATA <= x"1026"; - when x"3c3" => DATA <= x"17c0"; - when x"3c4" => DATA <= x"f5f8"; - when x"3c5" => DATA <= x"941f"; - when x"3c6" => DATA <= x"fffa"; - when x"3c7" => DATA <= x"101f"; - when x"3c8" => DATA <= x"f5f8"; - when x"3c9" => DATA <= x"1580"; - when x"3ca" => DATA <= x"0002"; - when x"3cb" => DATA <= x"1026"; - when x"3cc" => DATA <= x"17c0"; - when x"3cd" => DATA <= x"f5f8"; - when x"3ce" => DATA <= x"97d0"; - when x"3cf" => DATA <= x"fffa"; - when x"3d0" => DATA <= x"101f"; + when x"36b" => DATA <= x"ffba"; + when x"36c" => DATA <= x"09ff"; + when x"36d" => DATA <= x"f708"; + when x"36e" => DATA <= x"1582"; + when x"36f" => DATA <= x"1581"; + when x"370" => DATA <= x"1580"; + when x"371" => DATA <= x"0002"; + when x"372" => DATA <= x"09ff"; + when x"373" => DATA <= x"f6f4"; + when x"374" => DATA <= x"0156"; + when x"375" => DATA <= x"97c0"; + when x"376" => DATA <= x"fffe"; + when x"377" => DATA <= x"8013"; + when x"378" => DATA <= x"1066"; + when x"379" => DATA <= x"09f7"; + when x"37a" => DATA <= x"fd9e"; + when x"37b" => DATA <= x"17c1"; + when x"37c" => DATA <= x"f5e2"; + when x"37d" => DATA <= x"09f7"; + when x"37e" => DATA <= x"fd96"; + when x"37f" => DATA <= x"9011"; + when x"380" => DATA <= x"09f7"; + when x"381" => DATA <= x"fd90"; + when x"382" => DATA <= x"9011"; + when x"383" => DATA <= x"02fc"; + when x"384" => DATA <= x"1581"; + when x"385" => DATA <= x"1580"; + when x"386" => DATA <= x"17c0"; + when x"387" => DATA <= x"f5e2"; + when x"388" => DATA <= x"17ce"; + when x"389" => DATA <= x"f5e0"; + when x"38a" => DATA <= x"0002"; + when x"38b" => DATA <= x"1066"; + when x"38c" => DATA <= x"1001"; + when x"38d" => DATA <= x"09f7"; + when x"38e" => DATA <= x"ff80"; + when x"38f" => DATA <= x"2057"; + when x"390" => DATA <= x"0005"; + when x"391" => DATA <= x"03dd"; + when x"392" => DATA <= x"09f7"; + when x"393" => DATA <= x"ff76"; + when x"394" => DATA <= x"901f"; + when x"395" => DATA <= x"f5fb"; + when x"396" => DATA <= x"09f7"; + when x"397" => DATA <= x"ff6e"; + when x"398" => DATA <= x"901f"; + when x"399" => DATA <= x"f5fa"; + when x"39a" => DATA <= x"09f7"; + when x"39b" => DATA <= x"ff66"; + when x"39c" => DATA <= x"901f"; + when x"39d" => DATA <= x"f5f9"; + when x"39e" => DATA <= x"09f7"; + when x"39f" => DATA <= x"ff5e"; + when x"3a0" => DATA <= x"901f"; + when x"3a1" => DATA <= x"f5f8"; + when x"3a2" => DATA <= x"97c0"; + when x"3a3" => DATA <= x"fffa"; + when x"3a4" => DATA <= x"97c0"; + when x"3a5" => DATA <= x"fffa"; + when x"3a6" => DATA <= x"09f7"; + when x"3a7" => DATA <= x"ff4e"; + when x"3a8" => DATA <= x"6041"; + when x"3a9" => DATA <= x"1c5f"; + when x"3aa" => DATA <= x"ffdc"; + when x"3ab" => DATA <= x"0080"; + when x"3ac" => DATA <= x"17c0"; + when x"3ad" => DATA <= x"f5f8"; + when x"3ae" => DATA <= x"2057"; + when x"3af" => DATA <= x"000c"; + when x"3b0" => DATA <= x"87be"; + when x"3b1" => DATA <= x"030a"; + when x"3b2" => DATA <= x"15c1"; + when x"3b3" => DATA <= x"0100"; + when x"3b4" => DATA <= x"8bdf"; + when x"3b5" => DATA <= x"fff8"; + when x"3b6" => DATA <= x"80fd"; + when x"3b7" => DATA <= x"97d0"; + when x"3b8" => DATA <= x"fffa"; + when x"3b9" => DATA <= x"0ac1"; + when x"3ba" => DATA <= x"02f9"; + when x"3bb" => DATA <= x"010e"; + when x"3bc" => DATA <= x"15c1"; + when x"3bd" => DATA <= x"0100"; + when x"3be" => DATA <= x"8bdf"; + when x"3bf" => DATA <= x"fff8"; + when x"3c0" => DATA <= x"80fd"; + when x"3c1" => DATA <= x"941f"; + when x"3c2" => DATA <= x"fffa"; + when x"3c3" => DATA <= x"0ac1"; + when x"3c4" => DATA <= x"02f9"; + when x"3c5" => DATA <= x"8bdf"; + when x"3c6" => DATA <= x"fff8"; + when x"3c7" => DATA <= x"80fd"; + when x"3c8" => DATA <= x"8a1f"; + when x"3c9" => DATA <= x"fffa"; + when x"3ca" => DATA <= x"1581"; + when x"3cb" => DATA <= x"101f"; + when x"3cc" => DATA <= x"f5f8"; + when x"3cd" => DATA <= x"1580"; + when x"3ce" => DATA <= x"0002"; + when x"3cf" => DATA <= x"1026"; + when x"3d0" => DATA <= x"17c0"; when x"3d1" => DATA <= x"f5f8"; - when x"3d2" => DATA <= x"1580"; - when x"3d3" => DATA <= x"0002"; - when x"3d4" => DATA <= x"1026"; - when x"3d5" => DATA <= x"17c0"; - when x"3d6" => DATA <= x"f5f8"; - when x"3d7" => DATA <= x"941f"; - when x"3d8" => DATA <= x"fffa"; - when x"3d9" => DATA <= x"941f"; - when x"3da" => DATA <= x"fffa"; - when x"3db" => DATA <= x"101f"; - when x"3dc" => DATA <= x"f5f8"; - when x"3dd" => DATA <= x"1580"; - when x"3de" => DATA <= x"0002"; + when x"3d2" => DATA <= x"97d0"; + when x"3d3" => DATA <= x"fffa"; + when x"3d4" => DATA <= x"97d0"; + when x"3d5" => DATA <= x"fffa"; + when x"3d6" => DATA <= x"01f4"; + when x"3d7" => DATA <= x"1026"; + when x"3d8" => DATA <= x"17c0"; + when x"3d9" => DATA <= x"f5f8"; + when x"3da" => DATA <= x"941f"; + when x"3db" => DATA <= x"fffa"; + when x"3dc" => DATA <= x"941f"; + when x"3dd" => DATA <= x"fffa"; + when x"3de" => DATA <= x"01ec"; when x"3df" => DATA <= x"1026"; when x"3e0" => DATA <= x"17c0"; when x"3e1" => DATA <= x"f5f8"; when x"3e2" => DATA <= x"97d0"; when x"3e3" => DATA <= x"fffa"; - when x"3e4" => DATA <= x"97d0"; - when x"3e5" => DATA <= x"fffa"; - when x"3e6" => DATA <= x"101f"; + when x"3e4" => DATA <= x"01e6"; + when x"3e5" => DATA <= x"1026"; + when x"3e6" => DATA <= x"17c0"; when x"3e7" => DATA <= x"f5f8"; - when x"3e8" => DATA <= x"1580"; - when x"3e9" => DATA <= x"0002"; - when x"3ea" => DATA <= x"8a1f"; - when x"3eb" => DATA <= x"fffa"; - when x"3ec" => DATA <= x"0002"; - when x"3ed" => DATA <= x"ff84"; - when x"3ee" => DATA <= x"ff96"; - when x"3ef" => DATA <= x"ffa8"; - when x"3f0" => DATA <= x"ffbe"; - when x"3f1" => DATA <= x"ffd4"; - when x"3f2" => DATA <= x"ffd4"; - when x"3f3" => DATA <= x"ffd4"; - when x"3f4" => DATA <= x"ffd4"; - when x"3f5" => DATA <= x"0000"; + when x"3e8" => DATA <= x"941f"; + when x"3e9" => DATA <= x"fffa"; + when x"3ea" => DATA <= x"01e0"; + when x"3eb" => DATA <= x"8a1f"; + when x"3ec" => DATA <= x"fffa"; + when x"3ed" => DATA <= x"0002"; + when x"3ee" => DATA <= x"ffca"; + when x"3ef" => DATA <= x"ffbe"; + when x"3f0" => DATA <= x"ffae"; + when x"3f1" => DATA <= x"ff9e"; + when x"3f2" => DATA <= x"ffd6"; + when x"3f3" => DATA <= x"ffd6"; + when x"3f4" => DATA <= x"ffd6"; + when x"3f5" => DATA <= x"ffd6"; when x"3f6" => DATA <= x"0000"; when x"3f7" => DATA <= x"0000"; when x"3f8" => DATA <= x"0000"; From a0e0816a19c891c5c50f9953032ffbce72118253 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 30 Aug 2015 11:47:19 +0100 Subject: [PATCH 29/61] Implemented basic reconfig from the Host using *FX 151,230,N Change-Id: I13e3605c12a640543b09817c07924a06b6e4212f --- LX9Co-6502.xise | 24 +- LX9Co-6502fast.xise | 26 +- LX9Co-6809.xise | 18 +- LX9Co-BIST.xise | 2 +- LX9Co-PDP11.xise | 20 +- LX9Co-x86.xise | 24 +- LX9Co-z80.xise | 18 +- LX9Co-z80fast.xise | 24 +- LX9Co.xise | 4 + src/ICAP_config.v | 46 ++++ src/ICAP_core.v | 324 +++++++++++++++++++++++++ src/ICAP_reboot.v | 328 +------------------------- src/LX9Co_6SLX9TQG144_MB.ucf | 8 +- src/LX9Co_6SLX9TQG144_U1.ucf | 8 +- src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf | 8 +- src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf | 8 +- src/LX9Co_CoPro6502.vhd | 123 ++-------- src/LX9Co_CoPro6502fast.vhd | 152 +++--------- src/LX9Co_CoPro6809.vhd | 81 ++----- src/LX9Co_CoPro80186.v | 30 ++- src/LX9Co_CoProPDP11.vhd | 13 +- src/LX9Co_CoProZ80.vhd | 97 ++------ src/LX9Co_CoProZ80fast.vhd | 133 +++-------- 23 files changed, 659 insertions(+), 860 deletions(-) create mode 100644 src/ICAP_config.v create mode 100644 src/ICAP_core.v diff --git a/LX9Co-6502.xise b/LX9Co-6502.xise index 668256e..d8ff48f 100644 --- a/LX9Co-6502.xise +++ b/LX9Co-6502.xise @@ -16,13 +16,13 @@ - + - + @@ -31,7 +31,7 @@ - + @@ -43,13 +43,13 @@ - + - + - + @@ -61,7 +61,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -99,6 +99,14 @@ + + + + + + + + diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index 60fe357..87ad271 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -16,13 +16,13 @@ - + - + @@ -31,7 +31,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -91,20 +91,28 @@ - + - + - + + + + + + + + + diff --git a/LX9Co-6809.xise b/LX9Co-6809.xise index a712547..44f71fe 100644 --- a/LX9Co-6809.xise +++ b/LX9Co-6809.xise @@ -19,7 +19,7 @@ - + @@ -43,16 +43,16 @@ - + - + - + - + @@ -66,6 +66,14 @@ + + + + + + + + diff --git a/LX9Co-BIST.xise b/LX9Co-BIST.xise index 7c565b2..1d2c952 100644 --- a/LX9Co-BIST.xise +++ b/LX9Co-BIST.xise @@ -52,7 +52,7 @@ - + diff --git a/LX9Co-PDP11.xise b/LX9Co-PDP11.xise index dfa73d5..e6502f1 100644 --- a/LX9Co-PDP11.xise +++ b/LX9Co-PDP11.xise @@ -40,10 +40,10 @@
- + - + @@ -59,11 +59,11 @@ - + - + @@ -75,7 +75,15 @@ - + + + + + + + + + @@ -104,7 +112,7 @@ - + diff --git a/LX9Co-x86.xise b/LX9Co-x86.xise index f48fc49..3007af3 100644 --- a/LX9Co-x86.xise +++ b/LX9Co-x86.xise @@ -16,7 +16,7 @@ - + @@ -40,15 +40,15 @@ - + - + - + @@ -164,11 +164,11 @@ - + - + @@ -180,11 +180,11 @@ - + - + @@ -201,6 +201,14 @@ + + + + + + + + diff --git a/LX9Co-z80.xise b/LX9Co-z80.xise index eb6049a..b1ce9df 100644 --- a/LX9Co-z80.xise +++ b/LX9Co-z80.xise @@ -40,13 +40,13 @@
- + - + - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,15 @@ - + + + + + + + + + diff --git a/LX9Co-z80fast.xise b/LX9Co-z80fast.xise index 1314d52..8ac18d0 100644 --- a/LX9Co-z80fast.xise +++ b/LX9Co-z80fast.xise @@ -40,10 +40,10 @@
- + - + @@ -61,7 +61,7 @@ - + @@ -77,15 +77,15 @@ - + - + - + @@ -93,12 +93,20 @@ - + + + + + + + + + @@ -126,7 +134,7 @@ - + diff --git a/LX9Co.xise b/LX9Co.xise index 777d69b..f54f47c 100644 --- a/LX9Co.xise +++ b/LX9Co.xise @@ -24,6 +24,10 @@
+ + + + diff --git a/src/ICAP_config.v b/src/ICAP_config.v new file mode 100644 index 0000000..79b1cf4 --- /dev/null +++ b/src/ICAP_config.v @@ -0,0 +1,46 @@ +module ICAP_config + ( + input fastclk, + + // DIP switches in and out + input [3:0] sw_in, + output [3:0] sw_out, + + // Tube interface + input [2:0] h_addr, + input h_cs_b, + inout [7:0] h_data, + input h_phi2, + input h_rdnw, + input h_rst_b + ); + + reg reconfigure_on_reset = 1'b0; + reg reconfigure = 1'b0; + reg [4:0] design_num; + + ICAP_core instance_core + ( + .fastclk(fastclk), + .design_num(design_num), + .reconfigure(reconfigure), + .powerup(1'b0), + .sw_in(sw_in), + .sw_out(sw_out) + ); + + always @(posedge fastclk) begin + if (!h_rst_b) begin + reconfigure <= reconfigure_on_reset; + end + end + + // Implement a write only register at FEE6 + always @(negedge h_phi2) begin + if (!h_cs_b && !h_rdnw && h_addr == 3'b110) begin + design_num <= h_data[4:0]; + reconfigure_on_reset <= 1'b1; + end + end + +endmodule diff --git a/src/ICAP_core.v b/src/ICAP_core.v new file mode 100644 index 0000000..8a9a54c --- /dev/null +++ b/src/ICAP_core.v @@ -0,0 +1,324 @@ +module ICAP_core ( + input fastclk, + input [4:0] design_num, + input reconfigure, + input powerup, + input [3:0] sw_in, + output [3:0] sw_out, + output [7:0] test + ); + + +reg clk_16M00; + +reg [15:0] icap_din; +reg icap_ce; +reg icap_wr; + +reg [15:0] ff_icap_din_reversed; +reg ff_icap_ce; +reg ff_icap_wr; + +reg [3:0] MBT_REBOOT=4'b0000; + +assign sw_out = sw_in; + + + + + ICAP_SPARTAN6 ICAP_SPARTAN6_inst ( + + .BUSY (), // Busy output + .O (), // 16-bit data output + .CE (ff_icap_ce), // Clock enable input + .CLK (clk_16M00), // Clock input + .I (ff_icap_din_reversed), // 16-bit data input + .WRITE (ff_icap_wr) // Write input + ); + +assign test = {4'b0000,MBT_REBOOT}; + +// ------------------------------------------------- +// -- State Machine for ICAP_SPARTAN6 MultiBoot -- +// -- sequence. -- +// ------------------------------------------------- + + +parameter IDLE = 0, + SYNC_H = 1, + SYNC_L = 2, + + CWD_H = 3, + CWD_L = 4, + + GEN1_H = 5, + GEN1_L = 6, + + GEN2_H = 7, + GEN2_L = 8, + + GEN3_H = 9, + GEN3_L = 10, + + GEN4_H = 11, + GEN4_L = 12, + + GEN5_H = 13, + GEN5_L = 14, + + NUL_H = 15, + NUL_L = 16, + + MOD_H = 17, + MOD_L = 18, + + HCO_H = 19, + HCO_L = 20, + + RBT_H = 21, + RBT_L = 22, + + NOOP_0 = 23, + NOOP_1 = 24, + NOOP_2 = 25, + NOOP_3 = 26; + + +reg [4:0] state = IDLE; +reg [4:0] next_state; + + +always @(MBT_REBOOT or state or design_num) + begin: COMB + + case (state) + + IDLE: + begin + if (MBT_REBOOT==4'b1111) + begin + next_state = SYNC_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hAA99; // Sync word part 1 + end + else + begin + next_state = IDLE; + icap_ce = 1; + icap_wr = 1; + icap_din = 16'hFFFF; // Null data + end + end + + SYNC_H: + begin + next_state = SYNC_L; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h5566; // Sync word part 2 + end + +//-------------------- + + SYNC_L: + begin + next_state = GEN1_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h3261; // Write to GENERAL_1 Register.... + end + + GEN1_H: + begin + next_state = GEN1_L; + icap_ce = 0; + icap_wr = 0; + //icap_din = 16'h32c1; + + case (design_num) + 5'b10000: icap_din = 16'h0000; + 5'b00000: icap_din = 16'h4000; + 5'b00001: icap_din = 16'h8000; + 5'b00010: icap_din = 16'hC000; + 5'b00011: icap_din = 16'h0000; + 5'b00100: icap_din = 16'h4000; + 5'b00111: icap_din = 16'h0000; + 5'b01000: icap_din = 16'h8000; + 5'b01001: icap_din = 16'h8000; + 5'b01010: icap_din = 16'h8000; + 5'b01011: icap_din = 16'h8000; + 5'b01100: icap_din = 16'hC000; + 5'b01101: icap_din = 16'hC000; + 5'b01110: icap_din = 16'hC000; + 5'b01111: icap_din = 16'hC000; + default: icap_din = 16'h4000; + endcase + + end + + GEN1_L: + begin + next_state = GEN2_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h3281; // Write to GENERAL_2 Register.... + end + + GEN2_H: + begin + next_state = GEN2_L; + icap_ce = 0; + icap_wr = 0; + //icap_din = 16'h0305; + + case (design_num) + 5'b10000: icap_din = 16'h0000; + 5'b00000: icap_din = 16'h0305; + 5'b00001: icap_din = 16'h030a; + 5'b00010: icap_din = 16'h030f; + 5'b00011: icap_din = 16'h0315; + 5'b00100: icap_din = 16'h031a; + 5'b00111: icap_din = 16'h032a; + 5'b01000: icap_din = 16'h031f; + 5'b01001: icap_din = 16'h031f; + 5'b01010: icap_din = 16'h031f; + 5'b01011: icap_din = 16'h031f; + 5'b01100: icap_din = 16'h0324; + 5'b01101: icap_din = 16'h0324; + 5'b01110: icap_din = 16'h0324; + 5'b01111: icap_din = 16'h0324; + default: icap_din = 16'h0305; + endcase + + end + +//-------------------- + + GEN2_L: + begin + next_state = RBT_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h30A1; // Write to Command Register.... + end + + RBT_H: + begin + next_state = RBT_L; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h000E; // REBOOT Command issued.... value = 0x000E + end + +//-------------------- + + RBT_L: + begin + next_state = NOOP_0; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + NOOP_0: + begin + next_state = NOOP_1; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + NOOP_1: + begin + next_state = NOOP_2; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + NOOP_2: + begin + next_state = NOOP_3; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + +//-------------------- + + NOOP_3: + begin + next_state = IDLE; + icap_ce = 1; + icap_wr = 1; + icap_din = 16'h1111; // NULL value + end + + default: + begin + next_state = IDLE; + icap_ce = 1; + icap_wr = 1; + icap_din = 16'h1111; // 16'h1111" + end + + endcase + end + + +always@(posedge fastclk) +begin + clk_16M00 = !clk_16M00; +end + +always@(posedge clk_16M00) // Give a bit of delay before starting the statemachine +begin + if (MBT_REBOOT == 4'b1111) begin + state <= next_state; + end else if (reconfigure || MBT_REBOOT != 4'b0000) begin + MBT_REBOOT <= MBT_REBOOT + 4'b0001; + state <= IDLE; + end else begin + state <= IDLE; + end +end + +always @(posedge clk_16M00) + + begin: ICAP_FF + + ff_icap_din_reversed[0] <= icap_din[7]; //need to reverse bits to ICAP module since D0 bit is read first + ff_icap_din_reversed[1] <= icap_din[6]; + ff_icap_din_reversed[2] <= icap_din[5]; + ff_icap_din_reversed[3] <= icap_din[4]; + ff_icap_din_reversed[4] <= icap_din[3]; + ff_icap_din_reversed[5] <= icap_din[2]; + ff_icap_din_reversed[6] <= icap_din[1]; + ff_icap_din_reversed[7] <= icap_din[0]; + ff_icap_din_reversed[8] <= icap_din[15]; + ff_icap_din_reversed[9] <= icap_din[14]; + ff_icap_din_reversed[10] <= icap_din[13]; + ff_icap_din_reversed[11] <= icap_din[12]; + ff_icap_din_reversed[12] <= icap_din[11]; + ff_icap_din_reversed[13] <= icap_din[10]; + ff_icap_din_reversed[14] <= icap_din[9]; + ff_icap_din_reversed[15] <= icap_din[8]; + + ff_icap_ce <= icap_ce; + ff_icap_wr <= icap_wr; + end + + +endmodule + + + + + + + + + + + diff --git a/src/ICAP_reboot.v b/src/ICAP_reboot.v index 6bd42d6..8ec5601 100644 --- a/src/ICAP_reboot.v +++ b/src/ICAP_reboot.v @@ -1,322 +1,16 @@ module ICAP_reboot ( - - - input fastclk, - input [4:1] sw, + input fastclk, + input [3:0] sw, output [8:1] test ); - - - -reg [15:0] icap_din; -reg icap_ce; -reg icap_wr; - -reg [15:0] ff_icap_din_reversed; -reg ff_icap_ce; -reg ff_icap_wr; - -reg [3:0] MBT_REBOOT=4'b0000; - - - - - - ICAP_SPARTAN6 ICAP_SPARTAN6_inst ( - - .BUSY (), // Busy output - .O (), // 16-bit data output - .CE (ff_icap_ce), // Clock enable input - .CLK (CLK0_OUT), // Clock input - .I (ff_icap_din_reversed), // 16-bit data input - .WRITE (ff_icap_wr) // Write input - ); - - dcm_32_16 instance_name ( - .CLKIN_IN(fastclk), - .CLK0_OUT(CLK0_OUT), - .CLK0_OUT1(), - .CLK2X_OUT() - ); - - -assign test = {4'b0000,MBT_REBOOT}; - -// ------------------------------------------------- -// -- State Machine for ICAP_SPARTAN6 MultiBoot -- -// -- sequence. -- -// ------------------------------------------------- - - -parameter IDLE = 0, - SYNC_H = 1, - SYNC_L = 2, - - CWD_H = 3, - CWD_L = 4, - - GEN1_H = 5, - GEN1_L = 6, - - GEN2_H = 7, - GEN2_L = 8, - - GEN3_H = 9, - GEN3_L = 10, - - GEN4_H = 11, - GEN4_L = 12, - - GEN5_H = 13, - GEN5_L = 14, - - NUL_H = 15, - NUL_L = 16, - - MOD_H = 17, - MOD_L = 18, - - HCO_H = 19, - HCO_L = 20, - - RBT_H = 21, - RBT_L = 22, - - NOOP_0 = 23, - NOOP_1 = 24, - NOOP_2 = 25, - NOOP_3 = 26; - - -reg [4:0] state = IDLE; -reg [4:0] next_state; - - -always @(MBT_REBOOT or state or sw) - begin: COMB - - case (state) - - IDLE: - begin - if (MBT_REBOOT==4'b1111) - begin - next_state = SYNC_H; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'hAA99; // Sync word part 1 - end - else - begin - next_state = IDLE; - icap_ce = 1; - icap_wr = 1; - icap_din = 16'hFFFF; // Null data - end - end - - SYNC_H: - begin - next_state = SYNC_L; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h5566; // Sync word part 2 - end - -//-------------------- - - SYNC_L: - begin - next_state = GEN1_H; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h3261; // Write to GENERAL_1 Register.... - end - - GEN1_H: - begin - next_state = GEN1_L; - icap_ce = 0; - icap_wr = 0; - //icap_din = 16'h32c1; - - case (sw) - 4'b0000: icap_din = 16'h4000; - 4'b0001: icap_din = 16'h8000; - 4'b0010: icap_din = 16'hC000; - 4'b0011: icap_din = 16'h0000; - 4'b0100: icap_din = 16'h4000; - 4'b0111: icap_din = 16'h0000; - 4'b1000: icap_din = 16'h8000; - 4'b1001: icap_din = 16'h8000; - 4'b1010: icap_din = 16'h8000; - 4'b1011: icap_din = 16'h8000; - 4'b1100: icap_din = 16'hC000; - 4'b1101: icap_din = 16'hC000; - 4'b1110: icap_din = 16'hC000; - 4'b1111: icap_din = 16'hC000; - default: icap_din = 16'h32c1; - endcase - - end - - GEN1_L: - begin - next_state = GEN2_H; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h3281; // Write to GENERAL_2 Register.... - end - - GEN2_H: - begin - next_state = GEN2_L; - icap_ce = 0; - icap_wr = 0; - //icap_din = 16'h0305; - - case (sw) - 4'b0000: icap_din = 16'h0305; - 4'b0001: icap_din = 16'h030a; - 4'b0010: icap_din = 16'h030f; - 4'b0011: icap_din = 16'h0315; - 4'b0100: icap_din = 16'h031a; - 4'b0111: icap_din = 16'h032a; - 4'b1000: icap_din = 16'h031f; - 4'b1001: icap_din = 16'h031f; - 4'b1010: icap_din = 16'h031f; - 4'b1011: icap_din = 16'h031f; - 4'b1100: icap_din = 16'h0324; - 4'b1101: icap_din = 16'h0324; - 4'b1110: icap_din = 16'h0324; - 4'b1111: icap_din = 16'h0324; - default: icap_din = 16'h0305; - endcase - - end - -//-------------------- - - GEN2_L: - begin - next_state = RBT_H; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h30A1; // Write to Command Register.... - end - - RBT_H: - begin - next_state = RBT_L; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h000E; // REBOOT Command issued.... value = 0x000E - end - -//-------------------- - - RBT_L: - begin - next_state = NOOP_0; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h2000; // NOOP - end - - NOOP_0: - begin - next_state = NOOP_1; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h2000; // NOOP - end - - NOOP_1: - begin - next_state = NOOP_2; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h2000; // NOOP - end - - NOOP_2: - begin - next_state = NOOP_3; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'h2000; // NOOP - end - -//-------------------- - - NOOP_3: - begin - next_state = IDLE; - icap_ce = 1; - icap_wr = 1; - icap_din = 16'h1111; // NULL value - end - - default: - begin - next_state = IDLE; - icap_ce = 1; - icap_wr = 1; - icap_din = 16'h1111; // 16'h1111" - end - - endcase - end - - -always@(posedge CLK0_OUT) // Give a bit of delay before starting the statemachine -begin - if (MBT_REBOOT != 4'b1111) - begin - MBT_REBOOT <= MBT_REBOOT + 4'b0001; - state <= IDLE; - end else begin - state <= next_state; - end - -end - -always @(posedge CLK0_OUT) - - begin: ICAP_FF - - ff_icap_din_reversed[0] <= icap_din[7]; //need to reverse bits to ICAP module since D0 bit is read first - ff_icap_din_reversed[1] <= icap_din[6]; - ff_icap_din_reversed[2] <= icap_din[5]; - ff_icap_din_reversed[3] <= icap_din[4]; - ff_icap_din_reversed[4] <= icap_din[3]; - ff_icap_din_reversed[5] <= icap_din[2]; - ff_icap_din_reversed[6] <= icap_din[1]; - ff_icap_din_reversed[7] <= icap_din[0]; - ff_icap_din_reversed[8] <= icap_din[15]; - ff_icap_din_reversed[9] <= icap_din[14]; - ff_icap_din_reversed[10] <= icap_din[13]; - ff_icap_din_reversed[11] <= icap_din[12]; - ff_icap_din_reversed[12] <= icap_din[11]; - ff_icap_din_reversed[13] <= icap_din[10]; - ff_icap_din_reversed[14] <= icap_din[9]; - ff_icap_din_reversed[15] <= icap_din[8]; - - ff_icap_ce <= icap_ce; - ff_icap_wr <= icap_wr; - end - - + ICAP_core instance_core ( + .fastclk(fastclk), + .design_num({1'b0, sw}), + .reconfigure(1'b1), + .powerup(1'b1), + .sw_in(sw), + .test(test) + ); + endmodule - - - - - - - - - - - diff --git a/src/LX9Co_6SLX9TQG144_MB.ucf b/src/LX9Co_6SLX9TQG144_MB.ucf index 306a5c1..9401b3a 100644 --- a/src/LX9Co_6SLX9TQG144_MB.ucf +++ b/src/LX9Co_6SLX9TQG144_MB.ucf @@ -89,10 +89,10 @@ NET "test<5>" LOC = "P79" |IOSTANDARD = LVCMOS33 ; NET "test<6>" LOC = "P78" |IOSTANDARD = LVCMOS33 ; NET "test<7>" LOC = "P75" |IOSTANDARD = LVCMOS33 ; NET "test<8>" LOC = "P74" |IOSTANDARD = LVCMOS33 ; -NET "sw<1>" LOC = "P88" |IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P87" |IOSTANDARD = LVCMOS33 ; -NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; +NET "sw<0>" LOC = "P88" |IOSTANDARD = LVCMOS33 ; +NET "sw<1>" LOC = "P87" |IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +NET "sw<3>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; NET "fastclk" TNM_NET = fastclk; TIMESPEC TS_fastclk = PERIOD "fastclk" 31.25 ns HIGH 50%; diff --git a/src/LX9Co_6SLX9TQG144_U1.ucf b/src/LX9Co_6SLX9TQG144_U1.ucf index 023071a..10114d4 100644 --- a/src/LX9Co_6SLX9TQG144_U1.ucf +++ b/src/LX9Co_6SLX9TQG144_U1.ucf @@ -73,7 +73,7 @@ NET "test<5>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = NET "test<6>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; NET "test<7>" LOC = "P75" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; NET "test<8>" LOC = "P74" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; -NET "sw<1>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; -##NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -##NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; +NET "sw<0>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; +NET "sw<1>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +NET "sw<3>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; diff --git a/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf b/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf index 4adf452..998ae5b 100644 --- a/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf +++ b/src/LX9Co_6SLX9TQG144_U1_16bitRam.ucf @@ -81,7 +81,7 @@ NET "test<5>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = NET "test<6>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; NET "test<7>" LOC = "P75" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; NET "test<8>" LOC = "P74" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; -NET "sw<1>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; -NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; +NET "sw<0>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; +NET "sw<1>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +NET "sw<3>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; diff --git a/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf b/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf index 4b7dd1d..7878955 100644 --- a/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf +++ b/src/LX9Co_6SLX9TQG144_U1_32bitRam.ucf @@ -97,7 +97,7 @@ NET "test<5>" LOC = "P79" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = NET "test<6>" LOC = "P78" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; NET "test<7>" LOC = "P75" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; NET "test<8>" LOC = "P74" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 2 ; -NET "sw<1>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; -NET "sw<2>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; -##NET "sw<3>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; -##NET "sw<4>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; +NET "sw<0>" LOC = "P88" | IOSTANDARD = LVCMOS33 ; +NET "sw<1>" LOC = "P87" | IOSTANDARD = LVCMOS33 ; +NET "sw<2>" LOC = "P85" | IOSTANDARD = LVCMOS33 ; +NET "sw<3>" LOC = "P84" | IOSTANDARD = LVCMOS33 ; diff --git a/src/LX9Co_CoPro6502.vhd b/src/LX9Co_CoPro6502.vhd index 1822918..51bbb14 100644 --- a/src/LX9Co_CoPro6502.vhd +++ b/src/LX9Co_CoPro6502.vhd @@ -13,7 +13,7 @@ entity LX9CoPro6502 is -- GOP Signals fastclk : in std_logic; test : out std_logic_vector(8 downto 1); - sw : in std_logic_vector(2 downto 1); + sw : in std_logic_vector(3 downto 0); -- Tube signals h_phi2 : in std_logic; @@ -36,103 +36,6 @@ entity LX9CoPro6502 is end LX9CoPro6502; architecture BEHAVIORAL of LX9CoPro6502 is - - component dcm_32_16 - port ( - CLKIN_IN : in std_logic; - CLK0_OUT : out std_logic; - CLK0_OUT1 : out std_logic; - CLK2X_OUT : out std_logic - ); - end component; - - component tuberom_65c102 - port ( - CLK : in std_logic; - ADDR : in std_logic_vector(10 downto 0); - DATA : out std_logic_vector(7 downto 0)); - end component; - - component T65 - port( - Mode : in std_logic_vector(1 downto 0); - Res_n : in std_logic; - Enable : in std_logic; - Clk : in std_logic; - Rdy : in std_logic; - Abort_n : in std_logic; - IRQ_n : in std_logic; - NMI_n : in std_logic; - SO_n : in std_logic; - DI : in std_logic_vector(7 downto 0); - R_W_n : out std_logic; - Sync : out std_logic; - EF : out std_logic; - MF : out std_logic; - XF : out std_logic; - ML_n : out std_logic; - VP_n : out std_logic; - VDA : out std_logic; - VPA : out std_logic; - A : out std_logic_vector(23 downto 0); - DO : out std_logic_vector(7 downto 0) - ); - end component; - - component r65c02_tc - port( - clk_clk_i : in std_logic; - d_i : in std_logic_vector(7 downto 0); - irq_n_i : in std_logic; - nmi_n_i : in std_logic; - rdy_i : in std_logic; - rst_rst_n_i : in std_logic; - so_n_i : in std_logic; - a_o : out std_logic_vector(15 downto 0); - d_o : out std_logic_vector(7 downto 0); - rd_o : out std_logic; - sync_o : out std_logic; - wr_n_o : out std_logic; - wr_o : out std_logic - ); - end component; - - component r65c02 - port( - reset : in std_logic; - clk : in std_logic; - enable : in std_logic; - nmi_n : in std_logic; - irq_n : in std_logic; - di : in unsigned(7 downto 0); - do : out unsigned(7 downto 0); - addr : out unsigned(15 downto 0); - nwe : out std_logic; - sync : out std_logic; - sync_irq : out std_logic - ); - end component; - - component tube - port( - h_addr : in std_logic_vector(2 downto 0); - h_cs_b : in std_logic; - h_data : inout std_logic_vector(7 downto 0); - h_phi2 : in std_logic; - h_rdnw : in std_logic; - h_rst_b : in std_logic; - h_irq_b : inout std_logic; - p_addr : in std_logic_vector(2 downto 0); - p_cs_b : in std_logic; - p_data_in : in std_logic_vector(7 downto 0); - p_data_out : out std_logic_vector(7 downto 0); - p_rdnw : in std_logic; - p_phi2 : in std_logic; - p_rst_b : out std_logic; - p_nmi_b : inout std_logic; - p_irq_b : inout std_logic - ); - end component; ------------------------------------------------- -- clock and reset signals @@ -190,21 +93,33 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_16 : dcm_32_16 port map ( + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => open, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); + + inst_dcm_32_16 : entity work.dcm_32_16 port map ( CLKIN_IN => fastclk, CLK0_OUT => clk_16M00, CLK0_OUT1 => open, CLK2X_OUT => open ); - inst_tuberom : tuberom_65c102 port map ( + inst_tuberom : entity work.tuberom_65c102 port map ( CLK => clk_16M00, ADDR => cpu_addr(10 downto 0), DATA => rom_data_out ); GenT65Core: if UseT65Core generate - inst_T65 : T65 port map ( + inst_T65 : entity work.T65 port map ( Mode => "01", Abort_n => '1', SO_n => '1', @@ -225,7 +140,7 @@ begin end generate; GenJensCore: if UseJensCore generate - Inst_r65c02_tc: r65c02_tc PORT MAP( + Inst_r65c02_tc: entity work.r65c02_tc PORT MAP( clk_clk_i => phi0, d_i => cpu_din, irq_n_i => cpu_IRQ_n_sync, @@ -245,7 +160,7 @@ begin end generate; GenAlanDCore: if UseAlanDCore generate - inst_r65c02: r65c02 port map( + inst_r65c02: entity work.r65c02 port map( reset => RSTn_sync, clk => clk_16M00, enable => cpu_clken, @@ -264,7 +179,7 @@ begin debug_clk <= cpu_clken; end generate; - inst_tube: tube port map ( + inst_tube: entity work.tube port map ( h_addr => h_addr, h_cs_b => h_cs_b, h_data => h_data, diff --git a/src/LX9Co_CoPro6502fast.vhd b/src/LX9Co_CoPro6502fast.vhd index 9e29b5f..f7956fe 100644 --- a/src/LX9Co_CoPro6502fast.vhd +++ b/src/LX9Co_CoPro6502fast.vhd @@ -13,7 +13,7 @@ entity LX9CoPro6502fast is -- GOP Signals fastclk : in std_logic; test : out std_logic_vector(8 downto 1); - sw : in std_logic_vector(2 downto 1); + sw : in std_logic_vector(3 downto 0); -- Tube signals h_phi2 : in std_logic; @@ -36,114 +36,6 @@ entity LX9CoPro6502fast is end LX9CoPro6502fast; architecture BEHAVIORAL of LX9CoPro6502fast is - - component dcm_32_64 - port ( - CLKIN_IN : in std_logic; - CLK0_OUT : out std_logic; - CLK0_OUT1 : out std_logic; - CLK2X_OUT : out std_logic - ); - end component; - - component tuberom_65c102_banner - port ( - CLK : in std_logic; - ADDR : in std_logic_vector(10 downto 0); - DATA : out std_logic_vector(7 downto 0)); - end component; - - component T65 - port( - Mode : in std_logic_vector(1 downto 0); - Res_n : in std_logic; - Enable : in std_logic; - Clk : in std_logic; - Rdy : in std_logic; - Abort_n : in std_logic; - IRQ_n : in std_logic; - NMI_n : in std_logic; - SO_n : in std_logic; - DI : in std_logic_vector(7 downto 0); - R_W_n : out std_logic; - Sync : out std_logic; - EF : out std_logic; - MF : out std_logic; - XF : out std_logic; - ML_n : out std_logic; - VP_n : out std_logic; - VDA : out std_logic; - VPA : out std_logic; - A : out std_logic_vector(23 downto 0); - DO : out std_logic_vector(7 downto 0) - ); - end component; - - component r65c02_tc - port( - clk_clk_i : in std_logic; - d_i : in std_logic_vector(7 downto 0); - irq_n_i : in std_logic; - nmi_n_i : in std_logic; - rdy_i : in std_logic; - rst_rst_n_i : in std_logic; - so_n_i : in std_logic; - a_o : out std_logic_vector(15 downto 0); - d_o : out std_logic_vector(7 downto 0); - rd_o : out std_logic; - sync_o : out std_logic; - wr_n_o : out std_logic; - wr_o : out std_logic - ); - end component; - - component r65c02 - port( - reset : in std_logic; - clk : in std_logic; - enable : in std_logic; - nmi_n : in std_logic; - irq_n : in std_logic; - di : in unsigned(7 downto 0); - do : out unsigned(7 downto 0); - addr : out unsigned(15 downto 0); - nwe : out std_logic; - sync : out std_logic; - sync_irq : out std_logic - ); - end component; - - component tube - port( - h_addr : in std_logic_vector(2 downto 0); - h_cs_b : in std_logic; - h_data : inout std_logic_vector(7 downto 0); - h_phi2 : in std_logic; - h_rdnw : in std_logic; - h_rst_b : in std_logic; - h_irq_b : inout std_logic; - p_addr : in std_logic_vector(2 downto 0); - p_cs_b : in std_logic; - p_data_in : in std_logic_vector(7 downto 0); - p_data_out : out std_logic_vector(7 downto 0); - p_rdnw : in std_logic; - p_phi2 : in std_logic; - p_rst_b : out std_logic; - p_nmi_b : inout std_logic; - p_irq_b : inout std_logic - ); - end component; - - component RAM_64K - port( - clk : in std_logic; - we_uP : in std_logic; - ce : in std_logic; - addr_uP : in std_logic_vector(15 downto 0); - D_uP : in std_logic_vector(7 downto 0); - Q_uP : out std_logic_vector(7 downto 0) - ); - end component; ------------------------------------------------- -- clock and reset signals @@ -173,6 +65,7 @@ architecture BEHAVIORAL of LX9CoPro6502fast is signal rom_cs_b : std_logic; signal rom_data_out : std_logic_vector (7 downto 0); signal ram_data_out : std_logic_vector (7 downto 0); + ------------------------------------------------- -- cpu signals ------------------------------------------------- @@ -194,6 +87,8 @@ architecture BEHAVIORAL of LX9CoPro6502fast is signal digit2_cs_b : std_logic; signal digit1 : std_logic_vector (7 downto 0); signal digit2 : std_logic_vector (7 downto 0); + + signal sw_out : std_logic_vector (3 downto 0); begin @@ -201,21 +96,33 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_64 : dcm_32_64 port map ( + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => sw_out, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); + + inst_dcm_32_64 : entity work.dcm_32_64 port map ( CLKIN_IN => fastclk, CLK0_OUT => clk_cpu, CLK0_OUT1 => open, CLK2X_OUT => open ); - inst_tuberom : tuberom_65c102_banner port map ( + inst_tuberom : entity work.tuberom_65c102_banner port map ( CLK => clk_cpu, ADDR => cpu_addr(10 downto 0), DATA => rom_data_out ); GenT65Core: if UseT65Core generate - inst_T65 : T65 port map ( + inst_T65 : entity work.T65 port map ( Mode => "01", Abort_n => '1', SO_n => '1', @@ -234,7 +141,7 @@ begin end generate; GenJensCore: if UseJensCore generate - Inst_r65c02_tc: r65c02_tc PORT MAP( + Inst_r65c02_tc: entity work.r65c02_tc PORT MAP( clk_clk_i => cpu_clken, d_i => cpu_din, irq_n_i => cpu_IRQ_n_sync, @@ -252,7 +159,7 @@ begin end generate; GenAlanDCore: if UseAlanDCore generate - inst_r65c02: r65c02 port map( + inst_r65c02: entity work.r65c02 port map( reset => RSTn_sync, clk => clk_cpu, enable => cpu_clken, @@ -269,7 +176,7 @@ begin cpu_addr <= std_logic_vector(cpu_addr_us); end generate; - inst_tube: tube port map ( + inst_tube: entity work.tube port map ( h_addr => h_addr, h_cs_b => h_cs_b, h_data => h_data, @@ -288,8 +195,7 @@ begin p_irq_b => cpu_IRQ_n ); - - Inst_RAM_64K: RAM_64K PORT MAP( + Inst_RAM_64K: entity work.RAM_64K PORT MAP( clk => clk_cpu, we_uP => ram_wr_int, ce => '1', @@ -308,13 +214,13 @@ begin -- Original: Acorn TUBE 65C102 Co-Processor -- Updated: Acorn TUBE 32Mhz 65C102 Co-Pro - digit1 <= x"33" when SW = "00" else - x"31" when SW = "01" else + digit1 <= x"33" when sw_out(1 downto 0) = "00" else + x"31" when sw_out(1 downto 0) = "01" else x"30"; - digit2 <= x"32" when SW = "00" else - x"36" when SW = "01" else - x"38" when SW = "10" else + digit2 <= x"32" when sw_out(1 downto 0) = "00" else + x"36" when sw_out(1 downto 0) = "01" else + x"38" when sw_out(1 downto 0) = "10" else x"34"; ram_cs_b <= '0' when p_cs_b = '1' and rom_cs_b = '1' else '1'; @@ -402,7 +308,7 @@ begin begin if rising_edge(clk_cpu) then clken_counter <= clken_counter + 1; - case "00"&sw is + case "00" & sw_out(1 downto 0) is when x"0" => cpu_clken <= clken_counter(0); when x"1" => diff --git a/src/LX9Co_CoPro6809.vhd b/src/LX9Co_CoPro6809.vhd index 40397cb..9ab6894 100644 --- a/src/LX9Co_CoPro6809.vhd +++ b/src/LX9Co_CoPro6809.vhd @@ -8,7 +8,7 @@ entity LX9CoPro6809 is -- GOP Signals fastclk : in std_logic; test : out std_logic_vector(8 downto 1); - sw : in std_logic_vector(2 downto 1); + sw : in std_logic_vector(3 downto 0); -- Tube signals (use 16 out of 22 DIL pins) h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks @@ -32,65 +32,6 @@ end LX9CoPro6809; architecture BEHAVIORAL of LX9CoPro6809 is - component dcm_32_16 - port ( - CLKIN_IN : in std_logic; - CLK0_OUT : out std_logic; - CLK0_OUT1 : out std_logic; - CLK2X_OUT : out std_logic - ); - end component; - - component tuberom_6809 - port ( - CLK : in std_logic; - ADDR : in std_logic_vector(10 downto 0); - DATA : out std_logic_vector(7 downto 0)); - end component; - - component cpu09 - port ( - clk : in std_logic; - rst : in std_logic; - data_in : in std_logic_vector(7 downto 0); - irq : in std_logic; - firq : in std_logic; - nmi : in std_logic; - halt : in std_logic; - hold : in std_logic; - vma : out std_logic; - lic_out : out std_logic; - ifetch : out std_logic; - opfetch : out std_logic; - ba : out std_logic; - bs : out std_logic; - addr : out std_logic_vector(15 downto 0); - rw : out std_logic; - data_out : out std_logic_vector(7 downto 0) - ); - end component; - - component tube - port( - h_addr : in std_logic_vector(2 downto 0); - h_cs_b : in std_logic; - h_data : inout std_logic_vector(7 downto 0); - h_phi2 : in std_logic; - h_rdnw : in std_logic; - h_rst_b : in std_logic; - h_irq_b : inout std_logic; - p_addr : in std_logic_vector(2 downto 0); - p_cs_b : in std_logic; - p_data_in : in std_logic_vector(7 downto 0); - p_data_out : out std_logic_vector(7 downto 0); - p_rdnw : in std_logic; - p_phi2 : in std_logic; - p_rst_b : out std_logic; - p_nmi_b : inout std_logic; - p_irq_b : inout std_logic - ); - end component; - ------------------------------------------------- -- clock and reset signals ------------------------------------------------- @@ -144,19 +85,31 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_16 : dcm_32_16 port map ( + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => open, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); + + inst_dcm_32_16 : entity work.dcm_32_16 port map ( CLKIN_IN => fastclk, CLK0_OUT => cpu_clk, CLK0_OUT1 => open, CLK2X_OUT => open); - inst_tuberom : tuberom_6809 port map ( + inst_tuberom : entity work.tuberom_6809 port map ( CLK => cpu_clk, ADDR => cpu_addr(10 downto 0), DATA => rom_data_out ); - Inst_cpu09: cpu09 PORT MAP( + Inst_cpu09: entity work.cpu09 PORT MAP( clk => cpu_clk, -- E clock input (rising edge) rst => not RSTn_sync, -- reset input (active high) vma => vma, -- valid memory address (active high) @@ -180,7 +133,7 @@ begin cpu_addr <= cpu_addr_int when bs = '0' else cpu_addr_int(15 downto 9) & '0' & cpu_addr_int(7 downto 0); - inst_tube: tube port map ( + inst_tube: entity work.tube port map ( h_addr => h_addr, h_cs_b => h_cs_b, h_data => h_data, diff --git a/src/LX9Co_CoPro80186.v b/src/LX9Co_CoPro80186.v index a725e9b..6c7360f 100644 --- a/src/LX9Co_CoPro80186.v +++ b/src/LX9Co_CoPro80186.v @@ -23,7 +23,7 @@ module LX9CoPro80186 ( // GOP Signals output [8:1] test, - input [4:1] sw, + input [3:0] sw, // Tube signals (use 16 out of 22 DIL pins) input h_phi2, @@ -149,14 +149,28 @@ module LX9CoPro80186 ( wire [19:0] pc; wire trigger; reg [8:0] reset_counter; + + wire [3:0] sw_out; + + ICAP_config inst_ICAP_config ( + .fastclk(fastclk), + .sw_in (sw), + .sw_out (sw_out), + .h_addr (h_addr), + .h_cs_b (h_cs_b), + .h_data (h_data), + .h_phi2 (h_phi2), + .h_rdnw (h_rdnw), + .h_rst_b(h_rst_b) + ); + -// Instantiate the module -dcm_32_16 instance_name ( + dcm_32_16 inst_dcm ( .CLKIN_IN(fastclk), .CLK0_OUT(clk), .CLK0_OUT1(), .CLK2X_OUT() - ); + ); // Ensure reset is held active for 256 clock cycles on power up // Needed as Beeb's reset is missed when using multiboot loader as initialization takes too long @@ -523,10 +537,10 @@ tube tube_inst( // 06bb:0a55 assign trigger = (pc[15:0] == 16'h7605) ? 1 : 0; - assign test = sw[1] ? pc[15:8] : - ( sw[2] ? {p_cs_b, pc[6:0]} : - ( sw[3] ? {p_nmi_b, p_irq_b, p_cs_b, p_wr_b, nmi, nmia, intr, inta } : - ( sw[4] ? {trigger, p_irq_b, p_cs_b, p_wr_b, p_data[7], p_addr[2:0]} : + assign test = sw_out[0] ? pc[15:8] : + ( sw_out[1] ? {p_cs_b, pc[6:0]} : + ( sw_out[2] ? {p_nmi_b, p_irq_b, p_cs_b, p_wr_b, nmi, nmia, intr, inta } : + ( sw_out[3] ? {trigger, p_irq_b, p_cs_b, p_wr_b, p_data[7], p_addr[2:0]} : ( { trigger, pc[6:0] } )))); diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index c300f52..c11e13d 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -8,7 +8,7 @@ entity LX9CoProPDP11 is -- GOP Signals fastclk : in std_logic; test : out std_logic_vector(8 downto 1); - sw : in std_logic_vector(2 downto 1); + sw : in std_logic_vector(3 downto 0); -- Tube signals h_phi2 : in std_logic; @@ -91,6 +91,17 @@ begin -- instantiated components --------------------------------------------------------------------- + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => open, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); inst_tuberom : entity work.tuberom_pdp11 port map ( CLK => clk_ram, diff --git a/src/LX9Co_CoProZ80.vhd b/src/LX9Co_CoProZ80.vhd index f60509b..0f88af3 100644 --- a/src/LX9Co_CoProZ80.vhd +++ b/src/LX9Co_CoProZ80.vhd @@ -8,7 +8,7 @@ entity LX9CoProZ80 is -- GOP Signals fastclk : in std_logic; test : out std_logic_vector(8 downto 1); - sw : in std_logic_vector(2 downto 1); + sw : in std_logic_vector(3 downto 0); -- Tube signals (use 16 out of 22 DIL pins) h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks @@ -19,10 +19,9 @@ entity LX9CoProZ80 is h_rst_b : in std_logic; h_irq_b : inout std_logic; - - -- Ram Signals - ram_ub_b : out std_logic; - ram_lb_b : out std_logic; + -- Ram Signals + ram_ub_b : out std_logic; + ram_lb_b : out std_logic; ram_cs : out std_logic; ram_oe : out std_logic; ram_wr : out std_logic; @@ -32,66 +31,6 @@ entity LX9CoProZ80 is end LX9CoProZ80; architecture BEHAVIORAL of LX9CoProZ80 is - - component dcm_32_16 - port ( - CLKIN_IN : in std_logic; - CLK0_OUT : out std_logic; - CLK0_OUT1 : out std_logic; - CLK2X_OUT : out std_logic - ); - end component; - - component tuberom_z80 - port ( - CLK : in std_logic; - ADDR : in std_logic_vector(11 downto 0); - DATA : out std_logic_vector(7 downto 0)); - end component; - - component T80se - port ( - RESET_n : in std_logic; - CLK_n : in std_logic; - CLKEN : in std_logic; - WAIT_n : in std_logic; - INT_n : in std_logic; - NMI_n : in std_logic; - BUSRQ_n : in std_logic; - M1_n : out std_logic; - MREQ_n : out std_logic; - IORQ_n : out std_logic; - RD_n : out std_logic; - WR_n : out std_logic; - RFSH_n : out std_logic; - HALT_n : out std_logic; - BUSAK_n : out std_logic; - A : out std_logic_vector(15 downto 0); - DI : in std_logic_vector(7 downto 0); - DO : out std_logic_vector(7 downto 0) - ); - end component; - - component tube - port( - h_addr : in std_logic_vector(2 downto 0); - h_cs_b : in std_logic; - h_data : inout std_logic_vector(7 downto 0); - h_phi2 : in std_logic; - h_rdnw : in std_logic; - h_rst_b : in std_logic; - h_irq_b : inout std_logic; - p_addr : in std_logic_vector(2 downto 0); - p_cs_b : in std_logic; - p_data_in : in std_logic_vector(7 downto 0); - p_data_out : out std_logic_vector(7 downto 0); - p_rdnw : in std_logic; - p_phi2 : in std_logic; - p_rst_b : out std_logic; - p_nmi_b : inout std_logic; - p_irq_b : inout std_logic - ); - end component; ------------------------------------------------- -- clock and reset signals @@ -117,7 +56,7 @@ architecture BEHAVIORAL of LX9CoProZ80 is signal ram_cs_b : std_logic; signal ram_oe_int : std_logic; - signal ram_wr_int : std_logic; + signal ram_wr_int : std_logic; signal rom_cs_b : std_logic; signal rom_data_out : std_logic_vector (7 downto 0); @@ -144,19 +83,31 @@ begin -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_16 : dcm_32_16 port map ( + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => open, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); + + inst_dcm_32_16 : entity work.dcm_32_16 port map ( CLKIN_IN => fastclk, CLK0_OUT => cpu_clk, CLK0_OUT1 => open, CLK2X_OUT => open); - inst_tuberom : tuberom_z80 port map ( + inst_tuberom : entity work.tuberom_z80 port map ( CLK => cpu_clk, ADDR => cpu_addr(11 downto 0), DATA => rom_data_out ); - inst_Z80 : T80se port map ( + inst_Z80 : entity work.T80se port map ( RESET_n => RSTn_sync, CLK_n => cpu_clk, CLKEN => cpu_clken, @@ -177,7 +128,7 @@ begin DO => cpu_dout ); - inst_tube: tube port map ( + inst_tube: entity work.tube port map ( h_addr => h_addr, h_cs_b => h_cs_b, h_data => h_data, @@ -209,9 +160,9 @@ begin rom_data_out when rom_cs_b = '0' else ram_data when ram_cs_b = '0' else x"fe"; - - ram_ub_b <= '0'; - ram_lb_b <= '0'; + + ram_ub_b <= '0'; + ram_lb_b <= '0'; ram_cs <= ram_cs_b; ram_oe_int <= not ((not ram_cs_b) and (not cpu_rd_n)); ram_oe <= ram_oe_int; diff --git a/src/LX9Co_CoProZ80fast.vhd b/src/LX9Co_CoProZ80fast.vhd index cc095f7..e23de33 100644 --- a/src/LX9Co_CoProZ80fast.vhd +++ b/src/LX9Co_CoProZ80fast.vhd @@ -12,7 +12,7 @@ entity LX9CoProZ80fast is -- GOP Signals fastclk : in std_logic; test : out std_logic_vector(8 downto 1); - sw : in std_logic_vector(2 downto 1); + sw : in std_logic_vector(3 downto 0); -- Tube signals (use 16 out of 22 DIL pins) h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks @@ -36,95 +36,6 @@ end LX9CoProZ80fast; architecture BEHAVIORAL of LX9CoProZ80fast is - component dcm_32_56 - port ( - CLKIN_IN : in std_logic; - CLK0_OUT : out std_logic; - CLK0_OUT1 : out std_logic; - CLK2X_OUT : out std_logic - ); - end component; - - component tuberom_z80_banner - port ( - CLK : in std_logic; - ADDR : in std_logic_vector(11 downto 0); - DATA : out std_logic_vector(7 downto 0)); - end component; - - component T80se - port ( - RESET_n : in std_logic; - CLK_n : in std_logic; - CLKEN : in std_logic; - WAIT_n : in std_logic; - INT_n : in std_logic; - NMI_n : in std_logic; - BUSRQ_n : in std_logic; - M1_n : out std_logic; - MREQ_n : out std_logic; - IORQ_n : out std_logic; - RD_n : out std_logic; - WR_n : out std_logic; - RFSH_n : out std_logic; - HALT_n : out std_logic; - BUSAK_n : out std_logic; - A : out std_logic_vector(15 downto 0); - DI : in std_logic_vector(7 downto 0); - DO : out std_logic_vector(7 downto 0) - ); - end component; - - component NextZ80 - port( - DI : in std_logic_vector(7 downto 0); - CLK : in std_logic; - RESET : in std_logic; - INT : in std_logic; - NMI : in std_logic; - WT : in std_logic; - DO : out std_logic_vector(7 downto 0); - ADDR : out std_logic_vector(15 downto 0); - WR : out std_logic; - MREQ : out std_logic; - IORQ : out std_logic; - HALT : out std_logic; - M1 : out std_logic - ); - end component; - - component tube - port( - h_addr : in std_logic_vector(2 downto 0); - h_cs_b : in std_logic; - h_data : inout std_logic_vector(7 downto 0); - h_phi2 : in std_logic; - h_rdnw : in std_logic; - h_rst_b : in std_logic; - h_irq_b : inout std_logic; - p_addr : in std_logic_vector(2 downto 0); - p_cs_b : in std_logic; - p_data_in : in std_logic_vector(7 downto 0); - p_data_out : out std_logic_vector(7 downto 0); - p_rdnw : in std_logic; - p_phi2 : in std_logic; - p_rst_b : out std_logic; - p_nmi_b : inout std_logic; - p_irq_b : inout std_logic - ); - end component; - - component RAM_64K - port( - clk : in std_logic; - we_uP : in std_logic; - ce : in std_logic; - addr_uP : in std_logic_vector(15 downto 0); - D_uP : in std_logic_vector(7 downto 0); - Q_uP : out std_logic_vector(7 downto 0) - ); - end component; - ------------------------------------------------- -- clock and reset signals ------------------------------------------------- @@ -183,27 +94,41 @@ architecture BEHAVIORAL of LX9CoProZ80fast is signal digit2 : std_logic_vector (7 downto 0); signal digit3 : std_logic_vector (7 downto 0); + signal sw_out : std_logic_vector (3 downto 0); + begin --------------------------------------------------------------------- -- instantiated components --------------------------------------------------------------------- - inst_dcm_32_56 : dcm_32_56 port map ( + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => sw_out, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); + + inst_dcm_32_56 : entity work.dcm_32_56 port map ( CLKIN_IN => fastclk, CLK0_OUT => cpu_clk, CLK0_OUT1 => open, CLK2X_OUT => open ); - inst_tuberom : tuberom_z80_banner port map ( + inst_tuberom : entity work.tuberom_z80_banner port map ( CLK => cpu_clk, ADDR => cpu_addr(11 downto 0), DATA => rom_data_out ); GenT80Core: if UseT80Core generate - inst_Z80 : T80se port map ( + inst_Z80 : entity work.T80se port map ( RESET_n => RSTn_sync, CLK_n => cpu_clk, CLKEN => cpu_clken, @@ -226,7 +151,7 @@ begin end generate; GenNextCore: if UseNextCore generate - Inst_Z80: NextZ80 PORT MAP( + Inst_Z80: entity work.NextZ80 PORT MAP( RESET => not RSTn_sync, CLK => cpu_clk, WT => not cpu_clken, @@ -248,7 +173,7 @@ begin cpu_wr_n <= not cpu_wr; end generate; - inst_tube: tube port map ( + inst_tube: entity work.tube port map ( h_addr => h_addr, h_cs_b => h_cs_b, h_data => h_data, @@ -269,7 +194,7 @@ begin tube_cs_b <= not ((not p_cs_b) and cpu_clken); - Inst_RAM_64K: RAM_64K PORT MAP( + Inst_RAM_64K: entity work.RAM_64K PORT MAP( clk => cpu_clk, we_uP => ram_wr_int, ce => '1', @@ -290,17 +215,17 @@ begin -- Original: Acorn TUBE Z80 64k 1.21 -- Updated: Acorn TUBE Z80 112 Mhz - digit1 <= x"31" when SW = "00" else + digit1 <= x"31" when sw_out(1 downto 0) = "00" else x"06"; - digit2 <= x"31" when SW = "00" else - x"35" when SW = "01" else - x"33" when SW = "10" else + digit2 <= x"31" when sw_out(1 downto 0) = "00" else + x"35" when sw_out(1 downto 0) = "01" else + x"33" when sw_out(1 downto 0) = "10" else x"31"; - digit3 <= x"32" when SW = "00" else - x"36" when SW = "01" else - x"32" when SW = "10" else + digit3 <= x"32" when sw_out(1 downto 0) = "00" else + x"36" when sw_out(1 downto 0) = "01" else + x"32" when sw_out(1 downto 0) = "10" else x"36"; ram_cs_b <= '0' when cpu_mreq_n = '0' and rom_cs_b = '1' else '1'; @@ -387,7 +312,7 @@ begin clk_gen : process(cpu_clk) begin if rising_edge(cpu_clk) then - case "00"&sw is + case "00" & sw_out(1 downto 0) is when x"0" => if (clken_counter = 1) then clken_counter <= (others => '0'); From fb88fc93af784d328e07d9c9d4e5fc78221c0e71 Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 31 Aug 2015 17:11:57 +0100 Subject: [PATCH 30/61] Extended multiboot using Xilinx GENERAL5 register to pass soft DIP state across reconfiguration boundaries Change-Id: I1ec90b90fbdb1101a7bee2e260d44e3d9377f4e7 --- LX9Co-6502.xise | 2 +- LX9Co-6502fast.xise | 4 +- LX9Co-6809.xise | 2 +- LX9Co-BIST.xise | 4 +- LX9Co-PDP11.xise | 2 +- LX9Co-x86.xise | 2 +- LX9Co-z80.xise | 2 +- LX9Co-z80fast.xise | 4 +- LX9Co.xise | 6 +- src/ICAP_config.v | 34 ++- src/ICAP_core.v | 625 ++++++++++++++++++++++++++++++-------------- src/ICAP_reboot.v | 3 + 12 files changed, 466 insertions(+), 224 deletions(-) diff --git a/LX9Co-6502.xise b/LX9Co-6502.xise index d8ff48f..5e5d5c0 100644 --- a/LX9Co-6502.xise +++ b/LX9Co-6502.xise @@ -271,7 +271,7 @@ - + diff --git a/LX9Co-6502fast.xise b/LX9Co-6502fast.xise index 87ad271..a12a024 100644 --- a/LX9Co-6502fast.xise +++ b/LX9Co-6502fast.xise @@ -140,7 +140,7 @@ - + @@ -278,7 +278,7 @@ - + diff --git a/LX9Co-6809.xise b/LX9Co-6809.xise index 44f71fe..31e9ea3 100644 --- a/LX9Co-6809.xise +++ b/LX9Co-6809.xise @@ -238,7 +238,7 @@ - + diff --git a/LX9Co-BIST.xise b/LX9Co-BIST.xise index 1d2c952..743d046 100644 --- a/LX9Co-BIST.xise +++ b/LX9Co-BIST.xise @@ -52,7 +52,7 @@ - + @@ -189,7 +189,7 @@ - + diff --git a/LX9Co-PDP11.xise b/LX9Co-PDP11.xise index e6502f1..ea17699 100644 --- a/LX9Co-PDP11.xise +++ b/LX9Co-PDP11.xise @@ -249,7 +249,7 @@ - + diff --git a/LX9Co-x86.xise b/LX9Co-x86.xise index 3007af3..176d582 100644 --- a/LX9Co-x86.xise +++ b/LX9Co-x86.xise @@ -374,7 +374,7 @@ - + diff --git a/LX9Co-z80.xise b/LX9Co-z80.xise index b1ce9df..87a8b36 100644 --- a/LX9Co-z80.xise +++ b/LX9Co-z80.xise @@ -254,7 +254,7 @@ - + diff --git a/LX9Co-z80fast.xise b/LX9Co-z80fast.xise index 8ac18d0..22b7019 100644 --- a/LX9Co-z80fast.xise +++ b/LX9Co-z80fast.xise @@ -134,7 +134,7 @@ - + @@ -271,7 +271,7 @@ - + diff --git a/LX9Co.xise b/LX9Co.xise index f54f47c..a2d04f3 100644 --- a/LX9Co.xise +++ b/LX9Co.xise @@ -22,10 +22,6 @@ - - - - @@ -195,7 +191,7 @@ - + diff --git a/src/ICAP_config.v b/src/ICAP_config.v index 79b1cf4..01ff0b9 100644 --- a/src/ICAP_config.v +++ b/src/ICAP_config.v @@ -1,6 +1,7 @@ module ICAP_config ( input fastclk, + output [7:0] test, // DIP switches in and out input [3:0] sw_in, @@ -13,11 +14,15 @@ module ICAP_config input h_phi2, input h_rdnw, input h_rst_b + ); - reg reconfigure_on_reset = 1'b0; + reg reconfigure_sw_changed = 1'b0; + reg reconfigure_hw_changed = 1'b0; reg reconfigure = 1'b0; - reg [4:0] design_num; + reg [4:0] design_num; + wire [3:0] pwr_out; + wire initialized; ICAP_core instance_core ( @@ -26,21 +31,36 @@ module ICAP_config .reconfigure(reconfigure), .powerup(1'b0), .sw_in(sw_in), - .sw_out(sw_out) + .sw_out(sw_out), + .pwr_out(pwr_out), + .initialized(initialized), + .test(test) ); always @(posedge fastclk) begin if (!h_rst_b) begin - reconfigure <= reconfigure_on_reset; + reconfigure <= reconfigure_sw_changed || reconfigure_hw_changed; end end - - // Implement a write only register at FEE6 + always @(negedge h_phi2) begin + // Implement a write only register at FEE6 to change the current design if (!h_cs_b && !h_rdnw && h_addr == 3'b110) begin design_num <= h_data[4:0]; - reconfigure_on_reset <= 1'b1; + reconfigure_sw_changed <= 1'b1; + end + // Detect changes in the DIP Switches, and invoke the multi boot loader as for a power up + if (initialized) begin + if (sw_in != pwr_out) begin + // Someone has moved the hardware DIP switches + design_num <= 5'b10000; + reconfigure_hw_changed <= 1'b1; + end else begin + // Someone has moved them back again + reconfigure_hw_changed <= 1'b0; + end end end + endmodule diff --git a/src/ICAP_core.v b/src/ICAP_core.v index 8a9a54c..f4b4c63 100644 --- a/src/ICAP_core.v +++ b/src/ICAP_core.v @@ -1,163 +1,354 @@ -module ICAP_core ( - input fastclk, - input [4:0] design_num, - input reconfigure, - input powerup, - input [3:0] sw_in, - output [3:0] sw_out, - output [7:0] test - ); +module ICAP_core + ( + input fastclk, + input [4:0] design_num, + input reconfigure, + input powerup, + input [3:0] sw_in, + output [3:0] sw_out, + output [3:0] pwr_out, + output initialized, + output [7:0] test + ); + reg clk_16M00; -reg clk_16M00; + reg [15:0] icap_din; + reg icap_ce; + reg icap_wr; -reg [15:0] icap_din; -reg icap_ce; -reg icap_wr; + wire [15:0] icap_dout_reversed; + reg [15:0] icap_dout; -reg [15:0] ff_icap_din_reversed; -reg ff_icap_ce; -reg ff_icap_wr; - -reg [3:0] MBT_REBOOT=4'b0000; - -assign sw_out = sw_in; - + reg [15:0] ff_icap_din_reversed; + reg ff_icap_ce; + reg ff_icap_wr; + reg [3:0] MBT_REBOOT = 4'b0000; + reg [7:0] soft_dip = 8'b00000000; - ICAP_SPARTAN6 ICAP_SPARTAN6_inst ( - - .BUSY (), // Busy output - .O (), // 16-bit data output - .CE (ff_icap_ce), // Clock enable input - .CLK (clk_16M00), // Clock input - .I (ff_icap_din_reversed), // 16-bit data input - .WRITE (ff_icap_wr) // Write input - ); - -assign test = {4'b0000,MBT_REBOOT}; + reg test_trig; -// ------------------------------------------------- -// -- State Machine for ICAP_SPARTAN6 MultiBoot -- -// -- sequence. -- -// ------------------------------------------------- + assign test = { clk_16M00, test_trig, busy, ff_icap_wr, + sw_in[0] ? icap_dout[3:0] : + (sw_in[1] ? icap_dout[7:4] : + (sw_in[2] ? icap_dout[11:8] : + (sw_in[3] ? icap_dout[15:12] : 4'b1010)))}; + assign sw_out = powerup ? sw_in : soft_dip[3:0]; -parameter IDLE = 0, - SYNC_H = 1, - SYNC_L = 2, - - CWD_H = 3, - CWD_L = 4, - - GEN1_H = 5, - GEN1_L = 6, - - GEN2_H = 7, - GEN2_L = 8, - - GEN3_H = 9, - GEN3_L = 10, - - GEN4_H = 11, - GEN4_L = 12, - - GEN5_H = 13, - GEN5_L = 14, - - NUL_H = 15, - NUL_L = 16, + assign pwr_out = powerup ? sw_in : soft_dip[7:4]; + + assign initialized = state == IDLE; + + wire busy; + + ICAP_SPARTAN6 ICAP_SPARTAN6_inst + ( + .BUSY (busy), // Busy output + .O (icap_dout_reversed), // 16-bit data output + .CE (ff_icap_ce), // Clock enable input + .CLK (clk_16M00), // Clock input + .I (ff_icap_din_reversed), // 16-bit data input + .WRITE (ff_icap_wr) // Write input + ); + + + // ------------------------------------------------- + // -- State Machine for ICAP_SPARTAN6 MultiBoot -- + // -- sequence. -- + // ------------------------------------------------- + + + parameter + + INIT = 0, + + RD_DUMMY = 1, + RD_SYNC_H = 2, + RD_SYNC_L = 3, + RD_NOOP_1 = 4, + RD_NOOP_2 = 5, + RD_GEN5 = 6, + RD_NOOP_3 = 7, + RD_NOOP_4 = 8, + RD_NOOP_5 = 9, + RD_NOOP_6 = 10, + RD_AVOID_ABORT_1 = 11, + RD_AVOID_ABORT_2 = 12, + RD_LATCH_DATA = 13, + RD_AVOID_ABORT_3 = 14, + RD_AVOID_ABORT_4 = 15, + RD_DESYNC_H = 16, + RD_DESYNC_L = 17, + RD_NOOP_7 = 18, + + IDLE = 19, + DUMMY_1 = 20, + DUMMY_2 = 21, + SYNC_H = 22, + SYNC_L = 23, + + GEN1_H = 24, + GEN1_L = 25, - MOD_H = 17, - MOD_L = 18, + GEN2_H = 26, + GEN2_L = 27, - HCO_H = 19, - HCO_L = 20, + GEN5_H = 28, + GEN5_L = 29, - RBT_H = 21, - RBT_L = 22, + RBT_H = 30, + RBT_L = 31, - NOOP_0 = 23, - NOOP_1 = 24, - NOOP_2 = 25, - NOOP_3 = 26; - - -reg [4:0] state = IDLE; -reg [4:0] next_state; - - -always @(MBT_REBOOT or state or design_num) - begin: COMB - - case (state) - - IDLE: - begin - if (MBT_REBOOT==4'b1111) - begin - next_state = SYNC_H; - icap_ce = 0; - icap_wr = 0; - icap_din = 16'hAA99; // Sync word part 1 - end - else - begin - next_state = IDLE; - icap_ce = 1; - icap_wr = 1; - icap_din = 16'hFFFF; // Null data - end + RBT_NOOP_0 = 32, + RBT_NOOP_1 = 33, + RBT_NOOP_2 = 34, + RBT_NOOP_3 = 35; + + reg [5:0] state = INIT; + reg [5:0] next_state; + + always @(MBT_REBOOT or state or design_num or reconfigure or powerup or sw_in or busy or soft_dip) + begin: COMB + + case (state) + + + //-------------------- + + INIT: + begin + next_state = RD_DUMMY; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hFFFF; // Null data end - SYNC_H: + RD_DUMMY: begin - next_state = SYNC_L; + next_state = RD_SYNC_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hAA99; // Sync word part 1 + end + + RD_SYNC_H: + begin + next_state = RD_SYNC_L; icap_ce = 0; icap_wr = 0; icap_din = 16'h5566; // Sync word part 2 end -//-------------------- + RD_SYNC_L: + begin + next_state = RD_NOOP_1; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end - SYNC_L: + RD_NOOP_1: + begin + next_state = RD_NOOP_2; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + RD_NOOP_2: + begin + next_state = RD_GEN5; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2ae1; // Read General_5 register + end + + RD_GEN5: + begin + next_state = RD_NOOP_3; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + RD_NOOP_3: + begin + next_state = RD_NOOP_4; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + RD_NOOP_4: + begin + next_state = RD_NOOP_5; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + RD_NOOP_5: + begin + next_state = RD_NOOP_6; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + RD_NOOP_6: + begin + next_state = RD_AVOID_ABORT_1; + icap_ce = 1; + icap_wr = 0; + icap_din = 16'hffff; // Dummy Data + end + + RD_AVOID_ABORT_1: + begin + next_state = RD_AVOID_ABORT_2; + icap_ce = 1; + icap_wr = 1; + icap_din = 16'hffff; // Dummy Data + end + + RD_AVOID_ABORT_2: + begin + next_state = RD_LATCH_DATA; + icap_ce = 0; + icap_wr = 1; + icap_din = 16'hffff; // Dummy Data + end + + RD_LATCH_DATA: + begin + if (busy) begin + next_state = RD_LATCH_DATA; + icap_ce = 0; + icap_wr = 1; + icap_din = 16'hffff; // Dummy Data + end else begin + next_state = RD_AVOID_ABORT_3; + icap_ce = 1; + icap_wr = 1; + icap_din = 16'hffff; // Dummy Data + end + end + + RD_AVOID_ABORT_3: begin - next_state = GEN1_H; + next_state = RD_AVOID_ABORT_4; + icap_ce = 1; + icap_wr = 0; + icap_din = 16'hffff; // Dummy Data + end + + RD_AVOID_ABORT_4: + begin + next_state = RD_DESYNC_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h30a1; // Write to CMD Register + end + + RD_DESYNC_H: + begin + next_state = RD_DESYNC_L; icap_ce = 0; icap_wr = 0; - icap_din = 16'h3261; // Write to GENERAL_1 Register.... + icap_din = 16'h000d; // DESYNC command end - GEN1_H: + RD_DESYNC_L: + begin + next_state = RD_NOOP_7; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + RD_NOOP_7: + begin + next_state = IDLE; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h2000; // NOOP + end + + IDLE: + begin + if (reconfigure) begin + next_state = DUMMY_1; + end else begin + next_state = IDLE; + end + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hFFFF; // Null data + end + + DUMMY_1: + begin + next_state = DUMMY_2; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hFFFF; // Null data + end + + DUMMY_2: + begin + next_state = SYNC_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hAA99; // Sync word part 1 + end + + SYNC_H: + begin + next_state = SYNC_L; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h5566; // Sync word part 2 + end + + SYNC_L: + begin + next_state = GEN1_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h3261; // Write to GENERAL_1 Register.... + end + + GEN1_H: begin next_state = GEN1_L; icap_ce = 0; icap_wr = 0; - //icap_din = 16'h32c1; case (design_num) - 5'b10000: icap_din = 16'h0000; - 5'b00000: icap_din = 16'h4000; - 5'b00001: icap_din = 16'h8000; - 5'b00010: icap_din = 16'hC000; - 5'b00011: icap_din = 16'h0000; - 5'b00100: icap_din = 16'h4000; - 5'b00111: icap_din = 16'h0000; - 5'b01000: icap_din = 16'h8000; - 5'b01001: icap_din = 16'h8000; - 5'b01010: icap_din = 16'h8000; - 5'b01011: icap_din = 16'h8000; - 5'b01100: icap_din = 16'hC000; - 5'b01101: icap_din = 16'hC000; - 5'b01110: icap_din = 16'hC000; - 5'b01111: icap_din = 16'hC000; - default: icap_din = 16'h4000; + 5'b10000: icap_din = 16'h0000; + 5'b00000: icap_din = 16'h4000; + 5'b00001: icap_din = 16'h8000; + 5'b00010: icap_din = 16'hC000; + 5'b00011: icap_din = 16'h0000; + 5'b00100: icap_din = 16'h4000; + 5'b00111: icap_din = 16'h0000; + 5'b01000: icap_din = 16'h8000; + 5'b01001: icap_din = 16'h8000; + 5'b01010: icap_din = 16'h8000; + 5'b01011: icap_din = 16'h8000; + 5'b01100: icap_din = 16'hC000; + 5'b01101: icap_din = 16'hC000; + 5'b01110: icap_din = 16'hC000; + 5'b01111: icap_din = 16'hC000; + default: icap_din = 16'h4000; endcase end - GEN1_L: + GEN1_L: begin next_state = GEN2_H; icap_ce = 0; @@ -165,37 +356,58 @@ always @(MBT_REBOOT or state or design_num) icap_din = 16'h3281; // Write to GENERAL_2 Register.... end - GEN2_H: + GEN2_H: begin next_state = GEN2_L; icap_ce = 0; icap_wr = 0; - //icap_din = 16'h0305; case (design_num) - 5'b10000: icap_din = 16'h0000; - 5'b00000: icap_din = 16'h0305; - 5'b00001: icap_din = 16'h030a; - 5'b00010: icap_din = 16'h030f; - 5'b00011: icap_din = 16'h0315; - 5'b00100: icap_din = 16'h031a; - 5'b00111: icap_din = 16'h032a; - 5'b01000: icap_din = 16'h031f; - 5'b01001: icap_din = 16'h031f; - 5'b01010: icap_din = 16'h031f; - 5'b01011: icap_din = 16'h031f; - 5'b01100: icap_din = 16'h0324; - 5'b01101: icap_din = 16'h0324; - 5'b01110: icap_din = 16'h0324; - 5'b01111: icap_din = 16'h0324; - default: icap_din = 16'h0305; + 5'b10000: icap_din = 16'h0000; + 5'b00000: icap_din = 16'h0305; + 5'b00001: icap_din = 16'h030a; + 5'b00010: icap_din = 16'h030f; + 5'b00011: icap_din = 16'h0315; + 5'b00100: icap_din = 16'h031a; + 5'b00111: icap_din = 16'h032a; + 5'b01000: icap_din = 16'h031f; + 5'b01001: icap_din = 16'h031f; + 5'b01010: icap_din = 16'h031f; + 5'b01011: icap_din = 16'h031f; + 5'b01100: icap_din = 16'h0324; + 5'b01101: icap_din = 16'h0324; + 5'b01110: icap_din = 16'h0324; + 5'b01111: icap_din = 16'h0324; + default: icap_din = 16'h0305; endcase end -//-------------------- + //-------------------- + + + GEN2_L: + begin + next_state = GEN5_H; + icap_ce = 0; + icap_wr = 0; + icap_din = 16'h32e1; // Write to GENERAL_5 Register.... + end - GEN2_L: + GEN5_H: + begin + next_state = GEN5_L; + icap_ce = 0; + icap_wr = 0; + icap_din[15:7] = 12'b0; + icap_din[7:4] = powerup ? sw_in : soft_dip[7:4]; + icap_din[3:0] = powerup ? sw_in : design_num[3:0]; + end + + + //-------------------- + + GEN5_L: begin next_state = RBT_H; icap_ce = 0; @@ -203,7 +415,7 @@ always @(MBT_REBOOT or state or design_num) icap_din = 16'h30A1; // Write to Command Register.... end - RBT_H: + RBT_H: begin next_state = RBT_L; icap_ce = 0; @@ -211,84 +423,88 @@ always @(MBT_REBOOT or state or design_num) icap_din = 16'h000E; // REBOOT Command issued.... value = 0x000E end -//-------------------- + //-------------------- - RBT_L: + RBT_L: begin - next_state = NOOP_0; + next_state = RBT_NOOP_0; icap_ce = 0; icap_wr = 0; - icap_din = 16'h2000; // NOOP + icap_din = 16'h2000; // RBT_NOOP end - NOOP_0: + RBT_NOOP_0: begin - next_state = NOOP_1; + next_state = RBT_NOOP_1; icap_ce = 0; icap_wr = 0; - icap_din = 16'h2000; // NOOP + icap_din = 16'h2000; // RBT_NOOP end - NOOP_1: + RBT_NOOP_1: begin - next_state = NOOP_2; + next_state = RBT_NOOP_2; icap_ce = 0; icap_wr = 0; - icap_din = 16'h2000; // NOOP + icap_din = 16'h2000; // RBT_NOOP end - NOOP_2: + RBT_NOOP_2: begin - next_state = NOOP_3; + next_state = RBT_NOOP_3; icap_ce = 0; icap_wr = 0; - icap_din = 16'h2000; // NOOP + icap_din = 16'h2000; // RBT_NOOP end -//-------------------- + //-------------------- - NOOP_3: + RBT_NOOP_3: begin next_state = IDLE; - icap_ce = 1; - icap_wr = 1; - icap_din = 16'h1111; // NULL value + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hffff; // NULL value end - default: + default: begin next_state = IDLE; - icap_ce = 1; - icap_wr = 1; - icap_din = 16'h1111; // 16'h1111" + icap_ce = 0; + icap_wr = 0; + icap_din = 16'hffff; // 16'h1111" end - endcase - end - + endcase + end -always@(posedge fastclk) -begin - clk_16M00 = !clk_16M00; -end -always@(posedge clk_16M00) // Give a bit of delay before starting the statemachine -begin - if (MBT_REBOOT == 4'b1111) begin - state <= next_state; - end else if (reconfigure || MBT_REBOOT != 4'b0000) begin - MBT_REBOOT <= MBT_REBOOT + 4'b0001; - state <= IDLE; - end else begin - state <= IDLE; - end -end + always@(posedge fastclk) begin + clk_16M00 = !clk_16M00; + end -always @(posedge clk_16M00) + // Give a bit of delay before starting the state machine + always @(posedge clk_16M00) begin + if (MBT_REBOOT == 4'b1111) begin + state <= next_state; + end else begin + MBT_REBOOT <= MBT_REBOOT + 4'b0001; + state <= INIT; + end + if (state == RD_LATCH_DATA) begin + test_trig <= 1'b1; + end else begin + test_trig <= 1'b0; + end + if (state == RD_LATCH_DATA && !busy) begin + soft_dip <= icap_dout[7:0]; + end + end - begin: ICAP_FF - ff_icap_din_reversed[0] <= icap_din[7]; //need to reverse bits to ICAP module since D0 bit is read first + always @(posedge clk_16M00) begin: ICAP_FF + // need to reverse bits to ICAP module since D0 bit is read first + ff_icap_din_reversed[0] <= icap_din[7]; ff_icap_din_reversed[1] <= icap_din[6]; ff_icap_din_reversed[2] <= icap_din[5]; ff_icap_din_reversed[3] <= icap_din[4]; @@ -304,21 +520,28 @@ always @(posedge clk_16M00) ff_icap_din_reversed[13] <= icap_din[10]; ff_icap_din_reversed[14] <= icap_din[9]; ff_icap_din_reversed[15] <= icap_din[8]; - ff_icap_ce <= icap_ce; ff_icap_wr <= icap_wr; - end - - + end + + always @(icap_dout_reversed) begin + // need to reverse bits to ICAP module since D0 bit is read first + icap_dout[0] <= icap_dout_reversed[7]; + icap_dout[1] <= icap_dout_reversed[6]; + icap_dout[2] <= icap_dout_reversed[5]; + icap_dout[3] <= icap_dout_reversed[4]; + icap_dout[4] <= icap_dout_reversed[3]; + icap_dout[5] <= icap_dout_reversed[2]; + icap_dout[6] <= icap_dout_reversed[1]; + icap_dout[7] <= icap_dout_reversed[0]; + icap_dout[8] <= icap_dout_reversed[15]; + icap_dout[9] <= icap_dout_reversed[14]; + icap_dout[10] <= icap_dout_reversed[13]; + icap_dout[11] <= icap_dout_reversed[12]; + icap_dout[12] <= icap_dout_reversed[11]; + icap_dout[13] <= icap_dout_reversed[10]; + icap_dout[14] <= icap_dout_reversed[9]; + icap_dout[15] <= icap_dout_reversed[8]; + end + endmodule - - - - - - - - - - - diff --git a/src/ICAP_reboot.v b/src/ICAP_reboot.v index 8ec5601..65e5a52 100644 --- a/src/ICAP_reboot.v +++ b/src/ICAP_reboot.v @@ -10,6 +10,9 @@ module ICAP_reboot ( .reconfigure(1'b1), .powerup(1'b1), .sw_in(sw), + .sw_out(), + .pwr_out(), + .initialized(), .test(test) ); From 1df42074347c8ccf26426bb35e40c7a9e57494f5 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 1 Sep 2015 14:11:28 +0100 Subject: [PATCH 31/61] Added a Null Co Pro design in unused slots (5,6) to allow the Co Pro to be disabled Change-Id: I97c3631777552ed6eef16fa80467e04e58eccc9c --- LX9Co-6502.xise | 2 +- LX9Co-6809.xise | 2 +- LX9Co-BIST.xise | 2 +- LX9Co-Null.xise | 371 ++++++++++++++++++++++++++++++++++++++++ LX9Co-PDP11.xise | 2 +- LX9Co-x86.xise | 2 +- LX9Co-z80.xise | 2 +- LX9Co-z80fast.xise | 2 +- LX9Co.xise | 2 +- gen_mcs.sh | 3 +- ise_build_all.tcl | 3 + ise_clean_all.tcl | 3 + src/ICAP_core.v | 6 +- src/LX9Co_CoProNull.vhd | 71 ++++++++ 14 files changed, 461 insertions(+), 12 deletions(-) create mode 100644 LX9Co-Null.xise create mode 100644 src/LX9Co_CoProNull.vhd diff --git a/LX9Co-6502.xise b/LX9Co-6502.xise index 5e5d5c0..4a68f61 100644 --- a/LX9Co-6502.xise +++ b/LX9Co-6502.xise @@ -134,7 +134,7 @@ - + diff --git a/LX9Co-6809.xise b/LX9Co-6809.xise index 31e9ea3..2a67317 100644 --- a/LX9Co-6809.xise +++ b/LX9Co-6809.xise @@ -101,7 +101,7 @@ - + diff --git a/LX9Co-BIST.xise b/LX9Co-BIST.xise index 743d046..c79bc4b 100644 --- a/LX9Co-BIST.xise +++ b/LX9Co-BIST.xise @@ -52,7 +52,7 @@ - + diff --git a/LX9Co-Null.xise b/LX9Co-Null.xise new file mode 100644 index 0000000..a4247d9 --- /dev/null +++ b/LX9Co-Null.xise @@ -0,0 +1,371 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/LX9Co-PDP11.xise b/LX9Co-PDP11.xise index ea17699..f252acf 100644 --- a/LX9Co-PDP11.xise +++ b/LX9Co-PDP11.xise @@ -112,7 +112,7 @@ - + diff --git a/LX9Co-x86.xise b/LX9Co-x86.xise index 176d582..d00b273 100644 --- a/LX9Co-x86.xise +++ b/LX9Co-x86.xise @@ -236,7 +236,7 @@ - + diff --git a/LX9Co-z80.xise b/LX9Co-z80.xise index 87a8b36..9022fc8 100644 --- a/LX9Co-z80.xise +++ b/LX9Co-z80.xise @@ -117,7 +117,7 @@ - + diff --git a/LX9Co-z80fast.xise b/LX9Co-z80fast.xise index 22b7019..8933d4d 100644 --- a/LX9Co-z80fast.xise +++ b/LX9Co-z80fast.xise @@ -134,7 +134,7 @@ - + diff --git a/LX9Co.xise b/LX9Co.xise index a2d04f3..96f5922 100644 --- a/LX9Co.xise +++ b/LX9Co.xise @@ -53,7 +53,7 @@ - + diff --git a/gen_mcs.sh b/gen_mcs.sh index 0e2845c..df79ce8 100755 --- a/gen_mcs.sh +++ b/gen_mcs.sh @@ -29,7 +29,8 @@ promgen \ -u 1A4000 working/LX9Co_BIST.bit \ -u 1F8000 working/LX9CoPro6502fast.bit \ -u 24C000 working/LX9CoProZ80fast.bit \ --u 2A0000 working/LX9CoProPDP11.bit \ +-u 2A0000 working/LX9CoProPDP11.bit \ +-u 2F4000 working/LX9CoProNull.bit \ -o $NAME.mcs -p mcs -w -spi -s 8192 rm -f $NAME.cfi $NAME.prm diff --git a/ise_build_all.tcl b/ise_build_all.tcl index 683e608..af6cf4e 100755 --- a/ise_build_all.tcl +++ b/ise_build_all.tcl @@ -26,5 +26,8 @@ project close project open LX9Co-PDP11.xise process run "Generate Programming File" project close +project open LX9Co-Null.xise +process run "Generate Programming File" +project close exit diff --git a/ise_clean_all.tcl b/ise_clean_all.tcl index 66c16c9..09c1e4c 100755 --- a/ise_clean_all.tcl +++ b/ise_clean_all.tcl @@ -26,4 +26,7 @@ project close project open LX9Co-PDP11.xise project clean project close +project open LX9Co-Null.xise +project clean +project close exit diff --git a/src/ICAP_core.v b/src/ICAP_core.v index f4b4c63..1bdb4b4 100644 --- a/src/ICAP_core.v +++ b/src/ICAP_core.v @@ -363,7 +363,7 @@ module ICAP_core icap_wr = 0; case (design_num) - 5'b10000: icap_din = 16'h0000; + 5'b10000: icap_din = 16'h0300; 5'b00000: icap_din = 16'h0305; 5'b00001: icap_din = 16'h030a; 5'b00010: icap_din = 16'h030f; @@ -378,7 +378,7 @@ module ICAP_core 5'b01101: icap_din = 16'h0324; 5'b01110: icap_din = 16'h0324; 5'b01111: icap_din = 16'h0324; - default: icap_din = 16'h0305; + default: icap_din = 16'h032f; // The Null Co Processor endcase end @@ -399,7 +399,7 @@ module ICAP_core next_state = GEN5_L; icap_ce = 0; icap_wr = 0; - icap_din[15:7] = 12'b0; + icap_din[15:8] = 8'b0; icap_din[7:4] = powerup ? sw_in : soft_dip[7:4]; icap_din[3:0] = powerup ? sw_in : design_num[3:0]; end diff --git a/src/LX9Co_CoProNull.vhd b/src/LX9Co_CoProNull.vhd new file mode 100644 index 0000000..5d471dd --- /dev/null +++ b/src/LX9Co_CoProNull.vhd @@ -0,0 +1,71 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity LX9CoProNull is + port ( + -- GOP Signals + fastclk : in std_logic; + test : out std_logic_vector(8 downto 1); + sw : in std_logic_vector(3 downto 0); + + -- Tube signals + h_phi2 : in std_logic; + h_addr : in std_logic_vector(2 downto 0); + h_data : inout std_logic_vector(7 downto 0); + h_rdnw : in std_logic; + h_cs_b : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + + -- Ram Signals + ram_ub_b : out std_logic; + ram_lb_b : out std_logic; + ram_cs : out std_logic; + ram_oe : out std_logic; + ram_wr : out std_logic; + ram_addr : out std_logic_vector (18 downto 0); + ram_data : inout std_logic_vector (7 downto 0) + ); +end LX9CoProNull; + +architecture BEHAVIORAL of LX9CoProNull is + +begin + +--------------------------------------------------------------------- +-- instantiated components +--------------------------------------------------------------------- + + inst_ICAP_config : entity work.ICAP_config port map ( + fastclk => fastclk, + test => test, + sw_in => sw, + sw_out => open, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); + + h_data <= x"fe" when h_cs_b = '0' and h_rdnw = '1' and h_phi2 = '1' else (others => 'Z'); + h_irq_b <= 'Z'; + +-------------------------------------------------------- +-- external Ram unused +-------------------------------------------------------- + ram_ub_b <= '1'; + ram_lb_b <= '1'; + ram_cs <= '1'; + ram_oe <= '1'; + ram_wr <= '1'; + ram_addr <= (others => '1'); + ram_data <= (others => '1'); + + +end BEHAVIORAL; + + From f8c068f5645530fac7af5cbd75783eebcc4503f6 Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 7 Sep 2015 12:56:53 +0100 Subject: [PATCH 32/61] Mirror the parasite reset in ICAP_Config and use this as an additional reconfiguration trigger Change-Id: I0aa574307e53c6f636083ea311357117ccdf2d10 --- src/ICAP_config.v | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ICAP_config.v b/src/ICAP_config.v index 01ff0b9..336968c 100644 --- a/src/ICAP_config.v +++ b/src/ICAP_config.v @@ -23,7 +23,8 @@ module ICAP_config reg [4:0] design_num; wire [3:0] pwr_out; wire initialized; - + reg p_rst_b = 1'b1; + ICAP_core instance_core ( .fastclk(fastclk), @@ -38,12 +39,23 @@ module ICAP_config ); always @(posedge fastclk) begin - if (!h_rst_b) begin + if (!p_rst_b || !h_rst_b) begin reconfigure <= reconfigure_sw_changed || reconfigure_hw_changed; end end always @(negedge h_phi2) begin + // Mirror the reset bit of register FEE0, and allow this to reconfigure + if (!h_cs_b && !h_rdnw && h_addr == 3'b000) begin + if (h_data[6] && h_data[7]) begin + // Setting the T bit (bit 6) clears all tube registers + p_rst_b <= 1'b1; + end else if (h_data[5]) begin + // Setting the S bit (bit 5) asserts the parasite reset + // Clearing the S bit (bit 5) de-asserts the parasite reset + p_rst_b <= !h_data[7]; + end + end // Implement a write only register at FEE6 to change the current design if (!h_cs_b && !h_rdnw && h_addr == 3'b110) begin design_num <= h_data[4:0]; From 5ebd2a1ae1e51b3768f70429fd05d8e47116bd6f Mon Sep 17 00:00:00 2001 From: David Banks Date: Fri, 11 Sep 2015 20:57:32 +0100 Subject: [PATCH 33/61] Initial version of 68000 Co Pro using CiscOS v2.01 Change-Id: Ib1c87666e2898c2e7847661af226d1e8c3f3499b --- LX9Co-68000.xise | 425 + src/LX9Co_CoPro68000.vhd | 234 + src/ROM/tuberom_68000.vhd | 16417 ++++++++++++++++++++++++++++++++++++ src/TG68/TG68.vhd | 224 + src/TG68/TG68_fast.vhd | 3256 +++++++ 5 files changed, 20556 insertions(+) create mode 100644 LX9Co-68000.xise create mode 100644 src/LX9Co_CoPro68000.vhd create mode 100644 src/ROM/tuberom_68000.vhd create mode 100644 src/TG68/TG68.vhd create mode 100644 src/TG68/TG68_fast.vhd diff --git a/LX9Co-68000.xise b/LX9Co-68000.xise new file mode 100644 index 0000000..5c7fae0 --- /dev/null +++ b/LX9Co-68000.xise @@ -0,0 +1,425 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/LX9Co_CoPro68000.vhd b/src/LX9Co_CoPro68000.vhd new file mode 100644 index 0000000..fcad228 --- /dev/null +++ b/src/LX9Co_CoPro68000.vhd @@ -0,0 +1,234 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity LX9CoPro68000 is + port ( + -- GOP Signals + fastclk : in std_logic; + test : out std_logic_vector(8 downto 1); + sw : in std_logic_vector(3 downto 0); + + -- Tube signals (use 16 out of 22 DIL pins) + h_phi2 : in std_logic; -- 1,2,12,21,23 are global clocks + h_addr : in std_logic_vector(2 downto 0); + h_data : inout std_logic_vector(7 downto 0); + h_rdnw : in std_logic; + h_cs_b : in std_logic; + h_rst_b : in std_logic; + h_irq_b : inout std_logic; + + -- Ram Signals + ram_ub_b : out std_logic; + ram_lb_b : out std_logic; + ram_cs : out std_logic; + ram_oe : out std_logic; + ram_wr : out std_logic; + ram_addr : out std_logic_vector (18 downto 0); + ram_data : inout std_logic_vector (15 downto 0) + ); +end LX9CoPro68000; + +architecture BEHAVIORAL of LX9CoPro68000 is + +------------------------------------------------- +-- clock and reset signals +------------------------------------------------- + + signal cpu_clk : std_logic; + signal cpu_clken : std_logic; + signal clken_counter : std_logic_vector (1 downto 0); + signal bootmode : std_logic; + signal RSTn : std_logic; + signal RSTn_sync : std_logic; + +------------------------------------------------- +-- parasite signals +------------------------------------------------- + + signal p_cs_b : std_logic; + signal tube_cs_b : std_logic; + signal p_data_in : std_logic_vector (7 downto 0); + signal p_data_out : std_logic_vector (7 downto 0); + +------------------------------------------------- +-- ram/rom signals +------------------------------------------------- + + signal ram_cs_b : std_logic; + signal ram_oe_int : std_logic; + signal ram_wr_int : std_logic; + signal rom_cs_b : std_logic; + signal rom_data_out : std_logic_vector (15 downto 0); +------------------------------------------------- +-- cpu signals +------------------------------------------------- + + signal cpu_addr : std_logic_vector (31 downto 0); + signal cpu_din : std_logic_vector (15 downto 0); + signal cpu_dout : std_logic_vector (15 downto 0); + signal cpu_IRQ_n : std_logic; + signal cpu_NMI_n : std_logic; + signal cpu_IRQ_n_sync : std_logic; + signal cpu_NMI_n_sync : std_logic; + signal cpu_as : std_logic; + signal cpu_uds : std_logic; + signal cpu_lds : std_logic; + signal cpu_R_W_n : std_logic; + signal cpu_data_drive : std_logic; + +begin + +--------------------------------------------------------------------- +-- instantiated components +--------------------------------------------------------------------- + +-- inst_ICAP_config : entity work.ICAP_config port map ( +-- fastclk => fastclk, +-- sw_in => sw, +-- sw_out => open, +-- h_addr => h_addr, +-- h_cs_b => h_cs_b, +-- h_data => h_data, +-- h_phi2 => h_phi2, +-- h_rdnw => h_rdnw, +-- h_rst_b => h_rst_b +-- ); + + inst_dcm_32_16 : entity work.dcm_32_16 port map ( + CLKIN_IN => fastclk, + CLK0_OUT => cpu_clk, + CLK0_OUT1 => open, + CLK2X_OUT => open); + + inst_tuberom : entity work.tuberom_68000 port map ( + CLK => cpu_clk, + ADDR => cpu_addr(14 downto 1), + DATA => rom_data_out + ); + + Inst_tg68: entity work.TG68 port map ( + clk => cpu_clk, + reset => RSTn_sync, + clkena_in => cpu_clken, + data_in => cpu_din, + IPL => CPU_NMI_n_sync & CPU_IRQ_n_sync & CPU_NMI_n_sync, + dtack => '0', -- TODO FIXME + addr => cpu_addr, + data_out => cpu_dout, + as => cpu_as, + uds => cpu_uds, + lds => cpu_lds, + rw => cpu_R_W_n, + drive_data => cpu_data_drive + ); + + inst_tube: entity work.tube port map ( + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b, + h_irq_b => h_irq_b, + p_addr => cpu_addr(2 downto 1) & cpu_uds, + p_cs_b => tube_cs_b, + p_data_in => p_data_in, + p_data_out => p_data_out, + p_rdnw => cpu_R_W_n, + p_phi2 => cpu_clk, + p_rst_b => RSTn, + p_nmi_b => cpu_NMI_n, + p_irq_b => cpu_IRQ_n + ); + + p_data_in <= cpu_dout(15 downto 8) when cpu_uds = '0' else + cpu_dout(7 downto 0) when cpu_lds = '0' else + x"ff"; + + tube_cs_b <= not ((not p_cs_b) and cpu_clken and (not cpu_uds or not cpu_lds)); + + -- Tube address is $FFFExxxx, and A0..A2 go into the Tube ULA + -- Incomplete decoding as per Eelco's schenatic + p_cs_b <= '0' when (cpu_as = '0' and cpu_addr(21 downto 16) = "111110") + else '1'; + + -- ROM addess is $FFFFxxxx + -- In boot mode, ROM also mapped to $0000xxxx + rom_cs_b <= '0' when (cpu_as = '0' and cpu_addr(21 downto 16) = "111111") or + (cpu_as = '0' and cpu_addr(21 downto 16) = "000000" and bootmode = '1') + else '1'; + + -- RAM otherwise + ram_cs_b <= '0' when cpu_as = '0' and p_cs_b = '1' and rom_cs_b = '1' + else '1'; + + cpu_din <= + p_data_out & p_data_out when p_cs_b = '0' else + rom_data_out when rom_cs_b = '0' else + ram_data when ram_cs_b = '0' else + x"f1f1"; + + ram_ub_b <= cpu_uds; + ram_lb_b <= cpu_lds; + ram_cs <= ram_cs_b; + ram_oe_int <= not ((not ram_cs_b) and cpu_R_W_n); + ram_oe <= ram_oe_int; + ram_wr_int <= not ((not ram_cs_b) and (not cpu_R_W_n) and cpu_clken); + ram_wr <= ram_wr_int; + ram_addr <= cpu_addr(19 downto 1); + ram_data <= cpu_dout when cpu_data_drive = '1' else "ZZZZZZZZZZZZZZZZ"; + +-------------------------------------------------------- +-- test signals +-------------------------------------------------------- + + test <= cpu_as & cpu_R_W_n & tube_cs_b & cpu_irq_n_sync & cpu_nmi_n_sync & trig2 & trig1 & trig0; + +-------------------------------------------------------- +-- boot mode generator +-------------------------------------------------------- + + boot_gen : process(cpu_clk, RSTn_sync) + begin + if RSTn_sync = '0' then + bootmode <= '1'; + elsif rising_edge(cpu_clk) then + if cpu_as = '0' and cpu_addr(21 downto 19) = "111" then + bootmode <= '0'; + end if; + end if; + end process; + +-------------------------------------------------------- +-- synchronize interrupts etc into 68000 core +-------------------------------------------------------- + + sync_gen : process(cpu_clk, RSTn_sync) + begin + if RSTn_sync = '0' then + cpu_NMI_n_sync <= '1'; + cpu_IRQ_n_sync <= '1'; + elsif rising_edge(cpu_clk) then + cpu_NMI_n_sync <= cpu_NMI_n; + cpu_IRQ_n_sync <= cpu_IRQ_n; + end if; + end process; + +-------------------------------------------------------- +-- clock enable generator +-------------------------------------------------------- + + clk_gen : process(cpu_clk) + begin + if rising_edge(cpu_clk) then + clken_counter <= clken_counter + 1; + cpu_clken <= clken_counter(0); + RSTn_sync <= RSTn; + end if; + end process; + +end BEHAVIORAL; + + diff --git a/src/ROM/tuberom_68000.vhd b/src/ROM/tuberom_68000.vhd new file mode 100644 index 0000000..37c0bb7 --- /dev/null +++ b/src/ROM/tuberom_68000.vhd @@ -0,0 +1,16417 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tuberom_68000 is + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(13 downto 0); + DATA : out std_logic_vector(15 downto 0) + ); +end; + +architecture RTL of tuberom_68000 is + + signal rom_addr : std_logic_vector(13 downto 0); + +begin + + p_addr : process(ADDR) + begin + rom_addr <= (others => '0'); + rom_addr(13 downto 0) <= ADDR; + end process; + + p_rom : process + begin + wait until rising_edge(CLK); + DATA <= (others => '0'); + case rom_addr is + when "00" & x"000" => DATA <= x"0000"; + when "00" & x"001" => DATA <= x"0620"; + when "00" & x"002" => DATA <= x"003f"; + when "00" & x"003" => DATA <= x"0200"; + when "00" & x"004" => DATA <= x"003f"; + when "00" & x"005" => DATA <= x"0626"; + when "00" & x"006" => DATA <= x"003f"; + when "00" & x"007" => DATA <= x"072e"; + when "00" & x"008" => DATA <= x"003f"; + when "00" & x"009" => DATA <= x"073c"; + when "00" & x"00a" => DATA <= x"003f"; + when "00" & x"00b" => DATA <= x"0748"; + when "00" & x"00c" => DATA <= x"003f"; + when "00" & x"00d" => DATA <= x"0760"; + when "00" & x"00e" => DATA <= x"003f"; + when "00" & x"00f" => DATA <= x"0760"; + when "00" & x"010" => DATA <= x"003f"; + when "00" & x"011" => DATA <= x"0754"; + when "00" & x"012" => DATA <= x"003f"; + when "00" & x"013" => DATA <= x"0760"; + when "00" & x"014" => DATA <= x"003f"; + when "00" & x"015" => DATA <= x"0760"; + when "00" & x"016" => DATA <= x"003f"; + when "00" & x"017" => DATA <= x"0760"; + when "00" & x"018" => DATA <= x"003f"; + when "00" & x"019" => DATA <= x"0760"; + when "00" & x"01a" => DATA <= x"003f"; + when "00" & x"01b" => DATA <= x"0760"; + when "00" & x"01c" => DATA <= x"003f"; + when "00" & x"01d" => DATA <= x"0760"; + when "00" & x"01e" => DATA <= x"003f"; + when "00" & x"01f" => DATA <= x"0760"; + when "00" & x"020" => DATA <= x"003f"; + when "00" & x"021" => DATA <= x"0760"; + when "00" & x"022" => DATA <= x"003f"; + when "00" & x"023" => DATA <= x"0760"; + when "00" & x"024" => DATA <= x"003f"; + when "00" & x"025" => DATA <= x"0760"; + when "00" & x"026" => DATA <= x"003f"; + when "00" & x"027" => DATA <= x"0760"; + when "00" & x"028" => DATA <= x"003f"; + when "00" & x"029" => DATA <= x"0760"; + when "00" & x"02a" => DATA <= x"003f"; + when "00" & x"02b" => DATA <= x"0760"; + when "00" & x"02c" => DATA <= x"003f"; + when "00" & x"02d" => DATA <= x"0760"; + when "00" & x"02e" => DATA <= x"003f"; + when "00" & x"02f" => DATA <= x"0760"; + when "00" & x"030" => DATA <= x"003f"; + when "00" & x"031" => DATA <= x"0760"; + when "00" & x"032" => DATA <= x"003f"; + when "00" & x"033" => DATA <= x"25ae"; + when "00" & x"034" => DATA <= x"003f"; + when "00" & x"035" => DATA <= x"044c"; + when "00" & x"036" => DATA <= x"003f"; + when "00" & x"037" => DATA <= x"25ae"; + when "00" & x"038" => DATA <= x"003f"; + when "00" & x"039" => DATA <= x"25ae"; + when "00" & x"03a" => DATA <= x"003f"; + when "00" & x"03b" => DATA <= x"05fe"; + when "00" & x"03c" => DATA <= x"003f"; + when "00" & x"03d" => DATA <= x"25ae"; + when "00" & x"03e" => DATA <= x"003f"; + when "00" & x"03f" => DATA <= x"25ae"; + when "00" & x"040" => DATA <= x"003f"; + when "00" & x"041" => DATA <= x"0760"; + when "00" & x"042" => DATA <= x"003f"; + when "00" & x"043" => DATA <= x"0760"; + when "00" & x"044" => DATA <= x"003f"; + when "00" & x"045" => DATA <= x"0760"; + when "00" & x"046" => DATA <= x"003f"; + when "00" & x"047" => DATA <= x"0760"; + when "00" & x"048" => DATA <= x"003f"; + when "00" & x"049" => DATA <= x"0760"; + when "00" & x"04a" => DATA <= x"003f"; + when "00" & x"04b" => DATA <= x"0760"; + when "00" & x"04c" => DATA <= x"003f"; + when "00" & x"04d" => DATA <= x"0760"; + when "00" & x"04e" => DATA <= x"003f"; + when "00" & x"04f" => DATA <= x"0760"; + when "00" & x"050" => DATA <= x"003f"; + when "00" & x"051" => DATA <= x"0760"; + when "00" & x"052" => DATA <= x"003f"; + when "00" & x"053" => DATA <= x"0760"; + when "00" & x"054" => DATA <= x"003f"; + when "00" & x"055" => DATA <= x"0760"; + when "00" & x"056" => DATA <= x"003f"; + when "00" & x"057" => DATA <= x"0760"; + when "00" & x"058" => DATA <= x"003f"; + when "00" & x"059" => DATA <= x"08fc"; + when "00" & x"05a" => DATA <= x"003f"; + when "00" & x"05b" => DATA <= x"0760"; + when "00" & x"05c" => DATA <= x"003f"; + when "00" & x"05d" => DATA <= x"0760"; + when "00" & x"05e" => DATA <= x"003f"; + when "00" & x"05f" => DATA <= x"0760"; + when "00" & x"060" => DATA <= x"003f"; + when "00" & x"061" => DATA <= x"0760"; + when "00" & x"062" => DATA <= x"003f"; + when "00" & x"063" => DATA <= x"0760"; + when "00" & x"064" => DATA <= x"003f"; + when "00" & x"065" => DATA <= x"0760"; + when "00" & x"066" => DATA <= x"003f"; + when "00" & x"067" => DATA <= x"0760"; + when "00" & x"068" => DATA <= x"003f"; + when "00" & x"069" => DATA <= x"0760"; + when "00" & x"06a" => DATA <= x"003f"; + when "00" & x"06b" => DATA <= x"0760"; + when "00" & x"06c" => DATA <= x"003f"; + when "00" & x"06d" => DATA <= x"0760"; + when "00" & x"06e" => DATA <= x"003f"; + when "00" & x"06f" => DATA <= x"0760"; + when "00" & x"070" => DATA <= x"003f"; + when "00" & x"071" => DATA <= x"0760"; + when "00" & x"072" => DATA <= x"003f"; + when "00" & x"073" => DATA <= x"0760"; + when "00" & x"074" => DATA <= x"003f"; + when "00" & x"075" => DATA <= x"0760"; + when "00" & x"076" => DATA <= x"003f"; + when "00" & x"077" => DATA <= x"0760"; + when "00" & x"078" => DATA <= x"003f"; + when "00" & x"079" => DATA <= x"0760"; + when "00" & x"07a" => DATA <= x"003f"; + when "00" & x"07b" => DATA <= x"0760"; + when "00" & x"07c" => DATA <= x"003f"; + when "00" & x"07d" => DATA <= x"0760"; + when "00" & x"07e" => DATA <= x"003f"; + when "00" & x"07f" => DATA <= x"0760"; + when "00" & x"080" => DATA <= x"003f"; + when "00" & x"081" => DATA <= x"0776"; + when "00" & x"082" => DATA <= x"003f"; + when "00" & x"083" => DATA <= x"256c"; + when "00" & x"084" => DATA <= x"003f"; + when "00" & x"085" => DATA <= x"25ae"; + when "00" & x"086" => DATA <= x"003f"; + when "00" & x"087" => DATA <= x"25c6"; + when "00" & x"088" => DATA <= x"003f"; + when "00" & x"089" => DATA <= x"0a20"; + when "00" & x"08a" => DATA <= x"003f"; + when "00" & x"08b" => DATA <= x"0a30"; + when "00" & x"08c" => DATA <= x"003f"; + when "00" & x"08d" => DATA <= x"0ad2"; + when "00" & x"08e" => DATA <= x"003f"; + when "00" & x"08f" => DATA <= x"0be4"; + when "00" & x"090" => DATA <= x"003f"; + when "00" & x"091" => DATA <= x"0cca"; + when "00" & x"092" => DATA <= x"003f"; + when "00" & x"093" => DATA <= x"0d1a"; + when "00" & x"094" => DATA <= x"003f"; + when "00" & x"095" => DATA <= x"0d46"; + when "00" & x"096" => DATA <= x"003f"; + when "00" & x"097" => DATA <= x"0d5c"; + when "00" & x"098" => DATA <= x"003f"; + when "00" & x"099" => DATA <= x"0d7a"; + when "00" & x"09a" => DATA <= x"003f"; + when "00" & x"09b" => DATA <= x"0dbe"; + when "00" & x"09c" => DATA <= x"003f"; + when "00" & x"09d" => DATA <= x"0dec"; + when "00" & x"09e" => DATA <= x"003f"; + when "00" & x"09f" => DATA <= x"10d6"; + when "00" & x"0a0" => DATA <= x"003f"; + when "00" & x"0a1" => DATA <= x"25d8"; + when "00" & x"0a2" => DATA <= x"003f"; + when "00" & x"0a3" => DATA <= x"0776"; + when "00" & x"0a4" => DATA <= x"003f"; + when "00" & x"0a5" => DATA <= x"0776"; + when "00" & x"0a6" => DATA <= x"003f"; + when "00" & x"0a7" => DATA <= x"0776"; + when "00" & x"0a8" => DATA <= x"003f"; + when "00" & x"0a9" => DATA <= x"0776"; + when "00" & x"0aa" => DATA <= x"003f"; + when "00" & x"0ab" => DATA <= x"0776"; + when "00" & x"0ac" => DATA <= x"003f"; + when "00" & x"0ad" => DATA <= x"0776"; + when "00" & x"0ae" => DATA <= x"003f"; + when "00" & x"0af" => DATA <= x"0776"; + when "00" & x"0b0" => DATA <= x"003f"; + when "00" & x"0b1" => DATA <= x"25da"; + when "00" & x"0b2" => DATA <= x"003f"; + when "00" & x"0b3" => DATA <= x"0776"; + when "00" & x"0b4" => DATA <= x"003f"; + when "00" & x"0b5" => DATA <= x"0f0a"; + when "00" & x"0b6" => DATA <= x"003f"; + when "00" & x"0b7" => DATA <= x"0776"; + when "00" & x"0b8" => DATA <= x"003f"; + when "00" & x"0b9" => DATA <= x"0776"; + when "00" & x"0ba" => DATA <= x"003f"; + when "00" & x"0bb" => DATA <= x"0776"; + when "00" & x"0bc" => DATA <= x"003f"; + when "00" & x"0bd" => DATA <= x"25ea"; + when "00" & x"0be" => DATA <= x"003f"; + when "00" & x"0bf" => DATA <= x"0776"; + when "00" & x"0c0" => DATA <= x"003f"; + when "00" & x"0c1" => DATA <= x"0776"; + when "00" & x"0c2" => DATA <= x"003f"; + when "00" & x"0c3" => DATA <= x"0776"; + when "00" & x"0c4" => DATA <= x"003f"; + when "00" & x"0c5" => DATA <= x"0776"; + when "00" & x"0c6" => DATA <= x"003f"; + when "00" & x"0c7" => DATA <= x"0776"; + when "00" & x"0c8" => DATA <= x"003f"; + when "00" & x"0c9" => DATA <= x"0776"; + when "00" & x"0ca" => DATA <= x"003f"; + when "00" & x"0cb" => DATA <= x"0776"; + when "00" & x"0cc" => DATA <= x"003f"; + when "00" & x"0cd" => DATA <= x"0776"; + when "00" & x"0ce" => DATA <= x"003f"; + when "00" & x"0cf" => DATA <= x"0776"; + when "00" & x"0d0" => DATA <= x"003f"; + when "00" & x"0d1" => DATA <= x"0776"; + when "00" & x"0d2" => DATA <= x"003f"; + when "00" & x"0d3" => DATA <= x"0776"; + when "00" & x"0d4" => DATA <= x"003f"; + when "00" & x"0d5" => DATA <= x"0776"; + when "00" & x"0d6" => DATA <= x"003f"; + when "00" & x"0d7" => DATA <= x"0776"; + when "00" & x"0d8" => DATA <= x"0000"; + when "00" & x"0d9" => DATA <= x"0000"; + when "00" & x"0da" => DATA <= x"0000"; + when "00" & x"0db" => DATA <= x"0000"; + when "00" & x"0dc" => DATA <= x"0000"; + when "00" & x"0dd" => DATA <= x"0000"; + when "00" & x"0de" => DATA <= x"0000"; + when "00" & x"0df" => DATA <= x"0000"; + when "00" & x"0e0" => DATA <= x"0000"; + when "00" & x"0e1" => DATA <= x"0000"; + when "00" & x"0e2" => DATA <= x"003f"; + when "00" & x"0e3" => DATA <= x"2656"; + when "00" & x"0e4" => DATA <= x"003f"; + when "00" & x"0e5" => DATA <= x"265a"; + when "00" & x"0e6" => DATA <= x"003f"; + when "00" & x"0e7" => DATA <= x"265e"; + when "00" & x"0e8" => DATA <= x"003f"; + when "00" & x"0e9" => DATA <= x"2668"; + when "00" & x"0ea" => DATA <= x"0000"; + when "00" & x"0eb" => DATA <= x"0000"; + when "00" & x"0ec" => DATA <= x"0000"; + when "00" & x"0ed" => DATA <= x"0000"; + when "00" & x"0ee" => DATA <= x"0000"; + when "00" & x"0ef" => DATA <= x"0000"; + when "00" & x"0f0" => DATA <= x"0000"; + when "00" & x"0f1" => DATA <= x"0000"; + when "00" & x"0f2" => DATA <= x"0000"; + when "00" & x"0f3" => DATA <= x"0000"; + when "00" & x"0f4" => DATA <= x"0000"; + when "00" & x"0f5" => DATA <= x"0000"; + when "00" & x"0f6" => DATA <= x"0000"; + when "00" & x"0f7" => DATA <= x"0000"; + when "00" & x"0f8" => DATA <= x"0000"; + when "00" & x"0f9" => DATA <= x"0000"; + when "00" & x"0fa" => DATA <= x"0000"; + when "00" & x"0fb" => DATA <= x"0700"; + when "00" & x"0fc" => DATA <= x"0000"; + when "00" & x"0fd" => DATA <= x"0000"; + when "00" & x"0fe" => DATA <= x"0000"; + when "00" & x"0ff" => DATA <= x"0000"; + when "00" & x"100" => DATA <= x"207c"; + when "00" & x"101" => DATA <= x"0000"; + when "00" & x"102" => DATA <= x"0000"; + when "00" & x"103" => DATA <= x"227c"; + when "00" & x"104" => DATA <= x"003f"; + when "00" & x"105" => DATA <= x"0000"; + when "00" & x"106" => DATA <= x"303c"; + when "00" & x"107" => DATA <= x"003f"; + when "00" & x"108" => DATA <= x"20d9"; + when "00" & x"109" => DATA <= x"51c8"; + when "00" & x"10a" => DATA <= x"fffc"; + when "00" & x"10b" => DATA <= x"303c"; + when "00" & x"10c" => DATA <= x"00bf"; + when "00" & x"10d" => DATA <= x"20fc"; + when "00" & x"10e" => DATA <= x"003f"; + when "00" & x"10f" => DATA <= x"0760"; + when "00" & x"110" => DATA <= x"51c8"; + when "00" & x"111" => DATA <= x"fff8"; + when "00" & x"112" => DATA <= x"303c"; + when "00" & x"113" => DATA <= x"003f"; + when "00" & x"114" => DATA <= x"207c"; + when "00" & x"115" => DATA <= x"0000"; + when "00" & x"116" => DATA <= x"0400"; + when "00" & x"117" => DATA <= x"227c"; + when "00" & x"118" => DATA <= x"003f"; + when "00" & x"119" => DATA <= x"0100"; + when "00" & x"11a" => DATA <= x"20d9"; + when "00" & x"11b" => DATA <= x"51c8"; + when "00" & x"11c" => DATA <= x"fffc"; + when "00" & x"11d" => DATA <= x"203c"; + when "00" & x"11e" => DATA <= x"0001"; + when "00" & x"11f" => DATA <= x"fedf"; + when "00" & x"120" => DATA <= x"207c"; + when "00" & x"121" => DATA <= x"0000"; + when "00" & x"122" => DATA <= x"0500"; + when "00" & x"123" => DATA <= x"20fc"; + when "00" & x"124" => DATA <= x"0000"; + when "00" & x"125" => DATA <= x"0000"; + when "00" & x"126" => DATA <= x"51c8"; + when "00" & x"127" => DATA <= x"fff8"; + when "00" & x"128" => DATA <= x"6100"; + when "00" & x"129" => DATA <= x"0674"; + when "00" & x"12a" => DATA <= x"21c0"; + when "00" & x"12b" => DATA <= x"0508"; + when "00" & x"12c" => DATA <= x"2e40"; + when "00" & x"12d" => DATA <= x"0480"; + when "00" & x"12e" => DATA <= x"0000"; + when "00" & x"12f" => DATA <= x"0200"; + when "00" & x"130" => DATA <= x"2c40"; + when "00" & x"131" => DATA <= x"4e66"; + when "00" & x"132" => DATA <= x"0480"; + when "00" & x"133" => DATA <= x"0000"; + when "00" & x"134" => DATA <= x"0200"; + when "00" & x"135" => DATA <= x"23c0"; + when "00" & x"136" => DATA <= x"0000"; + when "00" & x"137" => DATA <= x"0500"; + when "00" & x"138" => DATA <= x"33fc"; + when "00" & x"139" => DATA <= x"0000"; + when "00" & x"13a" => DATA <= x"0000"; + when "00" & x"13b" => DATA <= x"0524"; + when "00" & x"13c" => DATA <= x"23fc"; + when "00" & x"13d" => DATA <= x"0000"; + when "00" & x"13e" => DATA <= x"0800"; + when "00" & x"13f" => DATA <= x"0000"; + when "00" & x"140" => DATA <= x"0504"; + when "00" & x"141" => DATA <= x"6100"; + when "00" & x"142" => DATA <= x"0502"; + when "00" & x"143" => DATA <= x"11c0"; + when "00" & x"144" => DATA <= x"0532"; + when "00" & x"145" => DATA <= x"6100"; + when "00" & x"146" => DATA <= x"0578"; + when "00" & x"147" => DATA <= x"11c0"; + when "00" & x"148" => DATA <= x"0533"; + when "00" & x"149" => DATA <= x"6100"; + when "00" & x"14a" => DATA <= x"0592"; + when "00" & x"14b" => DATA <= x"11c0"; + when "00" & x"14c" => DATA <= x"0534"; + when "00" & x"14d" => DATA <= x"11fc"; + when "00" & x"14e" => DATA <= x"0000"; + when "00" & x"14f" => DATA <= x"0535"; + when "00" & x"150" => DATA <= x"027c"; + when "00" & x"151" => DATA <= x"dfff"; + when "00" & x"152" => DATA <= x"203c"; + when "00" & x"153" => DATA <= x"003f"; + when "00" & x"154" => DATA <= x"27e2"; + when "00" & x"155" => DATA <= x"6100"; + when "00" & x"156" => DATA <= x"0752"; + when "00" & x"157" => DATA <= x"1038"; + when "00" & x"158" => DATA <= x"0532"; + when "00" & x"159" => DATA <= x"b07c"; + when "00" & x"15a" => DATA <= x"0009"; + when "00" & x"15b" => DATA <= x"6500"; + when "00" & x"15c" => DATA <= x"0004"; + when "00" & x"15d" => DATA <= x"7000"; + when "00" & x"15e" => DATA <= x"0c38"; + when "00" & x"15f" => DATA <= x"00ff"; + when "00" & x"160" => DATA <= x"0532"; + when "00" & x"161" => DATA <= x"6700"; + when "00" & x"162" => DATA <= x"001e"; + when "00" & x"163" => DATA <= x"203c"; + when "00" & x"164" => DATA <= x"003f"; + when "00" & x"165" => DATA <= x"2800"; + when "00" & x"166" => DATA <= x"d038"; + when "00" & x"167" => DATA <= x"0532"; + when "00" & x"168" => DATA <= x"d038"; + when "00" & x"169" => DATA <= x"0532"; + when "00" & x"16a" => DATA <= x"d038"; + when "00" & x"16b" => DATA <= x"0532"; + when "00" & x"16c" => DATA <= x"7203"; + when "00" & x"16d" => DATA <= x"6100"; + when "00" & x"16e" => DATA <= x"1092"; + when "00" & x"16f" => DATA <= x"6000"; + when "00" & x"170" => DATA <= x"000a"; + when "00" & x"171" => DATA <= x"103c"; + when "00" & x"172" => DATA <= x"004b"; + when "00" & x"173" => DATA <= x"6100"; + when "00" & x"174" => DATA <= x"06fe"; + when "00" & x"175" => DATA <= x"203c"; + when "00" & x"176" => DATA <= x"003f"; + when "00" & x"177" => DATA <= x"27ed"; + when "00" & x"178" => DATA <= x"6100"; + when "00" & x"179" => DATA <= x"070c"; + when "00" & x"17a" => DATA <= x"2038"; + when "00" & x"17b" => DATA <= x"0508"; + when "00" & x"17c" => DATA <= x"ea88"; + when "00" & x"17d" => DATA <= x"ea88"; + when "00" & x"17e" => DATA <= x"223c"; + when "00" & x"17f" => DATA <= x"0000"; + when "00" & x"180" => DATA <= x"0600"; + when "00" & x"181" => DATA <= x"243c"; + when "00" & x"182" => DATA <= x"0000"; + when "00" & x"183" => DATA <= x"00ff"; + when "00" & x"184" => DATA <= x"6100"; + when "00" & x"185" => DATA <= x"1484"; + when "00" & x"186" => DATA <= x"203c"; + when "00" & x"187" => DATA <= x"0000"; + when "00" & x"188" => DATA <= x"0600"; + when "00" & x"189" => DATA <= x"6100"; + when "00" & x"18a" => DATA <= x"06ea"; + when "00" & x"18b" => DATA <= x"203c"; + when "00" & x"18c" => DATA <= x"003f"; + when "00" & x"18d" => DATA <= x"281b"; + when "00" & x"18e" => DATA <= x"7207"; + when "00" & x"18f" => DATA <= x"6100"; + when "00" & x"190" => DATA <= x"104e"; + when "00" & x"191" => DATA <= x"7227"; + when "00" & x"192" => DATA <= x"6100"; + when "00" & x"193" => DATA <= x"0e2a"; + when "00" & x"194" => DATA <= x"6100"; + when "00" & x"195" => DATA <= x"00a6"; + when "00" & x"196" => DATA <= x"2f00"; + when "00" & x"197" => DATA <= x"7001"; + when "00" & x"198" => DATA <= x"223c"; + when "00" & x"199" => DATA <= x"0000"; + when "00" & x"19a" => DATA <= x"0528"; + when "00" & x"19b" => DATA <= x"6100"; + when "00" & x"19c" => DATA <= x"08ac"; + when "00" & x"19d" => DATA <= x"11fc"; + when "00" & x"19e" => DATA <= x"0000"; + when "00" & x"19f" => DATA <= x"052d"; + when "00" & x"1a0" => DATA <= x"11fc"; + when "00" & x"1a1" => DATA <= x"0000"; + when "00" & x"1a2" => DATA <= x"052e"; + when "00" & x"1a3" => DATA <= x"11fc"; + when "00" & x"1a4" => DATA <= x"0000"; + when "00" & x"1a5" => DATA <= x"052f"; + when "00" & x"1a6" => DATA <= x"11fc"; + when "00" & x"1a7" => DATA <= x"0000"; + when "00" & x"1a8" => DATA <= x"0530"; + when "00" & x"1a9" => DATA <= x"11fc"; + when "00" & x"1aa" => DATA <= x"0000"; + when "00" & x"1ab" => DATA <= x"0531"; + when "00" & x"1ac" => DATA <= x"201f"; + when "00" & x"1ad" => DATA <= x"b03c"; + when "00" & x"1ae" => DATA <= x"0080"; + when "00" & x"1af" => DATA <= x"103c"; + when "00" & x"1b0" => DATA <= x"002a"; + when "00" & x"1b1" => DATA <= x"6100"; + when "00" & x"1b2" => DATA <= x"0682"; + when "00" & x"1b3" => DATA <= x"203c"; + when "00" & x"1b4" => DATA <= x"0000"; + when "00" & x"1b5" => DATA <= x"0600"; + when "00" & x"1b6" => DATA <= x"223c"; + when "00" & x"1b7" => DATA <= x"0000"; + when "00" & x"1b8" => DATA <= x"00ff"; + when "00" & x"1b9" => DATA <= x"143c"; + when "00" & x"1ba" => DATA <= x"0020"; + when "00" & x"1bb" => DATA <= x"163c"; + when "00" & x"1bc" => DATA <= x"00ff"; + when "00" & x"1bd" => DATA <= x"207c"; + when "00" & x"1be" => DATA <= x"0000"; + when "00" & x"1bf" => DATA <= x"007d"; + when "00" & x"1c0" => DATA <= x"4e4c"; + when "00" & x"1c1" => DATA <= x"6500"; + when "00" & x"1c2" => DATA <= x"0012"; + when "00" & x"1c3" => DATA <= x"203c"; + when "00" & x"1c4" => DATA <= x"0000"; + when "00" & x"1c5" => DATA <= x"0600"; + when "00" & x"1c6" => DATA <= x"207c"; + when "00" & x"1c7" => DATA <= x"0000"; + when "00" & x"1c8" => DATA <= x"0005"; + when "00" & x"1c9" => DATA <= x"4e4c"; + when "00" & x"1ca" => DATA <= x"60c8"; + when "00" & x"1cb" => DATA <= x"707e"; + when "00" & x"1cc" => DATA <= x"6100"; + when "00" & x"1cd" => DATA <= x"0738"; + when "00" & x"1ce" => DATA <= x"203c"; + when "00" & x"1cf" => DATA <= x"003f"; + when "00" & x"1d0" => DATA <= x"2d78"; + when "00" & x"1d1" => DATA <= x"207c"; + when "00" & x"1d2" => DATA <= x"0000"; + when "00" & x"1d3" => DATA <= x"002b"; + when "00" & x"1d4" => DATA <= x"4e4c"; + when "00" & x"1d5" => DATA <= x"60b2"; + when "00" & x"1d6" => DATA <= x"0839"; + when "00" & x"1d7" => DATA <= x"0007"; + when "00" & x"1d8" => DATA <= x"fffe"; + when "00" & x"1d9" => DATA <= x"0000"; + when "00" & x"1da" => DATA <= x"6600"; + when "00" & x"1db" => DATA <= x"0012"; + when "00" & x"1dc" => DATA <= x"0839"; + when "00" & x"1dd" => DATA <= x"0007"; + when "00" & x"1de" => DATA <= x"fffe"; + when "00" & x"1df" => DATA <= x"0006"; + when "00" & x"1e0" => DATA <= x"67ea"; + when "00" & x"1e1" => DATA <= x"6100"; + when "00" & x"1e2" => DATA <= x"00f0"; + when "00" & x"1e3" => DATA <= x"60e4"; + when "00" & x"1e4" => DATA <= x"1039"; + when "00" & x"1e5" => DATA <= x"fffe"; + when "00" & x"1e6" => DATA <= x"0001"; + when "00" & x"1e7" => DATA <= x"4e75"; + when "00" & x"1e8" => DATA <= x"0839"; + when "00" & x"1e9" => DATA <= x"0007"; + when "00" & x"1ea" => DATA <= x"fffe"; + when "00" & x"1eb" => DATA <= x"0002"; + when "00" & x"1ec" => DATA <= x"67f6"; + when "00" & x"1ed" => DATA <= x"1039"; + when "00" & x"1ee" => DATA <= x"fffe"; + when "00" & x"1ef" => DATA <= x"0003"; + when "00" & x"1f0" => DATA <= x"4e75"; + when "00" & x"1f1" => DATA <= x"0839"; + when "00" & x"1f2" => DATA <= x"0006"; + when "00" & x"1f3" => DATA <= x"fffe"; + when "00" & x"1f4" => DATA <= x"0002"; + when "00" & x"1f5" => DATA <= x"67f6"; + when "00" & x"1f6" => DATA <= x"13c0"; + when "00" & x"1f7" => DATA <= x"fffe"; + when "00" & x"1f8" => DATA <= x"0003"; + when "00" & x"1f9" => DATA <= x"4e75"; + when "00" & x"1fa" => DATA <= x"0839"; + when "00" & x"1fb" => DATA <= x"0007"; + when "00" & x"1fc" => DATA <= x"fffe"; + when "00" & x"1fd" => DATA <= x"0006"; + when "00" & x"1fe" => DATA <= x"67f6"; + when "00" & x"1ff" => DATA <= x"1039"; + when "00" & x"200" => DATA <= x"fffe"; + when "00" & x"201" => DATA <= x"0007"; + when "00" & x"202" => DATA <= x"4e75"; + when "00" & x"203" => DATA <= x"4280"; + when "00" & x"204" => DATA <= x"61c6"; + when "00" & x"205" => DATA <= x"e198"; + when "00" & x"206" => DATA <= x"61c2"; + when "00" & x"207" => DATA <= x"e198"; + when "00" & x"208" => DATA <= x"61be"; + when "00" & x"209" => DATA <= x"e198"; + when "00" & x"20a" => DATA <= x"60ba"; + when "00" & x"20b" => DATA <= x"e198"; + when "00" & x"20c" => DATA <= x"61c8"; + when "00" & x"20d" => DATA <= x"e198"; + when "00" & x"20e" => DATA <= x"61c4"; + when "00" & x"20f" => DATA <= x"e198"; + when "00" & x"210" => DATA <= x"61c0"; + when "00" & x"211" => DATA <= x"e198"; + when "00" & x"212" => DATA <= x"60bc"; + when "00" & x"213" => DATA <= x"4280"; + when "00" & x"214" => DATA <= x"61ca"; + when "00" & x"215" => DATA <= x"e198"; + when "00" & x"216" => DATA <= x"61c6"; + when "00" & x"217" => DATA <= x"e198"; + when "00" & x"218" => DATA <= x"61c2"; + when "00" & x"219" => DATA <= x"e198"; + when "00" & x"21a" => DATA <= x"60be"; + when "00" & x"21b" => DATA <= x"0839"; + when "00" & x"21c" => DATA <= x"0006"; + when "00" & x"21d" => DATA <= x"fffe"; + when "00" & x"21e" => DATA <= x"0002"; + when "00" & x"21f" => DATA <= x"67f6"; + when "00" & x"220" => DATA <= x"101e"; + when "00" & x"221" => DATA <= x"619e"; + when "00" & x"222" => DATA <= x"b03c"; + when "00" & x"223" => DATA <= x"000d"; + when "00" & x"224" => DATA <= x"66ec"; + when "00" & x"225" => DATA <= x"4e75"; + when "00" & x"226" => DATA <= x"0839"; + when "00" & x"227" => DATA <= x"0007"; + when "00" & x"228" => DATA <= x"fffe"; + when "00" & x"229" => DATA <= x"0006"; + when "00" & x"22a" => DATA <= x"6600"; + when "00" & x"22b" => DATA <= x"005e"; + when "00" & x"22c" => DATA <= x"0839"; + when "00" & x"22d" => DATA <= x"0007"; + when "00" & x"22e" => DATA <= x"fffe"; + when "00" & x"22f" => DATA <= x"0000"; + when "00" & x"230" => DATA <= x"6600"; + when "00" & x"231" => DATA <= x"0010"; + when "00" & x"232" => DATA <= x"2f0e"; + when "00" & x"233" => DATA <= x"2c79"; + when "00" & x"234" => DATA <= x"0000"; + when "00" & x"235" => DATA <= x"0408"; + when "00" & x"236" => DATA <= x"4e96"; + when "00" & x"237" => DATA <= x"2c5f"; + when "00" & x"238" => DATA <= x"4e73"; + when "00" & x"239" => DATA <= x"2f00"; + when "00" & x"23a" => DATA <= x"1039"; + when "00" & x"23b" => DATA <= x"fffe"; + when "00" & x"23c" => DATA <= x"0001"; + when "00" & x"23d" => DATA <= x"6b00"; + when "00" & x"23e" => DATA <= x"0028"; + when "00" & x"23f" => DATA <= x"2f01"; + when "00" & x"240" => DATA <= x"4280"; + when "00" & x"241" => DATA <= x"6100"; + when "00" & x"242" => DATA <= x"ff28"; + when "00" & x"243" => DATA <= x"e158"; + when "00" & x"244" => DATA <= x"6100"; + when "00" & x"245" => DATA <= x"ff22"; + when "00" & x"246" => DATA <= x"3200"; + when "00" & x"247" => DATA <= x"6100"; + when "00" & x"248" => DATA <= x"ff1c"; + when "00" & x"249" => DATA <= x"2f0e"; + when "00" & x"24a" => DATA <= x"2c79"; + when "00" & x"24b" => DATA <= x"0000"; + when "00" & x"24c" => DATA <= x"0440"; + when "00" & x"24d" => DATA <= x"4e96"; + when "00" & x"24e" => DATA <= x"2c5f"; + when "00" & x"24f" => DATA <= x"221f"; + when "00" & x"250" => DATA <= x"201f"; + when "00" & x"251" => DATA <= x"4e73"; + when "00" & x"252" => DATA <= x"2f0e"; + when "00" & x"253" => DATA <= x"2c79"; + when "00" & x"254" => DATA <= x"0000"; + when "00" & x"255" => DATA <= x"04cc"; + when "00" & x"256" => DATA <= x"4e96"; + when "00" & x"257" => DATA <= x"2c5f"; + when "00" & x"258" => DATA <= x"201f"; + when "00" & x"259" => DATA <= x"4e73"; + when "00" & x"25a" => DATA <= x"1039"; + when "00" & x"25b" => DATA <= x"fffe"; + when "00" & x"25c" => DATA <= x"0007"; + when "00" & x"25d" => DATA <= x"6a00"; + when "00" & x"25e" => DATA <= x"003c"; + when "00" & x"25f" => DATA <= x"2f00"; + when "00" & x"260" => DATA <= x"2f0e"; + when "00" & x"261" => DATA <= x"2c7c"; + when "00" & x"262" => DATA <= x"0000"; + when "00" & x"263" => DATA <= x"0700"; + when "00" & x"264" => DATA <= x"6100"; + when "00" & x"265" => DATA <= x"ff06"; + when "00" & x"266" => DATA <= x"4280"; + when "00" & x"267" => DATA <= x"6100"; + when "00" & x"268" => DATA <= x"ff00"; + when "00" & x"269" => DATA <= x"2cc0"; + when "00" & x"26a" => DATA <= x"6100"; + when "00" & x"26b" => DATA <= x"fefa"; + when "00" & x"26c" => DATA <= x"1cc0"; + when "00" & x"26d" => DATA <= x"66f8"; + when "00" & x"26e" => DATA <= x"2c5f"; + when "00" & x"26f" => DATA <= x"203c"; + when "00" & x"270" => DATA <= x"0000"; + when "00" & x"271" => DATA <= x"0700"; + when "00" & x"272" => DATA <= x"21c0"; + when "00" & x"273" => DATA <= x"0514"; + when "00" & x"274" => DATA <= x"21fc"; + when "00" & x"275" => DATA <= x"ffff"; + when "00" & x"276" => DATA <= x"6502"; + when "00" & x"277" => DATA <= x"0510"; + when "00" & x"278" => DATA <= x"6100"; + when "00" & x"279" => DATA <= x"0c2e"; + when "00" & x"27a" => DATA <= x"201f"; + when "00" & x"27b" => DATA <= x"4e73"; + when "00" & x"27c" => DATA <= x"2f08"; + when "00" & x"27d" => DATA <= x"2f00"; + when "00" & x"27e" => DATA <= x"0280"; + when "00" & x"27f" => DATA <= x"0000"; + when "00" & x"280" => DATA <= x"00ff"; + when "00" & x"281" => DATA <= x"e588"; + when "00" & x"282" => DATA <= x"41f9"; + when "00" & x"283" => DATA <= x"003f"; + when "00" & x"284" => DATA <= x"0606"; + when "00" & x"285" => DATA <= x"d1c0"; + when "00" & x"286" => DATA <= x"21c8"; + when "00" & x"287" => DATA <= x"0074"; + when "00" & x"288" => DATA <= x"6100"; + when "00" & x"289" => DATA <= x"fee2"; + when "00" & x"28a" => DATA <= x"2017"; + when "00" & x"28b" => DATA <= x"b03c"; + when "00" & x"28c" => DATA <= x"0005"; + when "00" & x"28d" => DATA <= x"6700"; + when "00" & x"28e" => DATA <= x"005c"; + when "00" & x"28f" => DATA <= x"6100"; + when "00" & x"290" => DATA <= x"ff06"; + when "00" & x"291" => DATA <= x"23c0"; + when "00" & x"292" => DATA <= x"0000"; + when "00" & x"293" => DATA <= x"0520"; + when "00" & x"294" => DATA <= x"1039"; + when "00" & x"295" => DATA <= x"fffe"; + when "00" & x"296" => DATA <= x"0005"; + when "00" & x"297" => DATA <= x"1039"; + when "00" & x"298" => DATA <= x"fffe"; + when "00" & x"299" => DATA <= x"0005"; + when "00" & x"29a" => DATA <= x"6100"; + when "00" & x"29b" => DATA <= x"febe"; + when "00" & x"29c" => DATA <= x"2017"; + when "00" & x"29d" => DATA <= x"b03c"; + when "00" & x"29e" => DATA <= x"0006"; + when "00" & x"29f" => DATA <= x"6500"; + when "00" & x"2a0" => DATA <= x"0038"; + when "00" & x"2a1" => DATA <= x"6600"; + when "00" & x"2a2" => DATA <= x"003a"; + when "00" & x"2a3" => DATA <= x"2f0e"; + when "00" & x"2a4" => DATA <= x"2c78"; + when "00" & x"2a5" => DATA <= x"0520"; + when "00" & x"2a6" => DATA <= x"203c"; + when "00" & x"2a7" => DATA <= x"0000"; + when "00" & x"2a8" => DATA <= x"00ff"; + when "00" & x"2a9" => DATA <= x"0839"; + when "00" & x"2aa" => DATA <= x"0007"; + when "00" & x"2ab" => DATA <= x"fffe"; + when "00" & x"2ac" => DATA <= x"0004"; + when "00" & x"2ad" => DATA <= x"67f6"; + when "00" & x"2ae" => DATA <= x"13de"; + when "00" & x"2af" => DATA <= x"fffe"; + when "00" & x"2b0" => DATA <= x"0005"; + when "00" & x"2b1" => DATA <= x"51c8"; + when "00" & x"2b2" => DATA <= x"ffee"; + when "00" & x"2b3" => DATA <= x"0839"; + when "00" & x"2b4" => DATA <= x"0007"; + when "00" & x"2b5" => DATA <= x"fffe"; + when "00" & x"2b6" => DATA <= x"0004"; + when "00" & x"2b7" => DATA <= x"67f6"; + when "00" & x"2b8" => DATA <= x"13e6"; + when "00" & x"2b9" => DATA <= x"fffe"; + when "00" & x"2ba" => DATA <= x"0005"; + when "00" & x"2bb" => DATA <= x"2c5f"; + when "00" & x"2bc" => DATA <= x"201f"; + when "00" & x"2bd" => DATA <= x"205f"; + when "00" & x"2be" => DATA <= x"4e73"; + when "00" & x"2bf" => DATA <= x"2f0e"; + when "00" & x"2c0" => DATA <= x"2c78"; + when "00" & x"2c1" => DATA <= x"0520"; + when "00" & x"2c2" => DATA <= x"203c"; + when "00" & x"2c3" => DATA <= x"0000"; + when "00" & x"2c4" => DATA <= x"00ff"; + when "00" & x"2c5" => DATA <= x"0839"; + when "00" & x"2c6" => DATA <= x"0007"; + when "00" & x"2c7" => DATA <= x"fffe"; + when "00" & x"2c8" => DATA <= x"0004"; + when "00" & x"2c9" => DATA <= x"67f6"; + when "00" & x"2ca" => DATA <= x"1cf9"; + when "00" & x"2cb" => DATA <= x"fffe"; + when "00" & x"2cc" => DATA <= x"0005"; + when "00" & x"2cd" => DATA <= x"51c8"; + when "00" & x"2ce" => DATA <= x"ffee"; + when "00" & x"2cf" => DATA <= x"2c5f"; + when "00" & x"2d0" => DATA <= x"60d6"; + when "00" & x"2d1" => DATA <= x"2f0e"; + when "00" & x"2d2" => DATA <= x"2c78"; + when "00" & x"2d3" => DATA <= x"0520"; + when "00" & x"2d4" => DATA <= x"13de"; + when "00" & x"2d5" => DATA <= x"fffe"; + when "00" & x"2d6" => DATA <= x"0005"; + when "00" & x"2d7" => DATA <= x"21ce"; + when "00" & x"2d8" => DATA <= x"0520"; + when "00" & x"2d9" => DATA <= x"2c5f"; + when "00" & x"2da" => DATA <= x"4e73"; + when "00" & x"2db" => DATA <= x"2f0e"; + when "00" & x"2dc" => DATA <= x"2c78"; + when "00" & x"2dd" => DATA <= x"0520"; + when "00" & x"2de" => DATA <= x"1cf9"; + when "00" & x"2df" => DATA <= x"fffe"; + when "00" & x"2e0" => DATA <= x"0005"; + when "00" & x"2e1" => DATA <= x"21ce"; + when "00" & x"2e2" => DATA <= x"0520"; + when "00" & x"2e3" => DATA <= x"2c5f"; + when "00" & x"2e4" => DATA <= x"4e73"; + when "00" & x"2e5" => DATA <= x"2f0e"; + when "00" & x"2e6" => DATA <= x"2c78"; + when "00" & x"2e7" => DATA <= x"0520"; + when "00" & x"2e8" => DATA <= x"13de"; + when "00" & x"2e9" => DATA <= x"fffe"; + when "00" & x"2ea" => DATA <= x"0005"; + when "00" & x"2eb" => DATA <= x"13de"; + when "00" & x"2ec" => DATA <= x"fffe"; + when "00" & x"2ed" => DATA <= x"0005"; + when "00" & x"2ee" => DATA <= x"21ce"; + when "00" & x"2ef" => DATA <= x"0520"; + when "00" & x"2f0" => DATA <= x"2c5f"; + when "00" & x"2f1" => DATA <= x"4e73"; + when "00" & x"2f2" => DATA <= x"2f0e"; + when "00" & x"2f3" => DATA <= x"2c78"; + when "00" & x"2f4" => DATA <= x"0520"; + when "00" & x"2f5" => DATA <= x"1cf9"; + when "00" & x"2f6" => DATA <= x"fffe"; + when "00" & x"2f7" => DATA <= x"0005"; + when "00" & x"2f8" => DATA <= x"1cf9"; + when "00" & x"2f9" => DATA <= x"fffe"; + when "00" & x"2fa" => DATA <= x"0005"; + when "00" & x"2fb" => DATA <= x"21ce"; + when "00" & x"2fc" => DATA <= x"0520"; + when "00" & x"2fd" => DATA <= x"2c5f"; + when "00" & x"2fe" => DATA <= x"4e73"; + when "00" & x"2ff" => DATA <= x"13c0"; + when "00" & x"300" => DATA <= x"fffe"; + when "00" & x"301" => DATA <= x"0005"; + when "00" & x"302" => DATA <= x"4e73"; + when "00" & x"303" => DATA <= x"003f"; + when "00" & x"304" => DATA <= x"05a2"; + when "00" & x"305" => DATA <= x"003f"; + when "00" & x"306" => DATA <= x"05b6"; + when "00" & x"307" => DATA <= x"003f"; + when "00" & x"308" => DATA <= x"05ca"; + when "00" & x"309" => DATA <= x"003f"; + when "00" & x"30a" => DATA <= x"05e4"; + when "00" & x"30b" => DATA <= x"003f"; + when "00" & x"30c" => DATA <= x"05fe"; + when "00" & x"30d" => DATA <= x"003f"; + when "00" & x"30e" => DATA <= x"05fe"; + when "00" & x"30f" => DATA <= x"003f"; + when "00" & x"310" => DATA <= x"05fe"; + when "00" & x"311" => DATA <= x"003f"; + when "00" & x"312" => DATA <= x"05fe"; + when "00" & x"313" => DATA <= x"203c"; + when "00" & x"314" => DATA <= x"003f"; + when "00" & x"315" => DATA <= x"2c49"; + when "00" & x"316" => DATA <= x"6100"; + when "00" & x"317" => DATA <= x"03d0"; + when "00" & x"318" => DATA <= x"31df"; + when "00" & x"319" => DATA <= x"0544"; + when "00" & x"31a" => DATA <= x"21df"; + when "00" & x"31b" => DATA <= x"0540"; + when "00" & x"31c" => DATA <= x"31df"; + when "00" & x"31d" => DATA <= x"053e"; + when "00" & x"31e" => DATA <= x"31df"; + when "00" & x"31f" => DATA <= x"053c"; + when "00" & x"320" => DATA <= x"21d7"; + when "00" & x"321" => DATA <= x"0538"; + when "00" & x"322" => DATA <= x"223c"; + when "00" & x"323" => DATA <= x"0000"; + when "00" & x"324" => DATA <= x"0600"; + when "00" & x"325" => DATA <= x"143c"; + when "00" & x"326" => DATA <= x"00ff"; + when "00" & x"327" => DATA <= x"7000"; + when "00" & x"328" => DATA <= x"2038"; + when "00" & x"329" => DATA <= x"0538"; + when "00" & x"32a" => DATA <= x"6100"; + when "00" & x"32b" => DATA <= x"1090"; + when "00" & x"32c" => DATA <= x"6100"; + when "00" & x"32d" => DATA <= x"03a4"; + when "00" & x"32e" => DATA <= x"6100"; + when "00" & x"32f" => DATA <= x"03b4"; + when "00" & x"330" => DATA <= x"203c"; + when "00" & x"331" => DATA <= x"003f"; + when "00" & x"332" => DATA <= x"2c79"; + when "00" & x"333" => DATA <= x"6100"; + when "00" & x"334" => DATA <= x"0396"; + when "00" & x"335" => DATA <= x"223c"; + when "00" & x"336" => DATA <= x"0000"; + when "00" & x"337" => DATA <= x"0600"; + when "00" & x"338" => DATA <= x"143c"; + when "00" & x"339" => DATA <= x"00ff"; + when "00" & x"33a" => DATA <= x"7000"; + when "00" & x"33b" => DATA <= x"3038"; + when "00" & x"33c" => DATA <= x"0544"; + when "00" & x"33d" => DATA <= x"6100"; + when "00" & x"33e" => DATA <= x"1030"; + when "00" & x"33f" => DATA <= x"6100"; + when "00" & x"340" => DATA <= x"037e"; + when "00" & x"341" => DATA <= x"6100"; + when "00" & x"342" => DATA <= x"038e"; + when "00" & x"343" => DATA <= x"203c"; + when "00" & x"344" => DATA <= x"003f"; + when "00" & x"345" => DATA <= x"2c90"; + when "00" & x"346" => DATA <= x"6100"; + when "00" & x"347" => DATA <= x"0370"; + when "00" & x"348" => DATA <= x"223c"; + when "00" & x"349" => DATA <= x"0000"; + when "00" & x"34a" => DATA <= x"0600"; + when "00" & x"34b" => DATA <= x"143c"; + when "00" & x"34c" => DATA <= x"00ff"; + when "00" & x"34d" => DATA <= x"7000"; + when "00" & x"34e" => DATA <= x"2038"; + when "00" & x"34f" => DATA <= x"0540"; + when "00" & x"350" => DATA <= x"6100"; + when "00" & x"351" => DATA <= x"1044"; + when "00" & x"352" => DATA <= x"6100"; + when "00" & x"353" => DATA <= x"0358"; + when "00" & x"354" => DATA <= x"6100"; + when "00" & x"355" => DATA <= x"0368"; + when "00" & x"356" => DATA <= x"203c"; + when "00" & x"357" => DATA <= x"003f"; + when "00" & x"358" => DATA <= x"2ca7"; + when "00" & x"359" => DATA <= x"6100"; + when "00" & x"35a" => DATA <= x"034a"; + when "00" & x"35b" => DATA <= x"223c"; + when "00" & x"35c" => DATA <= x"0000"; + when "00" & x"35d" => DATA <= x"0600"; + when "00" & x"35e" => DATA <= x"143c"; + when "00" & x"35f" => DATA <= x"00ff"; + when "00" & x"360" => DATA <= x"7000"; + when "00" & x"361" => DATA <= x"3038"; + when "00" & x"362" => DATA <= x"053e"; + when "00" & x"363" => DATA <= x"6100"; + when "00" & x"364" => DATA <= x"0fe4"; + when "00" & x"365" => DATA <= x"6100"; + when "00" & x"366" => DATA <= x"0332"; + when "00" & x"367" => DATA <= x"103c"; + when "00" & x"368" => DATA <= x"0020"; + when "00" & x"369" => DATA <= x"6100"; + when "00" & x"36a" => DATA <= x"0312"; + when "00" & x"36b" => DATA <= x"103c"; + when "00" & x"36c" => DATA <= x"005b"; + when "00" & x"36d" => DATA <= x"6100"; + when "00" & x"36e" => DATA <= x"030a"; + when "00" & x"36f" => DATA <= x"303c"; + when "00" & x"370" => DATA <= x"053e"; + when "00" & x"371" => DATA <= x"223c"; + when "00" & x"372" => DATA <= x"0000"; + when "00" & x"373" => DATA <= x"0600"; + when "00" & x"374" => DATA <= x"6100"; + when "00" & x"375" => DATA <= x"1422"; + when "00" & x"376" => DATA <= x"2001"; + when "00" & x"377" => DATA <= x"6100"; + when "00" & x"378" => DATA <= x"030e"; + when "00" & x"379" => DATA <= x"103c"; + when "00" & x"37a" => DATA <= x"005d"; + when "00" & x"37b" => DATA <= x"6100"; + when "00" & x"37c" => DATA <= x"02ee"; + when "00" & x"37d" => DATA <= x"6100"; + when "00" & x"37e" => DATA <= x"0316"; + when "00" & x"37f" => DATA <= x"203c"; + when "00" & x"380" => DATA <= x"003f"; + when "00" & x"381" => DATA <= x"2cbe"; + when "00" & x"382" => DATA <= x"6100"; + when "00" & x"383" => DATA <= x"02f8"; + when "00" & x"384" => DATA <= x"223c"; + when "00" & x"385" => DATA <= x"0000"; + when "00" & x"386" => DATA <= x"0600"; + when "00" & x"387" => DATA <= x"143c"; + when "00" & x"388" => DATA <= x"00ff"; + when "00" & x"389" => DATA <= x"7000"; + when "00" & x"38a" => DATA <= x"3038"; + when "00" & x"38b" => DATA <= x"053c"; + when "00" & x"38c" => DATA <= x"6100"; + when "00" & x"38d" => DATA <= x"120e"; + when "00" & x"38e" => DATA <= x"6100"; + when "00" & x"38f" => DATA <= x"02e0"; + when "00" & x"390" => DATA <= x"6100"; + when "00" & x"391" => DATA <= x"02f0"; + when "00" & x"392" => DATA <= x"60fe"; + when "00" & x"393" => DATA <= x"6100"; + when "00" & x"394" => DATA <= x"02f8"; + when "00" & x"395" => DATA <= x"6000"; + when "00" & x"396" => DATA <= x"fc32"; + when "00" & x"397" => DATA <= x"203c"; + when "00" & x"398" => DATA <= x"003f"; + when "00" & x"399" => DATA <= x"2c5a"; + when "00" & x"39a" => DATA <= x"6100"; + when "00" & x"39b" => DATA <= x"02c8"; + when "00" & x"39c" => DATA <= x"6000"; + when "00" & x"39d" => DATA <= x"fef6"; + when "00" & x"39e" => DATA <= x"2f00"; + when "00" & x"39f" => DATA <= x"203c"; + when "00" & x"3a0" => DATA <= x"003f"; + when "00" & x"3a1" => DATA <= x"2d00"; + when "00" & x"3a2" => DATA <= x"6000"; + when "00" & x"3a3" => DATA <= x"0022"; + when "00" & x"3a4" => DATA <= x"2f00"; + when "00" & x"3a5" => DATA <= x"203c"; + when "00" & x"3a6" => DATA <= x"003f"; + when "00" & x"3a7" => DATA <= x"2d30"; + when "00" & x"3a8" => DATA <= x"6000"; + when "00" & x"3a9" => DATA <= x"0016"; + when "00" & x"3aa" => DATA <= x"2f00"; + when "00" & x"3ab" => DATA <= x"203c"; + when "00" & x"3ac" => DATA <= x"003f"; + when "00" & x"3ad" => DATA <= x"2d4c"; + when "00" & x"3ae" => DATA <= x"6000"; + when "00" & x"3af" => DATA <= x"000a"; + when "00" & x"3b0" => DATA <= x"2f00"; + when "00" & x"3b1" => DATA <= x"203c"; + when "00" & x"3b2" => DATA <= x"003f"; + when "00" & x"3b3" => DATA <= x"2dbc"; + when "00" & x"3b4" => DATA <= x"21ef"; + when "00" & x"3b5" => DATA <= x"0006"; + when "00" & x"3b6" => DATA <= x"0510"; + when "00" & x"3b7" => DATA <= x"6100"; + when "00" & x"3b8" => DATA <= x"09b0"; + when "00" & x"3b9" => DATA <= x"201f"; + when "00" & x"3ba" => DATA <= x"4e73"; + when "00" & x"3bb" => DATA <= x"203c"; + when "00" & x"3bc" => DATA <= x"003f"; + when "00" & x"3bd" => DATA <= x"2dd4"; + when "00" & x"3be" => DATA <= x"207c"; + when "00" & x"3bf" => DATA <= x"0000"; + when "00" & x"3c0" => DATA <= x"002b"; + when "00" & x"3c1" => DATA <= x"4e4c"; + when "00" & x"3c2" => DATA <= x"4e75"; + when "00" & x"3c3" => DATA <= x"7000"; + when "00" & x"3c4" => DATA <= x"2a40"; + when "00" & x"3c5" => DATA <= x"206d"; + when "00" & x"3c6" => DATA <= x"000c"; + when "00" & x"3c7" => DATA <= x"43fa"; + when "00" & x"3c8" => DATA <= x"000e"; + when "00" & x"3c9" => DATA <= x"2b49"; + when "00" & x"3ca" => DATA <= x"000c"; + when "00" & x"3cb" => DATA <= x"2e0f"; + when "00" & x"3cc" => DATA <= x"2c07"; + when "00" & x"3cd" => DATA <= x"4efa"; + when "00" & x"3ce" => DATA <= x"0003"; + when "00" & x"3cf" => DATA <= x"2b48"; + when "00" & x"3d0" => DATA <= x"000c"; + when "00" & x"3d1" => DATA <= x"9e8f"; + when "00" & x"3d2" => DATA <= x"7001"; + when "00" & x"3d3" => DATA <= x"0c07"; + when "00" & x"3d4" => DATA <= x"0012"; + when "00" & x"3d5" => DATA <= x"6754"; + when "00" & x"3d6" => DATA <= x"7002"; + when "00" & x"3d7" => DATA <= x"0c07"; + when "00" & x"3d8" => DATA <= x"003e"; + when "00" & x"3d9" => DATA <= x"674c"; + when "00" & x"3da" => DATA <= x"7007"; + when "00" & x"3db" => DATA <= x"0c07"; + when "00" & x"3dc" => DATA <= x"0026"; + when "00" & x"3dd" => DATA <= x"6744"; + when "00" & x"3de" => DATA <= x"7008"; + when "00" & x"3df" => DATA <= x"0c07"; + when "00" & x"3e0" => DATA <= x"001c"; + when "00" & x"3e1" => DATA <= x"673c"; + when "00" & x"3e2" => DATA <= x"7005"; + when "00" & x"3e3" => DATA <= x"0c07"; + when "00" & x"3e4" => DATA <= x"0010"; + when "00" & x"3e5" => DATA <= x"6734"; + when "00" & x"3e6" => DATA <= x"70ff"; + when "00" & x"3e7" => DATA <= x"0c07"; + when "00" & x"3e8" => DATA <= x"0024"; + when "00" & x"3e9" => DATA <= x"662c"; + when "00" & x"3ea" => DATA <= x"206d"; + when "00" & x"3eb" => DATA <= x"001a"; + when "00" & x"3ec" => DATA <= x"226d"; + when "00" & x"3ed" => DATA <= x"007e"; + when "00" & x"3ee" => DATA <= x"45fa"; + when "00" & x"3ef" => DATA <= x"001a"; + when "00" & x"3f0" => DATA <= x"2b4a"; + when "00" & x"3f1" => DATA <= x"007e"; + when "00" & x"3f2" => DATA <= x"45fa"; + when "00" & x"3f3" => DATA <= x"0010"; + when "00" & x"3f4" => DATA <= x"2b4a"; + when "00" & x"3f5" => DATA <= x"001a"; + when "00" & x"3f6" => DATA <= x"7003"; + when "00" & x"3f7" => DATA <= x"06fa"; + when "00" & x"3f8" => DATA <= x"0000"; + when "00" & x"3f9" => DATA <= x"0002"; + when "00" & x"3fa" => DATA <= x"ffff"; + when "00" & x"3fb" => DATA <= x"7004"; + when "00" & x"3fc" => DATA <= x"2b49"; + when "00" & x"3fd" => DATA <= x"007e"; + when "00" & x"3fe" => DATA <= x"2b48"; + when "00" & x"3ff" => DATA <= x"001a"; + when "00" & x"400" => DATA <= x"2e46"; + when "00" & x"401" => DATA <= x"4e75"; + when "00" & x"402" => DATA <= x"7000"; + when "00" & x"403" => DATA <= x"2a40"; + when "00" & x"404" => DATA <= x"206d"; + when "00" & x"405" => DATA <= x"002c"; + when "00" & x"406" => DATA <= x"43fa"; + when "00" & x"407" => DATA <= x"000e"; + when "00" & x"408" => DATA <= x"2b49"; + when "00" & x"409" => DATA <= x"002c"; + when "00" & x"40a" => DATA <= x"2e0f"; + when "00" & x"40b" => DATA <= x"70ff"; + when "00" & x"40c" => DATA <= x"6000"; + when "00" & x"40d" => DATA <= x"0004"; + when "00" & x"40e" => DATA <= x"7000"; + when "00" & x"40f" => DATA <= x"2e47"; + when "00" & x"410" => DATA <= x"2b48"; + when "00" & x"411" => DATA <= x"002c"; + when "00" & x"412" => DATA <= x"4e75"; + when "00" & x"413" => DATA <= x"7000"; + when "00" & x"414" => DATA <= x"4e75"; + when "00" & x"415" => DATA <= x"13fc"; + when "00" & x"416" => DATA <= x"00f0"; + when "00" & x"417" => DATA <= x"003f"; + when "00" & x"418" => DATA <= x"0000"; + when "00" & x"419" => DATA <= x"13fc"; + when "00" & x"41a" => DATA <= x"00ff"; + when "00" & x"41b" => DATA <= x"003f"; + when "00" & x"41c" => DATA <= x"0000"; + when "00" & x"41d" => DATA <= x"4e75"; + when "00" & x"41e" => DATA <= x"13fc"; + when "00" & x"41f" => DATA <= x"00aa"; + when "00" & x"420" => DATA <= x"003f"; + when "00" & x"421" => DATA <= x"5555"; + when "00" & x"422" => DATA <= x"13fc"; + when "00" & x"423" => DATA <= x"0055"; + when "00" & x"424" => DATA <= x"003f"; + when "00" & x"425" => DATA <= x"aaaa"; + when "00" & x"426" => DATA <= x"13fc"; + when "00" & x"427" => DATA <= x"0090"; + when "00" & x"428" => DATA <= x"003f"; + when "00" & x"429" => DATA <= x"5555"; + when "00" & x"42a" => DATA <= x"13c0"; + when "00" & x"42b" => DATA <= x"003f"; + when "00" & x"42c" => DATA <= x"0000"; + when "00" & x"42d" => DATA <= x"e140"; + when "00" & x"42e" => DATA <= x"61cc"; + when "00" & x"42f" => DATA <= x"13fc"; + when "00" & x"430" => DATA <= x"00aa"; + when "00" & x"431" => DATA <= x"003f"; + when "00" & x"432" => DATA <= x"5555"; + when "00" & x"433" => DATA <= x"13fc"; + when "00" & x"434" => DATA <= x"0055"; + when "00" & x"435" => DATA <= x"003f"; + when "00" & x"436" => DATA <= x"aaaa"; + when "00" & x"437" => DATA <= x"13fc"; + when "00" & x"438" => DATA <= x"0090"; + when "00" & x"439" => DATA <= x"003f"; + when "00" & x"43a" => DATA <= x"5555"; + when "00" & x"43b" => DATA <= x"13c0"; + when "00" & x"43c" => DATA <= x"003f"; + when "00" & x"43d" => DATA <= x"0001"; + when "00" & x"43e" => DATA <= x"61ac"; + when "00" & x"43f" => DATA <= x"4e75"; + when "00" & x"440" => DATA <= x"be3c"; + when "00" & x"441" => DATA <= x"0008"; + when "00" & x"442" => DATA <= x"6400"; + when "00" & x"443" => DATA <= x"0012"; + when "00" & x"444" => DATA <= x"e147"; + when "00" & x"445" => DATA <= x"e147"; + when "00" & x"446" => DATA <= x"223c"; + when "00" & x"447" => DATA <= x"0000"; + when "00" & x"448" => DATA <= x"ffff"; + when "00" & x"449" => DATA <= x"1015"; + when "00" & x"44a" => DATA <= x"6100"; + when "00" & x"44b" => DATA <= x"0004"; + when "00" & x"44c" => DATA <= x"4e75"; + when "00" & x"44d" => DATA <= x"b016"; + when "00" & x"44e" => DATA <= x"6700"; + when "00" & x"44f" => DATA <= x"0026"; + when "00" & x"450" => DATA <= x"13fc"; + when "00" & x"451" => DATA <= x"00aa"; + when "00" & x"452" => DATA <= x"003f"; + when "00" & x"453" => DATA <= x"5555"; + when "00" & x"454" => DATA <= x"13fc"; + when "00" & x"455" => DATA <= x"0055"; + when "00" & x"456" => DATA <= x"003f"; + when "00" & x"457" => DATA <= x"aaaa"; + when "00" & x"458" => DATA <= x"13fc"; + when "00" & x"459" => DATA <= x"00a0"; + when "00" & x"45a" => DATA <= x"003f"; + when "00" & x"45b" => DATA <= x"5555"; + when "00" & x"45c" => DATA <= x"1016"; + when "00" & x"45d" => DATA <= x"0c16"; + when "00" & x"45e" => DATA <= x"0002"; + when "00" & x"45f" => DATA <= x"66fa"; + when "00" & x"460" => DATA <= x"6100"; + when "00" & x"461" => DATA <= x"ff68"; + when "00" & x"462" => DATA <= x"4e75"; + when "00" & x"463" => DATA <= x"2f08"; + when "00" & x"464" => DATA <= x"2f38"; + when "00" & x"465" => DATA <= x"0000"; + when "00" & x"466" => DATA <= x"207c"; + when "00" & x"467" => DATA <= x"0000"; + when "00" & x"468" => DATA <= x"0000"; + when "00" & x"469" => DATA <= x"21fc"; + when "00" & x"46a" => DATA <= x"dead"; + when "00" & x"46b" => DATA <= x"beef"; + when "00" & x"46c" => DATA <= x"0000"; + when "00" & x"46d" => DATA <= x"d1fc"; + when "00" & x"46e" => DATA <= x"0000"; + when "00" & x"46f" => DATA <= x"0400"; + when "00" & x"470" => DATA <= x"0c90"; + when "00" & x"471" => DATA <= x"dead"; + when "00" & x"472" => DATA <= x"beef"; + when "00" & x"473" => DATA <= x"6700"; + when "00" & x"474" => DATA <= x"000a"; + when "00" & x"475" => DATA <= x"b1fc"; + when "00" & x"476" => DATA <= x"0030"; + when "00" & x"477" => DATA <= x"0000"; + when "00" & x"478" => DATA <= x"65e8"; + when "00" & x"479" => DATA <= x"2008"; + when "00" & x"47a" => DATA <= x"21df"; + when "00" & x"47b" => DATA <= x"0000"; + when "00" & x"47c" => DATA <= x"205f"; + when "00" & x"47d" => DATA <= x"4e75"; + when "00" & x"47e" => DATA <= x"2f0e"; + when "00" & x"47f" => DATA <= x"2f09"; + when "00" & x"480" => DATA <= x"2f08"; + when "00" & x"481" => DATA <= x"2f01"; + when "00" & x"482" => DATA <= x"c188"; + when "00" & x"483" => DATA <= x"0280"; + when "00" & x"484" => DATA <= x"00fd"; + when "00" & x"485" => DATA <= x"ffff"; + when "00" & x"486" => DATA <= x"43f9"; + when "00" & x"487" => DATA <= x"003f"; + when "00" & x"488" => DATA <= x"2f50"; + when "00" & x"489" => DATA <= x"b099"; + when "00" & x"48a" => DATA <= x"6700"; + when "00" & x"48b" => DATA <= x"0014"; + when "00" & x"48c" => DATA <= x"2219"; + when "00" & x"48d" => DATA <= x"b23c"; + when "00" & x"48e" => DATA <= x"00ff"; + when "00" & x"48f" => DATA <= x"6700"; + when "00" & x"490" => DATA <= x"0082"; + when "00" & x"491" => DATA <= x"b23c"; + when "00" & x"492" => DATA <= x"0000"; + when "00" & x"493" => DATA <= x"66f0"; + when "00" & x"494" => DATA <= x"60e8"; + when "00" & x"495" => DATA <= x"2c59"; + when "00" & x"496" => DATA <= x"c188"; + when "00" & x"497" => DATA <= x"bdfc"; + when "00" & x"498" => DATA <= x"0000"; + when "00" & x"499" => DATA <= x"0504"; + when "00" & x"49a" => DATA <= x"6400"; + when "00" & x"49b" => DATA <= x"0004"; + when "00" & x"49c" => DATA <= x"2c56"; + when "00" & x"49d" => DATA <= x"221f"; + when "00" & x"49e" => DATA <= x"205f"; + when "00" & x"49f" => DATA <= x"225f"; + when "00" & x"4a0" => DATA <= x"4e96"; + when "00" & x"4a1" => DATA <= x"6900"; + when "00" & x"4a2" => DATA <= x"001a"; + when "00" & x"4a3" => DATA <= x"6500"; + when "00" & x"4a4" => DATA <= x"000a"; + when "00" & x"4a5" => DATA <= x"2c5f"; + when "00" & x"4a6" => DATA <= x"0257"; + when "00" & x"4a7" => DATA <= x"fffc"; + when "00" & x"4a8" => DATA <= x"4e73"; + when "00" & x"4a9" => DATA <= x"2c5f"; + when "00" & x"4aa" => DATA <= x"0257"; + when "00" & x"4ab" => DATA <= x"fffd"; + when "00" & x"4ac" => DATA <= x"0057"; + when "00" & x"4ad" => DATA <= x"0001"; + when "00" & x"4ae" => DATA <= x"4e73"; + when "00" & x"4af" => DATA <= x"6500"; + when "00" & x"4b0" => DATA <= x"000e"; + when "00" & x"4b1" => DATA <= x"0057"; + when "00" & x"4b2" => DATA <= x"0002"; + when "00" & x"4b3" => DATA <= x"0257"; + when "00" & x"4b4" => DATA <= x"fffe"; + when "00" & x"4b5" => DATA <= x"6000"; + when "00" & x"4b6" => DATA <= x"0006"; + when "00" & x"4b7" => DATA <= x"0057"; + when "00" & x"4b8" => DATA <= x"0003"; + when "00" & x"4b9" => DATA <= x"2c5f"; + when "00" & x"4ba" => DATA <= x"c188"; + when "00" & x"4bb" => DATA <= x"0800"; + when "00" & x"4bc" => DATA <= x"0011"; + when "00" & x"4bd" => DATA <= x"6700"; + when "00" & x"4be" => DATA <= x"0006"; + when "00" & x"4bf" => DATA <= x"c188"; + when "00" & x"4c0" => DATA <= x"4e73"; + when "00" & x"4c1" => DATA <= x"c188"; + when "00" & x"4c2" => DATA <= x"2f01"; + when "00" & x"4c3" => DATA <= x"7206"; + when "00" & x"4c4" => DATA <= x"6100"; + when "00" & x"4c5" => DATA <= x"07c6"; + when "00" & x"4c6" => DATA <= x"221f"; + when "00" & x"4c7" => DATA <= x"21c0"; + when "00" & x"4c8" => DATA <= x"0514"; + when "00" & x"4c9" => DATA <= x"21ef"; + when "00" & x"4ca" => DATA <= x"0002"; + when "00" & x"4cb" => DATA <= x"0510"; + when "00" & x"4cc" => DATA <= x"2f79"; + when "00" & x"4cd" => DATA <= x"0000"; + when "00" & x"4ce" => DATA <= x"0404"; + when "00" & x"4cf" => DATA <= x"0002"; + when "00" & x"4d0" => DATA <= x"4e73"; + when "00" & x"4d1" => DATA <= x"221f"; + when "00" & x"4d2" => DATA <= x"205f"; + when "00" & x"4d3" => DATA <= x"225f"; + when "00" & x"4d4" => DATA <= x"2040"; + when "00" & x"4d5" => DATA <= x"c0bc"; + when "00" & x"4d6" => DATA <= x"00fd"; + when "00" & x"4d7" => DATA <= x"ff00"; + when "00" & x"4d8" => DATA <= x"b0bc"; + when "00" & x"4d9" => DATA <= x"0000"; + when "00" & x"4da" => DATA <= x"0100"; + when "00" & x"4db" => DATA <= x"6600"; + when "00" & x"4dc" => DATA <= x"0012"; + when "00" & x"4dd" => DATA <= x"2008"; + when "00" & x"4de" => DATA <= x"4eb9"; + when "00" & x"4df" => DATA <= x"003f"; + when "00" & x"4e0" => DATA <= x"09e0"; + when "00" & x"4e1" => DATA <= x"2c5f"; + when "00" & x"4e2" => DATA <= x"0257"; + when "00" & x"4e3" => DATA <= x"fffc"; + when "00" & x"4e4" => DATA <= x"4e73"; + when "00" & x"4e5" => DATA <= x"2008"; + when "00" & x"4e6" => DATA <= x"2c78"; + when "00" & x"4e7" => DATA <= x"0460"; + when "00" & x"4e8" => DATA <= x"21ef"; + when "00" & x"4e9" => DATA <= x"0006"; + when "00" & x"4ea" => DATA <= x"0510"; + when "00" & x"4eb" => DATA <= x"4e96"; + when "00" & x"4ec" => DATA <= x"2c5f"; + when "00" & x"4ed" => DATA <= x"0057"; + when "00" & x"4ee" => DATA <= x"0002"; + when "00" & x"4ef" => DATA <= x"4e73"; + when "00" & x"4f0" => DATA <= x"201f"; + when "00" & x"4f1" => DATA <= x"6000"; + when "00" & x"4f2" => DATA <= x"0002"; + when "00" & x"4f3" => DATA <= x"2f38"; + when "00" & x"4f4" => DATA <= x"040c"; + when "00" & x"4f5" => DATA <= x"4e75"; + when "00" & x"4f6" => DATA <= x"2f00"; + when "00" & x"4f7" => DATA <= x"202f"; + when "00" & x"4f8" => DATA <= x"0004"; + when "00" & x"4f9" => DATA <= x"6100"; + when "00" & x"4fa" => DATA <= x"000a"; + when "00" & x"4fb" => DATA <= x"2f40"; + when "00" & x"4fc" => DATA <= x"0004"; + when "00" & x"4fd" => DATA <= x"201f"; + when "00" & x"4fe" => DATA <= x"4e75"; + when "00" & x"4ff" => DATA <= x"2f08"; + when "00" & x"500" => DATA <= x"2040"; + when "00" & x"501" => DATA <= x"1018"; + when "00" & x"502" => DATA <= x"6700"; + when "00" & x"503" => DATA <= x"0006"; + when "00" & x"504" => DATA <= x"61dc"; + when "00" & x"505" => DATA <= x"60f6"; + when "00" & x"506" => DATA <= x"2008"; + when "00" & x"507" => DATA <= x"205f"; + when "00" & x"508" => DATA <= x"4e75"; + when "00" & x"509" => DATA <= x"2f00"; + when "00" & x"50a" => DATA <= x"700a"; + when "00" & x"50b" => DATA <= x"61ce"; + when "00" & x"50c" => DATA <= x"700d"; + when "00" & x"50d" => DATA <= x"61ca"; + when "00" & x"50e" => DATA <= x"201f"; + when "00" & x"50f" => DATA <= x"4e75"; + when "00" & x"510" => DATA <= x"7000"; + when "00" & x"511" => DATA <= x"6100"; + when "00" & x"512" => DATA <= x"f9be"; + when "00" & x"513" => DATA <= x"6100"; + when "00" & x"514" => DATA <= x"f9a8"; + when "00" & x"515" => DATA <= x"e000"; + when "00" & x"516" => DATA <= x"6000"; + when "00" & x"517" => DATA <= x"f9a2"; + when "00" & x"518" => DATA <= x"2f0e"; + when "00" & x"519" => DATA <= x"2f00"; + when "00" & x"51a" => DATA <= x"2c40"; + when "00" & x"51b" => DATA <= x"6100"; + when "00" & x"51c" => DATA <= x"1ce8"; + when "00" & x"51d" => DATA <= x"101e"; + when "00" & x"51e" => DATA <= x"b03c"; + when "00" & x"51f" => DATA <= x"002a"; + when "00" & x"520" => DATA <= x"67f4"; + when "00" & x"521" => DATA <= x"1026"; + when "00" & x"522" => DATA <= x"43f9"; + when "00" & x"523" => DATA <= x"003f"; + when "00" & x"524" => DATA <= x"35cc"; + when "00" & x"525" => DATA <= x"2f0e"; + when "00" & x"526" => DATA <= x"2459"; + when "00" & x"527" => DATA <= x"b4fc"; + when "00" & x"528" => DATA <= x"ffff"; + when "00" & x"529" => DATA <= x"6700"; + when "00" & x"52a" => DATA <= x"0050"; + when "00" & x"52b" => DATA <= x"101e"; + when "00" & x"52c" => DATA <= x"0200"; + when "00" & x"52d" => DATA <= x"00df"; + when "00" & x"52e" => DATA <= x"b019"; + when "00" & x"52f" => DATA <= x"6600"; + when "00" & x"530" => DATA <= x"003a"; + when "00" & x"531" => DATA <= x"0c16"; + when "00" & x"532" => DATA <= x"002e"; + when "00" & x"533" => DATA <= x"6700"; + when "00" & x"534" => DATA <= x"0010"; + when "00" & x"535" => DATA <= x"0c11"; + when "00" & x"536" => DATA <= x"0020"; + when "00" & x"537" => DATA <= x"6700"; + when "00" & x"538" => DATA <= x"0008"; + when "00" & x"539" => DATA <= x"0c11"; + when "00" & x"53a" => DATA <= x"0000"; + when "00" & x"53b" => DATA <= x"66de"; + when "00" & x"53c" => DATA <= x"0c16"; + when "00" & x"53d" => DATA <= x"000d"; + when "00" & x"53e" => DATA <= x"6700"; + when "00" & x"53f" => DATA <= x"000a"; + when "00" & x"540" => DATA <= x"0c16"; + when "00" & x"541" => DATA <= x"0020"; + when "00" & x"542" => DATA <= x"6600"; + when "00" & x"543" => DATA <= x"0014"; + when "00" & x"544" => DATA <= x"6100"; + when "00" & x"545" => DATA <= x"1c96"; + when "00" & x"546" => DATA <= x"225f"; + when "00" & x"547" => DATA <= x"4e92"; + when "00" & x"548" => DATA <= x"201f"; + when "00" & x"549" => DATA <= x"2c5f"; + when "00" & x"54a" => DATA <= x"6500"; + when "00" & x"54b" => DATA <= x"0012"; + when "00" & x"54c" => DATA <= x"4e75"; + when "00" & x"54d" => DATA <= x"0c19"; + when "00" & x"54e" => DATA <= x"0000"; + when "00" & x"54f" => DATA <= x"66fa"; + when "00" & x"550" => DATA <= x"2c5f"; + when "00" & x"551" => DATA <= x"60a6"; + when "00" & x"552" => DATA <= x"2c5f"; + when "00" & x"553" => DATA <= x"201f"; + when "00" & x"554" => DATA <= x"2f01"; + when "00" & x"555" => DATA <= x"7204"; + when "00" & x"556" => DATA <= x"6100"; + when "00" & x"557" => DATA <= x"06a2"; + when "00" & x"558" => DATA <= x"221f"; + when "00" & x"559" => DATA <= x"2c40"; + when "00" & x"55a" => DATA <= x"7002"; + when "00" & x"55b" => DATA <= x"6100"; + when "00" & x"55c" => DATA <= x"f92a"; + when "00" & x"55d" => DATA <= x"6100"; + when "00" & x"55e" => DATA <= x"f97a"; + when "00" & x"55f" => DATA <= x"6100"; + when "00" & x"560" => DATA <= x"f910"; + when "00" & x"561" => DATA <= x"2c5f"; + when "00" & x"562" => DATA <= x"b03c"; + when "00" & x"563" => DATA <= x"0080"; + when "00" & x"564" => DATA <= x"6700"; + when "00" & x"565" => DATA <= x"00b6"; + when "00" & x"566" => DATA <= x"023c"; + when "00" & x"567" => DATA <= x"00fd"; + when "00" & x"568" => DATA <= x"4e75"; + when "00" & x"569" => DATA <= x"b03c"; + when "00" & x"56a" => DATA <= x"0080"; + when "00" & x"56b" => DATA <= x"6400"; + when "00" & x"56c" => DATA <= x"002a"; + when "00" & x"56d" => DATA <= x"b03c"; + when "00" & x"56e" => DATA <= x"007e"; + when "00" & x"56f" => DATA <= x"6600"; + when "00" & x"570" => DATA <= x"0002"; + when "00" & x"571" => DATA <= x"2f00"; + when "00" & x"572" => DATA <= x"103c"; + when "00" & x"573" => DATA <= x"0004"; + when "00" & x"574" => DATA <= x"6100"; + when "00" & x"575" => DATA <= x"f8f8"; + when "00" & x"576" => DATA <= x"1001"; + when "00" & x"577" => DATA <= x"6100"; + when "00" & x"578" => DATA <= x"f8f2"; + when "00" & x"579" => DATA <= x"2017"; + when "00" & x"57a" => DATA <= x"6100"; + when "00" & x"57b" => DATA <= x"f8ec"; + when "00" & x"57c" => DATA <= x"6100"; + when "00" & x"57d" => DATA <= x"f8d6"; + when "00" & x"57e" => DATA <= x"1200"; + when "00" & x"57f" => DATA <= x"201f"; + when "00" & x"580" => DATA <= x"4e75"; + when "00" & x"581" => DATA <= x"b03c"; + when "00" & x"582" => DATA <= x"0082"; + when "00" & x"583" => DATA <= x"6700"; + when "00" & x"584" => DATA <= x"005a"; + when "00" & x"585" => DATA <= x"b03c"; + when "00" & x"586" => DATA <= x"0083"; + when "00" & x"587" => DATA <= x"6700"; + when "00" & x"588" => DATA <= x"005c"; + when "00" & x"589" => DATA <= x"b03c"; + when "00" & x"58a" => DATA <= x"0084"; + when "00" & x"58b" => DATA <= x"6700"; + when "00" & x"58c" => DATA <= x"005e"; + when "00" & x"58d" => DATA <= x"2f00"; + when "00" & x"58e" => DATA <= x"103c"; + when "00" & x"58f" => DATA <= x"0006"; + when "00" & x"590" => DATA <= x"6100"; + when "00" & x"591" => DATA <= x"f8c0"; + when "00" & x"592" => DATA <= x"1001"; + when "00" & x"593" => DATA <= x"6100"; + when "00" & x"594" => DATA <= x"f8ba"; + when "00" & x"595" => DATA <= x"1002"; + when "00" & x"596" => DATA <= x"6100"; + when "00" & x"597" => DATA <= x"f8b4"; + when "00" & x"598" => DATA <= x"201f"; + when "00" & x"599" => DATA <= x"6100"; + when "00" & x"59a" => DATA <= x"f8ae"; + when "00" & x"59b" => DATA <= x"b03c"; + when "00" & x"59c" => DATA <= x"008e"; + when "00" & x"59d" => DATA <= x"6700"; + when "00" & x"59e" => DATA <= x"0044"; + when "00" & x"59f" => DATA <= x"b03c"; + when "00" & x"5a0" => DATA <= x"009d"; + when "00" & x"5a1" => DATA <= x"6700"; + when "00" & x"5a2" => DATA <= x"009e"; + when "00" & x"5a3" => DATA <= x"2f00"; + when "00" & x"5a4" => DATA <= x"6100"; + when "00" & x"5a5" => DATA <= x"f886"; + when "00" & x"5a6" => DATA <= x"3f00"; + when "00" & x"5a7" => DATA <= x"6100"; + when "00" & x"5a8" => DATA <= x"f880"; + when "00" & x"5a9" => DATA <= x"1400"; + when "00" & x"5aa" => DATA <= x"6100"; + when "00" & x"5ab" => DATA <= x"f87a"; + when "00" & x"5ac" => DATA <= x"1200"; + when "00" & x"5ad" => DATA <= x"201f"; + when "00" & x"5ae" => DATA <= x"e000"; + when "00" & x"5af" => DATA <= x"201f"; + when "00" & x"5b0" => DATA <= x"4e75"; + when "00" & x"5b1" => DATA <= x"3238"; + when "00" & x"5b2" => DATA <= x"0524"; + when "00" & x"5b3" => DATA <= x"2401"; + when "00" & x"5b4" => DATA <= x"e082"; + when "00" & x"5b5" => DATA <= x"4e75"; + when "00" & x"5b6" => DATA <= x"2238"; + when "00" & x"5b7" => DATA <= x"0504"; + when "00" & x"5b8" => DATA <= x"2401"; + when "00" & x"5b9" => DATA <= x"e082"; + when "00" & x"5ba" => DATA <= x"4e75"; + when "00" & x"5bb" => DATA <= x"2238"; + when "00" & x"5bc" => DATA <= x"0500"; + when "00" & x"5bd" => DATA <= x"2401"; + when "00" & x"5be" => DATA <= x"e082"; + when "00" & x"5bf" => DATA <= x"4e75"; + when "00" & x"5c0" => DATA <= x"2c78"; + when "00" & x"5c1" => DATA <= x"0520"; + when "00" & x"5c2" => DATA <= x"122e"; + when "00" & x"5c3" => DATA <= x"0006"; + when "00" & x"5c4" => DATA <= x"7000"; + when "00" & x"5c5" => DATA <= x"102e"; + when "00" & x"5c6" => DATA <= x"0007"; + when "00" & x"5c7" => DATA <= x"ddc0"; + when "00" & x"5c8" => DATA <= x"4a1e"; + when "00" & x"5c9" => DATA <= x"6600"; + when "00" & x"5ca" => DATA <= x"0026"; + when "00" & x"5cb" => DATA <= x"0c1e"; + when "00" & x"5cc" => DATA <= x"0028"; + when "00" & x"5cd" => DATA <= x"6600"; + when "00" & x"5ce" => DATA <= x"001e"; + when "00" & x"5cf" => DATA <= x"0c1e"; + when "00" & x"5d0" => DATA <= x"0043"; + when "00" & x"5d1" => DATA <= x"6600"; + when "00" & x"5d2" => DATA <= x"0016"; + when "00" & x"5d3" => DATA <= x"0c1e"; + when "00" & x"5d4" => DATA <= x"0029"; + when "00" & x"5d5" => DATA <= x"6600"; + when "00" & x"5d6" => DATA <= x"000e"; + when "00" & x"5d7" => DATA <= x"0201"; + when "00" & x"5d8" => DATA <= x"000f"; + when "00" & x"5d9" => DATA <= x"0c01"; + when "00" & x"5da" => DATA <= x"0003"; + when "00" & x"5db" => DATA <= x"6600"; + when "00" & x"5dc" => DATA <= x"0018"; + when "00" & x"5dd" => DATA <= x"2c78"; + when "00" & x"5de" => DATA <= x"0520"; + when "00" & x"5df" => DATA <= x"7001"; + when "00" & x"5e0" => DATA <= x"223c"; + when "00" & x"5e1" => DATA <= x"0000"; + when "00" & x"5e2" => DATA <= x"052d"; + when "00" & x"5e3" => DATA <= x"6100"; + when "00" & x"5e4" => DATA <= x"001c"; + when "00" & x"5e5" => DATA <= x"7001"; + when "00" & x"5e6" => DATA <= x"4ed6"; + when "00" & x"5e7" => DATA <= x"4e75"; + when "00" & x"5e8" => DATA <= x"203c"; + when "00" & x"5e9" => DATA <= x"003f"; + when "00" & x"5ea" => DATA <= x"2da0"; + when "00" & x"5eb" => DATA <= x"21fc"; + when "00" & x"5ec" => DATA <= x"0000"; + when "00" & x"5ed" => DATA <= x"0000"; + when "00" & x"5ee" => DATA <= x"0510"; + when "00" & x"5ef" => DATA <= x"6000"; + when "00" & x"5f0" => DATA <= x"0540"; + when "00" & x"5f1" => DATA <= x"4e75"; + when "00" & x"5f2" => DATA <= x"b0bc"; + when "00" & x"5f3" => DATA <= x"0000"; + when "00" & x"5f4" => DATA <= x"00ff"; + when "00" & x"5f5" => DATA <= x"6200"; + when "00" & x"5f6" => DATA <= x"00d8"; + when "00" & x"5f7" => DATA <= x"2f0e"; + when "00" & x"5f8" => DATA <= x"2f00"; + when "00" & x"5f9" => DATA <= x"2f01"; + when "00" & x"5fa" => DATA <= x"2f02"; + when "00" & x"5fb" => DATA <= x"2c41"; + when "00" & x"5fc" => DATA <= x"4a40"; + when "00" & x"5fd" => DATA <= x"6600"; + when "00" & x"5fe" => DATA <= x"003c"; + when "00" & x"5ff" => DATA <= x"2f03"; + when "00" & x"600" => DATA <= x"2f04"; + when "00" & x"601" => DATA <= x"3038"; + when "00" & x"602" => DATA <= x"0524"; + when "00" & x"603" => DATA <= x"4840"; + when "00" & x"604" => DATA <= x"3016"; + when "00" & x"605" => DATA <= x"7200"; + when "00" & x"606" => DATA <= x"122e"; + when "00" & x"607" => DATA <= x"0002"; + when "00" & x"608" => DATA <= x"7400"; + when "00" & x"609" => DATA <= x"142e"; + when "00" & x"60a" => DATA <= x"0003"; + when "00" & x"60b" => DATA <= x"7600"; + when "00" & x"60c" => DATA <= x"162e"; + when "00" & x"60d" => DATA <= x"0004"; + when "00" & x"60e" => DATA <= x"7800"; + when "00" & x"60f" => DATA <= x"6100"; + when "00" & x"610" => DATA <= x"08cc"; + when "00" & x"611" => DATA <= x"281f"; + when "00" & x"612" => DATA <= x"261f"; + when "00" & x"613" => DATA <= x"241f"; + when "00" & x"614" => DATA <= x"2401"; + when "00" & x"615" => DATA <= x"5242"; + when "00" & x"616" => DATA <= x"221f"; + when "00" & x"617" => DATA <= x"201f"; + when "00" & x"618" => DATA <= x"2c5f"; + when "00" & x"619" => DATA <= x"023c"; + when "00" & x"61a" => DATA <= x"00fd"; + when "00" & x"61b" => DATA <= x"4e75"; + when "00" & x"61c" => DATA <= x"7200"; + when "00" & x"61d" => DATA <= x"7400"; + when "00" & x"61e" => DATA <= x"b03c"; + when "00" & x"61f" => DATA <= x"0014"; + when "00" & x"620" => DATA <= x"6200"; + when "00" & x"621" => DATA <= x"001e"; + when "00" & x"622" => DATA <= x"207c"; + when "00" & x"623" => DATA <= x"003f"; + when "00" & x"624" => DATA <= x"2f28"; + when "00" & x"625" => DATA <= x"d1c0"; + when "00" & x"626" => DATA <= x"5348"; + when "00" & x"627" => DATA <= x"1210"; + when "00" & x"628" => DATA <= x"207c"; + when "00" & x"629" => DATA <= x"003f"; + when "00" & x"62a" => DATA <= x"2f3c"; + when "00" & x"62b" => DATA <= x"d1c0"; + when "00" & x"62c" => DATA <= x"5348"; + when "00" & x"62d" => DATA <= x"1410"; + when "00" & x"62e" => DATA <= x"6000"; + when "00" & x"62f" => DATA <= x"0018"; + when "00" & x"630" => DATA <= x"b03c"; + when "00" & x"631" => DATA <= x"007f"; + when "00" & x"632" => DATA <= x"6200"; + when "00" & x"633" => DATA <= x"000a"; + when "00" & x"634" => DATA <= x"7210"; + when "00" & x"635" => DATA <= x"7410"; + when "00" & x"636" => DATA <= x"6000"; + when "00" & x"637" => DATA <= x"0008"; + when "00" & x"638" => DATA <= x"1216"; + when "00" & x"639" => DATA <= x"142e"; + when "00" & x"63a" => DATA <= x"0001"; + when "00" & x"63b" => DATA <= x"2f00"; + when "00" & x"63c" => DATA <= x"103c"; + when "00" & x"63d" => DATA <= x"0008"; + when "00" & x"63e" => DATA <= x"6100"; + when "00" & x"63f" => DATA <= x"f764"; + when "00" & x"640" => DATA <= x"201f"; + when "00" & x"641" => DATA <= x"6100"; + when "00" & x"642" => DATA <= x"f75e"; + when "00" & x"643" => DATA <= x"1001"; + when "00" & x"644" => DATA <= x"6100"; + when "00" & x"645" => DATA <= x"f758"; + when "00" & x"646" => DATA <= x"5341"; + when "00" & x"647" => DATA <= x"6b00"; + when "00" & x"648" => DATA <= x"000e"; + when "00" & x"649" => DATA <= x"1036"; + when "00" & x"64a" => DATA <= x"1000"; + when "00" & x"64b" => DATA <= x"6100"; + when "00" & x"64c" => DATA <= x"f74a"; + when "00" & x"64d" => DATA <= x"51c9"; + when "00" & x"64e" => DATA <= x"fff6"; + when "00" & x"64f" => DATA <= x"1002"; + when "00" & x"650" => DATA <= x"6100"; + when "00" & x"651" => DATA <= x"f740"; + when "00" & x"652" => DATA <= x"5342"; + when "00" & x"653" => DATA <= x"6b00"; + when "00" & x"654" => DATA <= x"000e"; + when "00" & x"655" => DATA <= x"6100"; + when "00" & x"656" => DATA <= x"f724"; + when "00" & x"657" => DATA <= x"1d80"; + when "00" & x"658" => DATA <= x"2000"; + when "00" & x"659" => DATA <= x"51ca"; + when "00" & x"65a" => DATA <= x"fff6"; + when "00" & x"65b" => DATA <= x"241f"; + when "00" & x"65c" => DATA <= x"221f"; + when "00" & x"65d" => DATA <= x"201f"; + when "00" & x"65e" => DATA <= x"2c5f"; + when "00" & x"65f" => DATA <= x"023c"; + when "00" & x"660" => DATA <= x"00fd"; + when "00" & x"661" => DATA <= x"4e75"; + when "00" & x"662" => DATA <= x"003c"; + when "00" & x"663" => DATA <= x"0002"; + when "00" & x"664" => DATA <= x"4e75"; + when "00" & x"665" => DATA <= x"2f00"; + when "00" & x"666" => DATA <= x"103c"; + when "00" & x"667" => DATA <= x"0014"; + when "00" & x"668" => DATA <= x"6100"; + when "00" & x"669" => DATA <= x"f710"; + when "00" & x"66a" => DATA <= x"2005"; + when "00" & x"66b" => DATA <= x"6100"; + when "00" & x"66c" => DATA <= x"f73e"; + when "00" & x"66d" => DATA <= x"2004"; + when "00" & x"66e" => DATA <= x"6100"; + when "00" & x"66f" => DATA <= x"f738"; + when "00" & x"670" => DATA <= x"2003"; + when "00" & x"671" => DATA <= x"6100"; + when "00" & x"672" => DATA <= x"f732"; + when "00" & x"673" => DATA <= x"2002"; + when "00" & x"674" => DATA <= x"6100"; + when "00" & x"675" => DATA <= x"f72c"; + when "00" & x"676" => DATA <= x"2c41"; + when "00" & x"677" => DATA <= x"6100"; + when "00" & x"678" => DATA <= x"f746"; + when "00" & x"679" => DATA <= x"201f"; + when "00" & x"67a" => DATA <= x"6100"; + when "00" & x"67b" => DATA <= x"f6ec"; + when "00" & x"67c" => DATA <= x"6100"; + when "00" & x"67d" => DATA <= x"f6d6"; + when "00" & x"67e" => DATA <= x"2f00"; + when "00" & x"67f" => DATA <= x"6100"; + when "00" & x"680" => DATA <= x"f706"; + when "00" & x"681" => DATA <= x"2a00"; + when "00" & x"682" => DATA <= x"6100"; + when "00" & x"683" => DATA <= x"f700"; + when "00" & x"684" => DATA <= x"2800"; + when "00" & x"685" => DATA <= x"6100"; + when "00" & x"686" => DATA <= x"f6fa"; + when "00" & x"687" => DATA <= x"2600"; + when "00" & x"688" => DATA <= x"6100"; + when "00" & x"689" => DATA <= x"f6f4"; + when "00" & x"68a" => DATA <= x"2400"; + when "00" & x"68b" => DATA <= x"201f"; + when "00" & x"68c" => DATA <= x"4e75"; + when "00" & x"68d" => DATA <= x"2f00"; + when "00" & x"68e" => DATA <= x"103c"; + when "00" & x"68f" => DATA <= x"000c"; + when "00" & x"690" => DATA <= x"6100"; + when "00" & x"691" => DATA <= x"f6c0"; + when "00" & x"692" => DATA <= x"1001"; + when "00" & x"693" => DATA <= x"6100"; + when "00" & x"694" => DATA <= x"f6ba"; + when "00" & x"695" => DATA <= x"2002"; + when "00" & x"696" => DATA <= x"6100"; + when "00" & x"697" => DATA <= x"f6e8"; + when "00" & x"698" => DATA <= x"201f"; + when "00" & x"699" => DATA <= x"6100"; + when "00" & x"69a" => DATA <= x"f6ae"; + when "00" & x"69b" => DATA <= x"6100"; + when "00" & x"69c" => DATA <= x"f698"; + when "00" & x"69d" => DATA <= x"2f00"; + when "00" & x"69e" => DATA <= x"6100"; + when "00" & x"69f" => DATA <= x"f6c8"; + when "00" & x"6a0" => DATA <= x"2400"; + when "00" & x"6a1" => DATA <= x"201f"; + when "00" & x"6a2" => DATA <= x"4e75"; + when "00" & x"6a3" => DATA <= x"103c"; + when "00" & x"6a4" => DATA <= x"000e"; + when "00" & x"6a5" => DATA <= x"4eb9"; + when "00" & x"6a6" => DATA <= x"003f"; + when "00" & x"6a7" => DATA <= x"03e2"; + when "00" & x"6a8" => DATA <= x"1001"; + when "00" & x"6a9" => DATA <= x"4eb9"; + when "00" & x"6aa" => DATA <= x"003f"; + when "00" & x"6ab" => DATA <= x"03e2"; + when "00" & x"6ac" => DATA <= x"6000"; + when "00" & x"6ad" => DATA <= x"fccc"; + when "00" & x"6ae" => DATA <= x"2f00"; + when "00" & x"6af" => DATA <= x"103c"; + when "00" & x"6b0" => DATA <= x"0010"; + when "00" & x"6b1" => DATA <= x"6100"; + when "00" & x"6b2" => DATA <= x"f67e"; + when "00" & x"6b3" => DATA <= x"1001"; + when "00" & x"6b4" => DATA <= x"6100"; + when "00" & x"6b5" => DATA <= x"f678"; + when "00" & x"6b6" => DATA <= x"2017"; + when "00" & x"6b7" => DATA <= x"6100"; + when "00" & x"6b8" => DATA <= x"f672"; + when "00" & x"6b9" => DATA <= x"6100"; + when "00" & x"6ba" => DATA <= x"f65c"; + when "00" & x"6bb" => DATA <= x"201f"; + when "00" & x"6bc" => DATA <= x"4e75"; + when "00" & x"6bd" => DATA <= x"2f00"; + when "00" & x"6be" => DATA <= x"103c"; + when "00" & x"6bf" => DATA <= x"0016"; + when "00" & x"6c0" => DATA <= x"6100"; + when "00" & x"6c1" => DATA <= x"f660"; + when "00" & x"6c2" => DATA <= x"2004"; + when "00" & x"6c3" => DATA <= x"6100"; + when "00" & x"6c4" => DATA <= x"f68e"; + when "00" & x"6c5" => DATA <= x"2003"; + when "00" & x"6c6" => DATA <= x"6100"; + when "00" & x"6c7" => DATA <= x"f688"; + when "00" & x"6c8" => DATA <= x"2002"; + when "00" & x"6c9" => DATA <= x"6100"; + when "00" & x"6ca" => DATA <= x"f682"; + when "00" & x"6cb" => DATA <= x"2001"; + when "00" & x"6cc" => DATA <= x"6100"; + when "00" & x"6cd" => DATA <= x"f648"; + when "00" & x"6ce" => DATA <= x"201f"; + when "00" & x"6cf" => DATA <= x"6100"; + when "00" & x"6d0" => DATA <= x"f676"; + when "00" & x"6d1" => DATA <= x"6100"; + when "00" & x"6d2" => DATA <= x"f62c"; + when "00" & x"6d3" => DATA <= x"2800"; + when "00" & x"6d4" => DATA <= x"6100"; + when "00" & x"6d5" => DATA <= x"f65c"; + when "00" & x"6d6" => DATA <= x"2600"; + when "00" & x"6d7" => DATA <= x"6100"; + when "00" & x"6d8" => DATA <= x"f656"; + when "00" & x"6d9" => DATA <= x"2400"; + when "00" & x"6da" => DATA <= x"6100"; + when "00" & x"6db" => DATA <= x"f61a"; + when "00" & x"6dc" => DATA <= x"2200"; + when "00" & x"6dd" => DATA <= x"6000"; + when "00" & x"6de" => DATA <= x"fc6a"; + when "00" & x"6df" => DATA <= x"2f00"; + when "00" & x"6e0" => DATA <= x"103c"; + when "00" & x"6e1" => DATA <= x"0012"; + when "00" & x"6e2" => DATA <= x"6100"; + when "00" & x"6e3" => DATA <= x"f61c"; + when "00" & x"6e4" => DATA <= x"201f"; + when "00" & x"6e5" => DATA <= x"6100"; + when "00" & x"6e6" => DATA <= x"f616"; + when "00" & x"6e7" => DATA <= x"4a40"; + when "00" & x"6e8" => DATA <= x"6600"; + when "00" & x"6e9" => DATA <= x"0012"; + when "00" & x"6ea" => DATA <= x"2f00"; + when "00" & x"6eb" => DATA <= x"1001"; + when "00" & x"6ec" => DATA <= x"6100"; + when "00" & x"6ed" => DATA <= x"f608"; + when "00" & x"6ee" => DATA <= x"6100"; + when "00" & x"6ef" => DATA <= x"f5f2"; + when "00" & x"6f0" => DATA <= x"201f"; + when "00" & x"6f1" => DATA <= x"4e75"; + when "00" & x"6f2" => DATA <= x"6100"; + when "00" & x"6f3" => DATA <= x"f650"; + when "00" & x"6f4" => DATA <= x"6000"; + when "00" & x"6f5" => DATA <= x"f5e6"; + when "00" & x"6f6" => DATA <= x"2800"; + when "00" & x"6f7" => DATA <= x"c8bc"; + when "00" & x"6f8" => DATA <= x"d000"; + when "00" & x"6f9" => DATA <= x"0000"; + when "00" & x"6fa" => DATA <= x"6000"; + when "00" & x"6fb" => DATA <= x"06f6"; + when "00" & x"6fc" => DATA <= x"2f05"; + when "00" & x"6fd" => DATA <= x"2f04"; + when "00" & x"6fe" => DATA <= x"2f01"; + when "00" & x"6ff" => DATA <= x"2f00"; + when "00" & x"700" => DATA <= x"2203"; + when "00" & x"701" => DATA <= x"700a"; + when "00" & x"702" => DATA <= x"6100"; + when "00" & x"703" => DATA <= x"04fa"; + when "00" & x"704" => DATA <= x"2801"; + when "00" & x"705" => DATA <= x"2202"; + when "00" & x"706" => DATA <= x"7009"; + when "00" & x"707" => DATA <= x"6100"; + when "00" & x"708" => DATA <= x"04f0"; + when "00" & x"709" => DATA <= x"2a01"; + when "00" & x"70a" => DATA <= x"221f"; + when "00" & x"70b" => DATA <= x"261f"; + when "00" & x"70c" => DATA <= x"7006"; + when "00" & x"70d" => DATA <= x"6100"; + when "00" & x"70e" => DATA <= x"04e4"; + when "00" & x"70f" => DATA <= x"2001"; + when "00" & x"710" => DATA <= x"2203"; + when "00" & x"711" => DATA <= x"2604"; + when "00" & x"712" => DATA <= x"2405"; + when "00" & x"713" => DATA <= x"281f"; + when "00" & x"714" => DATA <= x"2a1f"; + when "00" & x"715" => DATA <= x"023c"; + when "00" & x"716" => DATA <= x"00fd"; + when "00" & x"717" => DATA <= x"4e75"; + when "00" & x"718" => DATA <= x"203c"; + when "00" & x"719" => DATA <= x"0000"; + when "00" & x"71a" => DATA <= x"0600"; + when "00" & x"71b" => DATA <= x"223c"; + when "00" & x"71c" => DATA <= x"0000"; + when "00" & x"71d" => DATA <= x"0500"; + when "00" & x"71e" => DATA <= x"243c"; + when "00" & x"71f" => DATA <= x"0000"; + when "00" & x"720" => DATA <= x"052d"; + when "00" & x"721" => DATA <= x"4e75"; + when "00" & x"722" => DATA <= x"2f38"; + when "00" & x"723" => DATA <= x"04d0"; + when "00" & x"724" => DATA <= x"4e75"; + when "00" & x"725" => DATA <= x"2f03"; + when "00" & x"726" => DATA <= x"2f02"; + when "00" & x"727" => DATA <= x"2f01"; + when "00" & x"728" => DATA <= x"2f00"; + when "00" & x"729" => DATA <= x"2207"; + when "00" & x"72a" => DATA <= x"7004"; + when "00" & x"72b" => DATA <= x"6100"; + when "00" & x"72c" => DATA <= x"04a8"; + when "00" & x"72d" => DATA <= x"2e01"; + when "00" & x"72e" => DATA <= x"2206"; + when "00" & x"72f" => DATA <= x"7003"; + when "00" & x"730" => DATA <= x"6100"; + when "00" & x"731" => DATA <= x"049e"; + when "00" & x"732" => DATA <= x"2c01"; + when "00" & x"733" => DATA <= x"2205"; + when "00" & x"734" => DATA <= x"7002"; + when "00" & x"735" => DATA <= x"6100"; + when "00" & x"736" => DATA <= x"0494"; + when "00" & x"737" => DATA <= x"2a01"; + when "00" & x"738" => DATA <= x"2204"; + when "00" & x"739" => DATA <= x"7001"; + when "00" & x"73a" => DATA <= x"6100"; + when "00" & x"73b" => DATA <= x"048a"; + when "00" & x"73c" => DATA <= x"2801"; + when "00" & x"73d" => DATA <= x"221f"; + when "00" & x"73e" => DATA <= x"700b"; + when "00" & x"73f" => DATA <= x"6100"; + when "00" & x"740" => DATA <= x"0480"; + when "00" & x"741" => DATA <= x"2001"; + when "00" & x"742" => DATA <= x"221f"; + when "00" & x"743" => DATA <= x"2f00"; + when "00" & x"744" => DATA <= x"7000"; + when "00" & x"745" => DATA <= x"6100"; + when "00" & x"746" => DATA <= x"0474"; + when "00" & x"747" => DATA <= x"201f"; + when "00" & x"748" => DATA <= x"241f"; + when "00" & x"749" => DATA <= x"261f"; + when "00" & x"74a" => DATA <= x"023c"; + when "00" & x"74b" => DATA <= x"00fd"; + when "00" & x"74c" => DATA <= x"4e75"; + when "00" & x"74d" => DATA <= x"007c"; + when "00" & x"74e" => DATA <= x"0700"; + when "00" & x"74f" => DATA <= x"4e75"; + when "00" & x"750" => DATA <= x"027c"; + when "00" & x"751" => DATA <= x"f8ff"; + when "00" & x"752" => DATA <= x"4e75"; + when "00" & x"753" => DATA <= x"2f03"; + when "00" & x"754" => DATA <= x"2f02"; + when "00" & x"755" => DATA <= x"4282"; + when "00" & x"756" => DATA <= x"c343"; + when "00" & x"757" => DATA <= x"2200"; + when "00" & x"758" => DATA <= x"103c"; + when "00" & x"759" => DATA <= x"0007"; + when "00" & x"75a" => DATA <= x"6100"; + when "00" & x"75b" => DATA <= x"044a"; + when "00" & x"75c" => DATA <= x"c340"; + when "00" & x"75d" => DATA <= x"c741"; + when "00" & x"75e" => DATA <= x"241f"; + when "00" & x"75f" => DATA <= x"261f"; + when "00" & x"760" => DATA <= x"023c"; + when "00" & x"761" => DATA <= x"00fd"; + when "00" & x"762" => DATA <= x"4e75"; + when "00" & x"763" => DATA <= x"007c"; + when "00" & x"764" => DATA <= x"2000"; + when "00" & x"765" => DATA <= x"4e75"; + when "00" & x"766" => DATA <= x"2f03"; + when "00" & x"767" => DATA <= x"2f02"; + when "00" & x"768" => DATA <= x"4282"; + when "00" & x"769" => DATA <= x"c343"; + when "00" & x"76a" => DATA <= x"2200"; + when "00" & x"76b" => DATA <= x"103c"; + when "00" & x"76c" => DATA <= x"0008"; + when "00" & x"76d" => DATA <= x"6100"; + when "00" & x"76e" => DATA <= x"0424"; + when "00" & x"76f" => DATA <= x"c340"; + when "00" & x"770" => DATA <= x"c741"; + when "00" & x"771" => DATA <= x"241f"; + when "00" & x"772" => DATA <= x"261f"; + when "00" & x"773" => DATA <= x"023c"; + when "00" & x"774" => DATA <= x"00fd"; + when "00" & x"775" => DATA <= x"4e75"; + when "00" & x"776" => DATA <= x"2f03"; + when "00" & x"777" => DATA <= x"2f02"; + when "00" & x"778" => DATA <= x"2f01"; + when "00" & x"779" => DATA <= x"2200"; + when "00" & x"77a" => DATA <= x"103c"; + when "00" & x"77b" => DATA <= x"000c"; + when "00" & x"77c" => DATA <= x"6100"; + when "00" & x"77d" => DATA <= x"0406"; + when "00" & x"77e" => DATA <= x"2001"; + when "00" & x"77f" => DATA <= x"221f"; + when "00" & x"780" => DATA <= x"241f"; + when "00" & x"781" => DATA <= x"261f"; + when "00" & x"782" => DATA <= x"023c"; + when "00" & x"783" => DATA <= x"00fd"; + when "00" & x"784" => DATA <= x"4e75"; + when "00" & x"785" => DATA <= x"6100"; + when "00" & x"786" => DATA <= x"03fa"; + when "00" & x"787" => DATA <= x"2600"; + when "00" & x"788" => DATA <= x"7040"; + when "00" & x"789" => DATA <= x"2238"; + when "00" & x"78a" => DATA <= x"0600"; + when "00" & x"78b" => DATA <= x"6100"; + when "00" & x"78c" => DATA <= x"fccc"; + when "00" & x"78d" => DATA <= x"4280"; + when "00" & x"78e" => DATA <= x"4281"; + when "00" & x"78f" => DATA <= x"3038"; + when "00" & x"790" => DATA <= x"0600"; + when "00" & x"791" => DATA <= x"3238"; + when "00" & x"792" => DATA <= x"0600"; + when "00" & x"793" => DATA <= x"0480"; + when "00" & x"794" => DATA <= x"0000"; + when "00" & x"795" => DATA <= x"0280"; + when "00" & x"796" => DATA <= x"0481"; + when "00" & x"797" => DATA <= x"0000"; + when "00" & x"798" => DATA <= x"0200"; + when "00" & x"799" => DATA <= x"c1fc"; + when "00" & x"79a" => DATA <= x"0033"; + when "00" & x"79b" => DATA <= x"ed89"; + when "00" & x"79c" => DATA <= x"4282"; + when "00" & x"79d" => DATA <= x"0838"; + when "00" & x"79e" => DATA <= x"0007"; + when "00" & x"79f" => DATA <= x"0606"; + when "00" & x"7a0" => DATA <= x"6700"; + when "00" & x"7a1" => DATA <= x"0006"; + when "00" & x"7a2" => DATA <= x"08c2"; + when "00" & x"7a3" => DATA <= x"0000"; + when "00" & x"7a4" => DATA <= x"0838"; + when "00" & x"7a5" => DATA <= x"0006"; + when "00" & x"7a6" => DATA <= x"0606"; + when "00" & x"7a7" => DATA <= x"6700"; + when "00" & x"7a8" => DATA <= x"0006"; + when "00" & x"7a9" => DATA <= x"08c2"; + when "00" & x"7aa" => DATA <= x"0001"; + when "00" & x"7ab" => DATA <= x"0838"; + when "00" & x"7ac" => DATA <= x"0005"; + when "00" & x"7ad" => DATA <= x"0606"; + when "00" & x"7ae" => DATA <= x"6700"; + when "00" & x"7af" => DATA <= x"0006"; + when "00" & x"7b0" => DATA <= x"08c2"; + when "00" & x"7b1" => DATA <= x"0002"; + when "00" & x"7b2" => DATA <= x"023c"; + when "00" & x"7b3" => DATA <= x"00fd"; + when "00" & x"7b4" => DATA <= x"4e75"; + when "00" & x"7b5" => DATA <= x"103c"; + when "00" & x"7b6" => DATA <= x"0080"; + when "00" & x"7b7" => DATA <= x"123c"; + when "00" & x"7b8" => DATA <= x"0007"; + when "00" & x"7b9" => DATA <= x"143c"; + when "00" & x"7ba" => DATA <= x"0000"; + when "00" & x"7bb" => DATA <= x"6100"; + when "00" & x"7bc" => DATA <= x"fb5a"; + when "00" & x"7bd" => DATA <= x"103c"; + when "00" & x"7be" => DATA <= x"0080"; + when "00" & x"7bf" => DATA <= x"123c"; + when "00" & x"7c0" => DATA <= x"0008"; + when "00" & x"7c1" => DATA <= x"143c"; + when "00" & x"7c2" => DATA <= x"0000"; + when "00" & x"7c3" => DATA <= x"6100"; + when "00" & x"7c4" => DATA <= x"fb4a"; + when "00" & x"7c5" => DATA <= x"103c"; + when "00" & x"7c6" => DATA <= x"0080"; + when "00" & x"7c7" => DATA <= x"123c"; + when "00" & x"7c8" => DATA <= x"0009"; + when "00" & x"7c9" => DATA <= x"143c"; + when "00" & x"7ca" => DATA <= x"0000"; + when "00" & x"7cb" => DATA <= x"6100"; + when "00" & x"7cc" => DATA <= x"fb3a"; + when "00" & x"7cd" => DATA <= x"103c"; + when "00" & x"7ce" => DATA <= x"0081"; + when "00" & x"7cf" => DATA <= x"123c"; + when "00" & x"7d0" => DATA <= x"00f6"; + when "00" & x"7d1" => DATA <= x"143c"; + when "00" & x"7d2" => DATA <= x"00ff"; + when "00" & x"7d3" => DATA <= x"6100"; + when "00" & x"7d4" => DATA <= x"fb2a"; + when "00" & x"7d5" => DATA <= x"103c"; + when "00" & x"7d6" => DATA <= x"0081"; + when "00" & x"7d7" => DATA <= x"123c"; + when "00" & x"7d8" => DATA <= x"00f5"; + when "00" & x"7d9" => DATA <= x"143c"; + when "00" & x"7da" => DATA <= x"00ff"; + when "00" & x"7db" => DATA <= x"6100"; + when "00" & x"7dc" => DATA <= x"fb1a"; + when "00" & x"7dd" => DATA <= x"103c"; + when "00" & x"7de" => DATA <= x"0081"; + when "00" & x"7df" => DATA <= x"123c"; + when "00" & x"7e0" => DATA <= x"00f4"; + when "00" & x"7e1" => DATA <= x"143c"; + when "00" & x"7e2" => DATA <= x"00ff"; + when "00" & x"7e3" => DATA <= x"6100"; + when "00" & x"7e4" => DATA <= x"fb0a"; + when "00" & x"7e5" => DATA <= x"4e75"; + when "00" & x"7e6" => DATA <= x"2f0e"; + when "00" & x"7e7" => DATA <= x"2f07"; + when "00" & x"7e8" => DATA <= x"2f06"; + when "00" & x"7e9" => DATA <= x"2f04"; + when "00" & x"7ea" => DATA <= x"2f03"; + when "00" & x"7eb" => DATA <= x"2f00"; + when "00" & x"7ec" => DATA <= x"7eff"; + when "00" & x"7ed" => DATA <= x"0800"; + when "00" & x"7ee" => DATA <= x"001d"; + when "00" & x"7ef" => DATA <= x"6700"; + when "00" & x"7f0" => DATA <= x"0004"; + when "00" & x"7f1" => DATA <= x"2e02"; + when "00" & x"7f2" => DATA <= x"0280"; + when "00" & x"7f3" => DATA <= x"0000"; + when "00" & x"7f4" => DATA <= x"00ff"; + when "00" & x"7f5" => DATA <= x"4a80"; + when "00" & x"7f6" => DATA <= x"6600"; + when "00" & x"7f7" => DATA <= x"0004"; + when "00" & x"7f8" => DATA <= x"700a"; + when "00" & x"7f9" => DATA <= x"b0bc"; + when "00" & x"7fa" => DATA <= x"0000"; + when "00" & x"7fb" => DATA <= x"0002"; + when "00" & x"7fc" => DATA <= x"6500"; + when "00" & x"7fd" => DATA <= x"00a0"; + when "00" & x"7fe" => DATA <= x"b0bc"; + when "00" & x"7ff" => DATA <= x"0000"; + when "00" & x"800" => DATA <= x"0024"; + when "00" & x"801" => DATA <= x"6200"; + when "00" & x"802" => DATA <= x"0096"; + when "00" & x"803" => DATA <= x"2c00"; + when "00" & x"804" => DATA <= x"4282"; + when "00" & x"805" => DATA <= x"2c41"; + when "00" & x"806" => DATA <= x"6100"; + when "00" & x"807" => DATA <= x"1712"; + when "00" & x"808" => DATA <= x"528e"; + when "00" & x"809" => DATA <= x"b03c"; + when "00" & x"80a" => DATA <= x"0026"; + when "00" & x"80b" => DATA <= x"6600"; + when "00" & x"80c" => DATA <= x"000a"; + when "00" & x"80d" => DATA <= x"7c10"; + when "00" & x"80e" => DATA <= x"528e"; + when "00" & x"80f" => DATA <= x"6000"; + when "00" & x"810" => DATA <= x"000e"; + when "00" & x"811" => DATA <= x"b03c"; + when "00" & x"812" => DATA <= x"0024"; + when "00" & x"813" => DATA <= x"6600"; + when "00" & x"814" => DATA <= x"0006"; + when "00" & x"815" => DATA <= x"7c10"; + when "00" & x"816" => DATA <= x"528e"; + when "00" & x"817" => DATA <= x"0c00"; + when "00" & x"818" => DATA <= x"0039"; + when "00" & x"819" => DATA <= x"6300"; + when "00" & x"81a" => DATA <= x"0008"; + when "00" & x"81b" => DATA <= x"0200"; + when "00" & x"81c" => DATA <= x"00df"; + when "00" & x"81d" => DATA <= x"5f00"; + when "00" & x"81e" => DATA <= x"0400"; + when "00" & x"81f" => DATA <= x"0030"; + when "00" & x"820" => DATA <= x"6b00"; + when "00" & x"821" => DATA <= x"0030"; + when "00" & x"822" => DATA <= x"b006"; + when "00" & x"823" => DATA <= x"6200"; + when "00" & x"824" => DATA <= x"002a"; + when "00" & x"825" => DATA <= x"bcbc"; + when "00" & x"826" => DATA <= x"0000"; + when "00" & x"827" => DATA <= x"0010"; + when "00" & x"828" => DATA <= x"6600"; + when "00" & x"829" => DATA <= x"000a"; + when "00" & x"82a" => DATA <= x"e98a"; + when "00" & x"82b" => DATA <= x"d480"; + when "00" & x"82c" => DATA <= x"101e"; + when "00" & x"82d" => DATA <= x"60d2"; + when "00" & x"82e" => DATA <= x"2606"; + when "00" & x"82f" => DATA <= x"5583"; + when "00" & x"830" => DATA <= x"2802"; + when "00" & x"831" => DATA <= x"d484"; + when "00" & x"832" => DATA <= x"6500"; + when "00" & x"833" => DATA <= x"0048"; + when "00" & x"834" => DATA <= x"51cb"; + when "00" & x"835" => DATA <= x"fff8"; + when "00" & x"836" => DATA <= x"d480"; + when "00" & x"837" => DATA <= x"101e"; + when "00" & x"838" => DATA <= x"60bc"; + when "00" & x"839" => DATA <= x"4a82"; + when "00" & x"83a" => DATA <= x"6700"; + when "00" & x"83b" => DATA <= x"002e"; + when "00" & x"83c" => DATA <= x"4a87"; + when "00" & x"83d" => DATA <= x"6700"; + when "00" & x"83e" => DATA <= x"0008"; + when "00" & x"83f" => DATA <= x"b087"; + when "00" & x"840" => DATA <= x"6200"; + when "00" & x"841" => DATA <= x"002c"; + when "00" & x"842" => DATA <= x"220e"; + when "00" & x"843" => DATA <= x"5381"; + when "00" & x"844" => DATA <= x"201f"; + when "00" & x"845" => DATA <= x"261f"; + when "00" & x"846" => DATA <= x"281f"; + when "00" & x"847" => DATA <= x"2c1f"; + when "00" & x"848" => DATA <= x"2e1f"; + when "00" & x"849" => DATA <= x"2c5f"; + when "00" & x"84a" => DATA <= x"023c"; + when "00" & x"84b" => DATA <= x"00fd"; + when "00" & x"84c" => DATA <= x"4e75"; + when "00" & x"84d" => DATA <= x"203c"; + when "00" & x"84e" => DATA <= x"003f"; + when "00" & x"84f" => DATA <= x"2de8"; + when "00" & x"850" => DATA <= x"6000"; + when "00" & x"851" => DATA <= x"0012"; + when "00" & x"852" => DATA <= x"203c"; + when "00" & x"853" => DATA <= x"003f"; + when "00" & x"854" => DATA <= x"2df8"; + when "00" & x"855" => DATA <= x"6000"; + when "00" & x"856" => DATA <= x"0008"; + when "00" & x"857" => DATA <= x"203c"; + when "00" & x"858" => DATA <= x"003f"; + when "00" & x"859" => DATA <= x"2e08"; + when "00" & x"85a" => DATA <= x"261f"; + when "00" & x"85b" => DATA <= x"261f"; + when "00" & x"85c" => DATA <= x"281f"; + when "00" & x"85d" => DATA <= x"2c1f"; + when "00" & x"85e" => DATA <= x"2e1f"; + when "00" & x"85f" => DATA <= x"2c5f"; + when "00" & x"860" => DATA <= x"003c"; + when "00" & x"861" => DATA <= x"0002"; + when "00" & x"862" => DATA <= x"4e75"; + when "00" & x"863" => DATA <= x"2f00"; + when "00" & x"864" => DATA <= x"2f01"; + when "00" & x"865" => DATA <= x"6100"; + when "00" & x"866" => DATA <= x"07bc"; + when "00" & x"867" => DATA <= x"2401"; + when "00" & x"868" => DATA <= x"221f"; + when "00" & x"869" => DATA <= x"201f"; + when "00" & x"86a" => DATA <= x"4e75"; + when "00" & x"86b" => DATA <= x"b03c"; + when "00" & x"86c" => DATA <= x"003a"; + when "00" & x"86d" => DATA <= x"6200"; + when "00" & x"86e" => DATA <= x"001c"; + when "00" & x"86f" => DATA <= x"2f0e"; + when "00" & x"870" => DATA <= x"d040"; + when "00" & x"871" => DATA <= x"d040"; + when "00" & x"872" => DATA <= x"2c79"; + when "00" & x"873" => DATA <= x"003f"; + when "00" & x"874" => DATA <= x"36f8"; + when "00" & x"875" => DATA <= x"ddc0"; + when "00" & x"876" => DATA <= x"4dd6"; + when "00" & x"877" => DATA <= x"4e96"; + when "00" & x"878" => DATA <= x"2c5f"; + when "00" & x"879" => DATA <= x"023c"; + when "00" & x"87a" => DATA <= x"00fd"; + when "00" & x"87b" => DATA <= x"4e75"; + when "00" & x"87c" => DATA <= x"203c"; + when "00" & x"87d" => DATA <= x"003f"; + when "00" & x"87e" => DATA <= x"2ef4"; + when "00" & x"87f" => DATA <= x"003c"; + when "00" & x"880" => DATA <= x"0002"; + when "00" & x"881" => DATA <= x"4e75"; + when "00" & x"882" => DATA <= x"103c"; + when "00" & x"883" => DATA <= x"008b"; + when "00" & x"884" => DATA <= x"6100"; + when "00" & x"885" => DATA <= x"f9c8"; + when "00" & x"886" => DATA <= x"103c"; + when "00" & x"887" => DATA <= x"0010"; + when "00" & x"888" => DATA <= x"4e75"; + when "00" & x"889" => DATA <= x"7000"; + when "00" & x"88a" => DATA <= x"7200"; + when "00" & x"88b" => DATA <= x"6100"; + when "00" & x"88c" => DATA <= x"fbb2"; + when "00" & x"88d" => DATA <= x"103c"; + when "00" & x"88e" => DATA <= x"0016"; + when "00" & x"88f" => DATA <= x"4e75"; + when "00" & x"890" => DATA <= x"2f38"; + when "00" & x"891" => DATA <= x"0404"; + when "00" & x"892" => DATA <= x"4e75"; + when "00" & x"893" => DATA <= x"0838"; + when "00" & x"894" => DATA <= x"0006"; + when "00" & x"895" => DATA <= x"0535"; + when "00" & x"896" => DATA <= x"6600"; + when "00" & x"897" => DATA <= x"0008"; + when "00" & x"898" => DATA <= x"023c"; + when "00" & x"899" => DATA <= x"00fe"; + when "00" & x"89a" => DATA <= x"4e75"; + when "00" & x"89b" => DATA <= x"003c"; + when "00" & x"89c" => DATA <= x"0001"; + when "00" & x"89d" => DATA <= x"4e75"; + when "00" & x"89e" => DATA <= x"2f04"; + when "00" & x"89f" => DATA <= x"7801"; + when "00" & x"8a0" => DATA <= x"2f0e"; + when "00" & x"8a1" => DATA <= x"2c79"; + when "00" & x"8a2" => DATA <= x"0000"; + when "00" & x"8a3" => DATA <= x"048c"; + when "00" & x"8a4" => DATA <= x"4e96"; + when "00" & x"8a5" => DATA <= x"2c5f"; + when "00" & x"8a6" => DATA <= x"281f"; + when "00" & x"8a7" => DATA <= x"4e75"; + when "00" & x"8a8" => DATA <= x"4e75"; + when "00" & x"8a9" => DATA <= x"b0bc"; + when "00" & x"8aa" => DATA <= x"0000"; + when "00" & x"8ab" => DATA <= x"04ff"; + when "00" & x"8ac" => DATA <= x"6200"; + when "00" & x"8ad" => DATA <= x"0040"; + when "00" & x"8ae" => DATA <= x"b2bc"; + when "00" & x"8af" => DATA <= x"0000"; + when "00" & x"8b0" => DATA <= x"03ff"; + when "00" & x"8b1" => DATA <= x"6200"; + when "00" & x"8b2" => DATA <= x"0036"; + when "00" & x"8b3" => DATA <= x"2f00"; + when "00" & x"8b4" => DATA <= x"2f01"; + when "00" & x"8b5" => DATA <= x"31c0"; + when "00" & x"8b6" => DATA <= x"0600"; + when "00" & x"8b7" => DATA <= x"31c1"; + when "00" & x"8b8" => DATA <= x"0602"; + when "00" & x"8b9" => DATA <= x"223c"; + when "00" & x"8ba" => DATA <= x"0000"; + when "00" & x"8bb" => DATA <= x"0600"; + when "00" & x"8bc" => DATA <= x"7009"; + when "00" & x"8bd" => DATA <= x"6100"; + when "00" & x"8be" => DATA <= x"fa68"; + when "00" & x"8bf" => DATA <= x"7400"; + when "00" & x"8c0" => DATA <= x"7600"; + when "00" & x"8c1" => DATA <= x"1438"; + when "00" & x"8c2" => DATA <= x"0604"; + when "00" & x"8c3" => DATA <= x"221f"; + when "00" & x"8c4" => DATA <= x"201f"; + when "00" & x"8c5" => DATA <= x"b43c"; + when "00" & x"8c6" => DATA <= x"00ff"; + when "00" & x"8c7" => DATA <= x"6700"; + when "00" & x"8c8" => DATA <= x"000a"; + when "00" & x"8c9" => DATA <= x"7800"; + when "00" & x"8ca" => DATA <= x"023c"; + when "00" & x"8cb" => DATA <= x"00fd"; + when "00" & x"8cc" => DATA <= x"4e75"; + when "00" & x"8cd" => DATA <= x"203c"; + when "00" & x"8ce" => DATA <= x"003f"; + when "00" & x"8cf" => DATA <= x"2d64"; + when "00" & x"8d0" => DATA <= x"78ff"; + when "00" & x"8d1" => DATA <= x"003c"; + when "00" & x"8d2" => DATA <= x"0002"; + when "00" & x"8d3" => DATA <= x"4e75"; + when "00" & x"8d4" => DATA <= x"b5fc"; + when "00" & x"8d5" => DATA <= x"0000"; + when "00" & x"8d6" => DATA <= x"002f"; + when "00" & x"8d7" => DATA <= x"6200"; + when "00" & x"8d8" => DATA <= x"0018"; + when "00" & x"8d9" => DATA <= x"2f0a"; + when "00" & x"8da" => DATA <= x"d4ca"; + when "00" & x"8db" => DATA <= x"d4ca"; + when "00" & x"8dc" => DATA <= x"d5f8"; + when "00" & x"8dd" => DATA <= x"0000"; + when "00" & x"8de" => DATA <= x"45d2"; + when "00" & x"8df" => DATA <= x"4e92"; + when "00" & x"8e0" => DATA <= x"245f"; + when "00" & x"8e1" => DATA <= x"023c"; + when "00" & x"8e2" => DATA <= x"00fd"; + when "00" & x"8e3" => DATA <= x"4e75"; + when "00" & x"8e4" => DATA <= x"203c"; + when "00" & x"8e5" => DATA <= x"003f"; + when "00" & x"8e6" => DATA <= x"2e48"; + when "00" & x"8e7" => DATA <= x"003c"; + when "00" & x"8e8" => DATA <= x"0002"; + when "00" & x"8e9" => DATA <= x"4e75"; + when "00" & x"8ea" => DATA <= x"2f00"; + when "00" & x"8eb" => DATA <= x"2f01"; + when "00" & x"8ec" => DATA <= x"203c"; + when "00" & x"8ed" => DATA <= x"003f"; + when "00" & x"8ee" => DATA <= x"2822"; + when "00" & x"8ef" => DATA <= x"720b"; + when "00" & x"8f0" => DATA <= x"6100"; + when "00" & x"8f1" => DATA <= x"018c"; + when "00" & x"8f2" => DATA <= x"221f"; + when "00" & x"8f3" => DATA <= x"201f"; + when "00" & x"8f4" => DATA <= x"023c"; + when "00" & x"8f5" => DATA <= x"00fd"; + when "00" & x"8f6" => DATA <= x"4e75"; + when "00" & x"8f7" => DATA <= x"2f00"; + when "00" & x"8f8" => DATA <= x"2f01"; + when "00" & x"8f9" => DATA <= x"203c"; + when "00" & x"8fa" => DATA <= x"003f"; + when "00" & x"8fb" => DATA <= x"282d"; + when "00" & x"8fc" => DATA <= x"720b"; + when "00" & x"8fd" => DATA <= x"6100"; + when "00" & x"8fe" => DATA <= x"0172"; + when "00" & x"8ff" => DATA <= x"221f"; + when "00" & x"900" => DATA <= x"201f"; + when "00" & x"901" => DATA <= x"023c"; + when "00" & x"902" => DATA <= x"00fd"; + when "00" & x"903" => DATA <= x"4e75"; + when "00" & x"904" => DATA <= x"2f0e"; + when "00" & x"905" => DATA <= x"2f09"; + when "00" & x"906" => DATA <= x"2f01"; + when "00" & x"907" => DATA <= x"2f00"; + when "00" & x"908" => DATA <= x"2c41"; + when "00" & x"909" => DATA <= x"0280"; + when "00" & x"90a" => DATA <= x"0002"; + when "00" & x"90b" => DATA <= x"0000"; + when "00" & x"90c" => DATA <= x"6700"; + when "00" & x"90d" => DATA <= x"000c"; + when "00" & x"90e" => DATA <= x"5382"; + when "00" & x"90f" => DATA <= x"6b00"; + when "00" & x"910" => DATA <= x"005c"; + when "00" & x"911" => DATA <= x"1cfc"; + when "00" & x"912" => DATA <= x"0058"; + when "00" & x"913" => DATA <= x"43f9"; + when "00" & x"914" => DATA <= x"003f"; + when "00" & x"915" => DATA <= x"2f50"; + when "00" & x"916" => DATA <= x"b099"; + when "00" & x"917" => DATA <= x"6700"; + when "00" & x"918" => DATA <= x"0014"; + when "00" & x"919" => DATA <= x"2219"; + when "00" & x"91a" => DATA <= x"b23c"; + when "00" & x"91b" => DATA <= x"00ff"; + when "00" & x"91c" => DATA <= x"6700"; + when "00" & x"91d" => DATA <= x"0020"; + when "00" & x"91e" => DATA <= x"b23c"; + when "00" & x"91f" => DATA <= x"0000"; + when "00" & x"920" => DATA <= x"66f0"; + when "00" & x"921" => DATA <= x"60e8"; + when "00" & x"922" => DATA <= x"2019"; + when "00" & x"923" => DATA <= x"5382"; + when "00" & x"924" => DATA <= x"6b00"; + when "00" & x"925" => DATA <= x"0032"; + when "00" & x"926" => DATA <= x"1cd9"; + when "00" & x"927" => DATA <= x"66f6"; + when "00" & x"928" => DATA <= x"201f"; + when "00" & x"929" => DATA <= x"221f"; + when "00" & x"92a" => DATA <= x"225f"; + when "00" & x"92b" => DATA <= x"2c5f"; + when "00" & x"92c" => DATA <= x"4e75"; + when "00" & x"92d" => DATA <= x"0c81"; + when "00" & x"92e" => DATA <= x"0000"; + when "00" & x"92f" => DATA <= x"000d"; + when "00" & x"930" => DATA <= x"6500"; + when "00" & x"931" => DATA <= x"001a"; + when "00" & x"932" => DATA <= x"2cfc"; + when "00" & x"933" => DATA <= x"4f53"; + when "00" & x"934" => DATA <= x"5f55"; + when "00" & x"935" => DATA <= x"2cfc"; + when "00" & x"936" => DATA <= x"6e64"; + when "00" & x"937" => DATA <= x"6566"; + when "00" & x"938" => DATA <= x"2cfc"; + when "00" & x"939" => DATA <= x"696e"; + when "00" & x"93a" => DATA <= x"6564"; + when "00" & x"93b" => DATA <= x"1cfc"; + when "00" & x"93c" => DATA <= x"0000"; + when "00" & x"93d" => DATA <= x"60d4"; + when "00" & x"93e" => DATA <= x"003c"; + when "00" & x"93f" => DATA <= x"0002"; + when "00" & x"940" => DATA <= x"2ebc"; + when "00" & x"941" => DATA <= x"003f"; + when "00" & x"942" => DATA <= x"2e80"; + when "00" & x"943" => DATA <= x"60c8"; + when "00" & x"944" => DATA <= x"2f0e"; + when "00" & x"945" => DATA <= x"2f0d"; + when "00" & x"946" => DATA <= x"2f01"; + when "00" & x"947" => DATA <= x"4bf9"; + when "00" & x"948" => DATA <= x"003f"; + when "00" & x"949" => DATA <= x"2f50"; + when "00" & x"94a" => DATA <= x"2c57"; + when "00" & x"94b" => DATA <= x"201d"; + when "00" & x"94c" => DATA <= x"588d"; + when "00" & x"94d" => DATA <= x"bd8d"; + when "00" & x"94e" => DATA <= x"6600"; + when "00" & x"94f" => DATA <= x"0010"; + when "00" & x"950" => DATA <= x"4a2d"; + when "00" & x"951" => DATA <= x"ffff"; + when "00" & x"952" => DATA <= x"66f4"; + when "00" & x"953" => DATA <= x"221f"; + when "00" & x"954" => DATA <= x"2a5f"; + when "00" & x"955" => DATA <= x"2c5f"; + when "00" & x"956" => DATA <= x"4e75"; + when "00" & x"957" => DATA <= x"201d"; + when "00" & x"958" => DATA <= x"4a00"; + when "00" & x"959" => DATA <= x"66fa"; + when "00" & x"95a" => DATA <= x"b03c"; + when "00" & x"95b" => DATA <= x"00ff"; + when "00" & x"95c" => DATA <= x"66da"; + when "00" & x"95d" => DATA <= x"221f"; + when "00" & x"95e" => DATA <= x"2a5f"; + when "00" & x"95f" => DATA <= x"2c5f"; + when "00" & x"960" => DATA <= x"203c"; + when "00" & x"961" => DATA <= x"003f"; + when "00" & x"962" => DATA <= x"2e94"; + when "00" & x"963" => DATA <= x"003c"; + when "00" & x"964" => DATA <= x"0002"; + when "00" & x"965" => DATA <= x"4e75"; + when "00" & x"966" => DATA <= x"4a80"; + when "00" & x"967" => DATA <= x"6d00"; + when "00" & x"968" => DATA <= x"0010"; + when "00" & x"969" => DATA <= x"b2b8"; + when "00" & x"96a" => DATA <= x"0508"; + when "00" & x"96b" => DATA <= x"6200"; + when "00" & x"96c" => DATA <= x"0008"; + when "00" & x"96d" => DATA <= x"023c"; + when "00" & x"96e" => DATA <= x"00fe"; + when "00" & x"96f" => DATA <= x"4e75"; + when "00" & x"970" => DATA <= x"003c"; + when "00" & x"971" => DATA <= x"0001"; + when "00" & x"972" => DATA <= x"4e75"; + when "00" & x"973" => DATA <= x"0c80"; + when "00" & x"974" => DATA <= x"0000"; + when "00" & x"975" => DATA <= x"0007"; + when "00" & x"976" => DATA <= x"6200"; + when "00" & x"977" => DATA <= x"0008"; + when "00" & x"978" => DATA <= x"023c"; + when "00" & x"979" => DATA <= x"00fe"; + when "00" & x"97a" => DATA <= x"4e75"; + when "00" & x"97b" => DATA <= x"70ff"; + when "00" & x"97c" => DATA <= x"72fe"; + when "00" & x"97d" => DATA <= x"003c"; + when "00" & x"97e" => DATA <= x"0001"; + when "00" & x"97f" => DATA <= x"4e75"; + when "00" & x"980" => DATA <= x"2f38"; + when "00" & x"981" => DATA <= x"0478"; + when "00" & x"982" => DATA <= x"4e75"; + when "00" & x"983" => DATA <= x"2f01"; + when "00" & x"984" => DATA <= x"7001"; + when "00" & x"985" => DATA <= x"223c"; + when "00" & x"986" => DATA <= x"0000"; + when "00" & x"987" => DATA <= x"0600"; + when "00" & x"988" => DATA <= x"6100"; + when "00" & x"989" => DATA <= x"f8d2"; + when "00" & x"98a" => DATA <= x"2038"; + when "00" & x"98b" => DATA <= x"0600"; + when "00" & x"98c" => DATA <= x"90b8"; + when "00" & x"98d" => DATA <= x"0528"; + when "00" & x"98e" => DATA <= x"221f"; + when "00" & x"98f" => DATA <= x"4e75"; + when "00" & x"990" => DATA <= x"b0bc"; + when "00" & x"991" => DATA <= x"0000"; + when "00" & x"992" => DATA <= x"04ff"; + when "00" & x"993" => DATA <= x"6200"; + when "00" & x"994" => DATA <= x"0038"; + when "00" & x"995" => DATA <= x"b2bc"; + when "00" & x"996" => DATA <= x"0000"; + when "00" & x"997" => DATA <= x"03ff"; + when "00" & x"998" => DATA <= x"6200"; + when "00" & x"999" => DATA <= x"002e"; + when "00" & x"99a" => DATA <= x"2f00"; + when "00" & x"99b" => DATA <= x"7019"; + when "00" & x"99c" => DATA <= x"6100"; + when "00" & x"99d" => DATA <= x"f6ac"; + when "00" & x"99e" => DATA <= x"201f"; + when "00" & x"99f" => DATA <= x"6100"; + when "00" & x"9a0" => DATA <= x"f6a6"; + when "00" & x"9a1" => DATA <= x"3001"; + when "00" & x"9a2" => DATA <= x"6100"; + when "00" & x"9a3" => DATA <= x"f6a0"; + when "00" & x"9a4" => DATA <= x"e088"; + when "00" & x"9a5" => DATA <= x"6100"; + when "00" & x"9a6" => DATA <= x"f69a"; + when "00" & x"9a7" => DATA <= x"3002"; + when "00" & x"9a8" => DATA <= x"6100"; + when "00" & x"9a9" => DATA <= x"f694"; + when "00" & x"9aa" => DATA <= x"e088"; + when "00" & x"9ab" => DATA <= x"6100"; + when "00" & x"9ac" => DATA <= x"f68e"; + when "00" & x"9ad" => DATA <= x"023c"; + when "00" & x"9ae" => DATA <= x"00fd"; + when "00" & x"9af" => DATA <= x"4e75"; + when "00" & x"9b0" => DATA <= x"203c"; + when "00" & x"9b1" => DATA <= x"003f"; + when "00" & x"9b2" => DATA <= x"2d64"; + when "00" & x"9b3" => DATA <= x"78ff"; + when "00" & x"9b4" => DATA <= x"003c"; + when "00" & x"9b5" => DATA <= x"0002"; + when "00" & x"9b6" => DATA <= x"4e75"; + when "00" & x"9b7" => DATA <= x"0c81"; + when "00" & x"9b8" => DATA <= x"0000"; + when "00" & x"9b9" => DATA <= x"0000"; + when "00" & x"9ba" => DATA <= x"6700"; + when "00" & x"9bb" => DATA <= x"001c"; + when "00" & x"9bc" => DATA <= x"5341"; + when "00" & x"9bd" => DATA <= x"2f08"; + when "00" & x"9be" => DATA <= x"2f00"; + when "00" & x"9bf" => DATA <= x"2f01"; + when "00" & x"9c0" => DATA <= x"2040"; + when "00" & x"9c1" => DATA <= x"1018"; + when "00" & x"9c2" => DATA <= x"6100"; + when "00" & x"9c3" => DATA <= x"f660"; + when "00" & x"9c4" => DATA <= x"51c9"; + when "00" & x"9c5" => DATA <= x"fff8"; + when "00" & x"9c6" => DATA <= x"221f"; + when "00" & x"9c7" => DATA <= x"201f"; + when "00" & x"9c8" => DATA <= x"205f"; + when "00" & x"9c9" => DATA <= x"4e75"; + when "00" & x"9ca" => DATA <= x"2f0e"; + when "00" & x"9cb" => DATA <= x"2f0d"; + when "00" & x"9cc" => DATA <= x"4a80"; + when "00" & x"9cd" => DATA <= x"6700"; + when "00" & x"9ce" => DATA <= x"000e"; + when "00" & x"9cf" => DATA <= x"2c40"; + when "00" & x"9d0" => DATA <= x"2a7c"; + when "00" & x"9d1" => DATA <= x"0000"; + when "00" & x"9d2" => DATA <= x"0600"; + when "00" & x"9d3" => DATA <= x"1ade"; + when "00" & x"9d4" => DATA <= x"66fc"; + when "00" & x"9d5" => DATA <= x"4a81"; + when "00" & x"9d6" => DATA <= x"6700"; + when "00" & x"9d7" => DATA <= x"0016"; + when "00" & x"9d8" => DATA <= x"2f02"; + when "00" & x"9d9" => DATA <= x"7404"; + when "00" & x"9da" => DATA <= x"2c41"; + when "00" & x"9db" => DATA <= x"2a7c"; + when "00" & x"9dc" => DATA <= x"0000"; + when "00" & x"9dd" => DATA <= x"052d"; + when "00" & x"9de" => DATA <= x"1ade"; + when "00" & x"9df" => DATA <= x"5382"; + when "00" & x"9e0" => DATA <= x"6afa"; + when "00" & x"9e1" => DATA <= x"241f"; + when "00" & x"9e2" => DATA <= x"2a5f"; + when "00" & x"9e3" => DATA <= x"2c5f"; + when "00" & x"9e4" => DATA <= x"4e75"; + when "00" & x"9e5" => DATA <= x"2f02"; + when "00" & x"9e6" => DATA <= x"2f01"; + when "00" & x"9e7" => DATA <= x"2f00"; + when "00" & x"9e8" => DATA <= x"2203"; + when "00" & x"9e9" => DATA <= x"7004"; + when "00" & x"9ea" => DATA <= x"6100"; + when "00" & x"9eb" => DATA <= x"fbf4"; + when "00" & x"9ec" => DATA <= x"201f"; + when "00" & x"9ed" => DATA <= x"221f"; + when "00" & x"9ee" => DATA <= x"241f"; + when "00" & x"9ef" => DATA <= x"6000"; + when "00" & x"9f0" => DATA <= x"fa64"; + when "00" & x"9f1" => DATA <= x"b07c"; + when "00" & x"9f2" => DATA <= x"0010"; + when "00" & x"9f3" => DATA <= x"6300"; + when "00" & x"9f4" => DATA <= x"000e"; + when "00" & x"9f5" => DATA <= x"203c"; + when "00" & x"9f6" => DATA <= x"003f"; + when "00" & x"9f7" => DATA <= x"2e1c"; + when "00" & x"9f8" => DATA <= x"003c"; + when "00" & x"9f9" => DATA <= x"0002"; + when "00" & x"9fa" => DATA <= x"4e75"; + when "00" & x"9fb" => DATA <= x"41f9"; + when "00" & x"9fc" => DATA <= x"003f"; + when "00" & x"9fd" => DATA <= x"362c"; + when "00" & x"9fe" => DATA <= x"e588"; + when "00" & x"9ff" => DATA <= x"d1c0"; + when "00" & x"a00" => DATA <= x"d1c0"; + when "00" & x"a01" => DATA <= x"d1c0"; + when "00" & x"a02" => DATA <= x"2218"; + when "00" & x"a03" => DATA <= x"6700"; + when "00" & x"a04" => DATA <= x"11ea"; + when "00" & x"a05" => DATA <= x"0681"; + when "00" & x"a06" => DATA <= x"003f"; + when "00" & x"a07" => DATA <= x"0000"; + when "00" & x"a08" => DATA <= x"2418"; + when "00" & x"a09" => DATA <= x"6700"; + when "00" & x"a0a" => DATA <= x"0008"; + when "00" & x"a0b" => DATA <= x"0682"; + when "00" & x"a0c" => DATA <= x"003f"; + when "00" & x"a0d" => DATA <= x"0000"; + when "00" & x"a0e" => DATA <= x"2618"; + when "00" & x"a0f" => DATA <= x"6700"; + when "00" & x"a10" => DATA <= x"0008"; + when "00" & x"a11" => DATA <= x"0683"; + when "00" & x"a12" => DATA <= x"003f"; + when "00" & x"a13" => DATA <= x"0000"; + when "00" & x"a14" => DATA <= x"4e75"; + when "00" & x"a15" => DATA <= x"b0bc"; + when "00" & x"a16" => DATA <= x"0000"; + when "00" & x"a17" => DATA <= x"04ff"; + when "00" & x"a18" => DATA <= x"6200"; + when "00" & x"a19" => DATA <= x"005c"; + when "00" & x"a1a" => DATA <= x"b2bc"; + when "00" & x"a1b" => DATA <= x"0000"; + when "00" & x"a1c" => DATA <= x"03ff"; + when "00" & x"a1d" => DATA <= x"6200"; + when "00" & x"a1e" => DATA <= x"0052"; + when "00" & x"a1f" => DATA <= x"2f00"; + when "00" & x"a20" => DATA <= x"2f01"; + when "00" & x"a21" => DATA <= x"103c"; + when "00" & x"a22" => DATA <= x"0017"; + when "00" & x"a23" => DATA <= x"6100"; + when "00" & x"a24" => DATA <= x"f59e"; + when "00" & x"a25" => DATA <= x"103c"; + when "00" & x"a26" => DATA <= x"0011"; + when "00" & x"a27" => DATA <= x"6100"; + when "00" & x"a28" => DATA <= x"f596"; + when "00" & x"a29" => DATA <= x"103c"; + when "00" & x"a2a" => DATA <= x"0006"; + when "00" & x"a2b" => DATA <= x"6100"; + when "00" & x"a2c" => DATA <= x"f58e"; + when "00" & x"a2d" => DATA <= x"201f"; + when "00" & x"a2e" => DATA <= x"e098"; + when "00" & x"a2f" => DATA <= x"6100"; + when "00" & x"a30" => DATA <= x"f586"; + when "00" & x"a31" => DATA <= x"e198"; + when "00" & x"a32" => DATA <= x"6100"; + when "00" & x"a33" => DATA <= x"f580"; + when "00" & x"a34" => DATA <= x"2001"; + when "00" & x"a35" => DATA <= x"e098"; + when "00" & x"a36" => DATA <= x"6100"; + when "00" & x"a37" => DATA <= x"f578"; + when "00" & x"a38" => DATA <= x"e198"; + when "00" & x"a39" => DATA <= x"6100"; + when "00" & x"a3a" => DATA <= x"f572"; + when "00" & x"a3b" => DATA <= x"7000"; + when "00" & x"a3c" => DATA <= x"6100"; + when "00" & x"a3d" => DATA <= x"f56c"; + when "00" & x"a3e" => DATA <= x"6100"; + when "00" & x"a3f" => DATA <= x"f568"; + when "00" & x"a40" => DATA <= x"6100"; + when "00" & x"a41" => DATA <= x"f564"; + when "00" & x"a42" => DATA <= x"221f"; + when "00" & x"a43" => DATA <= x"201f"; + when "00" & x"a44" => DATA <= x"023c"; + when "00" & x"a45" => DATA <= x"00fe"; + when "00" & x"a46" => DATA <= x"4e75"; + when "00" & x"a47" => DATA <= x"203c"; + when "00" & x"a48" => DATA <= x"003f"; + when "00" & x"a49" => DATA <= x"2d64"; + when "00" & x"a4a" => DATA <= x"003c"; + when "00" & x"a4b" => DATA <= x"0002"; + when "00" & x"a4c" => DATA <= x"4e75"; + when "00" & x"a4d" => DATA <= x"6100"; + when "00" & x"a4e" => DATA <= x"f584"; + when "00" & x"a4f" => DATA <= x"0000"; + when "00" & x"a50" => DATA <= x"0020"; + when "00" & x"a51" => DATA <= x"b03c"; + when "00" & x"a52" => DATA <= x"0079"; + when "00" & x"a53" => DATA <= x"4e75"; + when "00" & x"a54" => DATA <= x"2f0e"; + when "00" & x"a55" => DATA <= x"2f04"; + when "00" & x"a56" => DATA <= x"2c41"; + when "00" & x"a57" => DATA <= x"8643"; + when "00" & x"a58" => DATA <= x"6700"; + when "00" & x"a59" => DATA <= x"001e"; + when "00" & x"a5a" => DATA <= x"1816"; + when "00" & x"a5b" => DATA <= x"e144"; + when "00" & x"a5c" => DATA <= x"b940"; + when "00" & x"a5d" => DATA <= x"7807"; + when "00" & x"a5e" => DATA <= x"e340"; + when "00" & x"a5f" => DATA <= x"6400"; + when "00" & x"a60" => DATA <= x"0006"; + when "00" & x"a61" => DATA <= x"0a40"; + when "00" & x"a62" => DATA <= x"1021"; + when "00" & x"a63" => DATA <= x"51cc"; + when "00" & x"a64" => DATA <= x"fff4"; + when "00" & x"a65" => DATA <= x"dcc3"; + when "00" & x"a66" => DATA <= x"b48e"; + when "00" & x"a67" => DATA <= x"65e4"; + when "00" & x"a68" => DATA <= x"281f"; + when "00" & x"a69" => DATA <= x"2c5f"; + when "00" & x"a6a" => DATA <= x"023c"; + when "00" & x"a6b" => DATA <= x"00fd"; + when "00" & x"a6c" => DATA <= x"4e75"; + when "00" & x"a6d" => DATA <= x"1400"; + when "00" & x"a6e" => DATA <= x"708a"; + when "00" & x"a6f" => DATA <= x"7203"; + when "00" & x"a70" => DATA <= x"6100"; + when "00" & x"a71" => DATA <= x"f5f0"; + when "00" & x"a72" => DATA <= x"4e75"; + when "00" & x"a73" => DATA <= x"027c"; + when "00" & x"a74" => DATA <= x"dfff"; + when "00" & x"a75" => DATA <= x"4e75"; + when "00" & x"a76" => DATA <= x"b2bc"; + when "00" & x"a77" => DATA <= x"0000"; + when "00" & x"a78" => DATA <= x"00ff"; + when "00" & x"a79" => DATA <= x"6200"; + when "00" & x"a7a" => DATA <= x"0060"; + when "00" & x"a7b" => DATA <= x"2f08"; + when "00" & x"a7c" => DATA <= x"2040"; + when "00" & x"a7d" => DATA <= x"103c"; + when "00" & x"a7e" => DATA <= x"000a"; + when "00" & x"a7f" => DATA <= x"6100"; + when "00" & x"a80" => DATA <= x"eee2"; + when "00" & x"a81" => DATA <= x"1003"; + when "00" & x"a82" => DATA <= x"6100"; + when "00" & x"a83" => DATA <= x"eedc"; + when "00" & x"a84" => DATA <= x"1002"; + when "00" & x"a85" => DATA <= x"6100"; + when "00" & x"a86" => DATA <= x"eed6"; + when "00" & x"a87" => DATA <= x"1001"; + when "00" & x"a88" => DATA <= x"6100"; + when "00" & x"a89" => DATA <= x"eed0"; + when "00" & x"a8a" => DATA <= x"103c"; + when "00" & x"a8b" => DATA <= x"0007"; + when "00" & x"a8c" => DATA <= x"6100"; + when "00" & x"a8d" => DATA <= x"eec8"; + when "00" & x"a8e" => DATA <= x"103c"; + when "00" & x"a8f" => DATA <= x"0000"; + when "00" & x"a90" => DATA <= x"6100"; + when "00" & x"a91" => DATA <= x"eec0"; + when "00" & x"a92" => DATA <= x"6100"; + when "00" & x"a93" => DATA <= x"eeaa"; + when "00" & x"a94" => DATA <= x"b03c"; + when "00" & x"a95" => DATA <= x"0080"; + when "00" & x"a96" => DATA <= x"6700"; + when "00" & x"a97" => DATA <= x"001c"; + when "00" & x"a98" => DATA <= x"7200"; + when "00" & x"a99" => DATA <= x"6100"; + when "00" & x"a9a" => DATA <= x"ee9c"; + when "00" & x"a9b" => DATA <= x"10c0"; + when "00" & x"a9c" => DATA <= x"5241"; + when "00" & x"a9d" => DATA <= x"b03c"; + when "00" & x"a9e" => DATA <= x"000d"; + when "00" & x"a9f" => DATA <= x"66f2"; + when "00" & x"aa0" => DATA <= x"5341"; + when "00" & x"aa1" => DATA <= x"205f"; + when "00" & x"aa2" => DATA <= x"023c"; + when "00" & x"aa3" => DATA <= x"00fe"; + when "00" & x"aa4" => DATA <= x"4e75"; + when "00" & x"aa5" => DATA <= x"205f"; + when "00" & x"aa6" => DATA <= x"5341"; + when "00" & x"aa7" => DATA <= x"003c"; + when "00" & x"aa8" => DATA <= x"0001"; + when "00" & x"aa9" => DATA <= x"4e75"; + when "00" & x"aaa" => DATA <= x"003c"; + when "00" & x"aab" => DATA <= x"0002"; + when "00" & x"aac" => DATA <= x"4e75"; + when "00" & x"aad" => DATA <= x"2f03"; + when "00" & x"aae" => DATA <= x"2639"; + when "00" & x"aaf" => DATA <= x"003f"; + when "00" & x"ab0" => DATA <= x"3eda"; + when "00" & x"ab1" => DATA <= x"6100"; + when "00" & x"ab2" => DATA <= x"0006"; + when "00" & x"ab3" => DATA <= x"261f"; + when "00" & x"ab4" => DATA <= x"4e75"; + when "00" & x"ab5" => DATA <= x"2f0e"; + when "00" & x"ab6" => DATA <= x"2f0d"; + when "00" & x"ab7" => DATA <= x"2c41"; + when "00" & x"ab8" => DATA <= x"2a43"; + when "00" & x"ab9" => DATA <= x"101e"; + when "00" & x"aba" => DATA <= x"b03c"; + when "00" & x"abb" => DATA <= x"0025"; + when "00" & x"abc" => DATA <= x"6700"; + when "00" & x"abd" => DATA <= x"0010"; + when "00" & x"abe" => DATA <= x"1ac0"; + when "00" & x"abf" => DATA <= x"b03c"; + when "00" & x"ac0" => DATA <= x"0000"; + when "00" & x"ac1" => DATA <= x"66ee"; + when "00" & x"ac2" => DATA <= x"2a5f"; + when "00" & x"ac3" => DATA <= x"2c5f"; + when "00" & x"ac4" => DATA <= x"4e75"; + when "00" & x"ac5" => DATA <= x"101e"; + when "00" & x"ac6" => DATA <= x"b03c"; + when "00" & x"ac7" => DATA <= x"0030"; + when "00" & x"ac8" => DATA <= x"6600"; + when "00" & x"ac9" => DATA <= x"0008"; + when "00" & x"aca" => DATA <= x"1afc"; + when "00" & x"acb" => DATA <= x"0000"; + when "00" & x"acc" => DATA <= x"60d8"; + when "00" & x"acd" => DATA <= x"c03c"; + when "00" & x"ace" => DATA <= x"00df"; + when "00" & x"acf" => DATA <= x"b03c"; + when "00" & x"ad0" => DATA <= x"0025"; + when "00" & x"ad1" => DATA <= x"6600"; + when "00" & x"ad2" => DATA <= x"0008"; + when "00" & x"ad3" => DATA <= x"1afc"; + when "00" & x"ad4" => DATA <= x"0025"; + when "00" & x"ad5" => DATA <= x"60c6"; + when "00" & x"ad6" => DATA <= x"b03c"; + when "00" & x"ad7" => DATA <= x"005a"; + when "00" & x"ad8" => DATA <= x"6600"; + when "00" & x"ad9" => DATA <= x"0006"; + when "00" & x"ada" => DATA <= x"123c"; + when "00" & x"adb" => DATA <= x"005a"; + when "00" & x"adc" => DATA <= x"e158"; + when "00" & x"add" => DATA <= x"101e"; + when "00" & x"ade" => DATA <= x"c07c"; + when "00" & x"adf" => DATA <= x"dfdf"; + when "00" & x"ae0" => DATA <= x"b07c"; + when "00" & x"ae1" => DATA <= x"4353"; + when "00" & x"ae2" => DATA <= x"6700"; + when "00" & x"ae3" => DATA <= x"00aa"; + when "00" & x"ae4" => DATA <= x"b07c"; + when "00" & x"ae5" => DATA <= x"5345"; + when "00" & x"ae6" => DATA <= x"6700"; + when "00" & x"ae7" => DATA <= x"00a2"; + when "00" & x"ae8" => DATA <= x"b07c"; + when "00" & x"ae9" => DATA <= x"4d49"; + when "00" & x"aea" => DATA <= x"6700"; + when "00" & x"aeb" => DATA <= x"009a"; + when "00" & x"aec" => DATA <= x"b07c"; + when "00" & x"aed" => DATA <= x"3132"; + when "00" & x"aee" => DATA <= x"6700"; + when "00" & x"aef" => DATA <= x"0092"; + when "00" & x"af0" => DATA <= x"b07c"; + when "00" & x"af1" => DATA <= x"3234"; + when "00" & x"af2" => DATA <= x"6700"; + when "00" & x"af3" => DATA <= x"008a"; + when "00" & x"af4" => DATA <= x"b07c"; + when "00" & x"af5" => DATA <= x"414d"; + when "00" & x"af6" => DATA <= x"6700"; + when "00" & x"af7" => DATA <= x"0082"; + when "00" & x"af8" => DATA <= x"b07c"; + when "00" & x"af9" => DATA <= x"504d"; + when "00" & x"afa" => DATA <= x"6700"; + when "00" & x"afb" => DATA <= x"007a"; + when "00" & x"afc" => DATA <= x"b07c"; + when "00" & x"afd" => DATA <= x"5745"; + when "00" & x"afe" => DATA <= x"6700"; + when "00" & x"aff" => DATA <= x"0072"; + when "00" & x"b00" => DATA <= x"b07c"; + when "00" & x"b01" => DATA <= x"5733"; + when "00" & x"b02" => DATA <= x"6700"; + when "00" & x"b03" => DATA <= x"006a"; + when "00" & x"b04" => DATA <= x"b07c"; + when "00" & x"b05" => DATA <= x"574e"; + when "00" & x"b06" => DATA <= x"6700"; + when "00" & x"b07" => DATA <= x"0062"; + when "00" & x"b08" => DATA <= x"b07c"; + when "00" & x"b09" => DATA <= x"4459"; + when "00" & x"b0a" => DATA <= x"6700"; + when "00" & x"b0b" => DATA <= x"005a"; + when "00" & x"b0c" => DATA <= x"b07c"; + when "00" & x"b0d" => DATA <= x"5354"; + when "00" & x"b0e" => DATA <= x"6700"; + when "00" & x"b0f" => DATA <= x"0052"; + when "00" & x"b10" => DATA <= x"b07c"; + when "00" & x"b11" => DATA <= x"4d4f"; + when "00" & x"b12" => DATA <= x"6700"; + when "00" & x"b13" => DATA <= x"004a"; + when "00" & x"b14" => DATA <= x"b07c"; + when "00" & x"b15" => DATA <= x"4d33"; + when "00" & x"b16" => DATA <= x"6700"; + when "00" & x"b17" => DATA <= x"0042"; + when "00" & x"b18" => DATA <= x"b07c"; + when "00" & x"b19" => DATA <= x"4d4e"; + when "00" & x"b1a" => DATA <= x"6700"; + when "00" & x"b1b" => DATA <= x"003a"; + when "00" & x"b1c" => DATA <= x"b07c"; + when "00" & x"b1d" => DATA <= x"4345"; + when "00" & x"b1e" => DATA <= x"6700"; + when "00" & x"b1f" => DATA <= x"0032"; + when "00" & x"b20" => DATA <= x"b07c"; + when "00" & x"b21" => DATA <= x"5952"; + when "00" & x"b22" => DATA <= x"6700"; + when "00" & x"b23" => DATA <= x"002a"; + when "00" & x"b24" => DATA <= x"b07c"; + when "00" & x"b25" => DATA <= x"574b"; + when "00" & x"b26" => DATA <= x"6700"; + when "00" & x"b27" => DATA <= x"0022"; + when "00" & x"b28" => DATA <= x"b07c"; + when "00" & x"b29" => DATA <= x"444e"; + when "00" & x"b2a" => DATA <= x"6700"; + when "00" & x"b2b" => DATA <= x"001a"; + when "00" & x"b2c" => DATA <= x"b07c"; + when "00" & x"b2d" => DATA <= x"545a"; + when "00" & x"b2e" => DATA <= x"6700"; + when "00" & x"b2f" => DATA <= x"0012"; + when "00" & x"b30" => DATA <= x"2a5f"; + when "00" & x"b31" => DATA <= x"2c5f"; + when "00" & x"b32" => DATA <= x"203c"; + when "00" & x"b33" => DATA <= x"003f"; + when "00" & x"b34" => DATA <= x"2eac"; + when "00" & x"b35" => DATA <= x"003c"; + when "00" & x"b36" => DATA <= x"0002"; + when "00" & x"b37" => DATA <= x"4e75"; + when "00" & x"b38" => DATA <= x"6000"; + when "00" & x"b39" => DATA <= x"ff00"; + when "00" & x"b3a" => DATA <= x"b4bc"; + when "00" & x"b3b" => DATA <= x"0000"; + when "00" & x"b3c" => DATA <= x"0002"; + when "00" & x"b3d" => DATA <= x"6f00"; + when "00" & x"b3e" => DATA <= x"0484"; + when "00" & x"b3f" => DATA <= x"5582"; + when "00" & x"b40" => DATA <= x"2f0e"; + when "00" & x"b41" => DATA <= x"48e7"; + when "00" & x"b42" => DATA <= x"7000"; + when "00" & x"b43" => DATA <= x"343c"; + when "00" & x"b44" => DATA <= x"0000"; + when "00" & x"b45" => DATA <= x"e898"; + when "00" & x"b46" => DATA <= x"6000"; + when "00" & x"b47" => DATA <= x"0072"; + when "00" & x"b48" => DATA <= x"b4bc"; + when "00" & x"b49" => DATA <= x"0000"; + when "00" & x"b4a" => DATA <= x"0003"; + when "00" & x"b4b" => DATA <= x"6f00"; + when "00" & x"b4c" => DATA <= x"0468"; + when "00" & x"b4d" => DATA <= x"5782"; + when "00" & x"b4e" => DATA <= x"2f0e"; + when "00" & x"b4f" => DATA <= x"48e7"; + when "00" & x"b50" => DATA <= x"7000"; + when "00" & x"b51" => DATA <= x"343c"; + when "00" & x"b52" => DATA <= x"0001"; + when "00" & x"b53" => DATA <= x"e098"; + when "00" & x"b54" => DATA <= x"6000"; + when "00" & x"b55" => DATA <= x"0056"; + when "00" & x"b56" => DATA <= x"b4bc"; + when "00" & x"b57" => DATA <= x"0000"; + when "00" & x"b58" => DATA <= x"0005"; + when "00" & x"b59" => DATA <= x"6f00"; + when "00" & x"b5a" => DATA <= x"044c"; + when "00" & x"b5b" => DATA <= x"5b82"; + when "00" & x"b5c" => DATA <= x"2f0e"; + when "00" & x"b5d" => DATA <= x"48e7"; + when "00" & x"b5e" => DATA <= x"7000"; + when "00" & x"b5f" => DATA <= x"343c"; + when "00" & x"b60" => DATA <= x"0003"; + when "00" & x"b61" => DATA <= x"e198"; + when "00" & x"b62" => DATA <= x"e198"; + when "00" & x"b63" => DATA <= x"6000"; + when "00" & x"b64" => DATA <= x"0038"; + when "00" & x"b65" => DATA <= x"b4bc"; + when "00" & x"b66" => DATA <= x"0000"; + when "00" & x"b67" => DATA <= x"0007"; + when "00" & x"b68" => DATA <= x"6f00"; + when "00" & x"b69" => DATA <= x"042e"; + when "00" & x"b6a" => DATA <= x"5f82"; + when "00" & x"b6b" => DATA <= x"2f0e"; + when "00" & x"b6c" => DATA <= x"48e7"; + when "00" & x"b6d" => DATA <= x"7000"; + when "00" & x"b6e" => DATA <= x"343c"; + when "00" & x"b6f" => DATA <= x"0005"; + when "00" & x"b70" => DATA <= x"e098"; + when "00" & x"b71" => DATA <= x"6000"; + when "00" & x"b72" => DATA <= x"001c"; + when "00" & x"b73" => DATA <= x"b4bc"; + when "00" & x"b74" => DATA <= x"0000"; + when "00" & x"b75" => DATA <= x"0009"; + when "00" & x"b76" => DATA <= x"6f00"; + when "00" & x"b77" => DATA <= x"0412"; + when "00" & x"b78" => DATA <= x"0482"; + when "00" & x"b79" => DATA <= x"0000"; + when "00" & x"b7a" => DATA <= x"0009"; + when "00" & x"b7b" => DATA <= x"2f0e"; + when "00" & x"b7c" => DATA <= x"48e7"; + when "00" & x"b7d" => DATA <= x"7000"; + when "00" & x"b7e" => DATA <= x"343c"; + when "00" & x"b7f" => DATA <= x"0007"; + when "00" & x"b80" => DATA <= x"2c41"; + when "00" & x"b81" => DATA <= x"2200"; + when "00" & x"b82" => DATA <= x"e999"; + when "00" & x"b83" => DATA <= x"1001"; + when "00" & x"b84" => DATA <= x"c03c"; + when "00" & x"b85" => DATA <= x"000f"; + when "00" & x"b86" => DATA <= x"163c"; + when "00" & x"b87" => DATA <= x"0009"; + when "00" & x"b88" => DATA <= x"9600"; + when "00" & x"b89" => DATA <= x"0600"; + when "00" & x"b8a" => DATA <= x"0030"; + when "00" & x"b8b" => DATA <= x"0c00"; + when "00" & x"b8c" => DATA <= x"003a"; + when "00" & x"b8d" => DATA <= x"6500"; + when "00" & x"b8e" => DATA <= x"0004"; + when "00" & x"b8f" => DATA <= x"5e00"; + when "00" & x"b90" => DATA <= x"1cc0"; + when "00" & x"b91" => DATA <= x"51ca"; + when "00" & x"b92" => DATA <= x"ffe0"; + when "00" & x"b93" => DATA <= x"1cbc"; + when "00" & x"b94" => DATA <= x"0000"; + when "00" & x"b95" => DATA <= x"4cdf"; + when "00" & x"b96" => DATA <= x"000e"; + when "00" & x"b97" => DATA <= x"2001"; + when "00" & x"b98" => DATA <= x"220e"; + when "00" & x"b99" => DATA <= x"2c5f"; + when "00" & x"b9a" => DATA <= x"023c"; + when "00" & x"b9b" => DATA <= x"00fd"; + when "00" & x"b9c" => DATA <= x"4e75"; + when "00" & x"b9d" => DATA <= x"003c"; + when "00" & x"b9e" => DATA <= x"0002"; + when "00" & x"b9f" => DATA <= x"4e75"; + when "00" & x"ba0" => DATA <= x"b4bc"; + when "00" & x"ba1" => DATA <= x"0000"; + when "00" & x"ba2" => DATA <= x"0004"; + when "00" & x"ba3" => DATA <= x"6500"; + when "00" & x"ba4" => DATA <= x"03b8"; + when "00" & x"ba5" => DATA <= x"b0bc"; + when "00" & x"ba6" => DATA <= x"0000"; + when "00" & x"ba7" => DATA <= x"0100"; + when "00" & x"ba8" => DATA <= x"6400"; + when "00" & x"ba9" => DATA <= x"01b2"; + when "00" & x"baa" => DATA <= x"7c03"; + when "00" & x"bab" => DATA <= x"6000"; + when "00" & x"bac" => DATA <= x"0042"; + when "00" & x"bad" => DATA <= x"b4bc"; + when "00" & x"bae" => DATA <= x"0000"; + when "00" & x"baf" => DATA <= x"0006"; + when "00" & x"bb0" => DATA <= x"6500"; + when "00" & x"bb1" => DATA <= x"039e"; + when "00" & x"bb2" => DATA <= x"b0bc"; + when "00" & x"bb3" => DATA <= x"0001"; + when "00" & x"bb4" => DATA <= x"0000"; + when "00" & x"bb5" => DATA <= x"6400"; + when "00" & x"bb6" => DATA <= x"0198"; + when "00" & x"bb7" => DATA <= x"7c05"; + when "00" & x"bb8" => DATA <= x"6000"; + when "00" & x"bb9" => DATA <= x"0028"; + when "00" & x"bba" => DATA <= x"b4bc"; + when "00" & x"bbb" => DATA <= x"0000"; + when "00" & x"bbc" => DATA <= x"0009"; + when "00" & x"bbd" => DATA <= x"6500"; + when "00" & x"bbe" => DATA <= x"0384"; + when "00" & x"bbf" => DATA <= x"b0bc"; + when "00" & x"bc0" => DATA <= x"0100"; + when "00" & x"bc1" => DATA <= x"0000"; + when "00" & x"bc2" => DATA <= x"6400"; + when "00" & x"bc3" => DATA <= x"017e"; + when "00" & x"bc4" => DATA <= x"7c08"; + when "00" & x"bc5" => DATA <= x"6000"; + when "00" & x"bc6" => DATA <= x"000e"; + when "00" & x"bc7" => DATA <= x"b4bc"; + when "00" & x"bc8" => DATA <= x"0000"; + when "00" & x"bc9" => DATA <= x"000b"; + when "00" & x"bca" => DATA <= x"6500"; + when "00" & x"bcb" => DATA <= x"036a"; + when "00" & x"bcc" => DATA <= x"7c0a"; + when "00" & x"bcd" => DATA <= x"c38d"; + when "00" & x"bce" => DATA <= x"48e7"; + when "00" & x"bcf" => DATA <= x"ff00"; + when "00" & x"bd0" => DATA <= x"2e00"; + when "00" & x"bd1" => DATA <= x"6700"; + when "00" & x"bd2" => DATA <= x"0058"; + when "00" & x"bd3" => DATA <= x"6000"; + when "00" & x"bd4" => DATA <= x"0002"; + when "00" & x"bd5" => DATA <= x"4244"; + when "00" & x"bd6" => DATA <= x"7401"; + when "00" & x"bd7" => DATA <= x"2206"; + when "00" & x"bd8" => DATA <= x"5381"; + when "00" & x"bd9" => DATA <= x"6700"; + when "00" & x"bda" => DATA <= x"001c"; + when "00" & x"bdb" => DATA <= x"3602"; + when "00" & x"bdc" => DATA <= x"c6fc"; + when "00" & x"bdd" => DATA <= x"000a"; + when "00" & x"bde" => DATA <= x"4842"; + when "00" & x"bdf" => DATA <= x"c4fc"; + when "00" & x"be0" => DATA <= x"000a"; + when "00" & x"be1" => DATA <= x"4843"; + when "00" & x"be2" => DATA <= x"d443"; + when "00" & x"be3" => DATA <= x"4842"; + when "00" & x"be4" => DATA <= x"4843"; + when "00" & x"be5" => DATA <= x"3403"; + when "00" & x"be6" => DATA <= x"5381"; + when "00" & x"be7" => DATA <= x"66e6"; + when "00" & x"be8" => DATA <= x"4280"; + when "00" & x"be9" => DATA <= x"be82"; + when "00" & x"bea" => DATA <= x"6500"; + when "00" & x"beb" => DATA <= x"0008"; + when "00" & x"bec" => DATA <= x"5280"; + when "00" & x"bed" => DATA <= x"9e82"; + when "00" & x"bee" => DATA <= x"60f4"; + when "00" & x"bef" => DATA <= x"4a00"; + when "00" & x"bf0" => DATA <= x"6600"; + when "00" & x"bf1" => DATA <= x"0008"; + when "00" & x"bf2" => DATA <= x"4a44"; + when "00" & x"bf3" => DATA <= x"6700"; + when "00" & x"bf4" => DATA <= x"000a"; + when "00" & x"bf5" => DATA <= x"0600"; + when "00" & x"bf6" => DATA <= x"0030"; + when "00" & x"bf7" => DATA <= x"1ac0"; + when "00" & x"bf8" => DATA <= x"1800"; + when "00" & x"bf9" => DATA <= x"5386"; + when "00" & x"bfa" => DATA <= x"66b6"; + when "00" & x"bfb" => DATA <= x"4a44"; + when "00" & x"bfc" => DATA <= x"6600"; + when "00" & x"bfd" => DATA <= x"0006"; + when "00" & x"bfe" => DATA <= x"1afc"; + when "00" & x"bff" => DATA <= x"0030"; + when "00" & x"c00" => DATA <= x"1abc"; + when "00" & x"c01" => DATA <= x"0000"; + when "00" & x"c02" => DATA <= x"4cdf"; + when "00" & x"c03" => DATA <= x"00ff"; + when "00" & x"c04" => DATA <= x"c38d"; + when "00" & x"c05" => DATA <= x"023c"; + when "00" & x"c06" => DATA <= x"00fd"; + when "00" & x"c07" => DATA <= x"4e75"; + when "00" & x"c08" => DATA <= x"b4bc"; + when "00" & x"c09" => DATA <= x"0000"; + when "00" & x"c0a" => DATA <= x"0005"; + when "00" & x"c0b" => DATA <= x"6500"; + when "00" & x"c0c" => DATA <= x"02e8"; + when "00" & x"c0d" => DATA <= x"b0bc"; + when "00" & x"c0e" => DATA <= x"0000"; + when "00" & x"c0f" => DATA <= x"0100"; + when "00" & x"c10" => DATA <= x"6400"; + when "00" & x"c11" => DATA <= x"00e2"; + when "00" & x"c12" => DATA <= x"0800"; + when "00" & x"c13" => DATA <= x"0007"; + when "00" & x"c14" => DATA <= x"6700"; + when "00" & x"c15" => DATA <= x"0008"; + when "00" & x"c16" => DATA <= x"0080"; + when "00" & x"c17" => DATA <= x"ffff"; + when "00" & x"c18" => DATA <= x"ff00"; + when "00" & x"c19" => DATA <= x"7c03"; + when "00" & x"c1a" => DATA <= x"6000"; + when "00" & x"c1b" => DATA <= x"005e"; + when "00" & x"c1c" => DATA <= x"b4bc"; + when "00" & x"c1d" => DATA <= x"0000"; + when "00" & x"c1e" => DATA <= x"0007"; + when "00" & x"c1f" => DATA <= x"6500"; + when "00" & x"c20" => DATA <= x"02c0"; + when "00" & x"c21" => DATA <= x"b0bc"; + when "00" & x"c22" => DATA <= x"0001"; + when "00" & x"c23" => DATA <= x"0000"; + when "00" & x"c24" => DATA <= x"6400"; + when "00" & x"c25" => DATA <= x"00ba"; + when "00" & x"c26" => DATA <= x"0800"; + when "00" & x"c27" => DATA <= x"000f"; + when "00" & x"c28" => DATA <= x"6700"; + when "00" & x"c29" => DATA <= x"0008"; + when "00" & x"c2a" => DATA <= x"0080"; + when "00" & x"c2b" => DATA <= x"ffff"; + when "00" & x"c2c" => DATA <= x"0000"; + when "00" & x"c2d" => DATA <= x"7c05"; + when "00" & x"c2e" => DATA <= x"6000"; + when "00" & x"c2f" => DATA <= x"0036"; + when "00" & x"c30" => DATA <= x"b4bc"; + when "00" & x"c31" => DATA <= x"0000"; + when "00" & x"c32" => DATA <= x"000b"; + when "00" & x"c33" => DATA <= x"6500"; + when "00" & x"c34" => DATA <= x"0298"; + when "00" & x"c35" => DATA <= x"b0bc"; + when "00" & x"c36" => DATA <= x"0100"; + when "00" & x"c37" => DATA <= x"0000"; + when "00" & x"c38" => DATA <= x"6400"; + when "00" & x"c39" => DATA <= x"0092"; + when "00" & x"c3a" => DATA <= x"0800"; + when "00" & x"c3b" => DATA <= x"0017"; + when "00" & x"c3c" => DATA <= x"6700"; + when "00" & x"c3d" => DATA <= x"0008"; + when "00" & x"c3e" => DATA <= x"0080"; + when "00" & x"c3f" => DATA <= x"ff00"; + when "00" & x"c40" => DATA <= x"0000"; + when "00" & x"c41" => DATA <= x"7c08"; + when "00" & x"c42" => DATA <= x"6000"; + when "00" & x"c43" => DATA <= x"000e"; + when "00" & x"c44" => DATA <= x"b4bc"; + when "00" & x"c45" => DATA <= x"0000"; + when "00" & x"c46" => DATA <= x"000d"; + when "00" & x"c47" => DATA <= x"6500"; + when "00" & x"c48" => DATA <= x"0270"; + when "00" & x"c49" => DATA <= x"7c0a"; + when "00" & x"c4a" => DATA <= x"c38d"; + when "00" & x"c4b" => DATA <= x"48e7"; + when "00" & x"c4c" => DATA <= x"ff00"; + when "00" & x"c4d" => DATA <= x"2e00"; + when "00" & x"c4e" => DATA <= x"6a08"; + when "00" & x"c4f" => DATA <= x"4487"; + when "00" & x"c50" => DATA <= x"6b4e"; + when "00" & x"c51" => DATA <= x"1afc"; + when "00" & x"c52" => DATA <= x"002d"; + when "00" & x"c53" => DATA <= x"4244"; + when "00" & x"c54" => DATA <= x"7a01"; + when "00" & x"c55" => DATA <= x"2206"; + when "00" & x"c56" => DATA <= x"5381"; + when "00" & x"c57" => DATA <= x"671a"; + when "00" & x"c58" => DATA <= x"3605"; + when "00" & x"c59" => DATA <= x"c6fc"; + when "00" & x"c5a" => DATA <= x"000a"; + when "00" & x"c5b" => DATA <= x"4845"; + when "00" & x"c5c" => DATA <= x"cafc"; + when "00" & x"c5d" => DATA <= x"000a"; + when "00" & x"c5e" => DATA <= x"4843"; + when "00" & x"c5f" => DATA <= x"da43"; + when "00" & x"c60" => DATA <= x"4845"; + when "00" & x"c61" => DATA <= x"4843"; + when "00" & x"c62" => DATA <= x"3a03"; + when "00" & x"c63" => DATA <= x"5381"; + when "00" & x"c64" => DATA <= x"66e6"; + when "00" & x"c65" => DATA <= x"4280"; + when "00" & x"c66" => DATA <= x"be85"; + when "00" & x"c67" => DATA <= x"6d06"; + when "00" & x"c68" => DATA <= x"5280"; + when "00" & x"c69" => DATA <= x"9e85"; + when "00" & x"c6a" => DATA <= x"60f6"; + when "00" & x"c6b" => DATA <= x"4a00"; + when "00" & x"c6c" => DATA <= x"6604"; + when "00" & x"c6d" => DATA <= x"4a44"; + when "00" & x"c6e" => DATA <= x"6708"; + when "00" & x"c6f" => DATA <= x"0600"; + when "00" & x"c70" => DATA <= x"0030"; + when "00" & x"c71" => DATA <= x"1ac0"; + when "00" & x"c72" => DATA <= x"1800"; + when "00" & x"c73" => DATA <= x"5386"; + when "00" & x"c74" => DATA <= x"66be"; + when "00" & x"c75" => DATA <= x"4a44"; + when "00" & x"c76" => DATA <= x"6600"; + when "00" & x"c77" => DATA <= x"0006"; + when "00" & x"c78" => DATA <= x"1afc"; + when "00" & x"c79" => DATA <= x"0030"; + when "00" & x"c7a" => DATA <= x"1abc"; + when "00" & x"c7b" => DATA <= x"0000"; + when "00" & x"c7c" => DATA <= x"4cdf"; + when "00" & x"c7d" => DATA <= x"00ff"; + when "00" & x"c7e" => DATA <= x"c38d"; + when "00" & x"c7f" => DATA <= x"023c"; + when "00" & x"c80" => DATA <= x"00fd"; + when "00" & x"c81" => DATA <= x"4e75"; + when "00" & x"c82" => DATA <= x"003c"; + when "00" & x"c83" => DATA <= x"0002"; + when "00" & x"c84" => DATA <= x"4e75"; + when "00" & x"c85" => DATA <= x"b4bc"; + when "00" & x"c86" => DATA <= x"0000"; + when "00" & x"c87" => DATA <= x"0009"; + when "00" & x"c88" => DATA <= x"6f00"; + when "00" & x"c89" => DATA <= x"01ee"; + when "00" & x"c8a" => DATA <= x"0482"; + when "00" & x"c8b" => DATA <= x"0000"; + when "00" & x"c8c" => DATA <= x"0009"; + when "00" & x"c8d" => DATA <= x"2f0e"; + when "00" & x"c8e" => DATA <= x"48e7"; + when "00" & x"c8f" => DATA <= x"7000"; + when "00" & x"c90" => DATA <= x"7407"; + when "00" & x"c91" => DATA <= x"e098"; + when "00" & x"c92" => DATA <= x"6000"; + when "00" & x"c93" => DATA <= x"0058"; + when "00" & x"c94" => DATA <= x"b4bc"; + when "00" & x"c95" => DATA <= x"0000"; + when "00" & x"c96" => DATA <= x"0011"; + when "00" & x"c97" => DATA <= x"6f00"; + when "00" & x"c98" => DATA <= x"01d0"; + when "00" & x"c99" => DATA <= x"0482"; + when "00" & x"c9a" => DATA <= x"0000"; + when "00" & x"c9b" => DATA <= x"0011"; + when "00" & x"c9c" => DATA <= x"2f0e"; + when "00" & x"c9d" => DATA <= x"48e7"; + when "00" & x"c9e" => DATA <= x"7000"; + when "00" & x"c9f" => DATA <= x"740f"; + when "00" & x"ca0" => DATA <= x"e198"; + when "00" & x"ca1" => DATA <= x"e198"; + when "00" & x"ca2" => DATA <= x"6000"; + when "00" & x"ca3" => DATA <= x"0038"; + when "00" & x"ca4" => DATA <= x"b4bc"; + when "00" & x"ca5" => DATA <= x"0000"; + when "00" & x"ca6" => DATA <= x"0019"; + when "00" & x"ca7" => DATA <= x"6f00"; + when "00" & x"ca8" => DATA <= x"01b0"; + when "00" & x"ca9" => DATA <= x"0482"; + when "00" & x"caa" => DATA <= x"0000"; + when "00" & x"cab" => DATA <= x"0019"; + when "00" & x"cac" => DATA <= x"2f0e"; + when "00" & x"cad" => DATA <= x"48e7"; + when "00" & x"cae" => DATA <= x"7000"; + when "00" & x"caf" => DATA <= x"7417"; + when "00" & x"cb0" => DATA <= x"e098"; + when "00" & x"cb1" => DATA <= x"6000"; + when "00" & x"cb2" => DATA <= x"001a"; + when "00" & x"cb3" => DATA <= x"b4bc"; + when "00" & x"cb4" => DATA <= x"0000"; + when "00" & x"cb5" => DATA <= x"0021"; + when "00" & x"cb6" => DATA <= x"6f00"; + when "00" & x"cb7" => DATA <= x"0192"; + when "00" & x"cb8" => DATA <= x"0482"; + when "00" & x"cb9" => DATA <= x"0000"; + when "00" & x"cba" => DATA <= x"0021"; + when "00" & x"cbb" => DATA <= x"2f0e"; + when "00" & x"cbc" => DATA <= x"48e7"; + when "00" & x"cbd" => DATA <= x"7000"; + when "00" & x"cbe" => DATA <= x"741f"; + when "00" & x"cbf" => DATA <= x"2c41"; + when "00" & x"cc0" => DATA <= x"7600"; + when "00" & x"cc1" => DATA <= x"7230"; + when "00" & x"cc2" => DATA <= x"e380"; + when "00" & x"cc3" => DATA <= x"c303"; + when "00" & x"cc4" => DATA <= x"1cc1"; + when "00" & x"cc5" => DATA <= x"51ca"; + when "00" & x"cc6" => DATA <= x"fff6"; + when "00" & x"cc7" => DATA <= x"1cbc"; + when "00" & x"cc8" => DATA <= x"0000"; + when "00" & x"cc9" => DATA <= x"4cdf"; + when "00" & x"cca" => DATA <= x"000e"; + when "00" & x"ccb" => DATA <= x"2001"; + when "00" & x"ccc" => DATA <= x"220e"; + when "00" & x"ccd" => DATA <= x"2c5f"; + when "00" & x"cce" => DATA <= x"023c"; + when "00" & x"ccf" => DATA <= x"00fd"; + when "00" & x"cd0" => DATA <= x"4e75"; + when "00" & x"cd1" => DATA <= x"6100"; + when "00" & x"cd2" => DATA <= x"fe6c"; + when "00" & x"cd3" => DATA <= x"2f07"; + when "00" & x"cd4" => DATA <= x"7e05"; + when "00" & x"cd5" => DATA <= x"6100"; + when "00" & x"cd6" => DATA <= x"0122"; + when "00" & x"cd7" => DATA <= x"2e1f"; + when "00" & x"cd8" => DATA <= x"4e75"; + when "00" & x"cd9" => DATA <= x"6100"; + when "00" & x"cda" => DATA <= x"fe84"; + when "00" & x"cdb" => DATA <= x"2f07"; + when "00" & x"cdc" => DATA <= x"7e07"; + when "00" & x"cdd" => DATA <= x"6100"; + when "00" & x"cde" => DATA <= x"0112"; + when "00" & x"cdf" => DATA <= x"2e1f"; + when "00" & x"ce0" => DATA <= x"4e75"; + when "00" & x"ce1" => DATA <= x"6100"; + when "00" & x"ce2" => DATA <= x"fe9c"; + when "00" & x"ce3" => DATA <= x"2f07"; + when "00" & x"ce4" => DATA <= x"7e09"; + when "00" & x"ce5" => DATA <= x"6100"; + when "00" & x"ce6" => DATA <= x"0102"; + when "00" & x"ce7" => DATA <= x"2e1f"; + when "00" & x"ce8" => DATA <= x"4e75"; + when "00" & x"ce9" => DATA <= x"6100"; + when "00" & x"cea" => DATA <= x"feb4"; + when "00" & x"ceb" => DATA <= x"2f07"; + when "00" & x"cec" => DATA <= x"7e0c"; + when "00" & x"ced" => DATA <= x"6100"; + when "00" & x"cee" => DATA <= x"00f2"; + when "00" & x"cef" => DATA <= x"2e1f"; + when "00" & x"cf0" => DATA <= x"4e75"; + when "00" & x"cf1" => DATA <= x"2f01"; + when "00" & x"cf2" => DATA <= x"2f06"; + when "00" & x"cf3" => DATA <= x"2f07"; + when "00" & x"cf4" => DATA <= x"2f0e"; + when "00" & x"cf5" => DATA <= x"2c40"; + when "00" & x"cf6" => DATA <= x"2c1e"; + when "00" & x"cf7" => DATA <= x"2e1e"; + when "00" & x"cf8" => DATA <= x"0c87"; + when "00" & x"cf9" => DATA <= x"0000"; + when "00" & x"cfa" => DATA <= x"0100"; + when "00" & x"cfb" => DATA <= x"6400"; + when "00" & x"cfc" => DATA <= x"003a"; + when "00" & x"cfd" => DATA <= x"0c86"; + when "00" & x"cfe" => DATA <= x"0000"; + when "00" & x"cff" => DATA <= x"0100"; + when "00" & x"d00" => DATA <= x"6400"; + when "00" & x"d01" => DATA <= x"003e"; + when "00" & x"d02" => DATA <= x"4a47"; + when "00" & x"d03" => DATA <= x"6700"; + when "00" & x"d04" => DATA <= x"0016"; + when "00" & x"d05" => DATA <= x"1007"; + when "00" & x"d06" => DATA <= x"6100"; + when "00" & x"d07" => DATA <= x"fd32"; + when "00" & x"d08" => DATA <= x"4a41"; + when "00" & x"d09" => DATA <= x"6700"; + when "00" & x"d0a" => DATA <= x"00ec"; + when "00" & x"d0b" => DATA <= x"2c41"; + when "00" & x"d0c" => DATA <= x"1cfc"; + when "00" & x"d0d" => DATA <= x"002e"; + when "00" & x"d0e" => DATA <= x"220e"; + when "00" & x"d0f" => DATA <= x"1006"; + when "00" & x"d10" => DATA <= x"6100"; + when "00" & x"d11" => DATA <= x"fd1e"; + when "00" & x"d12" => DATA <= x"2c5f"; + when "00" & x"d13" => DATA <= x"2e1f"; + when "00" & x"d14" => DATA <= x"2c1f"; + when "00" & x"d15" => DATA <= x"201f"; + when "00" & x"d16" => DATA <= x"023c"; + when "00" & x"d17" => DATA <= x"00fd"; + when "00" & x"d18" => DATA <= x"4e75"; + when "00" & x"d19" => DATA <= x"2f7c"; + when "00" & x"d1a" => DATA <= x"003f"; + when "00" & x"d1b" => DATA <= x"2edc"; + when "00" & x"d1c" => DATA <= x"000c"; + when "00" & x"d1d" => DATA <= x"003c"; + when "00" & x"d1e" => DATA <= x"0002"; + when "00" & x"d1f" => DATA <= x"60e4"; + when "00" & x"d20" => DATA <= x"2f7c"; + when "00" & x"d21" => DATA <= x"003f"; + when "00" & x"d22" => DATA <= x"2ec4"; + when "00" & x"d23" => DATA <= x"000c"; + when "00" & x"d24" => DATA <= x"003c"; + when "00" & x"d25" => DATA <= x"0002"; + when "00" & x"d26" => DATA <= x"60d6"; + when "00" & x"d27" => DATA <= x"2f07"; + when "00" & x"d28" => DATA <= x"2f01"; + when "00" & x"d29" => DATA <= x"2200"; + when "00" & x"d2a" => DATA <= x"0281"; + when "00" & x"d2b" => DATA <= x"c000"; + when "00" & x"d2c" => DATA <= x"0000"; + when "00" & x"d2d" => DATA <= x"6700"; + when "00" & x"d2e" => DATA <= x"0014"; + when "00" & x"d2f" => DATA <= x"e089"; + when "00" & x"d30" => DATA <= x"e089"; + when "00" & x"d31" => DATA <= x"e089"; + when "00" & x"d32" => DATA <= x"ec89"; + when "00" & x"d33" => DATA <= x"2001"; + when "00" & x"d34" => DATA <= x"1e38"; + when "00" & x"d35" => DATA <= x"004d"; + when "00" & x"d36" => DATA <= x"6000"; + when "00" & x"d37" => DATA <= x"0034"; + when "00" & x"d38" => DATA <= x"2200"; + when "00" & x"d39" => DATA <= x"0281"; + when "00" & x"d3a" => DATA <= x"fff0"; + when "00" & x"d3b" => DATA <= x"0000"; + when "00" & x"d3c" => DATA <= x"6700"; + when "00" & x"d3d" => DATA <= x"0012"; + when "00" & x"d3e" => DATA <= x"e089"; + when "00" & x"d3f" => DATA <= x"e089"; + when "00" & x"d40" => DATA <= x"e889"; + when "00" & x"d41" => DATA <= x"2001"; + when "00" & x"d42" => DATA <= x"1e38"; + when "00" & x"d43" => DATA <= x"004b"; + when "00" & x"d44" => DATA <= x"6000"; + when "00" & x"d45" => DATA <= x"0018"; + when "00" & x"d46" => DATA <= x"2200"; + when "00" & x"d47" => DATA <= x"0281"; + when "00" & x"d48" => DATA <= x"ffff"; + when "00" & x"d49" => DATA <= x"fc00"; + when "00" & x"d4a" => DATA <= x"6700"; + when "00" & x"d4b" => DATA <= x"000c"; + when "00" & x"d4c" => DATA <= x"e089"; + when "00" & x"d4d" => DATA <= x"e489"; + when "00" & x"d4e" => DATA <= x"2001"; + when "00" & x"d4f" => DATA <= x"1e3c"; + when "00" & x"d50" => DATA <= x"0000"; + when "00" & x"d51" => DATA <= x"221f"; + when "00" & x"d52" => DATA <= x"6100"; + when "00" & x"d53" => DATA <= x"fce8"; + when "00" & x"d54" => DATA <= x"2c41"; + when "00" & x"d55" => DATA <= x"1cfc"; + when "00" & x"d56" => DATA <= x"0020"; + when "00" & x"d57" => DATA <= x"1cc7"; + when "00" & x"d58" => DATA <= x"1cfc"; + when "00" & x"d59" => DATA <= x"0062"; + when "00" & x"d5a" => DATA <= x"1cfc"; + when "00" & x"d5b" => DATA <= x"0079"; + when "00" & x"d5c" => DATA <= x"1cfc"; + when "00" & x"d5d" => DATA <= x"0074"; + when "00" & x"d5e" => DATA <= x"1cfc"; + when "00" & x"d5f" => DATA <= x"0065"; + when "00" & x"d60" => DATA <= x"1cfc"; + when "00" & x"d61" => DATA <= x"0073"; + when "00" & x"d62" => DATA <= x"1cfc"; + when "00" & x"d63" => DATA <= x"0000"; + when "00" & x"d64" => DATA <= x"023c"; + when "00" & x"d65" => DATA <= x"00fd"; + when "00" & x"d66" => DATA <= x"4e75"; + when "00" & x"d67" => DATA <= x"2f0e"; + when "00" & x"d68" => DATA <= x"2f00"; + when "00" & x"d69" => DATA <= x"2f01"; + when "00" & x"d6a" => DATA <= x"2c40"; + when "00" & x"d6b" => DATA <= x"9280"; + when "00" & x"d6c" => DATA <= x"1dbc"; + when "00" & x"d6d" => DATA <= x"0000"; + when "00" & x"d6e" => DATA <= x"7000"; + when "00" & x"d6f" => DATA <= x"5387"; + when "00" & x"d70" => DATA <= x"1db6"; + when "00" & x"d71" => DATA <= x"1000"; + when "00" & x"d72" => DATA <= x"7000"; + when "00" & x"d73" => DATA <= x"5387"; + when "00" & x"d74" => DATA <= x"51c9"; + when "00" & x"d75" => DATA <= x"fff6"; + when "00" & x"d76" => DATA <= x"9487"; + when "00" & x"d77" => DATA <= x"1dbc"; + when "00" & x"d78" => DATA <= x"0020"; + when "00" & x"d79" => DATA <= x"7000"; + when "00" & x"d7a" => DATA <= x"51cf"; + when "00" & x"d7b" => DATA <= x"fff8"; + when "00" & x"d7c" => DATA <= x"201f"; + when "00" & x"d7d" => DATA <= x"221f"; + when "00" & x"d7e" => DATA <= x"2c5f"; + when "00" & x"d7f" => DATA <= x"4e75"; + when "00" & x"d80" => DATA <= x"203c"; + when "00" & x"d81" => DATA <= x"003f"; + when "00" & x"d82" => DATA <= x"2e80"; + when "00" & x"d83" => DATA <= x"003c"; + when "00" & x"d84" => DATA <= x"0002"; + when "00" & x"d85" => DATA <= x"4e75"; + when "00" & x"d86" => DATA <= x"2f03"; + when "00" & x"d87" => DATA <= x"2f00"; + when "00" & x"d88" => DATA <= x"0280"; + when "00" & x"d89" => DATA <= x"0000"; + when "00" & x"d8a" => DATA <= x"0001"; + when "00" & x"d8b" => DATA <= x"6600"; + when "00" & x"d8c" => DATA <= x"002c"; + when "00" & x"d8d" => DATA <= x"201f"; + when "00" & x"d8e" => DATA <= x"c188"; + when "00" & x"d8f" => DATA <= x"c389"; + when "00" & x"d90" => DATA <= x"2c7c"; + when "00" & x"d91" => DATA <= x"003f"; + when "00" & x"d92" => DATA <= x"39e0"; + when "00" & x"d93" => DATA <= x"3610"; + when "00" & x"d94" => DATA <= x"c66e"; + when "00" & x"d95" => DATA <= x"0002"; + when "00" & x"d96" => DATA <= x"b656"; + when "00" & x"d97" => DATA <= x"6700"; + when "00" & x"d98" => DATA <= x"000a"; + when "00" & x"d99" => DATA <= x"ddfc"; + when "00" & x"d9a" => DATA <= x"0000"; + when "00" & x"d9b" => DATA <= x"000e"; + when "00" & x"d9c" => DATA <= x"60ec"; + when "00" & x"d9d" => DATA <= x"588e"; + when "00" & x"d9e" => DATA <= x"12de"; + when "00" & x"d9f" => DATA <= x"66fc"; + when "00" & x"da0" => DATA <= x"261f"; + when "00" & x"da1" => DATA <= x"4e75"; + when "00" & x"da2" => DATA <= x"261f"; + when "00" & x"da3" => DATA <= x"203c"; + when "00" & x"da4" => DATA <= x"003f"; + when "00" & x"da5" => DATA <= x"2f0c"; + when "00" & x"da6" => DATA <= x"003c"; + when "00" & x"da7" => DATA <= x"0002"; + when "00" & x"da8" => DATA <= x"4e75"; + when "00" & x"da9" => DATA <= x"0c16"; + when "00" & x"daa" => DATA <= x"000d"; + when "00" & x"dab" => DATA <= x"6700"; + when "00" & x"dac" => DATA <= x"004c"; + when "00" & x"dad" => DATA <= x"2f0e"; + when "00" & x"dae" => DATA <= x"7010"; + when "00" & x"daf" => DATA <= x"220e"; + when "00" & x"db0" => DATA <= x"6100"; + when "00" & x"db1" => DATA <= x"f46a"; + when "00" & x"db2" => DATA <= x"6800"; + when "00" & x"db3" => DATA <= x"0010"; + when "00" & x"db4" => DATA <= x"21fc"; + when "00" & x"db5" => DATA <= x"0000"; + when "00" & x"db6" => DATA <= x"0000"; + when "00" & x"db7" => DATA <= x"0700"; + when "00" & x"db8" => DATA <= x"2c5f"; + when "00" & x"db9" => DATA <= x"6000"; + when "00" & x"dba" => DATA <= x"000a"; + when "00" & x"dbb" => DATA <= x"2c41"; + when "00" & x"dbc" => DATA <= x"21c2"; + when "00" & x"dbd" => DATA <= x"0700"; + when "00" & x"dbe" => DATA <= x"241f"; + when "00" & x"dbf" => DATA <= x"6100"; + when "00" & x"dc0" => DATA <= x"0ba0"; + when "00" & x"dc1" => DATA <= x"6500"; + when "00" & x"dc2" => DATA <= x"0020"; + when "00" & x"dc3" => DATA <= x"2a7c"; + when "00" & x"dc4" => DATA <= x"0000"; + when "00" & x"dc5" => DATA <= x"0704"; + when "00" & x"dc6" => DATA <= x"1a9e"; + when "00" & x"dc7" => DATA <= x"0c1d"; + when "00" & x"dc8" => DATA <= x"000d"; + when "00" & x"dc9" => DATA <= x"66f8"; + when "00" & x"dca" => DATA <= x"1b3c"; + when "00" & x"dcb" => DATA <= x"0000"; + when "00" & x"dcc" => DATA <= x"203c"; + when "00" & x"dcd" => DATA <= x"0000"; + when "00" & x"dce" => DATA <= x"0700"; + when "00" & x"dcf" => DATA <= x"6100"; + when "00" & x"dd0" => DATA <= x"f580"; + when "00" & x"dd1" => DATA <= x"4e75"; + when "00" & x"dd2" => DATA <= x"203c"; + when "00" & x"dd3" => DATA <= x"003f"; + when "00" & x"dd4" => DATA <= x"28f8"; + when "00" & x"dd5" => DATA <= x"6100"; + when "00" & x"dd6" => DATA <= x"ee52"; + when "00" & x"dd7" => DATA <= x"4e75"; + when "00" & x"dd8" => DATA <= x"2f0e"; + when "00" & x"dd9" => DATA <= x"6100"; + when "00" & x"dda" => DATA <= x"0b6c"; + when "00" & x"ddb" => DATA <= x"0c16"; + when "00" & x"ddc" => DATA <= x"000d"; + when "00" & x"ddd" => DATA <= x"6700"; + when "00" & x"dde" => DATA <= x"0010"; + when "00" & x"ddf" => DATA <= x"0c16"; + when "00" & x"de0" => DATA <= x"000d"; + when "00" & x"de1" => DATA <= x"6700"; + when "00" & x"de2" => DATA <= x"0016"; + when "00" & x"de3" => DATA <= x"0c1e"; + when "00" & x"de4" => DATA <= x"0020"; + when "00" & x"de5" => DATA <= x"66f2"; + when "00" & x"de6" => DATA <= x"203c"; + when "00" & x"de7" => DATA <= x"003f"; + when "00" & x"de8" => DATA <= x"2bfe"; + when "00" & x"de9" => DATA <= x"6100"; + when "00" & x"dea" => DATA <= x"ee2a"; + when "00" & x"deb" => DATA <= x"2c5f"; + when "00" & x"dec" => DATA <= x"4e75"; + when "00" & x"ded" => DATA <= x"2c5f"; + when "00" & x"dee" => DATA <= x"220e"; + when "00" & x"def" => DATA <= x"7005"; + when "00" & x"df0" => DATA <= x"6100"; + when "00" & x"df1" => DATA <= x"f0e8"; + when "00" & x"df2" => DATA <= x"b8bc"; + when "00" & x"df3" => DATA <= x"0000"; + when "00" & x"df4" => DATA <= x"8000"; + when "00" & x"df5" => DATA <= x"6600"; + when "00" & x"df6" => DATA <= x"0078"; + when "00" & x"df7" => DATA <= x"2a78"; + when "00" & x"df8" => DATA <= x"0504"; + when "00" & x"df9" => DATA <= x"dbfc"; + when "00" & x"dfa" => DATA <= x"0000"; + when "00" & x"dfb" => DATA <= x"8000"; + when "00" & x"dfc" => DATA <= x"dbfc"; + when "00" & x"dfd" => DATA <= x"0000"; + when "00" & x"dfe" => DATA <= x"0100"; + when "00" & x"dff" => DATA <= x"bbf8"; + when "00" & x"e00" => DATA <= x"0508"; + when "00" & x"e01" => DATA <= x"6300"; + when "00" & x"e02" => DATA <= x"006c"; + when "00" & x"e03" => DATA <= x"220e"; + when "00" & x"e04" => DATA <= x"243c"; + when "00" & x"e05" => DATA <= x"0000"; + when "00" & x"e06" => DATA <= x"0400"; + when "00" & x"e07" => DATA <= x"7600"; + when "00" & x"e08" => DATA <= x"203c"; + when "00" & x"e09" => DATA <= x"0000"; + when "00" & x"e0a" => DATA <= x"00ff"; + when "00" & x"e0b" => DATA <= x"6100"; + when "00" & x"e0c" => DATA <= x"f0b2"; + when "00" & x"e0d" => DATA <= x"203c"; + when "00" & x"e0e" => DATA <= x"003f"; + when "00" & x"e0f" => DATA <= x"2b5d"; + when "00" & x"e10" => DATA <= x"6100"; + when "00" & x"e11" => DATA <= x"eddc"; + when "00" & x"e12" => DATA <= x"7015"; + when "00" & x"e13" => DATA <= x"7200"; + when "00" & x"e14" => DATA <= x"6100"; + when "00" & x"e15" => DATA <= x"eea8"; + when "00" & x"e16" => DATA <= x"6100"; + when "00" & x"e17" => DATA <= x"f86c"; + when "00" & x"e18" => DATA <= x"6100"; + when "00" & x"e19" => DATA <= x"edb4"; + when "00" & x"e1a" => DATA <= x"66a0"; + when "00" & x"e1b" => DATA <= x"223c"; + when "00" & x"e1c" => DATA <= x"0000"; + when "00" & x"e1d" => DATA <= x"0600"; + when "00" & x"e1e" => DATA <= x"74ff"; + when "00" & x"e1f" => DATA <= x"203c"; + when "00" & x"e20" => DATA <= x"003f"; + when "00" & x"e21" => DATA <= x"2bca"; + when "00" & x"e22" => DATA <= x"6100"; + when "00" & x"e23" => DATA <= x"edb8"; + when "00" & x"e24" => DATA <= x"1007"; + when "00" & x"e25" => DATA <= x"0600"; + when "00" & x"e26" => DATA <= x"0030"; + when "00" & x"e27" => DATA <= x"6100"; + when "00" & x"e28" => DATA <= x"ed96"; + when "00" & x"e29" => DATA <= x"6100"; + when "00" & x"e2a" => DATA <= x"edbe"; + when "00" & x"e2b" => DATA <= x"203c"; + when "00" & x"e2c" => DATA <= x"003f"; + when "00" & x"e2d" => DATA <= x"2bdf"; + when "00" & x"e2e" => DATA <= x"6100"; + when "00" & x"e2f" => DATA <= x"eda0"; + when "00" & x"e30" => DATA <= x"6000"; + when "00" & x"e31" => DATA <= x"ff74"; + when "00" & x"e32" => DATA <= x"203c"; + when "00" & x"e33" => DATA <= x"003f"; + when "00" & x"e34" => DATA <= x"2b37"; + when "00" & x"e35" => DATA <= x"6100"; + when "00" & x"e36" => DATA <= x"ed92"; + when "00" & x"e37" => DATA <= x"4e75"; + when "00" & x"e38" => DATA <= x"203c"; + when "00" & x"e39" => DATA <= x"003f"; + when "00" & x"e3a" => DATA <= x"2b53"; + when "00" & x"e3b" => DATA <= x"6100"; + when "00" & x"e3c" => DATA <= x"ed86"; + when "00" & x"e3d" => DATA <= x"4e75"; + when "00" & x"e3e" => DATA <= x"203c"; + when "00" & x"e3f" => DATA <= x"003f"; + when "00" & x"e40" => DATA <= x"291b"; + when "00" & x"e41" => DATA <= x"6100"; + when "00" & x"e42" => DATA <= x"ed7a"; + when "00" & x"e43" => DATA <= x"4e75"; + when "00" & x"e44" => DATA <= x"7010"; + when "00" & x"e45" => DATA <= x"220e"; + when "00" & x"e46" => DATA <= x"6100"; + when "00" & x"e47" => DATA <= x"f33e"; + when "00" & x"e48" => DATA <= x"6900"; + when "00" & x"e49" => DATA <= x"0018"; + when "00" & x"e4a" => DATA <= x"6100"; + when "00" & x"e4b" => DATA <= x"0a98"; + when "00" & x"e4c" => DATA <= x"6600"; + when "00" & x"e4d" => DATA <= x"0010"; + when "00" & x"e4e" => DATA <= x"21c2"; + when "00" & x"e4f" => DATA <= x"0520"; + when "00" & x"e50" => DATA <= x"6100"; + when "00" & x"e51" => DATA <= x"eee2"; + when "00" & x"e52" => DATA <= x"023c"; + when "00" & x"e53" => DATA <= x"00fe"; + when "00" & x"e54" => DATA <= x"4e75"; + when "00" & x"e55" => DATA <= x"203c"; + when "00" & x"e56" => DATA <= x"003f"; + when "00" & x"e57" => DATA <= x"2931"; + when "00" & x"e58" => DATA <= x"6100"; + when "00" & x"e59" => DATA <= x"ed4c"; + when "00" & x"e5a" => DATA <= x"4e75"; + when "00" & x"e5b" => DATA <= x"2f0e"; + when "00" & x"e5c" => DATA <= x"0c16"; + when "00" & x"e5d" => DATA <= x"000d"; + when "00" & x"e5e" => DATA <= x"6600"; + when "00" & x"e5f" => DATA <= x"001a"; + when "00" & x"e60" => DATA <= x"203c"; + when "00" & x"e61" => DATA <= x"003f"; + when "00" & x"e62" => DATA <= x"2838"; + when "00" & x"e63" => DATA <= x"6100"; + when "00" & x"e64" => DATA <= x"ed36"; + when "00" & x"e65" => DATA <= x"203c"; + when "00" & x"e66" => DATA <= x"003f"; + when "00" & x"e67" => DATA <= x"2859"; + when "00" & x"e68" => DATA <= x"6100"; + when "00" & x"e69" => DATA <= x"ed2c"; + when "00" & x"e6a" => DATA <= x"6000"; + when "00" & x"e6b" => DATA <= x"00ca"; + when "00" & x"e6c" => DATA <= x"0216"; + when "00" & x"e6d" => DATA <= x"00df"; + when "00" & x"e6e" => DATA <= x"0c1e"; + when "00" & x"e6f" => DATA <= x"0054"; + when "00" & x"e70" => DATA <= x"6600"; + when "00" & x"e71" => DATA <= x"0042"; + when "00" & x"e72" => DATA <= x"0216"; + when "00" & x"e73" => DATA <= x"00df"; + when "00" & x"e74" => DATA <= x"0c1e"; + when "00" & x"e75" => DATA <= x"0055"; + when "00" & x"e76" => DATA <= x"6600"; + when "00" & x"e77" => DATA <= x"00b2"; + when "00" & x"e78" => DATA <= x"0216"; + when "00" & x"e79" => DATA <= x"00df"; + when "00" & x"e7a" => DATA <= x"0c1e"; + when "00" & x"e7b" => DATA <= x"0042"; + when "00" & x"e7c" => DATA <= x"6600"; + when "00" & x"e7d" => DATA <= x"00a6"; + when "00" & x"e7e" => DATA <= x"0216"; + when "00" & x"e7f" => DATA <= x"00df"; + when "00" & x"e80" => DATA <= x"0c1e"; + when "00" & x"e81" => DATA <= x"0045"; + when "00" & x"e82" => DATA <= x"6600"; + when "00" & x"e83" => DATA <= x"009a"; + when "00" & x"e84" => DATA <= x"0c16"; + when "00" & x"e85" => DATA <= x"000d"; + when "00" & x"e86" => DATA <= x"6600"; + when "00" & x"e87" => DATA <= x"0092"; + when "00" & x"e88" => DATA <= x"203c"; + when "00" & x"e89" => DATA <= x"003f"; + when "00" & x"e8a" => DATA <= x"2838"; + when "00" & x"e8b" => DATA <= x"6100"; + when "00" & x"e8c" => DATA <= x"ece6"; + when "00" & x"e8d" => DATA <= x"203c"; + when "00" & x"e8e" => DATA <= x"003f"; + when "00" & x"e8f" => DATA <= x"286b"; + when "00" & x"e90" => DATA <= x"6100"; + when "00" & x"e91" => DATA <= x"ecdc"; + when "00" & x"e92" => DATA <= x"0226"; + when "00" & x"e93" => DATA <= x"00df"; + when "00" & x"e94" => DATA <= x"0c1e"; + when "00" & x"e95" => DATA <= x"0053"; + when "00" & x"e96" => DATA <= x"6600"; + when "00" & x"e97" => DATA <= x"0072"; + when "00" & x"e98" => DATA <= x"0216"; + when "00" & x"e99" => DATA <= x"00df"; + when "00" & x"e9a" => DATA <= x"0c1e"; + when "00" & x"e9b" => DATA <= x"0057"; + when "00" & x"e9c" => DATA <= x"6600"; + when "00" & x"e9d" => DATA <= x"0066"; + when "00" & x"e9e" => DATA <= x"0216"; + when "00" & x"e9f" => DATA <= x"00df"; + when "00" & x"ea0" => DATA <= x"0c1e"; + when "00" & x"ea1" => DATA <= x"0049"; + when "00" & x"ea2" => DATA <= x"6600"; + when "00" & x"ea3" => DATA <= x"005a"; + when "00" & x"ea4" => DATA <= x"0c16"; + when "00" & x"ea5" => DATA <= x"000d"; + when "00" & x"ea6" => DATA <= x"6600"; + when "00" & x"ea7" => DATA <= x"0052"; + when "00" & x"ea8" => DATA <= x"203c"; + when "00" & x"ea9" => DATA <= x"003f"; + when "00" & x"eaa" => DATA <= x"2838"; + when "00" & x"eab" => DATA <= x"6100"; + when "00" & x"eac" => DATA <= x"eca6"; + when "00" & x"ead" => DATA <= x"4df9"; + when "00" & x"eae" => DATA <= x"003f"; + when "00" & x"eaf" => DATA <= x"2f50"; + when "00" & x"eb0" => DATA <= x"103c"; + when "00" & x"eb1" => DATA <= x"0020"; + when "00" & x"eb2" => DATA <= x"6100"; + when "00" & x"eb3" => DATA <= x"ec80"; + when "00" & x"eb4" => DATA <= x"6100"; + when "00" & x"eb5" => DATA <= x"ec7c"; + when "00" & x"eb6" => DATA <= x"6100"; + when "00" & x"eb7" => DATA <= x"ec78"; + when "00" & x"eb8" => DATA <= x"201e"; + when "00" & x"eb9" => DATA <= x"201e"; + when "00" & x"eba" => DATA <= x"0c80"; + when "00" & x"ebb" => DATA <= x"ffff"; + when "00" & x"ebc" => DATA <= x"ffff"; + when "00" & x"ebd" => DATA <= x"6700"; + when "00" & x"ebe" => DATA <= x"0024"; + when "00" & x"ebf" => DATA <= x"200e"; + when "00" & x"ec0" => DATA <= x"6100"; + when "00" & x"ec1" => DATA <= x"ec7c"; + when "00" & x"ec2" => DATA <= x"2c40"; + when "00" & x"ec3" => DATA <= x"0c26"; + when "00" & x"ec4" => DATA <= x"0000"; + when "00" & x"ec5" => DATA <= x"6100"; + when "00" & x"ec6" => DATA <= x"ec86"; + when "00" & x"ec7" => DATA <= x"0c1e"; + when "00" & x"ec8" => DATA <= x"00ff"; + when "00" & x"ec9" => DATA <= x"6700"; + when "00" & x"eca" => DATA <= x"000c"; + when "00" & x"ecb" => DATA <= x"200e"; + when "00" & x"ecc" => DATA <= x"0200"; + when "00" & x"ecd" => DATA <= x"0003"; + when "00" & x"ece" => DATA <= x"66f0"; + when "00" & x"ecf" => DATA <= x"60c0"; + when "00" & x"ed0" => DATA <= x"2f01"; + when "00" & x"ed1" => DATA <= x"7209"; + when "00" & x"ed2" => DATA <= x"6100"; + when "00" & x"ed3" => DATA <= x"f3aa"; + when "00" & x"ed4" => DATA <= x"221f"; + when "00" & x"ed5" => DATA <= x"2c5f"; + when "00" & x"ed6" => DATA <= x"003c"; + when "00" & x"ed7" => DATA <= x"0001"; + when "00" & x"ed8" => DATA <= x"4e75"; + when "00" & x"ed9" => DATA <= x"0c16"; + when "00" & x"eda" => DATA <= x"000d"; + when "00" & x"edb" => DATA <= x"6600"; + when "00" & x"edc" => DATA <= x"06b8"; + when "00" & x"edd" => DATA <= x"203c"; + when "00" & x"ede" => DATA <= x"003f"; + when "00" & x"edf" => DATA <= x"299f"; + when "00" & x"ee0" => DATA <= x"6100"; + when "00" & x"ee1" => DATA <= x"ec3c"; + when "00" & x"ee2" => DATA <= x"6100"; + when "00" & x"ee3" => DATA <= x"ec4c"; + when "00" & x"ee4" => DATA <= x"103c"; + when "00" & x"ee5" => DATA <= x"003a"; + when "00" & x"ee6" => DATA <= x"6100"; + when "00" & x"ee7" => DATA <= x"ec18"; + when "00" & x"ee8" => DATA <= x"203c"; + when "00" & x"ee9" => DATA <= x"0000"; + when "00" & x"eea" => DATA <= x"0600"; + when "00" & x"eeb" => DATA <= x"123c"; + when "00" & x"eec" => DATA <= x"00ff"; + when "00" & x"eed" => DATA <= x"143c"; + when "00" & x"eee" => DATA <= x"0020"; + when "00" & x"eef" => DATA <= x"163c"; + when "00" & x"ef0" => DATA <= x"00ff"; + when "00" & x"ef1" => DATA <= x"207c"; + when "00" & x"ef2" => DATA <= x"0000"; + when "00" & x"ef3" => DATA <= x"007d"; + when "00" & x"ef4" => DATA <= x"4e4c"; + when "00" & x"ef5" => DATA <= x"6500"; + when "00" & x"ef6" => DATA <= x"00b8"; + when "00" & x"ef7" => DATA <= x"2c7c"; + when "00" & x"ef8" => DATA <= x"0000"; + when "00" & x"ef9" => DATA <= x"0600"; + when "00" & x"efa" => DATA <= x"101e"; + when "00" & x"efb" => DATA <= x"b03c"; + when "00" & x"efc" => DATA <= x"003f"; + when "00" & x"efd" => DATA <= x"6700"; + when "00" & x"efe" => DATA <= x"02c8"; + when "00" & x"eff" => DATA <= x"b03c"; + when "00" & x"f00" => DATA <= x"002a"; + when "00" & x"f01" => DATA <= x"6700"; + when "00" & x"f02" => DATA <= x"03b2"; + when "00" & x"f03" => DATA <= x"0200"; + when "00" & x"f04" => DATA <= x"00df"; + when "00" & x"f05" => DATA <= x"b03c"; + when "00" & x"f06" => DATA <= x"0042"; + when "00" & x"f07" => DATA <= x"6700"; + when "00" & x"f08" => DATA <= x"009e"; + when "00" & x"f09" => DATA <= x"b03c"; + when "00" & x"f0a" => DATA <= x"0044"; + when "00" & x"f0b" => DATA <= x"6700"; + when "00" & x"f0c" => DATA <= x"0060"; + when "00" & x"f0d" => DATA <= x"b03c"; + when "00" & x"f0e" => DATA <= x"0045"; + when "00" & x"f0f" => DATA <= x"6700"; + when "00" & x"f10" => DATA <= x"00f2"; + when "00" & x"f11" => DATA <= x"b03c"; + when "00" & x"f12" => DATA <= x"0046"; + when "00" & x"f13" => DATA <= x"6700"; + when "00" & x"f14" => DATA <= x"01a0"; + when "00" & x"f15" => DATA <= x"b03c"; + when "00" & x"f16" => DATA <= x"0047"; + when "00" & x"f17" => DATA <= x"6700"; + when "00" & x"f18" => DATA <= x"01d2"; + when "00" & x"f19" => DATA <= x"b03c"; + when "00" & x"f1a" => DATA <= x"0048"; + when "00" & x"f1b" => DATA <= x"6700"; + when "00" & x"f1c" => DATA <= x"01e6"; + when "00" & x"f1d" => DATA <= x"b03c"; + when "00" & x"f1e" => DATA <= x"004d"; + when "00" & x"f1f" => DATA <= x"6700"; + when "00" & x"f20" => DATA <= x"0292"; + when "00" & x"f21" => DATA <= x"b03c"; + when "00" & x"f22" => DATA <= x"0051"; + when "00" & x"f23" => DATA <= x"6700"; + when "00" & x"f24" => DATA <= x"02c0"; + when "00" & x"f25" => DATA <= x"b03c"; + when "00" & x"f26" => DATA <= x"0052"; + when "00" & x"f27" => DATA <= x"6700"; + when "00" & x"f28" => DATA <= x"02be"; + when "00" & x"f29" => DATA <= x"b03c"; + when "00" & x"f2a" => DATA <= x"0053"; + when "00" & x"f2b" => DATA <= x"6700"; + when "00" & x"f2c" => DATA <= x"0012"; + when "00" & x"f2d" => DATA <= x"b03c"; + when "00" & x"f2e" => DATA <= x"0054"; + when "00" & x"f2f" => DATA <= x"6700"; + when "00" & x"f30" => DATA <= x"000a"; + when "00" & x"f31" => DATA <= x"b03c"; + when "00" & x"f32" => DATA <= x"0056"; + when "00" & x"f33" => DATA <= x"6700"; + when "00" & x"f34" => DATA <= x"0358"; + when "00" & x"f35" => DATA <= x"203c"; + when "00" & x"f36" => DATA <= x"003f"; + when "00" & x"f37" => DATA <= x"2b03"; + when "00" & x"f38" => DATA <= x"6100"; + when "00" & x"f39" => DATA <= x"eb8c"; + when "00" & x"f3a" => DATA <= x"6000"; + when "00" & x"f3b" => DATA <= x"ff4e"; + when "00" & x"f3c" => DATA <= x"6100"; + when "00" & x"f3d" => DATA <= x"08a6"; + when "00" & x"f3e" => DATA <= x"7010"; + when "00" & x"f3f" => DATA <= x"220e"; + when "00" & x"f40" => DATA <= x"6100"; + when "00" & x"f41" => DATA <= x"f14a"; + when "00" & x"f42" => DATA <= x"6900"; + when "00" & x"f43" => DATA <= x"023e"; + when "00" & x"f44" => DATA <= x"2c41"; + when "00" & x"f45" => DATA <= x"2002"; + when "00" & x"f46" => DATA <= x"223c"; + when "00" & x"f47" => DATA <= x"0000"; + when "00" & x"f48" => DATA <= x"0600"; + when "00" & x"f49" => DATA <= x"6100"; + when "00" & x"f4a" => DATA <= x"fc78"; + when "00" & x"f4b" => DATA <= x"2001"; + when "00" & x"f4c" => DATA <= x"6100"; + when "00" & x"f4d" => DATA <= x"eb64"; + when "00" & x"f4e" => DATA <= x"6100"; + when "00" & x"f4f" => DATA <= x"eb74"; + when "00" & x"f50" => DATA <= x"6000"; + when "00" & x"f51" => DATA <= x"ff22"; + when "00" & x"f52" => DATA <= x"707e"; + when "00" & x"f53" => DATA <= x"6100"; + when "00" & x"f54" => DATA <= x"ec2a"; + when "00" & x"f55" => DATA <= x"6000"; + when "00" & x"f56" => DATA <= x"ff18"; + when "00" & x"f57" => DATA <= x"6100"; + when "00" & x"f58" => DATA <= x"0870"; + when "00" & x"f59" => DATA <= x"7010"; + when "00" & x"f5a" => DATA <= x"220e"; + when "00" & x"f5b" => DATA <= x"6100"; + when "00" & x"f5c" => DATA <= x"f114"; + when "00" & x"f5d" => DATA <= x"6900"; + when "00" & x"f5e" => DATA <= x"0208"; + when "00" & x"f5f" => DATA <= x"2842"; + when "00" & x"f60" => DATA <= x"6100"; + when "00" & x"f61" => DATA <= x"086c"; + when "00" & x"f62" => DATA <= x"7010"; + when "00" & x"f63" => DATA <= x"6100"; + when "00" & x"f64" => DATA <= x"f104"; + when "00" & x"f65" => DATA <= x"6900"; + when "00" & x"f66" => DATA <= x"01f8"; + when "00" & x"f67" => DATA <= x"2a42"; + when "00" & x"f68" => DATA <= x"6100"; + when "00" & x"f69" => DATA <= x"085c"; + when "00" & x"f6a" => DATA <= x"7010"; + when "00" & x"f6b" => DATA <= x"6100"; + when "00" & x"f6c" => DATA <= x"f0f4"; + when "00" & x"f6d" => DATA <= x"6900"; + when "00" & x"f6e" => DATA <= x"01e8"; + when "00" & x"f6f" => DATA <= x"2c41"; + when "00" & x"f70" => DATA <= x"1e02"; + when "00" & x"f71" => DATA <= x"be1c"; + when "00" & x"f72" => DATA <= x"6600"; + when "00" & x"f73" => DATA <= x"0024"; + when "00" & x"f74" => DATA <= x"200c"; + when "00" & x"f75" => DATA <= x"223c"; + when "00" & x"f76" => DATA <= x"0000"; + when "00" & x"f77" => DATA <= x"0600"; + when "00" & x"f78" => DATA <= x"243c"; + when "00" & x"f79" => DATA <= x"0000"; + when "00" & x"f7a" => DATA <= x"00ff"; + when "00" & x"f7b" => DATA <= x"6100"; + when "00" & x"f7c" => DATA <= x"f7ee"; + when "00" & x"f7d" => DATA <= x"21fc"; + when "00" & x"f7e" => DATA <= x"2020"; + when "00" & x"f7f" => DATA <= x"0000"; + when "00" & x"f80" => DATA <= x"0608"; + when "00" & x"f81" => DATA <= x"303c"; + when "00" & x"f82" => DATA <= x"0600"; + when "00" & x"f83" => DATA <= x"6100"; + when "00" & x"f84" => DATA <= x"eaf6"; + when "00" & x"f85" => DATA <= x"bbcc"; + when "00" & x"f86" => DATA <= x"64d4"; + when "00" & x"f87" => DATA <= x"6000"; + when "00" & x"f88" => DATA <= x"feb4"; + when "00" & x"f89" => DATA <= x"6100"; + when "00" & x"f8a" => DATA <= x"080c"; + when "00" & x"f8b" => DATA <= x"7010"; + when "00" & x"f8c" => DATA <= x"220e"; + when "00" & x"f8d" => DATA <= x"6100"; + when "00" & x"f8e" => DATA <= x"f0b0"; + when "00" & x"f8f" => DATA <= x"6900"; + when "00" & x"f90" => DATA <= x"01a4"; + when "00" & x"f91" => DATA <= x"2842"; + when "00" & x"f92" => DATA <= x"11fc"; + when "00" & x"f93" => DATA <= x"0020"; + when "00" & x"f94" => DATA <= x"0609"; + when "00" & x"f95" => DATA <= x"11fc"; + when "00" & x"f96" => DATA <= x"0020"; + when "00" & x"f97" => DATA <= x"060d"; + when "00" & x"f98" => DATA <= x"11fc"; + when "00" & x"f99" => DATA <= x"0028"; + when "00" & x"f9a" => DATA <= x"060e"; + when "00" & x"f9b" => DATA <= x"21fc"; + when "00" & x"f9c" => DATA <= x"2920"; + when "00" & x"f9d" => DATA <= x"2000"; + when "00" & x"f9e" => DATA <= x"0610"; + when "00" & x"f9f" => DATA <= x"200c"; + when "00" & x"fa0" => DATA <= x"223c"; + when "00" & x"fa1" => DATA <= x"0000"; + when "00" & x"fa2" => DATA <= x"0600"; + when "00" & x"fa3" => DATA <= x"243c"; + when "00" & x"fa4" => DATA <= x"0000"; + when "00" & x"fa5" => DATA <= x"00ff"; + when "00" & x"fa6" => DATA <= x"6100"; + when "00" & x"fa7" => DATA <= x"f798"; + when "00" & x"fa8" => DATA <= x"11fc"; + when "00" & x"fa9" => DATA <= x"0020"; + when "00" & x"faa" => DATA <= x"0608"; + when "00" & x"fab" => DATA <= x"5441"; + when "00" & x"fac" => DATA <= x"1014"; + when "00" & x"fad" => DATA <= x"243c"; + when "00" & x"fae" => DATA <= x"0000"; + when "00" & x"faf" => DATA <= x"00ff"; + when "00" & x"fb0" => DATA <= x"6100"; + when "00" & x"fb1" => DATA <= x"f72e"; + when "00" & x"fb2" => DATA <= x"2a41"; + when "00" & x"fb3" => DATA <= x"1afc"; + when "00" & x"fb4" => DATA <= x"0020"; + when "00" & x"fb5" => DATA <= x"2c4c"; + when "00" & x"fb6" => DATA <= x"6100"; + when "00" & x"fb7" => DATA <= x"084c"; + when "00" & x"fb8" => DATA <= x"11c0"; + when "00" & x"fb9" => DATA <= x"060f"; + when "00" & x"fba" => DATA <= x"203c"; + when "00" & x"fbb" => DATA <= x"0000"; + when "00" & x"fbc" => DATA <= x"0600"; + when "00" & x"fbd" => DATA <= x"6100"; + when "00" & x"fbe" => DATA <= x"ea82"; + when "00" & x"fbf" => DATA <= x"203c"; + when "00" & x"fc0" => DATA <= x"0000"; + when "00" & x"fc1" => DATA <= x"0680"; + when "00" & x"fc2" => DATA <= x"123c"; + when "00" & x"fc3" => DATA <= x"0002"; + when "00" & x"fc4" => DATA <= x"143c"; + when "00" & x"fc5" => DATA <= x"0020"; + when "00" & x"fc6" => DATA <= x"163c"; + when "00" & x"fc7" => DATA <= x"0046"; + when "00" & x"fc8" => DATA <= x"207c"; + when "00" & x"fc9" => DATA <= x"0000"; + when "00" & x"fca" => DATA <= x"007d"; + when "00" & x"fcb" => DATA <= x"4e4c"; + when "00" & x"fcc" => DATA <= x"6500"; + when "00" & x"fcd" => DATA <= x"0024"; + when "00" & x"fce" => DATA <= x"0c38"; + when "00" & x"fcf" => DATA <= x"000d"; + when "00" & x"fd0" => DATA <= x"0680"; + when "00" & x"fd1" => DATA <= x"6600"; + when "00" & x"fd2" => DATA <= x"0006"; + when "00" & x"fd3" => DATA <= x"524c"; + when "00" & x"fd4" => DATA <= x"6094"; + when "00" & x"fd5" => DATA <= x"2c7c"; + when "00" & x"fd6" => DATA <= x"0000"; + when "00" & x"fd7" => DATA <= x"0680"; + when "00" & x"fd8" => DATA <= x"7010"; + when "00" & x"fd9" => DATA <= x"220e"; + when "00" & x"fda" => DATA <= x"6100"; + when "00" & x"fdb" => DATA <= x"f016"; + when "00" & x"fdc" => DATA <= x"6984"; + when "00" & x"fdd" => DATA <= x"18c2"; + when "00" & x"fde" => DATA <= x"6080"; + when "00" & x"fdf" => DATA <= x"707e"; + when "00" & x"fe0" => DATA <= x"6100"; + when "00" & x"fe1" => DATA <= x"eb10"; + when "00" & x"fe2" => DATA <= x"6000"; + when "00" & x"fe3" => DATA <= x"fdfe"; + when "00" & x"fe4" => DATA <= x"220e"; + when "00" & x"fe5" => DATA <= x"6100"; + when "00" & x"fe6" => DATA <= x"0762"; + when "00" & x"fe7" => DATA <= x"7010"; + when "00" & x"fe8" => DATA <= x"6100"; + when "00" & x"fe9" => DATA <= x"effa"; + when "00" & x"fea" => DATA <= x"6900"; + when "00" & x"feb" => DATA <= x"00ee"; + when "00" & x"fec" => DATA <= x"2842"; + when "00" & x"fed" => DATA <= x"6100"; + when "00" & x"fee" => DATA <= x"0752"; + when "00" & x"fef" => DATA <= x"7010"; + when "00" & x"ff0" => DATA <= x"6100"; + when "00" & x"ff1" => DATA <= x"efea"; + when "00" & x"ff2" => DATA <= x"6900"; + when "00" & x"ff3" => DATA <= x"00de"; + when "00" & x"ff4" => DATA <= x"2a42"; + when "00" & x"ff5" => DATA <= x"6100"; + when "00" & x"ff6" => DATA <= x"0742"; + when "00" & x"ff7" => DATA <= x"7010"; + when "00" & x"ff8" => DATA <= x"6100"; + when "00" & x"ff9" => DATA <= x"efda"; + when "00" & x"ffa" => DATA <= x"6900"; + when "00" & x"ffb" => DATA <= x"00ce"; + when "00" & x"ffc" => DATA <= x"18c2"; + when "00" & x"ffd" => DATA <= x"bbcc"; + when "00" & x"ffe" => DATA <= x"64fa"; + when "00" & x"fff" => DATA <= x"6000"; + when "01" & x"000" => DATA <= x"fdc4"; + when "01" & x"001" => DATA <= x"6100"; + when "01" & x"002" => DATA <= x"071c"; + when "01" & x"003" => DATA <= x"6700"; + when "01" & x"004" => DATA <= x"00bc"; + when "01" & x"005" => DATA <= x"7010"; + when "01" & x"006" => DATA <= x"220e"; + when "01" & x"007" => DATA <= x"6100"; + when "01" & x"008" => DATA <= x"efbc"; + when "01" & x"009" => DATA <= x"6900"; + when "01" & x"00a" => DATA <= x"00b0"; + when "01" & x"00b" => DATA <= x"2c42"; + when "01" & x"00c" => DATA <= x"4e96"; + when "01" & x"00d" => DATA <= x"6000"; + when "01" & x"00e" => DATA <= x"fda8"; + when "01" & x"00f" => DATA <= x"6100"; + when "01" & x"010" => DATA <= x"0700"; + when "01" & x"011" => DATA <= x"0c16"; + when "01" & x"012" => DATA <= x"000d"; + when "01" & x"013" => DATA <= x"6600"; + when "01" & x"014" => DATA <= x"0008"; + when "01" & x"015" => DATA <= x"4282"; + when "01" & x"016" => DATA <= x"6000"; + when "01" & x"017" => DATA <= x"0016"; + when "01" & x"018" => DATA <= x"7010"; + when "01" & x"019" => DATA <= x"220e"; + when "01" & x"01a" => DATA <= x"6100"; + when "01" & x"01b" => DATA <= x"ef96"; + when "01" & x"01c" => DATA <= x"6900"; + when "01" & x"01d" => DATA <= x"008a"; + when "01" & x"01e" => DATA <= x"6100"; + when "01" & x"01f" => DATA <= x"06f0"; + when "01" & x"020" => DATA <= x"6600"; + when "01" & x"021" => DATA <= x"0082"; + when "01" & x"022" => DATA <= x"0282"; + when "01" & x"023" => DATA <= x"ffff"; + when "01" & x"024" => DATA <= x"fffc"; + when "01" & x"025" => DATA <= x"2c42"; + when "01" & x"026" => DATA <= x"103c"; + when "01" & x"027" => DATA <= x"000e"; + when "01" & x"028" => DATA <= x"6100"; + when "01" & x"029" => DATA <= x"e994"; + when "01" & x"02a" => DATA <= x"200e"; + when "01" & x"02b" => DATA <= x"223c"; + when "01" & x"02c" => DATA <= x"0000"; + when "01" & x"02d" => DATA <= x"0600"; + when "01" & x"02e" => DATA <= x"243c"; + when "01" & x"02f" => DATA <= x"0000"; + when "01" & x"030" => DATA <= x"00ff"; + when "01" & x"031" => DATA <= x"6100"; + when "01" & x"032" => DATA <= x"f682"; + when "01" & x"033" => DATA <= x"31fc"; + when "01" & x"034" => DATA <= x"2020"; + when "01" & x"035" => DATA <= x"0608"; + when "01" & x"036" => DATA <= x"5441"; + when "01" & x"037" => DATA <= x"760f"; + when "01" & x"038" => DATA <= x"287c"; + when "01" & x"039" => DATA <= x"0000"; + when "01" & x"03a" => DATA <= x"063b"; + when "01" & x"03b" => DATA <= x"11fc"; + when "01" & x"03c" => DATA <= x"0020"; + when "01" & x"03d" => DATA <= x"063a"; + when "01" & x"03e" => DATA <= x"11fc"; + when "01" & x"03f" => DATA <= x"0000"; + when "01" & x"040" => DATA <= x"064b"; + when "01" & x"041" => DATA <= x"1016"; + when "01" & x"042" => DATA <= x"243c"; + when "01" & x"043" => DATA <= x"0000"; + when "01" & x"044" => DATA <= x"00ff"; + when "01" & x"045" => DATA <= x"6100"; + when "01" & x"046" => DATA <= x"f604"; + when "01" & x"047" => DATA <= x"2a41"; + when "01" & x"048" => DATA <= x"1abc"; + when "01" & x"049" => DATA <= x"0020"; + when "01" & x"04a" => DATA <= x"5241"; + when "01" & x"04b" => DATA <= x"6100"; + when "01" & x"04c" => DATA <= x"0722"; + when "01" & x"04d" => DATA <= x"18c0"; + when "01" & x"04e" => DATA <= x"51cb"; + when "01" & x"04f" => DATA <= x"ffe4"; + when "01" & x"050" => DATA <= x"303c"; + when "01" & x"051" => DATA <= x"0600"; + when "01" & x"052" => DATA <= x"6100"; + when "01" & x"053" => DATA <= x"e958"; + when "01" & x"054" => DATA <= x"6100"; + when "01" & x"055" => DATA <= x"e968"; + when "01" & x"056" => DATA <= x"6100"; + when "01" & x"057" => DATA <= x"f078"; + when "01" & x"058" => DATA <= x"64a2"; + when "01" & x"059" => DATA <= x"707e"; + when "01" & x"05a" => DATA <= x"6100"; + when "01" & x"05b" => DATA <= x"ea1c"; + when "01" & x"05c" => DATA <= x"103c"; + when "01" & x"05d" => DATA <= x"000f"; + when "01" & x"05e" => DATA <= x"6100"; + when "01" & x"05f" => DATA <= x"e928"; + when "01" & x"060" => DATA <= x"6000"; + when "01" & x"061" => DATA <= x"fd02"; + when "01" & x"062" => DATA <= x"203c"; + when "01" & x"063" => DATA <= x"003f"; + when "01" & x"064" => DATA <= x"29ae"; + when "01" & x"065" => DATA <= x"6100"; + when "01" & x"066" => DATA <= x"e932"; + when "01" & x"067" => DATA <= x"6000"; + when "01" & x"068" => DATA <= x"fcf4"; + when "01" & x"069" => DATA <= x"6100"; + when "01" & x"06a" => DATA <= x"064c"; + when "01" & x"06b" => DATA <= x"7010"; + when "01" & x"06c" => DATA <= x"220e"; + when "01" & x"06d" => DATA <= x"6100"; + when "01" & x"06e" => DATA <= x"eef0"; + when "01" & x"06f" => DATA <= x"69e4"; + when "01" & x"070" => DATA <= x"2842"; + when "01" & x"071" => DATA <= x"6100"; + when "01" & x"072" => DATA <= x"064a"; + when "01" & x"073" => DATA <= x"7010"; + when "01" & x"074" => DATA <= x"6100"; + when "01" & x"075" => DATA <= x"eee2"; + when "01" & x"076" => DATA <= x"69d6"; + when "01" & x"077" => DATA <= x"2a42"; + when "01" & x"078" => DATA <= x"6100"; + when "01" & x"079" => DATA <= x"063c"; + when "01" & x"07a" => DATA <= x"7010"; + when "01" & x"07b" => DATA <= x"6100"; + when "01" & x"07c" => DATA <= x"eed4"; + when "01" & x"07d" => DATA <= x"69c8"; + when "01" & x"07e" => DATA <= x"5382"; + when "01" & x"07f" => DATA <= x"1adc"; + when "01" & x"080" => DATA <= x"51ca"; + when "01" & x"081" => DATA <= x"fffc"; + when "01" & x"082" => DATA <= x"6000"; + when "01" & x"083" => DATA <= x"fcbe"; + when "01" & x"084" => DATA <= x"6100"; + when "01" & x"085" => DATA <= x"e908"; + when "01" & x"086" => DATA <= x"4e75"; + when "01" & x"087" => DATA <= x"6100"; + when "01" & x"088" => DATA <= x"0610"; + when "01" & x"089" => DATA <= x"2f0d"; + when "01" & x"08a" => DATA <= x"2f02"; + when "01" & x"08b" => DATA <= x"2f01"; + when "01" & x"08c" => DATA <= x"2f00"; + when "01" & x"08d" => DATA <= x"4280"; + when "01" & x"08e" => DATA <= x"101e"; + when "01" & x"08f" => DATA <= x"0200"; + when "01" & x"090" => DATA <= x"00df"; + when "01" & x"091" => DATA <= x"0c00"; + when "01" & x"092" => DATA <= x"0041"; + when "01" & x"093" => DATA <= x"6700"; + when "01" & x"094" => DATA <= x"0008"; + when "01" & x"095" => DATA <= x"0c00"; + when "01" & x"096" => DATA <= x"0044"; + when "01" & x"097" => DATA <= x"6694"; + when "01" & x"098" => DATA <= x"0200"; + when "01" & x"099" => DATA <= x"00be"; + when "01" & x"09a" => DATA <= x"e380"; + when "01" & x"09b" => DATA <= x"1400"; + when "01" & x"09c" => DATA <= x"101e"; + when "01" & x"09d" => DATA <= x"0c00"; + when "01" & x"09e" => DATA <= x"0030"; + when "01" & x"09f" => DATA <= x"6584"; + when "01" & x"0a0" => DATA <= x"0c00"; + when "01" & x"0a1" => DATA <= x"0037"; + when "01" & x"0a2" => DATA <= x"6200"; + when "01" & x"0a3" => DATA <= x"ff7e"; + when "01" & x"0a4" => DATA <= x"0400"; + when "01" & x"0a5" => DATA <= x"0030"; + when "01" & x"0a6" => DATA <= x"d002"; + when "01" & x"0a7" => DATA <= x"e580"; + when "01" & x"0a8" => DATA <= x"2a7c"; + when "01" & x"0a9" => DATA <= x"003f"; + when "01" & x"0aa" => DATA <= x"2176"; + when "01" & x"0ab" => DATA <= x"dbc0"; + when "01" & x"0ac" => DATA <= x"6100"; + when "01" & x"0ad" => DATA <= x"05c6"; + when "01" & x"0ae" => DATA <= x"7010"; + when "01" & x"0af" => DATA <= x"220e"; + when "01" & x"0b0" => DATA <= x"6100"; + when "01" & x"0b1" => DATA <= x"ee6a"; + when "01" & x"0b2" => DATA <= x"6900"; + when "01" & x"0b3" => DATA <= x"ff5e"; + when "01" & x"0b4" => DATA <= x"4ed5"; + when "01" & x"0b5" => DATA <= x"201f"; + when "01" & x"0b6" => DATA <= x"221f"; + when "01" & x"0b7" => DATA <= x"241f"; + when "01" & x"0b8" => DATA <= x"2a5f"; + when "01" & x"0b9" => DATA <= x"6000"; + when "01" & x"0ba" => DATA <= x"fc50"; + when "01" & x"0bb" => DATA <= x"2042"; + when "01" & x"0bc" => DATA <= x"60f0"; + when "01" & x"0bd" => DATA <= x"2242"; + when "01" & x"0be" => DATA <= x"60ec"; + when "01" & x"0bf" => DATA <= x"2442"; + when "01" & x"0c0" => DATA <= x"60e8"; + when "01" & x"0c1" => DATA <= x"2642"; + when "01" & x"0c2" => DATA <= x"60e4"; + when "01" & x"0c3" => DATA <= x"2842"; + when "01" & x"0c4" => DATA <= x"60e0"; + when "01" & x"0c5" => DATA <= x"2a42"; + when "01" & x"0c6" => DATA <= x"60dc"; + when "01" & x"0c7" => DATA <= x"2c42"; + when "01" & x"0c8" => DATA <= x"60d8"; + when "01" & x"0c9" => DATA <= x"2e42"; + when "01" & x"0ca" => DATA <= x"60d4"; + when "01" & x"0cb" => DATA <= x"2002"; + when "01" & x"0cc" => DATA <= x"60d0"; + when "01" & x"0cd" => DATA <= x"2202"; + when "01" & x"0ce" => DATA <= x"60cc"; + when "01" & x"0cf" => DATA <= x"4e71"; + when "01" & x"0d0" => DATA <= x"60c8"; + when "01" & x"0d1" => DATA <= x"2602"; + when "01" & x"0d2" => DATA <= x"60c4"; + when "01" & x"0d3" => DATA <= x"2802"; + when "01" & x"0d4" => DATA <= x"60c0"; + when "01" & x"0d5" => DATA <= x"2a02"; + when "01" & x"0d6" => DATA <= x"60bc"; + when "01" & x"0d7" => DATA <= x"2c02"; + when "01" & x"0d8" => DATA <= x"60b8"; + when "01" & x"0d9" => DATA <= x"2e02"; + when "01" & x"0da" => DATA <= x"60b4"; + when "01" & x"0db" => DATA <= x"200e"; + when "01" & x"0dc" => DATA <= x"6100"; + when "01" & x"0dd" => DATA <= x"e876"; + when "01" & x"0de" => DATA <= x"6000"; + when "01" & x"0df" => DATA <= x"fc06"; + when "01" & x"0e0" => DATA <= x"103c"; + when "01" & x"0e1" => DATA <= x"0020"; + when "01" & x"0e2" => DATA <= x"323c"; + when "01" & x"0e3" => DATA <= x"0032"; + when "01" & x"0e4" => DATA <= x"6100"; + when "01" & x"0e5" => DATA <= x"e81c"; + when "01" & x"0e6" => DATA <= x"51c9"; + when "01" & x"0e7" => DATA <= x"fffa"; + when "01" & x"0e8" => DATA <= x"203c"; + when "01" & x"0e9" => DATA <= x"003f"; + when "01" & x"0ea" => DATA <= x"2b26"; + when "01" & x"0eb" => DATA <= x"6100"; + when "01" & x"0ec" => DATA <= x"e826"; + when "01" & x"0ed" => DATA <= x"6100"; + when "01" & x"0ee" => DATA <= x"e836"; + when "01" & x"0ef" => DATA <= x"21fc"; + when "01" & x"0f0" => DATA <= x"4430"; + when "01" & x"0f1" => DATA <= x"3a00"; + when "01" & x"0f2" => DATA <= x"0600"; + when "01" & x"0f3" => DATA <= x"223c"; + when "01" & x"0f4" => DATA <= x"0000"; + when "01" & x"0f5" => DATA <= x"0603"; + when "01" & x"0f6" => DATA <= x"243c"; + when "01" & x"0f7" => DATA <= x"0000"; + when "01" & x"0f8" => DATA <= x"00fc"; + when "01" & x"0f9" => DATA <= x"6100"; + when "01" & x"0fa" => DATA <= x"f4f2"; + when "01" & x"0fb" => DATA <= x"11fc"; + when "01" & x"0fc" => DATA <= x"0020"; + when "01" & x"0fd" => DATA <= x"060b"; + when "01" & x"0fe" => DATA <= x"21fc"; + when "01" & x"0ff" => DATA <= x"4431"; + when "01" & x"100" => DATA <= x"3a00"; + when "01" & x"101" => DATA <= x"060c"; + when "01" & x"102" => DATA <= x"2001"; + when "01" & x"103" => DATA <= x"223c"; + when "01" & x"104" => DATA <= x"0000"; + when "01" & x"105" => DATA <= x"060f"; + when "01" & x"106" => DATA <= x"243c"; + when "01" & x"107" => DATA <= x"0000"; + when "01" & x"108" => DATA <= x"00f4"; + when "01" & x"109" => DATA <= x"6100"; + when "01" & x"10a" => DATA <= x"f4d2"; + when "01" & x"10b" => DATA <= x"11fc"; + when "01" & x"10c" => DATA <= x"0020"; + when "01" & x"10d" => DATA <= x"0617"; + when "01" & x"10e" => DATA <= x"21fc"; + when "01" & x"10f" => DATA <= x"4432"; + when "01" & x"110" => DATA <= x"3a00"; + when "01" & x"111" => DATA <= x"0618"; + when "01" & x"112" => DATA <= x"2002"; + when "01" & x"113" => DATA <= x"223c"; + when "01" & x"114" => DATA <= x"0000"; + when "01" & x"115" => DATA <= x"061b"; + when "01" & x"116" => DATA <= x"243c"; + when "01" & x"117" => DATA <= x"0000"; + when "01" & x"118" => DATA <= x"00e8"; + when "01" & x"119" => DATA <= x"6100"; + when "01" & x"11a" => DATA <= x"f4b2"; + when "01" & x"11b" => DATA <= x"11fc"; + when "01" & x"11c" => DATA <= x"0020"; + when "01" & x"11d" => DATA <= x"0623"; + when "01" & x"11e" => DATA <= x"21fc"; + when "01" & x"11f" => DATA <= x"4433"; + when "01" & x"120" => DATA <= x"3a00"; + when "01" & x"121" => DATA <= x"0624"; + when "01" & x"122" => DATA <= x"2003"; + when "01" & x"123" => DATA <= x"223c"; + when "01" & x"124" => DATA <= x"0000"; + when "01" & x"125" => DATA <= x"0627"; + when "01" & x"126" => DATA <= x"243c"; + when "01" & x"127" => DATA <= x"0000"; + when "01" & x"128" => DATA <= x"00dc"; + when "01" & x"129" => DATA <= x"6100"; + when "01" & x"12a" => DATA <= x"f492"; + when "01" & x"12b" => DATA <= x"11fc"; + when "01" & x"12c" => DATA <= x"0020"; + when "01" & x"12d" => DATA <= x"062f"; + when "01" & x"12e" => DATA <= x"21fc"; + when "01" & x"12f" => DATA <= x"5352"; + when "01" & x"130" => DATA <= x"3a00"; + when "01" & x"131" => DATA <= x"0630"; + when "01" & x"132" => DATA <= x"223c"; + when "01" & x"133" => DATA <= x"0000"; + when "01" & x"134" => DATA <= x"0633"; + when "01" & x"135" => DATA <= x"243c"; + when "01" & x"136" => DATA <= x"0000"; + when "01" & x"137" => DATA <= x"00cd"; + when "01" & x"138" => DATA <= x"40c0"; + when "01" & x"139" => DATA <= x"6100"; + when "01" & x"13a" => DATA <= x"f6b4"; + when "01" & x"13b" => DATA <= x"11fc"; + when "01" & x"13c" => DATA <= x"0020"; + when "01" & x"13d" => DATA <= x"0643"; + when "01" & x"13e" => DATA <= x"21fc"; + when "01" & x"13f" => DATA <= x"2020"; + when "01" & x"140" => DATA <= x"0a0d"; + when "01" & x"141" => DATA <= x"0644"; + when "01" & x"142" => DATA <= x"21fc"; + when "01" & x"143" => DATA <= x"4434"; + when "01" & x"144" => DATA <= x"3a00"; + when "01" & x"145" => DATA <= x"0648"; + when "01" & x"146" => DATA <= x"2004"; + when "01" & x"147" => DATA <= x"223c"; + when "01" & x"148" => DATA <= x"0000"; + when "01" & x"149" => DATA <= x"064b"; + when "01" & x"14a" => DATA <= x"243c"; + when "01" & x"14b" => DATA <= x"0000"; + when "01" & x"14c" => DATA <= x"00b8"; + when "01" & x"14d" => DATA <= x"6100"; + when "01" & x"14e" => DATA <= x"f44a"; + when "01" & x"14f" => DATA <= x"11fc"; + when "01" & x"150" => DATA <= x"0020"; + when "01" & x"151" => DATA <= x"0653"; + when "01" & x"152" => DATA <= x"21fc"; + when "01" & x"153" => DATA <= x"4435"; + when "01" & x"154" => DATA <= x"3a00"; + when "01" & x"155" => DATA <= x"0654"; + when "01" & x"156" => DATA <= x"2005"; + when "01" & x"157" => DATA <= x"223c"; + when "01" & x"158" => DATA <= x"0000"; + when "01" & x"159" => DATA <= x"0657"; + when "01" & x"15a" => DATA <= x"243c"; + when "01" & x"15b" => DATA <= x"0000"; + when "01" & x"15c" => DATA <= x"00ac"; + when "01" & x"15d" => DATA <= x"6100"; + when "01" & x"15e" => DATA <= x"f42a"; + when "01" & x"15f" => DATA <= x"11fc"; + when "01" & x"160" => DATA <= x"0020"; + when "01" & x"161" => DATA <= x"065f"; + when "01" & x"162" => DATA <= x"21fc"; + when "01" & x"163" => DATA <= x"4436"; + when "01" & x"164" => DATA <= x"3a00"; + when "01" & x"165" => DATA <= x"0660"; + when "01" & x"166" => DATA <= x"2006"; + when "01" & x"167" => DATA <= x"223c"; + when "01" & x"168" => DATA <= x"0000"; + when "01" & x"169" => DATA <= x"0663"; + when "01" & x"16a" => DATA <= x"243c"; + when "01" & x"16b" => DATA <= x"0000"; + when "01" & x"16c" => DATA <= x"00a0"; + when "01" & x"16d" => DATA <= x"6100"; + when "01" & x"16e" => DATA <= x"f40a"; + when "01" & x"16f" => DATA <= x"11fc"; + when "01" & x"170" => DATA <= x"0020"; + when "01" & x"171" => DATA <= x"066b"; + when "01" & x"172" => DATA <= x"21fc"; + when "01" & x"173" => DATA <= x"4437"; + when "01" & x"174" => DATA <= x"3a00"; + when "01" & x"175" => DATA <= x"066c"; + when "01" & x"176" => DATA <= x"2007"; + when "01" & x"177" => DATA <= x"223c"; + when "01" & x"178" => DATA <= x"0000"; + when "01" & x"179" => DATA <= x"066f"; + when "01" & x"17a" => DATA <= x"243c"; + when "01" & x"17b" => DATA <= x"0000"; + when "01" & x"17c" => DATA <= x"0094"; + when "01" & x"17d" => DATA <= x"6100"; + when "01" & x"17e" => DATA <= x"f3ea"; + when "01" & x"17f" => DATA <= x"11fc"; + when "01" & x"180" => DATA <= x"0020"; + when "01" & x"181" => DATA <= x"0677"; + when "01" & x"182" => DATA <= x"21fc"; + when "01" & x"183" => DATA <= x"5553"; + when "01" & x"184" => DATA <= x"3a00"; + when "01" & x"185" => DATA <= x"0678"; + when "01" & x"186" => DATA <= x"4e68"; + when "01" & x"187" => DATA <= x"2008"; + when "01" & x"188" => DATA <= x"223c"; + when "01" & x"189" => DATA <= x"0000"; + when "01" & x"18a" => DATA <= x"067b"; + when "01" & x"18b" => DATA <= x"243c"; + when "01" & x"18c" => DATA <= x"0000"; + when "01" & x"18d" => DATA <= x"0094"; + when "01" & x"18e" => DATA <= x"6100"; + when "01" & x"18f" => DATA <= x"f3c8"; + when "01" & x"190" => DATA <= x"11fc"; + when "01" & x"191" => DATA <= x"0020"; + when "01" & x"192" => DATA <= x"0683"; + when "01" & x"193" => DATA <= x"21fc"; + when "01" & x"194" => DATA <= x"2020"; + when "01" & x"195" => DATA <= x"0a0d"; + when "01" & x"196" => DATA <= x"0684"; + when "01" & x"197" => DATA <= x"21fc"; + when "01" & x"198" => DATA <= x"4130"; + when "01" & x"199" => DATA <= x"3a00"; + when "01" & x"19a" => DATA <= x"0688"; + when "01" & x"19b" => DATA <= x"2008"; + when "01" & x"19c" => DATA <= x"223c"; + when "01" & x"19d" => DATA <= x"0000"; + when "01" & x"19e" => DATA <= x"068b"; + when "01" & x"19f" => DATA <= x"243c"; + when "01" & x"1a0" => DATA <= x"0000"; + when "01" & x"1a1" => DATA <= x"0094"; + when "01" & x"1a2" => DATA <= x"6100"; + when "01" & x"1a3" => DATA <= x"f3a0"; + when "01" & x"1a4" => DATA <= x"11fc"; + when "01" & x"1a5" => DATA <= x"0020"; + when "01" & x"1a6" => DATA <= x"0693"; + when "01" & x"1a7" => DATA <= x"21fc"; + when "01" & x"1a8" => DATA <= x"4131"; + when "01" & x"1a9" => DATA <= x"3a00"; + when "01" & x"1aa" => DATA <= x"0694"; + when "01" & x"1ab" => DATA <= x"2009"; + when "01" & x"1ac" => DATA <= x"223c"; + when "01" & x"1ad" => DATA <= x"0000"; + when "01" & x"1ae" => DATA <= x"0697"; + when "01" & x"1af" => DATA <= x"243c"; + when "01" & x"1b0" => DATA <= x"0000"; + when "01" & x"1b1" => DATA <= x"0094"; + when "01" & x"1b2" => DATA <= x"6100"; + when "01" & x"1b3" => DATA <= x"f380"; + when "01" & x"1b4" => DATA <= x"11fc"; + when "01" & x"1b5" => DATA <= x"0020"; + when "01" & x"1b6" => DATA <= x"069f"; + when "01" & x"1b7" => DATA <= x"21fc"; + when "01" & x"1b8" => DATA <= x"4132"; + when "01" & x"1b9" => DATA <= x"3a00"; + when "01" & x"1ba" => DATA <= x"06a0"; + when "01" & x"1bb" => DATA <= x"200a"; + when "01" & x"1bc" => DATA <= x"223c"; + when "01" & x"1bd" => DATA <= x"0000"; + when "01" & x"1be" => DATA <= x"06a3"; + when "01" & x"1bf" => DATA <= x"243c"; + when "01" & x"1c0" => DATA <= x"0000"; + when "01" & x"1c1" => DATA <= x"0094"; + when "01" & x"1c2" => DATA <= x"6100"; + when "01" & x"1c3" => DATA <= x"f360"; + when "01" & x"1c4" => DATA <= x"11fc"; + when "01" & x"1c5" => DATA <= x"0020"; + when "01" & x"1c6" => DATA <= x"06ab"; + when "01" & x"1c7" => DATA <= x"21fc"; + when "01" & x"1c8" => DATA <= x"4133"; + when "01" & x"1c9" => DATA <= x"3a00"; + when "01" & x"1ca" => DATA <= x"06ac"; + when "01" & x"1cb" => DATA <= x"200b"; + when "01" & x"1cc" => DATA <= x"223c"; + when "01" & x"1cd" => DATA <= x"0000"; + when "01" & x"1ce" => DATA <= x"06af"; + when "01" & x"1cf" => DATA <= x"243c"; + when "01" & x"1d0" => DATA <= x"0000"; + when "01" & x"1d1" => DATA <= x"0094"; + when "01" & x"1d2" => DATA <= x"6100"; + when "01" & x"1d3" => DATA <= x"f340"; + when "01" & x"1d4" => DATA <= x"11fc"; + when "01" & x"1d5" => DATA <= x"0020"; + when "01" & x"1d6" => DATA <= x"06b7"; + when "01" & x"1d7" => DATA <= x"21fc"; + when "01" & x"1d8" => DATA <= x"5353"; + when "01" & x"1d9" => DATA <= x"3a00"; + when "01" & x"1da" => DATA <= x"06b8"; + when "01" & x"1db" => DATA <= x"200f"; + when "01" & x"1dc" => DATA <= x"223c"; + when "01" & x"1dd" => DATA <= x"0000"; + when "01" & x"1de" => DATA <= x"06bb"; + when "01" & x"1df" => DATA <= x"243c"; + when "01" & x"1e0" => DATA <= x"0000"; + when "01" & x"1e1" => DATA <= x"0094"; + when "01" & x"1e2" => DATA <= x"6100"; + when "01" & x"1e3" => DATA <= x"f320"; + when "01" & x"1e4" => DATA <= x"11fc"; + when "01" & x"1e5" => DATA <= x"0020"; + when "01" & x"1e6" => DATA <= x"06c3"; + when "01" & x"1e7" => DATA <= x"21fc"; + when "01" & x"1e8" => DATA <= x"2020"; + when "01" & x"1e9" => DATA <= x"0a0d"; + when "01" & x"1ea" => DATA <= x"06c4"; + when "01" & x"1eb" => DATA <= x"21fc"; + when "01" & x"1ec" => DATA <= x"4134"; + when "01" & x"1ed" => DATA <= x"3a00"; + when "01" & x"1ee" => DATA <= x"06c8"; + when "01" & x"1ef" => DATA <= x"200c"; + when "01" & x"1f0" => DATA <= x"223c"; + when "01" & x"1f1" => DATA <= x"0000"; + when "01" & x"1f2" => DATA <= x"06cb"; + when "01" & x"1f3" => DATA <= x"243c"; + when "01" & x"1f4" => DATA <= x"0000"; + when "01" & x"1f5" => DATA <= x"0094"; + when "01" & x"1f6" => DATA <= x"6100"; + when "01" & x"1f7" => DATA <= x"f2f8"; + when "01" & x"1f8" => DATA <= x"11fc"; + when "01" & x"1f9" => DATA <= x"0020"; + when "01" & x"1fa" => DATA <= x"06d3"; + when "01" & x"1fb" => DATA <= x"21fc"; + when "01" & x"1fc" => DATA <= x"4135"; + when "01" & x"1fd" => DATA <= x"3a00"; + when "01" & x"1fe" => DATA <= x"06d4"; + when "01" & x"1ff" => DATA <= x"200d"; + when "01" & x"200" => DATA <= x"223c"; + when "01" & x"201" => DATA <= x"0000"; + when "01" & x"202" => DATA <= x"06d7"; + when "01" & x"203" => DATA <= x"243c"; + when "01" & x"204" => DATA <= x"0000"; + when "01" & x"205" => DATA <= x"0094"; + when "01" & x"206" => DATA <= x"6100"; + when "01" & x"207" => DATA <= x"f2d8"; + when "01" & x"208" => DATA <= x"11fc"; + when "01" & x"209" => DATA <= x"0020"; + when "01" & x"20a" => DATA <= x"06df"; + when "01" & x"20b" => DATA <= x"21fc"; + when "01" & x"20c" => DATA <= x"4136"; + when "01" & x"20d" => DATA <= x"3a00"; + when "01" & x"20e" => DATA <= x"06e0"; + when "01" & x"20f" => DATA <= x"200e"; + when "01" & x"210" => DATA <= x"223c"; + when "01" & x"211" => DATA <= x"0000"; + when "01" & x"212" => DATA <= x"06e3"; + when "01" & x"213" => DATA <= x"243c"; + when "01" & x"214" => DATA <= x"0000"; + when "01" & x"215" => DATA <= x"0094"; + when "01" & x"216" => DATA <= x"6100"; + when "01" & x"217" => DATA <= x"f2b8"; + when "01" & x"218" => DATA <= x"11fc"; + when "01" & x"219" => DATA <= x"0020"; + when "01" & x"21a" => DATA <= x"06eb"; + when "01" & x"21b" => DATA <= x"21fc"; + when "01" & x"21c" => DATA <= x"4137"; + when "01" & x"21d" => DATA <= x"3a00"; + when "01" & x"21e" => DATA <= x"06ec"; + when "01" & x"21f" => DATA <= x"200f"; + when "01" & x"220" => DATA <= x"223c"; + when "01" & x"221" => DATA <= x"0000"; + when "01" & x"222" => DATA <= x"06ef"; + when "01" & x"223" => DATA <= x"243c"; + when "01" & x"224" => DATA <= x"0000"; + when "01" & x"225" => DATA <= x"0094"; + when "01" & x"226" => DATA <= x"6100"; + when "01" & x"227" => DATA <= x"f298"; + when "01" & x"228" => DATA <= x"11fc"; + when "01" & x"229" => DATA <= x"0020"; + when "01" & x"22a" => DATA <= x"06f7"; + when "01" & x"22b" => DATA <= x"21fc"; + when "01" & x"22c" => DATA <= x"5043"; + when "01" & x"22d" => DATA <= x"3a00"; + when "01" & x"22e" => DATA <= x"06f8"; + when "01" & x"22f" => DATA <= x"203c"; + when "01" & x"230" => DATA <= x"0000"; + when "01" & x"231" => DATA <= x"0600"; + when "01" & x"232" => DATA <= x"6100"; + when "01" & x"233" => DATA <= x"e598"; + when "01" & x"234" => DATA <= x"6100"; + when "01" & x"235" => DATA <= x"e5a8"; + when "01" & x"236" => DATA <= x"6000"; + when "01" & x"237" => DATA <= x"f956"; + when "01" & x"238" => DATA <= x"203c"; + when "01" & x"239" => DATA <= x"003f"; + when "01" & x"23a" => DATA <= x"2945"; + when "01" & x"23b" => DATA <= x"6100"; + when "01" & x"23c" => DATA <= x"e586"; + when "01" & x"23d" => DATA <= x"4e75"; + when "01" & x"23e" => DATA <= x"6000"; + when "01" & x"23f" => DATA <= x"e9c6"; + when "01" & x"240" => DATA <= x"6000"; + when "01" & x"241" => DATA <= x"e2f4"; + when "01" & x"242" => DATA <= x"7010"; + when "01" & x"243" => DATA <= x"220e"; + when "01" & x"244" => DATA <= x"6100"; + when "01" & x"245" => DATA <= x"eb42"; + when "01" & x"246" => DATA <= x"6900"; + when "01" & x"247" => DATA <= x"00d2"; + when "01" & x"248" => DATA <= x"2e02"; + when "01" & x"249" => DATA <= x"6100"; + when "01" & x"24a" => DATA <= x"029a"; + when "01" & x"24b" => DATA <= x"7010"; + when "01" & x"24c" => DATA <= x"6100"; + when "01" & x"24d" => DATA <= x"eb32"; + when "01" & x"24e" => DATA <= x"6900"; + when "01" & x"24f" => DATA <= x"00c2"; + when "01" & x"250" => DATA <= x"2c02"; + when "01" & x"251" => DATA <= x"6100"; + when "01" & x"252" => DATA <= x"028a"; + when "01" & x"253" => DATA <= x"7010"; + when "01" & x"254" => DATA <= x"6100"; + when "01" & x"255" => DATA <= x"eb22"; + when "01" & x"256" => DATA <= x"6900"; + when "01" & x"257" => DATA <= x"00b2"; + when "01" & x"258" => DATA <= x"2c41"; + when "01" & x"259" => DATA <= x"2a02"; + when "01" & x"25a" => DATA <= x"6100"; + when "01" & x"25b" => DATA <= x"026a"; + when "01" & x"25c" => DATA <= x"101e"; + when "01" & x"25d" => DATA <= x"0200"; + when "01" & x"25e" => DATA <= x"00df"; + when "01" & x"25f" => DATA <= x"b03c"; + when "01" & x"260" => DATA <= x"0052"; + when "01" & x"261" => DATA <= x"6700"; + when "01" & x"262" => DATA <= x"0012"; + when "01" & x"263" => DATA <= x"b03c"; + when "01" & x"264" => DATA <= x"0057"; + when "01" & x"265" => DATA <= x"6600"; + when "01" & x"266" => DATA <= x"0094"; + when "01" & x"267" => DATA <= x"183c"; + when "01" & x"268" => DATA <= x"0006"; + when "01" & x"269" => DATA <= x"6000"; + when "01" & x"26a" => DATA <= x"0006"; + when "01" & x"26b" => DATA <= x"183c"; + when "01" & x"26c" => DATA <= x"0007"; + when "01" & x"26d" => DATA <= x"6100"; + when "01" & x"26e" => DATA <= x"0244"; + when "01" & x"26f" => DATA <= x"6700"; + when "01" & x"270" => DATA <= x"0020"; + when "01" & x"271" => DATA <= x"101e"; + when "01" & x"272" => DATA <= x"0200"; + when "01" & x"273" => DATA <= x"00df"; + when "01" & x"274" => DATA <= x"b03c"; + when "01" & x"275" => DATA <= x"0053"; + when "01" & x"276" => DATA <= x"6700"; + when "01" & x"277" => DATA <= x"001a"; + when "01" & x"278" => DATA <= x"b03c"; + when "01" & x"279" => DATA <= x"004d"; + when "01" & x"27a" => DATA <= x"6600"; + when "01" & x"27b" => DATA <= x"006a"; + when "01" & x"27c" => DATA <= x"163c"; + when "01" & x"27d" => DATA <= x"0040"; + when "01" & x"27e" => DATA <= x"6000"; + when "01" & x"27f" => DATA <= x"000e"; + when "01" & x"280" => DATA <= x"103c"; + when "01" & x"281" => DATA <= x"0010"; + when "01" & x"282" => DATA <= x"6000"; + when "01" & x"283" => DATA <= x"0006"; + when "01" & x"284" => DATA <= x"163c"; + when "01" & x"285" => DATA <= x"0020"; + when "01" & x"286" => DATA <= x"6100"; + when "01" & x"287" => DATA <= x"0212"; + when "01" & x"288" => DATA <= x"6600"; + when "01" & x"289" => DATA <= x"f798"; + when "01" & x"28a" => DATA <= x"11fc"; + when "01" & x"28b" => DATA <= x"000e"; + when "01" & x"28c" => DATA <= x"0600"; + when "01" & x"28d" => DATA <= x"11fc"; + when "01" & x"28e" => DATA <= x"0010"; + when "01" & x"28f" => DATA <= x"0601"; + when "01" & x"290" => DATA <= x"21c7"; + when "01" & x"291" => DATA <= x"0602"; + when "01" & x"292" => DATA <= x"21c6"; + when "01" & x"293" => DATA <= x"0606"; + when "01" & x"294" => DATA <= x"31c5"; + when "01" & x"295" => DATA <= x"060a"; + when "01" & x"296" => DATA <= x"11c4"; + when "01" & x"297" => DATA <= x"060c"; + when "01" & x"298" => DATA <= x"11c3"; + when "01" & x"299" => DATA <= x"060d"; + when "01" & x"29a" => DATA <= x"223c"; + when "01" & x"29b" => DATA <= x"0000"; + when "01" & x"29c" => DATA <= x"0600"; + when "01" & x"29d" => DATA <= x"203c"; + when "01" & x"29e" => DATA <= x"0000"; + when "01" & x"29f" => DATA <= x"00fa"; + when "01" & x"2a0" => DATA <= x"6100"; + when "01" & x"2a1" => DATA <= x"e6a2"; + when "01" & x"2a2" => DATA <= x"0c04"; + when "01" & x"2a3" => DATA <= x"0006"; + when "01" & x"2a4" => DATA <= x"6600"; + when "01" & x"2a5" => DATA <= x"000c"; + when "01" & x"2a6" => DATA <= x"2a47"; + when "01" & x"2a7" => DATA <= x"2c46"; + when "01" & x"2a8" => DATA <= x"2405"; + when "01" & x"2a9" => DATA <= x"6000"; + when "01" & x"2aa" => DATA <= x"014c"; + when "01" & x"2ab" => DATA <= x"2a46"; + when "01" & x"2ac" => DATA <= x"2c47"; + when "01" & x"2ad" => DATA <= x"2405"; + when "01" & x"2ae" => DATA <= x"6000"; + when "01" & x"2af" => DATA <= x"015c"; + when "01" & x"2b0" => DATA <= x"203c"; + when "01" & x"2b1" => DATA <= x"003f"; + when "01" & x"2b2" => DATA <= x"2969"; + when "01" & x"2b3" => DATA <= x"6100"; + when "01" & x"2b4" => DATA <= x"e496"; + when "01" & x"2b5" => DATA <= x"4e75"; + when "01" & x"2b6" => DATA <= x"6100"; + when "01" & x"2b7" => DATA <= x"e4a4"; + when "01" & x"2b8" => DATA <= x"5880"; + when "01" & x"2b9" => DATA <= x"6100"; + when "01" & x"2ba" => DATA <= x"e48a"; + when "01" & x"2bb" => DATA <= x"0cb8"; + when "01" & x"2bc" => DATA <= x"0000"; + when "01" & x"2bd" => DATA <= x"0000"; + when "01" & x"2be" => DATA <= x"0510"; + when "01" & x"2bf" => DATA <= x"6700"; + when "01" & x"2c0" => DATA <= x"0022"; + when "01" & x"2c1" => DATA <= x"203c"; + when "01" & x"2c2" => DATA <= x"003f"; + when "01" & x"2c3" => DATA <= x"2c54"; + when "01" & x"2c4" => DATA <= x"6100"; + when "01" & x"2c5" => DATA <= x"e474"; + when "01" & x"2c6" => DATA <= x"2038"; + when "01" & x"2c7" => DATA <= x"0510"; + when "01" & x"2c8" => DATA <= x"223c"; + when "01" & x"2c9" => DATA <= x"0000"; + when "01" & x"2ca" => DATA <= x"0600"; + when "01" & x"2cb" => DATA <= x"143c"; + when "01" & x"2cc" => DATA <= x"00ff"; + when "01" & x"2cd" => DATA <= x"6100"; + when "01" & x"2ce" => DATA <= x"f14a"; + when "01" & x"2cf" => DATA <= x"6100"; + when "01" & x"2d0" => DATA <= x"e45e"; + when "01" & x"2d1" => DATA <= x"6100"; + when "01" & x"2d2" => DATA <= x"e46e"; + when "01" & x"2d3" => DATA <= x"2e78"; + when "01" & x"2d4" => DATA <= x"0508"; + when "01" & x"2d5" => DATA <= x"6000"; + when "01" & x"2d6" => DATA <= x"ddb2"; + when "01" & x"2d7" => DATA <= x"2f00"; + when "01" & x"2d8" => DATA <= x"203c"; + when "01" & x"2d9" => DATA <= x"003f"; + when "01" & x"2da" => DATA <= x"2d18"; + when "01" & x"2db" => DATA <= x"21fc"; + when "01" & x"2dc" => DATA <= x"0000"; + when "01" & x"2dd" => DATA <= x"0000"; + when "01" & x"2de" => DATA <= x"0510"; + when "01" & x"2df" => DATA <= x"6100"; + when "01" & x"2e0" => DATA <= x"eb60"; + when "01" & x"2e1" => DATA <= x"201f"; + when "01" & x"2e2" => DATA <= x"4e75"; + when "01" & x"2e3" => DATA <= x"0839"; + when "01" & x"2e4" => DATA <= x"0006"; + when "01" & x"2e5" => DATA <= x"fffe"; + when "01" & x"2e6" => DATA <= x"0000"; + when "01" & x"2e7" => DATA <= x"67f6"; + when "01" & x"2e8" => DATA <= x"13c0"; + when "01" & x"2e9" => DATA <= x"fffe"; + when "01" & x"2ea" => DATA <= x"0001"; + when "01" & x"2eb" => DATA <= x"4e75"; + when "01" & x"2ec" => DATA <= x"4e75"; + when "01" & x"2ed" => DATA <= x"2f00"; + when "01" & x"2ee" => DATA <= x"203c"; + when "01" & x"2ef" => DATA <= x"003f"; + when "01" & x"2f0" => DATA <= x"2e38"; + when "01" & x"2f1" => DATA <= x"6100"; + when "01" & x"2f2" => DATA <= x"eb3c"; + when "01" & x"2f3" => DATA <= x"201f"; + when "01" & x"2f4" => DATA <= x"4e75"; + when "01" & x"2f5" => DATA <= x"b07c"; + when "01" & x"2f6" => DATA <= x"0010"; + when "01" & x"2f7" => DATA <= x"6300"; + when "01" & x"2f8" => DATA <= x"000e"; + when "01" & x"2f9" => DATA <= x"203c"; + when "01" & x"2fa" => DATA <= x"003f"; + when "01" & x"2fb" => DATA <= x"2e1c"; + when "01" & x"2fc" => DATA <= x"003c"; + when "01" & x"2fd" => DATA <= x"0002"; + when "01" & x"2fe" => DATA <= x"4e75"; + when "01" & x"2ff" => DATA <= x"41f9"; + when "01" & x"300" => DATA <= x"003f"; + when "01" & x"301" => DATA <= x"362c"; + when "01" & x"302" => DATA <= x"e588"; + when "01" & x"303" => DATA <= x"d1c0"; + when "01" & x"304" => DATA <= x"d1c0"; + when "01" & x"305" => DATA <= x"d1c0"; + when "01" & x"306" => DATA <= x"2258"; + when "01" & x"307" => DATA <= x"b3fc"; + when "01" & x"308" => DATA <= x"0000"; + when "01" & x"309" => DATA <= x"0000"; + when "01" & x"30a" => DATA <= x"67dc"; + when "01" & x"30b" => DATA <= x"2f04"; + when "01" & x"30c" => DATA <= x"2458"; + when "01" & x"30d" => DATA <= x"2658"; + when "01" & x"30e" => DATA <= x"4a81"; + when "01" & x"30f" => DATA <= x"6600"; + when "01" & x"310" => DATA <= x"0008"; + when "01" & x"311" => DATA <= x"2211"; + when "01" & x"312" => DATA <= x"6000"; + when "01" & x"313" => DATA <= x"0008"; + when "01" & x"314" => DATA <= x"2811"; + when "01" & x"315" => DATA <= x"2281"; + when "01" & x"316" => DATA <= x"c941"; + when "01" & x"317" => DATA <= x"4a82"; + when "01" & x"318" => DATA <= x"6600"; + when "01" & x"319" => DATA <= x"0008"; + when "01" & x"31a" => DATA <= x"2412"; + when "01" & x"31b" => DATA <= x"6000"; + when "01" & x"31c" => DATA <= x"0008"; + when "01" & x"31d" => DATA <= x"2812"; + when "01" & x"31e" => DATA <= x"2482"; + when "01" & x"31f" => DATA <= x"c942"; + when "01" & x"320" => DATA <= x"4a83"; + when "01" & x"321" => DATA <= x"6600"; + when "01" & x"322" => DATA <= x"0008"; + when "01" & x"323" => DATA <= x"2612"; + when "01" & x"324" => DATA <= x"6000"; + when "01" & x"325" => DATA <= x"0008"; + when "01" & x"326" => DATA <= x"2813"; + when "01" & x"327" => DATA <= x"2681"; + when "01" & x"328" => DATA <= x"c941"; + when "01" & x"329" => DATA <= x"281f"; + when "01" & x"32a" => DATA <= x"4e75"; + when "01" & x"32b" => DATA <= x"6000"; + when "01" & x"32c" => DATA <= x"e11e"; + when "01" & x"32d" => DATA <= x"6000"; + when "01" & x"32e" => DATA <= x"e11a"; + when "01" & x"32f" => DATA <= x"0200"; + when "01" & x"330" => DATA <= x"0040"; + when "01" & x"331" => DATA <= x"8138"; + when "01" & x"332" => DATA <= x"0535"; + when "01" & x"333" => DATA <= x"4e75"; + when "01" & x"334" => DATA <= x"21fc"; + when "01" & x"335" => DATA <= x"0000"; + when "01" & x"336" => DATA <= x"0000"; + when "01" & x"337" => DATA <= x"0518"; + when "01" & x"338" => DATA <= x"b2bc"; + when "01" & x"339" => DATA <= x"4142"; + when "01" & x"33a" => DATA <= x"4558"; + when "01" & x"33b" => DATA <= x"6600"; + when "01" & x"33c" => DATA <= x"0018"; + when "01" & x"33d" => DATA <= x"21c2"; + when "01" & x"33e" => DATA <= x"0518"; + when "01" & x"33f" => DATA <= x"b4b8"; + when "01" & x"340" => DATA <= x"051c"; + when "01" & x"341" => DATA <= x"6300"; + when "01" & x"342" => DATA <= x"000c"; + when "01" & x"343" => DATA <= x"203c"; + when "01" & x"344" => DATA <= x"003f"; + when "01" & x"345" => DATA <= x"2e60"; + when "01" & x"346" => DATA <= x"6100"; + when "01" & x"347" => DATA <= x"ea92"; + when "01" & x"348" => DATA <= x"2e78"; + when "01" & x"349" => DATA <= x"0508"; + when "01" & x"34a" => DATA <= x"6000"; + when "01" & x"34b" => DATA <= x"dcc8"; + when "01" & x"34c" => DATA <= x"6000"; + when "01" & x"34d" => DATA <= x"e0dc"; + when "01" & x"34e" => DATA <= x"6000"; + when "01" & x"34f" => DATA <= x"e0d8"; + when "01" & x"350" => DATA <= x"21cd"; + when "01" & x"351" => DATA <= x"0600"; + when "01" & x"352" => DATA <= x"223c"; + when "01" & x"353" => DATA <= x"0000"; + when "01" & x"354" => DATA <= x"0600"; + when "01" & x"355" => DATA <= x"7005"; + when "01" & x"356" => DATA <= x"6100"; + when "01" & x"357" => DATA <= x"e536"; + when "01" & x"358" => DATA <= x"1cf8"; + when "01" & x"359" => DATA <= x"0605"; + when "01" & x"35a" => DATA <= x"51ca"; + when "01" & x"35b" => DATA <= x"ffee"; + when "01" & x"35c" => DATA <= x"4e75"; + when "01" & x"35d" => DATA <= x"21cd"; + when "01" & x"35e" => DATA <= x"0600"; + when "01" & x"35f" => DATA <= x"223c"; + when "01" & x"360" => DATA <= x"0000"; + when "01" & x"361" => DATA <= x"0600"; + when "01" & x"362" => DATA <= x"11de"; + when "01" & x"363" => DATA <= x"0605"; + when "01" & x"364" => DATA <= x"7006"; + when "01" & x"365" => DATA <= x"6100"; + when "01" & x"366" => DATA <= x"e518"; + when "01" & x"367" => DATA <= x"51ca"; + when "01" & x"368" => DATA <= x"ffee"; + when "01" & x"369" => DATA <= x"4e75"; + when "01" & x"36a" => DATA <= x"2a7c"; + when "01" & x"36b" => DATA <= x"003f"; + when "01" & x"36c" => DATA <= x"37e4"; + when "01" & x"36d" => DATA <= x"2c7c"; + when "01" & x"36e" => DATA <= x"ffff"; + when "01" & x"36f" => DATA <= x"2500"; + when "01" & x"370" => DATA <= x"243c"; + when "01" & x"371" => DATA <= x"0000"; + when "01" & x"372" => DATA <= x"01fb"; + when "01" & x"373" => DATA <= x"61d2"; + when "01" & x"374" => DATA <= x"2a7c"; + when "01" & x"375" => DATA <= x"ffff"; + when "01" & x"376" => DATA <= x"0200"; + when "01" & x"377" => DATA <= x"2c7c"; + when "01" & x"378" => DATA <= x"0000"; + when "01" & x"379" => DATA <= x"0600"; + when "01" & x"37a" => DATA <= x"7402"; + when "01" & x"37b" => DATA <= x"61a8"; + when "01" & x"37c" => DATA <= x"2a7c"; + when "01" & x"37d" => DATA <= x"0000"; + when "01" & x"37e" => DATA <= x"0600"; + when "01" & x"37f" => DATA <= x"2c7c"; + when "01" & x"380" => DATA <= x"ffff"; + when "01" & x"381" => DATA <= x"2503"; + when "01" & x"382" => DATA <= x"7402"; + when "01" & x"383" => DATA <= x"61b2"; + when "01" & x"384" => DATA <= x"31fc"; + when "01" & x"385" => DATA <= x"2500"; + when "01" & x"386" => DATA <= x"0600"; + when "01" & x"387" => DATA <= x"2a7c"; + when "01" & x"388" => DATA <= x"0000"; + when "01" & x"389" => DATA <= x"0600"; + when "01" & x"38a" => DATA <= x"2c7c"; + when "01" & x"38b" => DATA <= x"ffff"; + when "01" & x"38c" => DATA <= x"0200"; + when "01" & x"38d" => DATA <= x"7402"; + when "01" & x"38e" => DATA <= x"619c"; + when "01" & x"38f" => DATA <= x"4e75"; + when "01" & x"390" => DATA <= x"0c1e"; + when "01" & x"391" => DATA <= x"0020"; + when "01" & x"392" => DATA <= x"67fa"; + when "01" & x"393" => DATA <= x"1026"; + when "01" & x"394" => DATA <= x"b03c"; + when "01" & x"395" => DATA <= x"000d"; + when "01" & x"396" => DATA <= x"4e75"; + when "01" & x"397" => DATA <= x"c38e"; + when "01" & x"398" => DATA <= x"0c1e"; + when "01" & x"399" => DATA <= x"0020"; + when "01" & x"39a" => DATA <= x"67fa"; + when "01" & x"39b" => DATA <= x"1026"; + when "01" & x"39c" => DATA <= x"c38e"; + when "01" & x"39d" => DATA <= x"b03c"; + when "01" & x"39e" => DATA <= x"000d"; + when "01" & x"39f" => DATA <= x"4e75"; + when "01" & x"3a0" => DATA <= x"7010"; + when "01" & x"3a1" => DATA <= x"220e"; + when "01" & x"3a2" => DATA <= x"6100"; + when "01" & x"3a3" => DATA <= x"e886"; + when "01" & x"3a4" => DATA <= x"6900"; + when "01" & x"3a5" => DATA <= x"000c"; + when "01" & x"3a6" => DATA <= x"2c41"; + when "01" & x"3a7" => DATA <= x"2202"; + when "01" & x"3a8" => DATA <= x"023c"; + when "01" & x"3a9" => DATA <= x"00fe"; + when "01" & x"3aa" => DATA <= x"4e75"; + when "01" & x"3ab" => DATA <= x"2c41"; + when "01" & x"3ac" => DATA <= x"2202"; + when "01" & x"3ad" => DATA <= x"003c"; + when "01" & x"3ae" => DATA <= x"0001"; + when "01" & x"3af" => DATA <= x"4e75"; + when "01" & x"3b0" => DATA <= x"4281"; + when "01" & x"3b1" => DATA <= x"101e"; + when "01" & x"3b2" => DATA <= x"2f00"; + when "01" & x"3b3" => DATA <= x"0c00"; + when "01" & x"3b4" => DATA <= x"0030"; + when "01" & x"3b5" => DATA <= x"6500"; + when "01" & x"3b6" => DATA <= x"002c"; + when "01" & x"3b7" => DATA <= x"0c00"; + when "01" & x"3b8" => DATA <= x"0039"; + when "01" & x"3b9" => DATA <= x"6300"; + when "01" & x"3ba" => DATA <= x"0018"; + when "01" & x"3bb" => DATA <= x"0200"; + when "01" & x"3bc" => DATA <= x"00df"; + when "01" & x"3bd" => DATA <= x"0c00"; + when "01" & x"3be" => DATA <= x"0041"; + when "01" & x"3bf" => DATA <= x"6500"; + when "01" & x"3c0" => DATA <= x"0018"; + when "01" & x"3c1" => DATA <= x"0c00"; + when "01" & x"3c2" => DATA <= x"0046"; + when "01" & x"3c3" => DATA <= x"6200"; + when "01" & x"3c4" => DATA <= x"0010"; + when "01" & x"3c5" => DATA <= x"5f00"; + when "01" & x"3c6" => DATA <= x"0200"; + when "01" & x"3c7" => DATA <= x"000f"; + when "01" & x"3c8" => DATA <= x"e981"; + when "01" & x"3c9" => DATA <= x"d200"; + when "01" & x"3ca" => DATA <= x"201f"; + when "01" & x"3cb" => DATA <= x"60ca"; + when "01" & x"3cc" => DATA <= x"201f"; + when "01" & x"3cd" => DATA <= x"0c00"; + when "01" & x"3ce" => DATA <= x"000d"; + when "01" & x"3cf" => DATA <= x"6700"; + when "01" & x"3d0" => DATA <= x"0012"; + when "01" & x"3d1" => DATA <= x"0c00"; + when "01" & x"3d2" => DATA <= x"0020"; + when "01" & x"3d3" => DATA <= x"6700"; + when "01" & x"3d4" => DATA <= x"000a"; + when "01" & x"3d5" => DATA <= x"534e"; + when "01" & x"3d6" => DATA <= x"003c"; + when "01" & x"3d7" => DATA <= x"0001"; + when "01" & x"3d8" => DATA <= x"4e75"; + when "01" & x"3d9" => DATA <= x"534e"; + when "01" & x"3da" => DATA <= x"023c"; + when "01" & x"3db" => DATA <= x"00fe"; + when "01" & x"3dc" => DATA <= x"4e75"; + when "01" & x"3dd" => DATA <= x"101e"; + when "01" & x"3de" => DATA <= x"0c00"; + when "01" & x"3df" => DATA <= x"0020"; + when "01" & x"3e0" => DATA <= x"6500"; + when "01" & x"3e1" => DATA <= x"000a"; + when "01" & x"3e2" => DATA <= x"0c00"; + when "01" & x"3e3" => DATA <= x"007f"; + when "01" & x"3e4" => DATA <= x"6500"; + when "01" & x"3e5" => DATA <= x"0006"; + when "01" & x"3e6" => DATA <= x"103c"; + when "01" & x"3e7" => DATA <= x"002e"; + when "01" & x"3e8" => DATA <= x"4e75"; + when "01" & x"3e9" => DATA <= x"0280"; + when "01" & x"3ea" => DATA <= x"0000"; + when "01" & x"3eb" => DATA <= x"0007"; + when "01" & x"3ec" => DATA <= x"e140"; + when "01" & x"3ed" => DATA <= x"027c"; + when "01" & x"3ee" => DATA <= x"f8ff"; + when "01" & x"3ef" => DATA <= x"221f"; + when "01" & x"3f0" => DATA <= x"4e75"; + when "01" & x"3f1" => DATA <= x"0d0a"; + when "01" & x"3f2" => DATA <= x"4163"; + when "01" & x"3f3" => DATA <= x"6f72"; + when "01" & x"3f4" => DATA <= x"6e20"; + when "01" & x"3f5" => DATA <= x"3638"; + when "01" & x"3f6" => DATA <= x"0020"; + when "01" & x"3f7" => DATA <= x"7365"; + when "01" & x"3f8" => DATA <= x"636f"; + when "01" & x"3f9" => DATA <= x"6e64"; + when "01" & x"3fa" => DATA <= x"2070"; + when "01" & x"3fb" => DATA <= x"726f"; + when "01" & x"3fc" => DATA <= x"6365"; + when "01" & x"3fd" => DATA <= x"7373"; + when "01" & x"3fe" => DATA <= x"6f72"; + when "01" & x"3ff" => DATA <= x"2000"; + when "01" & x"400" => DATA <= x"3030"; + when "01" & x"401" => DATA <= x"3830"; + when "01" & x"402" => DATA <= x"3030"; + when "01" & x"403" => DATA <= x"3031"; + when "01" & x"404" => DATA <= x"3030"; + when "01" & x"405" => DATA <= x"3230"; + when "01" & x"406" => DATA <= x"3033"; + when "01" & x"407" => DATA <= x"3030"; + when "01" & x"408" => DATA <= x"3430"; + when "01" & x"409" => DATA <= x"3036"; + when "01" & x"40a" => DATA <= x"3030"; + when "01" & x"40b" => DATA <= x"3730"; + when "01" & x"40c" => DATA <= x"3330"; + when "01" & x"40d" => DATA <= x"304b"; + when "01" & x"40e" => DATA <= x"070d"; + when "01" & x"40f" => DATA <= x"0a0d"; + when "01" & x"410" => DATA <= x"0a00"; + when "01" & x"411" => DATA <= x"1701"; + when "01" & x"412" => DATA <= x"0000"; + when "01" & x"413" => DATA <= x"0000"; + when "01" & x"414" => DATA <= x"0000"; + when "01" & x"415" => DATA <= x"0000"; + when "01" & x"416" => DATA <= x"0017"; + when "01" & x"417" => DATA <= x"0101"; + when "01" & x"418" => DATA <= x"0000"; + when "01" & x"419" => DATA <= x"0000"; + when "01" & x"41a" => DATA <= x"0000"; + when "01" & x"41b" => DATA <= x"0000"; + when "01" & x"41c" => DATA <= x"0a0d"; + when "01" & x"41d" => DATA <= x"4369"; + when "01" & x"41e" => DATA <= x"7363"; + when "01" & x"41f" => DATA <= x"4f53"; + when "01" & x"420" => DATA <= x"2076"; + when "01" & x"421" => DATA <= x"322e"; + when "01" & x"422" => DATA <= x"3031"; + when "01" & x"423" => DATA <= x"2028"; + when "01" & x"424" => DATA <= x"4a75"; + when "01" & x"425" => DATA <= x"6c79"; + when "01" & x"426" => DATA <= x"2033"; + when "01" & x"427" => DATA <= x"312c"; + when "01" & x"428" => DATA <= x"2032"; + when "01" & x"429" => DATA <= x"3031"; + when "01" & x"42a" => DATA <= x"3529"; + when "01" & x"42b" => DATA <= x"0a0d"; + when "01" & x"42c" => DATA <= x"0020"; + when "01" & x"42d" => DATA <= x"2020"; + when "01" & x"42e" => DATA <= x"5357"; + when "01" & x"42f" => DATA <= x"490a"; + when "01" & x"430" => DATA <= x"0d20"; + when "01" & x"431" => DATA <= x"2020"; + when "01" & x"432" => DATA <= x"5455"; + when "01" & x"433" => DATA <= x"4245"; + when "01" & x"434" => DATA <= x"0a0d"; + when "01" & x"435" => DATA <= x"0020"; + when "01" & x"436" => DATA <= x"2020"; + when "01" & x"437" => DATA <= x"4552"; + when "01" & x"438" => DATA <= x"524f"; + when "01" & x"439" => DATA <= x"5220"; + when "01" & x"43a" => DATA <= x"286e"; + when "01" & x"43b" => DATA <= x"756d"; + when "01" & x"43c" => DATA <= x"6265"; + when "01" & x"43d" => DATA <= x"7229"; + when "01" & x"43e" => DATA <= x"203c"; + when "01" & x"43f" => DATA <= x"6d65"; + when "01" & x"440" => DATA <= x"7373"; + when "01" & x"441" => DATA <= x"6167"; + when "01" & x"442" => DATA <= x"653e"; + when "01" & x"443" => DATA <= x"0a0d"; + when "01" & x"444" => DATA <= x"2020"; + when "01" & x"445" => DATA <= x"2046"; + when "01" & x"446" => DATA <= x"4c41"; + when "01" & x"447" => DATA <= x"5348"; + when "01" & x"448" => DATA <= x"203c"; + when "01" & x"449" => DATA <= x"6673"; + when "01" & x"44a" => DATA <= x"703e"; + when "01" & x"44b" => DATA <= x"0a0d"; + when "01" & x"44c" => DATA <= x"2020"; + when "01" & x"44d" => DATA <= x"2047"; + when "01" & x"44e" => DATA <= x"4f20"; + when "01" & x"44f" => DATA <= x"3c61"; + when "01" & x"450" => DATA <= x"6464"; + when "01" & x"451" => DATA <= x"723e"; + when "01" & x"452" => DATA <= x"0a0d"; + when "01" & x"453" => DATA <= x"2020"; + when "01" & x"454" => DATA <= x"204d"; + when "01" & x"455" => DATA <= x"4f4e"; + when "01" & x"456" => DATA <= x"0a0d"; + when "01" & x"457" => DATA <= x"2020"; + when "01" & x"458" => DATA <= x"2051"; + when "01" & x"459" => DATA <= x"5549"; + when "01" & x"45a" => DATA <= x"540a"; + when "01" & x"45b" => DATA <= x"0d20"; + when "01" & x"45c" => DATA <= x"2020"; + when "01" & x"45d" => DATA <= x"545a"; + when "01" & x"45e" => DATA <= x"4150"; + when "01" & x"45f" => DATA <= x"2028"; + when "01" & x"460" => DATA <= x"6164"; + when "01" & x"461" => DATA <= x"6472"; + when "01" & x"462" => DATA <= x"290a"; + when "01" & x"463" => DATA <= x"0d20"; + when "01" & x"464" => DATA <= x"2020"; + when "01" & x"465" => DATA <= x"5846"; + when "01" & x"466" => DATA <= x"4552"; + when "01" & x"467" => DATA <= x"203c"; + when "01" & x"468" => DATA <= x"696f"; + when "01" & x"469" => DATA <= x"2061"; + when "01" & x"46a" => DATA <= x"6464"; + when "01" & x"46b" => DATA <= x"722e"; + when "01" & x"46c" => DATA <= x"3e20"; + when "01" & x"46d" => DATA <= x"3c61"; + when "01" & x"46e" => DATA <= x"6464"; + when "01" & x"46f" => DATA <= x"723e"; + when "01" & x"470" => DATA <= x"203c"; + when "01" & x"471" => DATA <= x"6c65"; + when "01" & x"472" => DATA <= x"6e67"; + when "01" & x"473" => DATA <= x"7468"; + when "01" & x"474" => DATA <= x"3e20"; + when "01" & x"475" => DATA <= x"2852"; + when "01" & x"476" => DATA <= x"7c57"; + when "01" & x"477" => DATA <= x"2920"; + when "01" & x"478" => DATA <= x"2853"; + when "01" & x"479" => DATA <= x"7c4d"; + when "01" & x"47a" => DATA <= x"290a"; + when "01" & x"47b" => DATA <= x"0d00"; + when "01" & x"47c" => DATA <= x"5379"; + when "01" & x"47d" => DATA <= x"6e74"; + when "01" & x"47e" => DATA <= x"6178"; + when "01" & x"47f" => DATA <= x"3a20"; + when "01" & x"480" => DATA <= x"4552"; + when "01" & x"481" => DATA <= x"524f"; + when "01" & x"482" => DATA <= x"5220"; + when "01" & x"483" => DATA <= x"286e"; + when "01" & x"484" => DATA <= x"756d"; + when "01" & x"485" => DATA <= x"6265"; + when "01" & x"486" => DATA <= x"7229"; + when "01" & x"487" => DATA <= x"203c"; + when "01" & x"488" => DATA <= x"6d65"; + when "01" & x"489" => DATA <= x"7373"; + when "01" & x"48a" => DATA <= x"6167"; + when "01" & x"48b" => DATA <= x"653e"; + when "01" & x"48c" => DATA <= x"0a0d"; + when "01" & x"48d" => DATA <= x"0053"; + when "01" & x"48e" => DATA <= x"796e"; + when "01" & x"48f" => DATA <= x"7461"; + when "01" & x"490" => DATA <= x"783a"; + when "01" & x"491" => DATA <= x"2046"; + when "01" & x"492" => DATA <= x"4c41"; + when "01" & x"493" => DATA <= x"5348"; + when "01" & x"494" => DATA <= x"203c"; + when "01" & x"495" => DATA <= x"6673"; + when "01" & x"496" => DATA <= x"703e"; + when "01" & x"497" => DATA <= x"0a0d"; + when "01" & x"498" => DATA <= x"0053"; + when "01" & x"499" => DATA <= x"796e"; + when "01" & x"49a" => DATA <= x"7461"; + when "01" & x"49b" => DATA <= x"783a"; + when "01" & x"49c" => DATA <= x"2047"; + when "01" & x"49d" => DATA <= x"4f20"; + when "01" & x"49e" => DATA <= x"3c61"; + when "01" & x"49f" => DATA <= x"6464"; + when "01" & x"4a0" => DATA <= x"723e"; + when "01" & x"4a1" => DATA <= x"0a0d"; + when "01" & x"4a2" => DATA <= x"0053"; + when "01" & x"4a3" => DATA <= x"796e"; + when "01" & x"4a4" => DATA <= x"7461"; + when "01" & x"4a5" => DATA <= x"783a"; + when "01" & x"4a6" => DATA <= x"204d"; + when "01" & x"4a7" => DATA <= x"4f4e"; + when "01" & x"4a8" => DATA <= x"0a0d"; + when "01" & x"4a9" => DATA <= x"0053"; + when "01" & x"4aa" => DATA <= x"796e"; + when "01" & x"4ab" => DATA <= x"7461"; + when "01" & x"4ac" => DATA <= x"783a"; + when "01" & x"4ad" => DATA <= x"2054"; + when "01" & x"4ae" => DATA <= x"5a41"; + when "01" & x"4af" => DATA <= x"5020"; + when "01" & x"4b0" => DATA <= x"2861"; + when "01" & x"4b1" => DATA <= x"6464"; + when "01" & x"4b2" => DATA <= x"7229"; + when "01" & x"4b3" => DATA <= x"0a0d"; + when "01" & x"4b4" => DATA <= x"0053"; + when "01" & x"4b5" => DATA <= x"796e"; + when "01" & x"4b6" => DATA <= x"7461"; + when "01" & x"4b7" => DATA <= x"783a"; + when "01" & x"4b8" => DATA <= x"2058"; + when "01" & x"4b9" => DATA <= x"4645"; + when "01" & x"4ba" => DATA <= x"5220"; + when "01" & x"4bb" => DATA <= x"3c69"; + when "01" & x"4bc" => DATA <= x"6f20"; + when "01" & x"4bd" => DATA <= x"6164"; + when "01" & x"4be" => DATA <= x"6472"; + when "01" & x"4bf" => DATA <= x"2e3e"; + when "01" & x"4c0" => DATA <= x"203c"; + when "01" & x"4c1" => DATA <= x"6164"; + when "01" & x"4c2" => DATA <= x"6472"; + when "01" & x"4c3" => DATA <= x"3e20"; + when "01" & x"4c4" => DATA <= x"3c6c"; + when "01" & x"4c5" => DATA <= x"656e"; + when "01" & x"4c6" => DATA <= x"6774"; + when "01" & x"4c7" => DATA <= x"683e"; + when "01" & x"4c8" => DATA <= x"2028"; + when "01" & x"4c9" => DATA <= x"527c"; + when "01" & x"4ca" => DATA <= x"5729"; + when "01" & x"4cb" => DATA <= x"2028"; + when "01" & x"4cc" => DATA <= x"537c"; + when "01" & x"4cd" => DATA <= x"4d29"; + when "01" & x"4ce" => DATA <= x"0a0d"; + when "01" & x"4cf" => DATA <= x"0043"; + when "01" & x"4d0" => DATA <= x"6973"; + when "01" & x"4d1" => DATA <= x"634f"; + when "01" & x"4d2" => DATA <= x"5320"; + when "01" & x"4d3" => DATA <= x"4d6f"; + when "01" & x"4d4" => DATA <= x"6e69"; + when "01" & x"4d5" => DATA <= x"746f"; + when "01" & x"4d6" => DATA <= x"7200"; + when "01" & x"4d7" => DATA <= x"4220"; + when "01" & x"4d8" => DATA <= x"2042"; + when "01" & x"4d9" => DATA <= x"7974"; + when "01" & x"4da" => DATA <= x"6520"; + when "01" & x"4db" => DATA <= x"7365"; + when "01" & x"4dc" => DATA <= x"6172"; + when "01" & x"4dd" => DATA <= x"6368"; + when "01" & x"4de" => DATA <= x"203c"; + when "01" & x"4df" => DATA <= x"7374"; + when "01" & x"4e0" => DATA <= x"6172"; + when "01" & x"4e1" => DATA <= x"743e"; + when "01" & x"4e2" => DATA <= x"203c"; + when "01" & x"4e3" => DATA <= x"656e"; + when "01" & x"4e4" => DATA <= x"643e"; + when "01" & x"4e5" => DATA <= x"203c"; + when "01" & x"4e6" => DATA <= x"6279"; + when "01" & x"4e7" => DATA <= x"7465"; + when "01" & x"4e8" => DATA <= x"3e0a"; + when "01" & x"4e9" => DATA <= x"0d44"; + when "01" & x"4ea" => DATA <= x"2020"; + when "01" & x"4eb" => DATA <= x"4469"; + when "01" & x"4ec" => DATA <= x"7361"; + when "01" & x"4ed" => DATA <= x"7373"; + when "01" & x"4ee" => DATA <= x"656d"; + when "01" & x"4ef" => DATA <= x"626c"; + when "01" & x"4f0" => DATA <= x"6520"; + when "01" & x"4f1" => DATA <= x"3c61"; + when "01" & x"4f2" => DATA <= x"6464"; + when "01" & x"4f3" => DATA <= x"723e"; + when "01" & x"4f4" => DATA <= x"0a0d"; + when "01" & x"4f5" => DATA <= x"4520"; + when "01" & x"4f6" => DATA <= x"2045"; + when "01" & x"4f7" => DATA <= x"6469"; + when "01" & x"4f8" => DATA <= x"7420"; + when "01" & x"4f9" => DATA <= x"6d65"; + when "01" & x"4fa" => DATA <= x"6d6f"; + when "01" & x"4fb" => DATA <= x"7279"; + when "01" & x"4fc" => DATA <= x"203c"; + when "01" & x"4fd" => DATA <= x"6164"; + when "01" & x"4fe" => DATA <= x"6472"; + when "01" & x"4ff" => DATA <= x"3e0a"; + when "01" & x"500" => DATA <= x"0d46"; + when "01" & x"501" => DATA <= x"2020"; + when "01" & x"502" => DATA <= x"4669"; + when "01" & x"503" => DATA <= x"6c6c"; + when "01" & x"504" => DATA <= x"203c"; + when "01" & x"505" => DATA <= x"7374"; + when "01" & x"506" => DATA <= x"6172"; + when "01" & x"507" => DATA <= x"743e"; + when "01" & x"508" => DATA <= x"203c"; + when "01" & x"509" => DATA <= x"656e"; + when "01" & x"50a" => DATA <= x"643e"; + when "01" & x"50b" => DATA <= x"203c"; + when "01" & x"50c" => DATA <= x"6279"; + when "01" & x"50d" => DATA <= x"7465"; + when "01" & x"50e" => DATA <= x"3e0a"; + when "01" & x"50f" => DATA <= x"0d47"; + when "01" & x"510" => DATA <= x"2020"; + when "01" & x"511" => DATA <= x"476f"; + when "01" & x"512" => DATA <= x"203c"; + when "01" & x"513" => DATA <= x"6164"; + when "01" & x"514" => DATA <= x"6472"; + when "01" & x"515" => DATA <= x"3e0a"; + when "01" & x"516" => DATA <= x"0d48"; + when "01" & x"517" => DATA <= x"2020"; + when "01" & x"518" => DATA <= x"4865"; + when "01" & x"519" => DATA <= x"7820"; + when "01" & x"51a" => DATA <= x"6475"; + when "01" & x"51b" => DATA <= x"6d70"; + when "01" & x"51c" => DATA <= x"207b"; + when "01" & x"51d" => DATA <= x"6164"; + when "01" & x"51e" => DATA <= x"6472"; + when "01" & x"51f" => DATA <= x"7d0a"; + when "01" & x"520" => DATA <= x"0d4d"; + when "01" & x"521" => DATA <= x"2020"; + when "01" & x"522" => DATA <= x"4d6f"; + when "01" & x"523" => DATA <= x"7665"; + when "01" & x"524" => DATA <= x"206d"; + when "01" & x"525" => DATA <= x"656d"; + when "01" & x"526" => DATA <= x"6f72"; + when "01" & x"527" => DATA <= x"7920"; + when "01" & x"528" => DATA <= x"3c73"; + when "01" & x"529" => DATA <= x"6f75"; + when "01" & x"52a" => DATA <= x"7263"; + when "01" & x"52b" => DATA <= x"653e"; + when "01" & x"52c" => DATA <= x"203c"; + when "01" & x"52d" => DATA <= x"6465"; + when "01" & x"52e" => DATA <= x"7374"; + when "01" & x"52f" => DATA <= x"6e3e"; + when "01" & x"530" => DATA <= x"203c"; + when "01" & x"531" => DATA <= x"6c65"; + when "01" & x"532" => DATA <= x"6e67"; + when "01" & x"533" => DATA <= x"7468"; + when "01" & x"534" => DATA <= x"3e0a"; + when "01" & x"535" => DATA <= x"0d51"; + when "01" & x"536" => DATA <= x"2020"; + when "01" & x"537" => DATA <= x"5175"; + when "01" & x"538" => DATA <= x"6974"; + when "01" & x"539" => DATA <= x"0a0d"; + when "01" & x"53a" => DATA <= x"5220"; + when "01" & x"53b" => DATA <= x"2053"; + when "01" & x"53c" => DATA <= x"6574"; + when "01" & x"53d" => DATA <= x"2072"; + when "01" & x"53e" => DATA <= x"6567"; + when "01" & x"53f" => DATA <= x"6973"; + when "01" & x"540" => DATA <= x"7465"; + when "01" & x"541" => DATA <= x"7220"; + when "01" & x"542" => DATA <= x"636f"; + when "01" & x"543" => DATA <= x"6e74"; + when "01" & x"544" => DATA <= x"656e"; + when "01" & x"545" => DATA <= x"7473"; + when "01" & x"546" => DATA <= x"203c"; + when "01" & x"547" => DATA <= x"7265"; + when "01" & x"548" => DATA <= x"673e"; + when "01" & x"549" => DATA <= x"203c"; + when "01" & x"54a" => DATA <= x"7661"; + when "01" & x"54b" => DATA <= x"6c75"; + when "01" & x"54c" => DATA <= x"653e"; + when "01" & x"54d" => DATA <= x"0a0d"; + when "01" & x"54e" => DATA <= x"5320"; + when "01" & x"54f" => DATA <= x"2053"; + when "01" & x"550" => DATA <= x"7472"; + when "01" & x"551" => DATA <= x"696e"; + when "01" & x"552" => DATA <= x"6720"; + when "01" & x"553" => DATA <= x"7365"; + when "01" & x"554" => DATA <= x"6172"; + when "01" & x"555" => DATA <= x"6368"; + when "01" & x"556" => DATA <= x"203c"; + when "01" & x"557" => DATA <= x"7374"; + when "01" & x"558" => DATA <= x"6172"; + when "01" & x"559" => DATA <= x"743e"; + when "01" & x"55a" => DATA <= x"203c"; + when "01" & x"55b" => DATA <= x"656e"; + when "01" & x"55c" => DATA <= x"643e"; + when "01" & x"55d" => DATA <= x"203c"; + when "01" & x"55e" => DATA <= x"7374"; + when "01" & x"55f" => DATA <= x"7269"; + when "01" & x"560" => DATA <= x"6e67"; + when "01" & x"561" => DATA <= x"3e0a"; + when "01" & x"562" => DATA <= x"0d54"; + when "01" & x"563" => DATA <= x"2020"; + when "01" & x"564" => DATA <= x"5472"; + when "01" & x"565" => DATA <= x"6163"; + when "01" & x"566" => DATA <= x"650a"; + when "01" & x"567" => DATA <= x"0d56"; + when "01" & x"568" => DATA <= x"2020"; + when "01" & x"569" => DATA <= x"5669"; + when "01" & x"56a" => DATA <= x"6577"; + when "01" & x"56b" => DATA <= x"2072"; + when "01" & x"56c" => DATA <= x"6567"; + when "01" & x"56d" => DATA <= x"6973"; + when "01" & x"56e" => DATA <= x"7465"; + when "01" & x"56f" => DATA <= x"7220"; + when "01" & x"570" => DATA <= x"636f"; + when "01" & x"571" => DATA <= x"6e74"; + when "01" & x"572" => DATA <= x"656e"; + when "01" & x"573" => DATA <= x"7473"; + when "01" & x"574" => DATA <= x"0a0d"; + when "01" & x"575" => DATA <= x"2a20"; + when "01" & x"576" => DATA <= x"204f"; + when "01" & x"577" => DATA <= x"5320"; + when "01" & x"578" => DATA <= x"636f"; + when "01" & x"579" => DATA <= x"6d6d"; + when "01" & x"57a" => DATA <= x"616e"; + when "01" & x"57b" => DATA <= x"640a"; + when "01" & x"57c" => DATA <= x"0d3f"; + when "01" & x"57d" => DATA <= x"2020"; + when "01" & x"57e" => DATA <= x"4865"; + when "01" & x"57f" => DATA <= x"6c70"; + when "01" & x"580" => DATA <= x"0a0d"; + when "01" & x"581" => DATA <= x"0055"; + when "01" & x"582" => DATA <= x"6e6b"; + when "01" & x"583" => DATA <= x"6e6f"; + when "01" & x"584" => DATA <= x"776e"; + when "01" & x"585" => DATA <= x"2063"; + when "01" & x"586" => DATA <= x"6f6d"; + when "01" & x"587" => DATA <= x"6d61"; + when "01" & x"588" => DATA <= x"6e64"; + when "01" & x"589" => DATA <= x"2c20"; + when "01" & x"58a" => DATA <= x"7573"; + when "01" & x"58b" => DATA <= x"6520"; + when "01" & x"58c" => DATA <= x"3f20"; + when "01" & x"58d" => DATA <= x"666f"; + when "01" & x"58e" => DATA <= x"7220"; + when "01" & x"58f" => DATA <= x"6865"; + when "01" & x"590" => DATA <= x"6c70"; + when "01" & x"591" => DATA <= x"2e0a"; + when "01" & x"592" => DATA <= x"0d00"; + when "01" & x"593" => DATA <= x"542d"; + when "01" & x"594" => DATA <= x"532d"; + when "01" & x"595" => DATA <= x"2d49"; + when "01" & x"596" => DATA <= x"4e54"; + when "01" & x"597" => DATA <= x"2d2d"; + when "01" & x"598" => DATA <= x"2d58"; + when "01" & x"599" => DATA <= x"4e5a"; + when "01" & x"59a" => DATA <= x"5643"; + when "01" & x"59b" => DATA <= x"0046"; + when "01" & x"59c" => DATA <= x"696c"; + when "01" & x"59d" => DATA <= x"6520"; + when "01" & x"59e" => DATA <= x"6973"; + when "01" & x"59f" => DATA <= x"206e"; + when "01" & x"5a0" => DATA <= x"6f74"; + when "01" & x"5a1" => DATA <= x"2061"; + when "01" & x"5a2" => DATA <= x"2043"; + when "01" & x"5a3" => DATA <= x"6973"; + when "01" & x"5a4" => DATA <= x"634f"; + when "01" & x"5a5" => DATA <= x"5320"; + when "01" & x"5a6" => DATA <= x"6669"; + when "01" & x"5a7" => DATA <= x"6c65"; + when "01" & x"5a8" => DATA <= x"0a0d"; + when "01" & x"5a9" => DATA <= x"004e"; + when "01" & x"5aa" => DATA <= x"6f20"; + when "01" & x"5ab" => DATA <= x"726f"; + when "01" & x"5ac" => DATA <= x"6f6d"; + when "01" & x"5ad" => DATA <= x"0a0d"; + when "01" & x"5ae" => DATA <= x"0057"; + when "01" & x"5af" => DATA <= x"4152"; + when "01" & x"5b0" => DATA <= x"4e49"; + when "01" & x"5b1" => DATA <= x"4e47"; + when "01" & x"5b2" => DATA <= x"2120"; + when "01" & x"5b3" => DATA <= x"5448"; + when "01" & x"5b4" => DATA <= x"4953"; + when "01" & x"5b5" => DATA <= x"2057"; + when "01" & x"5b6" => DATA <= x"494c"; + when "01" & x"5b7" => DATA <= x"4c20"; + when "01" & x"5b8" => DATA <= x"464c"; + when "01" & x"5b9" => DATA <= x"4153"; + when "01" & x"5ba" => DATA <= x"4820"; + when "01" & x"5bb" => DATA <= x"5448"; + when "01" & x"5bc" => DATA <= x"4520"; + when "01" & x"5bd" => DATA <= x"4249"; + when "01" & x"5be" => DATA <= x"4f53"; + when "01" & x"5bf" => DATA <= x"0a0d"; + when "01" & x"5c0" => DATA <= x"5553"; + when "01" & x"5c1" => DATA <= x"4520"; + when "01" & x"5c2" => DATA <= x"4154"; + when "01" & x"5c3" => DATA <= x"2059"; + when "01" & x"5c4" => DATA <= x"4f55"; + when "01" & x"5c5" => DATA <= x"5220"; + when "01" & x"5c6" => DATA <= x"4f57"; + when "01" & x"5c7" => DATA <= x"4e20"; + when "01" & x"5c8" => DATA <= x"5249"; + when "01" & x"5c9" => DATA <= x"534b"; + when "01" & x"5ca" => DATA <= x"210a"; + when "01" & x"5cb" => DATA <= x"0d0a"; + when "01" & x"5cc" => DATA <= x"0d44"; + when "01" & x"5cd" => DATA <= x"6f20"; + when "01" & x"5ce" => DATA <= x"796f"; + when "01" & x"5cf" => DATA <= x"7520"; + when "01" & x"5d0" => DATA <= x"7761"; + when "01" & x"5d1" => DATA <= x"6e74"; + when "01" & x"5d2" => DATA <= x"2074"; + when "01" & x"5d3" => DATA <= x"6f20"; + when "01" & x"5d4" => DATA <= x"636f"; + when "01" & x"5d5" => DATA <= x"6e74"; + when "01" & x"5d6" => DATA <= x"696e"; + when "01" & x"5d7" => DATA <= x"7565"; + when "01" & x"5d8" => DATA <= x"3f20"; + when "01" & x"5d9" => DATA <= x"2859"; + when "01" & x"5da" => DATA <= x"2f4e"; + when "01" & x"5db" => DATA <= x"2920"; + when "01" & x"5dc" => DATA <= x"3a20"; + when "01" & x"5dd" => DATA <= x"0046"; + when "01" & x"5de" => DATA <= x"6c61"; + when "01" & x"5df" => DATA <= x"7368"; + when "01" & x"5e0" => DATA <= x"2052"; + when "01" & x"5e1" => DATA <= x"4f4d"; + when "01" & x"5e2" => DATA <= x"2049"; + when "01" & x"5e3" => DATA <= x"443d"; + when "01" & x"5e4" => DATA <= x"2400"; + when "01" & x"5e5" => DATA <= x"0a0d"; + when "01" & x"5e6" => DATA <= x"466c"; + when "01" & x"5e7" => DATA <= x"6173"; + when "01" & x"5e8" => DATA <= x"6869"; + when "01" & x"5e9" => DATA <= x"6e67"; + when "01" & x"5ea" => DATA <= x"2073"; + when "01" & x"5eb" => DATA <= x"6563"; + when "01" & x"5ec" => DATA <= x"746f"; + when "01" & x"5ed" => DATA <= x"7220"; + when "01" & x"5ee" => DATA <= x"0a0d"; + when "01" & x"5ef" => DATA <= x"0046"; + when "01" & x"5f0" => DATA <= x"6c61"; + when "01" & x"5f1" => DATA <= x"7368"; + when "01" & x"5f2" => DATA <= x"2063"; + when "01" & x"5f3" => DATA <= x"6f6d"; + when "01" & x"5f4" => DATA <= x"706c"; + when "01" & x"5f5" => DATA <= x"6574"; + when "01" & x"5f6" => DATA <= x"6564"; + when "01" & x"5f7" => DATA <= x"2073"; + when "01" & x"5f8" => DATA <= x"7563"; + when "01" & x"5f9" => DATA <= x"6365"; + when "01" & x"5fa" => DATA <= x"7373"; + when "01" & x"5fb" => DATA <= x"6675"; + when "01" & x"5fc" => DATA <= x"6c6c"; + when "01" & x"5fd" => DATA <= x"790a"; + when "01" & x"5fe" => DATA <= x"0d00"; + when "01" & x"5ff" => DATA <= x"466c"; + when "01" & x"600" => DATA <= x"6173"; + when "01" & x"601" => DATA <= x"6820"; + when "01" & x"602" => DATA <= x"6572"; + when "01" & x"603" => DATA <= x"726f"; + when "01" & x"604" => DATA <= x"7220"; + when "01" & x"605" => DATA <= x"6174"; + when "01" & x"606" => DATA <= x"2000"; + when "01" & x"607" => DATA <= x"4d6f"; + when "01" & x"608" => DATA <= x"6e54"; + when "01" & x"609" => DATA <= x"7565"; + when "01" & x"60a" => DATA <= x"5765"; + when "01" & x"60b" => DATA <= x"6454"; + when "01" & x"60c" => DATA <= x"6875"; + when "01" & x"60d" => DATA <= x"4672"; + when "01" & x"60e" => DATA <= x"6953"; + when "01" & x"60f" => DATA <= x"6174"; + when "01" & x"610" => DATA <= x"5375"; + when "01" & x"611" => DATA <= x"6e00"; + when "01" & x"612" => DATA <= x"4a61"; + when "01" & x"613" => DATA <= x"6e46"; + when "01" & x"614" => DATA <= x"6562"; + when "01" & x"615" => DATA <= x"4d61"; + when "01" & x"616" => DATA <= x"7241"; + when "01" & x"617" => DATA <= x"7072"; + when "01" & x"618" => DATA <= x"4d61"; + when "01" & x"619" => DATA <= x"794a"; + when "01" & x"61a" => DATA <= x"756e"; + when "01" & x"61b" => DATA <= x"4a75"; + when "01" & x"61c" => DATA <= x"6c41"; + when "01" & x"61d" => DATA <= x"7567"; + when "01" & x"61e" => DATA <= x"5365"; + when "01" & x"61f" => DATA <= x"704f"; + when "01" & x"620" => DATA <= x"6374"; + when "01" & x"621" => DATA <= x"4e6f"; + when "01" & x"622" => DATA <= x"7644"; + when "01" & x"623" => DATA <= x"6563"; + when "01" & x"624" => DATA <= x"000a"; + when "01" & x"625" => DATA <= x"0d42"; + when "01" & x"626" => DATA <= x"7573"; + when "01" & x"627" => DATA <= x"2065"; + when "01" & x"628" => DATA <= x"7272"; + when "01" & x"629" => DATA <= x"6f72"; + when "01" & x"62a" => DATA <= x"2061"; + when "01" & x"62b" => DATA <= x"7420"; + when "01" & x"62c" => DATA <= x"2400"; + when "01" & x"62d" => DATA <= x"0a0d"; + when "01" & x"62e" => DATA <= x"4164"; + when "01" & x"62f" => DATA <= x"6472"; + when "01" & x"630" => DATA <= x"6573"; + when "01" & x"631" => DATA <= x"7320"; + when "01" & x"632" => DATA <= x"6572"; + when "01" & x"633" => DATA <= x"726f"; + when "01" & x"634" => DATA <= x"7220"; + when "01" & x"635" => DATA <= x"6578"; + when "01" & x"636" => DATA <= x"6365"; + when "01" & x"637" => DATA <= x"7074"; + when "01" & x"638" => DATA <= x"696f"; + when "01" & x"639" => DATA <= x"6e20"; + when "01" & x"63a" => DATA <= x"6174"; + when "01" & x"63b" => DATA <= x"2024"; + when "01" & x"63c" => DATA <= x"0020"; + when "01" & x"63d" => DATA <= x"4163"; + when "01" & x"63e" => DATA <= x"6365"; + when "01" & x"63f" => DATA <= x"7373"; + when "01" & x"640" => DATA <= x"2074"; + when "01" & x"641" => DATA <= x"7970"; + when "01" & x"642" => DATA <= x"6526"; + when "01" & x"643" => DATA <= x"6675"; + when "01" & x"644" => DATA <= x"6e63"; + when "01" & x"645" => DATA <= x"7469"; + when "01" & x"646" => DATA <= x"6f6e"; + when "01" & x"647" => DATA <= x"3a00"; + when "01" & x"648" => DATA <= x"2041"; + when "01" & x"649" => DATA <= x"6363"; + when "01" & x"64a" => DATA <= x"6573"; + when "01" & x"64b" => DATA <= x"7320"; + when "01" & x"64c" => DATA <= x"6164"; + when "01" & x"64d" => DATA <= x"6472"; + when "01" & x"64e" => DATA <= x"6573"; + when "01" & x"64f" => DATA <= x"7320"; + when "01" & x"650" => DATA <= x"2020"; + when "01" & x"651" => DATA <= x"2020"; + when "01" & x"652" => DATA <= x"203a"; + when "01" & x"653" => DATA <= x"0020"; + when "01" & x"654" => DATA <= x"496e"; + when "01" & x"655" => DATA <= x"7374"; + when "01" & x"656" => DATA <= x"7275"; + when "01" & x"657" => DATA <= x"6374"; + when "01" & x"658" => DATA <= x"696f"; + when "01" & x"659" => DATA <= x"6e20"; + when "01" & x"65a" => DATA <= x"7265"; + when "01" & x"65b" => DATA <= x"6769"; + when "01" & x"65c" => DATA <= x"7374"; + when "01" & x"65d" => DATA <= x"6572"; + when "01" & x"65e" => DATA <= x"3a00"; + when "01" & x"65f" => DATA <= x"2053"; + when "01" & x"660" => DATA <= x"7461"; + when "01" & x"661" => DATA <= x"7475"; + when "01" & x"662" => DATA <= x"7320"; + when "01" & x"663" => DATA <= x"7265"; + when "01" & x"664" => DATA <= x"6769"; + when "01" & x"665" => DATA <= x"7374"; + when "01" & x"666" => DATA <= x"6572"; + when "01" & x"667" => DATA <= x"2020"; + when "01" & x"668" => DATA <= x"2020"; + when "01" & x"669" => DATA <= x"203a"; + when "01" & x"66a" => DATA <= x"5452"; + when "01" & x"66b" => DATA <= x"534d"; + when "01" & x"66c" => DATA <= x"2d49"; + when "01" & x"66d" => DATA <= x"4e54"; + when "01" & x"66e" => DATA <= x"2d2d"; + when "01" & x"66f" => DATA <= x"2d58"; + when "01" & x"670" => DATA <= x"4e5a"; + when "01" & x"671" => DATA <= x"5643"; + when "01" & x"672" => DATA <= x"0a0d"; + when "01" & x"673" => DATA <= x"2020"; + when "01" & x"674" => DATA <= x"2020"; + when "01" & x"675" => DATA <= x"2020"; + when "01" & x"676" => DATA <= x"2020"; + when "01" & x"677" => DATA <= x"2020"; + when "01" & x"678" => DATA <= x"2020"; + when "01" & x"679" => DATA <= x"2020"; + when "01" & x"67a" => DATA <= x"2020"; + when "01" & x"67b" => DATA <= x"2020"; + when "01" & x"67c" => DATA <= x"2020"; + when "01" & x"67d" => DATA <= x"2020"; + when "01" & x"67e" => DATA <= x"0000"; + when "01" & x"67f" => DATA <= x"0100"; + when "01" & x"680" => DATA <= x"8000"; + when "01" & x"681" => DATA <= x"0100"; + when "01" & x"682" => DATA <= x"496c"; + when "01" & x"683" => DATA <= x"6c65"; + when "01" & x"684" => DATA <= x"6761"; + when "01" & x"685" => DATA <= x"6c20"; + when "01" & x"686" => DATA <= x"696e"; + when "01" & x"687" => DATA <= x"7374"; + when "01" & x"688" => DATA <= x"7275"; + when "01" & x"689" => DATA <= x"6374"; + when "01" & x"68a" => DATA <= x"696f"; + when "01" & x"68b" => DATA <= x"6e00"; + when "01" & x"68c" => DATA <= x"8000"; + when "01" & x"68d" => DATA <= x"0104"; + when "01" & x"68e" => DATA <= x"556e"; + when "01" & x"68f" => DATA <= x"6b6e"; + when "01" & x"690" => DATA <= x"6f77"; + when "01" & x"691" => DATA <= x"6e20"; + when "01" & x"692" => DATA <= x"4952"; + when "01" & x"693" => DATA <= x"5120"; + when "01" & x"694" => DATA <= x"6174"; + when "01" & x"695" => DATA <= x"2026"; + when "01" & x"696" => DATA <= x"0000"; + when "01" & x"697" => DATA <= x"0169"; + when "01" & x"698" => DATA <= x"8000"; + when "01" & x"699" => DATA <= x"0169"; + when "01" & x"69a" => DATA <= x"496e"; + when "01" & x"69b" => DATA <= x"7465"; + when "01" & x"69c" => DATA <= x"6765"; + when "01" & x"69d" => DATA <= x"7220"; + when "01" & x"69e" => DATA <= x"6469"; + when "01" & x"69f" => DATA <= x"7669"; + when "01" & x"6a0" => DATA <= x"6465"; + when "01" & x"6a1" => DATA <= x"2062"; + when "01" & x"6a2" => DATA <= x"7920"; + when "01" & x"6a3" => DATA <= x"7a65"; + when "01" & x"6a4" => DATA <= x"726f"; + when "01" & x"6a5" => DATA <= x"0008"; + when "01" & x"6a6" => DATA <= x"8000"; + when "01" & x"6a7" => DATA <= x"0008"; + when "01" & x"6a8" => DATA <= x"5072"; + when "01" & x"6a9" => DATA <= x"6976"; + when "01" & x"6aa" => DATA <= x"696c"; + when "01" & x"6ab" => DATA <= x"6567"; + when "01" & x"6ac" => DATA <= x"6520"; + when "01" & x"6ad" => DATA <= x"7669"; + when "01" & x"6ae" => DATA <= x"6f6c"; + when "01" & x"6af" => DATA <= x"6174"; + when "01" & x"6b0" => DATA <= x"696f"; + when "01" & x"6b1" => DATA <= x"6e00"; + when "01" & x"6b2" => DATA <= x"0000"; + when "01" & x"6b3" => DATA <= x"0001"; + when "01" & x"6b4" => DATA <= x"4f75"; + when "01" & x"6b5" => DATA <= x"7420"; + when "01" & x"6b6" => DATA <= x"6f66"; + when "01" & x"6b7" => DATA <= x"2072"; + when "01" & x"6b8" => DATA <= x"616e"; + when "01" & x"6b9" => DATA <= x"6765"; + when "01" & x"6ba" => DATA <= x"0000"; + when "01" & x"6bb" => DATA <= x"0011"; + when "01" & x"6bc" => DATA <= x"0000"; + when "01" & x"6bd" => DATA <= x"0011"; + when "01" & x"6be" => DATA <= x"4573"; + when "01" & x"6bf" => DATA <= x"6361"; + when "01" & x"6c0" => DATA <= x"7065"; + when "01" & x"6c1" => DATA <= x"00ff"; + when "01" & x"6c2" => DATA <= x"0000"; + when "01" & x"6c3" => DATA <= x"00ff"; + when "01" & x"6c4" => DATA <= x"5468"; + when "01" & x"6c5" => DATA <= x"6973"; + when "01" & x"6c6" => DATA <= x"2069"; + when "01" & x"6c7" => DATA <= x"7320"; + when "01" & x"6c8" => DATA <= x"6e6f"; + when "01" & x"6c9" => DATA <= x"7420"; + when "01" & x"6ca" => DATA <= x"6120"; + when "01" & x"6cb" => DATA <= x"6c61"; + when "01" & x"6cc" => DATA <= x"6e67"; + when "01" & x"6cd" => DATA <= x"7561"; + when "01" & x"6ce" => DATA <= x"6765"; + when "01" & x"6cf" => DATA <= x"00ff"; + when "01" & x"6d0" => DATA <= x"0000"; + when "01" & x"6d1" => DATA <= x"00ff"; + when "01" & x"6d2" => DATA <= x"4920"; + when "01" & x"6d3" => DATA <= x"6361"; + when "01" & x"6d4" => DATA <= x"6e6e"; + when "01" & x"6d5" => DATA <= x"6f74"; + when "01" & x"6d6" => DATA <= x"2072"; + when "01" & x"6d7" => DATA <= x"756e"; + when "01" & x"6d8" => DATA <= x"2074"; + when "01" & x"6d9" => DATA <= x"6869"; + when "01" & x"6da" => DATA <= x"7320"; + when "01" & x"6db" => DATA <= x"636f"; + when "01" & x"6dc" => DATA <= x"6465"; + when "01" & x"6dd" => DATA <= x"00ff"; + when "01" & x"6de" => DATA <= x"0000"; + when "01" & x"6df" => DATA <= x"00ff"; + when "01" & x"6e0" => DATA <= x"556e"; + when "01" & x"6e1" => DATA <= x"6b6e"; + when "01" & x"6e2" => DATA <= x"6f77"; + when "01" & x"6e3" => DATA <= x"6e20"; + when "01" & x"6e4" => DATA <= x"6578"; + when "01" & x"6e5" => DATA <= x"6365"; + when "01" & x"6e6" => DATA <= x"7074"; + when "01" & x"6e7" => DATA <= x"696f"; + when "01" & x"6e8" => DATA <= x"6e00"; + when "01" & x"6e9" => DATA <= x"00ff"; + when "01" & x"6ea" => DATA <= x"0000"; + when "01" & x"6eb" => DATA <= x"00ff"; + when "01" & x"6ec" => DATA <= x"4e6f"; + when "01" & x"6ed" => DATA <= x"7420"; + when "01" & x"6ee" => DATA <= x"7375"; + when "01" & x"6ef" => DATA <= x"7070"; + when "01" & x"6f0" => DATA <= x"6f72"; + when "01" & x"6f1" => DATA <= x"7465"; + when "01" & x"6f2" => DATA <= x"6400"; + when "01" & x"6f3" => DATA <= x"016a"; + when "01" & x"6f4" => DATA <= x"0000"; + when "01" & x"6f5" => DATA <= x"016a"; + when "01" & x"6f6" => DATA <= x"4261"; + when "01" & x"6f7" => DATA <= x"6420"; + when "01" & x"6f8" => DATA <= x"6261"; + when "01" & x"6f9" => DATA <= x"7365"; + when "01" & x"6fa" => DATA <= x"0000"; + when "01" & x"6fb" => DATA <= x"016b"; + when "01" & x"6fc" => DATA <= x"0000"; + when "01" & x"6fd" => DATA <= x"016b"; + when "01" & x"6fe" => DATA <= x"4261"; + when "01" & x"6ff" => DATA <= x"6420"; + when "01" & x"700" => DATA <= x"6e75"; + when "01" & x"701" => DATA <= x"6d62"; + when "01" & x"702" => DATA <= x"6572"; + when "01" & x"703" => DATA <= x"006c"; + when "01" & x"704" => DATA <= x"0000"; + when "01" & x"705" => DATA <= x"016c"; + when "01" & x"706" => DATA <= x"4e75"; + when "01" & x"707" => DATA <= x"6d62"; + when "01" & x"708" => DATA <= x"6572"; + when "01" & x"709" => DATA <= x"2074"; + when "01" & x"70a" => DATA <= x"6f6f"; + when "01" & x"70b" => DATA <= x"2062"; + when "01" & x"70c" => DATA <= x"6967"; + when "01" & x"70d" => DATA <= x"00b0"; + when "01" & x"70e" => DATA <= x"0000"; + when "01" & x"70f" => DATA <= x"01b0"; + when "01" & x"710" => DATA <= x"4261"; + when "01" & x"711" => DATA <= x"6420"; + when "01" & x"712" => DATA <= x"656e"; + when "01" & x"713" => DATA <= x"7669"; + when "01" & x"714" => DATA <= x"726f"; + when "01" & x"715" => DATA <= x"6e6d"; + when "01" & x"716" => DATA <= x"656e"; + when "01" & x"717" => DATA <= x"7420"; + when "01" & x"718" => DATA <= x"6e75"; + when "01" & x"719" => DATA <= x"6d62"; + when "01" & x"71a" => DATA <= x"6572"; + when "01" & x"71b" => DATA <= x"00e6"; + when "01" & x"71c" => DATA <= x"0000"; + when "01" & x"71d" => DATA <= x"01e6"; + when "01" & x"71e" => DATA <= x"4e6f"; + when "01" & x"71f" => DATA <= x"2073"; + when "01" & x"720" => DATA <= x"7563"; + when "01" & x"721" => DATA <= x"6820"; + when "01" & x"722" => DATA <= x"5357"; + when "01" & x"723" => DATA <= x"4900"; + when "01" & x"724" => DATA <= x"0000"; + when "01" & x"725" => DATA <= x"01a0"; + when "01" & x"726" => DATA <= x"4261"; + when "01" & x"727" => DATA <= x"6420"; + when "01" & x"728" => DATA <= x"7665"; + when "01" & x"729" => DATA <= x"6374"; + when "01" & x"72a" => DATA <= x"6f72"; + when "01" & x"72b" => DATA <= x"206e"; + when "01" & x"72c" => DATA <= x"756d"; + when "01" & x"72d" => DATA <= x"6265"; + when "01" & x"72e" => DATA <= x"7200"; + when "01" & x"72f" => DATA <= x"01e2"; + when "01" & x"730" => DATA <= x"0000"; + when "01" & x"731" => DATA <= x"01e2"; + when "01" & x"732" => DATA <= x"5265"; + when "01" & x"733" => DATA <= x"7475"; + when "01" & x"734" => DATA <= x"726e"; + when "01" & x"735" => DATA <= x"2063"; + when "01" & x"736" => DATA <= x"6f64"; + when "01" & x"737" => DATA <= x"6520"; + when "01" & x"738" => DATA <= x"6c69"; + when "01" & x"739" => DATA <= x"6d69"; + when "01" & x"73a" => DATA <= x"7420"; + when "01" & x"73b" => DATA <= x"6578"; + when "01" & x"73c" => DATA <= x"6365"; + when "01" & x"73d" => DATA <= x"6564"; + when "01" & x"73e" => DATA <= x"6564"; + when "01" & x"73f" => DATA <= x"00e4"; + when "01" & x"740" => DATA <= x"0000"; + when "01" & x"741" => DATA <= x"01e4"; + when "01" & x"742" => DATA <= x"4275"; + when "01" & x"743" => DATA <= x"6666"; + when "01" & x"744" => DATA <= x"6572"; + when "01" & x"745" => DATA <= x"206f"; + when "01" & x"746" => DATA <= x"7665"; + when "01" & x"747" => DATA <= x"7266"; + when "01" & x"748" => DATA <= x"6c6f"; + when "01" & x"749" => DATA <= x"7700"; + when "01" & x"74a" => DATA <= x"0000"; + when "01" & x"74b" => DATA <= x"01e6"; + when "01" & x"74c" => DATA <= x"5357"; + when "01" & x"74d" => DATA <= x"4920"; + when "01" & x"74e" => DATA <= x"6e61"; + when "01" & x"74f" => DATA <= x"6d65"; + when "01" & x"750" => DATA <= x"206e"; + when "01" & x"751" => DATA <= x"6f74"; + when "01" & x"752" => DATA <= x"206b"; + when "01" & x"753" => DATA <= x"6e6f"; + when "01" & x"754" => DATA <= x"776e"; + when "01" & x"755" => DATA <= x"00c2"; + when "01" & x"756" => DATA <= x"0000"; + when "01" & x"757" => DATA <= x"02c2"; + when "01" & x"758" => DATA <= x"556e"; + when "01" & x"759" => DATA <= x"6b6e"; + when "01" & x"75a" => DATA <= x"6f77"; + when "01" & x"75b" => DATA <= x"6e20"; + when "01" & x"75c" => DATA <= x"2725"; + when "01" & x"75d" => DATA <= x"2720"; + when "01" & x"75e" => DATA <= x"6669"; + when "01" & x"75f" => DATA <= x"656c"; + when "01" & x"760" => DATA <= x"6400"; + when "01" & x"761" => DATA <= x"0306"; + when "01" & x"762" => DATA <= x"0000"; + when "01" & x"763" => DATA <= x"0306"; + when "01" & x"764" => DATA <= x"4261"; + when "01" & x"765" => DATA <= x"6420"; + when "01" & x"766" => DATA <= x"7374"; + when "01" & x"767" => DATA <= x"6174"; + when "01" & x"768" => DATA <= x"696f"; + when "01" & x"769" => DATA <= x"6e20"; + when "01" & x"76a" => DATA <= x"6e75"; + when "01" & x"76b" => DATA <= x"6d62"; + when "01" & x"76c" => DATA <= x"6572"; + when "01" & x"76d" => DATA <= x"0007"; + when "01" & x"76e" => DATA <= x"0000"; + when "01" & x"76f" => DATA <= x"0307"; + when "01" & x"770" => DATA <= x"4261"; + when "01" & x"771" => DATA <= x"6420"; + when "01" & x"772" => DATA <= x"6e65"; + when "01" & x"773" => DATA <= x"7477"; + when "01" & x"774" => DATA <= x"6f72"; + when "01" & x"775" => DATA <= x"6b20"; + when "01" & x"776" => DATA <= x"6e75"; + when "01" & x"777" => DATA <= x"6d62"; + when "01" & x"778" => DATA <= x"6572"; + when "01" & x"779" => DATA <= x"0001"; + when "01" & x"77a" => DATA <= x"0000"; + when "01" & x"77b" => DATA <= x"0401"; + when "01" & x"77c" => DATA <= x"4261"; + when "01" & x"77d" => DATA <= x"6420"; + when "01" & x"77e" => DATA <= x"4653"; + when "01" & x"77f" => DATA <= x"436f"; + when "01" & x"780" => DATA <= x"6e74"; + when "01" & x"781" => DATA <= x"726f"; + when "01" & x"782" => DATA <= x"6c20"; + when "01" & x"783" => DATA <= x"6361"; + when "01" & x"784" => DATA <= x"6c6c"; + when "01" & x"785" => DATA <= x"0007"; + when "01" & x"786" => DATA <= x"0000"; + when "01" & x"787" => DATA <= x"0807"; + when "01" & x"788" => DATA <= x"556e"; + when "01" & x"789" => DATA <= x"616c"; + when "01" & x"78a" => DATA <= x"6967"; + when "01" & x"78b" => DATA <= x"6e65"; + when "01" & x"78c" => DATA <= x"6420"; + when "01" & x"78d" => DATA <= x"6164"; + when "01" & x"78e" => DATA <= x"6472"; + when "01" & x"78f" => DATA <= x"6573"; + when "01" & x"790" => DATA <= x"7300"; + when "01" & x"791" => DATA <= x"0000"; + when "01" & x"792" => DATA <= x"0000"; + when "01" & x"793" => DATA <= x"0000"; + when "01" & x"794" => DATA <= x"0005"; + when "01" & x"795" => DATA <= x"0005"; + when "01" & x"796" => DATA <= x"0205"; + when "01" & x"797" => DATA <= x"080e"; + when "01" & x"798" => DATA <= x"0401"; + when "01" & x"799" => DATA <= x"0105"; + when "01" & x"79a" => DATA <= x"0001"; + when "01" & x"79b" => DATA <= x"2010"; + when "01" & x"79c" => DATA <= x"0d00"; + when "01" & x"79d" => DATA <= x"0480"; + when "01" & x"79e" => DATA <= x"0500"; + when "01" & x"79f" => DATA <= x"0500"; + when "01" & x"7a0" => DATA <= x"0500"; + when "01" & x"7a1" => DATA <= x"0000"; + when "01" & x"7a2" => DATA <= x"0509"; + when "01" & x"7a3" => DATA <= x"0500"; + when "01" & x"7a4" => DATA <= x"0818"; + when "01" & x"7a5" => DATA <= x"0001"; + when "01" & x"7a6" => DATA <= x"0d80"; + when "01" & x"7a7" => DATA <= x"0480"; + when "01" & x"7a8" => DATA <= x"0000"; + when "01" & x"7a9" => DATA <= x"0000"; + when "01" & x"7aa" => DATA <= x"003f"; + when "01" & x"7ab" => DATA <= x"09e6"; + when "01" & x"7ac" => DATA <= x"4f53"; + when "01" & x"7ad" => DATA <= x"5f57"; + when "01" & x"7ae" => DATA <= x"7269"; + when "01" & x"7af" => DATA <= x"7465"; + when "01" & x"7b0" => DATA <= x"4300"; + when "01" & x"7b1" => DATA <= x"0000"; + when "01" & x"7b2" => DATA <= x"0000"; + when "01" & x"7b3" => DATA <= x"0001"; + when "01" & x"7b4" => DATA <= x"003f"; + when "01" & x"7b5" => DATA <= x"09ec"; + when "01" & x"7b6" => DATA <= x"4f53"; + when "01" & x"7b7" => DATA <= x"5f57"; + when "01" & x"7b8" => DATA <= x"7269"; + when "01" & x"7b9" => DATA <= x"7465"; + when "01" & x"7ba" => DATA <= x"5300"; + when "01" & x"7bb" => DATA <= x"0000"; + when "01" & x"7bc" => DATA <= x"0000"; + when "01" & x"7bd" => DATA <= x"0002"; + when "01" & x"7be" => DATA <= x"003f"; + when "01" & x"7bf" => DATA <= x"09fe"; + when "01" & x"7c0" => DATA <= x"4f53"; + when "01" & x"7c1" => DATA <= x"5f57"; + when "01" & x"7c2" => DATA <= x"7269"; + when "01" & x"7c3" => DATA <= x"7465"; + when "01" & x"7c4" => DATA <= x"3000"; + when "01" & x"7c5" => DATA <= x"0000"; + when "01" & x"7c6" => DATA <= x"0000"; + when "01" & x"7c7" => DATA <= x"0003"; + when "01" & x"7c8" => DATA <= x"003f"; + when "01" & x"7c9" => DATA <= x"0a12"; + when "01" & x"7ca" => DATA <= x"4f53"; + when "01" & x"7cb" => DATA <= x"5f4e"; + when "01" & x"7cc" => DATA <= x"6577"; + when "01" & x"7cd" => DATA <= x"4c69"; + when "01" & x"7ce" => DATA <= x"6e65"; + when "01" & x"7cf" => DATA <= x"0000"; + when "01" & x"7d0" => DATA <= x"0000"; + when "01" & x"7d1" => DATA <= x"0004"; + when "01" & x"7d2" => DATA <= x"0000"; + when "01" & x"7d3" => DATA <= x"0410"; + when "01" & x"7d4" => DATA <= x"4f53"; + when "01" & x"7d5" => DATA <= x"5f52"; + when "01" & x"7d6" => DATA <= x"6561"; + when "01" & x"7d7" => DATA <= x"6443"; + when "01" & x"7d8" => DATA <= x"0000"; + when "01" & x"7d9" => DATA <= x"0000"; + when "01" & x"7da" => DATA <= x"0000"; + when "01" & x"7db" => DATA <= x"0005"; + when "01" & x"7dc" => DATA <= x"0000"; + when "01" & x"7dd" => DATA <= x"0414"; + when "01" & x"7de" => DATA <= x"4f53"; + when "01" & x"7df" => DATA <= x"5f43"; + when "01" & x"7e0" => DATA <= x"4c49"; + when "01" & x"7e1" => DATA <= x"0000"; + when "01" & x"7e2" => DATA <= x"0000"; + when "01" & x"7e3" => DATA <= x"0006"; + when "01" & x"7e4" => DATA <= x"0000"; + when "01" & x"7e5" => DATA <= x"0418"; + when "01" & x"7e6" => DATA <= x"4f53"; + when "01" & x"7e7" => DATA <= x"5f42"; + when "01" & x"7e8" => DATA <= x"7974"; + when "01" & x"7e9" => DATA <= x"6500"; + when "01" & x"7ea" => DATA <= x"0000"; + when "01" & x"7eb" => DATA <= x"0007"; + when "01" & x"7ec" => DATA <= x"0000"; + when "01" & x"7ed" => DATA <= x"041c"; + when "01" & x"7ee" => DATA <= x"4f53"; + when "01" & x"7ef" => DATA <= x"5f57"; + when "01" & x"7f0" => DATA <= x"6f72"; + when "01" & x"7f1" => DATA <= x"6400"; + when "01" & x"7f2" => DATA <= x"0000"; + when "01" & x"7f3" => DATA <= x"0008"; + when "01" & x"7f4" => DATA <= x"0000"; + when "01" & x"7f5" => DATA <= x"0420"; + when "01" & x"7f6" => DATA <= x"4f53"; + when "01" & x"7f7" => DATA <= x"5f46"; + when "01" & x"7f8" => DATA <= x"696c"; + when "01" & x"7f9" => DATA <= x"6500"; + when "01" & x"7fa" => DATA <= x"0000"; + when "01" & x"7fb" => DATA <= x"0009"; + when "01" & x"7fc" => DATA <= x"0000"; + when "01" & x"7fd" => DATA <= x"0424"; + when "01" & x"7fe" => DATA <= x"4f53"; + when "01" & x"7ff" => DATA <= x"5f41"; + when "01" & x"800" => DATA <= x"7267"; + when "01" & x"801" => DATA <= x"7300"; + when "01" & x"802" => DATA <= x"0000"; + when "01" & x"803" => DATA <= x"000a"; + when "01" & x"804" => DATA <= x"0000"; + when "01" & x"805" => DATA <= x"0428"; + when "01" & x"806" => DATA <= x"4f53"; + when "01" & x"807" => DATA <= x"5f42"; + when "01" & x"808" => DATA <= x"4765"; + when "01" & x"809" => DATA <= x"7400"; + when "01" & x"80a" => DATA <= x"0000"; + when "01" & x"80b" => DATA <= x"000b"; + when "01" & x"80c" => DATA <= x"0000"; + when "01" & x"80d" => DATA <= x"042c"; + when "01" & x"80e" => DATA <= x"4f53"; + when "01" & x"80f" => DATA <= x"5f42"; + when "01" & x"810" => DATA <= x"5075"; + when "01" & x"811" => DATA <= x"7400"; + when "01" & x"812" => DATA <= x"0000"; + when "01" & x"813" => DATA <= x"000c"; + when "01" & x"814" => DATA <= x"0000"; + when "01" & x"815" => DATA <= x"0430"; + when "01" & x"816" => DATA <= x"4f53"; + when "01" & x"817" => DATA <= x"5f47"; + when "01" & x"818" => DATA <= x"4250"; + when "01" & x"819" => DATA <= x"4200"; + when "01" & x"81a" => DATA <= x"0000"; + when "01" & x"81b" => DATA <= x"000d"; + when "01" & x"81c" => DATA <= x"0000"; + when "01" & x"81d" => DATA <= x"0434"; + when "01" & x"81e" => DATA <= x"4f53"; + when "01" & x"81f" => DATA <= x"5f46"; + when "01" & x"820" => DATA <= x"696e"; + when "01" & x"821" => DATA <= x"6400"; + when "01" & x"822" => DATA <= x"0000"; + when "01" & x"823" => DATA <= x"000e"; + when "01" & x"824" => DATA <= x"0000"; + when "01" & x"825" => DATA <= x"0438"; + when "01" & x"826" => DATA <= x"4f53"; + when "01" & x"827" => DATA <= x"5f52"; + when "01" & x"828" => DATA <= x"6561"; + when "01" & x"829" => DATA <= x"644c"; + when "01" & x"82a" => DATA <= x"696e"; + when "01" & x"82b" => DATA <= x"6500"; + when "01" & x"82c" => DATA <= x"0000"; + when "01" & x"82d" => DATA <= x"000f"; + when "01" & x"82e" => DATA <= x"003f"; + when "01" & x"82f" => DATA <= x"0df8"; + when "01" & x"830" => DATA <= x"4f53"; + when "01" & x"831" => DATA <= x"5f43"; + when "01" & x"832" => DATA <= x"6f6e"; + when "01" & x"833" => DATA <= x"7472"; + when "01" & x"834" => DATA <= x"6f6c"; + when "01" & x"835" => DATA <= x"0000"; + when "01" & x"836" => DATA <= x"0000"; + when "01" & x"837" => DATA <= x"0010"; + when "01" & x"838" => DATA <= x"003f"; + when "01" & x"839" => DATA <= x"0e30"; + when "01" & x"83a" => DATA <= x"4f53"; + when "01" & x"83b" => DATA <= x"5f47"; + when "01" & x"83c" => DATA <= x"6574"; + when "01" & x"83d" => DATA <= x"456e"; + when "01" & x"83e" => DATA <= x"7600"; + when "01" & x"83f" => DATA <= x"0000"; + when "01" & x"840" => DATA <= x"0000"; + when "01" & x"841" => DATA <= x"0011"; + when "01" & x"842" => DATA <= x"003f"; + when "01" & x"843" => DATA <= x"0e44"; + when "01" & x"844" => DATA <= x"4f53"; + when "01" & x"845" => DATA <= x"5f45"; + when "01" & x"846" => DATA <= x"7869"; + when "01" & x"847" => DATA <= x"7400"; + when "01" & x"848" => DATA <= x"0000"; + when "01" & x"849" => DATA <= x"0012"; + when "01" & x"84a" => DATA <= x"003f"; + when "01" & x"84b" => DATA <= x"0e4a"; + when "01" & x"84c" => DATA <= x"4f53"; + when "01" & x"84d" => DATA <= x"5f53"; + when "01" & x"84e" => DATA <= x"6574"; + when "01" & x"84f" => DATA <= x"456e"; + when "01" & x"850" => DATA <= x"7600"; + when "01" & x"851" => DATA <= x"0000"; + when "01" & x"852" => DATA <= x"0000"; + when "01" & x"853" => DATA <= x"0013"; + when "01" & x"854" => DATA <= x"003f"; + when "01" & x"855" => DATA <= x"0e9a"; + when "01" & x"856" => DATA <= x"4f53"; + when "01" & x"857" => DATA <= x"5f49"; + when "01" & x"858" => DATA <= x"6e74"; + when "01" & x"859" => DATA <= x"4f6e"; + when "01" & x"85a" => DATA <= x"0000"; + when "01" & x"85b" => DATA <= x"0000"; + when "01" & x"85c" => DATA <= x"0000"; + when "01" & x"85d" => DATA <= x"0014"; + when "01" & x"85e" => DATA <= x"003f"; + when "01" & x"85f" => DATA <= x"0ea0"; + when "01" & x"860" => DATA <= x"4f53"; + when "01" & x"861" => DATA <= x"5f49"; + when "01" & x"862" => DATA <= x"6e74"; + when "01" & x"863" => DATA <= x"4f66"; + when "01" & x"864" => DATA <= x"6600"; + when "01" & x"865" => DATA <= x"0000"; + when "01" & x"866" => DATA <= x"0000"; + when "01" & x"867" => DATA <= x"0015"; + when "01" & x"868" => DATA <= x"003f"; + when "01" & x"869" => DATA <= x"0ea6"; + when "01" & x"86a" => DATA <= x"4f53"; + when "01" & x"86b" => DATA <= x"5f43"; + when "01" & x"86c" => DATA <= x"616c"; + when "01" & x"86d" => DATA <= x"6c42"; + when "01" & x"86e" => DATA <= x"6163"; + when "01" & x"86f" => DATA <= x"6b00"; + when "01" & x"870" => DATA <= x"0000"; + when "01" & x"871" => DATA <= x"0016"; + when "01" & x"872" => DATA <= x"003f"; + when "01" & x"873" => DATA <= x"0ec6"; + when "01" & x"874" => DATA <= x"4f53"; + when "01" & x"875" => DATA <= x"5f45"; + when "01" & x"876" => DATA <= x"6e74"; + when "01" & x"877" => DATA <= x"6572"; + when "01" & x"878" => DATA <= x"4f53"; + when "01" & x"879" => DATA <= x"0000"; + when "01" & x"87a" => DATA <= x"0000"; + when "01" & x"87b" => DATA <= x"0018"; + when "01" & x"87c" => DATA <= x"003f"; + when "01" & x"87d" => DATA <= x"0ecc"; + when "01" & x"87e" => DATA <= x"4f53"; + when "01" & x"87f" => DATA <= x"5f42"; + when "01" & x"880" => DATA <= x"7265"; + when "01" & x"881" => DATA <= x"616b"; + when "01" & x"882" => DATA <= x"4374"; + when "01" & x"883" => DATA <= x"726c"; + when "01" & x"884" => DATA <= x"0000"; + when "01" & x"885" => DATA <= x"0000"; + when "01" & x"886" => DATA <= x"0000"; + when "01" & x"887" => DATA <= x"0019"; + when "01" & x"888" => DATA <= x"003f"; + when "01" & x"889" => DATA <= x"0eec"; + when "01" & x"88a" => DATA <= x"4f53"; + when "01" & x"88b" => DATA <= x"5f55"; + when "01" & x"88c" => DATA <= x"6e75"; + when "01" & x"88d" => DATA <= x"7365"; + when "01" & x"88e" => DATA <= x"6453"; + when "01" & x"88f" => DATA <= x"5749"; + when "01" & x"890" => DATA <= x"0000"; + when "01" & x"891" => DATA <= x"0000"; + when "01" & x"892" => DATA <= x"0000"; + when "01" & x"893" => DATA <= x"001c"; + when "01" & x"894" => DATA <= x"0000"; + when "01" & x"895" => DATA <= x"0468"; + when "01" & x"896" => DATA <= x"4f53"; + when "01" & x"897" => DATA <= x"5f4d"; + when "01" & x"898" => DATA <= x"6f75"; + when "01" & x"899" => DATA <= x"7365"; + when "01" & x"89a" => DATA <= x"0000"; + when "01" & x"89b" => DATA <= x"0000"; + when "01" & x"89c" => DATA <= x"0000"; + when "01" & x"89d" => DATA <= x"0021"; + when "01" & x"89e" => DATA <= x"003f"; + when "01" & x"89f" => DATA <= x"0fcc"; + when "01" & x"8a0" => DATA <= x"4f53"; + when "01" & x"8a1" => DATA <= x"5f52"; + when "01" & x"8a2" => DATA <= x"6561"; + when "01" & x"8a3" => DATA <= x"6455"; + when "01" & x"8a4" => DATA <= x"6e73"; + when "01" & x"8a5" => DATA <= x"6967"; + when "01" & x"8a6" => DATA <= x"6e65"; + when "01" & x"8a7" => DATA <= x"6400"; + when "01" & x"8a8" => DATA <= x"0000"; + when "01" & x"8a9" => DATA <= x"0028"; + when "01" & x"8aa" => DATA <= x"003f"; + when "01" & x"8ab" => DATA <= x"10c6"; + when "01" & x"8ac" => DATA <= x"4f53"; + when "01" & x"8ad" => DATA <= x"5f42"; + when "01" & x"8ae" => DATA <= x"696e"; + when "01" & x"8af" => DATA <= x"6172"; + when "01" & x"8b0" => DATA <= x"7954"; + when "01" & x"8b1" => DATA <= x"6f44"; + when "01" & x"8b2" => DATA <= x"6563"; + when "01" & x"8b3" => DATA <= x"696d"; + when "01" & x"8b4" => DATA <= x"616c"; + when "01" & x"8b5" => DATA <= x"0000"; + when "01" & x"8b6" => DATA <= x"0000"; + when "01" & x"8b7" => DATA <= x"0029"; + when "01" & x"8b8" => DATA <= x"0000"; + when "01" & x"8b9" => DATA <= x"043c"; + when "01" & x"8ba" => DATA <= x"4f53"; + when "01" & x"8bb" => DATA <= x"5f46"; + when "01" & x"8bc" => DATA <= x"5343"; + when "01" & x"8bd" => DATA <= x"6f6e"; + when "01" & x"8be" => DATA <= x"7472"; + when "01" & x"8bf" => DATA <= x"6f6c"; + when "01" & x"8c0" => DATA <= x"0000"; + when "01" & x"8c1" => DATA <= x"0000"; + when "01" & x"8c2" => DATA <= x"0000"; + when "01" & x"8c3" => DATA <= x"002b"; + when "01" & x"8c4" => DATA <= x"003f"; + when "01" & x"8c5" => DATA <= x"1120"; + when "01" & x"8c6" => DATA <= x"4f53"; + when "01" & x"8c7" => DATA <= x"5f47"; + when "01" & x"8c8" => DATA <= x"656e"; + when "01" & x"8c9" => DATA <= x"6572"; + when "01" & x"8ca" => DATA <= x"6174"; + when "01" & x"8cb" => DATA <= x"6545"; + when "01" & x"8cc" => DATA <= x"7272"; + when "01" & x"8cd" => DATA <= x"6f72"; + when "01" & x"8ce" => DATA <= x"0000"; + when "01" & x"8cf" => DATA <= x"0000"; + when "01" & x"8d0" => DATA <= x"0000"; + when "01" & x"8d1" => DATA <= x"002c"; + when "01" & x"8d2" => DATA <= x"003f"; + when "01" & x"8d3" => DATA <= x"1126"; + when "01" & x"8d4" => DATA <= x"4f53"; + when "01" & x"8d5" => DATA <= x"5f52"; + when "01" & x"8d6" => DATA <= x"6561"; + when "01" & x"8d7" => DATA <= x"6445"; + when "01" & x"8d8" => DATA <= x"7363"; + when "01" & x"8d9" => DATA <= x"6170"; + when "01" & x"8da" => DATA <= x"6553"; + when "01" & x"8db" => DATA <= x"7461"; + when "01" & x"8dc" => DATA <= x"7465"; + when "01" & x"8dd" => DATA <= x"0000"; + when "01" & x"8de" => DATA <= x"0000"; + when "01" & x"8df" => DATA <= x"002f"; + when "01" & x"8e0" => DATA <= x"003f"; + when "01" & x"8e1" => DATA <= x"113c"; + when "01" & x"8e2" => DATA <= x"4f53"; + when "01" & x"8e3" => DATA <= x"5f52"; + when "01" & x"8e4" => DATA <= x"6561"; + when "01" & x"8e5" => DATA <= x"6450"; + when "01" & x"8e6" => DATA <= x"616c"; + when "01" & x"8e7" => DATA <= x"6574"; + when "01" & x"8e8" => DATA <= x"7465"; + when "01" & x"8e9" => DATA <= x"0000"; + when "01" & x"8ea" => DATA <= x"0000"; + when "01" & x"8eb" => DATA <= x"0032"; + when "01" & x"8ec" => DATA <= x"003f"; + when "01" & x"8ed" => DATA <= x"1152"; + when "01" & x"8ee" => DATA <= x"4f53"; + when "01" & x"8ef" => DATA <= x"5f52"; + when "01" & x"8f0" => DATA <= x"6561"; + when "01" & x"8f1" => DATA <= x"6450"; + when "01" & x"8f2" => DATA <= x"6f69"; + when "01" & x"8f3" => DATA <= x"6e74"; + when "01" & x"8f4" => DATA <= x"0000"; + when "01" & x"8f5" => DATA <= x"0000"; + when "01" & x"8f6" => DATA <= x"0000"; + when "01" & x"8f7" => DATA <= x"0034"; + when "01" & x"8f8" => DATA <= x"003f"; + when "01" & x"8f9" => DATA <= x"11a8"; + when "01" & x"8fa" => DATA <= x"4f53"; + when "01" & x"8fb" => DATA <= x"5f43"; + when "01" & x"8fc" => DATA <= x"616c"; + when "01" & x"8fd" => DATA <= x"6c41"; + when "01" & x"8fe" => DATA <= x"5665"; + when "01" & x"8ff" => DATA <= x"6374"; + when "01" & x"900" => DATA <= x"6f72"; + when "01" & x"901" => DATA <= x"0000"; + when "01" & x"902" => DATA <= x"0000"; + when "01" & x"903" => DATA <= x"0036"; + when "01" & x"904" => DATA <= x"003f"; + when "01" & x"905" => DATA <= x"11d4"; + when "01" & x"906" => DATA <= x"4f53"; + when "01" & x"907" => DATA <= x"5f52"; + when "01" & x"908" => DATA <= x"656d"; + when "01" & x"909" => DATA <= x"6f76"; + when "01" & x"90a" => DATA <= x"6543"; + when "01" & x"90b" => DATA <= x"7572"; + when "01" & x"90c" => DATA <= x"736f"; + when "01" & x"90d" => DATA <= x"7273"; + when "01" & x"90e" => DATA <= x"0000"; + when "01" & x"90f" => DATA <= x"0000"; + when "01" & x"910" => DATA <= x"0000"; + when "01" & x"911" => DATA <= x"0037"; + when "01" & x"912" => DATA <= x"003f"; + when "01" & x"913" => DATA <= x"11ee"; + when "01" & x"914" => DATA <= x"4f53"; + when "01" & x"915" => DATA <= x"5f52"; + when "01" & x"916" => DATA <= x"6573"; + when "01" & x"917" => DATA <= x"746f"; + when "01" & x"918" => DATA <= x"7265"; + when "01" & x"919" => DATA <= x"4375"; + when "01" & x"91a" => DATA <= x"7273"; + when "01" & x"91b" => DATA <= x"6f72"; + when "01" & x"91c" => DATA <= x"7300"; + when "01" & x"91d" => DATA <= x"0000"; + when "01" & x"91e" => DATA <= x"0000"; + when "01" & x"91f" => DATA <= x"0038"; + when "01" & x"920" => DATA <= x"003f"; + when "01" & x"921" => DATA <= x"1208"; + when "01" & x"922" => DATA <= x"4f53"; + when "01" & x"923" => DATA <= x"5f53"; + when "01" & x"924" => DATA <= x"5749"; + when "01" & x"925" => DATA <= x"4e75"; + when "01" & x"926" => DATA <= x"6d62"; + when "01" & x"927" => DATA <= x"6572"; + when "01" & x"928" => DATA <= x"546f"; + when "01" & x"929" => DATA <= x"5374"; + when "01" & x"92a" => DATA <= x"7269"; + when "01" & x"92b" => DATA <= x"6e67"; + when "01" & x"92c" => DATA <= x"0000"; + when "01" & x"92d" => DATA <= x"0000"; + when "01" & x"92e" => DATA <= x"0000"; + when "01" & x"92f" => DATA <= x"0039"; + when "01" & x"930" => DATA <= x"003f"; + when "01" & x"931" => DATA <= x"1288"; + when "01" & x"932" => DATA <= x"4f53"; + when "01" & x"933" => DATA <= x"5f53"; + when "01" & x"934" => DATA <= x"5749"; + when "01" & x"935" => DATA <= x"4e75"; + when "01" & x"936" => DATA <= x"6d62"; + when "01" & x"937" => DATA <= x"6572"; + when "01" & x"938" => DATA <= x"4672"; + when "01" & x"939" => DATA <= x"6f6d"; + when "01" & x"93a" => DATA <= x"5374"; + when "01" & x"93b" => DATA <= x"7269"; + when "01" & x"93c" => DATA <= x"6e67"; + when "01" & x"93d" => DATA <= x"0000"; + when "01" & x"93e" => DATA <= x"0000"; + when "01" & x"93f" => DATA <= x"003a"; + when "01" & x"940" => DATA <= x"003f"; + when "01" & x"941" => DATA <= x"12cc"; + when "01" & x"942" => DATA <= x"4f53"; + when "01" & x"943" => DATA <= x"5f56"; + when "01" & x"944" => DATA <= x"616c"; + when "01" & x"945" => DATA <= x"6964"; + when "01" & x"946" => DATA <= x"6174"; + when "01" & x"947" => DATA <= x"6541"; + when "01" & x"948" => DATA <= x"6464"; + when "01" & x"949" => DATA <= x"7265"; + when "01" & x"94a" => DATA <= x"7373"; + when "01" & x"94b" => DATA <= x"0000"; + when "01" & x"94c" => DATA <= x"0000"; + when "01" & x"94d" => DATA <= x"003f"; + when "01" & x"94e" => DATA <= x"003f"; + when "01" & x"94f" => DATA <= x"12e6"; + when "01" & x"950" => DATA <= x"4f53"; + when "01" & x"951" => DATA <= x"5f43"; + when "01" & x"952" => DATA <= x"6865"; + when "01" & x"953" => DATA <= x"636b"; + when "01" & x"954" => DATA <= x"4d6f"; + when "01" & x"955" => DATA <= x"6465"; + when "01" & x"956" => DATA <= x"5661"; + when "01" & x"957" => DATA <= x"6c69"; + when "01" & x"958" => DATA <= x"6400"; + when "01" & x"959" => DATA <= x"0000"; + when "01" & x"95a" => DATA <= x"0000"; + when "01" & x"95b" => DATA <= x"0040"; + when "01" & x"95c" => DATA <= x"003f"; + when "01" & x"95d" => DATA <= x"1300"; + when "01" & x"95e" => DATA <= x"4f53"; + when "01" & x"95f" => DATA <= x"5f43"; + when "01" & x"960" => DATA <= x"6861"; + when "01" & x"961" => DATA <= x"6e67"; + when "01" & x"962" => DATA <= x"6545"; + when "01" & x"963" => DATA <= x"6e76"; + when "01" & x"964" => DATA <= x"6972"; + when "01" & x"965" => DATA <= x"6f6e"; + when "01" & x"966" => DATA <= x"6d65"; + when "01" & x"967" => DATA <= x"6e74"; + when "01" & x"968" => DATA <= x"0000"; + when "01" & x"969" => DATA <= x"0000"; + when "01" & x"96a" => DATA <= x"0000"; + when "01" & x"96b" => DATA <= x"0042"; + when "01" & x"96c" => DATA <= x"003f"; + when "01" & x"96d" => DATA <= x"1306"; + when "01" & x"96e" => DATA <= x"4f53"; + when "01" & x"96f" => DATA <= x"5f52"; + when "01" & x"970" => DATA <= x"6561"; + when "01" & x"971" => DATA <= x"644d"; + when "01" & x"972" => DATA <= x"6f6e"; + when "01" & x"973" => DATA <= x"6f74"; + when "01" & x"974" => DATA <= x"6f6e"; + when "01" & x"975" => DATA <= x"6963"; + when "01" & x"976" => DATA <= x"5469"; + when "01" & x"977" => DATA <= x"6d65"; + when "01" & x"978" => DATA <= x"0000"; + when "01" & x"979" => DATA <= x"0000"; + when "01" & x"97a" => DATA <= x"0000"; + when "01" & x"97b" => DATA <= x"0045"; + when "01" & x"97c" => DATA <= x"003f"; + when "01" & x"97d" => DATA <= x"1320"; + when "01" & x"97e" => DATA <= x"4f53"; + when "01" & x"97f" => DATA <= x"5f50"; + when "01" & x"980" => DATA <= x"6c6f"; + when "01" & x"981" => DATA <= x"7400"; + when "01" & x"982" => DATA <= x"0000"; + when "01" & x"983" => DATA <= x"0046"; + when "01" & x"984" => DATA <= x"003f"; + when "01" & x"985" => DATA <= x"136e"; + when "01" & x"986" => DATA <= x"4f53"; + when "01" & x"987" => DATA <= x"5f57"; + when "01" & x"988" => DATA <= x"7269"; + when "01" & x"989" => DATA <= x"7465"; + when "01" & x"98a" => DATA <= x"4e00"; + when "01" & x"98b" => DATA <= x"0000"; + when "01" & x"98c" => DATA <= x"0000"; + when "01" & x"98d" => DATA <= x"0048"; + when "01" & x"98e" => DATA <= x"003f"; + when "01" & x"98f" => DATA <= x"1394"; + when "01" & x"990" => DATA <= x"4f53"; + when "01" & x"991" => DATA <= x"5f57"; + when "01" & x"992" => DATA <= x"7269"; + when "01" & x"993" => DATA <= x"7465"; + when "01" & x"994" => DATA <= x"456e"; + when "01" & x"995" => DATA <= x"7600"; + when "01" & x"996" => DATA <= x"0000"; + when "01" & x"997" => DATA <= x"0050"; + when "01" & x"998" => DATA <= x"003f"; + when "01" & x"999" => DATA <= x"13ca"; + when "01" & x"99a" => DATA <= x"4f53"; + when "01" & x"99b" => DATA <= x"5f45"; + when "01" & x"99c" => DATA <= x"7869"; + when "01" & x"99d" => DATA <= x"7441"; + when "01" & x"99e" => DATA <= x"6e64"; + when "01" & x"99f" => DATA <= x"4469"; + when "01" & x"9a0" => DATA <= x"6500"; + when "01" & x"9a1" => DATA <= x"0000"; + when "01" & x"9a2" => DATA <= x"0000"; + when "01" & x"9a3" => DATA <= x"0055"; + when "01" & x"9a4" => DATA <= x"003f"; + when "01" & x"9a5" => DATA <= x"13e2"; + when "01" & x"9a6" => DATA <= x"4f53"; + when "01" & x"9a7" => DATA <= x"5f52"; + when "01" & x"9a8" => DATA <= x"6561"; + when "01" & x"9a9" => DATA <= x"6444"; + when "01" & x"9aa" => DATA <= x"6566"; + when "01" & x"9ab" => DATA <= x"6175"; + when "01" & x"9ac" => DATA <= x"6c74"; + when "01" & x"9ad" => DATA <= x"4861"; + when "01" & x"9ae" => DATA <= x"6e64"; + when "01" & x"9af" => DATA <= x"6c65"; + when "01" & x"9b0" => DATA <= x"7200"; + when "01" & x"9b1" => DATA <= x"0000"; + when "01" & x"9b2" => DATA <= x"0000"; + when "01" & x"9b3" => DATA <= x"0056"; + when "01" & x"9b4" => DATA <= x"003f"; + when "01" & x"9b5" => DATA <= x"142a"; + when "01" & x"9b6" => DATA <= x"4f53"; + when "01" & x"9b7" => DATA <= x"5f53"; + when "01" & x"9b8" => DATA <= x"6574"; + when "01" & x"9b9" => DATA <= x"4543"; + when "01" & x"9ba" => DATA <= x"464f"; + when "01" & x"9bb" => DATA <= x"7269"; + when "01" & x"9bc" => DATA <= x"6769"; + when "01" & x"9bd" => DATA <= x"6e00"; + when "01" & x"9be" => DATA <= x"0000"; + when "01" & x"9bf" => DATA <= x"005d"; + when "01" & x"9c0" => DATA <= x"003f"; + when "01" & x"9c1" => DATA <= x"14da"; + when "01" & x"9c2" => DATA <= x"4f53"; + when "01" & x"9c3" => DATA <= x"5f50"; + when "01" & x"9c4" => DATA <= x"7269"; + when "01" & x"9c5" => DATA <= x"6e74"; + when "01" & x"9c6" => DATA <= x"4368"; + when "01" & x"9c7" => DATA <= x"6172"; + when "01" & x"9c8" => DATA <= x"0000"; + when "01" & x"9c9" => DATA <= x"0000"; + when "01" & x"9ca" => DATA <= x"0000"; + when "01" & x"9cb" => DATA <= x"005b"; + when "01" & x"9cc" => DATA <= x"003f"; + when "01" & x"9cd" => DATA <= x"14a8"; + when "01" & x"9ce" => DATA <= x"4f53"; + when "01" & x"9cf" => DATA <= x"5f43"; + when "01" & x"9d0" => DATA <= x"5243"; + when "01" & x"9d1" => DATA <= x"0000"; + when "01" & x"9d2" => DATA <= x"0000"; + when "01" & x"9d3" => DATA <= x"0059"; + when "01" & x"9d4" => DATA <= x"003f"; + when "01" & x"9d5" => DATA <= x"149a"; + when "01" & x"9d6" => DATA <= x"4f53"; + when "01" & x"9d7" => DATA <= x"5f43"; + when "01" & x"9d8" => DATA <= x"6f6e"; + when "01" & x"9d9" => DATA <= x"6669"; + when "01" & x"9da" => DATA <= x"726d"; + when "01" & x"9db" => DATA <= x"0000"; + when "01" & x"9dc" => DATA <= x"0000"; + when "01" & x"9dd" => DATA <= x"007c"; + when "01" & x"9de" => DATA <= x"003f"; + when "01" & x"9df" => DATA <= x"14e6"; + when "01" & x"9e0" => DATA <= x"4f53"; + when "01" & x"9e1" => DATA <= x"5f4c"; + when "01" & x"9e2" => DATA <= x"6561"; + when "01" & x"9e3" => DATA <= x"7665"; + when "01" & x"9e4" => DATA <= x"4f53"; + when "01" & x"9e5" => DATA <= x"0000"; + when "01" & x"9e6" => DATA <= x"0000"; + when "01" & x"9e7" => DATA <= x"007d"; + when "01" & x"9e8" => DATA <= x"003f"; + when "01" & x"9e9" => DATA <= x"14ec"; + when "01" & x"9ea" => DATA <= x"4f53"; + when "01" & x"9eb" => DATA <= x"5f52"; + when "01" & x"9ec" => DATA <= x"6561"; + when "01" & x"9ed" => DATA <= x"644c"; + when "01" & x"9ee" => DATA <= x"696e"; + when "01" & x"9ef" => DATA <= x"6533"; + when "01" & x"9f0" => DATA <= x"3200"; + when "01" & x"9f1" => DATA <= x"0000"; + when "01" & x"9f2" => DATA <= x"0000"; + when "01" & x"9f3" => DATA <= x"00d0"; + when "01" & x"9f4" => DATA <= x"003f"; + when "01" & x"9f5" => DATA <= x"1674"; + when "01" & x"9f6" => DATA <= x"4f53"; + when "01" & x"9f7" => DATA <= x"5f43"; + when "01" & x"9f8" => DATA <= x"6f6e"; + when "01" & x"9f9" => DATA <= x"7665"; + when "01" & x"9fa" => DATA <= x"7274"; + when "01" & x"9fb" => DATA <= x"4865"; + when "01" & x"9fc" => DATA <= x"7831"; + when "01" & x"9fd" => DATA <= x"0000"; + when "01" & x"9fe" => DATA <= x"0000"; + when "01" & x"9ff" => DATA <= x"00d1"; + when "01" & x"a00" => DATA <= x"003f"; + when "01" & x"a01" => DATA <= x"1690"; + when "01" & x"a02" => DATA <= x"4f53"; + when "01" & x"a03" => DATA <= x"5f43"; + when "01" & x"a04" => DATA <= x"6f6e"; + when "01" & x"a05" => DATA <= x"7665"; + when "01" & x"a06" => DATA <= x"7274"; + when "01" & x"a07" => DATA <= x"4865"; + when "01" & x"a08" => DATA <= x"7832"; + when "01" & x"a09" => DATA <= x"0000"; + when "01" & x"a0a" => DATA <= x"0000"; + when "01" & x"a0b" => DATA <= x"00d2"; + when "01" & x"a0c" => DATA <= x"003f"; + when "01" & x"a0d" => DATA <= x"16ac"; + when "01" & x"a0e" => DATA <= x"4f53"; + when "01" & x"a0f" => DATA <= x"5f43"; + when "01" & x"a10" => DATA <= x"6f6e"; + when "01" & x"a11" => DATA <= x"7665"; + when "01" & x"a12" => DATA <= x"7274"; + when "01" & x"a13" => DATA <= x"4865"; + when "01" & x"a14" => DATA <= x"7834"; + when "01" & x"a15" => DATA <= x"0000"; + when "01" & x"a16" => DATA <= x"0000"; + when "01" & x"a17" => DATA <= x"00d3"; + when "01" & x"a18" => DATA <= x"003f"; + when "01" & x"a19" => DATA <= x"16ca"; + when "01" & x"a1a" => DATA <= x"4f53"; + when "01" & x"a1b" => DATA <= x"5f43"; + when "01" & x"a1c" => DATA <= x"6f6e"; + when "01" & x"a1d" => DATA <= x"7665"; + when "01" & x"a1e" => DATA <= x"7274"; + when "01" & x"a1f" => DATA <= x"4865"; + when "01" & x"a20" => DATA <= x"7836"; + when "01" & x"a21" => DATA <= x"0000"; + when "01" & x"a22" => DATA <= x"0000"; + when "01" & x"a23" => DATA <= x"00d4"; + when "01" & x"a24" => DATA <= x"003f"; + when "01" & x"a25" => DATA <= x"16e6"; + when "01" & x"a26" => DATA <= x"4f53"; + when "01" & x"a27" => DATA <= x"5f43"; + when "01" & x"a28" => DATA <= x"6f6e"; + when "01" & x"a29" => DATA <= x"7665"; + when "01" & x"a2a" => DATA <= x"7274"; + when "01" & x"a2b" => DATA <= x"4865"; + when "01" & x"a2c" => DATA <= x"7838"; + when "01" & x"a2d" => DATA <= x"0000"; + when "01" & x"a2e" => DATA <= x"0000"; + when "01" & x"a2f" => DATA <= x"00d5"; + when "01" & x"a30" => DATA <= x"003f"; + when "01" & x"a31" => DATA <= x"1740"; + when "01" & x"a32" => DATA <= x"4f53"; + when "01" & x"a33" => DATA <= x"5f43"; + when "01" & x"a34" => DATA <= x"6f6e"; + when "01" & x"a35" => DATA <= x"7665"; + when "01" & x"a36" => DATA <= x"7274"; + when "01" & x"a37" => DATA <= x"4361"; + when "01" & x"a38" => DATA <= x"7264"; + when "01" & x"a39" => DATA <= x"696e"; + when "01" & x"a3a" => DATA <= x"616c"; + when "01" & x"a3b" => DATA <= x"3100"; + when "01" & x"a3c" => DATA <= x"0000"; + when "01" & x"a3d" => DATA <= x"00d6"; + when "01" & x"a3e" => DATA <= x"003f"; + when "01" & x"a3f" => DATA <= x"175a"; + when "01" & x"a40" => DATA <= x"4f53"; + when "01" & x"a41" => DATA <= x"5f43"; + when "01" & x"a42" => DATA <= x"6f6e"; + when "01" & x"a43" => DATA <= x"7665"; + when "01" & x"a44" => DATA <= x"7274"; + when "01" & x"a45" => DATA <= x"4361"; + when "01" & x"a46" => DATA <= x"7264"; + when "01" & x"a47" => DATA <= x"696e"; + when "01" & x"a48" => DATA <= x"616c"; + when "01" & x"a49" => DATA <= x"3200"; + when "01" & x"a4a" => DATA <= x"0000"; + when "01" & x"a4b" => DATA <= x"00d7"; + when "01" & x"a4c" => DATA <= x"003f"; + when "01" & x"a4d" => DATA <= x"1774"; + when "01" & x"a4e" => DATA <= x"4f53"; + when "01" & x"a4f" => DATA <= x"5f43"; + when "01" & x"a50" => DATA <= x"6f6e"; + when "01" & x"a51" => DATA <= x"7665"; + when "01" & x"a52" => DATA <= x"7274"; + when "01" & x"a53" => DATA <= x"4361"; + when "01" & x"a54" => DATA <= x"7264"; + when "01" & x"a55" => DATA <= x"696e"; + when "01" & x"a56" => DATA <= x"616c"; + when "01" & x"a57" => DATA <= x"3300"; + when "01" & x"a58" => DATA <= x"0000"; + when "01" & x"a59" => DATA <= x"00d8"; + when "01" & x"a5a" => DATA <= x"003f"; + when "01" & x"a5b" => DATA <= x"178e"; + when "01" & x"a5c" => DATA <= x"4f53"; + when "01" & x"a5d" => DATA <= x"5f43"; + when "01" & x"a5e" => DATA <= x"6f6e"; + when "01" & x"a5f" => DATA <= x"7665"; + when "01" & x"a60" => DATA <= x"7274"; + when "01" & x"a61" => DATA <= x"4361"; + when "01" & x"a62" => DATA <= x"7264"; + when "01" & x"a63" => DATA <= x"696e"; + when "01" & x"a64" => DATA <= x"616c"; + when "01" & x"a65" => DATA <= x"3400"; + when "01" & x"a66" => DATA <= x"0000"; + when "01" & x"a67" => DATA <= x"00d9"; + when "01" & x"a68" => DATA <= x"003f"; + when "01" & x"a69" => DATA <= x"1810"; + when "01" & x"a6a" => DATA <= x"4f53"; + when "01" & x"a6b" => DATA <= x"5f43"; + when "01" & x"a6c" => DATA <= x"6f6e"; + when "01" & x"a6d" => DATA <= x"7665"; + when "01" & x"a6e" => DATA <= x"7274"; + when "01" & x"a6f" => DATA <= x"496e"; + when "01" & x"a70" => DATA <= x"7465"; + when "01" & x"a71" => DATA <= x"6765"; + when "01" & x"a72" => DATA <= x"7231"; + when "01" & x"a73" => DATA <= x"0000"; + when "01" & x"a74" => DATA <= x"0000"; + when "01" & x"a75" => DATA <= x"00da"; + when "01" & x"a76" => DATA <= x"003f"; + when "01" & x"a77" => DATA <= x"1838"; + when "01" & x"a78" => DATA <= x"4f53"; + when "01" & x"a79" => DATA <= x"5f43"; + when "01" & x"a7a" => DATA <= x"6f6e"; + when "01" & x"a7b" => DATA <= x"7665"; + when "01" & x"a7c" => DATA <= x"7274"; + when "01" & x"a7d" => DATA <= x"496e"; + when "01" & x"a7e" => DATA <= x"7465"; + when "01" & x"a7f" => DATA <= x"6765"; + when "01" & x"a80" => DATA <= x"7232"; + when "01" & x"a81" => DATA <= x"0000"; + when "01" & x"a82" => DATA <= x"0000"; + when "01" & x"a83" => DATA <= x"00db"; + when "01" & x"a84" => DATA <= x"003f"; + when "01" & x"a85" => DATA <= x"1860"; + when "01" & x"a86" => DATA <= x"4f53"; + when "01" & x"a87" => DATA <= x"5f43"; + when "01" & x"a88" => DATA <= x"6f6e"; + when "01" & x"a89" => DATA <= x"7665"; + when "01" & x"a8a" => DATA <= x"7274"; + when "01" & x"a8b" => DATA <= x"496e"; + when "01" & x"a8c" => DATA <= x"7465"; + when "01" & x"a8d" => DATA <= x"6765"; + when "01" & x"a8e" => DATA <= x"7233"; + when "01" & x"a8f" => DATA <= x"0000"; + when "01" & x"a90" => DATA <= x"0000"; + when "01" & x"a91" => DATA <= x"00dc"; + when "01" & x"a92" => DATA <= x"003f"; + when "01" & x"a93" => DATA <= x"1888"; + when "01" & x"a94" => DATA <= x"4f53"; + when "01" & x"a95" => DATA <= x"5f43"; + when "01" & x"a96" => DATA <= x"6f6e"; + when "01" & x"a97" => DATA <= x"7665"; + when "01" & x"a98" => DATA <= x"7274"; + when "01" & x"a99" => DATA <= x"496e"; + when "01" & x"a9a" => DATA <= x"7465"; + when "01" & x"a9b" => DATA <= x"6765"; + when "01" & x"a9c" => DATA <= x"7234"; + when "01" & x"a9d" => DATA <= x"0000"; + when "01" & x"a9e" => DATA <= x"0000"; + when "01" & x"a9f" => DATA <= x"00dd"; + when "01" & x"aa0" => DATA <= x"003f"; + when "01" & x"aa1" => DATA <= x"190a"; + when "01" & x"aa2" => DATA <= x"4f53"; + when "01" & x"aa3" => DATA <= x"5f43"; + when "01" & x"aa4" => DATA <= x"6f6e"; + when "01" & x"aa5" => DATA <= x"7665"; + when "01" & x"aa6" => DATA <= x"7274"; + when "01" & x"aa7" => DATA <= x"4269"; + when "01" & x"aa8" => DATA <= x"6e61"; + when "01" & x"aa9" => DATA <= x"7279"; + when "01" & x"aaa" => DATA <= x"3100"; + when "01" & x"aab" => DATA <= x"0000"; + when "01" & x"aac" => DATA <= x"0000"; + when "01" & x"aad" => DATA <= x"00de"; + when "01" & x"aae" => DATA <= x"003f"; + when "01" & x"aaf" => DATA <= x"1928"; + when "01" & x"ab0" => DATA <= x"4f53"; + when "01" & x"ab1" => DATA <= x"5f43"; + when "01" & x"ab2" => DATA <= x"6f6e"; + when "01" & x"ab3" => DATA <= x"7665"; + when "01" & x"ab4" => DATA <= x"7274"; + when "01" & x"ab5" => DATA <= x"4269"; + when "01" & x"ab6" => DATA <= x"6e61"; + when "01" & x"ab7" => DATA <= x"7279"; + when "01" & x"ab8" => DATA <= x"3200"; + when "01" & x"ab9" => DATA <= x"0000"; + when "01" & x"aba" => DATA <= x"0000"; + when "01" & x"abb" => DATA <= x"00df"; + when "01" & x"abc" => DATA <= x"003f"; + when "01" & x"abd" => DATA <= x"1948"; + when "01" & x"abe" => DATA <= x"4f53"; + when "01" & x"abf" => DATA <= x"5f43"; + when "01" & x"ac0" => DATA <= x"6f6e"; + when "01" & x"ac1" => DATA <= x"7665"; + when "01" & x"ac2" => DATA <= x"7274"; + when "01" & x"ac3" => DATA <= x"4269"; + when "01" & x"ac4" => DATA <= x"6e61"; + when "01" & x"ac5" => DATA <= x"7279"; + when "01" & x"ac6" => DATA <= x"3300"; + when "01" & x"ac7" => DATA <= x"0000"; + when "01" & x"ac8" => DATA <= x"0000"; + when "01" & x"ac9" => DATA <= x"00e0"; + when "01" & x"aca" => DATA <= x"003f"; + when "01" & x"acb" => DATA <= x"1966"; + when "01" & x"acc" => DATA <= x"4f53"; + when "01" & x"acd" => DATA <= x"5f43"; + when "01" & x"ace" => DATA <= x"6f6e"; + when "01" & x"acf" => DATA <= x"7665"; + when "01" & x"ad0" => DATA <= x"7274"; + when "01" & x"ad1" => DATA <= x"4269"; + when "01" & x"ad2" => DATA <= x"6e61"; + when "01" & x"ad3" => DATA <= x"7279"; + when "01" & x"ad4" => DATA <= x"3400"; + when "01" & x"ad5" => DATA <= x"0000"; + when "01" & x"ad6" => DATA <= x"0000"; + when "01" & x"ad7" => DATA <= x"00ea"; + when "01" & x"ad8" => DATA <= x"003f"; + when "01" & x"ad9" => DATA <= x"19e2"; + when "01" & x"ada" => DATA <= x"4f53"; + when "01" & x"adb" => DATA <= x"5f43"; + when "01" & x"adc" => DATA <= x"6f6e"; + when "01" & x"add" => DATA <= x"7665"; + when "01" & x"ade" => DATA <= x"7274"; + when "01" & x"adf" => DATA <= x"4e65"; + when "01" & x"ae0" => DATA <= x"7453"; + when "01" & x"ae1" => DATA <= x"7461"; + when "01" & x"ae2" => DATA <= x"7469"; + when "01" & x"ae3" => DATA <= x"6f6e"; + when "01" & x"ae4" => DATA <= x"0000"; + when "01" & x"ae5" => DATA <= x"00ff"; + when "01" & x"ae6" => DATA <= x"003f"; + when "01" & x"ae7" => DATA <= x"1b52"; + when "01" & x"ae8" => DATA <= x"4552"; + when "01" & x"ae9" => DATA <= x"524f"; + when "01" & x"aea" => DATA <= x"5220"; + when "01" & x"aeb" => DATA <= x"2000"; + when "01" & x"aec" => DATA <= x"003f"; + when "01" & x"aed" => DATA <= x"1bb0"; + when "01" & x"aee" => DATA <= x"464c"; + when "01" & x"aef" => DATA <= x"4153"; + when "01" & x"af0" => DATA <= x"4820"; + when "01" & x"af1" => DATA <= x"2000"; + when "01" & x"af2" => DATA <= x"003f"; + when "01" & x"af3" => DATA <= x"1c88"; + when "01" & x"af4" => DATA <= x"474f"; + when "01" & x"af5" => DATA <= x"2000"; + when "01" & x"af6" => DATA <= x"003f"; + when "01" & x"af7" => DATA <= x"1cb6"; + when "01" & x"af8" => DATA <= x"4845"; + when "01" & x"af9" => DATA <= x"4c50"; + when "01" & x"afa" => DATA <= x"2020"; + when "01" & x"afb" => DATA <= x"2000"; + when "01" & x"afc" => DATA <= x"003f"; + when "01" & x"afd" => DATA <= x"1db2"; + when "01" & x"afe" => DATA <= x"4d4f"; + when "01" & x"aff" => DATA <= x"4e00"; + when "01" & x"b00" => DATA <= x"003f"; + when "01" & x"b01" => DATA <= x"247c"; + when "01" & x"b02" => DATA <= x"5155"; + when "01" & x"b03" => DATA <= x"4954"; + when "01" & x"b04" => DATA <= x"2020"; + when "01" & x"b05" => DATA <= x"2000"; + when "01" & x"b06" => DATA <= x"003f"; + when "01" & x"b07" => DATA <= x"2480"; + when "01" & x"b08" => DATA <= x"545a"; + when "01" & x"b09" => DATA <= x"4150"; + when "01" & x"b0a" => DATA <= x"2020"; + when "01" & x"b0b" => DATA <= x"2000"; + when "01" & x"b0c" => DATA <= x"003f"; + when "01" & x"b0d" => DATA <= x"2484"; + when "01" & x"b0e" => DATA <= x"5846"; + when "01" & x"b0f" => DATA <= x"4552"; + when "01" & x"b10" => DATA <= x"2020"; + when "01" & x"b11" => DATA <= x"2000"; + when "01" & x"b12" => DATA <= x"ffff"; + when "01" & x"b13" => DATA <= x"ffff"; + when "01" & x"b14" => DATA <= x"0000"; + when "01" & x"b15" => DATA <= x"0508"; + when "01" & x"b16" => DATA <= x"0000"; + when "01" & x"b17" => DATA <= x"0508"; + when "01" & x"b18" => DATA <= x"0000"; + when "01" & x"b19" => DATA <= x"0000"; + when "01" & x"b1a" => DATA <= x"0000"; + when "01" & x"b1b" => DATA <= x"0000"; + when "01" & x"b1c" => DATA <= x"0000"; + when "01" & x"b1d" => DATA <= x"0010"; + when "01" & x"b1e" => DATA <= x"0000"; + when "01" & x"b1f" => DATA <= x"0000"; + when "01" & x"b20" => DATA <= x"0000"; + when "01" & x"b21" => DATA <= x"0000"; + when "01" & x"b22" => DATA <= x"0000"; + when "01" & x"b23" => DATA <= x"0000"; + when "01" & x"b24" => DATA <= x"0000"; + when "01" & x"b25" => DATA <= x"0000"; + when "01" & x"b26" => DATA <= x"0000"; + when "01" & x"b27" => DATA <= x"0000"; + when "01" & x"b28" => DATA <= x"0000"; + when "01" & x"b29" => DATA <= x"0000"; + when "01" & x"b2a" => DATA <= x"0000"; + when "01" & x"b2b" => DATA <= x"0000"; + when "01" & x"b2c" => DATA <= x"0000"; + when "01" & x"b2d" => DATA <= x"0000"; + when "01" & x"b2e" => DATA <= x"0000"; + when "01" & x"b2f" => DATA <= x"000c"; + when "01" & x"b30" => DATA <= x"0000"; + when "01" & x"b31" => DATA <= x"0000"; + when "01" & x"b32" => DATA <= x"0000"; + when "01" & x"b33" => DATA <= x"0000"; + when "01" & x"b34" => DATA <= x"0000"; + when "01" & x"b35" => DATA <= x"04c0"; + when "01" & x"b36" => DATA <= x"0000"; + when "01" & x"b37" => DATA <= x"0000"; + when "01" & x"b38" => DATA <= x"0000"; + when "01" & x"b39" => DATA <= x"0000"; + when "01" & x"b3a" => DATA <= x"0000"; + when "01" & x"b3b" => DATA <= x"0404"; + when "01" & x"b3c" => DATA <= x"0000"; + when "01" & x"b3d" => DATA <= x"04d4"; + when "01" & x"b3e" => DATA <= x"0000"; + when "01" & x"b3f" => DATA <= x"04f4"; + when "01" & x"b40" => DATA <= x"0000"; + when "01" & x"b41" => DATA <= x"04c4"; + when "01" & x"b42" => DATA <= x"0000"; + when "01" & x"b43" => DATA <= x"04d8"; + when "01" & x"b44" => DATA <= x"0000"; + when "01" & x"b45" => DATA <= x"04f8"; + when "01" & x"b46" => DATA <= x"0000"; + when "01" & x"b47" => DATA <= x"04c8"; + when "01" & x"b48" => DATA <= x"0000"; + when "01" & x"b49" => DATA <= x"04dc"; + when "01" & x"b4a" => DATA <= x"0000"; + when "01" & x"b4b" => DATA <= x"04fc"; + when "01" & x"b4c" => DATA <= x"0000"; + when "01" & x"b4d" => DATA <= x"04cc"; + when "01" & x"b4e" => DATA <= x"0000"; + when "01" & x"b4f" => DATA <= x"04e0"; + when "01" & x"b50" => DATA <= x"0000"; + when "01" & x"b51" => DATA <= x"0000"; + when "01" & x"b52" => DATA <= x"0000"; + when "01" & x"b53" => DATA <= x"0440"; + when "01" & x"b54" => DATA <= x"0000"; + when "01" & x"b55" => DATA <= x"04e4"; + when "01" & x"b56" => DATA <= x"0000"; + when "01" & x"b57" => DATA <= x"0000"; + when "01" & x"b58" => DATA <= x"0000"; + when "01" & x"b59" => DATA <= x"04d0"; + when "01" & x"b5a" => DATA <= x"0000"; + when "01" & x"b5b" => DATA <= x"04e8"; + when "01" & x"b5c" => DATA <= x"0000"; + when "01" & x"b5d" => DATA <= x"0000"; + when "01" & x"b5e" => DATA <= x"0000"; + when "01" & x"b5f" => DATA <= x"0460"; + when "01" & x"b60" => DATA <= x"0000"; + when "01" & x"b61" => DATA <= x"04ec"; + when "01" & x"b62" => DATA <= x"0000"; + when "01" & x"b63" => DATA <= x"0000"; + when "01" & x"b64" => DATA <= x"0000"; + when "01" & x"b65" => DATA <= x"0538"; + when "01" & x"b66" => DATA <= x"0000"; + when "01" & x"b67" => DATA <= x"0000"; + when "01" & x"b68" => DATA <= x"0000"; + when "01" & x"b69" => DATA <= x"0000"; + when "01" & x"b6a" => DATA <= x"0000"; + when "01" & x"b6b" => DATA <= x"050c"; + when "01" & x"b6c" => DATA <= x"0000"; + when "01" & x"b6d" => DATA <= x"0000"; + when "01" & x"b6e" => DATA <= x"0000"; + when "01" & x"b6f" => DATA <= x"0000"; + when "01" & x"b70" => DATA <= x"0000"; + when "01" & x"b71" => DATA <= x"0000"; + when "01" & x"b72" => DATA <= x"0000"; + when "01" & x"b73" => DATA <= x"0000"; + when "01" & x"b74" => DATA <= x"0000"; + when "01" & x"b75" => DATA <= x"0000"; + when "01" & x"b76" => DATA <= x"0000"; + when "01" & x"b77" => DATA <= x"0474"; + when "01" & x"b78" => DATA <= x"0000"; + when "01" & x"b79" => DATA <= x"04f0"; + when "01" & x"b7a" => DATA <= x"0000"; + when "01" & x"b7b" => DATA <= x"0000"; + when "01" & x"b7c" => DATA <= x"003f"; + when "01" & x"b7d" => DATA <= x"0776"; + when "01" & x"b7e" => DATA <= x"003f"; + when "01" & x"b7f" => DATA <= x"0776"; + when "01" & x"b80" => DATA <= x"003f"; + when "01" & x"b81" => DATA <= x"0776"; + when "01" & x"b82" => DATA <= x"003f"; + when "01" & x"b83" => DATA <= x"0776"; + when "01" & x"b84" => DATA <= x"003f"; + when "01" & x"b85" => DATA <= x"0776"; + when "01" & x"b86" => DATA <= x"003f"; + when "01" & x"b87" => DATA <= x"0776"; + when "01" & x"b88" => DATA <= x"003f"; + when "01" & x"b89" => DATA <= x"0776"; + when "01" & x"b8a" => DATA <= x"003f"; + when "01" & x"b8b" => DATA <= x"0776"; + when "01" & x"b8c" => DATA <= x"003f"; + when "01" & x"b8d" => DATA <= x"0776"; + when "01" & x"b8e" => DATA <= x"003f"; + when "01" & x"b8f" => DATA <= x"0776"; + when "01" & x"b90" => DATA <= x"003f"; + when "01" & x"b91" => DATA <= x"1104"; + when "01" & x"b92" => DATA <= x"003f"; + when "01" & x"b93" => DATA <= x"0776"; + when "01" & x"b94" => DATA <= x"003f"; + when "01" & x"b95" => DATA <= x"0776"; + when "01" & x"b96" => DATA <= x"003f"; + when "01" & x"b97" => DATA <= x"0776"; + when "01" & x"b98" => DATA <= x"003f"; + when "01" & x"b99" => DATA <= x"0776"; + when "01" & x"b9a" => DATA <= x"003f"; + when "01" & x"b9b" => DATA <= x"0776"; + when "01" & x"b9c" => DATA <= x"003f"; + when "01" & x"b9d" => DATA <= x"0776"; + when "01" & x"b9e" => DATA <= x"003f"; + when "01" & x"b9f" => DATA <= x"0776"; + when "01" & x"ba0" => DATA <= x"003f"; + when "01" & x"ba1" => DATA <= x"0776"; + when "01" & x"ba2" => DATA <= x"003f"; + when "01" & x"ba3" => DATA <= x"0776"; + when "01" & x"ba4" => DATA <= x"003f"; + when "01" & x"ba5" => DATA <= x"0776"; + when "01" & x"ba6" => DATA <= x"003f"; + when "01" & x"ba7" => DATA <= x"0776"; + when "01" & x"ba8" => DATA <= x"003f"; + when "01" & x"ba9" => DATA <= x"1112"; + when "01" & x"baa" => DATA <= x"003f"; + when "01" & x"bab" => DATA <= x"0776"; + when "01" & x"bac" => DATA <= x"003f"; + when "01" & x"bad" => DATA <= x"0776"; + when "01" & x"bae" => DATA <= x"003f"; + when "01" & x"baf" => DATA <= x"0776"; + when "01" & x"bb0" => DATA <= x"003f"; + when "01" & x"bb1" => DATA <= x"0776"; + when "01" & x"bb2" => DATA <= x"003f"; + when "01" & x"bb3" => DATA <= x"0776"; + when "01" & x"bb4" => DATA <= x"003f"; + when "01" & x"bb5" => DATA <= x"0776"; + when "01" & x"bb6" => DATA <= x"003f"; + when "01" & x"bb7" => DATA <= x"0776"; + when "01" & x"bb8" => DATA <= x"003f"; + when "01" & x"bb9" => DATA <= x"0776"; + when "01" & x"bba" => DATA <= x"003f"; + when "01" & x"bbb" => DATA <= x"0776"; + when "01" & x"bbc" => DATA <= x"003f"; + when "01" & x"bbd" => DATA <= x"0776"; + when "01" & x"bbe" => DATA <= x"003f"; + when "01" & x"bbf" => DATA <= x"0776"; + when "01" & x"bc0" => DATA <= x"003f"; + when "01" & x"bc1" => DATA <= x"0776"; + when "01" & x"bc2" => DATA <= x"003f"; + when "01" & x"bc3" => DATA <= x"0776"; + when "01" & x"bc4" => DATA <= x"003f"; + when "01" & x"bc5" => DATA <= x"0776"; + when "01" & x"bc6" => DATA <= x"003f"; + when "01" & x"bc7" => DATA <= x"0776"; + when "01" & x"bc8" => DATA <= x"003f"; + when "01" & x"bc9" => DATA <= x"0776"; + when "01" & x"bca" => DATA <= x"003f"; + when "01" & x"bcb" => DATA <= x"0776"; + when "01" & x"bcc" => DATA <= x"003f"; + when "01" & x"bcd" => DATA <= x"0776"; + when "01" & x"bce" => DATA <= x"003f"; + when "01" & x"bcf" => DATA <= x"0776"; + when "01" & x"bd0" => DATA <= x"003f"; + when "01" & x"bd1" => DATA <= x"0776"; + when "01" & x"bd2" => DATA <= x"003f"; + when "01" & x"bd3" => DATA <= x"0776"; + when "01" & x"bd4" => DATA <= x"003f"; + when "01" & x"bd5" => DATA <= x"0776"; + when "01" & x"bd6" => DATA <= x"003f"; + when "01" & x"bd7" => DATA <= x"0776"; + when "01" & x"bd8" => DATA <= x"003f"; + when "01" & x"bd9" => DATA <= x"0776"; + when "01" & x"bda" => DATA <= x"003f"; + when "01" & x"bdb" => DATA <= x"0776"; + when "01" & x"bdc" => DATA <= x"003f"; + when "01" & x"bdd" => DATA <= x"0776"; + when "01" & x"bde" => DATA <= x"003f"; + when "01" & x"bdf" => DATA <= x"0776"; + when "01" & x"be0" => DATA <= x"003f"; + when "01" & x"be1" => DATA <= x"0776"; + when "01" & x"be2" => DATA <= x"003f"; + when "01" & x"be3" => DATA <= x"0776"; + when "01" & x"be4" => DATA <= x"003f"; + when "01" & x"be5" => DATA <= x"0776"; + when "01" & x"be6" => DATA <= x"003f"; + when "01" & x"be7" => DATA <= x"0776"; + when "01" & x"be8" => DATA <= x"003f"; + when "01" & x"be9" => DATA <= x"0776"; + when "01" & x"bea" => DATA <= x"003f"; + when "01" & x"beb" => DATA <= x"0776"; + when "01" & x"bec" => DATA <= x"003f"; + when "01" & x"bed" => DATA <= x"0776"; + when "01" & x"bee" => DATA <= x"003f"; + when "01" & x"bef" => DATA <= x"0776"; + when "01" & x"bf0" => DATA <= x"003f"; + when "01" & x"bf1" => DATA <= x"0776"; + when "01" & x"bf2" => DATA <= x"1890"; + when "01" & x"bf3" => DATA <= x"0210"; + when "01" & x"bf4" => DATA <= x"e3c9"; + when "01" & x"bf5" => DATA <= x"faf0"; + when "01" & x"bf6" => DATA <= x"036c"; + when "01" & x"bf7" => DATA <= x"0325"; + when "01" & x"bf8" => DATA <= x"8670"; + when "01" & x"bf9" => DATA <= x"8471"; + when "01" & x"bfa" => DATA <= x"48a9"; + when "01" & x"bfb" => DATA <= x"fba2"; + when "01" & x"bfc" => DATA <= x"00a0"; + when "01" & x"bfd" => DATA <= x"ff20"; + when "01" & x"bfe" => DATA <= x"f4ff"; + when "01" & x"bff" => DATA <= x"8673"; + when "01" & x"c00" => DATA <= x"ad34"; + when "01" & x"c01" => DATA <= x"fe48"; + when "01" & x"c02" => DATA <= x"a9c7"; + when "01" & x"c03" => DATA <= x"2006"; + when "01" & x"c04" => DATA <= x"0490"; + when "01" & x"c05" => DATA <= x"f9a0"; + when "01" & x"c06" => DATA <= x"00b1"; + when "01" & x"c07" => DATA <= x"70c9"; + when "01" & x"c08" => DATA <= x"0d08"; + when "01" & x"c09" => DATA <= x"a5f4"; + when "01" & x"c0a" => DATA <= x"8572"; + when "01" & x"c0b" => DATA <= x"a00d"; + when "01" & x"c0c" => DATA <= x"b170"; + when "01" & x"c0d" => DATA <= x"aaa0"; + when "01" & x"c0e" => DATA <= x"02b1"; + when "01" & x"c0f" => DATA <= x"7085"; + when "01" & x"c10" => DATA <= x"74c8"; + when "01" & x"c11" => DATA <= x"b170"; + when "01" & x"c12" => DATA <= x"8575"; + when "01" & x"c13" => DATA <= x"28f0"; + when "01" & x"c14" => DATA <= x"408a"; + when "01" & x"c15" => DATA <= x"4829"; + when "01" & x"c16" => DATA <= x"40d0"; + when "01" & x"c17" => DATA <= x"138a"; + when "01" & x"c18" => DATA <= x"2920"; + when "01" & x"c19" => DATA <= x"d004"; + when "01" & x"c1a" => DATA <= x"a200"; + when "01" & x"c1b" => DATA <= x"f002"; + when "01" & x"c1c" => DATA <= x"a201"; + when "01" & x"c1d" => DATA <= x"a96c"; + when "01" & x"c1e" => DATA <= x"20f4"; + when "01" & x"c1f" => DATA <= x"ff4c"; + when "01" & x"c20" => DATA <= x"7725"; + when "01" & x"c21" => DATA <= x"a984"; + when "01" & x"c22" => DATA <= x"20f4"; + when "01" & x"c23" => DATA <= x"ffc0"; + when "01" & x"c24" => DATA <= x"80d0"; + when "01" & x"c25" => DATA <= x"08a9"; + when "01" & x"c26" => DATA <= x"01c5"; + when "01" & x"c27" => DATA <= x"73d0"; + when "01" & x"c28" => DATA <= x"e7f0"; + when "01" & x"c29" => DATA <= x"e1a9"; + when "01" & x"c2a" => DATA <= x"02c5"; + when "01" & x"c2b" => DATA <= x"73d0"; + when "01" & x"c2c" => DATA <= x"dbf0"; + when "01" & x"c2d" => DATA <= x"dd68"; + when "01" & x"c2e" => DATA <= x"aa29"; + when "01" & x"c2f" => DATA <= x"10d0"; + when "01" & x"c30" => DATA <= x"088a"; + when "01" & x"c31" => DATA <= x"290f"; + when "01" & x"c32" => DATA <= x"85f4"; + when "01" & x"c33" => DATA <= x"8d30"; + when "01" & x"c34" => DATA <= x"fea0"; + when "01" & x"c35" => DATA <= x"0ab1"; + when "01" & x"c36" => DATA <= x"7085"; + when "01" & x"c37" => DATA <= x"77c8"; + when "01" & x"c38" => DATA <= x"b170"; + when "01" & x"c39" => DATA <= x"8576"; + when "01" & x"c3a" => DATA <= x"0577"; + when "01" & x"c3b" => DATA <= x"d002"; + when "01" & x"c3c" => DATA <= x"f06e"; + when "01" & x"c3d" => DATA <= x"a577"; + when "01" & x"c3e" => DATA <= x"f002"; + when "01" & x"c3f" => DATA <= x"e676"; + when "01" & x"c40" => DATA <= x"c8b1"; + when "01" & x"c41" => DATA <= x"7048"; + when "01" & x"c42" => DATA <= x"a577"; + when "01" & x"c43" => DATA <= x"f011"; + when "01" & x"c44" => DATA <= x"a576"; + when "01" & x"c45" => DATA <= x"c901"; + when "01" & x"c46" => DATA <= x"d00b"; + when "01" & x"c47" => DATA <= x"6848"; + when "01" & x"c48" => DATA <= x"c906"; + when "01" & x"c49" => DATA <= x"9005"; + when "01" & x"c4a" => DATA <= x"6838"; + when "01" & x"c4b" => DATA <= x"e906"; + when "01" & x"c4c" => DATA <= x"48a5"; + when "01" & x"c4d" => DATA <= x"7018"; + when "01" & x"c4e" => DATA <= x"6906"; + when "01" & x"c4f" => DATA <= x"aaa9"; + when "01" & x"c50" => DATA <= x"0065"; + when "01" & x"c51" => DATA <= x"71a8"; + when "01" & x"c52" => DATA <= x"6848"; + when "01" & x"c53" => DATA <= x"2006"; + when "01" & x"c54" => DATA <= x"04a6"; + when "01" & x"c55" => DATA <= x"7768"; + when "01" & x"c56" => DATA <= x"a000"; + when "01" & x"c57" => DATA <= x"c900"; + when "01" & x"c58" => DATA <= x"f01e"; + when "01" & x"c59" => DATA <= x"c901"; + when "01" & x"c5a" => DATA <= x"f035"; + when "01" & x"c5b" => DATA <= x"c902"; + when "01" & x"c5c" => DATA <= x"f049"; + when "01" & x"c5d" => DATA <= x"c903"; + when "01" & x"c5e" => DATA <= x"f070"; + when "01" & x"c5f" => DATA <= x"c906"; + when "01" & x"c60" => DATA <= x"f008"; + when "01" & x"c61" => DATA <= x"c907"; + when "01" & x"c62" => DATA <= x"f007"; + when "01" & x"c63" => DATA <= x"a900"; + when "01" & x"c64" => DATA <= x"f01e"; + when "01" & x"c65" => DATA <= x"4c75"; + when "01" & x"c66" => DATA <= x"264c"; + when "01" & x"c67" => DATA <= x"a326"; + when "01" & x"c68" => DATA <= x"20f4"; + when "01" & x"c69" => DATA <= x"26ad"; + when "01" & x"c6a" => DATA <= x"e5fe"; + when "01" & x"c6b" => DATA <= x"9174"; + when "01" & x"c6c" => DATA <= x"20f4"; + when "01" & x"c6d" => DATA <= x"26e6"; + when "01" & x"c6e" => DATA <= x"74d0"; + when "01" & x"c6f" => DATA <= x"02e6"; + when "01" & x"c70" => DATA <= x"75ca"; + when "01" & x"c71" => DATA <= x"d0ef"; + when "01" & x"c72" => DATA <= x"c676"; + when "01" & x"c73" => DATA <= x"d0eb"; + when "01" & x"c74" => DATA <= x"4cda"; + when "01" & x"c75" => DATA <= x"26b1"; + when "01" & x"c76" => DATA <= x"748d"; + when "01" & x"c77" => DATA <= x"e5fe"; + when "01" & x"c78" => DATA <= x"20f4"; + when "01" & x"c79" => DATA <= x"26e6"; + when "01" & x"c7a" => DATA <= x"74d0"; + when "01" & x"c7b" => DATA <= x"02e6"; + when "01" & x"c7c" => DATA <= x"75ca"; + when "01" & x"c7d" => DATA <= x"d0ef"; + when "01" & x"c7e" => DATA <= x"c676"; + when "01" & x"c7f" => DATA <= x"d0eb"; + when "01" & x"c80" => DATA <= x"4cda"; + when "01" & x"c81" => DATA <= x"2620"; + when "01" & x"c82" => DATA <= x"f426"; + when "01" & x"c83" => DATA <= x"ade5"; + when "01" & x"c84" => DATA <= x"fe91"; + when "01" & x"c85" => DATA <= x"74e6"; + when "01" & x"c86" => DATA <= x"74d0"; + when "01" & x"c87" => DATA <= x"02e6"; + when "01" & x"c88" => DATA <= x"75ea"; + when "01" & x"c89" => DATA <= x"eaad"; + when "01" & x"c8a" => DATA <= x"e5fe"; + when "01" & x"c8b" => DATA <= x"9174"; + when "01" & x"c8c" => DATA <= x"e674"; + when "01" & x"c8d" => DATA <= x"d002"; + when "01" & x"c8e" => DATA <= x"e675"; + when "01" & x"c8f" => DATA <= x"20f3"; + when "01" & x"c90" => DATA <= x"26ea"; + when "01" & x"c91" => DATA <= x"eaca"; + when "01" & x"c92" => DATA <= x"cad0"; + when "01" & x"c93" => DATA <= x"dfc6"; + when "01" & x"c94" => DATA <= x"76d0"; + when "01" & x"c95" => DATA <= x"db4c"; + when "01" & x"c96" => DATA <= x"da26"; + when "01" & x"c97" => DATA <= x"b174"; + when "01" & x"c98" => DATA <= x"8de5"; + when "01" & x"c99" => DATA <= x"fee6"; + when "01" & x"c9a" => DATA <= x"74f0"; + when "01" & x"c9b" => DATA <= x"03ea"; + when "01" & x"c9c" => DATA <= x"d002"; + when "01" & x"c9d" => DATA <= x"e675"; + when "01" & x"c9e" => DATA <= x"a573"; + when "01" & x"c9f" => DATA <= x"b174"; + when "01" & x"ca0" => DATA <= x"8de5"; + when "01" & x"ca1" => DATA <= x"fee6"; + when "01" & x"ca2" => DATA <= x"74f0"; + when "01" & x"ca3" => DATA <= x"03ea"; + when "01" & x"ca4" => DATA <= x"d002"; + when "01" & x"ca5" => DATA <= x"e675"; + when "01" & x"ca6" => DATA <= x"20f3"; + when "01" & x"ca7" => DATA <= x"26ca"; + when "01" & x"ca8" => DATA <= x"cad0"; + when "01" & x"ca9" => DATA <= x"dbc6"; + when "01" & x"caa" => DATA <= x"76d0"; + when "01" & x"cab" => DATA <= x"d7f0"; + when "01" & x"cac" => DATA <= x"6520"; + when "01" & x"cad" => DATA <= x"f426"; + when "01" & x"cae" => DATA <= x"ade5"; + when "01" & x"caf" => DATA <= x"fe91"; + when "01" & x"cb0" => DATA <= x"74ea"; + when "01" & x"cb1" => DATA <= x"eaea"; + when "01" & x"cb2" => DATA <= x"c8d0"; + when "01" & x"cb3" => DATA <= x"f5e0"; + when "01" & x"cb4" => DATA <= x"00d0"; + when "01" & x"cb5" => DATA <= x"0cc6"; + when "01" & x"cb6" => DATA <= x"76f0"; + when "01" & x"cb7" => DATA <= x"4f20"; + when "01" & x"cb8" => DATA <= x"ce26"; + when "01" & x"cb9" => DATA <= x"a906"; + when "01" & x"cba" => DATA <= x"4c9f"; + when "01" & x"cbb" => DATA <= x"25c6"; + when "01" & x"cbc" => DATA <= x"76a5"; + when "01" & x"cbd" => DATA <= x"76c9"; + when "01" & x"cbe" => DATA <= x"01d0"; + when "01" & x"cbf" => DATA <= x"f020"; + when "01" & x"cc0" => DATA <= x"ce26"; + when "01" & x"cc1" => DATA <= x"a900"; + when "01" & x"cc2" => DATA <= x"4c9f"; + when "01" & x"cc3" => DATA <= x"25b1"; + when "01" & x"cc4" => DATA <= x"748d"; + when "01" & x"cc5" => DATA <= x"e5fe"; + when "01" & x"cc6" => DATA <= x"eaea"; + when "01" & x"cc7" => DATA <= x"eac8"; + when "01" & x"cc8" => DATA <= x"d0f5"; + when "01" & x"cc9" => DATA <= x"e000"; + when "01" & x"cca" => DATA <= x"d00c"; + when "01" & x"ccb" => DATA <= x"c676"; + when "01" & x"ccc" => DATA <= x"f024"; + when "01" & x"ccd" => DATA <= x"20ce"; + when "01" & x"cce" => DATA <= x"26a9"; + when "01" & x"ccf" => DATA <= x"074c"; + when "01" & x"cd0" => DATA <= x"9f25"; + when "01" & x"cd1" => DATA <= x"c676"; + when "01" & x"cd2" => DATA <= x"a576"; + when "01" & x"cd3" => DATA <= x"c901"; + when "01" & x"cd4" => DATA <= x"d0f0"; + when "01" & x"cd5" => DATA <= x"20ce"; + when "01" & x"cd6" => DATA <= x"26a9"; + when "01" & x"cd7" => DATA <= x"014c"; + when "01" & x"cd8" => DATA <= x"9f25"; + when "01" & x"cd9" => DATA <= x"e675"; + when "01" & x"cda" => DATA <= x"a007"; + when "01" & x"cdb" => DATA <= x"b170"; + when "01" & x"cdc" => DATA <= x"1869"; + when "01" & x"cdd" => DATA <= x"0191"; + when "01" & x"cde" => DATA <= x"7060"; + when "01" & x"cdf" => DATA <= x"a987"; + when "01" & x"ce0" => DATA <= x"2006"; + when "01" & x"ce1" => DATA <= x"04a5"; + when "01" & x"ce2" => DATA <= x"72c5"; + when "01" & x"ce3" => DATA <= x"f4f0"; + when "01" & x"ce4" => DATA <= x"0585"; + when "01" & x"ce5" => DATA <= x"f48d"; + when "01" & x"ce6" => DATA <= x"30fe"; + when "01" & x"ce7" => DATA <= x"688d"; + when "01" & x"ce8" => DATA <= x"34fe"; + when "01" & x"ce9" => DATA <= x"a670"; + when "01" & x"cea" => DATA <= x"a471"; + when "01" & x"ceb" => DATA <= x"6860"; + when "01" & x"cec" => DATA <= x"20f3"; + when "01" & x"ced" => DATA <= x"2620"; + when "01" & x"cee" => DATA <= x"f326"; + when "01" & x"cef" => DATA <= x"60ff"; + when "01" & x"cf0" => DATA <= x"003c"; + when "01" & x"cf1" => DATA <= x"ffff"; + when "01" & x"cf2" => DATA <= x"4f52"; + when "01" & x"cf3" => DATA <= x"4920"; + when "01" & x"cf4" => DATA <= x"2000"; + when "01" & x"cf5" => DATA <= x"003f"; + when "01" & x"cf6" => DATA <= x"39e0"; + when "01" & x"cf7" => DATA <= x"007c"; + when "01" & x"cf8" => DATA <= x"ffff"; + when "01" & x"cf9" => DATA <= x"4f52"; + when "01" & x"cfa" => DATA <= x"4920"; + when "01" & x"cfb" => DATA <= x"2000"; + when "01" & x"cfc" => DATA <= x"003f"; + when "01" & x"cfd" => DATA <= x"39e0"; + when "01" & x"cfe" => DATA <= x"023c"; + when "01" & x"cff" => DATA <= x"ffff"; + when "01" & x"d00" => DATA <= x"414e"; + when "01" & x"d01" => DATA <= x"4449"; + when "01" & x"d02" => DATA <= x"2000"; + when "01" & x"d03" => DATA <= x"003f"; + when "01" & x"d04" => DATA <= x"39e0"; + when "01" & x"d05" => DATA <= x"027c"; + when "01" & x"d06" => DATA <= x"ffff"; + when "01" & x"d07" => DATA <= x"414e"; + when "01" & x"d08" => DATA <= x"4449"; + when "01" & x"d09" => DATA <= x"2000"; + when "01" & x"d0a" => DATA <= x"003f"; + when "01" & x"d0b" => DATA <= x"39e0"; + when "01" & x"d0c" => DATA <= x"0a3c"; + when "01" & x"d0d" => DATA <= x"ffff"; + when "01" & x"d0e" => DATA <= x"454f"; + when "01" & x"d0f" => DATA <= x"5249"; + when "01" & x"d10" => DATA <= x"2000"; + when "01" & x"d11" => DATA <= x"003f"; + when "01" & x"d12" => DATA <= x"39e0"; + when "01" & x"d13" => DATA <= x"0a7c"; + when "01" & x"d14" => DATA <= x"ffff"; + when "01" & x"d15" => DATA <= x"454f"; + when "01" & x"d16" => DATA <= x"5249"; + when "01" & x"d17" => DATA <= x"2000"; + when "01" & x"d18" => DATA <= x"003f"; + when "01" & x"d19" => DATA <= x"39e0"; + when "01" & x"d1a" => DATA <= x"0800"; + when "01" & x"d1b" => DATA <= x"ffc0"; + when "01" & x"d1c" => DATA <= x"4254"; + when "01" & x"d1d" => DATA <= x"5354"; + when "01" & x"d1e" => DATA <= x"2000"; + when "01" & x"d1f" => DATA <= x"003f"; + when "01" & x"d20" => DATA <= x"39e0"; + when "01" & x"d21" => DATA <= x"0840"; + when "01" & x"d22" => DATA <= x"ffc0"; + when "01" & x"d23" => DATA <= x"4243"; + when "01" & x"d24" => DATA <= x"4847"; + when "01" & x"d25" => DATA <= x"2000"; + when "01" & x"d26" => DATA <= x"003f"; + when "01" & x"d27" => DATA <= x"39e0"; + when "01" & x"d28" => DATA <= x"0880"; + when "01" & x"d29" => DATA <= x"ffc0"; + when "01" & x"d2a" => DATA <= x"4243"; + when "01" & x"d2b" => DATA <= x"4c52"; + when "01" & x"d2c" => DATA <= x"2000"; + when "01" & x"d2d" => DATA <= x"003f"; + when "01" & x"d2e" => DATA <= x"39e0"; + when "01" & x"d2f" => DATA <= x"08c0"; + when "01" & x"d30" => DATA <= x"ffc0"; + when "01" & x"d31" => DATA <= x"4253"; + when "01" & x"d32" => DATA <= x"4554"; + when "01" & x"d33" => DATA <= x"2000"; + when "01" & x"d34" => DATA <= x"003f"; + when "01" & x"d35" => DATA <= x"39e0"; + when "01" & x"d36" => DATA <= x"0000"; + when "01" & x"d37" => DATA <= x"ff00"; + when "01" & x"d38" => DATA <= x"4f52"; + when "01" & x"d39" => DATA <= x"4920"; + when "01" & x"d3a" => DATA <= x"2000"; + when "01" & x"d3b" => DATA <= x"003f"; + when "01" & x"d3c" => DATA <= x"39e0"; + when "01" & x"d3d" => DATA <= x"0200"; + when "01" & x"d3e" => DATA <= x"ff00"; + when "01" & x"d3f" => DATA <= x"414e"; + when "01" & x"d40" => DATA <= x"4449"; + when "01" & x"d41" => DATA <= x"2000"; + when "01" & x"d42" => DATA <= x"003f"; + when "01" & x"d43" => DATA <= x"39e0"; + when "01" & x"d44" => DATA <= x"0400"; + when "01" & x"d45" => DATA <= x"ff00"; + when "01" & x"d46" => DATA <= x"5355"; + when "01" & x"d47" => DATA <= x"4249"; + when "01" & x"d48" => DATA <= x"2000"; + when "01" & x"d49" => DATA <= x"003f"; + when "01" & x"d4a" => DATA <= x"39e0"; + when "01" & x"d4b" => DATA <= x"0600"; + when "01" & x"d4c" => DATA <= x"ff00"; + when "01" & x"d4d" => DATA <= x"4144"; + when "01" & x"d4e" => DATA <= x"4449"; + when "01" & x"d4f" => DATA <= x"2000"; + when "01" & x"d50" => DATA <= x"003f"; + when "01" & x"d51" => DATA <= x"39e0"; + when "01" & x"d52" => DATA <= x"0a00"; + when "01" & x"d53" => DATA <= x"ff00"; + when "01" & x"d54" => DATA <= x"454f"; + when "01" & x"d55" => DATA <= x"5249"; + when "01" & x"d56" => DATA <= x"2000"; + when "01" & x"d57" => DATA <= x"003f"; + when "01" & x"d58" => DATA <= x"39e0"; + when "01" & x"d59" => DATA <= x"0c00"; + when "01" & x"d5a" => DATA <= x"ff00"; + when "01" & x"d5b" => DATA <= x"434d"; + when "01" & x"d5c" => DATA <= x"5049"; + when "01" & x"d5d" => DATA <= x"2000"; + when "01" & x"d5e" => DATA <= x"003f"; + when "01" & x"d5f" => DATA <= x"39e0"; + when "01" & x"d60" => DATA <= x"0108"; + when "01" & x"d61" => DATA <= x"f138"; + when "01" & x"d62" => DATA <= x"4d4f"; + when "01" & x"d63" => DATA <= x"5645"; + when "01" & x"d64" => DATA <= x"5000"; + when "01" & x"d65" => DATA <= x"003f"; + when "01" & x"d66" => DATA <= x"39e0"; + when "01" & x"d67" => DATA <= x"0100"; + when "01" & x"d68" => DATA <= x"f1c0"; + when "01" & x"d69" => DATA <= x"4254"; + when "01" & x"d6a" => DATA <= x"5354"; + when "01" & x"d6b" => DATA <= x"2000"; + when "01" & x"d6c" => DATA <= x"003f"; + when "01" & x"d6d" => DATA <= x"39e0"; + when "01" & x"d6e" => DATA <= x"0140"; + when "01" & x"d6f" => DATA <= x"f1c0"; + when "01" & x"d70" => DATA <= x"4243"; + when "01" & x"d71" => DATA <= x"4847"; + when "01" & x"d72" => DATA <= x"2000"; + when "01" & x"d73" => DATA <= x"003f"; + when "01" & x"d74" => DATA <= x"39e0"; + when "01" & x"d75" => DATA <= x"0180"; + when "01" & x"d76" => DATA <= x"f1c0"; + when "01" & x"d77" => DATA <= x"4243"; + when "01" & x"d78" => DATA <= x"4c52"; + when "01" & x"d79" => DATA <= x"2000"; + when "01" & x"d7a" => DATA <= x"003f"; + when "01" & x"d7b" => DATA <= x"39e0"; + when "01" & x"d7c" => DATA <= x"01c0"; + when "01" & x"d7d" => DATA <= x"f1c0"; + when "01" & x"d7e" => DATA <= x"4253"; + when "01" & x"d7f" => DATA <= x"4554"; + when "01" & x"d80" => DATA <= x"2000"; + when "01" & x"d81" => DATA <= x"003f"; + when "01" & x"d82" => DATA <= x"39e0"; + when "01" & x"d83" => DATA <= x"0040"; + when "01" & x"d84" => DATA <= x"c1c0"; + when "01" & x"d85" => DATA <= x"4d4f"; + when "01" & x"d86" => DATA <= x"5645"; + when "01" & x"d87" => DATA <= x"4100"; + when "01" & x"d88" => DATA <= x"003f"; + when "01" & x"d89" => DATA <= x"39e0"; + when "01" & x"d8a" => DATA <= x"0000"; + when "01" & x"d8b" => DATA <= x"c000"; + when "01" & x"d8c" => DATA <= x"4d4f"; + when "01" & x"d8d" => DATA <= x"5645"; + when "01" & x"d8e" => DATA <= x"2000"; + when "01" & x"d8f" => DATA <= x"003f"; + when "01" & x"d90" => DATA <= x"39e0"; + when "01" & x"d91" => DATA <= x"4afc"; + when "01" & x"d92" => DATA <= x"ffff"; + when "01" & x"d93" => DATA <= x"494c"; + when "01" & x"d94" => DATA <= x"4c45"; + when "01" & x"d95" => DATA <= x"4700"; + when "01" & x"d96" => DATA <= x"003f"; + when "01" & x"d97" => DATA <= x"39e0"; + when "01" & x"d98" => DATA <= x"4e70"; + when "01" & x"d99" => DATA <= x"ffff"; + when "01" & x"d9a" => DATA <= x"5245"; + when "01" & x"d9b" => DATA <= x"5345"; + when "01" & x"d9c" => DATA <= x"5400"; + when "01" & x"d9d" => DATA <= x"003f"; + when "01" & x"d9e" => DATA <= x"39e0"; + when "01" & x"d9f" => DATA <= x"4e71"; + when "01" & x"da0" => DATA <= x"ffff"; + when "01" & x"da1" => DATA <= x"4e4f"; + when "01" & x"da2" => DATA <= x"5020"; + when "01" & x"da3" => DATA <= x"2000"; + when "01" & x"da4" => DATA <= x"003f"; + when "01" & x"da5" => DATA <= x"39e0"; + when "01" & x"da6" => DATA <= x"4e72"; + when "01" & x"da7" => DATA <= x"ffff"; + when "01" & x"da8" => DATA <= x"5354"; + when "01" & x"da9" => DATA <= x"4f50"; + when "01" & x"daa" => DATA <= x"2000"; + when "01" & x"dab" => DATA <= x"003f"; + when "01" & x"dac" => DATA <= x"39e0"; + when "01" & x"dad" => DATA <= x"4e73"; + when "01" & x"dae" => DATA <= x"ffff"; + when "01" & x"daf" => DATA <= x"5254"; + when "01" & x"db0" => DATA <= x"4520"; + when "01" & x"db1" => DATA <= x"2000"; + when "01" & x"db2" => DATA <= x"003f"; + when "01" & x"db3" => DATA <= x"39e0"; + when "01" & x"db4" => DATA <= x"4e75"; + when "01" & x"db5" => DATA <= x"ffff"; + when "01" & x"db6" => DATA <= x"5254"; + when "01" & x"db7" => DATA <= x"5320"; + when "01" & x"db8" => DATA <= x"2000"; + when "01" & x"db9" => DATA <= x"003f"; + when "01" & x"dba" => DATA <= x"39e0"; + when "01" & x"dbb" => DATA <= x"4e76"; + when "01" & x"dbc" => DATA <= x"ffff"; + when "01" & x"dbd" => DATA <= x"5452"; + when "01" & x"dbe" => DATA <= x"4150"; + when "01" & x"dbf" => DATA <= x"5600"; + when "01" & x"dc0" => DATA <= x"003f"; + when "01" & x"dc1" => DATA <= x"39e0"; + when "01" & x"dc2" => DATA <= x"4e77"; + when "01" & x"dc3" => DATA <= x"ffff"; + when "01" & x"dc4" => DATA <= x"5254"; + when "01" & x"dc5" => DATA <= x"5220"; + when "01" & x"dc6" => DATA <= x"2000"; + when "01" & x"dc7" => DATA <= x"003f"; + when "01" & x"dc8" => DATA <= x"39e0"; + when "01" & x"dc9" => DATA <= x"4840"; + when "01" & x"dca" => DATA <= x"fff8"; + when "01" & x"dcb" => DATA <= x"5357"; + when "01" & x"dcc" => DATA <= x"4150"; + when "01" & x"dcd" => DATA <= x"2000"; + when "01" & x"dce" => DATA <= x"003f"; + when "01" & x"dcf" => DATA <= x"39e0"; + when "01" & x"dd0" => DATA <= x"4e50"; + when "01" & x"dd1" => DATA <= x"fff8"; + when "01" & x"dd2" => DATA <= x"4c49"; + when "01" & x"dd3" => DATA <= x"4e4b"; + when "01" & x"dd4" => DATA <= x"2000"; + when "01" & x"dd5" => DATA <= x"003f"; + when "01" & x"dd6" => DATA <= x"39e0"; + when "01" & x"dd7" => DATA <= x"4e58"; + when "01" & x"dd8" => DATA <= x"fff8"; + when "01" & x"dd9" => DATA <= x"554e"; + when "01" & x"dda" => DATA <= x"4c4b"; + when "01" & x"ddb" => DATA <= x"2000"; + when "01" & x"ddc" => DATA <= x"003f"; + when "01" & x"ddd" => DATA <= x"39e0"; + when "01" & x"dde" => DATA <= x"4e60"; + when "01" & x"ddf" => DATA <= x"fff0"; + when "01" & x"de0" => DATA <= x"4d4f"; + when "01" & x"de1" => DATA <= x"5645"; + when "01" & x"de2" => DATA <= x"2000"; + when "01" & x"de3" => DATA <= x"003f"; + when "01" & x"de4" => DATA <= x"39e0"; + when "01" & x"de5" => DATA <= x"4e40"; + when "01" & x"de6" => DATA <= x"fff0"; + when "01" & x"de7" => DATA <= x"5452"; + when "01" & x"de8" => DATA <= x"4150"; + when "01" & x"de9" => DATA <= x"2000"; + when "01" & x"dea" => DATA <= x"003f"; + when "01" & x"deb" => DATA <= x"39e0"; + when "01" & x"dec" => DATA <= x"4e80"; + when "01" & x"ded" => DATA <= x"ffc0"; + when "01" & x"dee" => DATA <= x"4a53"; + when "01" & x"def" => DATA <= x"5220"; + when "01" & x"df0" => DATA <= x"2000"; + when "01" & x"df1" => DATA <= x"003f"; + when "01" & x"df2" => DATA <= x"39e0"; + when "01" & x"df3" => DATA <= x"4ec0"; + when "01" & x"df4" => DATA <= x"ffc0"; + when "01" & x"df5" => DATA <= x"4a4d"; + when "01" & x"df6" => DATA <= x"5020"; + when "01" & x"df7" => DATA <= x"2000"; + when "01" & x"df8" => DATA <= x"003f"; + when "01" & x"df9" => DATA <= x"39e0"; + when "01" & x"dfa" => DATA <= x"4880"; + when "01" & x"dfb" => DATA <= x"feb8"; + when "01" & x"dfc" => DATA <= x"4558"; + when "01" & x"dfd" => DATA <= x"5420"; + when "01" & x"dfe" => DATA <= x"2000"; + when "01" & x"dff" => DATA <= x"003f"; + when "01" & x"e00" => DATA <= x"39e0"; + when "01" & x"e01" => DATA <= x"40c0"; + when "01" & x"e02" => DATA <= x"ffc0"; + when "01" & x"e03" => DATA <= x"4d4f"; + when "01" & x"e04" => DATA <= x"5645"; + when "01" & x"e05" => DATA <= x"2000"; + when "01" & x"e06" => DATA <= x"003f"; + when "01" & x"e07" => DATA <= x"39e0"; + when "01" & x"e08" => DATA <= x"44c0"; + when "01" & x"e09" => DATA <= x"ffc0"; + when "01" & x"e0a" => DATA <= x"4d4f"; + when "01" & x"e0b" => DATA <= x"5645"; + when "01" & x"e0c" => DATA <= x"2000"; + when "01" & x"e0d" => DATA <= x"003f"; + when "01" & x"e0e" => DATA <= x"39e0"; + when "01" & x"e0f" => DATA <= x"46c0"; + when "01" & x"e10" => DATA <= x"ffc0"; + when "01" & x"e11" => DATA <= x"4d4f"; + when "01" & x"e12" => DATA <= x"5645"; + when "01" & x"e13" => DATA <= x"2000"; + when "01" & x"e14" => DATA <= x"003f"; + when "01" & x"e15" => DATA <= x"39e0"; + when "01" & x"e16" => DATA <= x"4800"; + when "01" & x"e17" => DATA <= x"ffc0"; + when "01" & x"e18" => DATA <= x"4e42"; + when "01" & x"e19" => DATA <= x"4344"; + when "01" & x"e1a" => DATA <= x"2000"; + when "01" & x"e1b" => DATA <= x"003f"; + when "01" & x"e1c" => DATA <= x"39e0"; + when "01" & x"e1d" => DATA <= x"4840"; + when "01" & x"e1e" => DATA <= x"ffc0"; + when "01" & x"e1f" => DATA <= x"5045"; + when "01" & x"e20" => DATA <= x"4120"; + when "01" & x"e21" => DATA <= x"2000"; + when "01" & x"e22" => DATA <= x"003f"; + when "01" & x"e23" => DATA <= x"39e0"; + when "01" & x"e24" => DATA <= x"4ac0"; + when "01" & x"e25" => DATA <= x"ffc0"; + when "01" & x"e26" => DATA <= x"5441"; + when "01" & x"e27" => DATA <= x"5320"; + when "01" & x"e28" => DATA <= x"2000"; + when "01" & x"e29" => DATA <= x"003f"; + when "01" & x"e2a" => DATA <= x"39e0"; + when "01" & x"e2b" => DATA <= x"4000"; + when "01" & x"e2c" => DATA <= x"ff00"; + when "01" & x"e2d" => DATA <= x"4e45"; + when "01" & x"e2e" => DATA <= x"4758"; + when "01" & x"e2f" => DATA <= x"2000"; + when "01" & x"e30" => DATA <= x"003f"; + when "01" & x"e31" => DATA <= x"39e0"; + when "01" & x"e32" => DATA <= x"4200"; + when "01" & x"e33" => DATA <= x"ff00"; + when "01" & x"e34" => DATA <= x"434c"; + when "01" & x"e35" => DATA <= x"5220"; + when "01" & x"e36" => DATA <= x"2000"; + when "01" & x"e37" => DATA <= x"003f"; + when "01" & x"e38" => DATA <= x"39e0"; + when "01" & x"e39" => DATA <= x"4400"; + when "01" & x"e3a" => DATA <= x"ff00"; + when "01" & x"e3b" => DATA <= x"4e45"; + when "01" & x"e3c" => DATA <= x"4720"; + when "01" & x"e3d" => DATA <= x"2000"; + when "01" & x"e3e" => DATA <= x"003f"; + when "01" & x"e3f" => DATA <= x"39e0"; + when "01" & x"e40" => DATA <= x"4600"; + when "01" & x"e41" => DATA <= x"ff00"; + when "01" & x"e42" => DATA <= x"4e4f"; + when "01" & x"e43" => DATA <= x"5420"; + when "01" & x"e44" => DATA <= x"2000"; + when "01" & x"e45" => DATA <= x"003f"; + when "01" & x"e46" => DATA <= x"39e0"; + when "01" & x"e47" => DATA <= x"4a00"; + when "01" & x"e48" => DATA <= x"ff00"; + when "01" & x"e49" => DATA <= x"5453"; + when "01" & x"e4a" => DATA <= x"5420"; + when "01" & x"e4b" => DATA <= x"2000"; + when "01" & x"e4c" => DATA <= x"003f"; + when "01" & x"e4d" => DATA <= x"39e0"; + when "01" & x"e4e" => DATA <= x"4880"; + when "01" & x"e4f" => DATA <= x"fb80"; + when "01" & x"e50" => DATA <= x"4d4f"; + when "01" & x"e51" => DATA <= x"5645"; + when "01" & x"e52" => DATA <= x"4d00"; + when "01" & x"e53" => DATA <= x"003f"; + when "01" & x"e54" => DATA <= x"39e0"; + when "01" & x"e55" => DATA <= x"41c0"; + when "01" & x"e56" => DATA <= x"f1c0"; + when "01" & x"e57" => DATA <= x"4c45"; + when "01" & x"e58" => DATA <= x"4120"; + when "01" & x"e59" => DATA <= x"2000"; + when "01" & x"e5a" => DATA <= x"003f"; + when "01" & x"e5b" => DATA <= x"39e0"; + when "01" & x"e5c" => DATA <= x"4000"; + when "01" & x"e5d" => DATA <= x"f040"; + when "01" & x"e5e" => DATA <= x"4348"; + when "01" & x"e5f" => DATA <= x"4b20"; + when "01" & x"e60" => DATA <= x"2000"; + when "01" & x"e61" => DATA <= x"003f"; + when "01" & x"e62" => DATA <= x"39e0"; + when "01" & x"e63" => DATA <= x"50c8"; + when "01" & x"e64" => DATA <= x"f0f8"; + when "01" & x"e65" => DATA <= x"4442"; + when "01" & x"e66" => DATA <= x"2020"; + when "01" & x"e67" => DATA <= x"2000"; + when "01" & x"e68" => DATA <= x"003f"; + when "01" & x"e69" => DATA <= x"39e0"; + when "01" & x"e6a" => DATA <= x"50c0"; + when "01" & x"e6b" => DATA <= x"f0c0"; + when "01" & x"e6c" => DATA <= x"5320"; + when "01" & x"e6d" => DATA <= x"2020"; + when "01" & x"e6e" => DATA <= x"2000"; + when "01" & x"e6f" => DATA <= x"003f"; + when "01" & x"e70" => DATA <= x"39e0"; + when "01" & x"e71" => DATA <= x"5000"; + when "01" & x"e72" => DATA <= x"f100"; + when "01" & x"e73" => DATA <= x"4144"; + when "01" & x"e74" => DATA <= x"4451"; + when "01" & x"e75" => DATA <= x"2000"; + when "01" & x"e76" => DATA <= x"003f"; + when "01" & x"e77" => DATA <= x"39e0"; + when "01" & x"e78" => DATA <= x"5100"; + when "01" & x"e79" => DATA <= x"f100"; + when "01" & x"e7a" => DATA <= x"5355"; + when "01" & x"e7b" => DATA <= x"4251"; + when "01" & x"e7c" => DATA <= x"2000"; + when "01" & x"e7d" => DATA <= x"003f"; + when "01" & x"e7e" => DATA <= x"39e0"; + when "01" & x"e7f" => DATA <= x"6000"; + when "01" & x"e80" => DATA <= x"ff00"; + when "01" & x"e81" => DATA <= x"4252"; + when "01" & x"e82" => DATA <= x"4120"; + when "01" & x"e83" => DATA <= x"2000"; + when "01" & x"e84" => DATA <= x"003f"; + when "01" & x"e85" => DATA <= x"39e0"; + when "01" & x"e86" => DATA <= x"6100"; + when "01" & x"e87" => DATA <= x"ff00"; + when "01" & x"e88" => DATA <= x"4253"; + when "01" & x"e89" => DATA <= x"5220"; + when "01" & x"e8a" => DATA <= x"2000"; + when "01" & x"e8b" => DATA <= x"003f"; + when "01" & x"e8c" => DATA <= x"39e0"; + when "01" & x"e8d" => DATA <= x"6000"; + when "01" & x"e8e" => DATA <= x"f000"; + when "01" & x"e8f" => DATA <= x"4200"; + when "01" & x"e90" => DATA <= x"0000"; + when "01" & x"e91" => DATA <= x"0000"; + when "01" & x"e92" => DATA <= x"003f"; + when "01" & x"e93" => DATA <= x"39e0"; + when "01" & x"e94" => DATA <= x"7000"; + when "01" & x"e95" => DATA <= x"f100"; + when "01" & x"e96" => DATA <= x"4d4f"; + when "01" & x"e97" => DATA <= x"5645"; + when "01" & x"e98" => DATA <= x"5100"; + when "01" & x"e99" => DATA <= x"003f"; + when "01" & x"e9a" => DATA <= x"39e0"; + when "01" & x"e9b" => DATA <= x"8100"; + when "01" & x"e9c" => DATA <= x"f1f0"; + when "01" & x"e9d" => DATA <= x"5342"; + when "01" & x"e9e" => DATA <= x"4344"; + when "01" & x"e9f" => DATA <= x"2000"; + when "01" & x"ea0" => DATA <= x"003f"; + when "01" & x"ea1" => DATA <= x"39e0"; + when "01" & x"ea2" => DATA <= x"80c0"; + when "01" & x"ea3" => DATA <= x"f1c0"; + when "01" & x"ea4" => DATA <= x"4449"; + when "01" & x"ea5" => DATA <= x"5655"; + when "01" & x"ea6" => DATA <= x"2000"; + when "01" & x"ea7" => DATA <= x"003f"; + when "01" & x"ea8" => DATA <= x"39e0"; + when "01" & x"ea9" => DATA <= x"81c0"; + when "01" & x"eaa" => DATA <= x"f1c0"; + when "01" & x"eab" => DATA <= x"4449"; + when "01" & x"eac" => DATA <= x"5653"; + when "01" & x"ead" => DATA <= x"2000"; + when "01" & x"eae" => DATA <= x"003f"; + when "01" & x"eaf" => DATA <= x"39e0"; + when "01" & x"eb0" => DATA <= x"8000"; + when "01" & x"eb1" => DATA <= x"f000"; + when "01" & x"eb2" => DATA <= x"4f52"; + when "01" & x"eb3" => DATA <= x"2020"; + when "01" & x"eb4" => DATA <= x"2000"; + when "01" & x"eb5" => DATA <= x"003f"; + when "01" & x"eb6" => DATA <= x"39e0"; + when "01" & x"eb7" => DATA <= x"9100"; + when "01" & x"eb8" => DATA <= x"f130"; + when "01" & x"eb9" => DATA <= x"5355"; + when "01" & x"eba" => DATA <= x"4258"; + when "01" & x"ebb" => DATA <= x"2000"; + when "01" & x"ebc" => DATA <= x"003f"; + when "01" & x"ebd" => DATA <= x"39e0"; + when "01" & x"ebe" => DATA <= x"90c0"; + when "01" & x"ebf" => DATA <= x"f0c0"; + when "01" & x"ec0" => DATA <= x"5355"; + when "01" & x"ec1" => DATA <= x"4241"; + when "01" & x"ec2" => DATA <= x"2000"; + when "01" & x"ec3" => DATA <= x"003f"; + when "01" & x"ec4" => DATA <= x"39e0"; + when "01" & x"ec5" => DATA <= x"9000"; + when "01" & x"ec6" => DATA <= x"f000"; + when "01" & x"ec7" => DATA <= x"5355"; + when "01" & x"ec8" => DATA <= x"4220"; + when "01" & x"ec9" => DATA <= x"2000"; + when "01" & x"eca" => DATA <= x"003f"; + when "01" & x"ecb" => DATA <= x"39e0"; + when "01" & x"ecc" => DATA <= x"b108"; + when "01" & x"ecd" => DATA <= x"f138"; + when "01" & x"ece" => DATA <= x"434d"; + when "01" & x"ecf" => DATA <= x"504d"; + when "01" & x"ed0" => DATA <= x"2000"; + when "01" & x"ed1" => DATA <= x"003f"; + when "01" & x"ed2" => DATA <= x"39e0"; + when "01" & x"ed3" => DATA <= x"b0c0"; + when "01" & x"ed4" => DATA <= x"f0c0"; + when "01" & x"ed5" => DATA <= x"434d"; + when "01" & x"ed6" => DATA <= x"5041"; + when "01" & x"ed7" => DATA <= x"2000"; + when "01" & x"ed8" => DATA <= x"003f"; + when "01" & x"ed9" => DATA <= x"39e0"; + when "01" & x"eda" => DATA <= x"b100"; + when "01" & x"edb" => DATA <= x"f100"; + when "01" & x"edc" => DATA <= x"454f"; + when "01" & x"edd" => DATA <= x"5220"; + when "01" & x"ede" => DATA <= x"2000"; + when "01" & x"edf" => DATA <= x"003f"; + when "01" & x"ee0" => DATA <= x"39e0"; + when "01" & x"ee1" => DATA <= x"b000"; + when "01" & x"ee2" => DATA <= x"f000"; + when "01" & x"ee3" => DATA <= x"434d"; + when "01" & x"ee4" => DATA <= x"5020"; + when "01" & x"ee5" => DATA <= x"2000"; + when "01" & x"ee6" => DATA <= x"003f"; + when "01" & x"ee7" => DATA <= x"39e0"; + when "01" & x"ee8" => DATA <= x"c140"; + when "01" & x"ee9" => DATA <= x"f1f8"; + when "01" & x"eea" => DATA <= x"4558"; + when "01" & x"eeb" => DATA <= x"4720"; + when "01" & x"eec" => DATA <= x"2000"; + when "01" & x"eed" => DATA <= x"003f"; + when "01" & x"eee" => DATA <= x"39e0"; + when "01" & x"eef" => DATA <= x"c148"; + when "01" & x"ef0" => DATA <= x"f1f8"; + when "01" & x"ef1" => DATA <= x"4558"; + when "01" & x"ef2" => DATA <= x"4720"; + when "01" & x"ef3" => DATA <= x"2000"; + when "01" & x"ef4" => DATA <= x"003f"; + when "01" & x"ef5" => DATA <= x"39e0"; + when "01" & x"ef6" => DATA <= x"c188"; + when "01" & x"ef7" => DATA <= x"f1f8"; + when "01" & x"ef8" => DATA <= x"4558"; + when "01" & x"ef9" => DATA <= x"4720"; + when "01" & x"efa" => DATA <= x"2000"; + when "01" & x"efb" => DATA <= x"003f"; + when "01" & x"efc" => DATA <= x"39e0"; + when "01" & x"efd" => DATA <= x"c100"; + when "01" & x"efe" => DATA <= x"f1f0"; + when "01" & x"eff" => DATA <= x"4142"; + when "01" & x"f00" => DATA <= x"4344"; + when "01" & x"f01" => DATA <= x"2000"; + when "01" & x"f02" => DATA <= x"003f"; + when "01" & x"f03" => DATA <= x"39e0"; + when "01" & x"f04" => DATA <= x"c1c0"; + when "01" & x"f05" => DATA <= x"f1c0"; + when "01" & x"f06" => DATA <= x"4d55"; + when "01" & x"f07" => DATA <= x"4c53"; + when "01" & x"f08" => DATA <= x"2000"; + when "01" & x"f09" => DATA <= x"003f"; + when "01" & x"f0a" => DATA <= x"39e0"; + when "01" & x"f0b" => DATA <= x"c0c0"; + when "01" & x"f0c" => DATA <= x"f1c0"; + when "01" & x"f0d" => DATA <= x"4d55"; + when "01" & x"f0e" => DATA <= x"4c55"; + when "01" & x"f0f" => DATA <= x"2000"; + when "01" & x"f10" => DATA <= x"003f"; + when "01" & x"f11" => DATA <= x"39e0"; + when "01" & x"f12" => DATA <= x"c000"; + when "01" & x"f13" => DATA <= x"f000"; + when "01" & x"f14" => DATA <= x"414e"; + when "01" & x"f15" => DATA <= x"4420"; + when "01" & x"f16" => DATA <= x"2000"; + when "01" & x"f17" => DATA <= x"003f"; + when "01" & x"f18" => DATA <= x"39e0"; + when "01" & x"f19" => DATA <= x"d100"; + when "01" & x"f1a" => DATA <= x"f130"; + when "01" & x"f1b" => DATA <= x"4144"; + when "01" & x"f1c" => DATA <= x"4458"; + when "01" & x"f1d" => DATA <= x"2000"; + when "01" & x"f1e" => DATA <= x"003f"; + when "01" & x"f1f" => DATA <= x"39e0"; + when "01" & x"f20" => DATA <= x"d0c0"; + when "01" & x"f21" => DATA <= x"f0c0"; + when "01" & x"f22" => DATA <= x"4144"; + when "01" & x"f23" => DATA <= x"4441"; + when "01" & x"f24" => DATA <= x"2000"; + when "01" & x"f25" => DATA <= x"003f"; + when "01" & x"f26" => DATA <= x"39e0"; + when "01" & x"f27" => DATA <= x"d000"; + when "01" & x"f28" => DATA <= x"f000"; + when "01" & x"f29" => DATA <= x"4144"; + when "01" & x"f2a" => DATA <= x"4420"; + when "01" & x"f2b" => DATA <= x"2000"; + when "01" & x"f2c" => DATA <= x"003f"; + when "01" & x"f2d" => DATA <= x"39e0"; + when "01" & x"f2e" => DATA <= x"e0c0"; + when "01" & x"f2f" => DATA <= x"fec0"; + when "01" & x"f30" => DATA <= x"4153"; + when "01" & x"f31" => DATA <= x"2020"; + when "01" & x"f32" => DATA <= x"2000"; + when "01" & x"f33" => DATA <= x"003f"; + when "01" & x"f34" => DATA <= x"39e0"; + when "01" & x"f35" => DATA <= x"e2c0"; + when "01" & x"f36" => DATA <= x"fec0"; + when "01" & x"f37" => DATA <= x"4c53"; + when "01" & x"f38" => DATA <= x"2020"; + when "01" & x"f39" => DATA <= x"2000"; + when "01" & x"f3a" => DATA <= x"003f"; + when "01" & x"f3b" => DATA <= x"39e0"; + when "01" & x"f3c" => DATA <= x"e4c0"; + when "01" & x"f3d" => DATA <= x"fec0"; + when "01" & x"f3e" => DATA <= x"524f"; + when "01" & x"f3f" => DATA <= x"5820"; + when "01" & x"f40" => DATA <= x"2000"; + when "01" & x"f41" => DATA <= x"003f"; + when "01" & x"f42" => DATA <= x"39e0"; + when "01" & x"f43" => DATA <= x"e6c0"; + when "01" & x"f44" => DATA <= x"fec0"; + when "01" & x"f45" => DATA <= x"524f"; + when "01" & x"f46" => DATA <= x"2020"; + when "01" & x"f47" => DATA <= x"2000"; + when "01" & x"f48" => DATA <= x"003f"; + when "01" & x"f49" => DATA <= x"39e0"; + when "01" & x"f4a" => DATA <= x"e000"; + when "01" & x"f4b" => DATA <= x"f018"; + when "01" & x"f4c" => DATA <= x"4153"; + when "01" & x"f4d" => DATA <= x"2020"; + when "01" & x"f4e" => DATA <= x"2000"; + when "01" & x"f4f" => DATA <= x"003f"; + when "01" & x"f50" => DATA <= x"39e0"; + when "01" & x"f51" => DATA <= x"e008"; + when "01" & x"f52" => DATA <= x"f018"; + when "01" & x"f53" => DATA <= x"4c53"; + when "01" & x"f54" => DATA <= x"2020"; + when "01" & x"f55" => DATA <= x"2000"; + when "01" & x"f56" => DATA <= x"003f"; + when "01" & x"f57" => DATA <= x"39e0"; + when "01" & x"f58" => DATA <= x"e010"; + when "01" & x"f59" => DATA <= x"f018"; + when "01" & x"f5a" => DATA <= x"524f"; + when "01" & x"f5b" => DATA <= x"5820"; + when "01" & x"f5c" => DATA <= x"2000"; + when "01" & x"f5d" => DATA <= x"003f"; + when "01" & x"f5e" => DATA <= x"39e0"; + when "01" & x"f5f" => DATA <= x"e018"; + when "01" & x"f60" => DATA <= x"f018"; + when "01" & x"f61" => DATA <= x"524f"; + when "01" & x"f62" => DATA <= x"2020"; + when "01" & x"f63" => DATA <= x"2000"; + when "01" & x"f64" => DATA <= x"003f"; + when "01" & x"f65" => DATA <= x"39e0"; + when "01" & x"f66" => DATA <= x"0000"; + when "01" & x"f67" => DATA <= x"0000"; + when "01" & x"f68" => DATA <= x"3f3f"; + when "01" & x"f69" => DATA <= x"3f3f"; + when "01" & x"f6a" => DATA <= x"3f00"; + when "01" & x"f6b" => DATA <= x"003f"; + when "01" & x"f6c" => DATA <= x"39e0"; + when "01" & x"f6d" => DATA <= x"2532"; + when "01" & x"f6e" => DATA <= x"343a"; + when "01" & x"f6f" => DATA <= x"256d"; + when "01" & x"f70" => DATA <= x"693a"; + when "01" & x"f71" => DATA <= x"2573"; + when "01" & x"f72" => DATA <= x"6520"; + when "01" & x"f73" => DATA <= x"2564"; + when "01" & x"f74" => DATA <= x"792d"; + when "01" & x"f75" => DATA <= x"256d"; + when "01" & x"f76" => DATA <= x"332d"; + when "01" & x"f77" => DATA <= x"2563"; + when "01" & x"f78" => DATA <= x"6525"; + when "01" & x"f79" => DATA <= x"7972"; + when "01" & x"f7a" => DATA <= x"0006"; + when "01" & x"f7b" => DATA <= x"7c00"; + when "01" & x"f7c" => DATA <= x"5206"; + when "01" & x"f7d" => DATA <= x"bcbc"; + when "01" & x"f7e" => DATA <= x"0010"; + when "01" & x"f7f" => DATA <= x"0000"; + when "01" & x"f80" => DATA <= x"66f6"; + when "01" & x"f81" => DATA <= x"103c"; + when "01" & x"f82" => DATA <= x"002a"; + when "01" & x"f83" => DATA <= x"6100"; + when "01" & x"f84" => DATA <= x"cade"; + when "01" & x"f85" => DATA <= x"60e9"; + when "01" & x"f86" => DATA <= x"002a"; + when "01" & x"f87" => DATA <= x"6100"; + when "01" & x"f88" => DATA <= x"cae0"; + when "01" & x"f89" => DATA <= x"60e9"; + when "01" & x"f8a" => DATA <= x"cade"; + when "01" & x"f8b" => DATA <= x"60e9"; + when "01" & x"f8c" => DATA <= x"ffff"; + when "01" & x"f8d" => DATA <= x"ffff"; + when "01" & x"f8e" => DATA <= x"ffff"; + when "01" & x"f8f" => DATA <= x"ffff"; + when "01" & x"f90" => DATA <= x"ffff"; + when "01" & x"f91" => DATA <= x"ffff"; + when "01" & x"f92" => DATA <= x"ffff"; + when "01" & x"f93" => DATA <= x"ffff"; + when "01" & x"f94" => DATA <= x"ffff"; + when "01" & x"f95" => DATA <= x"ffff"; + when "01" & x"f96" => DATA <= x"ffff"; + when "01" & x"f97" => DATA <= x"ffff"; + when "01" & x"f98" => DATA <= x"ffff"; + when "01" & x"f99" => DATA <= x"ffff"; + when "01" & x"f9a" => DATA <= x"ffff"; + when "01" & x"f9b" => DATA <= x"ffff"; + when "01" & x"f9c" => DATA <= x"ffff"; + when "01" & x"f9d" => DATA <= x"ffff"; + when "01" & x"f9e" => DATA <= x"ffff"; + when "01" & x"f9f" => DATA <= x"ffff"; + when "01" & x"fa0" => DATA <= x"ffff"; + when "01" & x"fa1" => DATA <= x"ffff"; + when "01" & x"fa2" => DATA <= x"ffff"; + when "01" & x"fa3" => DATA <= x"ffff"; + when "01" & x"fa4" => DATA <= x"ffff"; + when "01" & x"fa5" => DATA <= x"ffff"; + when "01" & x"fa6" => DATA <= x"ffff"; + when "01" & x"fa7" => DATA <= x"ffff"; + when "01" & x"fa8" => DATA <= x"ffff"; + when "01" & x"fa9" => DATA <= x"ffff"; + when "01" & x"faa" => DATA <= x"ffff"; + when "01" & x"fab" => DATA <= x"ffff"; + when "01" & x"fac" => DATA <= x"ffff"; + when "01" & x"fad" => DATA <= x"ffff"; + when "01" & x"fae" => DATA <= x"ffff"; + when "01" & x"faf" => DATA <= x"ffff"; + when "01" & x"fb0" => DATA <= x"ffff"; + when "01" & x"fb1" => DATA <= x"ffff"; + when "01" & x"fb2" => DATA <= x"ffff"; + when "01" & x"fb3" => DATA <= x"ffff"; + when "01" & x"fb4" => DATA <= x"ffff"; + when "01" & x"fb5" => DATA <= x"ffff"; + when "01" & x"fb6" => DATA <= x"ffff"; + when "01" & x"fb7" => DATA <= x"ffff"; + when "01" & x"fb8" => DATA <= x"ffff"; + when "01" & x"fb9" => DATA <= x"ffff"; + when "01" & x"fba" => DATA <= x"ffff"; + when "01" & x"fbb" => DATA <= x"ffff"; + when "01" & x"fbc" => DATA <= x"ffff"; + when "01" & x"fbd" => DATA <= x"ffff"; + when "01" & x"fbe" => DATA <= x"ffff"; + when "01" & x"fbf" => DATA <= x"ffff"; + when "01" & x"fc0" => DATA <= x"ffff"; + when "01" & x"fc1" => DATA <= x"ffff"; + when "01" & x"fc2" => DATA <= x"ffff"; + when "01" & x"fc3" => DATA <= x"ffff"; + when "01" & x"fc4" => DATA <= x"ffff"; + when "01" & x"fc5" => DATA <= x"ffff"; + when "01" & x"fc6" => DATA <= x"ffff"; + when "01" & x"fc7" => DATA <= x"ffff"; + when "01" & x"fc8" => DATA <= x"ffff"; + when "01" & x"fc9" => DATA <= x"ffff"; + when "01" & x"fca" => DATA <= x"ffff"; + when "01" & x"fcb" => DATA <= x"ffff"; + when "01" & x"fcc" => DATA <= x"ffff"; + when "01" & x"fcd" => DATA <= x"ffff"; + when "01" & x"fce" => DATA <= x"ffff"; + when "01" & x"fcf" => DATA <= x"ffff"; + when "01" & x"fd0" => DATA <= x"ffff"; + when "01" & x"fd1" => DATA <= x"ffff"; + when "01" & x"fd2" => DATA <= x"ffff"; + when "01" & x"fd3" => DATA <= x"ffff"; + when "01" & x"fd4" => DATA <= x"ffff"; + when "01" & x"fd5" => DATA <= x"ffff"; + when "01" & x"fd6" => DATA <= x"ffff"; + when "01" & x"fd7" => DATA <= x"ffff"; + when "01" & x"fd8" => DATA <= x"ffff"; + when "01" & x"fd9" => DATA <= x"ffff"; + when "01" & x"fda" => DATA <= x"ffff"; + when "01" & x"fdb" => DATA <= x"ffff"; + when "01" & x"fdc" => DATA <= x"ffff"; + when "01" & x"fdd" => DATA <= x"ffff"; + when "01" & x"fde" => DATA <= x"ffff"; + when "01" & x"fdf" => DATA <= x"ffff"; + when "01" & x"fe0" => DATA <= x"ffff"; + when "01" & x"fe1" => DATA <= x"ffff"; + when "01" & x"fe2" => DATA <= x"ffff"; + when "01" & x"fe3" => DATA <= x"ffff"; + when "01" & x"fe4" => DATA <= x"ffff"; + when "01" & x"fe5" => DATA <= x"ffff"; + when "01" & x"fe6" => DATA <= x"ffff"; + when "01" & x"fe7" => DATA <= x"ffff"; + when "01" & x"fe8" => DATA <= x"ffff"; + when "01" & x"fe9" => DATA <= x"ffff"; + when "01" & x"fea" => DATA <= x"ffff"; + when "01" & x"feb" => DATA <= x"ffff"; + when "01" & x"fec" => DATA <= x"ffff"; + when "01" & x"fed" => DATA <= x"ffff"; + when "01" & x"fee" => DATA <= x"ffff"; + when "01" & x"fef" => DATA <= x"ffff"; + when "01" & x"ff0" => DATA <= x"ffff"; + when "01" & x"ff1" => DATA <= x"ffff"; + when "01" & x"ff2" => DATA <= x"ffff"; + when "01" & x"ff3" => DATA <= x"ffff"; + when "01" & x"ff4" => DATA <= x"ffff"; + when "01" & x"ff5" => DATA <= x"ffff"; + when "01" & x"ff6" => DATA <= x"ffff"; + when "01" & x"ff7" => DATA <= x"ffff"; + when "01" & x"ff8" => DATA <= x"ffff"; + when "01" & x"ff9" => DATA <= x"ffff"; + when "01" & x"ffa" => DATA <= x"ffff"; + when "01" & x"ffb" => DATA <= x"ffff"; + when "01" & x"ffc" => DATA <= x"ffff"; + when "01" & x"ffd" => DATA <= x"ffff"; + when "01" & x"ffe" => DATA <= x"ffff"; + when "01" & x"fff" => DATA <= x"ffff"; + when "10" & x"000" => DATA <= x"ffff"; + when "10" & x"001" => DATA <= x"ffff"; + when "10" & x"002" => DATA <= x"ffff"; + when "10" & x"003" => DATA <= x"ffff"; + when "10" & x"004" => DATA <= x"ffff"; + when "10" & x"005" => DATA <= x"ffff"; + when "10" & x"006" => DATA <= x"ffff"; + when "10" & x"007" => DATA <= x"ffff"; + when "10" & x"008" => DATA <= x"ffff"; + when "10" & x"009" => DATA <= x"ffff"; + when "10" & x"00a" => DATA <= x"ffff"; + when "10" & x"00b" => DATA <= x"ffff"; + when "10" & x"00c" => DATA <= x"ffff"; + when "10" & x"00d" => DATA <= x"ffff"; + when "10" & x"00e" => DATA <= x"ffff"; + when "10" & x"00f" => DATA <= x"ffff"; + when "10" & x"010" => DATA <= x"ffff"; + when "10" & x"011" => DATA <= x"ffff"; + when "10" & x"012" => DATA <= x"ffff"; + when "10" & x"013" => DATA <= x"ffff"; + when "10" & x"014" => DATA <= x"ffff"; + when "10" & x"015" => DATA <= x"ffff"; + when "10" & x"016" => DATA <= x"ffff"; + when "10" & x"017" => DATA <= x"ffff"; + when "10" & x"018" => DATA <= x"ffff"; + when "10" & x"019" => DATA <= x"ffff"; + when "10" & x"01a" => DATA <= x"ffff"; + when "10" & x"01b" => DATA <= x"ffff"; + when "10" & x"01c" => DATA <= x"ffff"; + when "10" & x"01d" => DATA <= x"ffff"; + when "10" & x"01e" => DATA <= x"ffff"; + when "10" & x"01f" => DATA <= x"ffff"; + when "10" & x"020" => DATA <= x"ffff"; + when "10" & x"021" => DATA <= x"ffff"; + when "10" & x"022" => DATA <= x"ffff"; + when "10" & x"023" => DATA <= x"ffff"; + when "10" & x"024" => DATA <= x"ffff"; + when "10" & x"025" => DATA <= x"ffff"; + when "10" & x"026" => DATA <= x"ffff"; + when "10" & x"027" => DATA <= x"ffff"; + when "10" & x"028" => DATA <= x"ffff"; + when "10" & x"029" => DATA <= x"ffff"; + when "10" & x"02a" => DATA <= x"ffff"; + when "10" & x"02b" => DATA <= x"ffff"; + when "10" & x"02c" => DATA <= x"ffff"; + when "10" & x"02d" => DATA <= x"ffff"; + when "10" & x"02e" => DATA <= x"ffff"; + when "10" & x"02f" => DATA <= x"ffff"; + when "10" & x"030" => DATA <= x"ffff"; + when "10" & x"031" => DATA <= x"ffff"; + when "10" & x"032" => DATA <= x"ffff"; + when "10" & x"033" => DATA <= x"ffff"; + when "10" & x"034" => DATA <= x"ffff"; + when "10" & x"035" => DATA <= x"ffff"; + when "10" & x"036" => DATA <= x"ffff"; + when "10" & x"037" => DATA <= x"ffff"; + when "10" & x"038" => DATA <= x"ffff"; + when "10" & x"039" => DATA <= x"ffff"; + when "10" & x"03a" => DATA <= x"ffff"; + when "10" & x"03b" => DATA <= x"ffff"; + when "10" & x"03c" => DATA <= x"ffff"; + when "10" & x"03d" => DATA <= x"ffff"; + when "10" & x"03e" => DATA <= x"ffff"; + when "10" & x"03f" => DATA <= x"ffff"; + when "10" & x"040" => DATA <= x"ffff"; + when "10" & x"041" => DATA <= x"ffff"; + when "10" & x"042" => DATA <= x"ffff"; + when "10" & x"043" => DATA <= x"ffff"; + when "10" & x"044" => DATA <= x"ffff"; + when "10" & x"045" => DATA <= x"ffff"; + when "10" & x"046" => DATA <= x"ffff"; + when "10" & x"047" => DATA <= x"ffff"; + when "10" & x"048" => DATA <= x"ffff"; + when "10" & x"049" => DATA <= x"ffff"; + when "10" & x"04a" => DATA <= x"ffff"; + when "10" & x"04b" => DATA <= x"ffff"; + when "10" & x"04c" => DATA <= x"ffff"; + when "10" & x"04d" => DATA <= x"ffff"; + when "10" & x"04e" => DATA <= x"ffff"; + when "10" & x"04f" => DATA <= x"ffff"; + when "10" & x"050" => DATA <= x"ffff"; + when "10" & x"051" => DATA <= x"ffff"; + when "10" & x"052" => DATA <= x"ffff"; + when "10" & x"053" => DATA <= x"ffff"; + when "10" & x"054" => DATA <= x"ffff"; + when "10" & x"055" => DATA <= x"ffff"; + when "10" & x"056" => DATA <= x"ffff"; + when "10" & x"057" => DATA <= x"ffff"; + when "10" & x"058" => DATA <= x"ffff"; + when "10" & x"059" => DATA <= x"ffff"; + when "10" & x"05a" => DATA <= x"ffff"; + when "10" & x"05b" => DATA <= x"ffff"; + when "10" & x"05c" => DATA <= x"ffff"; + when "10" & x"05d" => DATA <= x"ffff"; + when "10" & x"05e" => DATA <= x"ffff"; + when "10" & x"05f" => DATA <= x"ffff"; + when "10" & x"060" => DATA <= x"ffff"; + when "10" & x"061" => DATA <= x"ffff"; + when "10" & x"062" => DATA <= x"ffff"; + when "10" & x"063" => DATA <= x"ffff"; + when "10" & x"064" => DATA <= x"ffff"; + when "10" & x"065" => DATA <= x"ffff"; + when "10" & x"066" => DATA <= x"ffff"; + when "10" & x"067" => DATA <= x"ffff"; + when "10" & x"068" => DATA <= x"ffff"; + when "10" & x"069" => DATA <= x"ffff"; + when "10" & x"06a" => DATA <= x"ffff"; + when "10" & x"06b" => DATA <= x"ffff"; + when "10" & x"06c" => DATA <= x"ffff"; + when "10" & x"06d" => DATA <= x"ffff"; + when "10" & x"06e" => DATA <= x"ffff"; + when "10" & x"06f" => DATA <= x"ffff"; + when "10" & x"070" => DATA <= x"ffff"; + when "10" & x"071" => DATA <= x"ffff"; + when "10" & x"072" => DATA <= x"ffff"; + when "10" & x"073" => DATA <= x"ffff"; + when "10" & x"074" => DATA <= x"ffff"; + when "10" & x"075" => DATA <= x"ffff"; + when "10" & x"076" => DATA <= x"ffff"; + when "10" & x"077" => DATA <= x"ffff"; + when "10" & x"078" => DATA <= x"ffff"; + when "10" & x"079" => DATA <= x"ffff"; + when "10" & x"07a" => DATA <= x"ffff"; + when "10" & x"07b" => DATA <= x"ffff"; + when "10" & x"07c" => DATA <= x"ffff"; + when "10" & x"07d" => DATA <= x"ffff"; + when "10" & x"07e" => DATA <= x"ffff"; + when "10" & x"07f" => DATA <= x"ffff"; + when "10" & x"080" => DATA <= x"ffff"; + when "10" & x"081" => DATA <= x"ffff"; + when "10" & x"082" => DATA <= x"ffff"; + when "10" & x"083" => DATA <= x"ffff"; + when "10" & x"084" => DATA <= x"ffff"; + when "10" & x"085" => DATA <= x"ffff"; + when "10" & x"086" => DATA <= x"ffff"; + when "10" & x"087" => DATA <= x"ffff"; + when "10" & x"088" => DATA <= x"ffff"; + when "10" & x"089" => DATA <= x"ffff"; + when "10" & x"08a" => DATA <= x"ffff"; + when "10" & x"08b" => DATA <= x"ffff"; + when "10" & x"08c" => DATA <= x"ffff"; + when "10" & x"08d" => DATA <= x"ffff"; + when "10" & x"08e" => DATA <= x"ffff"; + when "10" & x"08f" => DATA <= x"ffff"; + when "10" & x"090" => DATA <= x"ffff"; + when "10" & x"091" => DATA <= x"ffff"; + when "10" & x"092" => DATA <= x"ffff"; + when "10" & x"093" => DATA <= x"ffff"; + when "10" & x"094" => DATA <= x"ffff"; + when "10" & x"095" => DATA <= x"ffff"; + when "10" & x"096" => DATA <= x"ffff"; + when "10" & x"097" => DATA <= x"ffff"; + when "10" & x"098" => DATA <= x"ffff"; + when "10" & x"099" => DATA <= x"ffff"; + when "10" & x"09a" => DATA <= x"ffff"; + when "10" & x"09b" => DATA <= x"ffff"; + when "10" & x"09c" => DATA <= x"ffff"; + when "10" & x"09d" => DATA <= x"ffff"; + when "10" & x"09e" => DATA <= x"ffff"; + when "10" & x"09f" => DATA <= x"ffff"; + when "10" & x"0a0" => DATA <= x"ffff"; + when "10" & x"0a1" => DATA <= x"ffff"; + when "10" & x"0a2" => DATA <= x"ffff"; + when "10" & x"0a3" => DATA <= x"ffff"; + when "10" & x"0a4" => DATA <= x"ffff"; + when "10" & x"0a5" => DATA <= x"ffff"; + when "10" & x"0a6" => DATA <= x"ffff"; + when "10" & x"0a7" => DATA <= x"ffff"; + when "10" & x"0a8" => DATA <= x"ffff"; + when "10" & x"0a9" => DATA <= x"ffff"; + when "10" & x"0aa" => DATA <= x"ffff"; + when "10" & x"0ab" => DATA <= x"ffff"; + when "10" & x"0ac" => DATA <= x"ffff"; + when "10" & x"0ad" => DATA <= x"ffff"; + when "10" & x"0ae" => DATA <= x"ffff"; + when "10" & x"0af" => DATA <= x"ffff"; + when "10" & x"0b0" => DATA <= x"ffff"; + when "10" & x"0b1" => DATA <= x"ffff"; + when "10" & x"0b2" => DATA <= x"ffff"; + when "10" & x"0b3" => DATA <= x"ffff"; + when "10" & x"0b4" => DATA <= x"ffff"; + when "10" & x"0b5" => DATA <= x"ffff"; + when "10" & x"0b6" => DATA <= x"ffff"; + when "10" & x"0b7" => DATA <= x"ffff"; + when "10" & x"0b8" => DATA <= x"ffff"; + when "10" & x"0b9" => DATA <= x"ffff"; + when "10" & x"0ba" => DATA <= x"ffff"; + when "10" & x"0bb" => DATA <= x"ffff"; + when "10" & x"0bc" => DATA <= x"ffff"; + when "10" & x"0bd" => DATA <= x"ffff"; + when "10" & x"0be" => DATA <= x"ffff"; + when "10" & x"0bf" => DATA <= x"ffff"; + when "10" & x"0c0" => DATA <= x"ffff"; + when "10" & x"0c1" => DATA <= x"ffff"; + when "10" & x"0c2" => DATA <= x"ffff"; + when "10" & x"0c3" => DATA <= x"ffff"; + when "10" & x"0c4" => DATA <= x"ffff"; + when "10" & x"0c5" => DATA <= x"ffff"; + when "10" & x"0c6" => DATA <= x"ffff"; + when "10" & x"0c7" => DATA <= x"ffff"; + when "10" & x"0c8" => DATA <= x"ffff"; + when "10" & x"0c9" => DATA <= x"ffff"; + when "10" & x"0ca" => DATA <= x"ffff"; + when "10" & x"0cb" => DATA <= x"ffff"; + when "10" & x"0cc" => DATA <= x"ffff"; + when "10" & x"0cd" => DATA <= x"ffff"; + when "10" & x"0ce" => DATA <= x"ffff"; + when "10" & x"0cf" => DATA <= x"ffff"; + when "10" & x"0d0" => DATA <= x"ffff"; + when "10" & x"0d1" => DATA <= x"ffff"; + when "10" & x"0d2" => DATA <= x"ffff"; + when "10" & x"0d3" => DATA <= x"ffff"; + when "10" & x"0d4" => DATA <= x"ffff"; + when "10" & x"0d5" => DATA <= x"ffff"; + when "10" & x"0d6" => DATA <= x"ffff"; + when "10" & x"0d7" => DATA <= x"ffff"; + when "10" & x"0d8" => DATA <= x"ffff"; + when "10" & x"0d9" => DATA <= x"ffff"; + when "10" & x"0da" => DATA <= x"ffff"; + when "10" & x"0db" => DATA <= x"ffff"; + when "10" & x"0dc" => DATA <= x"ffff"; + when "10" & x"0dd" => DATA <= x"ffff"; + when "10" & x"0de" => DATA <= x"ffff"; + when "10" & x"0df" => DATA <= x"ffff"; + when "10" & x"0e0" => DATA <= x"ffff"; + when "10" & x"0e1" => DATA <= x"ffff"; + when "10" & x"0e2" => DATA <= x"ffff"; + when "10" & x"0e3" => DATA <= x"ffff"; + when "10" & x"0e4" => DATA <= x"ffff"; + when "10" & x"0e5" => DATA <= x"ffff"; + when "10" & x"0e6" => DATA <= x"ffff"; + when "10" & x"0e7" => DATA <= x"ffff"; + when "10" & x"0e8" => DATA <= x"ffff"; + when "10" & x"0e9" => DATA <= x"ffff"; + when "10" & x"0ea" => DATA <= x"ffff"; + when "10" & x"0eb" => DATA <= x"ffff"; + when "10" & x"0ec" => DATA <= x"ffff"; + when "10" & x"0ed" => DATA <= x"ffff"; + when "10" & x"0ee" => DATA <= x"ffff"; + when "10" & x"0ef" => DATA <= x"ffff"; + when "10" & x"0f0" => DATA <= x"ffff"; + when "10" & x"0f1" => DATA <= x"ffff"; + when "10" & x"0f2" => DATA <= x"ffff"; + when "10" & x"0f3" => DATA <= x"ffff"; + when "10" & x"0f4" => DATA <= x"ffff"; + when "10" & x"0f5" => DATA <= x"ffff"; + when "10" & x"0f6" => DATA <= x"ffff"; + when "10" & x"0f7" => DATA <= x"ffff"; + when "10" & x"0f8" => DATA <= x"ffff"; + when "10" & x"0f9" => DATA <= x"ffff"; + when "10" & x"0fa" => DATA <= x"ffff"; + when "10" & x"0fb" => DATA <= x"ffff"; + when "10" & x"0fc" => DATA <= x"ffff"; + when "10" & x"0fd" => DATA <= x"ffff"; + when "10" & x"0fe" => DATA <= x"ffff"; + when "10" & x"0ff" => DATA <= x"ffff"; + when "10" & x"100" => DATA <= x"ffff"; + when "10" & x"101" => DATA <= x"ffff"; + when "10" & x"102" => DATA <= x"ffff"; + when "10" & x"103" => DATA <= x"ffff"; + when "10" & x"104" => DATA <= x"ffff"; + when "10" & x"105" => DATA <= x"ffff"; + when "10" & x"106" => DATA <= x"ffff"; + when "10" & x"107" => DATA <= x"ffff"; + when "10" & x"108" => DATA <= x"ffff"; + when "10" & x"109" => DATA <= x"ffff"; + when "10" & x"10a" => DATA <= x"ffff"; + when "10" & x"10b" => DATA <= x"ffff"; + when "10" & x"10c" => DATA <= x"ffff"; + when "10" & x"10d" => DATA <= x"ffff"; + when "10" & x"10e" => DATA <= x"ffff"; + when "10" & x"10f" => DATA <= x"ffff"; + when "10" & x"110" => DATA <= x"ffff"; + when "10" & x"111" => DATA <= x"ffff"; + when "10" & x"112" => DATA <= x"ffff"; + when "10" & x"113" => DATA <= x"ffff"; + when "10" & x"114" => DATA <= x"ffff"; + when "10" & x"115" => DATA <= x"ffff"; + when "10" & x"116" => DATA <= x"ffff"; + when "10" & x"117" => DATA <= x"ffff"; + when "10" & x"118" => DATA <= x"ffff"; + when "10" & x"119" => DATA <= x"ffff"; + when "10" & x"11a" => DATA <= x"ffff"; + when "10" & x"11b" => DATA <= x"ffff"; + when "10" & x"11c" => DATA <= x"ffff"; + when "10" & x"11d" => DATA <= x"ffff"; + when "10" & x"11e" => DATA <= x"ffff"; + when "10" & x"11f" => DATA <= x"ffff"; + when "10" & x"120" => DATA <= x"ffff"; + when "10" & x"121" => DATA <= x"ffff"; + when "10" & x"122" => DATA <= x"ffff"; + when "10" & x"123" => DATA <= x"ffff"; + when "10" & x"124" => DATA <= x"ffff"; + when "10" & x"125" => DATA <= x"ffff"; + when "10" & x"126" => DATA <= x"ffff"; + when "10" & x"127" => DATA <= x"ffff"; + when "10" & x"128" => DATA <= x"ffff"; + when "10" & x"129" => DATA <= x"ffff"; + when "10" & x"12a" => DATA <= x"ffff"; + when "10" & x"12b" => DATA <= x"ffff"; + when "10" & x"12c" => DATA <= x"ffff"; + when "10" & x"12d" => DATA <= x"ffff"; + when "10" & x"12e" => DATA <= x"ffff"; + when "10" & x"12f" => DATA <= x"ffff"; + when "10" & x"130" => DATA <= x"ffff"; + when "10" & x"131" => DATA <= x"ffff"; + when "10" & x"132" => DATA <= x"ffff"; + when "10" & x"133" => DATA <= x"ffff"; + when "10" & x"134" => DATA <= x"ffff"; + when "10" & x"135" => DATA <= x"ffff"; + when "10" & x"136" => DATA <= x"ffff"; + when "10" & x"137" => DATA <= x"ffff"; + when "10" & x"138" => DATA <= x"ffff"; + when "10" & x"139" => DATA <= x"ffff"; + when "10" & x"13a" => DATA <= x"ffff"; + when "10" & x"13b" => DATA <= x"ffff"; + when "10" & x"13c" => DATA <= x"ffff"; + when "10" & x"13d" => DATA <= x"ffff"; + when "10" & x"13e" => DATA <= x"ffff"; + when "10" & x"13f" => DATA <= x"ffff"; + when "10" & x"140" => DATA <= x"ffff"; + when "10" & x"141" => DATA <= x"ffff"; + when "10" & x"142" => DATA <= x"ffff"; + when "10" & x"143" => DATA <= x"ffff"; + when "10" & x"144" => DATA <= x"ffff"; + when "10" & x"145" => DATA <= x"ffff"; + when "10" & x"146" => DATA <= x"ffff"; + when "10" & x"147" => DATA <= x"ffff"; + when "10" & x"148" => DATA <= x"ffff"; + when "10" & x"149" => DATA <= x"ffff"; + when "10" & x"14a" => DATA <= x"ffff"; + when "10" & x"14b" => DATA <= x"ffff"; + when "10" & x"14c" => DATA <= x"ffff"; + when "10" & x"14d" => DATA <= x"ffff"; + when "10" & x"14e" => DATA <= x"ffff"; + when "10" & x"14f" => DATA <= x"ffff"; + when "10" & x"150" => DATA <= x"ffff"; + when "10" & x"151" => DATA <= x"ffff"; + when "10" & x"152" => DATA <= x"ffff"; + when "10" & x"153" => DATA <= x"ffff"; + when "10" & x"154" => DATA <= x"ffff"; + when "10" & x"155" => DATA <= x"ffff"; + when "10" & x"156" => DATA <= x"ffff"; + when "10" & x"157" => DATA <= x"ffff"; + when "10" & x"158" => DATA <= x"ffff"; + when "10" & x"159" => DATA <= x"ffff"; + when "10" & x"15a" => DATA <= x"ffff"; + when "10" & x"15b" => DATA <= x"ffff"; + when "10" & x"15c" => DATA <= x"ffff"; + when "10" & x"15d" => DATA <= x"ffff"; + when "10" & x"15e" => DATA <= x"ffff"; + when "10" & x"15f" => DATA <= x"ffff"; + when "10" & x"160" => DATA <= x"ffff"; + when "10" & x"161" => DATA <= x"ffff"; + when "10" & x"162" => DATA <= x"ffff"; + when "10" & x"163" => DATA <= x"ffff"; + when "10" & x"164" => DATA <= x"ffff"; + when "10" & x"165" => DATA <= x"ffff"; + when "10" & x"166" => DATA <= x"ffff"; + when "10" & x"167" => DATA <= x"ffff"; + when "10" & x"168" => DATA <= x"ffff"; + when "10" & x"169" => DATA <= x"ffff"; + when "10" & x"16a" => DATA <= x"ffff"; + when "10" & x"16b" => DATA <= x"ffff"; + when "10" & x"16c" => DATA <= x"ffff"; + when "10" & x"16d" => DATA <= x"ffff"; + when "10" & x"16e" => DATA <= x"ffff"; + when "10" & x"16f" => DATA <= x"ffff"; + when "10" & x"170" => DATA <= x"ffff"; + when "10" & x"171" => DATA <= x"ffff"; + when "10" & x"172" => DATA <= x"ffff"; + when "10" & x"173" => DATA <= x"ffff"; + when "10" & x"174" => DATA <= x"ffff"; + when "10" & x"175" => DATA <= x"ffff"; + when "10" & x"176" => DATA <= x"ffff"; + when "10" & x"177" => DATA <= x"ffff"; + when "10" & x"178" => DATA <= x"ffff"; + when "10" & x"179" => DATA <= x"ffff"; + when "10" & x"17a" => DATA <= x"ffff"; + when "10" & x"17b" => DATA <= x"ffff"; + when "10" & x"17c" => DATA <= x"ffff"; + when "10" & x"17d" => DATA <= x"ffff"; + when "10" & x"17e" => DATA <= x"ffff"; + when "10" & x"17f" => DATA <= x"ffff"; + when "10" & x"180" => DATA <= x"ffff"; + when "10" & x"181" => DATA <= x"ffff"; + when "10" & x"182" => DATA <= x"ffff"; + when "10" & x"183" => DATA <= x"ffff"; + when "10" & x"184" => DATA <= x"ffff"; + when "10" & x"185" => DATA <= x"ffff"; + when "10" & x"186" => DATA <= x"ffff"; + when "10" & x"187" => DATA <= x"ffff"; + when "10" & x"188" => DATA <= x"ffff"; + when "10" & x"189" => DATA <= x"ffff"; + when "10" & x"18a" => DATA <= x"ffff"; + when "10" & x"18b" => DATA <= x"ffff"; + when "10" & x"18c" => DATA <= x"ffff"; + when "10" & x"18d" => DATA <= x"ffff"; + when "10" & x"18e" => DATA <= x"ffff"; + when "10" & x"18f" => DATA <= x"ffff"; + when "10" & x"190" => DATA <= x"ffff"; + when "10" & x"191" => DATA <= x"ffff"; + when "10" & x"192" => DATA <= x"ffff"; + when "10" & x"193" => DATA <= x"ffff"; + when "10" & x"194" => DATA <= x"ffff"; + when "10" & x"195" => DATA <= x"ffff"; + when "10" & x"196" => DATA <= x"ffff"; + when "10" & x"197" => DATA <= x"ffff"; + when "10" & x"198" => DATA <= x"ffff"; + when "10" & x"199" => DATA <= x"ffff"; + when "10" & x"19a" => DATA <= x"ffff"; + when "10" & x"19b" => DATA <= x"ffff"; + when "10" & x"19c" => DATA <= x"ffff"; + when "10" & x"19d" => DATA <= x"ffff"; + when "10" & x"19e" => DATA <= x"ffff"; + when "10" & x"19f" => DATA <= x"ffff"; + when "10" & x"1a0" => DATA <= x"ffff"; + when "10" & x"1a1" => DATA <= x"ffff"; + when "10" & x"1a2" => DATA <= x"ffff"; + when "10" & x"1a3" => DATA <= x"ffff"; + when "10" & x"1a4" => DATA <= x"ffff"; + when "10" & x"1a5" => DATA <= x"ffff"; + when "10" & x"1a6" => DATA <= x"ffff"; + when "10" & x"1a7" => DATA <= x"ffff"; + when "10" & x"1a8" => DATA <= x"ffff"; + when "10" & x"1a9" => DATA <= x"ffff"; + when "10" & x"1aa" => DATA <= x"ffff"; + when "10" & x"1ab" => DATA <= x"ffff"; + when "10" & x"1ac" => DATA <= x"ffff"; + when "10" & x"1ad" => DATA <= x"ffff"; + when "10" & x"1ae" => DATA <= x"ffff"; + when "10" & x"1af" => DATA <= x"ffff"; + when "10" & x"1b0" => DATA <= x"ffff"; + when "10" & x"1b1" => DATA <= x"ffff"; + when "10" & x"1b2" => DATA <= x"ffff"; + when "10" & x"1b3" => DATA <= x"ffff"; + when "10" & x"1b4" => DATA <= x"ffff"; + when "10" & x"1b5" => DATA <= x"ffff"; + when "10" & x"1b6" => DATA <= x"ffff"; + when "10" & x"1b7" => DATA <= x"ffff"; + when "10" & x"1b8" => DATA <= x"ffff"; + when "10" & x"1b9" => DATA <= x"ffff"; + when "10" & x"1ba" => DATA <= x"ffff"; + when "10" & x"1bb" => DATA <= x"ffff"; + when "10" & x"1bc" => DATA <= x"ffff"; + when "10" & x"1bd" => DATA <= x"ffff"; + when "10" & x"1be" => DATA <= x"ffff"; + when "10" & x"1bf" => DATA <= x"ffff"; + when "10" & x"1c0" => DATA <= x"ffff"; + when "10" & x"1c1" => DATA <= x"ffff"; + when "10" & x"1c2" => DATA <= x"ffff"; + when "10" & x"1c3" => DATA <= x"ffff"; + when "10" & x"1c4" => DATA <= x"ffff"; + when "10" & x"1c5" => DATA <= x"ffff"; + when "10" & x"1c6" => DATA <= x"ffff"; + when "10" & x"1c7" => DATA <= x"ffff"; + when "10" & x"1c8" => DATA <= x"ffff"; + when "10" & x"1c9" => DATA <= x"ffff"; + when "10" & x"1ca" => DATA <= x"ffff"; + when "10" & x"1cb" => DATA <= x"ffff"; + when "10" & x"1cc" => DATA <= x"ffff"; + when "10" & x"1cd" => DATA <= x"ffff"; + when "10" & x"1ce" => DATA <= x"ffff"; + when "10" & x"1cf" => DATA <= x"ffff"; + when "10" & x"1d0" => DATA <= x"ffff"; + when "10" & x"1d1" => DATA <= x"ffff"; + when "10" & x"1d2" => DATA <= x"ffff"; + when "10" & x"1d3" => DATA <= x"ffff"; + when "10" & x"1d4" => DATA <= x"ffff"; + when "10" & x"1d5" => DATA <= x"ffff"; + when "10" & x"1d6" => DATA <= x"ffff"; + when "10" & x"1d7" => DATA <= x"ffff"; + when "10" & x"1d8" => DATA <= x"ffff"; + when "10" & x"1d9" => DATA <= x"ffff"; + when "10" & x"1da" => DATA <= x"ffff"; + when "10" & x"1db" => DATA <= x"ffff"; + when "10" & x"1dc" => DATA <= x"ffff"; + when "10" & x"1dd" => DATA <= x"ffff"; + when "10" & x"1de" => DATA <= x"ffff"; + when "10" & x"1df" => DATA <= x"ffff"; + when "10" & x"1e0" => DATA <= x"ffff"; + when "10" & x"1e1" => DATA <= x"ffff"; + when "10" & x"1e2" => DATA <= x"ffff"; + when "10" & x"1e3" => DATA <= x"ffff"; + when "10" & x"1e4" => DATA <= x"ffff"; + when "10" & x"1e5" => DATA <= x"ffff"; + when "10" & x"1e6" => DATA <= x"ffff"; + when "10" & x"1e7" => DATA <= x"ffff"; + when "10" & x"1e8" => DATA <= x"ffff"; + when "10" & x"1e9" => DATA <= x"ffff"; + when "10" & x"1ea" => DATA <= x"ffff"; + when "10" & x"1eb" => DATA <= x"ffff"; + when "10" & x"1ec" => DATA <= x"ffff"; + when "10" & x"1ed" => DATA <= x"ffff"; + when "10" & x"1ee" => DATA <= x"ffff"; + when "10" & x"1ef" => DATA <= x"ffff"; + when "10" & x"1f0" => DATA <= x"ffff"; + when "10" & x"1f1" => DATA <= x"ffff"; + when "10" & x"1f2" => DATA <= x"ffff"; + when "10" & x"1f3" => DATA <= x"ffff"; + when "10" & x"1f4" => DATA <= x"ffff"; + when "10" & x"1f5" => DATA <= x"ffff"; + when "10" & x"1f6" => DATA <= x"ffff"; + when "10" & x"1f7" => DATA <= x"ffff"; + when "10" & x"1f8" => DATA <= x"ffff"; + when "10" & x"1f9" => DATA <= x"ffff"; + when "10" & x"1fa" => DATA <= x"ffff"; + when "10" & x"1fb" => DATA <= x"ffff"; + when "10" & x"1fc" => DATA <= x"ffff"; + when "10" & x"1fd" => DATA <= x"ffff"; + when "10" & x"1fe" => DATA <= x"ffff"; + when "10" & x"1ff" => DATA <= x"ffff"; + when "10" & x"200" => DATA <= x"ffff"; + when "10" & x"201" => DATA <= x"ffff"; + when "10" & x"202" => DATA <= x"ffff"; + when "10" & x"203" => DATA <= x"ffff"; + when "10" & x"204" => DATA <= x"ffff"; + when "10" & x"205" => DATA <= x"ffff"; + when "10" & x"206" => DATA <= x"ffff"; + when "10" & x"207" => DATA <= x"ffff"; + when "10" & x"208" => DATA <= x"ffff"; + when "10" & x"209" => DATA <= x"ffff"; + when "10" & x"20a" => DATA <= x"ffff"; + when "10" & x"20b" => DATA <= x"ffff"; + when "10" & x"20c" => DATA <= x"ffff"; + when "10" & x"20d" => DATA <= x"ffff"; + when "10" & x"20e" => DATA <= x"ffff"; + when "10" & x"20f" => DATA <= x"ffff"; + when "10" & x"210" => DATA <= x"ffff"; + when "10" & x"211" => DATA <= x"ffff"; + when "10" & x"212" => DATA <= x"ffff"; + when "10" & x"213" => DATA <= x"ffff"; + when "10" & x"214" => DATA <= x"ffff"; + when "10" & x"215" => DATA <= x"ffff"; + when "10" & x"216" => DATA <= x"ffff"; + when "10" & x"217" => DATA <= x"ffff"; + when "10" & x"218" => DATA <= x"ffff"; + when "10" & x"219" => DATA <= x"ffff"; + when "10" & x"21a" => DATA <= x"ffff"; + when "10" & x"21b" => DATA <= x"ffff"; + when "10" & x"21c" => DATA <= x"ffff"; + when "10" & x"21d" => DATA <= x"ffff"; + when "10" & x"21e" => DATA <= x"ffff"; + when "10" & x"21f" => DATA <= x"ffff"; + when "10" & x"220" => DATA <= x"ffff"; + when "10" & x"221" => DATA <= x"ffff"; + when "10" & x"222" => DATA <= x"ffff"; + when "10" & x"223" => DATA <= x"ffff"; + when "10" & x"224" => DATA <= x"ffff"; + when "10" & x"225" => DATA <= x"ffff"; + when "10" & x"226" => DATA <= x"ffff"; + when "10" & x"227" => DATA <= x"ffff"; + when "10" & x"228" => DATA <= x"ffff"; + when "10" & x"229" => DATA <= x"ffff"; + when "10" & x"22a" => DATA <= x"ffff"; + when "10" & x"22b" => DATA <= x"ffff"; + when "10" & x"22c" => DATA <= x"ffff"; + when "10" & x"22d" => DATA <= x"ffff"; + when "10" & x"22e" => DATA <= x"ffff"; + when "10" & x"22f" => DATA <= x"ffff"; + when "10" & x"230" => DATA <= x"ffff"; + when "10" & x"231" => DATA <= x"ffff"; + when "10" & x"232" => DATA <= x"ffff"; + when "10" & x"233" => DATA <= x"ffff"; + when "10" & x"234" => DATA <= x"ffff"; + when "10" & x"235" => DATA <= x"ffff"; + when "10" & x"236" => DATA <= x"ffff"; + when "10" & x"237" => DATA <= x"ffff"; + when "10" & x"238" => DATA <= x"ffff"; + when "10" & x"239" => DATA <= x"ffff"; + when "10" & x"23a" => DATA <= x"ffff"; + when "10" & x"23b" => DATA <= x"ffff"; + when "10" & x"23c" => DATA <= x"ffff"; + when "10" & x"23d" => DATA <= x"ffff"; + when "10" & x"23e" => DATA <= x"ffff"; + when "10" & x"23f" => DATA <= x"ffff"; + when "10" & x"240" => DATA <= x"ffff"; + when "10" & x"241" => DATA <= x"ffff"; + when "10" & x"242" => DATA <= x"ffff"; + when "10" & x"243" => DATA <= x"ffff"; + when "10" & x"244" => DATA <= x"ffff"; + when "10" & x"245" => DATA <= x"ffff"; + when "10" & x"246" => DATA <= x"ffff"; + when "10" & x"247" => DATA <= x"ffff"; + when "10" & x"248" => DATA <= x"ffff"; + when "10" & x"249" => DATA <= x"ffff"; + when "10" & x"24a" => DATA <= x"ffff"; + when "10" & x"24b" => DATA <= x"ffff"; + when "10" & x"24c" => DATA <= x"ffff"; + when "10" & x"24d" => DATA <= x"ffff"; + when "10" & x"24e" => DATA <= x"ffff"; + when "10" & x"24f" => DATA <= x"ffff"; + when "10" & x"250" => DATA <= x"ffff"; + when "10" & x"251" => DATA <= x"1000"; + when "10" & x"252" => DATA <= x"e0e0"; + when "10" & x"253" => DATA <= x"e0e0"; + when "10" & x"254" => DATA <= x"e0e0"; + when "10" & x"255" => DATA <= x"e0e0"; + when "10" & x"256" => DATA <= x"80c0"; + when "10" & x"257" => DATA <= x"0004"; + when "10" & x"258" => DATA <= x"2400"; + when "10" & x"259" => DATA <= x"081e"; + when "10" & x"25a" => DATA <= x"a00a"; + when "10" & x"25b" => DATA <= x"ff74"; + when "10" & x"25c" => DATA <= x"5000"; + when "10" & x"25d" => DATA <= x"3e80"; + when "10" & x"25e" => DATA <= x"1fe0"; + when "10" & x"25f" => DATA <= x"6aff"; + when "10" & x"260" => DATA <= x"7c20"; + when "10" & x"261" => DATA <= x"2801"; + when "10" & x"262" => DATA <= x"fe00"; + when "10" & x"263" => DATA <= x"6f8b"; + when "10" & x"264" => DATA <= x"ebfe"; + when "10" & x"265" => DATA <= x"801f"; + when "10" & x"266" => DATA <= x"ec00"; + when "10" & x"267" => DATA <= x"f980"; + when "10" & x"268" => DATA <= x"1e3f"; + when "10" & x"269" => DATA <= x"a007"; + when "10" & x"26a" => DATA <= x"fb6d"; + when "10" & x"26b" => DATA <= x"fce0"; + when "10" & x"26c" => DATA <= x"9007"; + when "10" & x"26d" => DATA <= x"f802"; + when "10" & x"26e" => DATA <= x"bfeb"; + when "10" & x"26f" => DATA <= x"e280"; + when "10" & x"270" => DATA <= x"1fe0"; + when "10" & x"271" => DATA <= x"07f8"; + when "10" & x"272" => DATA <= x"1cbe"; + when "10" & x"273" => DATA <= x"ffa0"; + when "10" & x"274" => DATA <= x"07fb"; + when "10" & x"275" => DATA <= x"81fe"; + when "10" & x"276" => DATA <= x"ac00"; + when "10" & x"277" => DATA <= x"27e8"; + when "10" & x"278" => DATA <= x"03bf"; + when "10" & x"279" => DATA <= x"de35"; + when "10" & x"27a" => DATA <= x"8140"; + when "10" & x"27b" => DATA <= x"17ff"; + when "10" & x"27c" => DATA <= x"400f"; + when "10" & x"27d" => DATA <= x"f014"; + when "10" & x"27e" => DATA <= x"ffd0"; + when "10" & x"27f" => DATA <= x"03fd"; + when "10" & x"280" => DATA <= x"e0ff"; + when "10" & x"281" => DATA <= x"7800"; + when "10" & x"282" => DATA <= x"c1f4"; + when "10" & x"283" => DATA <= x"00ff"; + when "10" & x"284" => DATA <= x"00bf"; + when "10" & x"285" => DATA <= x"d408"; + when "10" & x"286" => DATA <= x"071d"; + when "10" & x"287" => DATA <= x"005f"; + when "10" & x"288" => DATA <= x"fd00"; + when "10" & x"289" => DATA <= x"3fd7"; + when "10" & x"28a" => DATA <= x"f3ff"; + when "10" & x"28b" => DATA <= x"400f"; + when "10" & x"28c" => DATA <= x"f7d4"; + when "10" & x"28d" => DATA <= x"ffd0"; + when "10" & x"28e" => DATA <= x"03fc"; + when "10" & x"28f" => DATA <= x"00ff"; + when "10" & x"290" => DATA <= x"080c"; + when "10" & x"291" => DATA <= x"c474"; + when "10" & x"292" => DATA <= x"00ff"; + when "10" & x"293" => DATA <= x"403f"; + when "10" & x"294" => DATA <= x"df8f"; + when "10" & x"295" => DATA <= x"f7f5"; + when "10" & x"296" => DATA <= x"003f"; + when "10" & x"297" => DATA <= x"dfd3"; + when "10" & x"298" => DATA <= x"ff40"; + when "10" & x"299" => DATA <= x"0ff7"; + when "10" & x"29a" => DATA <= x"ecff"; + when "10" & x"29b" => DATA <= x"d003"; + when "10" & x"29c" => DATA <= x"fc00"; + when "10" & x"29d" => DATA <= x"ff20"; + when "10" & x"29e" => DATA <= x"bbd9"; + when "10" & x"29f" => DATA <= x"f400"; + when "10" & x"2a0" => DATA <= x"ff00"; + when "10" & x"2a1" => DATA <= x"3fde"; + when "10" & x"2a2" => DATA <= x"0fe7"; + when "10" & x"2a3" => DATA <= x"e500"; + when "10" & x"2a4" => DATA <= x"5ffd"; + when "10" & x"2a5" => DATA <= x"003f"; + when "10" & x"2a6" => DATA <= x"cff3"; + when "10" & x"2a7" => DATA <= x"ff40"; + when "10" & x"2a8" => DATA <= x"0ff0"; + when "10" & x"2a9" => DATA <= x"03fc"; + when "10" & x"2aa" => DATA <= x"82e7"; + when "10" & x"2ab" => DATA <= x"23d0"; + when "10" & x"2ac" => DATA <= x"03fc"; + when "10" & x"2ad" => DATA <= x"00ff"; + when "10" & x"2ae" => DATA <= x"7057"; + when "10" & x"2af" => DATA <= x"e500"; + when "10" & x"2b0" => DATA <= x"3fdf"; + when "10" & x"2b1" => DATA <= x"13ff"; + when "10" & x"2b2" => DATA <= x"4017"; + when "10" & x"2b3" => DATA <= x"ff40"; + when "10" & x"2b4" => DATA <= x"0ff0"; + when "10" & x"2b5" => DATA <= x"3bfc"; + when "10" & x"2b6" => DATA <= x"7eff"; + when "10" & x"2b7" => DATA <= x"3fd0"; + when "10" & x"2b8" => DATA <= x"03fc"; + when "10" & x"2b9" => DATA <= x"00ff"; + when "10" & x"2ba" => DATA <= x"0033"; + when "10" & x"2bb" => DATA <= x"9814"; + when "10" & x"2bc" => DATA <= x"00ff"; + when "10" & x"2bd" => DATA <= x"003f"; + when "10" & x"2be" => DATA <= x"df95"; + when "10" & x"2bf" => DATA <= x"ff40"; + when "10" & x"2c0" => DATA <= x"0ff7"; + when "10" & x"2c1" => DATA <= x"f4ff"; + when "10" & x"2c2" => DATA <= x"d005"; + when "10" & x"2c3" => DATA <= x"ffd0"; + when "10" & x"2c4" => DATA <= x"05ff"; + when "10" & x"2c5" => DATA <= x"d005"; + when "10" & x"2c6" => DATA <= x"ffd0"; + when "10" & x"2c7" => DATA <= x"05ff"; + when "10" & x"2c8" => DATA <= x"d005"; + when "10" & x"2c9" => DATA <= x"ffd0"; + when "10" & x"2ca" => DATA <= x"077f"; + when "10" & x"2cb" => DATA <= x"d3f8"; + when "10" & x"2cc" => DATA <= x"fe80"; + when "10" & x"2cd" => DATA <= x"27fd"; + when "10" & x"2ce" => DATA <= x"9ce0"; + when "10" & x"2cf" => DATA <= x"a00b"; + when "10" & x"2d0" => DATA <= x"ffa0"; + when "10" & x"2d1" => DATA <= x"0eff"; + when "10" & x"2d2" => DATA <= x"3fa7"; + when "10" & x"2d3" => DATA <= x"c1f4"; + when "10" & x"2d4" => DATA <= x"013f"; + when "10" & x"2d5" => DATA <= x"efb7"; + when "10" & x"2d6" => DATA <= x"cd00"; + when "10" & x"2d7" => DATA <= x"6ff9"; + when "10" & x"2d8" => DATA <= x"7e80"; + when "10" & x"2d9" => DATA <= x"37fd"; + when "10" & x"2da" => DATA <= x"ed40"; + when "10" & x"2db" => DATA <= x"1bfe"; + when "10" & x"2dc" => DATA <= x"17a0"; + when "10" & x"2dd" => DATA <= x"0dff"; + when "10" & x"2de" => DATA <= x"7ed0"; + when "10" & x"2df" => DATA <= x"06ff"; + when "10" & x"2e0" => DATA <= x"9fe8"; + when "10" & x"2e1" => DATA <= x"037f"; + when "10" & x"2e2" => DATA <= x"f803"; + when "10" & x"2e3" => DATA <= x"bfdf"; + when "10" & x"2e4" => DATA <= x"ad84"; + when "10" & x"2e5" => DATA <= x"0500"; + when "10" & x"2e6" => DATA <= x"4ffb"; + when "10" & x"2e7" => DATA <= x"01bb"; + when "10" & x"2e8" => DATA <= x"400f"; + when "10" & x"2e9" => DATA <= x"f3fc"; + when "10" & x"2ea" => DATA <= x"ffd0"; + when "10" & x"2eb" => DATA <= x"03fc"; + when "10" & x"2ec" => DATA <= x"ffdf"; + when "10" & x"2ed" => DATA <= x"e2fa"; + when "10" & x"2ee" => DATA <= x"007f"; + when "10" & x"2ef" => DATA <= x"801f"; + when "10" & x"2f0" => DATA <= x"e417"; + when "10" & x"2f1" => DATA <= x"3f00"; + when "10" & x"2f2" => DATA <= x"3fc0"; + when "10" & x"2f3" => DATA <= x"0ff6"; + when "10" & x"2f4" => DATA <= x"03f9"; + when "10" & x"2f5" => DATA <= x"f140"; + when "10" & x"2f6" => DATA <= x"17ff"; + when "10" & x"2f7" => DATA <= x"400f"; + when "10" & x"2f8" => DATA <= x"f6fc"; + when "10" & x"2f9" => DATA <= x"ffd0"; + when "10" & x"2fa" => DATA <= x"03fc"; + when "10" & x"2fb" => DATA <= x"3fdf"; + when "10" & x"2fc" => DATA <= x"e7fa"; + when "10" & x"2fd" => DATA <= x"007f"; + when "10" & x"2fe" => DATA <= x"a01f"; + when "10" & x"2ff" => DATA <= x"e876"; + when "10" & x"300" => DATA <= x"ff00"; + when "10" & x"301" => DATA <= x"3fc0"; + when "10" & x"302" => DATA <= x"eff7"; + when "10" & x"303" => DATA <= x"5bfd"; + when "10" & x"304" => DATA <= x"c140"; + when "10" & x"305" => DATA <= x"0ff7"; + when "10" & x"306" => DATA <= x"44ff"; + when "10" & x"307" => DATA <= x"d003"; + when "10" & x"308" => DATA <= x"fc00"; + when "10" & x"309" => DATA <= x"ff1f"; + when "10" & x"30a" => DATA <= x"bfc7"; + when "10" & x"30b" => DATA <= x"f400"; + when "10" & x"30c" => DATA <= x"ff40"; + when "10" & x"30d" => DATA <= x"3fc9"; + when "10" & x"30e" => DATA <= x"0ec7"; + when "10" & x"30f" => DATA <= x"2500"; + when "10" & x"310" => DATA <= x"3fc0"; + when "10" & x"311" => DATA <= x"f3ff"; + when "10" & x"312" => DATA <= x"400f"; + when "10" & x"313" => DATA <= x"f5ac"; + when "10" & x"314" => DATA <= x"ffd0"; + when "10" & x"315" => DATA <= x"03fc"; + when "10" & x"316" => DATA <= x"02ff"; + when "10" & x"317" => DATA <= x"03b7"; + when "10" & x"318" => DATA <= x"cc74"; + when "10" & x"319" => DATA <= x"00ff"; + when "10" & x"31a" => DATA <= x"603f"; + when "10" & x"31b" => DATA <= x"d82f"; + when "10" & x"31c" => DATA <= x"f6e5"; + when "10" & x"31d" => DATA <= x"003f"; + when "10" & x"31e" => DATA <= x"c06f"; + when "10" & x"31f" => DATA <= x"f7dd"; + when "10" & x"320" => DATA <= x"7fd0"; + when "10" & x"321" => DATA <= x"03fd"; + when "10" & x"322" => DATA <= x"f93f"; + when "10" & x"323" => DATA <= x"f400"; + when "10" & x"324" => DATA <= x"ff1f"; + when "10" & x"325" => DATA <= x"bfe8"; + when "10" & x"326" => DATA <= x"3c0f"; + when "10" & x"327" => DATA <= x"400f"; + when "10" & x"328" => DATA <= x"f503"; + when "10" & x"329" => DATA <= x"fd10"; + when "10" & x"32a" => DATA <= x"d778"; + when "10" & x"32b" => DATA <= x"5003"; + when "10" & x"32c" => DATA <= x"fc06"; + when "10" & x"32d" => DATA <= x"ff7d"; + when "10" & x"32e" => DATA <= x"d7fd"; + when "10" & x"32f" => DATA <= x"003f"; + when "10" & x"330" => DATA <= x"dc13"; + when "10" & x"331" => DATA <= x"ff40"; + when "10" & x"332" => DATA <= x"0ff1"; + when "10" & x"333" => DATA <= x"fbfc"; + when "10" & x"334" => DATA <= x"1e07"; + when "10" & x"335" => DATA <= x"e007"; + when "10" & x"336" => DATA <= x"f8c1"; + when "10" & x"337" => DATA <= x"8610"; + when "10" & x"338" => DATA <= x"00bc"; + when "10" & x"339" => DATA <= x"2801"; + when "10" & x"33a" => DATA <= x"fe00"; + when "10" & x"33b" => DATA <= x"78bc"; + when "10" & x"33c" => DATA <= x"2bfe"; + when "10" & x"33d" => DATA <= x"801f"; + when "10" & x"33e" => DATA <= x"af0e"; + when "10" & x"33f" => DATA <= x"ff3f"; + when "10" & x"340" => DATA <= x"d007"; + when "10" & x"341" => DATA <= x"7f97"; + when "10" & x"342" => DATA <= x"c07c"; + when "10" & x"343" => DATA <= x"00ff"; + when "10" & x"344" => DATA <= x"1fa0"; + when "10" & x"345" => DATA <= x"c20c"; + when "10" & x"346" => DATA <= x"07a5"; + when "10" & x"347" => DATA <= x"0000"; + when "10" & x"348" => DATA <= x"4000"; + when "10" & x"349" => DATA <= x"1205"; + when "10" & x"34a" => DATA <= x"3887"; + when "10" & x"34b" => DATA <= x"8381"; + when "10" & x"34c" => DATA <= x"e0e0"; + when "10" & x"34d" => DATA <= x"7839"; + when "10" & x"34e" => DATA <= x"43db"; + when "10" & x"34f" => DATA <= x"df5f"; + when "10" & x"350" => DATA <= x"eef0"; + when "10" & x"351" => DATA <= x"051f"; + when "10" & x"352" => DATA <= x"0fc7"; + when "10" & x"353" => DATA <= x"d47e"; + when "10" & x"354" => DATA <= x"3e78"; + when "10" & x"355" => DATA <= x"3000"; + when "10" & x"356" => DATA <= x"0181"; + when "10" & x"357" => DATA <= x"c57c"; + when "10" & x"358" => DATA <= x"5000"; + when "10" & x"359" => DATA <= x"0dfc"; + when "10" & x"35a" => DATA <= x"f060"; + when "10" & x"35b" => DATA <= x"20df"; + when "10" & x"35c" => DATA <= x"f401"; + when "10" & x"35d" => DATA <= x"c61d"; + when "10" & x"35e" => DATA <= x"6090"; + when "10" & x"35f" => DATA <= x"6020"; + when "10" & x"360" => DATA <= x"0003"; + when "10" & x"361" => DATA <= x"0385"; + when "10" & x"362" => DATA <= x"7800"; + when "10" & x"363" => DATA <= x"0020"; + when "10" & x"364" => DATA <= x"77e3"; + when "10" & x"365" => DATA <= x"8100"; + when "10" & x"366" => DATA <= x"8107"; + when "10" & x"367" => DATA <= x"8008"; + when "10" & x"368" => DATA <= x"0607"; + when "10" & x"369" => DATA <= x"0cb0"; + when "10" & x"36a" => DATA <= x"8838"; + when "10" & x"36b" => DATA <= x"00c1"; + when "10" & x"36c" => DATA <= x"dc00"; + when "10" & x"36d" => DATA <= x"0010"; + when "10" & x"36e" => DATA <= x"39f0"; + when "10" & x"36f" => DATA <= x"c040"; + when "10" & x"370" => DATA <= x"00c1"; + when "10" & x"371" => DATA <= x"e00a"; + when "10" & x"372" => DATA <= x"c09c"; + when "10" & x"373" => DATA <= x"341f"; + when "10" & x"374" => DATA <= x"0030"; + when "10" & x"375" => DATA <= x"502c"; + when "10" & x"376" => DATA <= x"0403"; + when "10" & x"377" => DATA <= x"0380"; + when "10" & x"378" => DATA <= x"1820"; + when "10" & x"379" => DATA <= x"3038"; + when "10" & x"37a" => DATA <= x"3c7f"; + when "10" & x"37b" => DATA <= x"c014"; + when "10" & x"37c" => DATA <= x"1e0e"; + when "10" & x"37d" => DATA <= x"a0c0"; + when "10" & x"37e" => DATA <= x"073f"; + when "10" & x"37f" => DATA <= x"90f8"; + when "10" & x"380" => DATA <= x"4c22"; + when "10" & x"381" => DATA <= x"f500"; + when "10" & x"382" => DATA <= x"5080"; + when "10" & x"383" => DATA <= x"02b8"; + when "10" & x"384" => DATA <= x"1e00"; + when "10" & x"385" => DATA <= x"7000"; + when "10" & x"386" => DATA <= x"7c1e"; + when "10" & x"387" => DATA <= x"1f1f"; + when "10" & x"388" => DATA <= x"9fc3"; + when "10" & x"389" => DATA <= x"fdfc"; + when "10" & x"38a" => DATA <= x"fca3"; + when "10" & x"38b" => DATA <= x"81e0"; + when "10" & x"38c" => DATA <= x"01fe"; + when "10" & x"38d" => DATA <= x"2b41"; + when "10" & x"38e" => DATA <= x"80fa"; + when "10" & x"38f" => DATA <= x"0004"; + when "10" & x"390" => DATA <= x"ff50"; + when "10" & x"391" => DATA <= x"0428"; + when "10" & x"392" => DATA <= x"0021"; + when "10" & x"393" => DATA <= x"4000"; + when "10" & x"394" => DATA <= x"707f"; + when "10" & x"395" => DATA <= x"0f87"; + when "10" & x"396" => DATA <= x"87e8"; + when "10" & x"397" => DATA <= x"07e0"; + when "10" & x"398" => DATA <= x"028f"; + when "10" & x"399" => DATA <= x"28e0"; + when "10" & x"39a" => DATA <= x"78ff"; + when "10" & x"39b" => DATA <= x"7ef6"; + when "10" & x"39c" => DATA <= x"0309"; + when "10" & x"39d" => DATA <= x"00c0"; + when "10" & x"39e" => DATA <= x"21d0"; + when "10" & x"39f" => DATA <= x"0ef0"; + when "10" & x"3a0" => DATA <= x"8068"; + when "10" & x"3a1" => DATA <= x"000e"; + when "10" & x"3a2" => DATA <= x"83a8"; + when "10" & x"3a3" => DATA <= x"1618"; + when "10" & x"3a4" => DATA <= x"0180"; + when "10" & x"3a5" => DATA <= x"c163"; + when "10" & x"3a6" => DATA <= x"d43a"; + when "10" & x"3a7" => DATA <= x"7dfe"; + when "10" & x"3a8" => DATA <= x"00ef"; + when "10" & x"3a9" => DATA <= x"f5a5"; + when "10" & x"3aa" => DATA <= x"4a00"; + when "10" & x"3ab" => DATA <= x"0edc"; + when "10" & x"3ac" => DATA <= x"1e07"; + when "10" & x"3ad" => DATA <= x"0257"; + when "10" & x"3ae" => DATA <= x"2804"; + when "10" & x"3af" => DATA <= x"3c3e"; + when "10" & x"3b0" => DATA <= x"1f87"; + when "10" & x"3b1" => DATA <= x"f83f"; + when "10" & x"3b2" => DATA <= x"8038"; + when "10" & x"3b3" => DATA <= x"603c"; + when "10" & x"3b4" => DATA <= x"1f00"; + when "10" & x"3b5" => DATA <= x"7830"; + when "10" & x"3b6" => DATA <= x"0820"; + when "10" & x"3b7" => DATA <= x"7eaf"; + when "10" & x"3b8" => DATA <= x"e3f5"; + when "10" & x"3b9" => DATA <= x"7f70"; + when "10" & x"3ba" => DATA <= x"057f"; + when "10" & x"3bb" => DATA <= x"f1f8"; + when "10" & x"3bc" => DATA <= x"02bf"; + when "10" & x"3bd" => DATA <= x"1faf"; + when "10" & x"3be" => DATA <= x"f005"; + when "10" & x"3bf" => DATA <= x"0400"; + when "10" & x"3c0" => DATA <= x"2bfd"; + when "10" & x"3c1" => DATA <= x"ee37"; + when "10" & x"3c2" => DATA <= x"1408"; + when "10" & x"3c3" => DATA <= x"4041"; + when "10" & x"3c4" => DATA <= x"0aff"; + when "10" & x"3c5" => DATA <= x"7f00"; + when "10" & x"3c6" => DATA <= x"40a9"; + when "10" & x"3c7" => DATA <= x"9038"; + when "10" & x"3c8" => DATA <= x"21fe"; + when "10" & x"3c9" => DATA <= x"3f0f"; + when "10" & x"3ca" => DATA <= x"f008"; + when "10" & x"3cb" => DATA <= x"1444"; + when "10" & x"3cc" => DATA <= x"3fa3"; + when "10" & x"3cd" => DATA <= x"e0f0"; + when "10" & x"3ce" => DATA <= x"3a83"; + when "10" & x"3cf" => DATA <= x"000e"; + when "10" & x"3d0" => DATA <= x"0381"; + when "10" & x"3d1" => DATA <= x"e1f8"; + when "10" & x"3d2" => DATA <= x"f87e"; + when "10" & x"3d3" => DATA <= x"1f80"; + when "10" & x"3d4" => DATA <= x"0ffa"; + when "10" & x"3d5" => DATA <= x"00ef"; + when "10" & x"3d6" => DATA <= x"fa00"; + when "10" & x"3d7" => DATA <= x"e1f0"; + when "10" & x"3d8" => DATA <= x"7f03"; + when "10" & x"3d9" => DATA <= x"801e"; + when "10" & x"3da" => DATA <= x"0180"; + when "10" & x"3db" => DATA <= x"e70f"; + when "10" & x"3dc" => DATA <= x"07c0"; + when "10" & x"3dd" => DATA <= x"07fb"; + when "10" & x"3de" => DATA <= x"0030"; + when "10" & x"3df" => DATA <= x"2da8"; + when "10" & x"3e0" => DATA <= x"c340"; + when "10" & x"3e1" => DATA <= x"02b4"; + when "10" & x"3e2" => DATA <= x"0806"; + when "10" & x"3e3" => DATA <= x"9007"; + when "10" & x"3e4" => DATA <= x"ef00"; + when "10" & x"3e5" => DATA <= x"0400"; + when "10" & x"3e6" => DATA <= x"9400"; + when "10" & x"3e7" => DATA <= x"bfb0"; + when "10" & x"3e8" => DATA <= x"0008"; + when "10" & x"3e9" => DATA <= x"fde0"; + when "10" & x"3ea" => DATA <= x"f83c"; + when "10" & x"3eb" => DATA <= x"71c7"; + when "10" & x"3ec" => DATA <= x"0077"; + when "10" & x"3ed" => DATA <= x"03c1"; + when "10" & x"3ee" => DATA <= x"f200"; + when "10" & x"3ef" => DATA <= x"2058"; + when "10" & x"3f0" => DATA <= x"8001"; + when "10" & x"3f1" => DATA <= x"faf8"; + when "10" & x"3f2" => DATA <= x"4870"; + when "10" & x"3f3" => DATA <= x"0004"; + when "10" & x"3f4" => DATA <= x"00f7"; + when "10" & x"3f5" => DATA <= x"0057"; + when "10" & x"3f6" => DATA <= x"8538"; + when "10" & x"3f7" => DATA <= x"0c0e"; + when "10" & x"3f8" => DATA <= x"1406"; + when "10" & x"3f9" => DATA <= x"c160"; + when "10" & x"3fa" => DATA <= x"5703"; + when "10" & x"3fb" => DATA <= x"e5f8"; + when "10" & x"3fc" => DATA <= x"fa70"; + when "10" & x"3fd" => DATA <= x"5f1b"; + when "10" & x"3fe" => DATA <= x"ff7c"; + when "10" & x"3ff" => DATA <= x"deef"; + when "10" & x"400" => DATA <= x"37ff"; + when "10" & x"401" => DATA <= x"bfb7"; + when "10" & x"402" => DATA <= x"c013"; + when "10" & x"403" => DATA <= x"0150"; + when "10" & x"404" => DATA <= x"4070"; + when "10" & x"405" => DATA <= x"407c"; + when "10" & x"406" => DATA <= x"1f40"; + when "10" & x"407" => DATA <= x"e0f5"; + when "10" & x"408" => DATA <= x"fb20"; + when "10" & x"409" => DATA <= x"0141"; + when "10" & x"40a" => DATA <= x"c0c0"; + when "10" & x"40b" => DATA <= x"7707"; + when "10" & x"40c" => DATA <= x"f800"; + when "10" & x"40d" => DATA <= x"4060"; + when "10" & x"40e" => DATA <= x"3f0f"; + when "10" & x"40f" => DATA <= x"d07a"; + when "10" & x"410" => DATA <= x"1f80"; + when "10" & x"411" => DATA <= x"0314"; + when "10" & x"412" => DATA <= x"381e"; + when "10" & x"413" => DATA <= x"0f80"; + when "10" & x"414" => DATA <= x"3c18"; + when "10" & x"415" => DATA <= x"04a0"; + when "10" & x"416" => DATA <= x"703f"; + when "10" & x"417" => DATA <= x"87c1"; + when "10" & x"418" => DATA <= x"e070"; + when "10" & x"419" => DATA <= x"1a80"; + when "10" & x"41a" => DATA <= x"0022"; + when "10" & x"41b" => DATA <= x"0380"; + when "10" & x"41c" => DATA <= x"e078"; + when "10" & x"41d" => DATA <= x"3f00"; + when "10" & x"41e" => DATA <= x"2228"; + when "10" & x"41f" => DATA <= x"6018"; + when "10" & x"420" => DATA <= x"1c04"; + when "10" & x"421" => DATA <= x"0602"; + when "10" & x"422" => DATA <= x"0fd0"; + when "10" & x"423" => DATA <= x"1389"; + when "10" & x"424" => DATA <= x"c0e2"; + when "10" & x"425" => DATA <= x"7038"; + when "10" & x"426" => DATA <= x"9fcf"; + when "10" & x"427" => DATA <= x"f3c0"; + when "10" & x"428" => DATA <= x"fc0e"; + when "10" & x"429" => DATA <= x"0140"; + when "10" & x"42a" => DATA <= x"b801"; + when "10" & x"42b" => DATA <= x"a01a"; + when "10" & x"42c" => DATA <= x"0003"; + when "10" & x"42d" => DATA <= x"01c8"; + when "10" & x"42e" => DATA <= x"e070"; + when "10" & x"42f" => DATA <= x"0010"; + when "10" & x"430" => DATA <= x"0084"; + when "10" & x"431" => DATA <= x"a804"; + when "10" & x"432" => DATA <= x"2200"; + when "10" & x"433" => DATA <= x"000f"; + when "10" & x"434" => DATA <= x"1fbf"; + when "10" & x"435" => DATA <= x"c3e0"; + when "10" & x"436" => DATA <= x"701b"; + when "10" & x"437" => DATA <= x"8640"; + when "10" & x"438" => DATA <= x"0100"; + when "10" & x"439" => DATA <= x"ca0f"; + when "10" & x"43a" => DATA <= x"e004"; + when "10" & x"43b" => DATA <= x"1d01"; + when "10" & x"43c" => DATA <= x"a0c0"; + when "10" & x"43d" => DATA <= x"601a"; + when "10" & x"43e" => DATA <= x"ffaf"; + when "10" & x"43f" => DATA <= x"81c0"; + when "10" & x"440" => DATA <= x"6110"; + when "10" & x"441" => DATA <= x"007f"; + when "10" & x"442" => DATA <= x"80c1"; + when "10" & x"443" => DATA <= x"e006"; + when "10" & x"444" => DATA <= x"03c1"; + when "10" & x"445" => DATA <= x"fefe"; + when "10" & x"446" => DATA <= x"03d0"; + when "10" & x"447" => DATA <= x"0480"; + when "10" & x"448" => DATA <= x"9fd8"; + when "10" & x"449" => DATA <= x"0de9"; + when "10" & x"44a" => DATA <= x"dfaf"; + when "10" & x"44b" => DATA <= x"fbf7"; + when "10" & x"44c" => DATA <= x"afff"; + when "10" & x"44d" => DATA <= x"7138"; + when "10" & x"44e" => DATA <= x"87a8"; + when "10" & x"44f" => DATA <= x"703c"; + when "10" & x"450" => DATA <= x"1ca0"; + when "10" & x"451" => DATA <= x"0026"; + when "10" & x"452" => DATA <= x"f7bb"; + when "10" & x"453" => DATA <= x"8000"; + when "10" & x"454" => DATA <= x"74f5"; + when "10" & x"455" => DATA <= x"5d2f"; + when "10" & x"456" => DATA <= x"9fc1"; + when "10" & x"457" => DATA <= x"ea00"; + when "10" & x"458" => DATA <= x"2857"; + when "10" & x"459" => DATA <= x"fbed"; + when "10" & x"45a" => DATA <= x"fe00"; + when "10" & x"45b" => DATA <= x"7e50"; + when "10" & x"45c" => DATA <= x"02fc"; + when "10" & x"45d" => DATA <= x"fcff"; + when "10" & x"45e" => DATA <= x"6780"; + when "10" & x"45f" => DATA <= x"0fef"; + when "10" & x"460" => DATA <= x"f48f"; + when "10" & x"461" => DATA <= x"7fbd"; + when "10" & x"462" => DATA <= x"1e0e"; + when "10" & x"463" => DATA <= x"0780"; + when "10" & x"464" => DATA <= x"03bf"; + when "10" & x"465" => DATA <= x"c7e7"; + when "10" & x"466" => DATA <= x"f3e8"; + when "10" & x"467" => DATA <= x"fc04"; + when "10" & x"468" => DATA <= x"ff7e"; + when "10" & x"469" => DATA <= x"bfd0"; + when "10" & x"46a" => DATA <= x"8637"; + when "10" & x"46b" => DATA <= x"9a40"; + when "10" & x"46c" => DATA <= x"415f"; + when "10" & x"46d" => DATA <= x"d47e"; + when "10" & x"46e" => DATA <= x"0203"; + when "10" & x"46f" => DATA <= x"a218"; + when "10" & x"470" => DATA <= x"35fe"; + when "10" & x"471" => DATA <= x"fe4f"; + when "10" & x"472" => DATA <= x"1000"; + when "10" & x"473" => DATA <= x"0040"; + when "10" & x"474" => DATA <= x"2afd"; + when "10" & x"475" => DATA <= x"feef"; + when "10" & x"476" => DATA <= x"1d80"; + when "10" & x"477" => DATA <= x"a800"; + when "10" & x"478" => DATA <= x"c15f"; + when "10" & x"479" => DATA <= x"aff7"; + when "10" & x"47a" => DATA <= x"f235"; + when "10" & x"47b" => DATA <= x"98c4"; + when "10" & x"47c" => DATA <= x"0157"; + when "10" & x"47d" => DATA <= x"fafd"; + when "10" & x"47e" => DATA <= x"fe14"; + when "10" & x"47f" => DATA <= x"0008"; + when "10" & x"480" => DATA <= x"0167"; + when "10" & x"481" => DATA <= x"f77a"; + when "10" & x"482" => DATA <= x"fc66"; + when "10" & x"483" => DATA <= x"0024"; + when "10" & x"484" => DATA <= x"1018"; + when "10" & x"485" => DATA <= x"0fb7"; + when "10" & x"486" => DATA <= x"bbfd"; + when "10" & x"487" => DATA <= x"f800"; + when "10" & x"488" => DATA <= x"45b2"; + when "10" & x"489" => DATA <= x"c21d"; + when "10" & x"48a" => DATA <= x"fe8f"; + when "10" & x"48b" => DATA <= x"4000"; + when "10" & x"48c" => DATA <= x"1000"; + when "10" & x"48d" => DATA <= x"077d"; + when "10" & x"48e" => DATA <= x"7fa9"; + when "10" & x"48f" => DATA <= x"c0e0"; + when "10" & x"490" => DATA <= x"0020"; + when "10" & x"491" => DATA <= x"03bf"; + when "10" & x"492" => DATA <= x"dee0"; + when "10" & x"493" => DATA <= x"4000"; + when "10" & x"494" => DATA <= x"9009"; + when "10" & x"495" => DATA <= x"3fe0"; + when "10" & x"496" => DATA <= x"0641"; + when "10" & x"497" => DATA <= x"0d00"; + when "10" & x"498" => DATA <= x"ff77"; + when "10" & x"499" => DATA <= x"bfcf"; + when "10" & x"49a" => DATA <= x"e000"; + when "10" & x"49b" => DATA <= x"1098"; + when "10" & x"49c" => DATA <= x"00ef"; + when "10" & x"49d" => DATA <= x"aff7"; + when "10" & x"49e" => DATA <= x"0000"; + when "10" & x"49f" => DATA <= x"0844"; + when "10" & x"4a0" => DATA <= x"003f"; + when "10" & x"4a1" => DATA <= x"5eaf"; + when "10" & x"4a2" => DATA <= x"d7fb"; + when "10" & x"4a3" => DATA <= x"0000"; + when "10" & x"4a4" => DATA <= x"0a02"; + when "10" & x"4a5" => DATA <= x"77fb"; + when "10" & x"4a6" => DATA <= x"e480"; + when "10" & x"4a7" => DATA <= x"0700"; + when "10" & x"4a8" => DATA <= x"007b"; + when "10" & x"4a9" => DATA <= x"fd02"; + when "10" & x"4aa" => DATA <= x"4800"; + when "10" & x"4ab" => DATA <= x"1202"; + when "10" & x"4ac" => DATA <= x"6bf6"; + when "10" & x"4ad" => DATA <= x"fbfc"; + when "10" & x"4ae" => DATA <= x"661a"; + when "10" & x"4af" => DATA <= x"a007"; + when "10" & x"4b0" => DATA <= x"03f5"; + when "10" & x"4b1" => DATA <= x"deff"; + when "10" & x"4b2" => DATA <= x"7d00"; + when "10" & x"4b3" => DATA <= x"0482"; + when "10" & x"4b4" => DATA <= x"1211"; + when "10" & x"4b5" => DATA <= x"bebf"; + when "10" & x"4b6" => DATA <= x"c720"; + when "10" & x"4b7" => DATA <= x"0009"; + when "10" & x"4b8" => DATA <= x"4408"; + when "10" & x"4b9" => DATA <= x"ff33"; + when "10" & x"4ba" => DATA <= x"3ff8"; + when "10" & x"4bb" => DATA <= x"0124"; + when "10" & x"4bc" => DATA <= x"88ef"; + when "10" & x"4bd" => DATA <= x"f03d"; + when "10" & x"4be" => DATA <= x"0001"; + when "10" & x"4bf" => DATA <= x"03fd"; + when "10" & x"4c0" => DATA <= x"fe5e"; + when "10" & x"4c1" => DATA <= x"603f"; + when "10" & x"4c2" => DATA <= x"00ca"; + when "10" & x"4c3" => DATA <= x"07fb"; + when "10" & x"4c4" => DATA <= x"bdfe"; + when "10" & x"4c5" => DATA <= x"f079"; + when "10" & x"4c6" => DATA <= x"bfc1"; + when "10" & x"4c7" => DATA <= x"2f9e"; + when "10" & x"4c8" => DATA <= x"ff04"; + when "10" & x"4c9" => DATA <= x"805f"; + when "10" & x"4ca" => DATA <= x"e009"; + when "10" & x"4cb" => DATA <= x"ff00"; + when "10" & x"4cc" => DATA <= x"3f2f"; + when "10" & x"4cd" => DATA <= x"fc00"; + when "10" & x"4ce" => DATA <= x"0f7f"; + when "10" & x"4cf" => DATA <= x"a067"; + when "10" & x"4d0" => DATA <= x"fc00"; + when "10" & x"4d1" => DATA <= x"fc7f"; + when "10" & x"4d2" => DATA <= x"80e7"; + when "10" & x"4d3" => DATA <= x"fc01"; + when "10" & x"4d4" => DATA <= x"5fe0"; + when "10" & x"4d5" => DATA <= x"02a7"; + when "10" & x"4d6" => DATA <= x"7f80"; + when "10" & x"4d7" => DATA <= x"2bfc"; + when "10" & x"4d8" => DATA <= x"24ed"; + when "10" & x"4d9" => DATA <= x"eff7"; + when "10" & x"4da" => DATA <= x"01f9"; + when "10" & x"4db" => DATA <= x"fe00"; + when "10" & x"4dc" => DATA <= x"dff7"; + when "10" & x"4dd" => DATA <= x"e3fd"; + when "10" & x"4de" => DATA <= x"fdbf"; + when "10" & x"4df" => DATA <= x"ef17"; + when "10" & x"4e0" => DATA <= x"f807"; + when "10" & x"4e1" => DATA <= x"7fde"; + when "10" & x"4e2" => DATA <= x"eff0"; + when "10" & x"4e3" => DATA <= x"3cff"; + when "10" & x"4e4" => DATA <= x"a5df"; + when "10" & x"4e5" => DATA <= x"c4f2"; + when "10" & x"4e6" => DATA <= x"023f"; + when "10" & x"4e7" => DATA <= x"bfdd"; + when "10" & x"4e8" => DATA <= x"e000"; + when "10" & x"4e9" => DATA <= x"3281"; + when "10" & x"4ea" => DATA <= x"31df"; + when "10" & x"4eb" => DATA <= x"e087"; + when "10" & x"4ec" => DATA <= x"0200"; + when "10" & x"4ed" => DATA <= x"0a80"; + when "10" & x"4ee" => DATA <= x"eff4"; + when "10" & x"4ef" => DATA <= x"c3fd"; + when "10" & x"4f0" => DATA <= x"1e09"; + when "10" & x"4f1" => DATA <= x"20f7"; + when "10" & x"4f2" => DATA <= x"f801"; + when "10" & x"4f3" => DATA <= x"fe6d"; + when "10" & x"4f4" => DATA <= x"1220"; + when "10" & x"4f5" => DATA <= x"3bfc"; + when "10" & x"4f6" => DATA <= x"007f"; + when "10" & x"4f7" => DATA <= x"0005"; + when "10" & x"4f8" => DATA <= x"166d"; + when "10" & x"4f9" => DATA <= x"b7eb"; + when "10" & x"4fa" => DATA <= x"fc00"; + when "10" & x"4fb" => DATA <= x"f878"; + when "10" & x"4fc" => DATA <= x"1027"; + when "10" & x"4fd" => DATA <= x"fde0"; + when "10" & x"4fe" => DATA <= x"ff28"; + when "10" & x"4ff" => DATA <= x"9827"; + when "10" & x"500" => DATA <= x"fc38"; + when "10" & x"501" => DATA <= x"df77"; + when "10" & x"502" => DATA <= x"8413"; + when "10" & x"503" => DATA <= x"e6fa"; + when "10" & x"504" => DATA <= x"ff00"; + when "10" & x"505" => DATA <= x"d7fb"; + when "10" & x"506" => DATA <= x"ac01"; + when "10" & x"507" => DATA <= x"dfe0"; + when "10" & x"508" => DATA <= x"03fb"; + when "10" & x"509" => DATA <= x"fc42"; + when "10" & x"50a" => DATA <= x"f0ef"; + when "10" & x"50b" => DATA <= x"f005"; + when "10" & x"50c" => DATA <= x"7f80"; + when "10" & x"50d" => DATA <= x"67fc"; + when "10" & x"50e" => DATA <= x"000f"; + when "10" & x"50f" => DATA <= x"7780"; + when "10" & x"510" => DATA <= x"2b8c"; + when "10" & x"511" => DATA <= x"c6e3"; + when "10" & x"512" => DATA <= x"7628"; + when "10" & x"513" => DATA <= x"07e4"; + when "10" & x"514" => DATA <= x"0793"; + when "10" & x"515" => DATA <= x"e5e3"; + when "10" & x"516" => DATA <= x"5f8f"; + when "10" & x"517" => DATA <= x"f703"; + when "10" & x"518" => DATA <= x"fedf"; + when "10" & x"519" => DATA <= x"dfe7"; + when "10" & x"51a" => DATA <= x"f432"; + when "10" & x"51b" => DATA <= x"2aa7"; + when "10" & x"51c" => DATA <= x"9ed5"; + when "10" & x"51d" => DATA <= x"fe40"; + when "10" & x"51e" => DATA <= x"fff0"; + when "10" & x"51f" => DATA <= x"05ff"; + when "10" & x"520" => DATA <= x"bb40"; + when "10" & x"521" => DATA <= x"085e"; + when "10" & x"522" => DATA <= x"ff16"; + when "10" & x"523" => DATA <= x"229f"; + when "10" & x"524" => DATA <= x"e100"; + when "10" & x"525" => DATA <= x"e77f"; + when "10" & x"526" => DATA <= x"8007"; + when "10" & x"527" => DATA <= x"effa"; + when "10" & x"528" => DATA <= x"00ae"; + when "10" & x"529" => DATA <= x"f7f8"; + when "10" & x"52a" => DATA <= x"107c"; + when "10" & x"52b" => DATA <= x"ff00"; + when "10" & x"52c" => DATA <= x"27bb"; + when "10" & x"52d" => DATA <= x"fc00"; + when "10" & x"52e" => DATA <= x"e27f"; + when "10" & x"52f" => DATA <= x"800b"; + when "10" & x"530" => DATA <= x"9dfe"; + when "10" & x"531" => DATA <= x"c047"; + when "10" & x"532" => DATA <= x"bfe8"; + when "10" & x"533" => DATA <= x"01b6"; + when "10" & x"534" => DATA <= x"df7f"; + when "10" & x"535" => DATA <= x"8011"; + when "10" & x"536" => DATA <= x"eff0"; + when "10" & x"537" => DATA <= x"008b"; + when "10" & x"538" => DATA <= x"bfc2"; + when "10" & x"539" => DATA <= x"0e77"; + when "10" & x"53a" => DATA <= x"f801"; + when "10" & x"53b" => DATA <= x"80f7"; + when "10" & x"53c" => DATA <= x"aff0"; + when "10" & x"53d" => DATA <= x"057f"; + when "10" & x"53e" => DATA <= x"8027"; + when "10" & x"53f" => DATA <= x"fd78"; + when "10" & x"540" => DATA <= x"033f"; + when "10" & x"541" => DATA <= x"8800"; + when "10" & x"542" => DATA <= x"6efa"; + when "10" & x"543" => DATA <= x"ff0b"; + when "10" & x"544" => DATA <= x"8807"; + when "10" & x"545" => DATA <= x"8602"; + when "10" & x"546" => DATA <= x"377f"; + when "10" & x"547" => DATA <= x"9e5e"; + when "10" & x"548" => DATA <= x"2491"; + when "10" & x"549" => DATA <= x"405f"; + when "10" & x"54a" => DATA <= x"bfc8"; + when "10" & x"54b" => DATA <= x"0df0"; + when "10" & x"54c" => DATA <= x"d180"; + when "10" & x"54d" => DATA <= x"80fb"; + when "10" & x"54e" => DATA <= x"7bbf"; + when "10" & x"54f" => DATA <= x"c700"; + when "10" & x"550" => DATA <= x"05b8"; + when "10" & x"551" => DATA <= x"f810"; + when "10" & x"552" => DATA <= x"ff7b"; + when "10" & x"553" => DATA <= x"bfeb"; + when "10" & x"554" => DATA <= x"f1fa"; + when "10" & x"555" => DATA <= x"f104"; + when "10" & x"556" => DATA <= x"3eeb"; + when "10" & x"557" => DATA <= x"fc86"; + when "10" & x"558" => DATA <= x"e30b"; + when "10" & x"559" => DATA <= x"88c6"; + when "10" & x"55a" => DATA <= x"03fa"; + when "10" & x"55b" => DATA <= x"ff40"; + when "10" & x"55c" => DATA <= x"2051"; + when "10" & x"55d" => DATA <= x"0002"; + when "10" & x"55e" => DATA <= x"0143"; + when "10" & x"55f" => DATA <= x"5381"; + when "10" & x"560" => DATA <= x"ddb9"; + when "10" & x"561" => DATA <= x"bbff"; + when "10" & x"562" => DATA <= x"eef7"; + when "10" & x"563" => DATA <= x"f713"; + when "10" & x"564" => DATA <= x"8f0e"; + when "10" & x"565" => DATA <= x"0783"; + when "10" & x"566" => DATA <= x"81e0"; + when "10" & x"567" => DATA <= x"e07b"; + when "10" & x"568" => DATA <= x"bff7"; + when "10" & x"569" => DATA <= x"bd1e"; + when "10" & x"56a" => DATA <= x"ef7f"; + when "10" & x"56b" => DATA <= x"87a7"; + when "10" & x"56c" => DATA <= x"f802"; + when "10" & x"56d" => DATA <= x"3f7f"; + when "10" & x"56e" => DATA <= x"d000"; + when "10" & x"56f" => DATA <= x"042a"; + when "10" & x"570" => DATA <= x"0138"; + when "10" & x"571" => DATA <= x"0001"; + when "10" & x"572" => DATA <= x"fc00"; + when "10" & x"573" => DATA <= x"1000"; + when "10" & x"574" => DATA <= x"382b"; + when "10" & x"575" => DATA <= x"c2b8"; + when "10" & x"576" => DATA <= x"11ca"; + when "10" & x"577" => DATA <= x"8570"; + when "10" & x"578" => DATA <= x"fcff"; + when "10" & x"579" => DATA <= x"47ef"; + when "10" & x"57a" => DATA <= x"f3fb"; + when "10" & x"57b" => DATA <= x"fdbe"; + when "10" & x"57c" => DATA <= x"0106"; + when "10" & x"57d" => DATA <= x"b841"; + when "10" & x"57e" => DATA <= x"2e13"; + when "10" & x"57f" => DATA <= x"d9f0"; + when "10" & x"580" => DATA <= x"e080"; + when "10" & x"581" => DATA <= x"000f"; + when "10" & x"582" => DATA <= x"d00c"; + when "10" & x"583" => DATA <= x"f07d"; + when "10" & x"584" => DATA <= x"0e81"; + when "10" & x"585" => DATA <= x"0004"; + when "10" & x"586" => DATA <= x"976b"; + when "10" & x"587" => DATA <= x"ff80"; + when "10" & x"588" => DATA <= x"0400"; + when "10" & x"589" => DATA <= x"04d2"; + when "10" & x"58a" => DATA <= x"7dbe"; + when "10" & x"58b" => DATA <= x"c040"; + when "10" & x"58c" => DATA <= x"0018"; + when "10" & x"58d" => DATA <= x"a216"; + when "10" & x"58e" => DATA <= x"8079"; + when "10" & x"58f" => DATA <= x"eefd"; + when "10" & x"590" => DATA <= x"003f"; + when "10" & x"591" => DATA <= x"4400"; + when "10" & x"592" => DATA <= x"1028"; + when "10" & x"593" => DATA <= x"02bf"; + when "10" & x"594" => DATA <= x"dc0f"; + when "10" & x"595" => DATA <= x"f102"; + when "10" & x"596" => DATA <= x"49e0"; + when "10" & x"597" => DATA <= x"007f"; + when "10" & x"598" => DATA <= x"bdc0"; + when "10" & x"599" => DATA <= x"6ff0"; + when "10" & x"59a" => DATA <= x"0010"; + when "10" & x"59b" => DATA <= x"3e80"; + when "10" & x"59c" => DATA <= x"6f87"; + when "10" & x"59d" => DATA <= x"d80b"; + when "10" & x"59e" => DATA <= x"f400"; + when "10" & x"59f" => DATA <= x"0800"; + when "10" & x"5a0" => DATA <= x"8069"; + when "10" & x"5a1" => DATA <= x"91c0"; + when "10" & x"5a2" => DATA <= x"2fc0"; + when "10" & x"5a3" => DATA <= x"2000"; + when "10" & x"5a4" => DATA <= x"915f"; + when "10" & x"5a5" => DATA <= x"e125"; + when "10" & x"5a6" => DATA <= x"2010"; + when "10" & x"5a7" => DATA <= x"4140"; + when "10" & x"5a8" => DATA <= x"15fe"; + when "10" & x"5a9" => DATA <= x"0912"; + when "10" & x"5aa" => DATA <= x"8808"; + when "10" & x"5ab" => DATA <= x"a047"; + when "10" & x"5ac" => DATA <= x"e08d"; + when "10" & x"5ad" => DATA <= x"86fe"; + when "10" & x"5ae" => DATA <= x"023c"; + when "10" & x"5af" => DATA <= x"0442"; + when "10" & x"5b0" => DATA <= x"10f8"; + when "10" & x"5b1" => DATA <= x"02bf"; + when "10" & x"5b2" => DATA <= x"d80f"; + when "10" & x"5b3" => DATA <= x"f422"; + when "10" & x"5b4" => DATA <= x"01dc"; + when "10" & x"5b5" => DATA <= x"0171"; + when "10" & x"5b6" => DATA <= x"bbc1"; + when "10" & x"5b7" => DATA <= x"eff0"; + when "10" & x"5b8" => DATA <= x"8090"; + when "10" & x"5b9" => DATA <= x"fe00"; + when "10" & x"5ba" => DATA <= x"5f9f"; + when "10" & x"5bb" => DATA <= x"d007"; + when "10" & x"5bc" => DATA <= x"fa00"; + when "10" & x"5bd" => DATA <= x"42ba"; + when "10" & x"5be" => DATA <= x"80cc"; + when "10" & x"5bf" => DATA <= x"6038"; + when "10" & x"5c0" => DATA <= x"f091"; + when "10" & x"5c1" => DATA <= x"400f"; + when "10" & x"5c2" => DATA <= x"f003"; + when "10" & x"5c3" => DATA <= x"fc96"; + when "10" & x"5c4" => DATA <= x"48a0"; + when "10" & x"5c5" => DATA <= x"0121"; + when "10" & x"5c6" => DATA <= x"fd80"; + when "10" & x"5c7" => DATA <= x"9f09"; + when "10" & x"5c8" => DATA <= x"0005"; + when "10" & x"5c9" => DATA <= x"4ca7"; + when "10" & x"5ca" => DATA <= x"f061"; + when "10" & x"5cb" => DATA <= x"e2ff"; + when "10" & x"5cc" => DATA <= x"013f"; + when "10" & x"5cd" => DATA <= x"0a25"; + when "10" & x"5ce" => DATA <= x"023a"; + when "10" & x"5cf" => DATA <= x"12bf"; + when "10" & x"5d0" => DATA <= x"dc0f"; + when "10" & x"5d1" => DATA <= x"f311"; + when "10" & x"5d2" => DATA <= x"01fc"; + when "10" & x"5d3" => DATA <= x"0079"; + when "10" & x"5d4" => DATA <= x"3ec1"; + when "10" & x"5d5" => DATA <= x"6ff0"; + when "10" & x"5d6" => DATA <= x"5825"; + when "10" & x"5d7" => DATA <= x"be80"; + when "10" & x"5d8" => DATA <= x"0f97"; + when "10" & x"5d9" => DATA <= x"c801"; + when "10" & x"5da" => DATA <= x"fa00"; + when "10" & x"5db" => DATA <= x"01bc"; + when "10" & x"5dc" => DATA <= x"002f"; + when "10" & x"5dd" => DATA <= x"1008"; + when "10" & x"5de" => DATA <= x"fc10"; + when "10" & x"5df" => DATA <= x"0040"; + when "10" & x"5e0" => DATA <= x"3fc0"; + when "10" & x"5e1" => DATA <= x"0ffa"; + when "10" & x"5e2" => DATA <= x"4900"; + when "10" & x"5e3" => DATA <= x"2004"; + when "10" & x"5e4" => DATA <= x"80f4"; + when "10" & x"5e5" => DATA <= x"02dd"; + when "10" & x"5e6" => DATA <= x"06c0"; + when "10" & x"5e7" => DATA <= x"0404"; + when "10" & x"5e8" => DATA <= x"0483"; + when "10" & x"5e9" => DATA <= x"a003"; + when "10" & x"5ea" => DATA <= x"fc00"; + when "10" & x"5eb" => DATA <= x"ffa0"; + when "10" & x"5ec" => DATA <= x"4003"; + when "10" & x"5ed" => DATA <= x"f400"; + when "10" & x"5ee" => DATA <= x"ff40"; + when "10" & x"5ef" => DATA <= x"bfc0"; + when "10" & x"5f0" => DATA <= x"66c3"; + when "10" & x"5f1" => DATA <= x"4bfc"; + when "10" & x"5f2" => DATA <= x"00ff"; + when "10" & x"5f3" => DATA <= x"04bf"; + when "10" & x"5f4" => DATA <= x"c014"; + when "10" & x"5f5" => DATA <= x"02ff"; + when "10" & x"5f6" => DATA <= x"0036"; + when "10" & x"5f7" => DATA <= x"c386"; + when "10" & x"5f8" => DATA <= x"3085"; + when "10" & x"5f9" => DATA <= x"003f"; + when "10" & x"5fa" => DATA <= x"c00f"; + when "10" & x"5fb" => DATA <= x"f480"; + when "10" & x"5fc" => DATA <= x"4840"; + when "10" & x"5fd" => DATA <= x"0024"; + when "10" & x"5fe" => DATA <= x"87c0"; + when "10" & x"5ff" => DATA <= x"0770"; + when "10" & x"600" => DATA <= x"3201"; + when "10" & x"601" => DATA <= x"6021"; + when "10" & x"602" => DATA <= x"241d"; + when "10" & x"603" => DATA <= x"002f"; + when "10" & x"604" => DATA <= x"f00b"; + when "10" & x"605" => DATA <= x"fc10"; + when "10" & x"606" => DATA <= x"2830"; + when "10" & x"607" => DATA <= x"3e80"; + when "10" & x"608" => DATA <= x"0ff0"; + when "10" & x"609" => DATA <= x"03fc"; + when "10" & x"60a" => DATA <= x"0d5b"; + when "10" & x"60b" => DATA <= x"0ff0"; + when "10" & x"60c" => DATA <= x"03fc"; + when "10" & x"60d" => DATA <= x"20ff"; + when "10" & x"60e" => DATA <= x"2050"; + when "10" & x"60f" => DATA <= x"13fd"; + when "10" & x"610" => DATA <= x"e037"; + when "10" & x"611" => DATA <= x"7031"; + when "10" & x"612" => DATA <= x"c802"; + when "10" & x"613" => DATA <= x"0401"; + when "10" & x"614" => DATA <= x"4dfe"; + when "10" & x"615" => DATA <= x"fd7f"; + when "10" & x"616" => DATA <= x"00d0"; + when "10" & x"617" => DATA <= x"04b0"; + when "10" & x"618" => DATA <= x"0015"; + when "10" & x"619" => DATA <= x"fc3e"; + when "10" & x"61a" => DATA <= x"7f80"; + when "10" & x"61b" => DATA <= x"1108"; + when "10" & x"61c" => DATA <= x"200b"; + when "10" & x"61d" => DATA <= x"c0fe"; + when "10" & x"61e" => DATA <= x"fd7f"; + when "10" & x"61f" => DATA <= x"d000"; + when "10" & x"620" => DATA <= x"4804"; + when "10" & x"621" => DATA <= x"bfa7"; + when "10" & x"622" => DATA <= x"e7fd"; + when "10" & x"623" => DATA <= x"000c"; + when "10" & x"624" => DATA <= x"8104"; + when "10" & x"625" => DATA <= x"2eff"; + when "10" & x"626" => DATA <= x"0010"; + when "10" & x"627" => DATA <= x"08a0"; + when "10" & x"628" => DATA <= x"0600"; + when "10" & x"629" => DATA <= x"1ebf"; + when "10" & x"62a" => DATA <= x"c006"; + when "10" & x"62b" => DATA <= x"c6a2"; + when "10" & x"62c" => DATA <= x"113c"; + when "10" & x"62d" => DATA <= x"8e5f"; + when "10" & x"62e" => DATA <= x"bfc0"; + when "10" & x"62f" => DATA <= x"15fd"; + when "10" & x"630" => DATA <= x"dfef"; + when "10" & x"631" => DATA <= x"77f8"; + when "10" & x"632" => DATA <= x"02bf"; + when "10" & x"633" => DATA <= x"e401"; + when "10" & x"634" => DATA <= x"f000"; + when "10" & x"635" => DATA <= x"aff0"; + when "10" & x"636" => DATA <= x"03f1"; + when "10" & x"637" => DATA <= x"181c"; + when "10" & x"638" => DATA <= x"3e9f"; + when "10" & x"639" => DATA <= x"2bfd"; + when "10" & x"63a" => DATA <= x"e1de"; + when "10" & x"63b" => DATA <= x"35e6"; + when "10" & x"63c" => DATA <= x"ef9f"; + when "10" & x"63d" => DATA <= x"f638"; + when "10" & x"63e" => DATA <= x"1d4f"; + when "10" & x"63f" => DATA <= x"3fef"; + when "10" & x"640" => DATA <= x"47b0"; + when "10" & x"641" => DATA <= x"01e6"; + when "10" & x"642" => DATA <= x"f7ef"; + when "10" & x"643" => DATA <= x"f773"; + when "10" & x"644" => DATA <= x"fc00"; + when "10" & x"645" => DATA <= x"2e97"; + when "10" & x"646" => DATA <= x"f3d8"; + when "10" & x"647" => DATA <= x"8068"; + when "10" & x"648" => DATA <= x"3e6c"; + when "10" & x"649" => DATA <= x"a048"; + when "10" & x"64a" => DATA <= x"a016"; + when "10" & x"64b" => DATA <= x"2916"; + when "10" & x"64c" => DATA <= x"8159"; + when "10" & x"64d" => DATA <= x"4404"; + when "10" & x"64e" => DATA <= x"1761"; + when "10" & x"64f" => DATA <= x"d001"; + when "10" & x"650" => DATA <= x"cc00"; + when "10" & x"651" => DATA <= x"2011"; + when "10" & x"652" => DATA <= x"0c82"; + when "10" & x"653" => DATA <= x"4800"; + when "10" & x"654" => DATA <= x"011c"; + when "10" & x"655" => DATA <= x"8642"; + when "10" & x"656" => DATA <= x"1988"; + when "10" & x"657" => DATA <= x"d064"; + when "10" & x"658" => DATA <= x"33fa"; + when "10" & x"659" => DATA <= x"fdd0"; + when "10" & x"65a" => DATA <= x"0401"; + when "10" & x"65b" => DATA <= x"5000"; + when "10" & x"65c" => DATA <= x"a000"; + when "10" & x"65d" => DATA <= x"ff09"; + when "10" & x"65e" => DATA <= x"8001"; + when "10" & x"65f" => DATA <= x"286e"; + when "10" & x"660" => DATA <= x"003f"; + when "10" & x"661" => DATA <= x"8424"; + when "10" & x"662" => DATA <= x"0100"; + when "10" & x"663" => DATA <= x"005f"; + when "10" & x"664" => DATA <= x"0040"; + when "10" & x"665" => DATA <= x"802a"; + when "10" & x"666" => DATA <= x"0009"; + when "10" & x"667" => DATA <= x"8315"; + when "10" & x"668" => DATA <= x"ebc0"; + when "10" & x"669" => DATA <= x"0200"; + when "10" & x"66a" => DATA <= x"0208"; + when "10" & x"66b" => DATA <= x"1002"; + when "10" & x"66c" => DATA <= x"1c41"; + when "10" & x"66d" => DATA <= x"5100"; + when "10" & x"66e" => DATA <= x"0400"; + when "10" & x"66f" => DATA <= x"0ca4"; + when "10" & x"670" => DATA <= x"07cb"; + when "10" & x"671" => DATA <= x"3240"; + when "10" & x"672" => DATA <= x"0440"; + when "10" & x"673" => DATA <= x"12c1"; + when "10" & x"674" => DATA <= x"e840"; + when "10" & x"675" => DATA <= x"0fa8"; + when "10" & x"676" => DATA <= x"0000"; + when "10" & x"677" => DATA <= x"81b6"; + when "10" & x"678" => DATA <= x"9068"; + when "10" & x"679" => DATA <= x"07d8"; + when "10" & x"67a" => DATA <= x"1480"; + when "10" & x"67b" => DATA <= x"c0a0"; + when "10" & x"67c" => DATA <= x"0418"; + when "10" & x"67d" => DATA <= x"000e"; + when "10" & x"67e" => DATA <= x"a069"; + when "10" & x"67f" => DATA <= x"01dc"; + when "10" & x"680" => DATA <= x"0617"; + when "10" & x"681" => DATA <= x"1380"; + when "10" & x"682" => DATA <= x"c062"; + when "10" & x"683" => DATA <= x"0138"; + when "10" & x"684" => DATA <= x"2801"; + when "10" & x"685" => DATA <= x"00f0"; + when "10" & x"686" => DATA <= x"002c"; + when "10" & x"687" => DATA <= x"57cf"; + when "10" & x"688" => DATA <= x"4afc"; + when "10" & x"689" => DATA <= x"7a3e"; + when "10" & x"68a" => DATA <= x"5f8f"; + when "10" & x"68b" => DATA <= x"d7cb"; + when "10" & x"68c" => DATA <= x"d026"; + when "10" & x"68d" => DATA <= x"0311"; + when "10" & x"68e" => DATA <= x"81e8"; + when "10" & x"68f" => DATA <= x"5e81"; + when "10" & x"690" => DATA <= x"d88c"; + when "10" & x"691" => DATA <= x"0702"; + when "10" & x"692" => DATA <= x"0120"; + when "10" & x"693" => DATA <= x"d000"; + when "10" & x"694" => DATA <= x"0101"; + when "10" & x"695" => DATA <= x"c0da"; + when "10" & x"696" => DATA <= x"0c7f"; + when "10" & x"697" => DATA <= x"3e2b"; + when "10" & x"698" => DATA <= x"f9bf"; + when "10" & x"699" => DATA <= x"5ffb"; + when "10" & x"69a" => DATA <= x"bef7"; + when "10" & x"69b" => DATA <= x"affd"; + when "10" & x"69c" => DATA <= x"f718"; + when "10" & x"69d" => DATA <= x"db88"; + when "10" & x"69e" => DATA <= x"0687"; + when "10" & x"69f" => DATA <= x"a870"; + when "10" & x"6a0" => DATA <= x"3d43"; + when "10" & x"6a1" => DATA <= x"81ee"; + when "10" & x"6a2" => DATA <= x"efaf"; + when "10" & x"6a3" => DATA <= x"feef"; + when "10" & x"6a4" => DATA <= x"afe7"; + when "10" & x"6a5" => DATA <= x"b3dd"; + when "10" & x"6a6" => DATA <= x"ff5f"; + when "10" & x"6a7" => DATA <= x"c7e0"; + when "10" & x"6a8" => DATA <= x"0944"; + when "10" & x"6a9" => DATA <= x"2271"; + when "10" & x"6aa" => DATA <= x"0880"; + when "10" & x"6ab" => DATA <= x"4a74"; + when "10" & x"6ac" => DATA <= x"0010"; + when "10" & x"6ad" => DATA <= x"0008"; + when "10" & x"6ae" => DATA <= x"000f"; + when "10" & x"6af" => DATA <= x"c408"; + when "10" & x"6b0" => DATA <= x"0114"; + when "10" & x"6b1" => DATA <= x"8202"; + when "10" & x"6b2" => DATA <= x"5043"; + when "10" & x"6b3" => DATA <= x"0102"; + when "10" & x"6b4" => DATA <= x"807e"; + when "10" & x"6b5" => DATA <= x"aff7"; + when "10" & x"6b6" => DATA <= x"fdfa"; + when "10" & x"6b7" => DATA <= x"7c3c"; + when "10" & x"6b8" => DATA <= x"804c"; + when "10" & x"6b9" => DATA <= x"3cf8"; + when "10" & x"6ba" => DATA <= x"fc4e"; + when "10" & x"6bb" => DATA <= x"87c3"; + when "10" & x"6bc" => DATA <= x"c5d4"; + when "10" & x"6bd" => DATA <= x"e8f4"; + when "10" & x"6be" => DATA <= x"3a4d"; + when "10" & x"6bf" => DATA <= x"0250"; + when "10" & x"6c0" => DATA <= x"0121"; + when "10" & x"6c1" => DATA <= x"fef4"; + when "10" & x"6c2" => DATA <= x"1300"; + when "10" & x"6c3" => DATA <= x"b801"; + when "10" & x"6c4" => DATA <= x"04ff"; + when "10" & x"6c5" => DATA <= x"0200"; + when "10" & x"6c6" => DATA <= x"01ef"; + when "10" & x"6c7" => DATA <= x"c7e8"; + when "10" & x"6c8" => DATA <= x"0400"; + when "10" & x"6c9" => DATA <= x"eb00"; + when "10" & x"6ca" => DATA <= x"200f"; + when "10" & x"6cb" => DATA <= x"55ff"; + when "10" & x"6cc" => DATA <= x"400f"; + when "10" & x"6cd" => DATA <= x"f3a0"; + when "10" & x"6ce" => DATA <= x"e4d1"; + when "10" & x"6cf" => DATA <= x"5fe0"; + when "10" & x"6d0" => DATA <= x"1003"; + when "10" & x"6d1" => DATA <= x"fc02"; + when "10" & x"6d2" => DATA <= x"3101"; + when "10" & x"6d3" => DATA <= x"07d7"; + when "10" & x"6d4" => DATA <= x"e800"; + when "10" & x"6d5" => DATA <= x"03fd"; + when "10" & x"6d6" => DATA <= x"34da"; + when "10" & x"6d7" => DATA <= x"003f"; + when "10" & x"6d8" => DATA <= x"29f0"; + when "10" & x"6d9" => DATA <= x"faff"; + when "10" & x"6da" => DATA <= x"a010"; + when "10" & x"6db" => DATA <= x"8013"; + when "10" & x"6dc" => DATA <= x"801f"; + when "10" & x"6dd" => DATA <= x"f400"; + when "10" & x"6de" => DATA <= x"2a90"; + when "10" & x"6df" => DATA <= x"07fd"; + when "10" & x"6e0" => DATA <= x"002c"; + when "10" & x"6e1" => DATA <= x"9f55"; + when "10" & x"6e2" => DATA <= x"f0a0"; + when "10" & x"6e3" => DATA <= x"7f80"; + when "10" & x"6e4" => DATA <= x"0085"; + when "10" & x"6e5" => DATA <= x"3eff"; + when "10" & x"6e6" => DATA <= x"3f3f"; + when "10" & x"6e7" => DATA <= x"c002"; + when "10" & x"6e8" => DATA <= x"627e"; + when "10" & x"6e9" => DATA <= x"ffd1"; + when "10" & x"6ea" => DATA <= x"c0bf"; + when "10" & x"6eb" => DATA <= x"9fcd"; + when "10" & x"6ec" => DATA <= x"aff0"; + when "10" & x"6ed" => DATA <= x"0004"; + when "10" & x"6ee" => DATA <= x"0039"; + when "10" & x"6ef" => DATA <= x"1c2e"; + when "10" & x"6f0" => DATA <= x"178e"; + when "10" & x"6f1" => DATA <= x"f7f1"; + when "10" & x"6f2" => DATA <= x"f800"; + when "10" & x"6f3" => DATA <= x"08e0"; + when "10" & x"6f4" => DATA <= x"07fb"; + when "10" & x"6f5" => DATA <= x"e400"; + when "10" & x"6f6" => DATA <= x"7090"; + when "10" & x"6f7" => DATA <= x"07f8"; + when "10" & x"6f8" => DATA <= x"0008"; + when "10" & x"6f9" => DATA <= x"067e"; + when "10" & x"6fa" => DATA <= x"d7e2"; + when "10" & x"6fb" => DATA <= x"a9f2"; + when "10" & x"6fc" => DATA <= x"ff07"; + when "10" & x"6fd" => DATA <= x"803b"; + when "10" & x"6fe" => DATA <= x"fd54"; + when "10" & x"6ff" => DATA <= x"d77f"; + when "10" & x"700" => DATA <= x"d007"; + when "10" & x"701" => DATA <= x"7faa"; + when "10" & x"702" => DATA <= x"abfe"; + when "10" & x"703" => DATA <= x"8017"; + when "10" & x"704" => DATA <= x"f47e"; + when "10" & x"705" => DATA <= x"2aaf"; + when "10" & x"706" => DATA <= x"fa00"; + when "10" & x"707" => DATA <= x"e3c6"; + when "10" & x"708" => DATA <= x"e870"; + when "10" & x"709" => DATA <= x"3fa0"; + when "10" & x"70a" => DATA <= x"0ffa"; + when "10" & x"70b" => DATA <= x"80a0"; + when "10" & x"70c" => DATA <= x"0403"; + when "10" & x"70d" => DATA <= x"0010"; + when "10" & x"70e" => DATA <= x"ff00"; + when "10" & x"70f" => DATA <= x"0fc0"; + when "10" & x"710" => DATA <= x"0c07"; + when "10" & x"711" => DATA <= x"fafc"; + when "10" & x"712" => DATA <= x"00ff"; + when "10" & x"713" => DATA <= x"003f"; + when "10" & x"714" => DATA <= x"0c15"; + when "10" & x"715" => DATA <= x"fefb"; + when "10" & x"716" => DATA <= x"003f"; + when "10" & x"717" => DATA <= x"c00f"; + when "10" & x"718" => DATA <= x"f77f"; + when "10" & x"719" => DATA <= x"7f80"; + when "10" & x"71a" => DATA <= x"1fe0"; + when "10" & x"71b" => DATA <= x"0eff"; + when "10" & x"71c" => DATA <= x"2590"; + when "10" & x"71d" => DATA <= x"ca0f"; + when "10" & x"71e" => DATA <= x"f003"; + when "10" & x"71f" => DATA <= x"fdbe"; + when "10" & x"720" => DATA <= x"ffe0"; + when "10" & x"721" => DATA <= x"07f8"; + when "10" & x"722" => DATA <= x"01fe"; + when "10" & x"723" => DATA <= x"f37f"; + when "10" & x"724" => DATA <= x"8828"; + when "10" & x"725" => DATA <= x"01fe"; + when "10" & x"726" => DATA <= x"007f"; + when "10" & x"727" => DATA <= x"8045"; + when "10" & x"728" => DATA <= x"35fe"; + when "10" & x"729" => DATA <= x"007f"; + when "10" & x"72a" => DATA <= x"801f"; + when "10" & x"72b" => DATA <= x"e115"; + when "10" & x"72c" => DATA <= x"abfc"; + when "10" & x"72d" => DATA <= x"fe00"; + when "10" & x"72e" => DATA <= x"7f80"; + when "10" & x"72f" => DATA <= x"1fe0"; + when "10" & x"730" => DATA <= x"04f5"; + when "10" & x"731" => DATA <= x"7f80"; + when "10" & x"732" => DATA <= x"1fe0"; + when "10" & x"733" => DATA <= x"0038"; + when "10" & x"734" => DATA <= x"01fc"; + when "10" & x"735" => DATA <= x"1343"; + when "10" & x"736" => DATA <= x"a81f"; + when "10" & x"737" => DATA <= x"f400"; + when "10" & x"738" => DATA <= x"c67f"; + when "10" & x"739" => DATA <= x"82e8"; + when "10" & x"73a" => DATA <= x"0c46"; + when "10" & x"73b" => DATA <= x"1800"; + when "10" & x"73c" => DATA <= x"0e47"; + when "10" & x"73d" => DATA <= x"e005"; + when "10" & x"73e" => DATA <= x"00e2"; + when "10" & x"73f" => DATA <= x"8004"; + when "10" & x"740" => DATA <= x"0030"; + when "10" & x"741" => DATA <= x"1001"; + when "10" & x"742" => DATA <= x"d4ff"; + when "10" & x"743" => DATA <= x"a001"; + when "10" & x"744" => DATA <= x"1700"; + when "10" & x"745" => DATA <= x"17cf"; + when "10" & x"746" => DATA <= x"e002"; + when "10" & x"747" => DATA <= x"028b"; + when "10" & x"748" => DATA <= x"8000"; + when "10" & x"749" => DATA <= x"6e00"; + when "10" & x"74a" => DATA <= x"a0d0"; + when "10" & x"74b" => DATA <= x"409e"; + when "10" & x"74c" => DATA <= x"2180"; + when "10" & x"74d" => DATA <= x"0f6b"; + when "10" & x"74e" => DATA <= x"9582"; + when "10" & x"74f" => DATA <= x"ec30"; + when "10" & x"750" => DATA <= x"e750"; + when "10" & x"751" => DATA <= x"8017"; + when "10" & x"752" => DATA <= x"8fea"; + when "10" & x"753" => DATA <= x"fc1f"; + when "10" & x"754" => DATA <= x"2fdf"; + when "10" & x"755" => DATA <= x"e006"; + when "10" & x"756" => DATA <= x"bbfc"; + when "10" & x"757" => DATA <= x"4aff"; + when "10" & x"758" => DATA <= x"101e"; + when "10" & x"759" => DATA <= x"1fe0"; + when "10" & x"75a" => DATA <= x"069b"; + when "10" & x"75b" => DATA <= x"fc80"; + when "10" & x"75c" => DATA <= x"ff00"; + when "10" & x"75d" => DATA <= x"0d1f"; + when "10" & x"75e" => DATA <= x"e000"; + when "10" & x"75f" => DATA <= x"3bfc"; + when "10" & x"760" => DATA <= x"02ff"; + when "10" & x"761" => DATA <= x"0002"; + when "10" & x"762" => DATA <= x"07ef"; + when "10" & x"763" => DATA <= x"0af3"; + when "10" & x"764" => DATA <= x"793c"; + when "10" & x"765" => DATA <= x"de0f"; + when "10" & x"766" => DATA <= x"f415"; + when "10" & x"767" => DATA <= x"03d4"; + when "10" & x"768" => DATA <= x"381d"; + when "10" & x"769" => DATA <= x"0e3f"; + when "10" & x"76a" => DATA <= x"7f80"; + when "10" & x"76b" => DATA <= x"0580"; + when "10" & x"76c" => DATA <= x"e900"; + when "10" & x"76d" => DATA <= x"4080"; + when "10" & x"76e" => DATA <= x"0a25"; + when "10" & x"76f" => DATA <= x"0e00"; + when "10" & x"770" => DATA <= x"57be"; + when "10" & x"771" => DATA <= x"c00f"; + when "10" & x"772" => DATA <= x"65a0"; + when "10" & x"773" => DATA <= x"3280"; + when "10" & x"774" => DATA <= x"1e4f"; + when "10" & x"775" => DATA <= x"a02b"; + when "10" & x"776" => DATA <= x"8abf"; + when "10" & x"777" => DATA <= x"df00"; + when "10" & x"778" => DATA <= x"0038"; + when "10" & x"779" => DATA <= x"7c00"; + when "10" & x"77a" => DATA <= x"f7af"; + when "10" & x"77b" => DATA <= x"f378"; + when "10" & x"77c" => DATA <= x"01fe"; + when "10" & x"77d" => DATA <= x"8700"; + when "10" & x"77e" => DATA <= x"06ab"; + when "10" & x"77f" => DATA <= x"fc06"; + when "10" & x"780" => DATA <= x"f87f"; + when "10" & x"781" => DATA <= x"820e"; + when "10" & x"782" => DATA <= x"0749"; + when "10" & x"783" => DATA <= x"703f"; + when "10" & x"784" => DATA <= x"83d0"; + when "10" & x"785" => DATA <= x"e100"; + when "10" & x"786" => DATA <= x"03e0"; + when "10" & x"787" => DATA <= x"40bc"; + when "10" & x"788" => DATA <= x"5f00"; + when "10" & x"789" => DATA <= x"0600"; + when "10" & x"78a" => DATA <= x"0011"; + when "10" & x"78b" => DATA <= x"fca4"; + when "10" & x"78c" => DATA <= x"030a"; + when "10" & x"78d" => DATA <= x"5000"; + when "10" & x"78e" => DATA <= x"6800"; + when "10" & x"78f" => DATA <= x"1026"; + when "10" & x"790" => DATA <= x"0381"; + when "10" & x"791" => DATA <= x"f200"; + when "10" & x"792" => DATA <= x"8100"; + when "10" & x"793" => DATA <= x"2006"; + when "10" & x"794" => DATA <= x"eb92"; + when "10" & x"795" => DATA <= x"0500"; + when "10" & x"796" => DATA <= x"3c10"; + when "10" & x"797" => DATA <= x"0241"; + when "10" & x"798" => DATA <= x"100c"; + when "10" & x"799" => DATA <= x"0006"; + when "10" & x"79a" => DATA <= x"00d0"; + when "10" & x"79b" => DATA <= x"002c"; + when "10" & x"79c" => DATA <= x"4608"; + when "10" & x"79d" => DATA <= x"0094"; + when "10" & x"79e" => DATA <= x"4420"; + when "10" & x"79f" => DATA <= x"7389"; + when "10" & x"7a0" => DATA <= x"44e2"; + when "10" & x"7a1" => DATA <= x"f140"; + when "10" & x"7a2" => DATA <= x"0004"; + when "10" & x"7a3" => DATA <= x"8103"; + when "10" & x"7a4" => DATA <= x"8809"; + when "10" & x"7a5" => DATA <= x"1048"; + when "10" & x"7a6" => DATA <= x"0011"; + when "10" & x"7a7" => DATA <= x"9204"; + when "10" & x"7a8" => DATA <= x"e200"; + when "10" & x"7a9" => DATA <= x"001e"; + when "10" & x"7aa" => DATA <= x"4000"; + when "10" & x"7ab" => DATA <= x"30c0"; + when "10" & x"7ac" => DATA <= x"5400"; + when "10" & x"7ad" => DATA <= x"08a8"; + when "10" & x"7ae" => DATA <= x"2302"; + when "10" & x"7af" => DATA <= x"48c0"; + when "10" & x"7b0" => DATA <= x"9068"; + when "10" & x"7b1" => DATA <= x"001c"; + when "10" & x"7b2" => DATA <= x"0600"; + when "10" & x"7b3" => DATA <= x"0089"; + when "10" & x"7b4" => DATA <= x"c061"; + when "10" & x"7b5" => DATA <= x"5e28"; + when "10" & x"7b6" => DATA <= x"9f8f"; + when "10" & x"7b7" => DATA <= x"37e3"; + when "10" & x"7b8" => DATA <= x"c5e8"; + when "10" & x"7b9" => DATA <= x"7daf"; + when "10" & x"7ba" => DATA <= x"8743"; + when "10" & x"7bb" => DATA <= x"e02e"; + when "10" & x"7bc" => DATA <= x"d775"; + when "10" & x"7bd" => DATA <= x"a080"; + when "10" & x"7be" => DATA <= x"607a"; + when "10" & x"7bf" => DATA <= x"c752"; + when "10" & x"7c0" => DATA <= x"385e"; + when "10" & x"7c1" => DATA <= x"f400"; + when "10" & x"7c2" => DATA <= x"fe7f"; + when "10" & x"7c3" => DATA <= x"83df"; + when "10" & x"7c4" => DATA <= x"ce77"; + when "10" & x"7c5" => DATA <= x"fd00"; + when "10" & x"7c6" => DATA <= x"0040"; + when "10" & x"7c7" => DATA <= x"680e"; + when "10" & x"7c8" => DATA <= x"df2f"; + when "10" & x"7c9" => DATA <= x"80c0"; + when "10" & x"7ca" => DATA <= x"0d06"; + when "10" & x"7cb" => DATA <= x"fd7b"; + when "10" & x"7cc" => DATA <= x"81e8"; + when "10" & x"7cd" => DATA <= x"01f9"; + when "10" & x"7ce" => DATA <= x"5ee0"; + when "10" & x"7cf" => DATA <= x"1e00"; + when "10" & x"7d0" => DATA <= x"2073"; + when "10" & x"7d1" => DATA <= x"8d0e"; + when "10" & x"7d2" => DATA <= x"70f0"; + when "10" & x"7d3" => DATA <= x"7287"; + when "10" & x"7d4" => DATA <= x"afbe"; + when "10" & x"7d5" => DATA <= x"bfe7"; + when "10" & x"7d6" => DATA <= x"fa8f"; + when "10" & x"7d7" => DATA <= x"a8ff"; + when "10" & x"7d8" => DATA <= x"805f"; + when "10" & x"7d9" => DATA <= x"e032"; + when "10" & x"7da" => DATA <= x"0984"; + when "10" & x"7db" => DATA <= x"0744"; + when "10" & x"7dc" => DATA <= x"0000"; + when "10" & x"7dd" => DATA <= x"1c80"; + when "10" & x"7de" => DATA <= x"2058"; + when "10" & x"7df" => DATA <= x"0807"; + when "10" & x"7e0" => DATA <= x"4181"; + when "10" & x"7e1" => DATA <= x"d55c"; + when "10" & x"7e2" => DATA <= x"15fe"; + when "10" & x"7e3" => DATA <= x"dd7f"; + when "10" & x"7e4" => DATA <= x"c8fb"; + when "10" & x"7e5" => DATA <= x"f0c6"; + when "10" & x"7e6" => DATA <= x"7c7e"; + when "10" & x"7e7" => DATA <= x"1888"; + when "10" & x"7e8" => DATA <= x"0f87"; + when "10" & x"7e9" => DATA <= x"e3f5"; + when "10" & x"7ea" => DATA <= x"3efd"; + when "10" & x"7eb" => DATA <= x"7a9f"; + when "10" & x"7ec" => DATA <= x"4f67"; + when "10" & x"7ed" => DATA <= x"93d1"; + when "10" & x"7ee" => DATA <= x"fc92"; + when "10" & x"7ef" => DATA <= x"0200"; + when "10" & x"7f0" => DATA <= x"b800"; + when "10" & x"7f1" => DATA <= x"00a3"; + when "10" & x"7f2" => DATA <= x"2480"; + when "10" & x"7f3" => DATA <= x"3fc0"; + when "10" & x"7f4" => DATA <= x"0424"; + when "10" & x"7f5" => DATA <= x"6180"; + when "10" & x"7f6" => DATA <= x"f048"; + when "10" & x"7f7" => DATA <= x"383f"; + when "10" & x"7f8" => DATA <= x"e800"; + when "10" & x"7f9" => DATA <= x"6067"; + when "10" & x"7fa" => DATA <= x"141e"; + when "10" & x"7fb" => DATA <= x"0dcf"; + when "10" & x"7fc" => DATA <= x"b023"; + when "10" & x"7fd" => DATA <= x"8c00"; + when "10" & x"7fe" => DATA <= x"02ac"; + when "10" & x"7ff" => DATA <= x"0700"; + when "10" & x"800" => DATA <= x"fc21"; + when "10" & x"801" => DATA <= x"4000"; + when "10" & x"802" => DATA <= x"e7f8"; + when "10" & x"803" => DATA <= x"0680"; + when "10" & x"804" => DATA <= x"0094"; + when "10" & x"805" => DATA <= x"0050"; + when "10" & x"806" => DATA <= x"7fa1"; + when "10" & x"807" => DATA <= x"9001"; + when "10" & x"808" => DATA <= x"0507"; + when "10" & x"809" => DATA <= x"003f"; + when "10" & x"80a" => DATA <= x"c007"; + when "10" & x"80b" => DATA <= x"f280"; + when "10" & x"80c" => DATA <= x"8000"; + when "10" & x"80d" => DATA <= x"8000"; + when "10" & x"80e" => DATA <= x"35c6"; + when "10" & x"80f" => DATA <= x"00f0"; + when "10" & x"810" => DATA <= x"39c0"; + when "10" & x"811" => DATA <= x"0007"; + when "10" & x"812" => DATA <= x"003f"; + when "10" & x"813" => DATA <= x"c80c"; + when "10" & x"814" => DATA <= x"6703"; + when "10" & x"815" => DATA <= x"89c8"; + when "10" & x"816" => DATA <= x"cc00"; + when "10" & x"817" => DATA <= x"1fda"; + when "10" & x"818" => DATA <= x"93fe"; + when "10" & x"819" => DATA <= x"2400"; + when "10" & x"81a" => DATA <= x"3fcf"; + when "10" & x"81b" => DATA <= x"f3fe"; + when "10" & x"81c" => DATA <= x"fc00"; + when "10" & x"81d" => DATA <= x"3fe8"; + when "10" & x"81e" => DATA <= x"0106"; + when "10" & x"81f" => DATA <= x"8700"; + when "10" & x"820" => DATA <= x"2000"; + when "10" & x"821" => DATA <= x"00ba"; + when "10" & x"822" => DATA <= x"0040"; + when "10" & x"823" => DATA <= x"2601"; + when "10" & x"824" => DATA <= x"0297"; + when "10" & x"825" => DATA <= x"f006"; + when "10" & x"826" => DATA <= x"8000"; + when "10" & x"827" => DATA <= x"6fda"; + when "10" & x"828" => DATA <= x"027f"; + when "10" & x"829" => DATA <= x"c803"; + when "10" & x"82a" => DATA <= x"fe80"; + when "10" & x"82b" => DATA <= x"1ff2"; + when "10" & x"82c" => DATA <= x"00ff"; + when "10" & x"82d" => DATA <= x"a017"; + when "10" & x"82e" => DATA <= x"fd78"; + when "10" & x"82f" => DATA <= x"1e11"; + when "10" & x"830" => DATA <= x"0ffa"; + when "10" & x"831" => DATA <= x"00af"; + when "10" & x"832" => DATA <= x"f3f9"; + when "10" & x"833" => DATA <= x"584a"; + when "10" & x"834" => DATA <= x"ff00"; + when "10" & x"835" => DATA <= x"081f"; + when "10" & x"836" => DATA <= x"f5fc"; + when "10" & x"837" => DATA <= x"004f"; + when "10" & x"838" => DATA <= x"bfc0"; + when "10" & x"839" => DATA <= x"0f37"; + when "10" & x"83a" => DATA <= x"f804"; + when "10" & x"83b" => DATA <= x"febe"; + when "10" & x"83c" => DATA <= x"aff1"; + when "10" & x"83d" => DATA <= x"c009"; + when "10" & x"83e" => DATA <= x"fe00"; + when "10" & x"83f" => DATA <= x"013f"; + when "10" & x"840" => DATA <= x"12a5"; + when "10" & x"841" => DATA <= x"f020"; + when "10" & x"842" => DATA <= x"01ff"; + when "10" & x"843" => DATA <= x"400f"; + when "10" & x"844" => DATA <= x"f571"; + when "10" & x"845" => DATA <= x"f000"; + when "10" & x"846" => DATA <= x"20a0"; + when "10" & x"847" => DATA <= x"05c3"; + when "10" & x"848" => DATA <= x"e402"; + when "10" & x"849" => DATA <= x"c700"; + when "10" & x"84a" => DATA <= x"011e"; + when "10" & x"84b" => DATA <= x"000a"; + when "10" & x"84c" => DATA <= x"ff70"; + when "10" & x"84d" => DATA <= x"2140"; + when "10" & x"84e" => DATA <= x"4007"; + when "10" & x"84f" => DATA <= x"f801"; + when "10" & x"850" => DATA <= x"f6bf"; + when "10" & x"851" => DATA <= x"7780"; + when "10" & x"852" => DATA <= x"1f40"; + when "10" & x"853" => DATA <= x"07f8"; + when "10" & x"854" => DATA <= x"01fa"; + when "10" & x"855" => DATA <= x"257f"; + when "10" & x"856" => DATA <= x"be9f"; + when "10" & x"857" => DATA <= x"ee03"; + when "10" & x"858" => DATA <= x"f800"; + when "10" & x"859" => DATA <= x"7ef1"; + when "10" & x"85a" => DATA <= x"7f87"; + when "10" & x"85b" => DATA <= x"cfe8"; + when "10" & x"85c" => DATA <= x"7e00"; + when "10" & x"85d" => DATA <= x"0e93"; + when "10" & x"85e" => DATA <= x"df8e"; + when "10" & x"85f" => DATA <= x"6707"; + when "10" & x"860" => DATA <= x"0007"; + when "10" & x"861" => DATA <= x"2c02"; + when "10" & x"862" => DATA <= x"8200"; + when "10" & x"863" => DATA <= x"0f87"; + when "10" & x"864" => DATA <= x"8006"; + when "10" & x"865" => DATA <= x"802b"; + when "10" & x"866" => DATA <= x"f800"; + when "10" & x"867" => DATA <= x"dc20"; + when "10" & x"868" => DATA <= x"2728"; + when "10" & x"869" => DATA <= x"01fe"; + when "10" & x"86a" => DATA <= x"fe00"; + when "10" & x"86b" => DATA <= x"3cde"; + when "10" & x"86c" => DATA <= x"2020"; + when "10" & x"86d" => DATA <= x"0311"; + when "10" & x"86e" => DATA <= x"8e07"; + when "10" & x"86f" => DATA <= x"000f"; + when "10" & x"870" => DATA <= x"c394"; + when "10" & x"871" => DATA <= x"0001"; + when "10" & x"872" => DATA <= x"3fd2"; + when "10" & x"873" => DATA <= x"0107"; + when "10" & x"874" => DATA <= x"8005"; + when "10" & x"875" => DATA <= x"1400"; + when "10" & x"876" => DATA <= x"40a0"; + when "10" & x"877" => DATA <= x"0010"; + when "10" & x"878" => DATA <= x"0007"; + when "10" & x"879" => DATA <= x"6002"; + when "10" & x"87a" => DATA <= x"0030"; + when "10" & x"87b" => DATA <= x"0020"; + when "10" & x"87c" => DATA <= x"0078"; + when "10" & x"87d" => DATA <= x"5002"; + when "10" & x"87e" => DATA <= x"4e40"; + when "10" & x"87f" => DATA <= x"1ce8"; + when "10" & x"880" => DATA <= x"2400"; + when "10" & x"881" => DATA <= x"0801"; + when "10" & x"882" => DATA <= x"4020"; + when "10" & x"883" => DATA <= x"2758"; + when "10" & x"884" => DATA <= x"0004"; + when "10" & x"885" => DATA <= x"4000"; + when "10" & x"886" => DATA <= x"1028"; + when "10" & x"887" => DATA <= x"008d"; + when "10" & x"888" => DATA <= x"4000"; + when "10" & x"889" => DATA <= x"1900"; + when "10" & x"88a" => DATA <= x"7ad0"; + when "10" & x"88b" => DATA <= x"02c2"; + when "10" & x"88c" => DATA <= x"b010"; + when "10" & x"88d" => DATA <= x"0887"; + when "10" & x"88e" => DATA <= x"7001"; + when "10" & x"88f" => DATA <= x"e002"; + when "10" & x"890" => DATA <= x"9000"; + when "10" & x"891" => DATA <= x"0998"; + when "10" & x"892" => DATA <= x"00fe"; + when "10" & x"893" => DATA <= x"7ccf"; + when "10" & x"894" => DATA <= x"f9fc"; + when "10" & x"895" => DATA <= x"f150"; + when "10" & x"896" => DATA <= x"7c06"; + when "10" & x"897" => DATA <= x"4341"; + when "10" & x"898" => DATA <= x"80c7"; + when "10" & x"899" => DATA <= x"e079"; + when "10" & x"89a" => DATA <= x"000c"; + when "10" & x"89b" => DATA <= x"1f9e"; + when "10" & x"89c" => DATA <= x"0720"; + when "10" & x"89d" => DATA <= x"5020"; + when "10" & x"89e" => DATA <= x"0006"; + when "10" & x"89f" => DATA <= x"7082"; + when "10" & x"8a0" => DATA <= x"0072"; + when "10" & x"8a1" => DATA <= x"0080"; + when "10" & x"8a2" => DATA <= x"0688"; + when "10" & x"8a3" => DATA <= x"2c1d"; + when "10" & x"8a4" => DATA <= x"7ef7"; + when "10" & x"8a5" => DATA <= x"7803"; + when "10" & x"8a6" => DATA <= x"2b12"; + when "10" & x"8a7" => DATA <= x"8017"; + when "10" & x"8a8" => DATA <= x"d5fe"; + when "10" & x"8a9" => DATA <= x"2423"; + when "10" & x"8aa" => DATA <= x"31a8"; + when "10" & x"8ab" => DATA <= x"016d"; + when "10" & x"8ac" => DATA <= x"5fe0"; + when "10" & x"8ad" => DATA <= x"2001"; + when "10" & x"8ae" => DATA <= x"9a80"; + when "10" & x"8af" => DATA <= x"1ed5"; + when "10" & x"8b0" => DATA <= x"fe00"; + when "10" & x"8b1" => DATA <= x"5f70"; + when "10" & x"8b2" => DATA <= x"03d9"; + when "10" & x"8b3" => DATA <= x"febf"; + when "10" & x"8b4" => DATA <= x"0020"; + when "10" & x"8b5" => DATA <= x"d08a"; + when "10" & x"8b6" => DATA <= x"0003"; + when "10" & x"8b7" => DATA <= x"b9de"; + when "10" & x"8b8" => DATA <= x"3308"; + when "10" & x"8b9" => DATA <= x"0480"; + when "10" & x"8ba" => DATA <= x"9c00"; + when "10" & x"8bb" => DATA <= x"0770"; + when "10" & x"8bc" => DATA <= x"5003"; + when "10" & x"8bd" => DATA <= x"9a80"; + when "10" & x"8be" => DATA <= x"0404"; + when "10" & x"8bf" => DATA <= x"0140"; + when "10" & x"8c0" => DATA <= x"2012"; + when "10" & x"8c1" => DATA <= x"6801"; + when "10" & x"8c2" => DATA <= x"1298"; + when "10" & x"8c3" => DATA <= x"0004"; + when "10" & x"8c4" => DATA <= x"7a05"; + when "10" & x"8c5" => DATA <= x"fe77"; + when "10" & x"8c6" => DATA <= x"42bd"; + when "10" & x"8c7" => DATA <= x"c060"; + when "10" & x"8c8" => DATA <= x"0240"; + when "10" & x"8c9" => DATA <= x"201e"; + when "10" & x"8ca" => DATA <= x"4231"; + when "10" & x"8cb" => DATA <= x"bfce"; + when "10" & x"8cc" => DATA <= x"0000"; + when "10" & x"8cd" => DATA <= x"c380"; + when "10" & x"8ce" => DATA <= x"0046"; + when "10" & x"8cf" => DATA <= x"603f"; + when "10" & x"8d0" => DATA <= x"db80"; + when "10" & x"8d1" => DATA <= x"0402"; + when "10" & x"8d2" => DATA <= x"4dbe"; + when "10" & x"8d3" => DATA <= x"8c44"; + when "10" & x"8d4" => DATA <= x"2244"; + when "10" & x"8d5" => DATA <= x"2807"; + when "10" & x"8d6" => DATA <= x"9b0e"; + when "10" & x"8d7" => DATA <= x"bc07"; + when "10" & x"8d8" => DATA <= x"03f4"; + when "10" & x"8d9" => DATA <= x"181d"; + when "10" & x"8da" => DATA <= x"40b0"; + when "10" & x"8db" => DATA <= x"0198"; + when "10" & x"8dc" => DATA <= x"1402"; + when "10" & x"8dd" => DATA <= x"407b"; + when "10" & x"8de" => DATA <= x"91f0"; + when "10" & x"8df" => DATA <= x"f0ef"; + when "10" & x"8e0" => DATA <= x"87eb"; + when "10" & x"8e1" => DATA <= x"f1fe"; + when "10" & x"8e2" => DATA <= x"c723"; + when "10" & x"8e3" => DATA <= x"81c0"; + when "10" & x"8e4" => DATA <= x"607e"; + when "10" & x"8e5" => DATA <= x"0300"; + when "10" & x"8e6" => DATA <= x"a02b"; + when "10" & x"8e7" => DATA <= x"fa40"; + when "10" & x"8e8" => DATA <= x"11d5"; + when "10" & x"8e9" => DATA <= x"1e81"; + when "10" & x"8ea" => DATA <= x"a80a"; + when "10" & x"8eb" => DATA <= x"00fd"; + when "10" & x"8ec" => DATA <= x"f7fd"; + when "10" & x"8ed" => DATA <= x"fb85"; + when "10" & x"8ee" => DATA <= x"c032"; + when "10" & x"8ef" => DATA <= x"e340"; + when "10" & x"8f0" => DATA <= x"2000"; + when "10" & x"8f1" => DATA <= x"0d0e"; + when "10" & x"8f2" => DATA <= x"0783"; + when "10" & x"8f3" => DATA <= x"9c00"; + when "10" & x"8f4" => DATA <= x"1cde"; + when "10" & x"8f5" => DATA <= x"f000"; + when "10" & x"8f6" => DATA <= x"0ddf"; + when "10" & x"8f7" => DATA <= x"47d4"; + when "10" & x"8f8" => DATA <= x"3c3e"; + when "10" & x"8f9" => DATA <= x"a001"; + when "10" & x"8fa" => DATA <= x"f006"; + when "10" & x"8fb" => DATA <= x"4007"; + when "10" & x"8fc" => DATA <= x"880a"; + when "10" & x"8fd" => DATA <= x"0040"; + when "10" & x"8fe" => DATA <= x"4803"; + when "10" & x"8ff" => DATA <= x"fde0"; + when "10" & x"900" => DATA <= x"c0ae"; + when "10" & x"901" => DATA <= x"0525"; + when "10" & x"902" => DATA <= x"7257"; + when "10" & x"903" => DATA <= x"3a74"; + when "10" & x"904" => DATA <= x"3e5f"; + when "10" & x"905" => DATA <= x"2f17"; + when "10" & x"906" => DATA <= x"c3e9"; + when "10" & x"907" => DATA <= x"f0eb"; + when "10" & x"908" => DATA <= x"b240"; + when "10" & x"909" => DATA <= x"2a00"; + when "10" & x"90a" => DATA <= x"00fa"; + when "10" & x"90b" => DATA <= x"72b8"; + when "10" & x"90c" => DATA <= x"1f8f"; + when "10" & x"90d" => DATA <= x"77a3"; + when "10" & x"90e" => DATA <= x"d5e8"; + when "10" & x"90f" => DATA <= x"b640"; + when "10" & x"910" => DATA <= x"8041"; + when "10" & x"911" => DATA <= x"a150"; + when "10" & x"912" => DATA <= x"2820"; + when "10" & x"913" => DATA <= x"0081"; + when "10" & x"914" => DATA <= x"420a"; + when "10" & x"915" => DATA <= x"0005"; + when "10" & x"916" => DATA <= x"4e00"; + when "10" & x"917" => DATA <= x"0108"; + when "10" & x"918" => DATA <= x"8920"; + when "10" & x"919" => DATA <= x"0380"; + when "10" & x"91a" => DATA <= x"0426"; + when "10" & x"91b" => DATA <= x"8804"; + when "10" & x"91c" => DATA <= x"0415"; + when "10" & x"91d" => DATA <= x"6002"; + when "10" & x"91e" => DATA <= x"bd00"; + when "10" & x"91f" => DATA <= x"1802"; + when "10" & x"920" => DATA <= x"0002"; + when "10" & x"921" => DATA <= x"e240"; + when "10" & x"922" => DATA <= x"d140"; + when "10" & x"923" => DATA <= x"00ca"; + when "10" & x"924" => DATA <= x"004a"; + when "10" & x"925" => DATA <= x"0107"; + when "10" & x"926" => DATA <= x"cc0a"; + when "10" & x"927" => DATA <= x"0060"; + when "10" & x"928" => DATA <= x"2016"; + when "10" & x"929" => DATA <= x"a006"; + when "10" & x"92a" => DATA <= x"6001"; + when "10" & x"92b" => DATA <= x"2010"; + when "10" & x"92c" => DATA <= x"a000"; + when "10" & x"92d" => DATA <= x"9001"; + when "10" & x"92e" => DATA <= x"bfc0"; + when "10" & x"92f" => DATA <= x"0c03"; + when "10" & x"930" => DATA <= x"0300"; + when "10" & x"931" => DATA <= x"0038"; + when "10" & x"932" => DATA <= x"0051"; + when "10" & x"933" => DATA <= x"0190"; + when "10" & x"934" => DATA <= x"88ff"; + when "10" & x"935" => DATA <= x"0004"; + when "10" & x"936" => DATA <= x"7800"; + when "10" & x"937" => DATA <= x"02f0"; + when "10" & x"938" => DATA <= x"6d00"; + when "10" & x"939" => DATA <= x"0ae0"; + when "10" & x"93a" => DATA <= x"0a80"; + when "10" & x"93b" => DATA <= x"0018"; + when "10" & x"93c" => DATA <= x"4e02"; + when "10" & x"93d" => DATA <= x"05e8"; + when "10" & x"93e" => DATA <= x"0008"; + when "10" & x"93f" => DATA <= x"0040"; + when "10" & x"940" => DATA <= x"29c7"; + when "10" & x"941" => DATA <= x"2134"; + when "10" & x"942" => DATA <= x"7700"; + when "10" & x"943" => DATA <= x"220b"; + when "10" & x"944" => DATA <= x"a3f0"; + when "10" & x"945" => DATA <= x"0958"; + when "10" & x"946" => DATA <= x"0011"; + when "10" & x"947" => DATA <= x"a030"; + when "10" & x"948" => DATA <= x"1101"; + when "10" & x"949" => DATA <= x"8200"; + when "10" & x"94a" => DATA <= x"0870"; + when "10" & x"94b" => DATA <= x"075e"; + when "10" & x"94c" => DATA <= x"bf45"; + when "10" & x"94d" => DATA <= x"0240"; + when "10" & x"94e" => DATA <= x"20a1"; + when "10" & x"94f" => DATA <= x"ccc0"; + when "10" & x"950" => DATA <= x"64bb"; + when "10" & x"951" => DATA <= x"cc34"; + when "10" & x"952" => DATA <= x"0010"; + when "10" & x"953" => DATA <= x"2000"; + when "10" & x"954" => DATA <= x"02e0"; + when "10" & x"955" => DATA <= x"1033"; + when "10" & x"956" => DATA <= x"e190"; + when "10" & x"957" => DATA <= x"a80f"; + when "10" & x"958" => DATA <= x"4800"; + when "10" & x"959" => DATA <= x"5002"; + when "10" & x"95a" => DATA <= x"c003"; + when "10" & x"95b" => DATA <= x"b808"; + when "10" & x"95c" => DATA <= x"0100"; + when "10" & x"95d" => DATA <= x"037c"; + when "10" & x"95e" => DATA <= x"0080"; + when "10" & x"95f" => DATA <= x"00a0"; + when "10" & x"960" => DATA <= x"530f"; + when "10" & x"961" => DATA <= x"c002"; + when "10" & x"962" => DATA <= x"fb80"; + when "10" & x"963" => DATA <= x"17c9"; + when "10" & x"964" => DATA <= x"a578"; + when "10" & x"965" => DATA <= x"017e"; + when "10" & x"966" => DATA <= x"3038"; + when "10" & x"967" => DATA <= x"021b"; + when "10" & x"968" => DATA <= x"0fd7"; + when "10" & x"969" => DATA <= x"f00c"; + when "10" & x"96a" => DATA <= x"3c80"; + when "10" & x"96b" => DATA <= x"a000"; + when "10" & x"96c" => DATA <= x"081d"; + when "10" & x"96d" => DATA <= x"6090"; + when "10" & x"96e" => DATA <= x"0800"; + when "10" & x"96f" => DATA <= x"6400"; + when "10" & x"970" => DATA <= x"220f"; + when "10" & x"971" => DATA <= x"d000"; + when "10" & x"972" => DATA <= x"1018"; + when "10" & x"973" => DATA <= x"0404"; + when "10" & x"974" => DATA <= x"063e"; + when "10" & x"975" => DATA <= x"2800"; + when "10" & x"976" => DATA <= x"c000"; + when "10" & x"977" => DATA <= x"7850"; + when "10" & x"978" => DATA <= x"03fc"; + when "10" & x"979" => DATA <= x"1c10"; + when "10" & x"97a" => DATA <= x"0250"; + when "10" & x"97b" => DATA <= x"0260"; + when "10" & x"97c" => DATA <= x"61dc"; + when "10" & x"97d" => DATA <= x"6fc7"; + when "10" & x"97e" => DATA <= x"8b82"; + when "10" & x"97f" => DATA <= x"8018"; + when "10" & x"980" => DATA <= x"1440"; + when "10" & x"981" => DATA <= x"0804"; + when "10" & x"982" => DATA <= x"bbc0"; + when "10" & x"983" => DATA <= x"0200"; + when "10" & x"984" => DATA <= x"0801"; + when "10" & x"985" => DATA <= x"0000"; + when "10" & x"986" => DATA <= x"4005"; + when "10" & x"987" => DATA <= x"c03c"; + when "10" & x"988" => DATA <= x"0088"; + when "10" & x"989" => DATA <= x"403e"; + when "10" & x"98a" => DATA <= x"000c"; + when "10" & x"98b" => DATA <= x"0407"; + when "10" & x"98c" => DATA <= x"241b"; + when "10" & x"98d" => DATA <= x"9fe3"; + when "10" & x"98e" => DATA <= x"2020"; + when "10" & x"98f" => DATA <= x"0002"; + when "10" & x"990" => DATA <= x"2108"; + when "10" & x"991" => DATA <= x"001f"; + when "10" & x"992" => DATA <= x"e0ee"; + when "10" & x"993" => DATA <= x"0023"; + when "10" & x"994" => DATA <= x"9201"; + when "10" & x"995" => DATA <= x"0ff0"; + when "10" & x"996" => DATA <= x"0024"; + when "10" & x"997" => DATA <= x"07c1"; + when "10" & x"998" => DATA <= x"00a0"; + when "10" & x"999" => DATA <= x"0a82"; + when "10" & x"99a" => DATA <= x"8014"; + when "10" & x"99b" => DATA <= x"1400"; + when "10" & x"99c" => DATA <= x"c000"; + when "10" & x"99d" => DATA <= x"0044"; + when "10" & x"99e" => DATA <= x"c042"; + when "10" & x"99f" => DATA <= x"1d00"; + when "10" & x"9a0" => DATA <= x"3fe4"; + when "10" & x"9a1" => DATA <= x"0025"; + when "10" & x"9a2" => DATA <= x"200c"; + when "10" & x"9a3" => DATA <= x"0240"; + when "10" & x"9a4" => DATA <= x"2000"; + when "10" & x"9a5" => DATA <= x"0ee0"; + when "10" & x"9a6" => DATA <= x"01a5"; + when "10" & x"9a7" => DATA <= x"0010"; + when "10" & x"9a8" => DATA <= x"827c"; + when "10" & x"9a9" => DATA <= x"007d"; + when "10" & x"9aa" => DATA <= x"580c"; + when "10" & x"9ab" => DATA <= x"000d"; + when "10" & x"9ac" => DATA <= x"5125"; + when "10" & x"9ad" => DATA <= x"0032"; + when "10" & x"9ae" => DATA <= x"4008"; + when "10" & x"9af" => DATA <= x"0623"; + when "10" & x"9b0" => DATA <= x"7f80"; + when "10" & x"9b1" => DATA <= x"1c4e"; + when "10" & x"9b2" => DATA <= x"061b"; + when "10" & x"9b3" => DATA <= x"f501"; + when "10" & x"9b4" => DATA <= x"c01c"; + when "10" & x"9b5" => DATA <= x"3eff"; + when "10" & x"9b6" => DATA <= x"7cd7"; + when "10" & x"9b7" => DATA <= x"c578"; + when "10" & x"9b8" => DATA <= x"3e1e"; + when "10" & x"9b9" => DATA <= x"0231"; + when "10" & x"9ba" => DATA <= x"ef0e"; + when "10" & x"9bb" => DATA <= x"80c5"; + when "10" & x"9bc" => DATA <= x"609f"; + when "10" & x"9bd" => DATA <= x"00a0"; + when "10" & x"9be" => DATA <= x"0024"; + when "10" & x"9bf" => DATA <= x"8001"; + when "10" & x"9c0" => DATA <= x"3c02"; + when "10" & x"9c1" => DATA <= x"803c"; + when "10" & x"9c2" => DATA <= x"1c0e"; + when "10" & x"9c3" => DATA <= x"0e27"; + when "10" & x"9c4" => DATA <= x"0780"; + when "10" & x"9c5" => DATA <= x"406a"; + when "10" & x"9c6" => DATA <= x"0e05"; + when "10" & x"9c7" => DATA <= x"7805"; + when "10" & x"9c8" => DATA <= x"0051"; + when "10" & x"9c9" => DATA <= x"4500"; + when "10" & x"9ca" => DATA <= x"0a94"; + when "10" & x"9cb" => DATA <= x"1c00"; + when "10" & x"9cc" => DATA <= x"42a0"; + when "10" & x"9cd" => DATA <= x"0204"; + when "10" & x"9ce" => DATA <= x"8004"; + when "10" & x"9cf" => DATA <= x"2800"; + when "10" & x"9d0" => DATA <= x"2140"; + when "10" & x"9d1" => DATA <= x"0040"; + when "10" & x"9d2" => DATA <= x"6012"; + when "10" & x"9d3" => DATA <= x"8300"; + when "10" & x"9d4" => DATA <= x"9419"; + when "10" & x"9d5" => DATA <= x"e000"; + when "10" & x"9d6" => DATA <= x"0b01"; + when "10" & x"9d7" => DATA <= x"0180"; + when "10" & x"9d8" => DATA <= x"6800"; + when "10" & x"9d9" => DATA <= x"83c0"; + when "10" & x"9da" => DATA <= x"010e"; + when "10" & x"9db" => DATA <= x"0000"; + when "10" & x"9dc" => DATA <= x"e801"; + when "10" & x"9dd" => DATA <= x"8000"; + when "10" & x"9de" => DATA <= x"02e0"; + when "10" & x"9df" => DATA <= x"0040"; + when "10" & x"9e0" => DATA <= x"0103"; + when "10" & x"9e1" => DATA <= x"a00c"; + when "10" & x"9e2" => DATA <= x"0005"; + when "10" & x"9e3" => DATA <= x"71bf"; + when "10" & x"9e4" => DATA <= x"dde8"; + when "10" & x"9e5" => DATA <= x"f7fa"; + when "10" & x"9e6" => DATA <= x"7dfe"; + when "10" & x"9e7" => DATA <= x"ef37"; + when "10" & x"9e8" => DATA <= x"bbdf"; + when "10" & x"9e9" => DATA <= x"e0f3"; + when "10" & x"9ea" => DATA <= x"7950"; + when "10" & x"9eb" => DATA <= x"6ef8"; + when "10" & x"9ec" => DATA <= x"7c8c"; + when "10" & x"9ed" => DATA <= x"9f13"; + when "10" & x"9ee" => DATA <= x"f340"; + when "10" & x"9ef" => DATA <= x"7586"; + when "10" & x"9f0" => DATA <= x"c7a0"; + when "10" & x"9f1" => DATA <= x"303b"; + when "10" & x"9f2" => DATA <= x"edfc"; + when "10" & x"9f3" => DATA <= x"ff07"; + when "10" & x"9f4" => DATA <= x"8058"; + when "10" & x"9f5" => DATA <= x"15fc"; + when "10" & x"9f6" => DATA <= x"9200"; + when "10" & x"9f7" => DATA <= x"80d0"; + when "10" & x"9f8" => DATA <= x"08e4"; + when "10" & x"9f9" => DATA <= x"7a1d"; + when "10" & x"9fa" => DATA <= x"0007"; + when "10" & x"9fb" => DATA <= x"0030"; + when "10" & x"9fc" => DATA <= x"377c"; + when "10" & x"9fd" => DATA <= x"00f0"; + when "10" & x"9fe" => DATA <= x"bf70"; + when "10" & x"9ff" => DATA <= x"0146"; + when "10" & x"a00" => DATA <= x"dc43"; + when "10" & x"a01" => DATA <= x"943c"; + when "10" & x"a02" => DATA <= x"1c0f"; + when "10" & x"a03" => DATA <= x"70e3"; + when "10" & x"a04" => DATA <= x"bebf"; + when "10" & x"a05" => DATA <= x"f7bc"; + when "10" & x"a06" => DATA <= x"7d47"; + when "10" & x"a07" => DATA <= x"fa7c"; + when "10" & x"a08" => DATA <= x"1f7f"; + when "10" & x"a09" => DATA <= x"f00a"; + when "10" & x"a0a" => DATA <= x"e280"; + when "10" & x"a0b" => DATA <= x"4c00"; + when "10" & x"a0c" => DATA <= x"3e00"; + when "10" & x"a0d" => DATA <= x"66d0"; + when "10" & x"a0e" => DATA <= x"0570"; + when "10" & x"a0f" => DATA <= x"301c"; + when "10" & x"a10" => DATA <= x"0804"; + when "10" & x"a11" => DATA <= x"ea01"; + when "10" & x"a12" => DATA <= x"c123"; + when "10" & x"a13" => DATA <= x"e1b0"; + when "10" & x"a14" => DATA <= x"fb6d"; + when "10" & x"a15" => DATA <= x"be00"; + when "10" & x"a16" => DATA <= x"4000"; + when "10" & x"a17" => DATA <= x"008d"; + when "10" & x"a18" => DATA <= x"4edc"; + when "10" & x"a19" => DATA <= x"7fbd"; + when "10" & x"a1a" => DATA <= x"3bf1"; + when "10" & x"a1b" => DATA <= x"faf4"; + when "10" & x"a1c" => DATA <= x"7a81"; + when "10" & x"a1d" => DATA <= x"000f"; + when "10" & x"a1e" => DATA <= x"f017"; + when "10" & x"a1f" => DATA <= x"0180"; + when "10" & x"a20" => DATA <= x"0040"; + when "10" & x"a21" => DATA <= x"073b"; + when "10" & x"a22" => DATA <= x"c2c0"; + when "10" & x"a23" => DATA <= x"1fa0"; + when "10" & x"a24" => DATA <= x"5a04"; + when "10" & x"a25" => DATA <= x"0101"; + when "10" & x"a26" => DATA <= x"00c0"; + when "10" & x"a27" => DATA <= x"01b9"; + when "10" & x"a28" => DATA <= x"02c0"; + when "10" & x"a29" => DATA <= x"17e1"; + when "10" & x"a2a" => DATA <= x"ba08"; + when "10" & x"a2b" => DATA <= x"0270"; + when "10" & x"a2c" => DATA <= x"013d"; + when "10" & x"a2d" => DATA <= x"0160"; + when "10" & x"a2e" => DATA <= x"0ee1"; + when "10" & x"a2f" => DATA <= x"7d10"; + when "10" & x"a30" => DATA <= x"0404"; + when "10" & x"a31" => DATA <= x"0300"; + when "10" & x"a32" => DATA <= x"02fc"; + when "10" & x"a33" => DATA <= x"0022"; + when "10" & x"a34" => DATA <= x"0008"; + when "10" & x"a35" => DATA <= x"3801"; + when "10" & x"a36" => DATA <= x"b8da"; + when "10" & x"a37" => DATA <= x"2110"; + when "10" & x"a38" => DATA <= x"045c"; + when "10" & x"a39" => DATA <= x"007d"; + when "10" & x"a3a" => DATA <= x"f003"; + when "10" & x"a3b" => DATA <= x"d892"; + when "10" & x"a3c" => DATA <= x"8010"; + when "10" & x"a3d" => DATA <= x"0004"; + when "10" & x"a3e" => DATA <= x"0001"; + when "10" & x"a3f" => DATA <= x"efc0"; + when "10" & x"a40" => DATA <= x"2000"; + when "10" & x"a41" => DATA <= x"0d00"; + when "10" & x"a42" => DATA <= x"3d5a"; + when "10" & x"a43" => DATA <= x"1400"; + when "10" & x"a44" => DATA <= x"11e0"; + when "10" & x"a45" => DATA <= x"07f8"; + when "10" & x"a46" => DATA <= x"1a80"; + when "10" & x"a47" => DATA <= x"8020"; + when "10" & x"a48" => DATA <= x"0010"; + when "10" & x"a49" => DATA <= x"0136"; + when "10" & x"a4a" => DATA <= x"e0b0"; + when "10" & x"a4b" => DATA <= x"07d8"; + when "10" & x"a4c" => DATA <= x"2682"; + when "10" & x"a4d" => DATA <= x"0080"; + when "10" & x"a4e" => DATA <= x"8020"; + when "10" & x"a4f" => DATA <= x"005e"; + when "10" & x"a50" => DATA <= x"c0b0"; + when "10" & x"a51" => DATA <= x"07b8"; + when "10" & x"a52" => DATA <= x"5a84"; + when "10" & x"a53" => DATA <= x"1d01"; + when "10" & x"a54" => DATA <= x"000a"; + when "10" & x"a55" => DATA <= x"a002"; + when "10" & x"a56" => DATA <= x"0701"; + when "10" & x"a57" => DATA <= x"0000"; + when "10" & x"a58" => DATA <= x"2000"; + when "10" & x"a59" => DATA <= x"8060"; + when "10" & x"a5a" => DATA <= x"07c0"; + when "10" & x"a5b" => DATA <= x"0ff1"; + when "10" & x"a5c" => DATA <= x"cd80"; + when "10" & x"a5d" => DATA <= x"3fc0"; + when "10" & x"a5e" => DATA <= x"4007"; + when "10" & x"a5f" => DATA <= x"09e4"; + when "10" & x"a60" => DATA <= x"5143"; + when "10" & x"a61" => DATA <= x"0732"; + when "10" & x"a62" => DATA <= x"61c0"; + when "10" & x"a63" => DATA <= x"e280"; + when "10" & x"a64" => DATA <= x"380c"; + when "10" & x"a65" => DATA <= x"0e0f"; + when "10" & x"a66" => DATA <= x"0e00"; + when "10" & x"a67" => DATA <= x"7ff0"; + when "10" & x"a68" => DATA <= x"200c"; + when "10" & x"a69" => DATA <= x"0802"; + when "10" & x"a6a" => DATA <= x"0025"; + when "10" & x"a6b" => DATA <= x"c814"; + when "10" & x"a6c" => DATA <= x"0040"; + when "10" & x"a6d" => DATA <= x"e005"; + when "10" & x"a6e" => DATA <= x"d86e"; + when "10" & x"a6f" => DATA <= x"8200"; + when "10" & x"a70" => DATA <= x"808a"; + when "10" & x"a71" => DATA <= x"0027"; + when "10" & x"a72" => DATA <= x"a02c"; + when "10" & x"a73" => DATA <= x"01dc"; + when "10" & x"a74" => DATA <= x"2fa2"; + when "10" & x"a75" => DATA <= x"0080"; + when "10" & x"a76" => DATA <= x"0060"; + when "10" & x"a77" => DATA <= x"007f"; + when "10" & x"a78" => DATA <= x"d801"; + when "10" & x"a79" => DATA <= x"01f8"; + when "10" & x"a7a" => DATA <= x"dba4"; + when "10" & x"a7b" => DATA <= x"0101"; + when "10" & x"a7c" => DATA <= x"0280"; + when "10" & x"a7d" => DATA <= x"0fbe"; + when "10" & x"a7e" => DATA <= x"00f3"; + when "10" & x"a7f" => DATA <= x"5a50"; + when "10" & x"a80" => DATA <= x"0200"; + when "10" & x"a81" => DATA <= x"0080"; + when "10" & x"a82" => DATA <= x"003f"; + when "10" & x"a83" => DATA <= x"f806"; + when "10" & x"a84" => DATA <= x"8000"; + when "10" & x"a85" => DATA <= x"2007"; + when "10" & x"a86" => DATA <= x"2b62"; + when "10" & x"a87" => DATA <= x"c01f"; + when "10" & x"a88" => DATA <= x"fc04"; + when "10" & x"a89" => DATA <= x"0501"; + when "10" & x"a8a" => DATA <= x"0040"; + when "10" & x"a8b" => DATA <= x"0fb5"; + when "10" & x"a8c" => DATA <= x"0580"; + when "10" & x"a8d" => DATA <= x"36c1"; + when "10" & x"a8e" => DATA <= x"b410"; + when "10" & x"a8f" => DATA <= x"04e0"; + when "10" & x"a90" => DATA <= x"01f9"; + when "10" & x"a91" => DATA <= x"02c0"; + when "10" & x"a92" => DATA <= x"1ee1"; + when "10" & x"a93" => DATA <= x"6a10"; + when "10" & x"a94" => DATA <= x"0404"; + when "10" & x"a95" => DATA <= x"0300"; + when "10" & x"a96" => DATA <= x"06ff"; + when "10" & x"a97" => DATA <= x"803f"; + when "10" & x"a98" => DATA <= x"cdb4"; + when "10" & x"a99" => DATA <= x"4120"; + when "10" & x"a9a" => DATA <= x"0ffd"; + when "10" & x"a9b" => DATA <= x"0006"; + when "10" & x"a9c" => DATA <= x"0017"; + when "10" & x"a9d" => DATA <= x"3501"; + when "10" & x"a9e" => DATA <= x"4008"; + when "10" & x"a9f" => DATA <= x"04f0"; + when "10" & x"aa0" => DATA <= x"7bbf"; + when "10" & x"aa1" => DATA <= x"a9f8"; + when "10" & x"aa2" => DATA <= x"eaf0"; + when "10" & x"aa3" => DATA <= x"7f1f"; + when "10" & x"aa4" => DATA <= x"c1e0"; + when "10" & x"aa5" => DATA <= x"1e00"; + when "10" & x"aa6" => DATA <= x"a69a"; + when "10" & x"aa7" => DATA <= x"0834"; + when "10" & x"aa8" => DATA <= x"0200"; + when "10" & x"aa9" => DATA <= x"030f"; + when "10" & x"aaa" => DATA <= x"0000"; + when "10" & x"aab" => DATA <= x"5025"; + when "10" & x"aac" => DATA <= x"0001"; + when "10" & x"aad" => DATA <= x"3801"; + when "10" & x"aae" => DATA <= x"81c0"; + when "10" & x"aaf" => DATA <= x"040e"; + when "10" & x"ab0" => DATA <= x"0007"; + when "10" & x"ab1" => DATA <= x"f839"; + when "10" & x"ab2" => DATA <= x"203d"; + when "10" & x"ab3" => DATA <= x"41c0"; + when "10" & x"ab4" => DATA <= x"a0f5"; + when "10" & x"ab5" => DATA <= x"0778"; + when "10" & x"ab6" => DATA <= x"0000"; + when "10" & x"ab7" => DATA <= x"54aa"; + when "10" & x"ab8" => DATA <= x"0008"; + when "10" & x"ab9" => DATA <= x"000a"; + when "10" & x"aba" => DATA <= x"8a00"; + when "10" & x"abb" => DATA <= x"2006"; + when "10" & x"abc" => DATA <= x"3800"; + when "10" & x"abd" => DATA <= x"8140"; + when "10" & x"abe" => DATA <= x"0140"; + when "10" & x"abf" => DATA <= x"8700"; + when "10" & x"ac0" => DATA <= x"0428"; + when "10" & x"ac1" => DATA <= x"000d"; + when "10" & x"ac2" => DATA <= x"4180"; + when "10" & x"ac3" => DATA <= x"4a0c"; + when "10" & x"ac4" => DATA <= x"0203"; + when "10" & x"ac5" => DATA <= x"3c00"; + when "10" & x"ac6" => DATA <= x"0140"; + when "10" & x"ac7" => DATA <= x"203d"; + when "10" & x"ac8" => DATA <= x"0128"; + when "10" & x"ac9" => DATA <= x"7000"; + when "10" & x"aca" => DATA <= x"07c0"; + when "10" & x"acb" => DATA <= x"2400"; + when "10" & x"acc" => DATA <= x"0540"; + when "10" & x"acd" => DATA <= x"0081"; + when "10" & x"ace" => DATA <= x"1680"; + when "10" & x"acf" => DATA <= x"2024"; + when "10" & x"ad0" => DATA <= x"0101"; + when "10" & x"ad1" => DATA <= x"5fe9"; + when "10" & x"ad2" => DATA <= x"f7ff"; + when "10" & x"ad3" => DATA <= x"6fa7"; + when "10" & x"ad4" => DATA <= x"def4"; + when "10" & x"ad5" => DATA <= x"2fbe"; + when "10" & x"ad6" => DATA <= x"ef6a"; + when "10" & x"ad7" => DATA <= x"ff7f"; + when "10" & x"ad8" => DATA <= x"3e1b"; + when "10" & x"ad9" => DATA <= x"0187"; + when "10" & x"ada" => DATA <= x"c681"; + when "10" & x"adb" => DATA <= x"d61b"; + when "10" & x"adc" => DATA <= x"1e40"; + when "10" & x"add" => DATA <= x"1fcf"; + when "10" & x"ade" => DATA <= x"f078"; + when "10" & x"adf" => DATA <= x"0100"; + when "10" & x"ae0" => DATA <= x"00a8"; + when "10" & x"ae1" => DATA <= x"0408"; + when "10" & x"ae2" => DATA <= x"0c00"; + when "10" & x"ae3" => DATA <= x"8cad"; + when "10" & x"ae4" => DATA <= x"faff"; + when "10" & x"ae5" => DATA <= x"0180"; + when "10" & x"ae6" => DATA <= x"1a0d"; + when "10" & x"ae7" => DATA <= x"faf7"; + when "10" & x"ae8" => DATA <= x"7f80"; + when "10" & x"ae9" => DATA <= x"d800"; + when "10" & x"aea" => DATA <= x"0af7"; + when "10" & x"aeb" => DATA <= x"38d0"; + when "10" & x"aec" => DATA <= x"0800"; + when "10" & x"aed" => DATA <= x"0200"; + when "10" & x"aee" => DATA <= x"009c"; + when "10" & x"aef" => DATA <= x"7800"; + when "10" & x"af0" => DATA <= x"3c1c"; + when "10" & x"af1" => DATA <= x"e1e7"; + when "10" & x"af2" => DATA <= x"7d00"; + when "10" & x"af3" => DATA <= x"3beb"; + when "10" & x"af4" => DATA <= x"febb"; + when "10" & x"af5" => DATA <= x"c7d4"; + when "10" & x"af6" => DATA <= x"01c7"; + when "10" & x"af7" => DATA <= x"e3e0"; + when "10" & x"af8" => DATA <= x"f005"; + when "10" & x"af9" => DATA <= x"8000"; + when "10" & x"afa" => DATA <= x"1e3f"; + when "10" & x"afb" => DATA <= x"2401"; + when "10" & x"afc" => DATA <= x"fe70"; + when "10" & x"afd" => DATA <= x"4003"; + when "10" & x"afe" => DATA <= x"f801"; + when "10" & x"aff" => DATA <= x"815c"; + when "10" & x"b00" => DATA <= x"0e77"; + when "10" & x"b01" => DATA <= x"3572"; + when "10" & x"b02" => DATA <= x"292b"; + when "10" & x"b03" => DATA <= x"7c3e"; + when "10" & x"b04" => DATA <= x"dde1"; + when "10" & x"b05" => DATA <= x"f4f5"; + when "10" & x"b06" => DATA <= x"7a3f"; + when "10" & x"b07" => DATA <= x"2a70"; + when "10" & x"b08" => DATA <= x"2815"; + when "10" & x"b09" => DATA <= x"4a3f"; + when "10" & x"b0a" => DATA <= x"5ecf"; + when "10" & x"b0b" => DATA <= x"faf7"; + when "10" & x"b0c" => DATA <= x"7ed7"; + when "10" & x"b0d" => DATA <= x"ff80"; + when "10" & x"b0e" => DATA <= x"7804"; + when "10" & x"b0f" => DATA <= x"8050"; + when "10" & x"b10" => DATA <= x"2002"; + when "10" & x"b11" => DATA <= x"813c"; + when "10" & x"b12" => DATA <= x"03c0"; + when "10" & x"b13" => DATA <= x"3c02"; + when "10" & x"b14" => DATA <= x"c004"; + when "10" & x"b15" => DATA <= x"1401"; + when "10" & x"b16" => DATA <= x"441e"; + when "10" & x"b17" => DATA <= x"01e0"; + when "10" & x"b18" => DATA <= x"1e01"; + when "10" & x"b19" => DATA <= x"e01e"; + when "10" & x"b1a" => DATA <= x"01c0"; + when "10" & x"b1b" => DATA <= x"001f"; + when "10" & x"b1c" => DATA <= x"00f0"; + when "10" & x"b1d" => DATA <= x"0f00"; + when "10" & x"b1e" => DATA <= x"f000"; + when "10" & x"b1f" => DATA <= x"4780"; + when "10" & x"b20" => DATA <= x"7800"; + when "10" & x"b21" => DATA <= x"0021"; + when "10" & x"b22" => DATA <= x"4001"; + when "10" & x"b23" => DATA <= x"0b00"; + when "10" & x"b24" => DATA <= x"0470"; + when "10" & x"b25" => DATA <= x"0064"; + when "10" & x"b26" => DATA <= x"6239"; + when "10" & x"b27" => DATA <= x"04d1"; + when "10" & x"b28" => DATA <= x"c864"; + when "10" & x"b29" => DATA <= x"3b20"; + when "10" & x"b2a" => DATA <= x"040e"; + when "10" & x"b2b" => DATA <= x"0022"; + when "10" & x"b2c" => DATA <= x"5269"; + when "10" & x"b2d" => DATA <= x"1293"; + when "10" & x"b2e" => DATA <= x"4884"; + when "10" & x"b2f" => DATA <= x"df00"; + when "10" & x"b30" => DATA <= x"f00f"; + when "10" & x"b31" => DATA <= x"00f0"; + when "10" & x"b32" => DATA <= x"0000"; + when "10" & x"b33" => DATA <= x"23c0"; + when "10" & x"b34" => DATA <= x"3400"; + when "10" & x"b35" => DATA <= x"4140"; + when "10" & x"b36" => DATA <= x"020f"; + when "10" & x"b37" => DATA <= x"00f0"; + when "10" & x"b38" => DATA <= x"0001"; + when "10" & x"b39" => DATA <= x"03c0"; + when "10" & x"b3a" => DATA <= x"3c03"; + when "10" & x"b3b" => DATA <= x"c03c"; + when "10" & x"b3c" => DATA <= x"03c0"; + when "10" & x"b3d" => DATA <= x"0000"; + when "10" & x"b3e" => DATA <= x"2a00"; + when "10" & x"b3f" => DATA <= x"0178"; + when "10" & x"b40" => DATA <= x"0780"; + when "10" & x"b41" => DATA <= x"7807"; + when "10" & x"b42" => DATA <= x"8004"; + when "10" & x"b43" => DATA <= x"2802"; + when "10" & x"b44" => DATA <= x"843c"; + when "10" & x"b45" => DATA <= x"03c0"; + when "10" & x"b46" => DATA <= x"3c02"; + when "10" & x"b47" => DATA <= x"403e"; + when "10" & x"b48" => DATA <= x"0101"; + when "10" & x"b49" => DATA <= x"2f94"; + when "10" & x"b4a" => DATA <= x"fa7c"; + when "10" & x"b4b" => DATA <= x"3ed6"; + when "10" & x"b4c" => DATA <= x"03e1"; + when "10" & x"b4d" => DATA <= x"b0f8"; + when "10" & x"b4e" => DATA <= x"7857"; + when "10" & x"b4f" => DATA <= x"c06c"; + when "10" & x"b50" => DATA <= x"f743"; + when "10" & x"b51" => DATA <= x"74f6"; + when "10" & x"b52" => DATA <= x"1b1d"; + when "10" & x"b53" => DATA <= x"f805"; + when "10" & x"b54" => DATA <= x"0001"; + when "10" & x"b55" => DATA <= x"2802"; + when "10" & x"b56" => DATA <= x"8100"; + when "10" & x"b57" => DATA <= x"0040"; + when "10" & x"b58" => DATA <= x"0103"; + when "10" & x"b59" => DATA <= x"8008"; + when "10" & x"b5a" => DATA <= x"1400"; + when "10" & x"b5b" => DATA <= x"0707"; + when "10" & x"b5c" => DATA <= x"f038"; + when "10" & x"b5d" => DATA <= x"3e81"; + when "10" & x"b5e" => DATA <= x"c1d4"; + when "10" & x"b5f" => DATA <= x"0002"; + when "10" & x"b60" => DATA <= x"2f10"; + when "10" & x"b61" => DATA <= x"0040"; + when "10" & x"b62" => DATA <= x"ef00"; + when "10" & x"b63" => DATA <= x"008a"; + when "10" & x"b64" => DATA <= x"a801"; + when "10" & x"b65" => DATA <= x"4028"; + when "10" & x"b66" => DATA <= x"5500"; + when "10" & x"b67" => DATA <= x"1504"; + when "10" & x"b68" => DATA <= x"0e00"; + when "10" & x"b69" => DATA <= x"a400"; + when "10" & x"b6a" => DATA <= x"0100"; + when "10" & x"b6b" => DATA <= x"ab40"; + when "10" & x"b6c" => DATA <= x"0140"; + when "10" & x"b6d" => DATA <= x"8054"; + when "10" & x"b6e" => DATA <= x"0054"; + when "10" & x"b6f" => DATA <= x"0203"; + when "10" & x"b70" => DATA <= x"b830"; + when "10" & x"b71" => DATA <= x"1c04"; + when "10" & x"b72" => DATA <= x"0670"; + when "10" & x"b73" => DATA <= x"0202"; + when "10" & x"b74" => DATA <= x"4028"; + when "10" & x"b75" => DATA <= x"0400"; + when "10" & x"b76" => DATA <= x"03a0"; + when "10" & x"b77" => DATA <= x"1005"; + when "10" & x"b78" => DATA <= x"0080"; + when "10" & x"b79" => DATA <= x"0025"; + when "10" & x"b7a" => DATA <= x"4a00"; + when "10" & x"b7b" => DATA <= x"0080"; + when "10" & x"b7c" => DATA <= x"0020"; + when "10" & x"b7d" => DATA <= x"000a"; + when "10" & x"b7e" => DATA <= x"8280"; + when "10" & x"b7f" => DATA <= x"0020"; + when "10" & x"b80" => DATA <= x"0510"; + when "10" & x"b81" => DATA <= x"0104"; + when "10" & x"b82" => DATA <= x"2a10"; + when "10" & x"b83" => DATA <= x"0000"; + when "10" & x"b84" => DATA <= x"4000"; + when "10" & x"b85" => DATA <= x"8000"; + when "10" & x"b86" => DATA <= x"20c0"; + when "10" & x"b87" => DATA <= x"a000"; + when "10" & x"b88" => DATA <= x"8203"; + when "10" & x"b89" => DATA <= x"8fc3"; + when "10" & x"b8a" => DATA <= x"f47e"; + when "10" & x"b8b" => DATA <= x"bf4f"; + when "10" & x"b8c" => DATA <= x"810e"; + when "10" & x"b8d" => DATA <= x"e040"; + when "10" & x"b8e" => DATA <= x"ba5c"; + when "10" & x"b8f" => DATA <= x"2cc5"; + when "10" & x"b90" => DATA <= x"47be"; + when "10" & x"b91" => DATA <= x"5f0f"; + when "10" & x"b92" => DATA <= x"9048"; + when "10" & x"b93" => DATA <= x"1dfc"; + when "10" & x"b94" => DATA <= x"ff3f"; + when "10" & x"b95" => DATA <= x"80d8"; + when "10" & x"b96" => DATA <= x"740e"; + when "10" & x"b97" => DATA <= x"4001"; + when "10" & x"b98" => DATA <= x"81c4"; + when "10" & x"b99" => DATA <= x"0c07"; + when "10" & x"b9a" => DATA <= x"fbf9"; + when "10" & x"b9b" => DATA <= x"bc00"; + when "10" & x"b9c" => DATA <= x"0230"; + when "10" & x"b9d" => DATA <= x"1c15"; + when "10" & x"b9e" => DATA <= x"1e81"; + when "10" & x"b9f" => DATA <= x"4900"; + when "10" & x"ba0" => DATA <= x"100f"; + when "10" & x"ba1" => DATA <= x"77fe"; + when "10" & x"ba2" => DATA <= x"efbf"; + when "10" & x"ba3" => DATA <= x"d40f"; + when "10" & x"ba4" => DATA <= x"fdf7"; + when "10" & x"ba5" => DATA <= x"7f80"; + when "10" & x"ba6" => DATA <= x"1fe7"; + when "10" & x"ba7" => DATA <= x"118c"; + when "10" & x"ba8" => DATA <= x"b89c"; + when "10" & x"ba9" => DATA <= x"0e34"; + when "10" & x"baa" => DATA <= x"3d43"; + when "10" & x"bab" => DATA <= x"9c00"; + when "10" & x"bac" => DATA <= x"1e9e"; + when "10" & x"bad" => DATA <= x"fa00"; + when "10" & x"bae" => DATA <= x"77bf"; + when "10" & x"baf" => DATA <= x"d3c1"; + when "10" & x"bb0" => DATA <= x"ea3e"; + when "10" & x"bb1" => DATA <= x"a001"; + when "10" & x"bb2" => DATA <= x"f0fc"; + when "10" & x"bb3" => DATA <= x"77c0"; + when "10" & x"bb4" => DATA <= x"0f80"; + when "10" & x"bb5" => DATA <= x"003d"; + when "10" & x"bb6" => DATA <= x"feef"; + when "10" & x"bb7" => DATA <= x"e007"; + when "10" & x"bb8" => DATA <= x"fbc0"; + when "10" & x"bb9" => DATA <= x"8007"; + when "10" & x"bba" => DATA <= x"7629"; + when "10" & x"bbb" => DATA <= x"2b92"; + when "10" & x"bbc" => DATA <= x"b9dc"; + when "10" & x"bbd" => DATA <= x"0f00"; + when "10" & x"bbe" => DATA <= x"fa78"; + when "10" & x"bbf" => DATA <= x"3e9f"; + when "10" & x"bc0" => DATA <= x"0f87"; + when "10" & x"bc1" => DATA <= x"13e1"; + when "10" & x"bc2" => DATA <= x"f4a2"; + when "10" & x"bc3" => DATA <= x"543a"; + when "10" & x"bc4" => DATA <= x"15a9"; + when "10" & x"bc5" => DATA <= x"448a"; + when "10" & x"bc6" => DATA <= x"51fe"; + when "10" & x"bc7" => DATA <= x"fdaf"; + when "10" & x"bc8" => DATA <= x"f7a3"; + when "10" & x"bc9" => DATA <= x"c1ea"; + when "10" & x"bca" => DATA <= x"f490"; + when "10" & x"bcb" => DATA <= x"0187"; + when "10" & x"bcc" => DATA <= x"8020"; + when "10" & x"bcd" => DATA <= x"3800"; + when "10" & x"bce" => DATA <= x"09a0"; + when "10" & x"bcf" => DATA <= x"004f"; + when "10" & x"bd0" => DATA <= x"00f0"; + when "10" & x"bd1" => DATA <= x"0f00"; + when "10" & x"bd2" => DATA <= x"9001"; + when "10" & x"bd3" => DATA <= x"0680"; + when "10" & x"bd4" => DATA <= x"0834"; + when "10" & x"bd5" => DATA <= x"0005"; + when "10" & x"bd6" => DATA <= x"e000"; + when "10" & x"bd7" => DATA <= x"8f00"; + when "10" & x"bd8" => DATA <= x"f00f"; + when "10" & x"bd9" => DATA <= x"00f0"; + when "10" & x"bda" => DATA <= x"0e00"; + when "10" & x"bdb" => DATA <= x"2078"; + when "10" & x"bdc" => DATA <= x"0043"; + when "10" & x"bdd" => DATA <= x"c03c"; + when "10" & x"bde" => DATA <= x"0380"; + when "10" & x"bdf" => DATA <= x"011e"; + when "10" & x"be0" => DATA <= x"01e0"; + when "10" & x"be1" => DATA <= x"0000"; + when "10" & x"be2" => DATA <= x"8780"; + when "10" & x"be3" => DATA <= x"5000"; + when "10" & x"be4" => DATA <= x"26a6"; + when "10" & x"be5" => DATA <= x"4320"; + when "10" & x"be6" => DATA <= x"1a39"; + when "10" & x"be7" => DATA <= x"04d8"; + when "10" & x"be8" => DATA <= x"0008"; + when "10" & x"be9" => DATA <= x"0045"; + when "10" & x"bea" => DATA <= x"a4c2"; + when "10" & x"beb" => DATA <= x"6902"; + when "10" & x"bec" => DATA <= x"9348"; + when "10" & x"bed" => DATA <= x"9200"; + when "10" & x"bee" => DATA <= x"0ff0"; + when "10" & x"bef" => DATA <= x"0a00"; + when "10" & x"bf0" => DATA <= x"0278"; + when "10" & x"bf1" => DATA <= x"0500"; + when "10" & x"bf2" => DATA <= x"5045"; + when "10" & x"bf3" => DATA <= x"0006"; + when "10" & x"bf4" => DATA <= x"3c03"; + when "10" & x"bf5" => DATA <= x"c000"; + when "10" & x"bf6" => DATA <= x"030f"; + when "10" & x"bf7" => DATA <= x"00f0"; + when "10" & x"bf8" => DATA <= x"0003"; + when "10" & x"bf9" => DATA <= x"0000"; + when "10" & x"bfa" => DATA <= x"40f0"; + when "10" & x"bfb" => DATA <= x"0b00"; + when "10" & x"bfc" => DATA <= x"4078"; + when "10" & x"bfd" => DATA <= x"0007"; + when "10" & x"bfe" => DATA <= x"c024"; + when "10" & x"bff" => DATA <= x"0280"; + when "10" & x"c00" => DATA <= x"a800"; + when "10" & x"c01" => DATA <= x"0c00"; + when "10" & x"c02" => DATA <= x"0178"; + when "10" & x"c03" => DATA <= x"0580"; + when "10" & x"c04" => DATA <= x"033c"; + when "10" & x"c05" => DATA <= x"0240"; + when "10" & x"c06" => DATA <= x"021c"; + when "10" & x"c07" => DATA <= x"0038"; + when "10" & x"c08" => DATA <= x"0004"; + when "10" & x"c09" => DATA <= x"3c02"; + when "10" & x"c0a" => DATA <= x"c00c"; + when "10" & x"c0b" => DATA <= x"1e01"; + when "10" & x"c0c" => DATA <= x"201f"; + when "10" & x"c0d" => DATA <= x"0080"; + when "10" & x"c0e" => DATA <= x"3e9f"; + when "10" & x"c0f" => DATA <= x"0e9c"; + when "10" & x"c10" => DATA <= x"f94f"; + when "10" & x"c11" => DATA <= x"b5f1"; + when "10" & x"c12" => DATA <= x"5b15"; + when "10" & x"c13" => DATA <= x"f0f0"; + when "10" & x"c14" => DATA <= x"6c50"; + when "10" & x"c15" => DATA <= x"d82c"; + when "10" & x"c16" => DATA <= x"363b"; + when "10" & x"c17" => DATA <= x"159a"; + when "10" & x"c18" => DATA <= x"c77e"; + when "10" & x"c19" => DATA <= x"01a0"; + when "10" & x"c1a" => DATA <= x"0040"; + when "10" & x"c1b" => DATA <= x"0502"; + when "10" & x"c1c" => DATA <= x"5801"; + when "10" & x"c1d" => DATA <= x"0001"; + when "10" & x"c1e" => DATA <= x"60e0"; + when "10" & x"c1f" => DATA <= x"f33e"; + when "10" & x"c20" => DATA <= x"8000"; + when "10" & x"c21" => DATA <= x"881e"; + when "10" & x"c22" => DATA <= x"0140"; + when "10" & x"c23" => DATA <= x"0a0a"; + when "10" & x"c24" => DATA <= x"0040"; + when "10" & x"c25" => DATA <= x"5000"; + when "10" & x"c26" => DATA <= x"a800"; + when "10" & x"c27" => DATA <= x"40b0"; + when "10" & x"c28" => DATA <= x"0200"; + when "10" & x"c29" => DATA <= x"1280"; + when "10" & x"c2a" => DATA <= x"0034"; + when "10" & x"c2b" => DATA <= x"0015"; + when "10" & x"c2c" => DATA <= x"0081"; + when "10" & x"c2d" => DATA <= x"3430"; + when "10" & x"c2e" => DATA <= x"0c0c"; + when "10" & x"c2f" => DATA <= x"f00a"; + when "10" & x"c30" => DATA <= x"00a0"; + when "10" & x"c31" => DATA <= x"1000"; + when "10" & x"c32" => DATA <= x"0f80"; + when "10" & x"c33" => DATA <= x"6800"; + when "10" & x"c34" => DATA <= x"2140"; + when "10" & x"c35" => DATA <= x"010f"; + when "10" & x"c36" => DATA <= x"0000"; + when "10" & x"c37" => DATA <= x"0068"; + when "10" & x"c38" => DATA <= x"0050"; + when "10" & x"c39" => DATA <= x"0ae0"; + when "10" & x"c3a" => DATA <= x"0547"; + when "10" & x"c3b" => DATA <= x"0004"; + when "10" & x"c3c" => DATA <= x"000c"; + when "10" & x"c3d" => DATA <= x"0000"; + when "10" & x"c3e" => DATA <= x"4100"; + when "10" & x"c3f" => DATA <= x"9f5f"; + when "10" & x"c40" => DATA <= x"a7d7"; + when "10" & x"c41" => DATA <= x"e9fa"; + when "10" & x"c42" => DATA <= x"bf4f"; + when "10" & x"c43" => DATA <= x"ab74"; + when "10" & x"c44" => DATA <= x"b43a"; + when "10" & x"c45" => DATA <= x"9d7f"; + when "10" & x"c46" => DATA <= x"9f0f"; + when "10" & x"c47" => DATA <= x"d2f8"; + when "10" & x"c48" => DATA <= x"fca0"; + when "10" & x"c49" => DATA <= x"07c2"; + when "10" & x"c4a" => DATA <= x"2801"; + when "10" & x"c4b" => DATA <= x"4201"; + when "10" & x"c4c" => DATA <= x"37ab"; + when "10" & x"c4d" => DATA <= x"3008"; + when "10" & x"c4e" => DATA <= x"3400"; + when "10" & x"c4f" => DATA <= x"1fce"; + when "10" & x"c50" => DATA <= x"47fa"; + when "10" & x"c51" => DATA <= x"ff7e"; + when "10" & x"c52" => DATA <= x"6ff7"; + when "10" & x"c53" => DATA <= x"ffff"; + when "10" & x"c54" => DATA <= x"fd7f"; + when "10" & x"c55" => DATA <= x"d388"; + when "10" & x"c56" => DATA <= x"c75c"; + when "10" & x"c57" => DATA <= x"43d4"; + when "10" & x"c58" => DATA <= x"381e"; + when "10" & x"c59" => DATA <= x"a1ca"; + when "10" & x"c5a" => DATA <= x"1eff"; + when "10" & x"c5b" => DATA <= x"f7fc"; + when "10" & x"c5c" => DATA <= x"9fcf"; + when "10" & x"c5d" => DATA <= x"ff00"; + when "10" & x"c5e" => DATA <= x"bf00"; + when "10" & x"c5f" => DATA <= x"6010"; + when "10" & x"c60" => DATA <= x"0083"; + when "10" & x"c61" => DATA <= x"801f"; + when "10" & x"c62" => DATA <= x"e800"; + when "10" & x"c63" => DATA <= x"2098"; + when "10" & x"c64" => DATA <= x"18c0"; + when "10" & x"c65" => DATA <= x"7020"; + when "10" & x"c66" => DATA <= x"13b3"; + when "10" & x"c67" => DATA <= x"815b"; + when "10" & x"c68" => DATA <= x"edb0"; + when "10" & x"c69" => DATA <= x"fa7f"; + when "10" & x"c6a" => DATA <= x"87da"; + when "10" & x"c6b" => DATA <= x"89c6"; + when "10" & x"c6c" => DATA <= x"a362"; + when "10" & x"c6d" => DATA <= x"b41e"; + when "10" & x"c6e" => DATA <= x"8d4f"; + when "10" & x"c6f" => DATA <= x"f77a"; + when "10" & x"c70" => DATA <= x"f807"; + when "10" & x"c71" => DATA <= x"8070"; + when "10" & x"c72" => DATA <= x"0502"; + when "10" & x"c73" => DATA <= x"0000"; + when "10" & x"c74" => DATA <= x"9400"; + when "10" & x"c75" => DATA <= x"04f0"; + when "10" & x"c76" => DATA <= x"0f00"; + when "10" & x"c77" => DATA <= x"f009"; + when "10" & x"c78" => DATA <= x"0010"; + when "10" & x"c79" => DATA <= x"5005"; + when "10" & x"c7a" => DATA <= x"1000"; + when "10" & x"c7b" => DATA <= x"041e"; + when "10" & x"c7c" => DATA <= x"01e0"; + when "10" & x"c7d" => DATA <= x"1e01"; + when "10" & x"c7e" => DATA <= x"e01e"; + when "10" & x"c7f" => DATA <= x"01e0"; + when "10" & x"c80" => DATA <= x"1e01"; + when "10" & x"c81" => DATA <= x"e01e"; + when "10" & x"c82" => DATA <= x"01e0"; + when "10" & x"c83" => DATA <= x"1e01"; + when "10" & x"c84" => DATA <= x"2001"; + when "10" & x"c85" => DATA <= x"0f00"; + when "10" & x"c86" => DATA <= x"f00a"; + when "10" & x"c87" => DATA <= x"3900"; + when "10" & x"c88" => DATA <= x"8e68"; + when "10" & x"c89" => DATA <= x"6472"; + when "10" & x"c8a" => DATA <= x"0900"; + when "10" & x"c8b" => DATA <= x"1000"; + when "10" & x"c8c" => DATA <= x"0029"; + when "10" & x"c8d" => DATA <= x"0026"; + when "10" & x"c8e" => DATA <= x"9308"; + when "10" & x"c8f" => DATA <= x"84c2"; + when "10" & x"c90" => DATA <= x"6f26"; + when "10" & x"c91" => DATA <= x"7805"; + when "10" & x"c92" => DATA <= x"0001"; + when "10" & x"c93" => DATA <= x"3c03"; + when "10" & x"c94" => DATA <= x"c03c"; + when "10" & x"c95" => DATA <= x"03c0"; + when "10" & x"c96" => DATA <= x"3c03"; + when "10" & x"c97" => DATA <= x"c03c"; + when "10" & x"c98" => DATA <= x"0000"; + when "10" & x"c99" => DATA <= x"40f0"; + when "10" & x"c9a" => DATA <= x"0f00"; + when "10" & x"c9b" => DATA <= x"f00f"; + when "10" & x"c9c" => DATA <= x"00f0"; + when "10" & x"c9d" => DATA <= x"0000"; + when "10" & x"c9e" => DATA <= x"0b40"; + when "10" & x"c9f" => DATA <= x"005e"; + when "10" & x"ca0" => DATA <= x"01e0"; + when "10" & x"ca1" => DATA <= x"1e01"; + when "10" & x"ca2" => DATA <= x"2001"; + when "10" & x"ca3" => DATA <= x"0e00"; + when "10" & x"ca4" => DATA <= x"0878"; + when "10" & x"ca5" => DATA <= x"0780"; + when "10" & x"ca6" => DATA <= x"7806"; + when "10" & x"ca7" => DATA <= x"807c"; + when "10" & x"ca8" => DATA <= x"0200"; + when "10" & x"ca9" => DATA <= x"fa1c"; + when "10" & x"caa" => DATA <= x"2e0f"; + when "10" & x"cab" => DATA <= x"5faf"; + when "10" & x"cac" => DATA <= x"c7eb"; + when "10" & x"cad" => DATA <= x"7420"; + when "10" & x"cae" => DATA <= x"60a0"; + when "10" & x"caf" => DATA <= x"0a01"; + when "10" & x"cb0" => DATA <= x"0401"; + when "10" & x"cb1" => DATA <= x"0343"; + when "10" & x"cb2" => DATA <= x"a181"; + when "10" & x"cb3" => DATA <= x"61f0"; + when "10" & x"cb4" => DATA <= x"002a"; + when "10" & x"cb5" => DATA <= x"4803"; + when "10" & x"cb6" => DATA <= x"3d7e"; + when "10" & x"cb7" => DATA <= x"005e"; + when "10" & x"cb8" => DATA <= x"c803"; + when "10" & x"cb9" => DATA <= x"fc62"; + when "10" & x"cba" => DATA <= x"307d"; + when "10" & x"cbb" => DATA <= x"c801"; + when "10" & x"cbc" => DATA <= x"e400"; + when "10" & x"cbd" => DATA <= x"701e"; + when "10" & x"cbe" => DATA <= x"8100"; + when "10" & x"cbf" => DATA <= x"e470"; + when "10" & x"cc0" => DATA <= x"387c"; + when "10" & x"cc1" => DATA <= x"1f43"; + when "10" & x"cc2" => DATA <= x"e3ff"; + when "10" & x"cc3" => DATA <= x"0028"; + when "10" & x"cc4" => DATA <= x"7804"; + when "10" & x"cc5" => DATA <= x"802a"; + when "10" & x"cc6" => DATA <= x"3800"; + when "10" & x"cc7" => DATA <= x"41c0"; + when "10" & x"cc8" => DATA <= x"042e"; + when "10" & x"cc9" => DATA <= x"0020"; + when "10" & x"cca" => DATA <= x"7001"; + when "10" & x"ccb" => DATA <= x"5000"; + when "10" & x"ccc" => DATA <= x"01a0"; + when "10" & x"ccd" => DATA <= x"0060"; + when "10" & x"cce" => DATA <= x"1283"; + when "10" & x"ccf" => DATA <= x"0080"; + when "10" & x"cd0" => DATA <= x"c020"; + when "10" & x"cd1" => DATA <= x"33c0"; + when "10" & x"cd2" => DATA <= x"0012"; + when "10" & x"cd3" => DATA <= x"0200"; + when "10" & x"cd4" => DATA <= x"e01a"; + when "10" & x"cd5" => DATA <= x"0000"; + when "10" & x"cd6" => DATA <= x"8000"; + when "10" & x"cd7" => DATA <= x"3a00"; + when "10" & x"cd8" => DATA <= x"a1d0"; + when "10" & x"cd9" => DATA <= x"0045"; + when "10" & x"cda" => DATA <= x"0170"; + when "10" & x"cdb" => DATA <= x"0008"; + when "10" & x"cdc" => DATA <= x"0080"; + when "10" & x"cdd" => DATA <= x"0004"; + when "10" & x"cde" => DATA <= x"2801"; + when "10" & x"cdf" => DATA <= x"0140"; + when "10" & x"ce0" => DATA <= x"01fe"; + when "10" & x"ce1" => DATA <= x"3f07"; + when "10" & x"ce2" => DATA <= x"b9eb"; + when "10" & x"ce3" => DATA <= x"3d3a"; + when "10" & x"ce4" => DATA <= x"9b4f"; + when "10" & x"ce5" => DATA <= x"83d1"; + when "10" & x"ce6" => DATA <= x"ead7"; + when "10" & x"ce7" => DATA <= x"0a04"; + when "10" & x"ce8" => DATA <= x"01df"; + when "10" & x"ce9" => DATA <= x"94fe"; + when "10" & x"cea" => DATA <= x"5f3f"; + when "10" & x"ceb" => DATA <= x"a028"; + when "10" & x"cec" => DATA <= x"0ce7"; + when "10" & x"ced" => DATA <= x"2009"; + when "10" & x"cee" => DATA <= x"6693"; + when "10" & x"cef" => DATA <= x"696c"; + when "10" & x"cf0" => DATA <= x"0400"; + when "10" & x"cf1" => DATA <= x"57e3"; + when "10" & x"cf2" => DATA <= x"fdf0"; + when "10" & x"cf3" => DATA <= x"fa7d"; + when "10" & x"cf4" => DATA <= x"a000"; + when "10" & x"cf5" => DATA <= x"0850"; + when "10" & x"cf6" => DATA <= x"1dff"; + when "10" & x"cf7" => DATA <= x"83c0"; + when "10" & x"cf8" => DATA <= x"1bfe"; + when "10" & x"cf9" => DATA <= x"0768"; + when "10" & x"cfa" => DATA <= x"0029"; + when "10" & x"cfb" => DATA <= x"c4a3"; + when "10" & x"cfc" => DATA <= x"4020"; + when "10" & x"cfd" => DATA <= x"0008"; + when "10" & x"cfe" => DATA <= x"0287"; + when "10" & x"cff" => DATA <= x"b872"; + when "10" & x"d00" => DATA <= x"8783"; + when "10" & x"d01" => DATA <= x"9fff"; + when "10" & x"d02" => DATA <= x"bff4"; + when "10" & x"d03" => DATA <= x"7f57"; + when "10" & x"d04" => DATA <= x"e210"; + when "10" & x"d05" => DATA <= x"3d00"; + when "10" & x"d06" => DATA <= x"f003"; + when "10" & x"d07" => DATA <= x"fe82"; + when "10" & x"d08" => DATA <= x"150e"; + when "10" & x"d09" => DATA <= x"8e00"; + when "10" & x"d0a" => DATA <= x"7fd6"; + when "10" & x"d0b" => DATA <= x"033d"; + when "10" & x"d0c" => DATA <= x"8ce4"; + when "10" & x"d0d" => DATA <= x"6138"; + when "10" & x"d0e" => DATA <= x"1812"; + when "10" & x"d0f" => DATA <= x"3e9f"; + when "10" & x"d10" => DATA <= x"a1f0"; + when "10" & x"d11" => DATA <= x"f341"; + when "10" & x"d12" => DATA <= x"295a"; + when "10" & x"d13" => DATA <= x"0d56"; + when "10" & x"d14" => DATA <= x"2d6a"; + when "10" & x"d15" => DATA <= x"3dfb"; + when "10" & x"d16" => DATA <= x"d5ee"; + when "10" & x"d17" => DATA <= x"f5af"; + when "10" & x"d18" => DATA <= x"7f00"; + when "10" & x"d19" => DATA <= x"f00a"; + when "10" & x"d1a" => DATA <= x"0002"; + when "10" & x"d1b" => DATA <= x"5000"; + when "10" & x"d1c" => DATA <= x"1380"; + when "10" & x"d1d" => DATA <= x"009e"; + when "10" & x"d1e" => DATA <= x"01e0"; + when "10" & x"d1f" => DATA <= x"1e01"; + when "10" & x"d20" => DATA <= x"c002"; + when "10" & x"d21" => DATA <= x"0a00"; + when "10" & x"d22" => DATA <= x"1000"; + when "10" & x"d23" => DATA <= x"0400"; + when "10" & x"d24" => DATA <= x"0107"; + when "10" & x"d25" => DATA <= x"8078"; + when "10" & x"d26" => DATA <= x"0780"; + when "10" & x"d27" => DATA <= x"7807"; + when "10" & x"d28" => DATA <= x"8078"; + when "10" & x"d29" => DATA <= x"0580"; + when "10" & x"d2a" => DATA <= x"00bc"; + when "10" & x"d2b" => DATA <= x"03c0"; + when "10" & x"d2c" => DATA <= x"2400"; + when "10" & x"d2d" => DATA <= x"11e0"; + when "10" & x"d2e" => DATA <= x"1e00"; + when "10" & x"d2f" => DATA <= x"0008"; + when "10" & x"d30" => DATA <= x"7800"; + when "10" & x"d31" => DATA <= x"0010"; + when "10" & x"d32" => DATA <= x"0004"; + when "10" & x"d33" => DATA <= x"0028"; + when "10" & x"d34" => DATA <= x"e412"; + when "10" & x"d35" => DATA <= x"1904"; + when "10" & x"d36" => DATA <= x"f0cf"; + when "10" & x"d37" => DATA <= x"8000"; + when "10" & x"d38" => DATA <= x"2930"; + when "10" & x"d39" => DATA <= x"9a4c"; + when "10" & x"d3a" => DATA <= x"2252"; + when "10" & x"d3b" => DATA <= x"6137"; + when "10" & x"d3c" => DATA <= x"c03c"; + when "10" & x"d3d" => DATA <= x"03c0"; + when "10" & x"d3e" => DATA <= x"3800"; + when "10" & x"d3f" => DATA <= x"1140"; + when "10" & x"d40" => DATA <= x"008e"; + when "10" & x"d41" => DATA <= x"0004"; + when "10" & x"d42" => DATA <= x"7804"; + when "10" & x"d43" => DATA <= x"8008"; + when "10" & x"d44" => DATA <= x"3c03"; + when "10" & x"d45" => DATA <= x"4008"; + when "10" & x"d46" => DATA <= x"1400"; + when "10" & x"d47" => DATA <= x"40f0"; + when "10" & x"d48" => DATA <= x"0f00"; + when "10" & x"d49" => DATA <= x"f00f"; + when "10" & x"d4a" => DATA <= x"00f0"; + when "10" & x"d4b" => DATA <= x"0000"; + when "10" & x"d4c" => DATA <= x"0a80"; + when "10" & x"d4d" => DATA <= x"0040"; + when "10" & x"d4e" => DATA <= x"0017"; + when "10" & x"d4f" => DATA <= x"8078"; + when "10" & x"d50" => DATA <= x"0780"; + when "10" & x"d51" => DATA <= x"6800"; + when "10" & x"d52" => DATA <= x"4280"; + when "10" & x"d53" => DATA <= x"021e"; + when "10" & x"d54" => DATA <= x"01e0"; + when "10" & x"d55" => DATA <= x"1e01"; + when "10" & x"d56" => DATA <= x"e01f"; + when "10" & x"d57" => DATA <= x"0080"; + when "10" & x"d58" => DATA <= x"7e9f"; + when "10" & x"d59" => DATA <= x"5a8d"; + when "10" & x"d5a" => DATA <= x"d2a1"; + when "10" & x"d5b" => DATA <= x"70f8"; + when "10" & x"d5c" => DATA <= x"dc20"; + when "10" & x"d5d" => DATA <= x"5002"; + when "10" & x"d5e" => DATA <= x"cbc0"; + when "10" & x"d5f" => DATA <= x"2c00"; + when "10" & x"d60" => DATA <= x"a1c0"; + when "10" & x"d61" => DATA <= x"14a0"; + when "10" & x"d62" => DATA <= x"007f"; + when "10" & x"d63" => DATA <= x"8178"; + when "10" & x"d64" => DATA <= x"0003"; + when "10" & x"d65" => DATA <= x"4007"; + when "10" & x"d66" => DATA <= x"f057"; + when "10" & x"d67" => DATA <= x"0002"; + when "10" & x"d68" => DATA <= x"2802"; + when "10" & x"d69" => DATA <= x"8311"; + when "10" & x"d6a" => DATA <= x"9419"; + when "10" & x"d6b" => DATA <= x"c580"; + when "10" & x"d6c" => DATA <= x"0380"; + when "10" & x"d6d" => DATA <= x"1ce0"; + when "10" & x"d6e" => DATA <= x"0020"; + when "10" & x"d6f" => DATA <= x"153c"; + when "10" & x"d70" => DATA <= x"0380"; + when "10" & x"d71" => DATA <= x"040a"; + when "10" & x"d72" => DATA <= x"a100"; + when "10" & x"d73" => DATA <= x"0010"; + when "10" & x"d74" => DATA <= x"0010"; + when "10" & x"d75" => DATA <= x"0008"; + when "10" & x"d76" => DATA <= x"1c00"; + when "10" & x"d77" => DATA <= x"02e0"; + when "10" & x"d78" => DATA <= x"0200"; + when "10" & x"d79" => DATA <= x"5403"; + when "10" & x"d7a" => DATA <= x"c000"; + when "10" & x"d7b" => DATA <= x"4a0c"; + when "10" & x"d7c" => DATA <= x"0703"; + when "10" & x"d7d" => DATA <= x"0080"; + when "10" & x"d7e" => DATA <= x"ca04"; + when "10" & x"d7f" => DATA <= x"0020"; + when "10" & x"d80" => DATA <= x"2c00"; + when "10" & x"d81" => DATA <= x"0203"; + when "10" & x"d82" => DATA <= x"a010"; + when "10" & x"d83" => DATA <= x"0700"; + when "10" & x"d84" => DATA <= x"d085"; + when "10" & x"d85" => DATA <= x"0010"; + when "10" & x"d86" => DATA <= x"6400"; + when "10" & x"d87" => DATA <= x"03e0"; + when "10" & x"d88" => DATA <= x"028f"; + when "10" & x"d89" => DATA <= x"0060"; + when "10" & x"d8a" => DATA <= x"5803"; + when "10" & x"d8b" => DATA <= x"bd8e"; + when "10" & x"d8c" => DATA <= x"cf77"; + when "10" & x"d8d" => DATA <= x"f67a"; + when "10" & x"d8e" => DATA <= x"9d46"; + when "10" & x"d8f" => DATA <= x"ab54"; + when "10" & x"d90" => DATA <= x"a26a"; + when "10" & x"d91" => DATA <= x"8556"; + when "10" & x"d92" => DATA <= x"893f"; + when "10" & x"d93" => DATA <= x"9df9"; + when "10" & x"d94" => DATA <= x"fcbe"; + when "10" & x"d95" => DATA <= x"7f27"; + when "10" & x"d96" => DATA <= x"d608"; + when "10" & x"d97" => DATA <= x"e018"; + when "10" & x"d98" => DATA <= x"f800"; + when "10" & x"d99" => DATA <= x"0400"; + when "10" & x"d9a" => DATA <= x"03f0"; + when "10" & x"d9b" => DATA <= x"0a01"; + when "10" & x"d9c" => DATA <= x"f857"; + when "10" & x"d9d" => DATA <= x"9004"; + when "10" & x"d9e" => DATA <= x"277f"; + when "10" & x"d9f" => DATA <= x"b800"; + when "10" & x"da0" => DATA <= x"0c00"; + when "10" & x"da1" => DATA <= x"07ff"; + when "10" & x"da2" => DATA <= x"bfbf"; + when "10" & x"da3" => DATA <= x"fc03"; + when "10" & x"da4" => DATA <= x"6e21"; + when "10" & x"da5" => DATA <= x"10f0"; + when "10" & x"da6" => DATA <= x"72cd"; + when "10" & x"da7" => DATA <= x"3ffd"; + when "10" & x"da8" => DATA <= x"ff57"; + when "10" & x"da9" => DATA <= x"fc7e"; + when "10" & x"daa" => DATA <= x"0fa3"; + when "10" & x"dab" => DATA <= x"faff"; + when "10" & x"dac" => DATA <= x"afc9"; + when "10" & x"dad" => DATA <= x"003f"; + when "10" & x"dae" => DATA <= x"f7fc"; + when "10" & x"daf" => DATA <= x"8030"; + when "10" & x"db0" => DATA <= x"2b9d"; + when "10" & x"db1" => DATA <= x"9ee6"; + when "10" & x"db2" => DATA <= x"0057"; + when "10" & x"db3" => DATA <= x"005d"; + when "10" & x"db4" => DATA <= x"3e1b"; + when "10" & x"db5" => DATA <= x"0fa7"; + when "10" & x"db6" => DATA <= x"c3f5"; + when "10" & x"db7" => DATA <= x"3ed4"; + when "10" & x"db8" => DATA <= x"6ab5"; + when "10" & x"db9" => DATA <= x"198c"; + when "10" & x"dba" => DATA <= x"a64a"; + when "10" & x"dbb" => DATA <= x"2593"; + when "10" & x"dbc" => DATA <= x"feaf"; + when "10" & x"dbd" => DATA <= x"5f00"; + when "10" & x"dbe" => DATA <= x"f00a"; + when "10" & x"dbf" => DATA <= x"0002"; + when "10" & x"dc0" => DATA <= x"5000"; + when "10" & x"dc1" => DATA <= x"1280"; + when "10" & x"dc2" => DATA <= x"009e"; + when "10" & x"dc3" => DATA <= x"01e0"; + when "10" & x"dc4" => DATA <= x"1e01"; + when "10" & x"dc5" => DATA <= x"2002"; + when "10" & x"dc6" => DATA <= x"0a00"; + when "10" & x"dc7" => DATA <= x"1050"; + when "10" & x"dc8" => DATA <= x"0083"; + when "10" & x"dc9" => DATA <= x"c03c"; + when "10" & x"dca" => DATA <= x"03c0"; + when "10" & x"dcb" => DATA <= x"3c03"; + when "10" & x"dcc" => DATA <= x"c000"; + when "10" & x"dcd" => DATA <= x"001f"; + when "10" & x"dce" => DATA <= x"00f0"; + when "10" & x"dcf" => DATA <= x"0900"; + when "10" & x"dd0" => DATA <= x"0178"; + when "10" & x"dd1" => DATA <= x"0780"; + when "10" & x"dd2" => DATA <= x"0001"; + when "10" & x"dd3" => DATA <= x"1e01"; + when "10" & x"dd4" => DATA <= x"a001"; + when "10" & x"dd5" => DATA <= x"0a00"; + when "10" & x"dd6" => DATA <= x"0878"; + when "10" & x"dd7" => DATA <= x"0000"; + when "10" & x"dd8" => DATA <= x"1143"; + when "10" & x"dd9" => DATA <= x"209e"; + when "10" & x"dda" => DATA <= x"194c"; + when "10" & x"ddb" => DATA <= x"867c"; + when "10" & x"ddc" => DATA <= x"0001"; + when "10" & x"ddd" => DATA <= x"4984"; + when "10" & x"dde" => DATA <= x"4261"; + when "10" & x"ddf" => DATA <= x"108a"; + when "10" & x"de0" => DATA <= x"4c22"; + when "10" & x"de1" => DATA <= x"7807"; + when "10" & x"de2" => DATA <= x"8001"; + when "10" & x"de3" => DATA <= x"3c02"; + when "10" & x"de4" => DATA <= x"8001"; + when "10" & x"de5" => DATA <= x"1a00"; + when "10" & x"de6" => DATA <= x"08f0"; + when "10" & x"de7" => DATA <= x"0d00"; + when "10" & x"de8" => DATA <= x"1078"; + when "10" & x"de9" => DATA <= x"0780"; + when "10" & x"dea" => DATA <= x"0008"; + when "10" & x"deb" => DATA <= x"1e01"; + when "10" & x"dec" => DATA <= x"e01e"; + when "10" & x"ded" => DATA <= x"01e0"; + when "10" & x"dee" => DATA <= x"1e00"; + when "10" & x"def" => DATA <= x"0001"; + when "10" & x"df0" => DATA <= x"5000"; + when "10" & x"df1" => DATA <= x"0a80"; + when "10" & x"df2" => DATA <= x"005e"; + when "10" & x"df3" => DATA <= x"01e0"; + when "10" & x"df4" => DATA <= x"1e01"; + when "10" & x"df5" => DATA <= x"2001"; + when "10" & x"df6" => DATA <= x"0a00"; + when "10" & x"df7" => DATA <= x"0850"; + when "10" & x"df8" => DATA <= x"0043"; + when "10" & x"df9" => DATA <= x"c03c"; + when "10" & x"dfa" => DATA <= x"03c0"; + when "10" & x"dfb" => DATA <= x"2403"; + when "10" & x"dfc" => DATA <= x"e010"; + when "10" & x"dfd" => DATA <= x"0dc7"; + when "10" & x"dfe" => DATA <= x"e371"; + when "10" & x"dff" => DATA <= x"f81c"; + when "10" & x"e00" => DATA <= x"7a3f"; + when "10" & x"e01" => DATA <= x"1b80"; + when "10" & x"e02" => DATA <= x"0010"; + when "10" & x"e03" => DATA <= x"0004"; + when "10" & x"e04" => DATA <= x"6000"; + when "10" & x"e05" => DATA <= x"5207"; + when "10" & x"e06" => DATA <= x"8050"; + when "10" & x"e07" => DATA <= x"0050"; + when "10" & x"e08" => DATA <= x"8800"; + when "10" & x"e09" => DATA <= x"2800"; + when "10" & x"e0a" => DATA <= x"0a94"; + when "10" & x"e0b" => DATA <= x"0140"; + when "10" & x"e0c" => DATA <= x"200e"; + when "10" & x"e0d" => DATA <= x"01a0"; + when "10" & x"e0e" => DATA <= x"0100"; + when "10" & x"e0f" => DATA <= x"a000"; + when "10" & x"e10" => DATA <= x"0800"; + when "10" & x"e11" => DATA <= x"0880"; + when "10" & x"e12" => DATA <= x"02c0"; + when "10" & x"e13" => DATA <= x"40b1"; + when "10" & x"e14" => DATA <= x"580c"; + when "10" & x"e15" => DATA <= x"1603"; + when "10" & x"e16" => DATA <= x"0581"; + when "10" & x"e17" => DATA <= x"0a30"; + when "10" & x"e18" => DATA <= x"210c"; + when "10" & x"e19" => DATA <= x"2800"; + when "10" & x"e1a" => DATA <= x"0da0"; + when "10" & x"e1b" => DATA <= x"080e"; + when "10" & x"e1c" => DATA <= x"0051"; + when "10" & x"e1d" => DATA <= x"0204"; + when "10" & x"e1e" => DATA <= x"0000"; + when "10" & x"e1f" => DATA <= x"4000"; + when "10" & x"e20" => DATA <= x"41a0"; + when "10" & x"e21" => DATA <= x"040e"; + when "10" & x"e22" => DATA <= x"0028"; + when "10" & x"e23" => DATA <= x"0000"; + when "10" & x"e24" => DATA <= x"801e"; + when "10" & x"e25" => DATA <= x"00e0"; + when "10" & x"e26" => DATA <= x"c070"; + when "10" & x"e27" => DATA <= x"1283"; + when "10" & x"e28" => DATA <= x"00de"; + when "10" & x"e29" => DATA <= x"0000"; + when "10" & x"e2a" => DATA <= x"0480"; + when "10" & x"e2b" => DATA <= x"4060"; + when "10" & x"e2c" => DATA <= x"1007"; + when "10" & x"e2d" => DATA <= x"0095"; + when "10" & x"e2e" => DATA <= x"4005"; + when "10" & x"e2f" => DATA <= x"0020"; + when "10" & x"e30" => DATA <= x"0780"; + when "10" & x"e31" => DATA <= x"1400"; + when "10" & x"e32" => DATA <= x"0408"; + when "10" & x"e33" => DATA <= x"0003"; + when "10" & x"e34" => DATA <= x"4000"; + when "10" & x"e35" => DATA <= x"1050"; + when "10" & x"e36" => DATA <= x"0054"; + when "10" & x"e37" => DATA <= x"0041"; + when "10" & x"e38" => DATA <= x"5002"; + when "10" & x"e39" => DATA <= x"8000"; + when "10" & x"e3a" => DATA <= x"8060"; + when "10" & x"e3b" => DATA <= x"7002"; + when "10" & x"e3c" => DATA <= x"0001"; + when "10" & x"e3d" => DATA <= x"5cee"; + when "10" & x"e3e" => DATA <= x"36bb"; + when "10" & x"e3f" => DATA <= x"8d8e"; + when "10" & x"e40" => DATA <= x"e363"; + when "10" & x"e41" => DATA <= x"a2d0"; + when "10" & x"e42" => DATA <= x"0aa5"; + when "10" & x"e43" => DATA <= x"132b"; + when "10" & x"e44" => DATA <= x"aa9f"; + when "10" & x"e45" => DATA <= x"e7f3"; + when "10" & x"e46" => DATA <= x"dbfe"; + when "10" & x"e47" => DATA <= x"9fce"; + when "10" & x"e48" => DATA <= x"e7e7"; + when "10" & x"e49" => DATA <= x"0001"; + when "10" & x"e4a" => DATA <= x"1002"; + when "10" & x"e4b" => DATA <= x"7e3e"; + when "10" & x"e4c" => DATA <= x"0000"; + when "10" & x"e4d" => DATA <= x"102f"; + when "10" & x"e4e" => DATA <= x"003f"; + when "10" & x"e4f" => DATA <= x"c060"; + when "10" & x"e50" => DATA <= x"0705"; + when "10" & x"e51" => DATA <= x"4038"; + when "10" & x"e52" => DATA <= x"0c00"; + when "10" & x"e53" => DATA <= x"3002"; + when "10" & x"e54" => DATA <= x"391f"; + when "10" & x"e55" => DATA <= x"dfe0"; + when "10" & x"e56" => DATA <= x"1a00"; + when "10" & x"e57" => DATA <= x"9ff0"; + when "10" & x"e58" => DATA <= x"5b80"; + when "10" & x"e59" => DATA <= x"01df"; + when "10" & x"e5a" => DATA <= x"f402"; + when "10" & x"e5b" => DATA <= x"0000"; + when "10" & x"e5c" => DATA <= x"8038"; + when "10" & x"e5d" => DATA <= x"068d"; + when "10" & x"e5e" => DATA <= x"0614"; + when "10" & x"e5f" => DATA <= x"01c6"; + when "10" & x"e60" => DATA <= x"9dfe"; + when "10" & x"e61" => DATA <= x"0060"; + when "10" & x"e62" => DATA <= x"77ff"; + when "10" & x"e63" => DATA <= x"1f80"; + when "10" & x"e64" => DATA <= x"07fd"; + when "10" & x"e65" => DATA <= x"7f40"; + when "10" & x"e66" => DATA <= x"0fca"; + when "10" & x"e67" => DATA <= x"001f"; + when "10" & x"e68" => DATA <= x"bff8"; + when "10" & x"e69" => DATA <= x"02bf"; + when "10" & x"e6a" => DATA <= x"dc00"; + when "10" & x"e6b" => DATA <= x"07f8"; + when "10" & x"e6c" => DATA <= x"0080"; + when "10" & x"e6d" => DATA <= x"e667"; + when "10" & x"e6e" => DATA <= x"b1dc"; + when "10" & x"e6f" => DATA <= x"ec0a"; + when "10" & x"e70" => DATA <= x"e00f"; + when "10" & x"e71" => DATA <= x"a7c3"; + when "10" & x"e72" => DATA <= x"c1b4"; + when "10" & x"e73" => DATA <= x"f87c"; + when "10" & x"e74" => DATA <= x"3c1f"; + when "10" & x"e75" => DATA <= x"64b2"; + when "10" & x"e76" => DATA <= x"990c"; + when "10" & x"e77" => DATA <= x"062d"; + when "10" & x"e78" => DATA <= x"6230"; + when "10" & x"e79" => DATA <= x"27d5"; + when "10" & x"e7a" => DATA <= x"eef5"; + when "10" & x"e7b" => DATA <= x"af7b"; + when "10" & x"e7c" => DATA <= x"0022"; + when "10" & x"e7d" => DATA <= x"3cac"; + when "10" & x"e7e" => DATA <= x"0088"; + when "10" & x"e7f" => DATA <= x"f090"; + when "10" & x"e80" => DATA <= x"0e04"; + when "10" & x"e81" => DATA <= x"7078"; + when "10" & x"e82" => DATA <= x"0207"; + when "10" & x"e83" => DATA <= x"4028"; + when "10" & x"e84" => DATA <= x"2103"; + when "10" & x"e85" => DATA <= x"e008"; + when "10" & x"e86" => DATA <= x"6000"; + when "10" & x"e87" => DATA <= x"8280"; + when "10" & x"e88" => DATA <= x"3880"; + when "10" & x"e89" => DATA <= x"0760"; + when "10" & x"e8a" => DATA <= x"0400"; + when "10" & x"e8b" => DATA <= x"7e80"; + when "10" & x"e8c" => DATA <= x"5200"; + when "10" & x"e8d" => DATA <= x"3ec0"; + when "10" & x"e8e" => DATA <= x"0021"; + when "10" & x"e8f" => DATA <= x"cf00"; + when "10" & x"e90" => DATA <= x"0868"; + when "10" & x"e91" => DATA <= x"0500"; + when "10" & x"e92" => DATA <= x"9e2c"; + when "10" & x"e93" => DATA <= x"0044"; + when "10" & x"e94" => DATA <= x"78d0"; + when "10" & x"e95" => DATA <= x"0a02"; + when "10" & x"e96" => DATA <= x"7878"; + when "10" & x"e97" => DATA <= x"0383"; + when "10" & x"e98" => DATA <= x"4028"; + when "10" & x"e99" => DATA <= x"2181"; + when "10" & x"e9a" => DATA <= x"6000"; + when "10" & x"e9b" => DATA <= x"1018"; + when "10" & x"e9c" => DATA <= x"0021"; + when "10" & x"e9d" => DATA <= x"c001"; + when "10" & x"e9e" => DATA <= x"0088"; + when "10" & x"e9f" => DATA <= x"0f40"; + when "10" & x"ea0" => DATA <= x"1108"; + when "10" & x"ea1" => DATA <= x"e715"; + when "10" & x"ea2" => DATA <= x"0c82"; + when "10" & x"ea3" => DATA <= x"6865"; + when "10" & x"ea4" => DATA <= x"f8c0"; + when "10" & x"ea5" => DATA <= x"67e8"; + when "10" & x"ea6" => DATA <= x"03fc"; + when "10" & x"ea7" => DATA <= x"fe3f"; + when "10" & x"ea8" => DATA <= x"2693"; + when "10" & x"ea9" => DATA <= x"0884"; + when "10" & x"eaa" => DATA <= x"c26d"; + when "10" & x"eab" => DATA <= x"5f87"; + when "10" & x"eac" => DATA <= x"f400"; + when "10" & x"ead" => DATA <= x"0673"; + when "10" & x"eae" => DATA <= x"00e8"; + when "10" & x"eaf" => DATA <= x"0011"; + when "10" & x"eb0" => DATA <= x"0804"; + when "10" & x"eb1" => DATA <= x"b004"; + when "10" & x"eb2" => DATA <= x"4207"; + when "10" & x"eb3" => DATA <= x"4028"; + when "10" & x"eb4" => DATA <= x"2133"; + when "10" & x"eb5" => DATA <= x"e000"; + when "10" & x"eb6" => DATA <= x"3d00"; + when "10" & x"eb7" => DATA <= x"a201"; + when "10" & x"eb8" => DATA <= x"9580"; + when "10" & x"eb9" => DATA <= x"1001"; + when "10" & x"eba" => DATA <= x"a002"; + when "10" & x"ebb" => DATA <= x"0700"; + when "10" & x"ebc" => DATA <= x"7207"; + when "10" & x"ebd" => DATA <= x"8078"; + when "10" & x"ebe" => DATA <= x"0001"; + when "10" & x"ebf" => DATA <= x"21a0"; + when "10" & x"ec0" => DATA <= x"0011"; + when "10" & x"ec1" => DATA <= x"1966"; + when "10" & x"ec2" => DATA <= x"c004"; + when "10" & x"ec3" => DATA <= x"4600"; + when "10" & x"ec4" => DATA <= x"000a"; + when "10" & x"ec5" => DATA <= x"8038"; + when "10" & x"ec6" => DATA <= x"0905"; + when "10" & x"ec7" => DATA <= x"e008"; + when "10" & x"ec8" => DATA <= x"0d00"; + when "10" & x"ec9" => DATA <= x"0400"; + when "10" & x"eca" => DATA <= x"0196"; + when "10" & x"ecb" => DATA <= x"0011"; + when "10" & x"ecc" => DATA <= x"a000"; + when "10" & x"ecd" => DATA <= x"8500"; + when "10" & x"ece" => DATA <= x"5085"; + when "10" & x"ecf" => DATA <= x"08f8"; + when "10" & x"ed0" => DATA <= x"021f"; + when "10" & x"ed1" => DATA <= x"4004"; + when "10" & x"ed2" => DATA <= x"0aa3"; + when "10" & x"ed3" => DATA <= x"3580"; + when "10" & x"ed4" => DATA <= x"2000"; + when "10" & x"ed5" => DATA <= x"1b00"; + when "10" & x"ed6" => DATA <= x"40a8"; + when "10" & x"ed7" => DATA <= x"07e7"; + when "10" & x"ed8" => DATA <= x"6e07"; + when "10" & x"ed9" => DATA <= x"1bc9"; + when "10" & x"eda" => DATA <= x"e1f2"; + when "10" & x"edb" => DATA <= x"e000"; + when "10" & x"edc" => DATA <= x"0400"; + when "10" & x"edd" => DATA <= x"0d13"; + when "10" & x"ede" => DATA <= x"022a"; + when "10" & x"edf" => DATA <= x"00e8"; + when "10" & x"ee0" => DATA <= x"0601"; + when "10" & x"ee1" => DATA <= x"014b"; + when "10" & x"ee2" => DATA <= x"401c"; + when "10" & x"ee3" => DATA <= x"0200"; + when "10" & x"ee4" => DATA <= x"1494"; + when "10" & x"ee5" => DATA <= x"b800"; + when "10" & x"ee6" => DATA <= x"0340"; + when "10" & x"ee7" => DATA <= x"0016"; + when "10" & x"ee8" => DATA <= x"9700"; + when "10" & x"ee9" => DATA <= x"0838"; + when "10" & x"eea" => DATA <= x"0004"; + when "10" & x"eeb" => DATA <= x"8016"; + when "10" & x"eec" => DATA <= x"0338"; + when "10" & x"eed" => DATA <= x"b056"; + when "10" & x"eee" => DATA <= x"0804"; + when "10" & x"eef" => DATA <= x"8006"; + when "10" & x"ef0" => DATA <= x"0001"; + when "10" & x"ef1" => DATA <= x"8152"; + when "10" & x"ef2" => DATA <= x"8004"; + when "10" & x"ef3" => DATA <= x"1e00"; + when "10" & x"ef4" => DATA <= x"0045"; + when "10" & x"ef5" => DATA <= x"2200"; + when "10" & x"ef6" => DATA <= x"0a00"; + when "10" & x"ef7" => DATA <= x"0280"; + when "10" & x"ef8" => DATA <= x"008a"; + when "10" & x"ef9" => DATA <= x"f000"; + when "10" & x"efa" => DATA <= x"1004"; + when "10" & x"efb" => DATA <= x"2bc0"; + when "10" & x"efc" => DATA <= x"0050"; + when "10" & x"efd" => DATA <= x"0006"; + when "10" & x"efe" => DATA <= x"8300"; + when "10" & x"eff" => DATA <= x"80ca"; + when "10" & x"f00" => DATA <= x"04a0"; + when "10" & x"f01" => DATA <= x"cf00"; + when "10" & x"f02" => DATA <= x"4048"; + when "10" & x"f03" => DATA <= x"0802"; + when "10" & x"f04" => DATA <= x"8040"; + when "10" & x"f05" => DATA <= x"7200"; + when "10" & x"f06" => DATA <= x"0400"; + when "10" & x"f07" => DATA <= x"054a"; + when "10" & x"f08" => DATA <= x"9400"; + when "10" & x"f09" => DATA <= x"21e0"; + when "10" & x"f0a" => DATA <= x"0400"; + when "10" & x"f0b" => DATA <= x"0680"; + when "10" & x"f0c" => DATA <= x"0440"; + when "10" & x"f0d" => DATA <= x"0050"; + when "10" & x"f0e" => DATA <= x"0282"; + when "10" & x"f0f" => DATA <= x"b801"; + when "10" & x"f10" => DATA <= x"0140"; + when "10" & x"f11" => DATA <= x"0106"; + when "10" & x"f12" => DATA <= x"031d"; + when "10" & x"f13" => DATA <= x"86c7"; + when "10" & x"f14" => DATA <= x"61b1"; + when "10" & x"f15" => DATA <= x"daeb"; + when "10" & x"f16" => DATA <= x"f39a"; + when "10" & x"f17" => DATA <= x"0ba0"; + when "10" & x"f18" => DATA <= x"2a29"; + when "10" & x"f19" => DATA <= x"5080"; + when "10" & x"f1a" => DATA <= x"f7f2"; + when "10" & x"f1b" => DATA <= x"fb07"; + when "10" & x"f1c" => DATA <= x"c01f"; + when "10" & x"f1d" => DATA <= x"efce"; + when "10" & x"f1e" => DATA <= x"0002"; + when "10" & x"f1f" => DATA <= x"001f"; + when "10" & x"f20" => DATA <= x"88f4"; + when "10" & x"f21" => DATA <= x"1a00"; + when "10" & x"f22" => DATA <= x"0150"; + when "10" & x"f23" => DATA <= x"0004"; + when "10" & x"f24" => DATA <= x"2fff"; + when "10" & x"f25" => DATA <= x"fffd"; + when "10" & x"f26" => DATA <= x"7ff8"; + when "10" & x"f27" => DATA <= x"0807"; + when "10" & x"f28" => DATA <= x"4d28"; + when "10" & x"f29" => DATA <= x"d801"; + when "10" & x"f2a" => DATA <= x"7fe7"; + when "10" & x"f2b" => DATA <= x"f005"; + when "10" & x"f2c" => DATA <= x"5fd1"; + when "10" & x"f2d" => DATA <= x"fd5f"; + when "10" & x"f2e" => DATA <= x"f803"; + when "10" & x"f2f" => DATA <= x"ffc0"; + when "10" & x"f30" => DATA <= x"0fe7"; + when "10" & x"f31" => DATA <= x"8a00"; + when "10" & x"f32" => DATA <= x"ae26"; + when "10" & x"f33" => DATA <= x"1382"; + when "10" & x"f34" => DATA <= x"b01c"; + when "10" & x"f35" => DATA <= x"f43e"; + when "10" & x"f36" => DATA <= x"9fa1"; + when "10" & x"f37" => DATA <= x"f0f0"; + when "10" & x"f38" => DATA <= x"5d3e"; + when "10" & x"f39" => DATA <= x"01a8"; + when "10" & x"f3a" => DATA <= x"100a"; + when "10" & x"f3b" => DATA <= x"2068"; + when "10" & x"f3c" => DATA <= x"d06a"; + when "10" & x"f3d" => DATA <= x"bf1f"; + when "10" & x"f3e" => DATA <= x"afc7"; + when "10" & x"f3f" => DATA <= x"a4f8"; + when "10" & x"f40" => DATA <= x"0000"; + when "10" & x"f41" => DATA <= x"4001"; + when "10" & x"f42" => DATA <= x"e3f1"; + when "10" & x"f43" => DATA <= x"5600"; + when "10" & x"f44" => DATA <= x"0470"; + when "10" & x"f45" => DATA <= x"007d"; + when "10" & x"f46" => DATA <= x"feaf"; + when "10" & x"f47" => DATA <= x"a00a"; + when "10" & x"f48" => DATA <= x"0400"; + when "10" & x"f49" => DATA <= x"26df"; + when "10" & x"f4a" => DATA <= x"ebfd"; + when "10" & x"f4b" => DATA <= x"000e"; + when "10" & x"f4c" => DATA <= x"3fde"; + when "10" & x"f4d" => DATA <= x"7400"; + when "10" & x"f4e" => DATA <= x"100c"; + when "10" & x"f4f" => DATA <= x"0007"; + when "10" & x"f50" => DATA <= x"cff6"; + when "10" & x"f51" => DATA <= x"de80"; + when "10" & x"f52" => DATA <= x"0e1f"; + when "10" & x"f53" => DATA <= x"e6da"; + when "10" & x"f54" => DATA <= x"0010"; + when "10" & x"f55" => DATA <= x"0c00"; + when "10" & x"f56" => DATA <= x"0dda"; + when "10" & x"f57" => DATA <= x"ffd0"; + when "10" & x"f58" => DATA <= x"0723"; + when "10" & x"f59" => DATA <= x"fde3"; + when "10" & x"f5a" => DATA <= x"4004"; + when "10" & x"f5b" => DATA <= x"0600"; + when "10" & x"f5c" => DATA <= x"01e8"; + when "10" & x"f5d" => DATA <= x"ff78"; + when "10" & x"f5e" => DATA <= x"e803"; + when "10" & x"f5f" => DATA <= x"21fe"; + when "10" & x"f60" => DATA <= x"ead0"; + when "10" & x"f61" => DATA <= x"061b"; + when "10" & x"f62" => DATA <= x"fd77"; + when "10" & x"f63" => DATA <= x"4014"; + when "10" & x"f64" => DATA <= x"0200"; + when "10" & x"f65" => DATA <= x"433f"; + when "10" & x"f66" => DATA <= x"d9fa"; + when "10" & x"f67" => DATA <= x"0087"; + when "10" & x"f68" => DATA <= x"7fb3"; + when "10" & x"f69" => DATA <= x"e802"; + when "10" & x"f6a" => DATA <= x"8180"; + when "10" & x"f6b" => DATA <= x"04d7"; + when "10" & x"f6c" => DATA <= x"f97e"; + when "10" & x"f6d" => DATA <= x"80b8"; + when "10" & x"f6e" => DATA <= x"009c"; + when "10" & x"f6f" => DATA <= x"ff2f"; + when "10" & x"f70" => DATA <= x"d000"; + when "10" & x"f71" => DATA <= x"2018"; + when "10" & x"f72" => DATA <= x"0013"; + when "10" & x"f73" => DATA <= x"bfcf"; + when "10" & x"f74" => DATA <= x"fa00"; + when "10" & x"f75" => DATA <= x"1c7f"; + when "10" & x"f76" => DATA <= x"bba8"; + when "10" & x"f77" => DATA <= x"0284"; + when "10" & x"f78" => DATA <= x"000e"; + when "10" & x"f79" => DATA <= x"c7fb"; + when "10" & x"f7a" => DATA <= x"df80"; + when "10" & x"f7b" => DATA <= x"1814"; + when "10" & x"f7c" => DATA <= x"0002"; + when "10" & x"f7d" => DATA <= x"7fd0"; + when "10" & x"f7e" => DATA <= x"0031"; + when "10" & x"f7f" => DATA <= x"0208"; + when "10" & x"f80" => DATA <= x"1000"; + when "10" & x"f81" => DATA <= x"1ff4"; + when "10" & x"f82" => DATA <= x"0010"; + when "10" & x"f83" => DATA <= x"0388"; + when "10" & x"f84" => DATA <= x"2801"; + when "10" & x"f85" => DATA <= x"ffc0"; + when "10" & x"f86" => DATA <= x"07e7"; + when "10" & x"f87" => DATA <= x"0500"; + when "10" & x"f88" => DATA <= x"3fe8"; + when "10" & x"f89" => DATA <= x"0006"; + when "10" & x"f8a" => DATA <= x"e000"; + when "10" & x"f8b" => DATA <= x"5403"; + when "10" & x"f8c" => DATA <= x"fe98"; + when "10" & x"f8d" => DATA <= x"00c0"; + when "10" & x"f8e" => DATA <= x"7000"; + when "10" & x"f8f" => DATA <= x"6dfe"; + when "10" & x"f90" => DATA <= x"f7d0"; + when "10" & x"f91" => DATA <= x"02f3"; + when "10" & x"f92" => DATA <= x"fd37"; + when "10" & x"f93" => DATA <= x"4000"; + when "10" & x"f94" => DATA <= x"80c0"; + when "10" & x"f95" => DATA <= x"002c"; + when "10" & x"f96" => DATA <= x"ff6d"; + when "10" & x"f97" => DATA <= x"e800"; + when "10" & x"f98" => DATA <= x"e1fe"; + when "10" & x"f99" => DATA <= x"e5a0"; + when "10" & x"f9a" => DATA <= x"0100"; + when "10" & x"f9b" => DATA <= x"c000"; + when "10" & x"f9c" => DATA <= x"dd7f"; + when "10" & x"f9d" => DATA <= x"bf74"; + when "10" & x"f9e" => DATA <= x"01e6"; + when "10" & x"f9f" => DATA <= x"ff78"; + when "10" & x"fa0" => DATA <= x"f001"; + when "10" & x"fa1" => DATA <= x"0000"; + when "10" & x"fa2" => DATA <= x"b07f"; + when "10" & x"fa3" => DATA <= x"be34"; + when "10" & x"fa4" => DATA <= x"0190"; + when "10" & x"fa5" => DATA <= x"ff75"; + when "10" & x"fa6" => DATA <= x"f002"; + when "10" & x"fa7" => DATA <= x"0000"; + when "10" & x"fa8" => DATA <= x"c97f"; + when "10" & x"fa9" => DATA <= x"bae8"; + when "10" & x"faa" => DATA <= x"0280"; + when "10" & x"fab" => DATA <= x"400d"; + when "10" & x"fac" => DATA <= x"27fb"; + when "10" & x"fad" => DATA <= x"3f40"; + when "10" & x"fae" => DATA <= x"10ef"; + when "10" & x"faf" => DATA <= x"f6ed"; + when "10" & x"fb0" => DATA <= x"0050"; + when "10" & x"fb1" => DATA <= x"1000"; + when "10" & x"fb2" => DATA <= x"1aff"; + when "10" & x"fb3" => DATA <= x"3de8"; + when "10" & x"fb4" => DATA <= x"003d"; + when "10" & x"fb5" => DATA <= x"fe1f"; + when "10" & x"fb6" => DATA <= x"e000"; + when "10" & x"fb7" => DATA <= x"6000"; + when "10" & x"fb8" => DATA <= x"1cff"; + when "10" & x"fb9" => DATA <= x"5ee8"; + when "10" & x"fba" => DATA <= x"02f1"; + when "10" & x"fbb" => DATA <= x"feae"; + when "10" & x"fbc" => DATA <= x"a00a"; + when "10" & x"fbd" => DATA <= x"1000"; + when "10" & x"fbe" => DATA <= x"1b1f"; + when "10" & x"fbf" => DATA <= x"efe0"; + when "10" & x"fc0" => DATA <= x"00c3"; + when "10" & x"fc1" => DATA <= x"800e"; + when "10" & x"fc2" => DATA <= x"4ff7"; + when "10" & x"fc3" => DATA <= x"d800"; + when "10" & x"fc4" => DATA <= x"2620"; + when "10" & x"fc5" => DATA <= x"3000"; + when "10" & x"fc6" => DATA <= x"1e4f"; + when "10" & x"fc7" => DATA <= x"f7d6"; + when "10" & x"fc8" => DATA <= x"8039"; + when "10" & x"fc9" => DATA <= x"1fef"; + when "10" & x"fca" => DATA <= x"1d00"; + when "10" & x"fcb" => DATA <= x"203f"; + when "10" & x"fcc" => DATA <= x"d2a9"; + when "10" & x"fcd" => DATA <= x"8000"; + when "10" & x"fce" => DATA <= x"fa9f"; + when "10" & x"fcf" => DATA <= x"a9fc"; + when "10" & x"fd0" => DATA <= x"fcaf"; + when "10" & x"fd1" => DATA <= x"1f80"; + when "10" & x"fd2" => DATA <= x"41a4"; + when "10" & x"fd3" => DATA <= x"0070"; + when "10" & x"fd4" => DATA <= x"0120"; + when "10" & x"fd5" => DATA <= x"ff00"; + when "10" & x"fd6" => DATA <= x"809e"; + when "10" & x"fd7" => DATA <= x"e000"; + when "10" & x"fd8" => DATA <= x"1500"; + when "10" & x"fd9" => DATA <= x"3fe8"; + when "10" & x"fda" => DATA <= x"0033"; + when "10" & x"fdb" => DATA <= x"4000"; + when "10" & x"fdc" => DATA <= x"4203"; + when "10" & x"fdd" => DATA <= x"fc88"; + when "10" & x"fde" => DATA <= x"807f"; + when "10" & x"fdf" => DATA <= x"8198"; + when "10" & x"fe0" => DATA <= x"6f80"; + when "10" & x"fe1" => DATA <= x"03fc"; + when "10" & x"fe2" => DATA <= x"0080"; + when "10" & x"fe3" => DATA <= x"013b"; + when "10" & x"fe4" => DATA <= x"41e0"; + when "10" & x"fe5" => DATA <= x"300b"; + when "10" & x"fe6" => DATA <= x"fc00"; + when "10" & x"fe7" => DATA <= x"88a0"; + when "10" & x"fe8" => DATA <= x"f182"; + when "10" & x"fe9" => DATA <= x"d1e2"; + when "10" & x"fea" => DATA <= x"0f00"; + when "10" & x"feb" => DATA <= x"11c0"; + when "10" & x"fec" => DATA <= x"8000"; + when "10" & x"fed" => DATA <= x"8700"; + when "10" & x"fee" => DATA <= x"0228"; + when "10" & x"fef" => DATA <= x"06c0"; + when "10" & x"ff0" => DATA <= x"1542"; + when "10" & x"ff1" => DATA <= x"8d00"; + when "10" & x"ff2" => DATA <= x"1000"; + when "10" & x"ff3" => DATA <= x"0800"; + when "10" & x"ff4" => DATA <= x"000d"; + when "10" & x"ff5" => DATA <= x"0007"; + when "10" & x"ff6" => DATA <= x"8094"; + when "10" & x"ff7" => DATA <= x"2ba0"; + when "10" & x"ff8" => DATA <= x"0040"; + when "10" & x"ff9" => DATA <= x"7031"; + when "10" & x"ffa" => DATA <= x"f9e0"; + when "10" & x"ffb" => DATA <= x"0ffe"; + when "10" & x"ffc" => DATA <= x"00a8"; + when "10" & x"ffd" => DATA <= x"0a01"; + when "10" & x"ffe" => DATA <= x"02c8"; + when "10" & x"fff" => DATA <= x"000c"; + when "11" & x"000" => DATA <= x"a010"; + when "11" & x"001" => DATA <= x"4078"; + when "11" & x"002" => DATA <= x"000b"; + when "11" & x"003" => DATA <= x"8000"; + when "11" & x"004" => DATA <= x"4000"; + when "11" & x"005" => DATA <= x"5700"; + when "11" & x"006" => DATA <= x"2815"; + when "11" & x"007" => DATA <= x"5200"; + when "11" & x"008" => DATA <= x"a0ae"; + when "11" & x"009" => DATA <= x"a742"; + when "11" & x"00a" => DATA <= x"0000"; + when "11" & x"00b" => DATA <= x"f339"; + when "11" & x"00c" => DATA <= x"d799"; + when "11" & x"00d" => DATA <= x"cde6"; + when "11" & x"00e" => DATA <= x"6321"; + when "11" & x"00f" => DATA <= x"a094"; + when "11" & x"010" => DATA <= x"5d54"; + when "11" & x"011" => DATA <= x"8a44"; + when "11" & x"012" => DATA <= x"202d"; + when "11" & x"013" => DATA <= x"fc8e"; + when "11" & x"014" => DATA <= x"7f00"; + when "11" & x"015" => DATA <= x"3158"; + when "11" & x"016" => DATA <= x"2380"; + when "11" & x"017" => DATA <= x"c3e0"; + when "11" & x"018" => DATA <= x"0010"; + when "11" & x"019" => DATA <= x"7e3f"; + when "11" & x"01a" => DATA <= x"c060"; + when "11" & x"01b" => DATA <= x"0783"; + when "11" & x"01c" => DATA <= x"fe80"; + when "11" & x"01d" => DATA <= x"1020"; + when "11" & x"01e" => DATA <= x"7003"; + when "11" & x"01f" => DATA <= x"fabf"; + when "11" & x"020" => DATA <= x"dc08"; + when "11" & x"021" => DATA <= x"007b"; + when "11" & x"022" => DATA <= x"8001"; + when "11" & x"023" => DATA <= x"bfe8"; + when "11" & x"024" => DATA <= x"07fb"; + when "11" & x"025" => DATA <= x"437f"; + when "11" & x"026" => DATA <= x"ec06"; + when "11" & x"027" => DATA <= x"9040"; + when "11" & x"028" => DATA <= x"1468"; + when "11" & x"029" => DATA <= x"36a3"; + when "11" & x"02a" => DATA <= x"4a36"; + when "11" & x"02b" => DATA <= x"7a7f"; + when "11" & x"02c" => DATA <= x"ff1f"; + when "11" & x"02d" => DATA <= x"83e4"; + when "11" & x"02e" => DATA <= x"febf"; + when "11" & x"02f" => DATA <= x"3c01"; + when "11" & x"030" => DATA <= x"ff60"; + when "11" & x"031" => DATA <= x"0e66"; + when "11" & x"032" => DATA <= x"7b98"; + when "11" & x"033" => DATA <= x"015c"; + when "11" & x"034" => DATA <= x"0407"; + when "11" & x"035" => DATA <= x"706c"; + when "11" & x"036" => DATA <= x"3e9f"; + when "11" & x"037" => DATA <= x"0fd4"; + when "11" & x"038" => DATA <= x"f87d"; + when "11" & x"039" => DATA <= x"3ed5"; + when "11" & x"03a" => DATA <= x"6837"; + when "11" & x"03b" => DATA <= x"1baf"; + when "11" & x"03c" => DATA <= x"53eb"; + when "11" & x"03d" => DATA <= x"e4e0"; + when "11" & x"03e" => DATA <= x"f4ef"; + when "11" & x"03f" => DATA <= x"078b"; + when "11" & x"040" => DATA <= x"cebf"; + when "11" & x"041" => DATA <= x"d803"; + when "11" & x"042" => DATA <= x"0002"; + when "11" & x"043" => DATA <= x"0160"; + when "11" & x"044" => DATA <= x"340a"; + when "11" & x"045" => DATA <= x"031a"; + when "11" & x"046" => DATA <= x"c00a"; + when "11" & x"047" => DATA <= x"1049"; + when "11" & x"048" => DATA <= x"b416"; + when "11" & x"049" => DATA <= x"0e30"; + when "11" & x"04a" => DATA <= x"08d0"; + when "11" & x"04b" => DATA <= x"e844"; + when "11" & x"04c" => DATA <= x"002e"; + when "11" & x"04d" => DATA <= x"2bfe"; + when "11" & x"04e" => DATA <= x"8100"; + when "11" & x"04f" => DATA <= x"0fc0"; + when "11" & x"050" => DATA <= x"03de"; + when "11" & x"051" => DATA <= x"bff8"; + when "11" & x"052" => DATA <= x"01fc"; + when "11" & x"053" => DATA <= x"b87f"; + when "11" & x"054" => DATA <= x"aede"; + when "11" & x"055" => DATA <= x"5400"; + when "11" & x"056" => DATA <= x"8006"; + when "11" & x"057" => DATA <= x"9e88"; + when "11" & x"058" => DATA <= x"04a6"; + when "11" & x"059" => DATA <= x"5001"; + when "11" & x"05a" => DATA <= x"2efe"; + when "11" & x"05b" => DATA <= x"4438"; + when "11" & x"05c" => DATA <= x"7bbc"; + when "11" & x"05d" => DATA <= x"00b4"; + when "11" & x"05e" => DATA <= x"7abf"; + when "11" & x"05f" => DATA <= x"eaf4"; + when "11" & x"060" => DATA <= x"7e3d"; + when "11" & x"061" => DATA <= x"a002"; + when "11" & x"062" => DATA <= x"dd3d"; + when "11" & x"063" => DATA <= x"8280"; + when "11" & x"064" => DATA <= x"5c00"; + when "11" & x"065" => DATA <= x"07d0"; + when "11" & x"066" => DATA <= x"0aa0"; + when "11" & x"067" => DATA <= x"583e"; + when "11" & x"068" => DATA <= x"2400"; + when "11" & x"069" => DATA <= x"8280"; + when "11" & x"06a" => DATA <= x"1800"; + when "11" & x"06b" => DATA <= x"5a1c"; + when "11" & x"06c" => DATA <= x"0004"; + when "11" & x"06d" => DATA <= x"04b0"; + when "11" & x"06e" => DATA <= x"0000"; + when "11" & x"06f" => DATA <= x"a415"; + when "11" & x"070" => DATA <= x"0000"; + when "11" & x"071" => DATA <= x"814d"; + when "11" & x"072" => DATA <= x"0602"; + when "11" & x"073" => DATA <= x"8421"; + when "11" & x"074" => DATA <= x"c00d"; + when "11" & x"075" => DATA <= x"00bb"; + when "11" & x"076" => DATA <= x"0000"; + when "11" & x"077" => DATA <= x"04e0"; + when "11" & x"078" => DATA <= x"0398"; + when "11" & x"079" => DATA <= x"55c0"; + when "11" & x"07a" => DATA <= x"0390"; + when "11" & x"07b" => DATA <= x"0728"; + when "11" & x"07c" => DATA <= x"d454"; + when "11" & x"07d" => DATA <= x"fbe0"; + when "11" & x"07e" => DATA <= x"0300"; + when "11" & x"07f" => DATA <= x"e380"; + when "11" & x"080" => DATA <= x"7800"; + when "11" & x"081" => DATA <= x"1415"; + when "11" & x"082" => DATA <= x"e001"; + when "11" & x"083" => DATA <= x"4700"; + when "11" & x"084" => DATA <= x"0228"; + when "11" & x"085" => DATA <= x"0281"; + when "11" & x"086" => DATA <= x"2800"; + when "11" & x"087" => DATA <= x"1415"; + when "11" & x"088" => DATA <= x"e000"; + when "11" & x"089" => DATA <= x"2500"; + when "11" & x"08a" => DATA <= x"0a8a"; + when "11" & x"08b" => DATA <= x"b600"; + when "11" & x"08c" => DATA <= x"3c18"; + when "11" & x"08d" => DATA <= x"0a0c"; + when "11" & x"08e" => DATA <= x"0c27"; + when "11" & x"08f" => DATA <= x"d508"; + when "11" & x"090" => DATA <= x"7001"; + when "11" & x"091" => DATA <= x"5280"; + when "11" & x"092" => DATA <= x"6c00"; + when "11" & x"093" => DATA <= x"de0e"; + when "11" & x"094" => DATA <= x"2718"; + when "11" & x"095" => DATA <= x"3801"; + when "11" & x"096" => DATA <= x"fe03"; + when "11" & x"097" => DATA <= x"0080"; + when "11" & x"098" => DATA <= x"005c"; + when "11" & x"099" => DATA <= x"00ff"; + when "11" & x"09a" => DATA <= x"a04d"; + when "11" & x"09b" => DATA <= x"007f"; + when "11" & x"09c" => DATA <= x"e800"; + when "11" & x"09d" => DATA <= x"8004"; + when "11" & x"09e" => DATA <= x"ffb0"; + when "11" & x"09f" => DATA <= x"0183"; + when "11" & x"0a0" => DATA <= x"fe82"; + when "11" & x"0a1" => DATA <= x"3801"; + when "11" & x"0a2" => DATA <= x"800d"; + when "11" & x"0a3" => DATA <= x"7f88"; + when "11" & x"0a4" => DATA <= x"2401"; + when "11" & x"0a5" => DATA <= x"8e00"; + when "11" & x"0a6" => DATA <= x"7fe8"; + when "11" & x"0a7" => DATA <= x"000c"; + when "11" & x"0a8" => DATA <= x"84ff"; + when "11" & x"0a9" => DATA <= x"0091"; + when "11" & x"0aa" => DATA <= x"3800"; + when "11" & x"0ab" => DATA <= x"c000"; + when "11" & x"0ac" => DATA <= x"7ff0"; + when "11" & x"0ad" => DATA <= x"0008"; + when "11" & x"0ae" => DATA <= x"0003"; + when "11" & x"0af" => DATA <= x"003f"; + when "11" & x"0b0" => DATA <= x"e800"; + when "11" & x"0b1" => DATA <= x"0200"; + when "11" & x"0b2" => DATA <= x"0110"; + when "11" & x"0b3" => DATA <= x"900f"; + when "11" & x"0b4" => DATA <= x"fd00"; + when "11" & x"0b5" => DATA <= x"00b0"; + when "11" & x"0b6" => DATA <= x"5ff3"; + when "11" & x"0b7" => DATA <= x"c140"; + when "11" & x"0b8" => DATA <= x"0c9e"; + when "11" & x"0b9" => DATA <= x"cb25"; + when "11" & x"0ba" => DATA <= x"0228"; + when "11" & x"0bb" => DATA <= x"0004"; + when "11" & x"0bc" => DATA <= x"05a0"; + when "11" & x"0bd" => DATA <= x"1027"; + when "11" & x"0be" => DATA <= x"003c"; + when "11" & x"0bf" => DATA <= x"1815"; + when "11" & x"0c0" => DATA <= x"0010"; + when "11" & x"0c1" => DATA <= x"e00a"; + when "11" & x"0c2" => DATA <= x"0100"; + when "11" & x"0c3" => DATA <= x"560b"; + when "11" & x"0c4" => DATA <= x"0380"; + when "11" & x"0c5" => DATA <= x"2a03"; + when "11" & x"0c6" => DATA <= x"403a"; + when "11" & x"0c7" => DATA <= x"0180"; + when "11" & x"0c8" => DATA <= x"f07b"; + when "11" & x"0c9" => DATA <= x"af47"; + when "11" & x"0ca" => DATA <= x"c8f0"; + when "11" & x"0cb" => DATA <= x"1b7d"; + when "11" & x"0cc" => DATA <= x"a2e3"; + when "11" & x"0cd" => DATA <= x"3416"; + when "11" & x"0ce" => DATA <= x"432f"; + when "11" & x"0cf" => DATA <= x"900b"; + when "11" & x"0d0" => DATA <= x"f5e0"; + when "11" & x"0d1" => DATA <= x"f13f"; + when "11" & x"0d2" => DATA <= x"9bc5"; + when "11" & x"0d3" => DATA <= x"6efe"; + when "11" & x"0d4" => DATA <= x"f070"; + when "11" & x"0d5" => DATA <= x"3c01"; + when "11" & x"0d6" => DATA <= x"a100"; + when "11" & x"0d7" => DATA <= x"2702"; + when "11" & x"0d8" => DATA <= x"bd87"; + when "11" & x"0d9" => DATA <= x"f608"; + when "11" & x"0da" => DATA <= x"b400"; + when "11" & x"0db" => DATA <= x"0438"; + when "11" & x"0dc" => DATA <= x"0283"; + when "11" & x"0dd" => DATA <= x"0afa"; + when "11" & x"0de" => DATA <= x"0141"; + when "11" & x"0df" => DATA <= x"03b0"; + when "11" & x"0e0" => DATA <= x"1821"; + when "11" & x"0e1" => DATA <= x"71d5"; + when "11" & x"0e2" => DATA <= x"0081"; + when "11" & x"0e3" => DATA <= x"7830"; + when "11" & x"0e4" => DATA <= x"00f7"; + when "11" & x"0e5" => DATA <= x"6abd"; + when "11" & x"0e6" => DATA <= x"1fe0"; + when "11" & x"0e7" => DATA <= x"07a3"; + when "11" & x"0e8" => DATA <= x"e040"; + when "11" & x"0e9" => DATA <= x"2ba2"; + when "11" & x"0ea" => DATA <= x"f379"; + when "11" & x"0eb" => DATA <= x"009e"; + when "11" & x"0ec" => DATA <= x"7f60"; + when "11" & x"0ed" => DATA <= x"0025"; + when "11" & x"0ee" => DATA <= x"00b2"; + when "11" & x"0ef" => DATA <= x"5c20"; + when "11" & x"0f0" => DATA <= x"0448"; + when "11" & x"0f1" => DATA <= x"000a"; + when "11" & x"0f2" => DATA <= x"402c"; + when "11" & x"0f3" => DATA <= x"9600"; + when "11" & x"0f4" => DATA <= x"001a"; + when "11" & x"0f5" => DATA <= x"00a4"; + when "11" & x"0f6" => DATA <= x"07d8"; + when "11" & x"0f7" => DATA <= x"52e0"; + when "11" & x"0f8" => DATA <= x"164b"; + when "11" & x"0f9" => DATA <= x"1b01"; + when "11" & x"0fa" => DATA <= x"0180"; + when "11" & x"0fb" => DATA <= x"7800"; + when "11" & x"0fc" => DATA <= x"2140"; + when "11" & x"0fd" => DATA <= x"0552"; + when "11" & x"0fe" => DATA <= x"0580"; + when "11" & x"0ff" => DATA <= x"2850"; + when "11" & x"100" => DATA <= x"2001"; + when "11" & x"101" => DATA <= x"0000"; + when "11" & x"102" => DATA <= x"0400"; + when "11" & x"103" => DATA <= x"050a"; + when "11" & x"104" => DATA <= x"9456"; + when "11" & x"105" => DATA <= x"0040"; + when "11" & x"106" => DATA <= x"0030"; + when "11" & x"107" => DATA <= x"9048"; + when "11" & x"108" => DATA <= x"3015"; + when "11" & x"109" => DATA <= x"4122"; + when "11" & x"10a" => DATA <= x"d068"; + when "11" & x"10b" => DATA <= x"8457"; + when "11" & x"10c" => DATA <= x"4054"; + when "11" & x"10d" => DATA <= x"52a8"; + when "11" & x"10e" => DATA <= x"9f4f"; + when "11" & x"10f" => DATA <= x"e7b7"; + when "11" & x"110" => DATA <= x"fd3f"; + when "11" & x"111" => DATA <= x"95c0"; + when "11" & x"112" => DATA <= x"0f10"; + when "11" & x"113" => DATA <= x"0a20"; + when "11" & x"114" => DATA <= x"04fc"; + when "11" & x"115" => DATA <= x"7c50"; + when "11" & x"116" => DATA <= x"000c"; + when "11" & x"117" => DATA <= x"0001"; + when "11" & x"118" => DATA <= x"003f"; + when "11" & x"119" => DATA <= x"c1e0"; + when "11" & x"11a" => DATA <= x"0202"; + when "11" & x"11b" => DATA <= x"0000"; + when "11" & x"11c" => DATA <= x"e970"; + when "11" & x"11d" => DATA <= x"1fe8"; + when "11" & x"11e" => DATA <= x"037f"; + when "11" & x"11f" => DATA <= x"c066"; + when "11" & x"120" => DATA <= x"0006"; + when "11" & x"121" => DATA <= x"ffb8"; + when "11" & x"122" => DATA <= x"1fa5"; + when "11" & x"123" => DATA <= x"8009"; + when "11" & x"124" => DATA <= x"06c0"; + when "11" & x"125" => DATA <= x"4683"; + when "11" & x"126" => DATA <= x"6e00"; + when "11" & x"127" => DATA <= x"1851"; + when "11" & x"128" => DATA <= x"b57f"; + when "11" & x"129" => DATA <= x"d004"; + when "11" & x"12a" => DATA <= x"ff8f"; + when "11" & x"12b" => DATA <= x"c020"; + when "11" & x"12c" => DATA <= x"05f4"; + when "11" & x"12d" => DATA <= x"dfbf"; + when "11" & x"12e" => DATA <= x"2802"; + when "11" & x"12f" => DATA <= x"bff8"; + when "11" & x"130" => DATA <= x"01fe"; + when "11" & x"131" => DATA <= x"fc40"; + when "11" & x"132" => DATA <= x"001f"; + when "11" & x"133" => DATA <= x"fc00"; + when "11" & x"134" => DATA <= x"cf63"; + when "11" & x"135" => DATA <= x"b9d8"; + when "11" & x"136" => DATA <= x"15c0"; + when "11" & x"137" => DATA <= x"0070"; + when "11" & x"138" => DATA <= x"07c3"; + when "11" & x"139" => DATA <= x"69f0"; + when "11" & x"13a" => DATA <= x"f878"; + when "11" & x"13b" => DATA <= x"3e1e"; + when "11" & x"13c" => DATA <= x"0f86"; + when "11" & x"13d" => DATA <= x"0a80"; + when "11" & x"13e" => DATA <= x"5a46"; + when "11" & x"13f" => DATA <= x"2456"; + when "11" & x"140" => DATA <= x"2be5"; + when "11" & x"141" => DATA <= x"fee0"; + when "11" & x"142" => DATA <= x"0400"; + when "11" & x"143" => DATA <= x"1ff5"; + when "11" & x"144" => DATA <= x"7e01"; + when "11" & x"145" => DATA <= x"659f"; + when "11" & x"146" => DATA <= x"cf07"; + when "11" & x"147" => DATA <= x"07e3"; + when "11" & x"148" => DATA <= x"ddec"; + when "11" & x"149" => DATA <= x"4c7f"; + when "11" & x"14a" => DATA <= x"d803"; + when "11" & x"14b" => DATA <= x"89fd"; + when "11" & x"14c" => DATA <= x"200e"; + when "11" & x"14d" => DATA <= x"0783"; + when "11" & x"14e" => DATA <= x"5ddf"; + when "11" & x"14f" => DATA <= x"c00e"; + when "11" & x"150" => DATA <= x"a351"; + when "11" & x"151" => DATA <= x"2ea1"; + when "11" & x"152" => DATA <= x"b808"; + when "11" & x"153" => DATA <= x"0cfe"; + when "11" & x"154" => DATA <= x"6552"; + when "11" & x"155" => DATA <= x"5c80"; + when "11" & x"156" => DATA <= x"0040"; + when "11" & x"157" => DATA <= x"15df"; + when "11" & x"158" => DATA <= x"21c0"; + when "11" & x"159" => DATA <= x"3005"; + when "11" & x"15a" => DATA <= x"1ed8"; + when "11" & x"15b" => DATA <= x"0032"; + when "11" & x"15c" => DATA <= x"4010"; + when "11" & x"15d" => DATA <= x"0f00"; + when "11" & x"15e" => DATA <= x"2700"; + when "11" & x"15f" => DATA <= x"3004"; + when "11" & x"160" => DATA <= x"0007"; + when "11" & x"161" => DATA <= x"79e8"; + when "11" & x"162" => DATA <= x"403c"; + when "11" & x"163" => DATA <= x"000e"; + when "11" & x"164" => DATA <= x"47e0"; + when "11" & x"165" => DATA <= x"07fb"; + when "11" & x"166" => DATA <= x"0780"; + when "11" & x"167" => DATA <= x"1014"; + when "11" & x"168" => DATA <= x"0080"; + when "11" & x"169" => DATA <= x"0020"; + when "11" & x"16a" => DATA <= x"2801"; + when "11" & x"16b" => DATA <= x"0140"; + when "11" & x"16c" => DATA <= x"0800"; + when "11" & x"16d" => DATA <= x"0143"; + when "11" & x"16e" => DATA <= x"c028"; + when "11" & x"16f" => DATA <= x"0009"; + when "11" & x"170" => DATA <= x"a000"; + when "11" & x"171" => DATA <= x"8f00"; + when "11" & x"172" => DATA <= x"f00f"; + when "11" & x"173" => DATA <= x"00f0"; + when "11" & x"174" => DATA <= x"0e00"; + when "11" & x"175" => DATA <= x"2250"; + when "11" & x"176" => DATA <= x"0012"; + when "11" & x"177" => DATA <= x"8000"; + when "11" & x"178" => DATA <= x"8000"; + when "11" & x"179" => DATA <= x"2780"; + when "11" & x"17a" => DATA <= x"017c"; + when "11" & x"17b" => DATA <= x"0030"; + when "11" & x"17c" => DATA <= x"1048"; + when "11" & x"17d" => DATA <= x"0628"; + when "11" & x"17e" => DATA <= x"4030"; + when "11" & x"17f" => DATA <= x"10a0"; + when "11" & x"180" => DATA <= x"0058"; + when "11" & x"181" => DATA <= x"0a80"; + when "11" & x"182" => DATA <= x"0600"; + when "11" & x"183" => DATA <= x"0140"; + when "11" & x"184" => DATA <= x"0002"; + when "11" & x"185" => DATA <= x"13f0"; + when "11" & x"186" => DATA <= x"0d00"; + when "11" & x"187" => DATA <= x"0250"; + when "11" & x"188" => DATA <= x"0012"; + when "11" & x"189" => DATA <= x"8000"; + when "11" & x"18a" => DATA <= x"9e01"; + when "11" & x"18b" => DATA <= x"4002"; + when "11" & x"18c" => DATA <= x"0f00"; + when "11" & x"18d" => DATA <= x"e000"; + when "11" & x"18e" => DATA <= x"4500"; + when "11" & x"18f" => DATA <= x"023c"; + when "11" & x"190" => DATA <= x"0041"; + when "11" & x"191" => DATA <= x"e014"; + when "11" & x"192" => DATA <= x"0095"; + when "11" & x"193" => DATA <= x"0004"; + when "11" & x"194" => DATA <= x"0234"; + when "11" & x"195" => DATA <= x"0001"; + when "11" & x"196" => DATA <= x"f00e"; + when "11" & x"197" => DATA <= x"0010"; + when "11" & x"198" => DATA <= x"807c"; + when "11" & x"199" => DATA <= x"0340"; + when "11" & x"19a" => DATA <= x"021d"; + when "11" & x"19b" => DATA <= x"c000"; + when "11" & x"19c" => DATA <= x"1050"; + when "11" & x"19d" => DATA <= x"0081"; + when "11" & x"19e" => DATA <= x"f8fd"; + when "11" & x"19f" => DATA <= x"7f80"; + when "11" & x"1a0" => DATA <= x"0214"; + when "11" & x"1a1" => DATA <= x"0010"; + when "11" & x"1a2" => DATA <= x"4fd7"; + when "11" & x"1a3" => DATA <= x"fe80"; + when "11" & x"1a4" => DATA <= x"3993"; + when "11" & x"1a5" => DATA <= x"eff0"; + when "11" & x"1a6" => DATA <= x"0013"; + when "11" & x"1a7" => DATA <= x"803b"; + when "11" & x"1a8" => DATA <= x"fc00"; + when "11" & x"1a9" => DATA <= x"20a0"; + when "11" & x"1aa" => DATA <= x"0100"; + when "11" & x"1ab" => DATA <= x"02bf"; + when "11" & x"1ac" => DATA <= x"f401"; + when "11" & x"1ad" => DATA <= x"cebf"; + when "11" & x"1ae" => DATA <= x"7fc8"; + when "11" & x"1af" => DATA <= x"0009"; + when "11" & x"1b0" => DATA <= x"da9f"; + when "11" & x"1b1" => DATA <= x"7fe8"; + when "11" & x"1b2" => DATA <= x"010d"; + when "11" & x"1b3" => DATA <= x"067f"; + when "11" & x"1b4" => DATA <= x"d60a"; + when "11" & x"1b5" => DATA <= x"007a"; + when "11" & x"1b6" => DATA <= x"f802"; + when "11" & x"1b7" => DATA <= x"f740"; + when "11" & x"1b8" => DATA <= x"0040"; + when "11" & x"1b9" => DATA <= x"001f"; + when "11" & x"1ba" => DATA <= x"8058"; + when "11" & x"1bb" => DATA <= x"00f0"; + when "11" & x"1bc" => DATA <= x"005f"; + when "11" & x"1bd" => DATA <= x"d000"; + when "11" & x"1be" => DATA <= x"63b0"; + when "11" & x"1bf" => DATA <= x"1741"; + when "11" & x"1c0" => DATA <= x"0f8a"; + when "11" & x"1c1" => DATA <= x"007e"; + when "11" & x"1c2" => DATA <= x"bff8"; + when "11" & x"1c3" => DATA <= x"01fe"; + when "11" & x"1c4" => DATA <= x"0040"; + when "11" & x"1c5" => DATA <= x"1fcb"; + when "11" & x"1c6" => DATA <= x"fc00"; + when "11" & x"1c7" => DATA <= x"ff00"; + when "11" & x"1c8" => DATA <= x"0fc3"; + when "11" & x"1c9" => DATA <= x"8783"; + when "11" & x"1ca" => DATA <= x"e500"; + when "11" & x"1cb" => DATA <= x"3fc0"; + when "11" & x"1cc" => DATA <= x"0f46"; + when "11" & x"1cd" => DATA <= x"c0a2"; + when "11" & x"1ce" => DATA <= x"be00"; + when "11" & x"1cf" => DATA <= x"03f1"; + when "11" & x"1d0" => DATA <= x"c1e5"; + when "11" & x"1d1" => DATA <= x"e8b0"; + when "11" & x"1d2" => DATA <= x"5a3d"; + when "11" & x"1d3" => DATA <= x"1e14"; + when "11" & x"1d4" => DATA <= x"008e"; + when "11" & x"1d5" => DATA <= x"48a0"; + when "11" & x"1d6" => DATA <= x"5e07"; + when "11" & x"1d7" => DATA <= x"1700"; + when "11" & x"1d8" => DATA <= x"c280"; + when "11" & x"1d9" => DATA <= x"002f"; + when "11" & x"1da" => DATA <= x"f008"; + when "11" & x"1db" => DATA <= x"0006"; + when "11" & x"1dc" => DATA <= x"0200"; + when "11" & x"1dd" => DATA <= x"0880"; + when "11" & x"1de" => DATA <= x"0ffa"; + when "11" & x"1df" => DATA <= x"0070"; + when "11" & x"1e0" => DATA <= x"3e38"; + when "11" & x"1e1" => DATA <= x"01ff"; + when "11" & x"1e2" => DATA <= x"4014"; + when "11" & x"1e3" => DATA <= x"fe00"; + when "11" & x"1e4" => DATA <= x"7a00"; + when "11" & x"1e5" => DATA <= x"1ff4"; + when "11" & x"1e6" => DATA <= x"0040"; + when "11" & x"1e7" => DATA <= x"0052"; + when "11" & x"1e8" => DATA <= x"0001"; + when "11" & x"1e9" => DATA <= x"ff50"; + when "11" & x"1ea" => DATA <= x"0143"; + when "11" & x"1eb" => DATA <= x"2210"; + when "11" & x"1ec" => DATA <= x"a80a"; + when "11" & x"1ed" => DATA <= x"47b4"; + when "11" & x"1ee" => DATA <= x"5128"; + when "11" & x"1ef" => DATA <= x"8402"; + when "11" & x"1f0" => DATA <= x"2582"; + when "11" & x"1f1" => DATA <= x"aa41"; + when "11" & x"1f2" => DATA <= x"206a"; + when "11" & x"1f3" => DATA <= x"aaa0"; + when "11" & x"1f4" => DATA <= x"9567"; + when "11" & x"1f5" => DATA <= x"ef7f"; + when "11" & x"1f6" => DATA <= x"00b1"; + when "11" & x"1f7" => DATA <= x"6800"; + when "11" & x"1f8" => DATA <= x"05c0"; + when "11" & x"1f9" => DATA <= x"0e07"; + when "11" & x"1fa" => DATA <= x"fbf0"; + when "11" & x"1fb" => DATA <= x"0940"; + when "11" & x"1fc" => DATA <= x"0040"; + when "11" & x"1fd" => DATA <= x"0547"; + when "11" & x"1fe" => DATA <= x"a0ea"; + when "11" & x"1ff" => DATA <= x"0001"; + when "11" & x"200" => DATA <= x"501f"; + when "11" & x"201" => DATA <= x"ffff"; + when "11" & x"202" => DATA <= x"f5fe"; + when "11" & x"203" => DATA <= x"0194"; + when "11" & x"204" => DATA <= x"1a01"; + when "11" & x"205" => DATA <= x"20f9"; + when "11" & x"206" => DATA <= x"b002"; + when "11" & x"207" => DATA <= x"ffc0"; + when "11" & x"208" => DATA <= x"600a"; + when "11" & x"209" => DATA <= x"3feb"; + when "11" & x"20a" => DATA <= x"f008"; + when "11" & x"20b" => DATA <= x"007d"; + when "11" & x"20c" => DATA <= x"c00f"; + when "11" & x"20d" => DATA <= x"f1f8"; + when "11" & x"20e" => DATA <= x"0078"; + when "11" & x"20f" => DATA <= x"fce0"; + when "11" & x"210" => DATA <= x"03f9"; + when "11" & x"211" => DATA <= x"f900"; + when "11" & x"212" => DATA <= x"007f"; + when "11" & x"213" => DATA <= x"b888"; + when "11" & x"214" => DATA <= x"0e06"; + when "11" & x"215" => DATA <= x"0381"; + when "11" & x"216" => DATA <= x"c6e7"; + when "11" & x"217" => DATA <= x"77a7"; + when "11" & x"218" => DATA <= x"e87c"; + when "11" & x"219" => DATA <= x"3c17"; + when "11" & x"21a" => DATA <= x"4f86"; + when "11" & x"21b" => DATA <= x"c3f4"; + when "11" & x"21c" => DATA <= x"8ac4"; + when "11" & x"21d" => DATA <= x"a446"; + when "11" & x"21e" => DATA <= x"2915"; + when "11" & x"21f" => DATA <= x"81f7"; + when "11" & x"220" => DATA <= x"ebf7"; + when "11" & x"221" => DATA <= x"b9dd"; + when "11" & x"222" => DATA <= x"eb5e"; + when "11" & x"223" => DATA <= x"e777"; + when "11" & x"224" => DATA <= x"bbf0"; + when "11" & x"225" => DATA <= x"3cff"; + when "11" & x"226" => DATA <= x"0f00"; + when "11" & x"227" => DATA <= x"120b"; + when "11" & x"228" => DATA <= x"caff"; + when "11" & x"229" => DATA <= x"7838"; + when "11" & x"22a" => DATA <= x"5f0f"; + when "11" & x"22b" => DATA <= x"07f8"; + when "11" & x"22c" => DATA <= x"1cbe"; + when "11" & x"22d" => DATA <= x"ff0b"; + when "11" & x"22e" => DATA <= x"8028"; + when "11" & x"22f" => DATA <= x"05fe"; + when "11" & x"230" => DATA <= x"007e"; + when "11" & x"231" => DATA <= x"bfc0"; + when "11" & x"232" => DATA <= x"0200"; + when "11" & x"233" => DATA <= x"0200"; + when "11" & x"234" => DATA <= x"0e00"; + when "11" & x"235" => DATA <= x"2fbf"; + when "11" & x"236" => DATA <= x"c000"; + when "11" & x"237" => DATA <= x"4000"; + when "11" & x"238" => DATA <= x"15fc"; + when "11" & x"239" => DATA <= x"0ea0"; + when "11" & x"23a" => DATA <= x"f000"; + when "11" & x"23b" => DATA <= x"1280"; + when "11" & x"23c" => DATA <= x"1fe0"; + when "11" & x"23d" => DATA <= x"4a00"; + when "11" & x"23e" => DATA <= x"4050"; + when "11" & x"23f" => DATA <= x"0081"; + when "11" & x"240" => DATA <= x"fe48"; + when "11" & x"241" => DATA <= x"a000"; + when "11" & x"242" => DATA <= x"0d00"; + when "11" & x"243" => DATA <= x"081f"; + when "11" & x"244" => DATA <= x"e02a"; + when "11" & x"245" => DATA <= x"0048"; + when "11" & x"246" => DATA <= x"0810"; + when "11" & x"247" => DATA <= x"0c07"; + when "11" & x"248" => DATA <= x"f9b0"; + when "11" & x"249" => DATA <= x"042f"; + when "11" & x"24a" => DATA <= x"5800"; + when "11" & x"24b" => DATA <= x"5c0f"; + when "11" & x"24c" => DATA <= x"17ed"; + when "11" & x"24d" => DATA <= x"0200"; + when "11" & x"24e" => DATA <= x"c00b"; + when "11" & x"24f" => DATA <= x"f1f9"; + when "11" & x"250" => DATA <= x"fdfe"; + when "11" & x"251" => DATA <= x"0404"; + when "11" & x"252" => DATA <= x"5003"; + when "11" & x"253" => DATA <= x"ec00"; + when "11" & x"254" => DATA <= x"100f"; + when "11" & x"255" => DATA <= x"8207"; + when "11" & x"256" => DATA <= x"4420"; + when "11" & x"257" => DATA <= x"03fc"; + when "11" & x"258" => DATA <= x"0080"; + when "11" & x"259" => DATA <= x"7a00"; + when "11" & x"25a" => DATA <= x"2820"; + when "11" & x"25b" => DATA <= x"00ff"; + when "11" & x"25c" => DATA <= x"402f"; + when "11" & x"25d" => DATA <= x"dff2"; + when "11" & x"25e" => DATA <= x"00ff"; + when "11" & x"25f" => DATA <= x"1800"; + when "11" & x"260" => DATA <= x"1832"; + when "11" & x"261" => DATA <= x"00ff"; + when "11" & x"262" => DATA <= x"a001"; + when "11" & x"263" => DATA <= x"dc80"; + when "11" & x"264" => DATA <= x"3fc4"; + when "11" & x"265" => DATA <= x"4047"; + when "11" & x"266" => DATA <= x"da03"; + when "11" & x"267" => DATA <= x"801b"; + when "11" & x"268" => DATA <= x"f400"; + when "11" & x"269" => DATA <= x"017f"; + when "11" & x"26a" => DATA <= x"f003"; + when "11" & x"26b" => DATA <= x"7e80"; + when "11" & x"26c" => DATA <= x"018f"; + when "11" & x"26d" => DATA <= x"fe00"; + when "11" & x"26e" => DATA <= x"7f90"; + when "11" & x"26f" => DATA <= x"1000"; + when "11" & x"270" => DATA <= x"07f8"; + when "11" & x"271" => DATA <= x"014c"; + when "11" & x"272" => DATA <= x"007f"; + when "11" & x"273" => DATA <= x"8002"; + when "11" & x"274" => DATA <= x"0003"; + when "11" & x"275" => DATA <= x"f800"; + when "11" & x"276" => DATA <= x"1010"; + when "11" & x"277" => DATA <= x"0fb0"; + when "11" & x"278" => DATA <= x"580f"; + when "11" & x"279" => DATA <= x"f56f"; + when "11" & x"27a" => DATA <= x"003f"; + when "11" & x"27b" => DATA <= x"1fe7"; + when "11" & x"27c" => DATA <= x"f67b"; + when "11" & x"27d" => DATA <= x"f380"; + when "11" & x"27e" => DATA <= x"0a65"; + when "11" & x"27f" => DATA <= x"b058"; + when "11" & x"280" => DATA <= x"10fc"; + when "11" & x"281" => DATA <= x"01a0"; + when "11" & x"282" => DATA <= x"007d"; + when "11" & x"283" => DATA <= x"7f88"; + when "11" & x"284" => DATA <= x"0944"; + when "11" & x"285" => DATA <= x"0080"; + when "11" & x"286" => DATA <= x"0130"; + when "11" & x"287" => DATA <= x"6379"; + when "11" & x"288" => DATA <= x"3c00"; + when "11" & x"289" => DATA <= x"2004"; + when "11" & x"28a" => DATA <= x"0000"; + when "11" & x"28b" => DATA <= x"0340"; + when "11" & x"28c" => DATA <= x"0070"; + when "11" & x"28d" => DATA <= x"1800"; + when "11" & x"28e" => DATA <= x"0740"; + when "11" & x"28f" => DATA <= x"0274"; + when "11" & x"290" => DATA <= x"187d"; + when "11" & x"291" => DATA <= x"fe00"; + when "11" & x"292" => DATA <= x"0800"; + when "11" & x"293" => DATA <= x"0102"; + when "11" & x"294" => DATA <= x"5060"; + when "11" & x"295" => DATA <= x"1002"; + when "11" & x"296" => DATA <= x"0464"; + when "11" & x"297" => DATA <= x"8015"; + when "11" & x"298" => DATA <= x"0043"; + when "11" & x"299" => DATA <= x"5021"; + when "11" & x"29a" => DATA <= x"e26c"; + when "11" & x"29b" => DATA <= x"4000"; + when "11" & x"29c" => DATA <= x"0049"; + when "11" & x"29d" => DATA <= x"9a00"; + when "11" & x"29e" => DATA <= x"7fd6"; + when "11" & x"29f" => DATA <= x"f801"; + when "11" & x"2a0" => DATA <= x"ead4"; + when "11" & x"2a1" => DATA <= x"6850"; + when "11" & x"2a2" => DATA <= x"057a"; + when "11" & x"2a3" => DATA <= x"0001"; + when "11" & x"2a4" => DATA <= x"6110"; + when "11" & x"2a5" => DATA <= x"c070"; + when "11" & x"2a6" => DATA <= x"0cf0"; + when "11" & x"2a7" => DATA <= x"0378"; + when "11" & x"2a8" => DATA <= x"0302"; + when "11" & x"2a9" => DATA <= x"800f"; + when "11" & x"2aa" => DATA <= x"80d0"; + when "11" & x"2ab" => DATA <= x"0040"; + when "11" & x"2ac" => DATA <= x"00ff"; + when "11" & x"2ad" => DATA <= x"a001"; + when "11" & x"2ae" => DATA <= x"1500"; + when "11" & x"2af" => DATA <= x"0800"; + when "11" & x"2b0" => DATA <= x"007a"; + when "11" & x"2b1" => DATA <= x"0008"; + when "11" & x"2b2" => DATA <= x"4800"; + when "11" & x"2b3" => DATA <= x"83c0"; + when "11" & x"2b4" => DATA <= x"081e"; + when "11" & x"2b5" => DATA <= x"0054"; + when "11" & x"2b6" => DATA <= x"a004"; + when "11" & x"2b7" => DATA <= x"0480"; + when "11" & x"2b8" => DATA <= x"1068"; + when "11" & x"2b9" => DATA <= x"0081"; + when "11" & x"2ba" => DATA <= x"c004"; + when "11" & x"2bb" => DATA <= x"030d"; + when "11" & x"2bc" => DATA <= x"0000"; + when "11" & x"2bd" => DATA <= x"a800"; + when "11" & x"2be" => DATA <= x"0400"; + when "11" & x"2bf" => DATA <= x"1850"; + when "11" & x"2c0" => DATA <= x"0006"; + when "11" & x"2c1" => DATA <= x"4003"; + when "11" & x"2c2" => DATA <= x"dec0"; + when "11" & x"2c3" => DATA <= x"6af0"; + when "11" & x"2c4" => DATA <= x"0026"; + when "11" & x"2c5" => DATA <= x"8010"; + when "11" & x"2c6" => DATA <= x"0082"; + when "11" & x"2c7" => DATA <= x"07f7"; + when "11" & x"2c8" => DATA <= x"0e27"; + when "11" & x"2c9" => DATA <= x"03c1"; + when "11" & x"2ca" => DATA <= x"a0e3"; + when "11" & x"2cb" => DATA <= x"ff80"; + when "11" & x"2cc" => DATA <= x"03bc"; + when "11" & x"2cd" => DATA <= x"00ff"; + when "11" & x"2ce" => DATA <= x"d000"; + when "11" & x"2cf" => DATA <= x"0801"; + when "11" & x"2d0" => DATA <= x"ffe0"; + when "11" & x"2d1" => DATA <= x"0ffb"; + when "11" & x"2d2" => DATA <= x"0010"; + when "11" & x"2d3" => DATA <= x"bfec"; + when "11" & x"2d4" => DATA <= x"0020"; + when "11" & x"2d5" => DATA <= x"fff0"; + when "11" & x"2d6" => DATA <= x"07ff"; + when "11" & x"2d7" => DATA <= x"0001"; + when "11" & x"2d8" => DATA <= x"3801"; + when "11" & x"2d9" => DATA <= x"fe00"; + when "11" & x"2da" => DATA <= x"4068"; + when "11" & x"2db" => DATA <= x"03fe"; + when "11" & x"2dc" => DATA <= x"4000"; + when "11" & x"2dd" => DATA <= x"5400"; + when "11" & x"2de" => DATA <= x"ffb0"; + when "11" & x"2df" => DATA <= x"0603"; + when "11" & x"2e0" => DATA <= x"fff0"; + when "11" & x"2e1" => DATA <= x"00e2"; + when "11" & x"2e2" => DATA <= x"95d0"; + when "11" & x"2e3" => DATA <= x"e576"; + when "11" & x"2e4" => DATA <= x"2900"; + when "11" & x"2e5" => DATA <= x"aee9"; + when "11" & x"2e6" => DATA <= x"0082"; + when "11" & x"2e7" => DATA <= x"4002"; + when "11" & x"2e8" => DATA <= x"d000"; + when "11" & x"2e9" => DATA <= x"5c28"; + when "11" & x"2ea" => DATA <= x"806b"; + when "11" & x"2eb" => DATA <= x"2000"; + when "11" & x"2ec" => DATA <= x"0d57"; + when "11" & x"2ed" => DATA <= x"ab55"; + when "11" & x"2ee" => DATA <= x"51d5"; + when "11" & x"2ef" => DATA <= x"2a85"; + when "11" & x"2f0" => DATA <= x"7aad"; + when "11" & x"2f1" => DATA <= x"9f50"; + when "11" & x"2f2" => DATA <= x"0835"; + when "11" & x"2f3" => DATA <= x"8a8d"; + when "11" & x"2f4" => DATA <= x"e6a7"; + when "11" & x"2f5" => DATA <= x"4597"; + when "11" & x"2f6" => DATA <= x"edfc"; + when "11" & x"2f7" => DATA <= x"8f40"; + when "11" & x"2f8" => DATA <= x"0c56"; + when "11" & x"2f9" => DATA <= x"0821"; + when "11" & x"2fa" => DATA <= x"f8f8"; + when "11" & x"2fb" => DATA <= x"0036"; + when "11" & x"2fc" => DATA <= x"1f8f"; + when "11" & x"2fd" => DATA <= x"f008"; + when "11" & x"2fe" => DATA <= x"02bf"; + when "11" & x"2ff" => DATA <= x"c000"; + when "11" & x"300" => DATA <= x"4408"; + when "11" & x"301" => DATA <= x"3e80"; + when "11" & x"302" => DATA <= x"2bfd"; + when "11" & x"303" => DATA <= x"c15f"; + when "11" & x"304" => DATA <= x"eefa"; + when "11" & x"305" => DATA <= x"005f"; + when "11" & x"306" => DATA <= x"effb"; + when "11" & x"307" => DATA <= x"e9f9"; + when "11" & x"308" => DATA <= x"dfe4"; + when "11" & x"309" => DATA <= x"1f01"; + when "11" & x"30a" => DATA <= x"f000"; + when "11" & x"30b" => DATA <= x"03c3"; + when "11" & x"30c" => DATA <= x"ffc7"; + when "11" & x"30d" => DATA <= x"e2fb"; + when "11" & x"30e" => DATA <= x"3fb0"; + when "11" & x"30f" => DATA <= x"0afc"; + when "11" & x"310" => DATA <= x"b00a"; + when "11" & x"311" => DATA <= x"ff73"; + when "11" & x"312" => DATA <= x"002b"; + when "11" & x"313" => DATA <= x"8080"; + when "11" & x"314" => DATA <= x"e667"; + when "11" & x"315" => DATA <= x"b1d3"; + when "11" & x"316" => DATA <= x"f43e"; + when "11" & x"317" => DATA <= x"9f0f"; + when "11" & x"318" => DATA <= x"a7c3"; + when "11" & x"319" => DATA <= x"e1b6"; + when "11" & x"31a" => DATA <= x"2314"; + when "11" & x"31b" => DATA <= x"0a45"; + when "11" & x"31c" => DATA <= x"20d2"; + when "11" & x"31d" => DATA <= x"0110"; + when "11" & x"31e" => DATA <= x"ff57"; + when "11" & x"31f" => DATA <= x"f4ff"; + when "11" & x"320" => DATA <= x"dfe3"; + when "11" & x"321" => DATA <= x"ca37"; + when "11" & x"322" => DATA <= x"0c1f"; + when "11" & x"323" => DATA <= x"1c60"; + when "11" & x"324" => DATA <= x"7428"; + when "11" & x"325" => DATA <= x"b380"; + when "11" & x"326" => DATA <= x"090b"; + when "11" & x"327" => DATA <= x"7401"; + when "11" & x"328" => DATA <= x"041e"; + when "11" & x"329" => DATA <= x"0008"; + when "11" & x"32a" => DATA <= x"0004"; + when "11" & x"32b" => DATA <= x"8f70"; + when "11" & x"32c" => DATA <= x"2001"; + when "11" & x"32d" => DATA <= x"fef8"; + when "11" & x"32e" => DATA <= x"7e34"; + when "11" & x"32f" => DATA <= x"1060"; + when "11" & x"330" => DATA <= x"6430"; + when "11" & x"331" => DATA <= x"027f"; + when "11" & x"332" => DATA <= x"c3c0"; + when "11" & x"333" => DATA <= x"0010"; + when "11" & x"334" => DATA <= x"002e"; + when "11" & x"335" => DATA <= x"02e1"; + when "11" & x"336" => DATA <= x"f000"; + when "11" & x"337" => DATA <= x"7838"; + when "11" & x"338" => DATA <= x"1000"; + when "11" & x"339" => DATA <= x"0104"; + when "11" & x"33a" => DATA <= x"1e00"; + when "11" & x"33b" => DATA <= x"f010"; + when "11" & x"33c" => DATA <= x"8040"; + when "11" & x"33d" => DATA <= x"6b80"; + when "11" & x"33e" => DATA <= x"03fc"; + when "11" & x"33f" => DATA <= x"00ff"; + when "11" & x"340" => DATA <= x"2204"; + when "11" & x"341" => DATA <= x"4021"; + when "11" & x"342" => DATA <= x"1101"; + when "11" & x"343" => DATA <= x"fc00"; + when "11" & x"344" => DATA <= x"7e04"; + when "11" & x"345" => DATA <= x"0880"; + when "11" & x"346" => DATA <= x"4c30"; + when "11" & x"347" => DATA <= x"80d0"; + when "11" & x"348" => DATA <= x"00f4"; + when "11" & x"349" => DATA <= x"e000"; + when "11" & x"34a" => DATA <= x"1002"; + when "11" & x"34b" => DATA <= x"805f"; + when "11" & x"34c" => DATA <= x"bc00"; + when "11" & x"34d" => DATA <= x"0300"; + when "11" & x"34e" => DATA <= x"9040"; + when "11" & x"34f" => DATA <= x"0ffa"; + when "11" & x"350" => DATA <= x"0008"; + when "11" & x"351" => DATA <= x"0481"; + when "11" & x"352" => DATA <= x"8b87"; + when "11" & x"353" => DATA <= x"600e"; + when "11" & x"354" => DATA <= x"8000"; + when "11" & x"355" => DATA <= x"4120"; + when "11" & x"356" => DATA <= x"231c"; + when "11" & x"357" => DATA <= x"4c08"; + when "11" & x"358" => DATA <= x"e000"; + when "11" & x"359" => DATA <= x"4000"; + when "11" & x"35a" => DATA <= x"88f0"; + when "11" & x"35b" => DATA <= x"0810"; + when "11" & x"35c" => DATA <= x"0015"; + when "11" & x"35d" => DATA <= x"0140"; + when "11" & x"35e" => DATA <= x"0fa2"; + when "11" & x"35f" => DATA <= x"03e0"; + when "11" & x"360" => DATA <= x"00f0"; + when "11" & x"361" => DATA <= x"e005"; + when "11" & x"362" => DATA <= x"5808"; + when "11" & x"363" => DATA <= x"0200"; + when "11" & x"364" => DATA <= x"7fa3"; + when "11" & x"365" => DATA <= x"2801"; + when "11" & x"366" => DATA <= x"fe00"; + when "11" & x"367" => DATA <= x"100d"; + when "11" & x"368" => DATA <= x"100e"; + when "11" & x"369" => DATA <= x"6101"; + when "11" & x"36a" => DATA <= x"a1f2"; + when "11" & x"36b" => DATA <= x"0062"; + when "11" & x"36c" => DATA <= x"3440"; + when "11" & x"36d" => DATA <= x"2627"; + when "11" & x"36e" => DATA <= x"c001"; + when "11" & x"36f" => DATA <= x"fe00"; + when "11" & x"370" => DATA <= x"00af"; + when "11" & x"371" => DATA <= x"6800"; + when "11" & x"372" => DATA <= x"0208"; + when "11" & x"373" => DATA <= x"7f80"; + when "11" & x"374" => DATA <= x"0408"; + when "11" & x"375" => DATA <= x"0000"; + when "11" & x"376" => DATA <= x"4280"; + when "11" & x"377" => DATA <= x"1fe0"; + when "11" & x"378" => DATA <= x"0008"; + when "11" & x"379" => DATA <= x"9240"; + when "11" & x"37a" => DATA <= x"1fe0"; + when "11" & x"37b" => DATA <= x"0008"; + when "11" & x"37c" => DATA <= x"4421"; + when "11" & x"37d" => DATA <= x"c00f"; + when "11" & x"37e" => DATA <= x"f782"; + when "11" & x"37f" => DATA <= x"c288"; + when "11" & x"380" => DATA <= x"3800"; + when "11" & x"381" => DATA <= x"2201"; + when "11" & x"382" => DATA <= x"7b82"; + when "11" & x"383" => DATA <= x"6801"; + when "11" & x"384" => DATA <= x"00bc"; + when "11" & x"385" => DATA <= x"5fa0"; + when "11" & x"386" => DATA <= x"1fef"; + when "11" & x"387" => DATA <= x"ba18"; + when "11" & x"388" => DATA <= x"9030"; + when "11" & x"389" => DATA <= x"3bbe"; + when "11" & x"38a" => DATA <= x"4018"; + when "11" & x"38b" => DATA <= x"0206"; + when "11" & x"38c" => DATA <= x"e3f6"; + when "11" & x"38d" => DATA <= x"8000"; + when "11" & x"38e" => DATA <= x"2c00"; + when "11" & x"38f" => DATA <= x"287c"; + when "11" & x"390" => DATA <= x"aef7"; + when "11" & x"391" => DATA <= x"138d"; + when "11" & x"392" => DATA <= x"6401"; + when "11" & x"393" => DATA <= x"9cff"; + when "11" & x"394" => DATA <= x"0703"; + when "11" & x"395" => DATA <= x"2b7d"; + when "11" & x"396" => DATA <= x"80d0"; + when "11" & x"397" => DATA <= x"aff7"; + when "11" & x"398" => DATA <= x"b111"; + when "11" & x"399" => DATA <= x"e8fc"; + when "11" & x"39a" => DATA <= x"024f"; + when "11" & x"39b" => DATA <= x"f8d1"; + when "11" & x"39c" => DATA <= x"1ccf"; + when "11" & x"39d" => DATA <= x"0057"; + when "11" & x"39e" => DATA <= x"fa7c"; + when "11" & x"39f" => DATA <= x"1a00"; + when "11" & x"3a0" => DATA <= x"783f"; + when "11" & x"3a1" => DATA <= x"c015"; + when "11" & x"3a2" => DATA <= x"fe1f"; + when "11" & x"3a3" => DATA <= x"0008"; + when "11" & x"3a4" => DATA <= x"abfc"; + when "11" & x"3a5" => DATA <= x"015f"; + when "11" & x"3a6" => DATA <= x"ec04"; + when "11" & x"3a7" => DATA <= x"0304"; + when "11" & x"3a8" => DATA <= x"868f"; + when "11" & x"3a9" => DATA <= x"003f"; + when "11" & x"3aa" => DATA <= x"e47c"; + when "11" & x"3ab" => DATA <= x"1000"; + when "11" & x"3ac" => DATA <= x"083f"; + when "11" & x"3ad" => DATA <= x"f400"; + when "11" & x"3ae" => DATA <= x"0400"; + when "11" & x"3af" => DATA <= x"7fc8"; + when "11" & x"3b0" => DATA <= x"0281"; + when "11" & x"3b1" => DATA <= x"5201"; + when "11" & x"3b2" => DATA <= x"7f80"; + when "11" & x"3b3" => DATA <= x"f806"; + when "11" & x"3b4" => DATA <= x"a284"; + when "11" & x"3b5" => DATA <= x"0ff1"; + when "11" & x"3b6" => DATA <= x"8710"; + when "11" & x"3b7" => DATA <= x"2108"; + when "11" & x"3b8" => DATA <= x"4007"; + when "11" & x"3b9" => DATA <= x"fc80"; + when "11" & x"3ba" => DATA <= x"280a"; + when "11" & x"3bb" => DATA <= x"2027"; + when "11" & x"3bc" => DATA <= x"ff03"; + when "11" & x"3bd" => DATA <= x"0081"; + when "11" & x"3be" => DATA <= x"4050"; + when "11" & x"3bf" => DATA <= x"03fe"; + when "11" & x"3c0" => DATA <= x"400c"; + when "11" & x"3c1" => DATA <= x"06a3"; + when "11" & x"3c2" => DATA <= x"41fc"; + when "11" & x"3c3" => DATA <= x"614e"; + when "11" & x"3c4" => DATA <= x"0740"; + when "11" & x"3c5" => DATA <= x"2d00"; + when "11" & x"3c6" => DATA <= x"0428"; + when "11" & x"3c7" => DATA <= x"0009"; + when "11" & x"3c8" => DATA <= x"2000"; + when "11" & x"3c9" => DATA <= x"c200"; + when "11" & x"3ca" => DATA <= x"0140"; + when "11" & x"3cb" => DATA <= x"c00f"; + when "11" & x"3cc" => DATA <= x"50e1"; + when "11" & x"3cd" => DATA <= x"783c"; + when "11" & x"3ce" => DATA <= x"3c0e"; + when "11" & x"3cf" => DATA <= x"07e8"; + when "11" & x"3d0" => DATA <= x"0022"; + when "11" & x"3d1" => DATA <= x"1000"; + when "11" & x"3d2" => DATA <= x"0400"; + when "11" & x"3d3" => DATA <= x"5200"; + when "11" & x"3d4" => DATA <= x"11b0"; + when "11" & x"3d5" => DATA <= x"0400"; + when "11" & x"3d6" => DATA <= x"2800"; + when "11" & x"3d7" => DATA <= x"80a0"; + when "11" & x"3d8" => DATA <= x"0082"; + when "11" & x"3d9" => DATA <= x"0005"; + when "11" & x"3da" => DATA <= x"6000"; + when "11" & x"3db" => DATA <= x"1061"; + when "11" & x"3dc" => DATA <= x"4280"; + when "11" & x"3dd" => DATA <= x"021c"; + when "11" & x"3de" => DATA <= x"0002"; + when "11" & x"3df" => DATA <= x"3070"; + when "11" & x"3e0" => DATA <= x"0200"; + when "11" & x"3e1" => DATA <= x"3024"; + when "11" & x"3e2" => DATA <= x"e000"; + when "11" & x"3e3" => DATA <= x"1480"; + when "11" & x"3e4" => DATA <= x"182c"; + when "11" & x"3e5" => DATA <= x"0004"; + when "11" & x"3e6" => DATA <= x"fc02"; + when "11" & x"3e7" => DATA <= x"3480"; + when "11" & x"3e8" => DATA <= x"042e"; + when "11" & x"3e9" => DATA <= x"0046"; + when "11" & x"3ea" => DATA <= x"8012"; + when "11" & x"3eb" => DATA <= x"c001"; + when "11" & x"3ec" => DATA <= x"1500"; + when "11" & x"3ed" => DATA <= x"1009"; + when "11" & x"3ee" => DATA <= x"8004"; + when "11" & x"3ef" => DATA <= x"b000"; + when "11" & x"3f0" => DATA <= x"2400"; + when "11" & x"3f1" => DATA <= x"1d2e"; + when "11" & x"3f2" => DATA <= x"a8e9"; + when "11" & x"3f3" => DATA <= x"743a"; + when "11" & x"3f4" => DATA <= x"1d8e"; + when "11" & x"3f5" => DATA <= x"801e"; + when "11" & x"3f6" => DATA <= x"abfa"; + when "11" & x"3f7" => DATA <= x"ad59"; + when "11" & x"3f8" => DATA <= x"ab9a"; + when "11" & x"3f9" => DATA <= x"9552"; + when "11" & x"3fa" => DATA <= x"b516"; + when "11" & x"3fb" => DATA <= x"8175"; + when "11" & x"3fc" => DATA <= x"3ad5"; + when "11" & x"3fd" => DATA <= x"4ea3"; + when "11" & x"3fe" => DATA <= x"f9bd"; + when "11" & x"3ff" => DATA <= x"fe5f"; + when "11" & x"400" => DATA <= x"3fbd"; + when "11" & x"401" => DATA <= x"e9fc"; + when "11" & x"402" => DATA <= x"2000"; + when "11" & x"403" => DATA <= x"7c80"; + when "11" & x"404" => DATA <= x"0100"; + when "11" & x"405" => DATA <= x"27e3"; + when "11" & x"406" => DATA <= x"e280"; + when "11" & x"407" => DATA <= x"007c"; + when "11" & x"408" => DATA <= x"00ff"; + when "11" & x"409" => DATA <= x"07a0"; + when "11" & x"40a" => DATA <= x"0015"; + when "11" & x"40b" => DATA <= x"00c0"; + when "11" & x"40c" => DATA <= x"703f"; + when "11" & x"40d" => DATA <= x"c1ff"; + when "11" & x"40e" => DATA <= x"fe00"; + when "11" & x"40f" => DATA <= x"fff7"; + when "11" & x"410" => DATA <= x"b500"; + when "11" & x"411" => DATA <= x"9c74"; + when "11" & x"412" => DATA <= x"07c0"; + when "11" & x"413" => DATA <= x"0015"; + when "11" & x"414" => DATA <= x"fe07"; + when "11" & x"415" => DATA <= x"0030"; + when "11" & x"416" => DATA <= x"1f95"; + when "11" & x"417" => DATA <= x"fe3f"; + when "11" & x"418" => DATA <= x"0020"; + when "11" & x"419" => DATA <= x"1795"; + when "11" & x"41a" => DATA <= x"7e3f"; + when "11" & x"41b" => DATA <= x"5fd0"; + when "11" & x"41c" => DATA <= x"03ff"; + when "11" & x"41d" => DATA <= x"c00f"; + when "11" & x"41e" => DATA <= x"fa00"; + when "11" & x"41f" => DATA <= x"e7ee"; + when "11" & x"420" => DATA <= x"0005"; + when "11" & x"421" => DATA <= x"7130"; + when "11" & x"422" => DATA <= x"13e1"; + when "11" & x"423" => DATA <= x"f0f7"; + when "11" & x"424" => DATA <= x"0fa7"; + when "11" & x"425" => DATA <= x"c3e4"; + when "11" & x"426" => DATA <= x"5a44"; + when "11" & x"427" => DATA <= x"2011"; + when "11" & x"428" => DATA <= x"6934"; + when "11" & x"429" => DATA <= x"0b5f"; + when "11" & x"42a" => DATA <= x"f2fe"; + when "11" & x"42b" => DATA <= x"7e3f"; + when "11" & x"42c" => DATA <= x"f009"; + when "11" & x"42d" => DATA <= x"cd26"; + when "11" & x"42e" => DATA <= x"c329"; + when "11" & x"42f" => DATA <= x"9ec4"; + when "11" & x"430" => DATA <= x"1480"; + when "11" & x"431" => DATA <= x"912c"; + when "11" & x"432" => DATA <= x"1918"; + when "11" & x"433" => DATA <= x"0000"; + when "11" & x"434" => DATA <= x"1500"; + when "11" & x"435" => DATA <= x"3dc8"; + when "11" & x"436" => DATA <= x"4020"; + when "11" & x"437" => DATA <= x"2023"; + when "11" & x"438" => DATA <= x"801f"; + when "11" & x"439" => DATA <= x"ede1"; + when "11" & x"43a" => DATA <= x"0000"; + when "11" & x"43b" => DATA <= x"1140"; + when "11" & x"43c" => DATA <= x"0087"; + when "11" & x"43d" => DATA <= x"f800"; + when "11" & x"43e" => DATA <= x"0209"; + when "11" & x"43f" => DATA <= x"1087"; + when "11" & x"440" => DATA <= x"0e08"; + when "11" & x"441" => DATA <= x"a25a"; + when "11" & x"442" => DATA <= x"91c8"; + when "11" & x"443" => DATA <= x"05e0"; + when "11" & x"444" => DATA <= x"009a"; + when "11" & x"445" => DATA <= x"71c6"; + when "11" & x"446" => DATA <= x"011f"; + when "11" & x"447" => DATA <= x"3803"; + when "11" & x"448" => DATA <= x"080a"; + when "11" & x"449" => DATA <= x"00af"; + when "11" & x"44a" => DATA <= x"f3f8"; + when "11" & x"44b" => DATA <= x"6000"; + when "11" & x"44c" => DATA <= x"f7a0"; + when "11" & x"44d" => DATA <= x"0aff"; + when "11" & x"44e" => DATA <= x"e007"; + when "11" & x"44f" => DATA <= x"bd00"; + when "11" & x"450" => DATA <= x"57ff"; + when "11" & x"451" => DATA <= x"003f"; + when "11" & x"452" => DATA <= x"e800"; + when "11" & x"453" => DATA <= x"3eff"; + when "11" & x"454" => DATA <= x"6614"; + when "11" & x"455" => DATA <= x"1000"; + when "11" & x"456" => DATA <= x"e36b"; + when "11" & x"457" => DATA <= x"8100"; + when "11" & x"458" => DATA <= x"0000"; + when "11" & x"459" => DATA <= x"8ec3"; + when "11" & x"45a" => DATA <= x"e782"; + when "11" & x"45b" => DATA <= x"c02c"; + when "11" & x"45c" => DATA <= x"6214"; + when "11" & x"45d" => DATA <= x"6000"; + when "11" & x"45e" => DATA <= x"0049"; + when "11" & x"45f" => DATA <= x"2090"; + when "11" & x"460" => DATA <= x"1cc4"; + when "11" & x"461" => DATA <= x"667f"; + when "11" & x"462" => DATA <= x"bf81"; + when "11" & x"463" => DATA <= x"04d0"; + when "11" & x"464" => DATA <= x"0831"; + when "11" & x"465" => DATA <= x"1880"; + when "11" & x"466" => DATA <= x"0302"; + when "11" & x"467" => DATA <= x"1015"; + when "11" & x"468" => DATA <= x"8087"; + when "11" & x"469" => DATA <= x"4b8b"; + when "11" & x"46a" => DATA <= x"df80"; + when "11" & x"46b" => DATA <= x"00f0"; + when "11" & x"46c" => DATA <= x"01e0"; + when "11" & x"46d" => DATA <= x"000f"; + when "11" & x"46e" => DATA <= x"801f"; + when "11" & x"46f" => DATA <= x"e000"; + when "11" & x"470" => DATA <= x"6230"; + when "11" & x"471" => DATA <= x"1f5f"; + when "11" & x"472" => DATA <= x"85c1"; + when "11" & x"473" => DATA <= x"fd00"; + when "11" & x"474" => DATA <= x"5603"; + when "11" & x"475" => DATA <= x"1c02"; + when "11" & x"476" => DATA <= x"8007"; + when "11" & x"477" => DATA <= x"7002"; + when "11" & x"478" => DATA <= x"812c"; + when "11" & x"479" => DATA <= x"0103"; + when "11" & x"47a" => DATA <= x"1010"; + when "11" & x"47b" => DATA <= x"000a"; + when "11" & x"47c" => DATA <= x"405b"; + when "11" & x"47d" => DATA <= x"a103"; + when "11" & x"47e" => DATA <= x"0010"; + when "11" & x"47f" => DATA <= x"9000"; + when "11" & x"480" => DATA <= x"1800"; + when "11" & x"481" => DATA <= x"7f85"; + when "11" & x"482" => DATA <= x"8a1c"; + when "11" & x"483" => DATA <= x"0040"; + when "11" & x"484" => DATA <= x"001f"; + when "11" & x"485" => DATA <= x"d834"; + when "11" & x"486" => DATA <= x"0009"; + when "11" & x"487" => DATA <= x"e003"; + when "11" & x"488" => DATA <= x"e001"; + when "11" & x"489" => DATA <= x"0481"; + when "11" & x"48a" => DATA <= x"4150"; + when "11" & x"48b" => DATA <= x"01f9"; + when "11" & x"48c" => DATA <= x"8000"; + when "11" & x"48d" => DATA <= x"6010"; + when "11" & x"48e" => DATA <= x"041c"; + when "11" & x"48f" => DATA <= x"0080"; + when "11" & x"490" => DATA <= x"a40a"; + when "11" & x"491" => DATA <= x"c0a0"; + when "11" & x"492" => DATA <= x"8025"; + when "11" & x"493" => DATA <= x"00f8"; + when "11" & x"494" => DATA <= x"0680"; + when "11" & x"495" => DATA <= x"0a29"; + when "11" & x"496" => DATA <= x"0011"; + when "11" & x"497" => DATA <= x"4008"; + when "11" & x"498" => DATA <= x"0001"; + when "11" & x"499" => DATA <= x"0000"; + when "11" & x"49a" => DATA <= x"2504"; + when "11" & x"49b" => DATA <= x"5091"; + when "11" & x"49c" => DATA <= x"8800"; + when "11" & x"49d" => DATA <= x"0d4c"; + when "11" & x"49e" => DATA <= x"0000"; + when "11" & x"49f" => DATA <= x"5400"; + when "11" & x"4a0" => DATA <= x"1800"; + when "11" & x"4a1" => DATA <= x"1028"; + when "11" & x"4a2" => DATA <= x"0011"; + when "11" & x"4a3" => DATA <= x"4001"; + when "11" & x"4a4" => DATA <= x"8001"; + when "11" & x"4a5" => DATA <= x"4802"; + when "11" & x"4a6" => DATA <= x"0030"; + when "11" & x"4a7" => DATA <= x"0000"; + when "11" & x"4a8" => DATA <= x"4080"; + when "11" & x"4a9" => DATA <= x"0014"; + when "11" & x"4aa" => DATA <= x"10d0"; + when "11" & x"4ab" => DATA <= x"6701"; + when "11" & x"4ac" => DATA <= x"2800"; + when "11" & x"4ad" => DATA <= x"0408"; + when "11" & x"4ae" => DATA <= x"5829"; + when "11" & x"4af" => DATA <= x"122a"; + when "11" & x"4b0" => DATA <= x"8640"; + when "11" & x"4b1" => DATA <= x"02bc"; + when "11" & x"4b2" => DATA <= x"3bfd"; + when "11" & x"4b3" => DATA <= x"c0c0"; + when "11" & x"4b4" => DATA <= x"0170"; + when "11" & x"4b5" => DATA <= x"f83c"; + when "11" & x"4b6" => DATA <= x"3e0f"; + when "11" & x"4b7" => DATA <= x"7f80"; + when "11" & x"4b8" => DATA <= x"121a"; + when "11" & x"4b9" => DATA <= x"003f"; + when "11" & x"4ba" => DATA <= x"1c02"; + when "11" & x"4bb" => DATA <= x"bc00"; + when "11" & x"4bc" => DATA <= x"0200"; + when "11" & x"4bd" => DATA <= x"00e8"; + when "11" & x"4be" => DATA <= x"00c0"; + when "11" & x"4bf" => DATA <= x"0020"; + when "11" & x"4c0" => DATA <= x"f00b"; + when "11" & x"4c1" => DATA <= x"0003"; + when "11" & x"4c2" => DATA <= x"0000"; + when "11" & x"4c3" => DATA <= x"8f04"; + when "11" & x"4c4" => DATA <= x"8143"; + when "11" & x"4c5" => DATA <= x"4028"; + when "11" & x"4c6" => DATA <= x"0c00"; + when "11" & x"4c7" => DATA <= x"027f"; + when "11" & x"4c8" => DATA <= x"1c69"; + when "11" & x"4c9" => DATA <= x"c000"; + when "11" & x"4ca" => DATA <= x"e0a0"; + when "11" & x"4cb" => DATA <= x"07fd"; + when "11" & x"4cc" => DATA <= x"0010"; + when "11" & x"4cd" => DATA <= x"1c0b"; + when "11" & x"4ce" => DATA <= x"7700"; + when "11" & x"4cf" => DATA <= x"01fe"; + when "11" & x"4d0" => DATA <= x"086c"; + when "11" & x"4d1" => DATA <= x"aa5f"; + when "11" & x"4d2" => DATA <= x"c061"; + when "11" & x"4d3" => DATA <= x"f861"; + when "11" & x"4d4" => DATA <= x"fe1c"; + when "11" & x"4d5" => DATA <= x"e1f3"; + when "11" & x"4d6" => DATA <= x"e074"; + when "11" & x"4d7" => DATA <= x"3c1f"; + when "11" & x"4d8" => DATA <= x"a000"; + when "11" & x"4d9" => DATA <= x"1000"; + when "11" & x"4da" => DATA <= x"91a0"; + when "11" & x"4db" => DATA <= x"0420"; + when "11" & x"4dc" => DATA <= x"0203"; + when "11" & x"4dd" => DATA <= x"c02c"; + when "11" & x"4de" => DATA <= x"0012"; + when "11" & x"4df" => DATA <= x"0023"; + when "11" & x"4e0" => DATA <= x"0424"; + when "11" & x"4e1" => DATA <= x"0006"; + when "11" & x"4e2" => DATA <= x"0840"; + when "11" & x"4e3" => DATA <= x"d000"; + when "11" & x"4e4" => DATA <= x"9070"; + when "11" & x"4e5" => DATA <= x"0003"; + when "11" & x"4e6" => DATA <= x"040a"; + when "11" & x"4e7" => DATA <= x"0000"; + when "11" & x"4e8" => DATA <= x"880c"; + when "11" & x"4e9" => DATA <= x"10c0"; + when "11" & x"4ea" => DATA <= x"a004"; + when "11" & x"4eb" => DATA <= x"8001"; + when "11" & x"4ec" => DATA <= x"8140"; + when "11" & x"4ed" => DATA <= x"0294"; + when "11" & x"4ee" => DATA <= x"0000"; + when "11" & x"4ef" => DATA <= x"4003"; + when "11" & x"4f0" => DATA <= x"0e3b"; + when "11" & x"4f1" => DATA <= x"0001"; + when "11" & x"4f2" => DATA <= x"1d00"; + when "11" & x"4f3" => DATA <= x"0380"; + when "11" & x"4f4" => DATA <= x"1412"; + when "11" & x"4f5" => DATA <= x"0004"; + when "11" & x"4f6" => DATA <= x"9006"; + when "11" & x"4f7" => DATA <= x"0391"; + when "11" & x"4f8" => DATA <= x"48e2"; + when "11" & x"4f9" => DATA <= x"602e"; + when "11" & x"4fa" => DATA <= x"aaed"; + when "11" & x"4fb" => DATA <= x"7b5d"; + when "11" & x"4fc" => DATA <= x"d4dd"; + when "11" & x"4fd" => DATA <= x"2aa5"; + when "11" & x"4fe" => DATA <= x"77ed"; + when "11" & x"4ff" => DATA <= x"2ab5"; + when "11" & x"500" => DATA <= x"52ad"; + when "11" & x"501" => DATA <= x"54ad"; + when "11" & x"502" => DATA <= x"6aaf"; + when "11" & x"503" => DATA <= x"deaa"; + when "11" & x"504" => DATA <= x"957c"; + when "11" & x"505" => DATA <= x"d5aa"; + when "11" & x"506" => DATA <= x"5755"; + when "11" & x"507" => DATA <= x"5482"; + when "11" & x"508" => DATA <= x"40d5"; + when "11" & x"509" => DATA <= x"5229"; + when "11" & x"50a" => DATA <= x"1677"; + when "11" & x"50b" => DATA <= x"f7f0"; + when "11" & x"50c" => DATA <= x"0205"; + when "11" & x"50d" => DATA <= x"8b40"; + when "11" & x"50e" => DATA <= x"002e"; + when "11" & x"50f" => DATA <= x"0040"; + when "11" & x"510" => DATA <= x"3fdf"; + when "11" & x"511" => DATA <= x"804a"; + when "11" & x"512" => DATA <= x"0002"; + when "11" & x"513" => DATA <= x"0001"; + when "11" & x"514" => DATA <= x"e8f4"; + when "11" & x"515" => DATA <= x"1d40"; + when "11" & x"516" => DATA <= x"0010"; + when "11" & x"517" => DATA <= x"0e00"; + when "11" & x"518" => DATA <= x"07ff"; + when "11" & x"519" => DATA <= x"b82f"; + when "11" & x"51a" => DATA <= x"ffc0"; + when "11" & x"51b" => DATA <= x"403e"; + when "11" & x"51c" => DATA <= x"0000"; + when "11" & x"51d" => DATA <= x"dff0"; + when "11" & x"51e" => DATA <= x"3800"; + when "11" & x"51f" => DATA <= x"09d7"; + when "11" & x"520" => DATA <= x"e3f0"; + when "11" & x"521" => DATA <= x"0800"; + when "11" & x"522" => DATA <= x"603e"; + when "11" & x"523" => DATA <= x"003f"; + when "11" & x"524" => DATA <= x"cff4"; + when "11" & x"525" => DATA <= x"00fc"; + when "11" & x"526" => DATA <= x"e003"; + when "11" & x"527" => DATA <= x"fbe0"; + when "11" & x"528" => DATA <= x"00fc"; + when "11" & x"529" => DATA <= x"7fd0"; + when "11" & x"52a" => DATA <= x"0560"; + when "11" & x"52b" => DATA <= x"381c"; + when "11" & x"52c" => DATA <= x"6e76"; + when "11" & x"52d" => DATA <= x"7b98"; + when "11" & x"52e" => DATA <= x"001f"; + when "11" & x"52f" => DATA <= x"0f05"; + when "11" & x"530" => DATA <= x"d3e1"; + when "11" & x"531" => DATA <= x"b0fa"; + when "11" & x"532" => DATA <= x"7c3c"; + when "11" & x"533" => DATA <= x"4423"; + when "11" & x"534" => DATA <= x"7229"; + when "11" & x"535" => DATA <= x"0088"; + when "11" & x"536" => DATA <= x"45f7"; + when "11" & x"537" => DATA <= x"f3e9"; + when "11" & x"538" => DATA <= x"ce8c"; + when "11" & x"539" => DATA <= x"d67c"; + when "11" & x"53a" => DATA <= x"a6d3"; + when "11" & x"53b" => DATA <= x"001c"; + when "11" & x"53c" => DATA <= x"000e"; + when "11" & x"53d" => DATA <= x"b09d"; + when "11" & x"53e" => DATA <= x"0080"; + when "11" & x"53f" => DATA <= x"0640"; + when "11" & x"540" => DATA <= x"1000"; + when "11" & x"541" => DATA <= x"3e80"; + when "11" & x"542" => DATA <= x"1000"; + when "11" & x"543" => DATA <= x"02b5"; + when "11" & x"544" => DATA <= x"0020"; + when "11" & x"545" => DATA <= x"2800"; + when "11" & x"546" => DATA <= x"8000"; + when "11" & x"547" => DATA <= x"193f"; + when "11" & x"548" => DATA <= x"8026"; + when "11" & x"549" => DATA <= x"1070"; + when "11" & x"54a" => DATA <= x"0041"; + when "11" & x"54b" => DATA <= x"4000"; + when "11" & x"54c" => DATA <= x"f7e1"; + when "11" & x"54d" => DATA <= x"8418"; + when "11" & x"54e" => DATA <= x"0018"; + when "11" & x"54f" => DATA <= x"5003"; + when "11" & x"550" => DATA <= x"f07e"; + when "11" & x"551" => DATA <= x"3001"; + when "11" & x"552" => DATA <= x"8002"; + when "11" & x"553" => DATA <= x"1400"; + when "11" & x"554" => DATA <= x"2b00"; + when "11" & x"555" => DATA <= x"0f3c"; + when "11" & x"556" => DATA <= x"0000"; + when "11" & x"557" => DATA <= x"0840"; + when "11" & x"558" => DATA <= x"7800"; + when "11" & x"559" => DATA <= x"0100"; + when "11" & x"55a" => DATA <= x"0840"; + when "11" & x"55b" => DATA <= x"0084"; + when "11" & x"55c" => DATA <= x"0040"; + when "11" & x"55d" => DATA <= x"9822"; + when "11" & x"55e" => DATA <= x"a25b"; + when "11" & x"55f" => DATA <= x"440a"; + when "11" & x"560" => DATA <= x"c064"; + when "11" & x"561" => DATA <= x"3380"; + when "11" & x"562" => DATA <= x"6470"; + when "11" & x"563" => DATA <= x"0018"; + when "11" & x"564" => DATA <= x"661f"; + when "11" & x"565" => DATA <= x"aff0"; + when "11" & x"566" => DATA <= x"00a2"; + when "11" & x"567" => DATA <= x"402b"; + when "11" & x"568" => DATA <= x"fd00"; + when "11" & x"569" => DATA <= x"de7c"; + when "11" & x"56a" => DATA <= x"7003"; + when "11" & x"56b" => DATA <= x"fc02"; + when "11" & x"56c" => DATA <= x"c13f"; + when "11" & x"56d" => DATA <= x"f000"; + when "11" & x"56e" => DATA <= x"2d32"; + when "11" & x"56f" => DATA <= x"010f"; + when "11" & x"570" => DATA <= x"8528"; + when "11" & x"571" => DATA <= x"003c"; + when "11" & x"572" => DATA <= x"0000"; + when "11" & x"573" => DATA <= x"851f"; + when "11" & x"574" => DATA <= x"c90a"; + when "11" & x"575" => DATA <= x"007e"; + when "11" & x"576" => DATA <= x"802a"; + when "11" & x"577" => DATA <= x"01a2"; + when "11" & x"578" => DATA <= x"ff40"; + when "11" & x"579" => DATA <= x"0001"; + when "11" & x"57a" => DATA <= x"e706"; + when "11" & x"57b" => DATA <= x"0d00"; + when "11" & x"57c" => DATA <= x"07c0"; + when "11" & x"57d" => DATA <= x"e04a"; + when "11" & x"57e" => DATA <= x"0001"; + when "11" & x"57f" => DATA <= x"8008"; + when "11" & x"580" => DATA <= x"880e"; + when "11" & x"581" => DATA <= x"0008"; + when "11" & x"582" => DATA <= x"0010"; + when "11" & x"583" => DATA <= x"ef80"; + when "11" & x"584" => DATA <= x"0015"; + when "11" & x"585" => DATA <= x"83c0"; + when "11" & x"586" => DATA <= x"0072"; + when "11" & x"587" => DATA <= x"980c"; + when "11" & x"588" => DATA <= x"10c0"; + when "11" & x"589" => DATA <= x"e003"; + when "11" & x"58a" => DATA <= x"8008"; + when "11" & x"58b" => DATA <= x"0080"; + when "11" & x"58c" => DATA <= x"7fd0"; + when "11" & x"58d" => DATA <= x"013d"; + when "11" & x"58e" => DATA <= x"9e8f"; + when "11" & x"58f" => DATA <= x"0030"; + when "11" & x"590" => DATA <= x"5ff4"; + when "11" & x"591" => DATA <= x"0141"; + when "11" & x"592" => DATA <= x"23b0"; + when "11" & x"593" => DATA <= x"0381"; + when "11" & x"594" => DATA <= x"fec0"; + when "11" & x"595" => DATA <= x"2002"; + when "11" & x"596" => DATA <= x"000c"; + when "11" & x"597" => DATA <= x"8207"; + when "11" & x"598" => DATA <= x"0000"; + when "11" & x"599" => DATA <= x"c300"; + when "11" & x"59a" => DATA <= x"02ef"; + when "11" & x"59b" => DATA <= x"8000"; + when "11" & x"59c" => DATA <= x"6402"; + when "11" & x"59d" => DATA <= x"9802"; + when "11" & x"59e" => DATA <= x"0006"; + when "11" & x"59f" => DATA <= x"04c0"; + when "11" & x"5a0" => DATA <= x"7000"; + when "11" & x"5a1" => DATA <= x"1fc0"; + when "11" & x"5a2" => DATA <= x"3400"; + when "11" & x"5a3" => DATA <= x"0460"; + when "11" & x"5a4" => DATA <= x"a000"; + when "11" & x"5a5" => DATA <= x"8700"; + when "11" & x"5a6" => DATA <= x"0874"; + when "11" & x"5a7" => DATA <= x"0005"; + when "11" & x"5a8" => DATA <= x"4004"; + when "11" & x"5a9" => DATA <= x"f405"; + when "11" & x"5aa" => DATA <= x"8010"; + when "11" & x"5ab" => DATA <= x"3400"; + when "11" & x"5ac" => DATA <= x"05e0"; + when "11" & x"5ad" => DATA <= x"1200"; + when "11" & x"5ae" => DATA <= x"04a3"; + when "11" & x"5af" => DATA <= x"87c1"; + when "11" & x"5b0" => DATA <= x"82c0"; + when "11" & x"5b1" => DATA <= x"1fe5"; + when "11" & x"5b2" => DATA <= x"8d00"; + when "11" & x"5b3" => DATA <= x"083f"; + when "11" & x"5b4" => DATA <= x"dbfa"; + when "11" & x"5b5" => DATA <= x"0010"; + when "11" & x"5b6" => DATA <= x"7faf"; + when "11" & x"5b7" => DATA <= x"ec01"; + when "11" & x"5b8" => DATA <= x"fe10"; + when "11" & x"5b9" => DATA <= x"e080"; + when "11" & x"5ba" => DATA <= x"0570"; + when "11" & x"5bb" => DATA <= x"3ff4"; + when "11" & x"5bc" => DATA <= x"00be"; + when "11" & x"5bd" => DATA <= x"ac38"; + when "11" & x"5be" => DATA <= x"6803"; + when "11" & x"5bf" => DATA <= x"e063"; + when "11" & x"5c0" => DATA <= x"600e"; + when "11" & x"5c1" => DATA <= x"f575"; + when "11" & x"5c2" => DATA <= x"8000"; + when "11" & x"5c3" => DATA <= x"db76"; + when "11" & x"5c4" => DATA <= x"00cf"; + when "11" & x"5c5" => DATA <= x"0700"; + when "11" & x"5c6" => DATA <= x"1012"; + when "11" & x"5c7" => DATA <= x"0017"; + when "11" & x"5c8" => DATA <= x"0f00"; + when "11" & x"5c9" => DATA <= x"0040"; + when "11" & x"5ca" => DATA <= x"0025"; + when "11" & x"5cb" => DATA <= x"0001"; + when "11" & x"5cc" => DATA <= x"9880"; + when "11" & x"5cd" => DATA <= x"0008"; + when "11" & x"5ce" => DATA <= x"0007"; + when "11" & x"5cf" => DATA <= x"4004"; + when "11" & x"5d0" => DATA <= x"43e2"; + when "11" & x"5d1" => DATA <= x"5280"; + when "11" & x"5d2" => DATA <= x"020a"; + when "11" & x"5d3" => DATA <= x"9003"; + when "11" & x"5d4" => DATA <= x"05f6"; + when "11" & x"5d5" => DATA <= x"f2e0"; + when "11" & x"5d6" => DATA <= x"0008"; + when "11" & x"5d7" => DATA <= x"01c8"; + when "11" & x"5d8" => DATA <= x"ff53"; + when "11" & x"5d9" => DATA <= x"f003"; + when "11" & x"5da" => DATA <= x"0030"; + when "11" & x"5db" => DATA <= x"017f"; + when "11" & x"5dc" => DATA <= x"9958"; + when "11" & x"5dd" => DATA <= x"0100"; + when "11" & x"5de" => DATA <= x"f80e"; + when "11" & x"5df" => DATA <= x"801f"; + when "11" & x"5e0" => DATA <= x"e1f9"; + when "11" & x"5e1" => DATA <= x"0000"; + when "11" & x"5e2" => DATA <= x"b428"; + when "11" & x"5e3" => DATA <= x"01b9"; + when "11" & x"5e4" => DATA <= x"2000"; + when "11" & x"5e5" => DATA <= x"fa00"; + when "11" & x"5e6" => DATA <= x"6348"; + when "11" & x"5e7" => DATA <= x"0202"; + when "11" & x"5e8" => DATA <= x"8000"; + when "11" & x"5e9" => DATA <= x"8800"; + when "11" & x"5ea" => DATA <= x"002c"; + when "11" & x"5eb" => DATA <= x"01dc"; + when "11" & x"5ec" => DATA <= x"0804"; + when "11" & x"5ed" => DATA <= x"8341"; + when "11" & x"5ee" => DATA <= x"00d0"; + when "11" & x"5ef" => DATA <= x"aee2"; + when "11" & x"5f0" => DATA <= x"71ba"; + when "11" & x"5f1" => DATA <= x"938d"; + when "11" & x"5f2" => DATA <= x"e6e2"; + when "11" & x"5f3" => DATA <= x"bfaa"; + when "11" & x"5f4" => DATA <= x"dfab"; + when "11" & x"5f5" => DATA <= x"94ca"; + when "11" & x"5f6" => DATA <= x"caba"; + when "11" & x"5f7" => DATA <= x"a75a"; + when "11" & x"5f8" => DATA <= x"a914"; + when "11" & x"5f9" => DATA <= x"8041"; + when "11" & x"5fa" => DATA <= x"2a95"; + when "11" & x"5fb" => DATA <= x"6aa5"; + when "11" & x"5fc" => DATA <= x"5fbf"; + when "11" & x"5fd" => DATA <= x"9ff8"; + when "11" & x"5fe" => DATA <= x"018a"; + when "11" & x"5ff" => DATA <= x"c10c"; + when "11" & x"600" => DATA <= x"57c0"; + when "11" & x"601" => DATA <= x"11b0"; + when "11" & x"602" => DATA <= x"fc7f"; + when "11" & x"603" => DATA <= x"80c0"; + when "11" & x"604" => DATA <= x"0c77"; + when "11" & x"605" => DATA <= x"fa01"; + when "11" & x"606" => DATA <= x"0881"; + when "11" & x"607" => DATA <= x"4781"; + when "11" & x"608" => DATA <= x"c003"; + when "11" & x"609" => DATA <= x"fdff"; + when "11" & x"60a" => DATA <= x"7dd0"; + when "11" & x"60b" => DATA <= x"033f"; + when "11" & x"60c" => DATA <= x"7fda"; + when "11" & x"60d" => DATA <= x"0fb7"; + when "11" & x"60e" => DATA <= x"9f80"; + when "11" & x"60f" => DATA <= x"807c"; + when "11" & x"610" => DATA <= x"0000"; + when "11" & x"611" => DATA <= x"e076"; + when "11" & x"612" => DATA <= x"77fb"; + when "11" & x"613" => DATA <= x"bebf"; + when "11" & x"614" => DATA <= x"ecf9"; + when "11" & x"615" => DATA <= x"7e0f"; + when "11" & x"616" => DATA <= x"0008"; + when "11" & x"617" => DATA <= x"a802"; + when "11" & x"618" => DATA <= x"bf10"; + when "11" & x"619" => DATA <= x"3400"; + when "11" & x"61a" => DATA <= x"04a0"; + when "11" & x"61b" => DATA <= x"0aff"; + when "11" & x"61c" => DATA <= x"401e"; + when "11" & x"61d" => DATA <= x"1c0e"; + when "11" & x"61e" => DATA <= x"1603"; + when "11" & x"61f" => DATA <= x"b99e"; + when "11" & x"620" => DATA <= x"c773"; + when "11" & x"621" => DATA <= x"b838"; + when "11" & x"622" => DATA <= x"7d3e"; + when "11" & x"623" => DATA <= x"1f0d"; + when "11" & x"624" => DATA <= x"a7c3"; + when "11" & x"625" => DATA <= x"e052"; + when "11" & x"626" => DATA <= x"2904"; + when "11" & x"627" => DATA <= x"8000"; + when "11" & x"628" => DATA <= x"2211"; + when "11" & x"629" => DATA <= x"4892"; + when "11" & x"62a" => DATA <= x"fb3f"; + when "11" & x"62b" => DATA <= x"bda6"; + when "11" & x"62c" => DATA <= x"e573"; + when "11" & x"62d" => DATA <= x"3d8c"; + when "11" & x"62e" => DATA <= x"c7ea"; + when "11" & x"62f" => DATA <= x"0020"; + when "11" & x"630" => DATA <= x"adc9"; + when "11" & x"631" => DATA <= x"8ff0"; + when "11" & x"632" => DATA <= x"02ce"; + when "11" & x"633" => DATA <= x"8000"; + when "11" & x"634" => DATA <= x"4af1"; + when "11" & x"635" => DATA <= x"33fc"; + when "11" & x"636" => DATA <= x"00d9"; + when "11" & x"637" => DATA <= x"a004"; + when "11" & x"638" => DATA <= x"0b7d"; + when "11" & x"639" => DATA <= x"66ff"; + when "11" & x"63a" => DATA <= x"0033"; + when "11" & x"63b" => DATA <= x"3800"; + when "11" & x"63c" => DATA <= x"de99"; + when "11" & x"63d" => DATA <= x"7f80"; + when "11" & x"63e" => DATA <= x"04dc"; + when "11" & x"63f" => DATA <= x"00b3"; + when "11" & x"640" => DATA <= x"263f"; + when "11" & x"641" => DATA <= x"c00b"; + when "11" & x"642" => DATA <= x"3e00"; + when "11" & x"643" => DATA <= x"6a99"; + when "11" & x"644" => DATA <= x"9fe0"; + when "11" & x"645" => DATA <= x"04cf"; + when "11" & x"646" => DATA <= x"001e"; + when "11" & x"647" => DATA <= x"866f"; + when "11" & x"648" => DATA <= x"f003"; + when "11" & x"649" => DATA <= x"3400"; + when "11" & x"64a" => DATA <= x"6000"; + when "11" & x"64b" => DATA <= x"1b53"; + when "11" & x"64c" => DATA <= x"2ff0"; + when "11" & x"64d" => DATA <= x"0198"; + when "11" & x"64e" => DATA <= x"0004"; + when "11" & x"64f" => DATA <= x"1037"; + when "11" & x"650" => DATA <= x"8d8f"; + when "11" & x"651" => DATA <= x"f001"; + when "11" & x"652" => DATA <= x"be80"; + when "11" & x"653" => DATA <= x"0807"; + when "11" & x"654" => DATA <= x"f613"; + when "11" & x"655" => DATA <= x"fc00"; + when "11" & x"656" => DATA <= x"fe00"; + when "11" & x"657" => DATA <= x"3418"; + when "11" & x"658" => DATA <= x"0ef0"; + when "11" & x"659" => DATA <= x"b3fc"; + when "11" & x"65a" => DATA <= x"00b6"; + when "11" & x"65b" => DATA <= x"2850"; + when "11" & x"65c" => DATA <= x"03fd"; + when "11" & x"65d" => DATA <= x"f0ff"; + when "11" & x"65e" => DATA <= x"0024"; + when "11" & x"65f" => DATA <= x"4000"; + when "11" & x"660" => DATA <= x"8243"; + when "11" & x"661" => DATA <= x"fdde"; + when "11" & x"662" => DATA <= x"1d7c"; + when "11" & x"663" => DATA <= x"00c0"; + when "11" & x"664" => DATA <= x"0040"; + when "11" & x"665" => DATA <= x"3365"; + when "11" & x"666" => DATA <= x"fefe"; + when "11" & x"667" => DATA <= x"6f85"; + when "11" & x"668" => DATA <= x"4042"; + when "11" & x"669" => DATA <= x"0002"; + when "11" & x"66a" => DATA <= x"ffbf"; + when "11" & x"66b" => DATA <= x"f801"; + when "11" & x"66c" => DATA <= x"00f7"; + when "11" & x"66d" => DATA <= x"5fbf"; + when "11" & x"66e" => DATA <= x"d7f2"; + when "11" & x"66f" => DATA <= x"00fe"; + when "11" & x"670" => DATA <= x"7d8f"; + when "11" & x"671" => DATA <= x"dbe0"; + when "11" & x"672" => DATA <= x"07e0"; + when "11" & x"673" => DATA <= x"0c04"; + when "11" & x"674" => DATA <= x"ff7d"; + when "11" & x"675" => DATA <= x"bf03"; + when "11" & x"676" => DATA <= x"8001"; + when "11" & x"677" => DATA <= x"7811"; + when "11" & x"678" => DATA <= x"00d7"; + when "11" & x"679" => DATA <= x"7bb3"; + when "11" & x"67a" => DATA <= x"e800"; + when "11" & x"67b" => DATA <= x"04cc"; + when "11" & x"67c" => DATA <= x"003f"; + when "11" & x"67d" => DATA <= x"dfcf"; + when "11" & x"67e" => DATA <= x"b3e5"; + when "11" & x"67f" => DATA <= x"0004"; + when "11" & x"680" => DATA <= x"060f"; + when "11" & x"681" => DATA <= x"daff"; + when "11" & x"682" => DATA <= x"77d0"; + when "11" & x"683" => DATA <= x"0081"; + when "11" & x"684" => DATA <= x"467f"; + when "11" & x"685" => DATA <= x"7f83"; + when "11" & x"686" => DATA <= x"dff4"; + when "11" & x"687" => DATA <= x"00aa"; + when "11" & x"688" => DATA <= x"59d7"; + when "11" & x"689" => DATA <= x"f805"; + when "11" & x"68a" => DATA <= x"de00"; + when "11" & x"68b" => DATA <= x"782e"; + when "11" & x"68c" => DATA <= x"1166"; + when "11" & x"68d" => DATA <= x"b7f0"; + when "11" & x"68e" => DATA <= x"01ee"; + when "11" & x"68f" => DATA <= x"007f"; + when "11" & x"690" => DATA <= x"b058"; + when "11" & x"691" => DATA <= x"0fe7"; + when "11" & x"692" => DATA <= x"f801"; + when "11" & x"693" => DATA <= x"ea00"; + when "11" & x"694" => DATA <= x"7fb7"; + when "11" & x"695" => DATA <= x"0a0f"; + when "11" & x"696" => DATA <= x"f6f8"; + when "11" & x"697" => DATA <= x"01fe"; + when "11" & x"698" => DATA <= x"007f"; + when "11" & x"699" => DATA <= x"d003"; + when "11" & x"69a" => DATA <= x"fdfc"; + when "11" & x"69b" => DATA <= x"007f"; + when "11" & x"69c" => DATA <= x"8018"; + when "11" & x"69d" => DATA <= x"0011"; + when "11" & x"69e" => DATA <= x"057f"; + when "11" & x"69f" => DATA <= x"8017"; + when "11" & x"6a0" => DATA <= x"f400"; + when "11" & x"6a1" => DATA <= x"0200"; + when "11" & x"6a2" => DATA <= x"d7f8"; + when "11" & x"6a3" => DATA <= x"01fc"; + when "11" & x"6a4" => DATA <= x"40e0"; + when "11" & x"6a5" => DATA <= x"0aff"; + when "11" & x"6a6" => DATA <= x"003f"; + when "11" & x"6a7" => DATA <= x"f800"; + when "11" & x"6a8" => DATA <= x"415f"; + when "11" & x"6a9" => DATA <= x"e007"; + when "11" & x"6aa" => DATA <= x"ff00"; + when "11" & x"6ab" => DATA <= x"006b"; + when "11" & x"6ac" => DATA <= x"fc00"; + when "11" & x"6ad" => DATA <= x"ffe0"; + when "11" & x"6ae" => DATA <= x"0013"; + when "11" & x"6af" => DATA <= x"fd06"; + when "11" & x"6b0" => DATA <= x"005f"; + when "11" & x"6b1" => DATA <= x"d010"; + when "11" & x"6b2" => DATA <= x"00e0"; + when "11" & x"6b3" => DATA <= x"ff04"; + when "11" & x"6b4" => DATA <= x"a013"; + when "11" & x"6b5" => DATA <= x"e000"; + when "11" & x"6b6" => DATA <= x"6044"; + when "11" & x"6b7" => DATA <= x"8cff"; + when "11" & x"6b8" => DATA <= x"1980"; + when "11" & x"6b9" => DATA <= x"1f7c"; + when "11" & x"6ba" => DATA <= x"0050"; + when "11" & x"6bb" => DATA <= x"7f80"; + when "11" & x"6bc" => DATA <= x"080c"; + when "11" & x"6bd" => DATA <= x"fe00"; + when "11" & x"6be" => DATA <= x"0237"; + when "11" & x"6bf" => DATA <= x"c60f"; + when "11" & x"6c0" => DATA <= x"800b"; + when "11" & x"6c1" => DATA <= x"2380"; + when "11" & x"6c2" => DATA <= x"1d89"; + when "11" & x"6c3" => DATA <= x"97f8"; + when "11" & x"6c4" => DATA <= x"00c9"; + when "11" & x"6c5" => DATA <= x"4002"; + when "11" & x"6c6" => DATA <= x"03b3"; + when "11" & x"6c7" => DATA <= x"25fe"; + when "11" & x"6c8" => DATA <= x"0019"; + when "11" & x"6c9" => DATA <= x"5000"; + when "11" & x"6ca" => DATA <= x"8176"; + when "11" & x"6cb" => DATA <= x"647f"; + when "11" & x"6cc" => DATA <= x"8013"; + when "11" & x"6cd" => DATA <= x"6800"; + when "11" & x"6ce" => DATA <= x"0161"; + when "11" & x"6cf" => DATA <= x"fe56"; + when "11" & x"6d0" => DATA <= x"7fbc"; + when "11" & x"6d1" => DATA <= x"08b4"; + when "11" & x"6d2" => DATA <= x"00ad"; + when "11" & x"6d3" => DATA <= x"1ab2"; + when "11" & x"6d4" => DATA <= x"5bef"; + when "11" & x"6d5" => DATA <= x"f23d"; + when "11" & x"6d6" => DATA <= x"0001"; + when "11" & x"6d7" => DATA <= x"9fe8"; + when "11" & x"6d8" => DATA <= x"47fb"; + when "11" & x"6d9" => DATA <= x"3803"; + when "11" & x"6da" => DATA <= x"c00f"; + when "11" & x"6db" => DATA <= x"f093"; + when "11" & x"6dc" => DATA <= x"cd77"; + when "11" & x"6dd" => DATA <= x"c000"; + when "11" & x"6de" => DATA <= x"44a8"; + when "11" & x"6df" => DATA <= x"90fe"; + when "11" & x"6e0" => DATA <= x"fb00"; + when "11" & x"6e1" => DATA <= x"2400"; + when "11" & x"6e2" => DATA <= x"0807"; + when "11" & x"6e3" => DATA <= x"e822"; + when "11" & x"6e4" => DATA <= x"bfc0"; + when "11" & x"6e5" => DATA <= x"0420"; + when "11" & x"6e6" => DATA <= x"0045"; + when "11" & x"6e7" => DATA <= x"ee00"; + when "11" & x"6e8" => DATA <= x"7fbe"; + when "11" & x"6e9" => DATA <= x"4000"; + when "11" & x"6ea" => DATA <= x"8000"; + when "11" & x"6eb" => DATA <= x"99fe"; + when "11" & x"6ec" => DATA <= x"067f"; + when "11" & x"6ed" => DATA <= x"bbe4"; + when "11" & x"6ee" => DATA <= x"01fe"; + when "11" & x"6ef" => DATA <= x"247f"; + when "11" & x"6f0" => DATA <= x"bf38"; + when "11" & x"6f1" => DATA <= x"0100"; + when "11" & x"6f2" => DATA <= x"ff50"; + when "11" & x"6f3" => DATA <= x"57ff"; + when "11" & x"6f4" => DATA <= x"000e"; + when "11" & x"6f5" => DATA <= x"1fe0"; + when "11" & x"6f6" => DATA <= x"0aff"; + when "11" & x"6f7" => DATA <= x"0000"; + when "11" & x"6f8" => DATA <= x"8002"; + when "11" & x"6f9" => DATA <= x"0338"; + when "11" & x"6fa" => DATA <= x"01ec"; + when "11" & x"6fb" => DATA <= x"7690"; + when "11" & x"6fc" => DATA <= x"07f9"; + when "11" & x"6fd" => DATA <= x"41fe"; + when "11" & x"6fe" => DATA <= x"7fe0"; + when "11" & x"6ff" => DATA <= x"0061"; + when "11" & x"700" => DATA <= x"fc08"; + when "11" & x"701" => DATA <= x"7f77"; + when "11" & x"702" => DATA <= x"c803"; + when "11" & x"703" => DATA <= x"dc00"; + when "11" & x"704" => DATA <= x"fb5b"; + when "11" & x"705" => DATA <= x"c803"; + when "11" & x"706" => DATA <= x"6c44"; + when "11" & x"707" => DATA <= x"f77f"; + when "11" & x"708" => DATA <= x"f003"; + when "11" & x"709" => DATA <= x"91fe"; + when "11" & x"70a" => DATA <= x"007f"; + when "11" & x"70b" => DATA <= x"ae40"; + when "11" & x"70c" => DATA <= x"14e0"; + when "11" & x"70d" => DATA <= x"7e3e"; + when "11" & x"70e" => DATA <= x"802b"; + when "11" & x"70f" => DATA <= x"fde0"; + when "11" & x"710" => DATA <= x"0f37"; + when "11" & x"711" => DATA <= x"93cd"; + when "11" & x"712" => DATA <= x"eef0"; + when "11" & x"713" => DATA <= x"fbfc"; + when "11" & x"714" => DATA <= x"7e55"; + when "11" & x"715" => DATA <= x"2a72"; + when "11" & x"716" => DATA <= x"a800"; + when "11" & x"717" => DATA <= x"ae00"; + when "11" & x"718" => DATA <= x"3ab9"; + when "11" & x"719" => DATA <= x"4ca7"; + when "11" & x"71a" => DATA <= x"57aa"; + when "11" & x"71b" => DATA <= x"c15e"; + when "11" & x"71c" => DATA <= x"0045"; + when "11" & x"71d" => DATA <= x"0294"; + when "11" & x"71e" => DATA <= x"0f05"; + when "11" & x"71f" => DATA <= x"331c"; + when "11" & x"720" => DATA <= x"4f55"; + when "11" & x"721" => DATA <= x"eb05"; + when "11" & x"722" => DATA <= x"6a2d"; + when "11" & x"723" => DATA <= x"56af"; + when "11" & x"724" => DATA <= x"7f3a"; + when "11" & x"725" => DATA <= x"48f4"; + when "11" & x"726" => DATA <= x"feff"; + when "11" & x"727" => DATA <= x"a7f6"; + when "11" & x"728" => DATA <= x"39fc"; + when "11" & x"729" => DATA <= x"0010"; + when "11" & x"72a" => DATA <= x"003e"; + when "11" & x"72b" => DATA <= x"c000"; + when "11" & x"72c" => DATA <= x"8013"; + when "11" & x"72d" => DATA <= x"e380"; + when "11" & x"72e" => DATA <= x"007c"; + when "11" & x"72f" => DATA <= x"00ff"; + when "11" & x"730" => DATA <= x"7000"; + when "11" & x"731" => DATA <= x"2a02"; + when "11" & x"732" => DATA <= x"801c"; + when "11" & x"733" => DATA <= x"1fff"; + when "11" & x"734" => DATA <= x"5ff5"; + when "11" & x"735" => DATA <= x"f77f"; + when "11" & x"736" => DATA <= x"fe02"; + when "11" & x"737" => DATA <= x"01f0"; + when "11" & x"738" => DATA <= x"0001"; + when "11" & x"739" => DATA <= x"bc0e"; + when "11" & x"73a" => DATA <= x"e103"; + when "11" & x"73b" => DATA <= x"b85d"; + when "11" & x"73c" => DATA <= x"8ef7"; + when "11" & x"73d" => DATA <= x"f801"; + when "11" & x"73e" => DATA <= x"00a0"; + when "11" & x"73f" => DATA <= x"5e0f"; + when "11" & x"740" => DATA <= x"baf9"; + when "11" & x"741" => DATA <= x"fd60"; + when "11" & x"742" => DATA <= x"15ff"; + when "11" & x"743" => DATA <= x"600f"; + when "11" & x"744" => DATA <= x"f603"; + when "11" & x"745" => DATA <= x"8001"; + when "11" & x"746" => DATA <= x"5c4c"; + when "11" & x"747" => DATA <= x"2703"; + when "11" & x"748" => DATA <= x"003d"; + when "11" & x"749" => DATA <= x"c3e9"; + when "11" & x"74a" => DATA <= x"fa1f"; + when "11" & x"74b" => DATA <= x"0f11"; + when "11" & x"74c" => DATA <= x"081c"; + when "11" & x"74d" => DATA <= x"8a05"; + when "11" & x"74e" => DATA <= x"2215"; + when "11" & x"74f" => DATA <= x"abf6"; + when "11" & x"750" => DATA <= x"8078"; + when "11" & x"751" => DATA <= x"0080"; + when "11" & x"752" => DATA <= x"007f"; + when "11" & x"753" => DATA <= x"bf8f"; + when "11" & x"754" => DATA <= x"d3fc"; + when "11" & x"755" => DATA <= x"2d5d"; + when "11" & x"756" => DATA <= x"c802"; + when "11" & x"757" => DATA <= x"e000"; + when "11" & x"758" => DATA <= x"eb6c"; + when "11" & x"759" => DATA <= x"c803"; + when "11" & x"75a" => DATA <= x"7400"; + when "11" & x"75b" => DATA <= x"5876"; + when "11" & x"75c" => DATA <= x"4803"; + when "11" & x"75d" => DATA <= x"bc00"; + when "11" & x"75e" => DATA <= x"a933"; + when "11" & x"75f" => DATA <= x"4801"; + when "11" & x"760" => DATA <= x"f800"; + when "11" & x"761" => DATA <= x"da5b"; + when "11" & x"762" => DATA <= x"c802"; + when "11" & x"763" => DATA <= x"fc00"; + when "11" & x"764" => DATA <= x"bd4c"; + when "11" & x"765" => DATA <= x"c803"; + when "11" & x"766" => DATA <= x"7c00"; + when "11" & x"767" => DATA <= x"7f66"; + when "11" & x"768" => DATA <= x"c803"; + when "11" & x"769" => DATA <= x"f400"; + when "11" & x"76a" => DATA <= x"bd33"; + when "11" & x"76b" => DATA <= x"4801"; + when "11" & x"76c" => DATA <= x"1800"; + when "11" & x"76d" => DATA <= x"563f"; + when "11" & x"76e" => DATA <= x"c800"; + when "11" & x"76f" => DATA <= x"4400"; + when "11" & x"770" => DATA <= x"6776"; + when "11" & x"771" => DATA <= x"5800"; + when "11" & x"772" => DATA <= x"7477"; + when "11" & x"773" => DATA <= x"6008"; + when "11" & x"774" => DATA <= x"0678"; + when "11" & x"775" => DATA <= x"8280"; + when "11" & x"776" => DATA <= x"0400"; + when "11" & x"777" => DATA <= x"0080"; + when "11" & x"778" => DATA <= x"1059"; + when "11" & x"779" => DATA <= x"e00f"; + when "11" & x"77a" => DATA <= x"f000"; + when "11" & x"77b" => DATA <= x"4240"; + when "11" & x"77c" => DATA <= x"092f"; + when "11" & x"77d" => DATA <= x"f000"; + when "11" & x"77e" => DATA <= x"8240"; + when "11" & x"77f" => DATA <= x"0681"; + when "11" & x"780" => DATA <= x"c000"; + when "11" & x"781" => DATA <= x"5680"; + when "11" & x"782" => DATA <= x"0600"; + when "11" & x"783" => DATA <= x"0022"; + when "11" & x"784" => DATA <= x"0400"; + when "11" & x"785" => DATA <= x"20a0"; + when "11" & x"786" => DATA <= x"0510"; + when "11" & x"787" => DATA <= x"0806"; + when "11" & x"788" => DATA <= x"dbb0"; + when "11" & x"789" => DATA <= x"0021"; + when "11" & x"78a" => DATA <= x"d440"; + when "11" & x"78b" => DATA <= x"4001"; + when "11" & x"78c" => DATA <= x"0808"; + when "11" & x"78d" => DATA <= x"0030"; + when "11" & x"78e" => DATA <= x"e3aa"; + when "11" & x"78f" => DATA <= x"80a8"; + when "11" & x"790" => DATA <= x"0004"; + when "11" & x"791" => DATA <= x"0017"; + when "11" & x"792" => DATA <= x"16c4"; + when "11" & x"793" => DATA <= x"5600"; + when "11" & x"794" => DATA <= x"6fb0"; + when "11" & x"795" => DATA <= x"0403"; + when "11" & x"796" => DATA <= x"7f40"; + when "11" & x"797" => DATA <= x"0020"; + when "11" & x"798" => DATA <= x"37e2"; + when "11" & x"799" => DATA <= x"0240"; + when "11" & x"79a" => DATA <= x"0422"; + when "11" & x"79b" => DATA <= x"0338"; + when "11" & x"79c" => DATA <= x"0d00"; + when "11" & x"79d" => DATA <= x"0000"; + when "11" & x"79e" => DATA <= x"a000"; + when "11" & x"79f" => DATA <= x"0166"; + when "11" & x"7a0" => DATA <= x"3f80"; + when "11" & x"7a1" => DATA <= x"28e4"; + when "11" & x"7a2" => DATA <= x"01e4"; + when "11" & x"7a3" => DATA <= x"0040"; + when "11" & x"7a4" => DATA <= x"1fa4"; + when "11" & x"7a5" => DATA <= x"00fe"; + when "11" & x"7a6" => DATA <= x"0036"; + when "11" & x"7a7" => DATA <= x"0ce4"; + when "11" & x"7a8" => DATA <= x"017e"; + when "11" & x"7a9" => DATA <= x"0057"; + when "11" & x"7aa" => DATA <= x"b664"; + when "11" & x"7ab" => DATA <= x"01fe"; + when "11" & x"7ac" => DATA <= x"002d"; + when "11" & x"7ad" => DATA <= x"3364"; + when "11" & x"7ae" => DATA <= x"01fa"; + when "11" & x"7af" => DATA <= x"0052"; + when "11" & x"7b0" => DATA <= x"99a4"; + when "11" & x"7b1" => DATA <= x"007c"; + when "11" & x"7b2" => DATA <= x"0003"; + when "11" & x"7b3" => DATA <= x"3efc"; + when "11" & x"7b4" => DATA <= x"01f7"; + when "11" & x"7b5" => DATA <= x"200a"; + when "11" & x"7b6" => DATA <= x"0a00"; + when "11" & x"7b7" => DATA <= x"2980"; + when "11" & x"7b8" => DATA <= x"0214"; + when "11" & x"7b9" => DATA <= x"0010"; + when "11" & x"7ba" => DATA <= x"0008"; + when "11" & x"7bb" => DATA <= x"0ec0"; + when "11" & x"7bc" => DATA <= x"000c"; + when "11" & x"7bd" => DATA <= x"8014"; + when "11" & x"7be" => DATA <= x"19f2"; + when "11" & x"7bf" => DATA <= x"0084"; + when "11" & x"7c0" => DATA <= x"0021"; + when "11" & x"7c1" => DATA <= x"4c92"; + when "11" & x"7c2" => DATA <= x"006e"; + when "11" & x"7c3" => DATA <= x"0012"; + when "11" & x"7c4" => DATA <= x"86f2"; + when "11" & x"7c5" => DATA <= x"00f7"; + when "11" & x"7c6" => DATA <= x"0025"; + when "11" & x"7c7" => DATA <= x"5372"; + when "11" & x"7c8" => DATA <= x"00fb"; + when "11" & x"7c9" => DATA <= x"001e"; + when "11" & x"7ca" => DATA <= x"8fb4"; + when "11" & x"7cb" => DATA <= x"0080"; + when "11" & x"7cc" => DATA <= x"0001"; + when "11" & x"7cd" => DATA <= x"400f"; + when "11" & x"7ce" => DATA <= x"c3ed"; + when "11" & x"7cf" => DATA <= x"0600"; + when "11" & x"7d0" => DATA <= x"4294"; + when "11" & x"7d1" => DATA <= x"0850"; + when "11" & x"7d2" => DATA <= x"42d0"; + when "11" & x"7d3" => DATA <= x"0013"; + when "11" & x"7d4" => DATA <= x"8019"; + when "11" & x"7d5" => DATA <= x"0fd0"; + when "11" & x"7d6" => DATA <= x"00f0"; + when "11" & x"7d7" => DATA <= x"0014"; + when "11" & x"7d8" => DATA <= x"120f"; + when "11" & x"7d9" => DATA <= x"022f"; + when "11" & x"7da" => DATA <= x"bb00"; + when "11" & x"7db" => DATA <= x"6837"; + when "11" & x"7dc" => DATA <= x"821c"; + when "11" & x"7dd" => DATA <= x"0010"; + when "11" & x"7de" => DATA <= x"002e"; + when "11" & x"7df" => DATA <= x"5bf2"; + when "11" & x"7e0" => DATA <= x"0008"; + when "11" & x"7e1" => DATA <= x"000c"; + when "11" & x"7e2" => DATA <= x"59cc"; + when "11" & x"7e3" => DATA <= x"00c0"; + when "11" & x"7e4" => DATA <= x"0101"; + when "11" & x"7e5" => DATA <= x"4000"; + when "11" & x"7e6" => DATA <= x"14b5"; + when "11" & x"7e7" => DATA <= x"800c"; + when "11" & x"7e8" => DATA <= x"00fc"; + when "11" & x"7e9" => DATA <= x"0080"; + when "11" & x"7ea" => DATA <= x"a006"; + when "11" & x"7eb" => DATA <= x"3b00"; + when "11" & x"7ec" => DATA <= x"0340"; + when "11" & x"7ed" => DATA <= x"020a"; + when "11" & x"7ee" => DATA <= x"0020"; + when "11" & x"7ef" => DATA <= x"6800"; + when "11" & x"7f0" => DATA <= x"6000"; + when "11" & x"7f1" => DATA <= x"46a0"; + when "11" & x"7f2" => DATA <= x"010c"; + when "11" & x"7f3" => DATA <= x"8011"; + when "11" & x"7f4" => DATA <= x"1e60"; + when "11" & x"7f5" => DATA <= x"8008"; + when "11" & x"7f6" => DATA <= x"0011"; + when "11" & x"7f7" => DATA <= x"400c"; + when "11" & x"7f8" => DATA <= x"05f8"; + when "11" & x"7f9" => DATA <= x"103c"; + when "11" & x"7fa" => DATA <= x"0006"; + when "11" & x"7fb" => DATA <= x"0780"; + when "11" & x"7fc" => DATA <= x"02b1"; + when "11" & x"7fd" => DATA <= x"7780"; + when "11" & x"7fe" => DATA <= x"0216"; + when "11" & x"7ff" => DATA <= x"0080"; + when "11" & x"800" => DATA <= x"0282"; + when "11" & x"801" => DATA <= x"802b"; + when "11" & x"802" => DATA <= x"c1fc"; + when "11" & x"803" => DATA <= x"e8af"; + when "11" & x"804" => DATA <= x"8773"; + when "11" & x"805" => DATA <= x"f17f"; + when "11" & x"806" => DATA <= x"e7e0"; + when "11" & x"807" => DATA <= x"e3f0"; + when "11" & x"808" => DATA <= x"0168"; + when "11" & x"809" => DATA <= x"ff00"; + when "11" & x"80a" => DATA <= x"57fb"; + when "11" & x"80b" => DATA <= x"81e8"; + when "11" & x"80c" => DATA <= x"10ae"; + when "11" & x"80d" => DATA <= x"b005"; + when "11" & x"80e" => DATA <= x"55af"; + when "11" & x"80f" => DATA <= x"15ca"; + when "11" & x"810" => DATA <= x"8670"; + when "11" & x"811" => DATA <= x"b950"; + when "11" & x"812" => DATA <= x"b244"; + when "11" & x"813" => DATA <= x"3a55"; + when "11" & x"814" => DATA <= x"0aa4"; + when "11" & x"815" => DATA <= x"1201"; + when "11" & x"816" => DATA <= x"c551"; + when "11" & x"817" => DATA <= x"54fe"; + when "11" & x"818" => DATA <= x"3fd7"; + when "11" & x"819" => DATA <= x"fa08"; + when "11" & x"81a" => DATA <= x"60b1"; + when "11" & x"81b" => DATA <= x"6800"; + when "11" & x"81c" => DATA <= x"05c0"; + when "11" & x"81d" => DATA <= x"15fe"; + when "11" & x"81e" => DATA <= x"fc00"; + when "11" & x"81f" => DATA <= x"0100"; + when "11" & x"820" => DATA <= x"03e0"; + when "11" & x"821" => DATA <= x"001d"; + when "11" & x"822" => DATA <= x"1e81"; + when "11" & x"823" => DATA <= x"a800"; + when "11" & x"824" => DATA <= x"03bd"; + when "11" & x"825" => DATA <= x"00c0"; + when "11" & x"826" => DATA <= x"65bb"; + when "11" & x"827" => DATA <= x"fbfd"; + when "11" & x"828" => DATA <= x"f6f3"; + when "11" & x"829" => DATA <= x"69d7"; + when "11" & x"82a" => DATA <= x"9d7d"; + when "11" & x"82b" => DATA <= x"bffc"; + when "11" & x"82c" => DATA <= x"0403"; + when "11" & x"82d" => DATA <= x"4001"; + when "11" & x"82e" => DATA <= x"8d00"; + when "11" & x"82f" => DATA <= x"eff1"; + when "11" & x"830" => DATA <= x"7a1c"; + when "11" & x"831" => DATA <= x"db5c"; + when "11" & x"832" => DATA <= x"ebe5"; + when "11" & x"833" => DATA <= x"f81f"; + when "11" & x"834" => DATA <= x"8007"; + when "11" & x"835" => DATA <= x"83e3"; + when "11" & x"836" => DATA <= x"f80c"; + when "11" & x"837" => DATA <= x"00fc"; + when "11" & x"838" => DATA <= x"900a"; + when "11" & x"839" => DATA <= x"c07f"; + when "11" & x"83a" => DATA <= x"3fe4"; + when "11" & x"83b" => DATA <= x"01c0"; + when "11" & x"83c" => DATA <= x"e373"; + when "11" & x"83d" => DATA <= x"b3dc"; + when "11" & x"83e" => DATA <= x"c02a"; + when "11" & x"83f" => DATA <= x"e00b"; + when "11" & x"840" => DATA <= x"a7c3"; + when "11" & x"841" => DATA <= x"61f4"; + when "11" & x"842" => DATA <= x"f83e"; + when "11" & x"843" => DATA <= x"a7f9"; + when "11" & x"844" => DATA <= x"54a8"; + when "11" & x"845" => DATA <= x"56e5"; + when "11" & x"846" => DATA <= x"5a00"; + when "11" & x"847" => DATA <= x"2018"; + when "11" & x"848" => DATA <= x"0900"; + when "11" & x"849" => DATA <= x"0381"; + when "11" & x"84a" => DATA <= x"537f"; + when "11" & x"84b" => DATA <= x"8fd5"; + when "11" & x"84c" => DATA <= x"fdc0"; + when "11" & x"84d" => DATA <= x"001a"; + when "11" & x"84e" => DATA <= x"0008"; + when "11" & x"84f" => DATA <= x"4802"; + when "11" & x"850" => DATA <= x"0680"; + when "11" & x"851" => DATA <= x"0114"; + when "11" & x"852" => DATA <= x"00a1"; + when "11" & x"853" => DATA <= x"0010"; + when "11" & x"854" => DATA <= x"2800"; + when "11" & x"855" => DATA <= x"0940"; + when "11" & x"856" => DATA <= x"0d00"; + when "11" & x"857" => DATA <= x"0082"; + when "11" & x"858" => DATA <= x"8000"; + when "11" & x"859" => DATA <= x"9400"; + when "11" & x"85a" => DATA <= x"6800"; + when "11" & x"85b" => DATA <= x"0428"; + when "11" & x"85c" => DATA <= x"0005"; + when "11" & x"85d" => DATA <= x"4002"; + when "11" & x"85e" => DATA <= x"c000"; + when "11" & x"85f" => DATA <= x"2280"; + when "11" & x"860" => DATA <= x"1034"; + when "11" & x"861" => DATA <= x"0002"; + when "11" & x"862" => DATA <= x"0002"; + when "11" & x"863" => DATA <= x"2800"; + when "11" & x"864" => DATA <= x"8140"; + when "11" & x"865" => DATA <= x"00a0"; + when "11" & x"866" => DATA <= x"0012"; + when "11" & x"867" => DATA <= x"8004"; + when "11" & x"868" => DATA <= x"1400"; + when "11" & x"869" => DATA <= x"1000"; + when "11" & x"86a" => DATA <= x"00bc"; + when "11" & x"86b" => DATA <= x"0000"; + when "11" & x"86c" => DATA <= x"20b0"; + when "11" & x"86d" => DATA <= x"0015"; + when "11" & x"86e" => DATA <= x"0000"; + when "11" & x"86f" => DATA <= x"8000"; + when "11" & x"870" => DATA <= x"2a00"; + when "11" & x"871" => DATA <= x"0970"; + when "11" & x"872" => DATA <= x"0083"; + when "11" & x"873" => DATA <= x"8018"; + when "11" & x"874" => DATA <= x"1400"; + when "11" & x"875" => DATA <= x"4490"; + when "11" & x"876" => DATA <= x"0087"; + when "11" & x"877" => DATA <= x"8020"; + when "11" & x"878" => DATA <= x"3400"; + when "11" & x"879" => DATA <= x"2000"; + when "11" & x"87a" => DATA <= x"0248"; + when "11" & x"87b" => DATA <= x"0088"; + when "11" & x"87c" => DATA <= x"0002"; + when "11" & x"87d" => DATA <= x"1150"; + when "11" & x"87e" => DATA <= x"0202"; + when "11" & x"87f" => DATA <= x"4002"; + when "11" & x"880" => DATA <= x"1400"; + when "11" & x"881" => DATA <= x"18a0"; + when "11" & x"882" => DATA <= x"0100"; + when "11" & x"883" => DATA <= x"0005"; + when "11" & x"884" => DATA <= x"4000"; + when "11" & x"885" => DATA <= x"1580"; + when "11" & x"886" => DATA <= x"0005"; + when "11" & x"887" => DATA <= x"c000"; + when "11" & x"888" => DATA <= x"2f00"; + when "11" & x"889" => DATA <= x"0000"; + when "11" & x"88a" => DATA <= x"bc00"; + when "11" & x"88b" => DATA <= x"0520"; + when "11" & x"88c" => DATA <= x"008a"; + when "11" & x"88d" => DATA <= x"0040"; + when "11" & x"88e" => DATA <= x"7000"; + when "11" & x"88f" => DATA <= x"8c07"; + when "11" & x"890" => DATA <= x"e008"; + when "11" & x"891" => DATA <= x"a040"; + when "11" & x"892" => DATA <= x"01c4"; + when "11" & x"893" => DATA <= x"23e0"; + when "11" & x"894" => DATA <= x"0205"; + when "11" & x"895" => DATA <= x"8001"; + when "11" & x"896" => DATA <= x"3c02"; + when "11" & x"897" => DATA <= x"4004"; + when "11" & x"898" => DATA <= x"1400"; + when "11" & x"899" => DATA <= x"8490"; + when "11" & x"89a" => DATA <= x"0085"; + when "11" & x"89b" => DATA <= x"0010"; + when "11" & x"89c" => DATA <= x"8008"; + when "11" & x"89d" => DATA <= x"1a00"; + when "11" & x"89e" => DATA <= x"0450"; + when "11" & x"89f" => DATA <= x"02cc"; + when "11" & x"8a0" => DATA <= x"0040"; + when "11" & x"8a1" => DATA <= x"d000"; + when "11" & x"8a2" => DATA <= x"0800"; + when "11" & x"8a3" => DATA <= x"4140"; + when "11" & x"8a4" => DATA <= x"0049"; + when "11" & x"8a5" => DATA <= x"0012"; + when "11" & x"8a6" => DATA <= x"5000"; + when "11" & x"8a7" => DATA <= x"8240"; + when "11" & x"8a8" => DATA <= x"003a"; + when "11" & x"8a9" => DATA <= x"0010"; + when "11" & x"8aa" => DATA <= x"f00a"; + when "11" & x"8ab" => DATA <= x"0001"; + when "11" & x"8ac" => DATA <= x"6802"; + when "11" & x"8ad" => DATA <= x"0000"; + when "11" & x"8ae" => DATA <= x"40d0"; + when "11" & x"8af" => DATA <= x"058c"; + when "11" & x"8b0" => DATA <= x"8001"; + when "11" & x"8b1" => DATA <= x"2800"; + when "11" & x"8b2" => DATA <= x"b200"; + when "11" & x"8b3" => DATA <= x"1050"; + when "11" & x"8b4" => DATA <= x"000a"; + when "11" & x"8b5" => DATA <= x"8009"; + when "11" & x"8b6" => DATA <= x"8000"; + when "11" & x"8b7" => DATA <= x"8500"; + when "11" & x"8b8" => DATA <= x"2068"; + when "11" & x"8b9" => DATA <= x"0009"; + when "11" & x"8ba" => DATA <= x"4112"; + when "11" & x"8bb" => DATA <= x"0001"; + when "11" & x"8bc" => DATA <= x"d000"; + when "11" & x"8bd" => DATA <= x"0f80"; + when "11" & x"8be" => DATA <= x"0100"; + when "11" & x"8bf" => DATA <= x"0080"; + when "11" & x"8c0" => DATA <= x"80e0"; + when "11" & x"8c1" => DATA <= x"0020"; + when "11" & x"8c2" => DATA <= x"a003"; + when "11" & x"8c3" => DATA <= x"8700"; + when "11" & x"8c4" => DATA <= x"10a8"; + when "11" & x"8c5" => DATA <= x"0084"; + when "11" & x"8c6" => DATA <= x"0040"; + when "11" & x"8c7" => DATA <= x"0004"; + when "11" & x"8c8" => DATA <= x"040e"; + when "11" & x"8c9" => DATA <= x"0008"; + when "11" & x"8ca" => DATA <= x"7800"; + when "11" & x"8cb" => DATA <= x"4380"; + when "11" & x"8cc" => DATA <= x"1894"; + when "11" & x"8cd" => DATA <= x"0080"; + when "11" & x"8ce" => DATA <= x"6078"; + when "11" & x"8cf" => DATA <= x"0700"; + when "11" & x"8d0" => DATA <= x"1001"; + when "11" & x"8d1" => DATA <= x"5c00"; + when "11" & x"8d2" => DATA <= x"01e0"; + when "11" & x"8d3" => DATA <= x"041f"; + when "11" & x"8d4" => DATA <= x"0000"; + when "11" & x"8d5" => DATA <= x"7c01"; + when "11" & x"8d6" => DATA <= x"4140"; + when "11" & x"8d7" => DATA <= x"0203"; + when "11" & x"8d8" => DATA <= x"0000"; + when "11" & x"8d9" => DATA <= x"0340"; + when "11" & x"8da" => DATA <= x"0080"; + when "11" & x"8db" => DATA <= x"0004"; + when "11" & x"8dc" => DATA <= x"4000"; + when "11" & x"8dd" => DATA <= x"0080"; + when "11" & x"8de" => DATA <= x"011c"; + when "11" & x"8df" => DATA <= x"001e"; + when "11" & x"8e0" => DATA <= x"0050"; + when "11" & x"8e1" => DATA <= x"7012"; + when "11" & x"8e2" => DATA <= x"c001"; + when "11" & x"8e3" => DATA <= x"1200"; + when "11" & x"8e4" => DATA <= x"28a0"; + when "11" & x"8e5" => DATA <= x"8145"; + when "11" & x"8e6" => DATA <= x"7c3f"; + when "11" & x"8e7" => DATA <= x"abe1"; + when "11" & x"8e8" => DATA <= x"fce8"; + when "11" & x"8e9" => DATA <= x"7c3f"; + when "11" & x"8ea" => DATA <= x"f4fd"; + when "11" & x"8eb" => DATA <= x"7f47"; + when "11" & x"8ec" => DATA <= x"e00a"; + when "11" & x"8ed" => DATA <= x"ff00"; + when "11" & x"8ee" => DATA <= x"3feb"; + when "11" & x"8ef" => DATA <= x"fa80"; + when "11" & x"8f0" => DATA <= x"01ee"; + when "11" & x"8f1" => DATA <= x"f601"; + when "11" & x"8f2" => DATA <= x"2cde"; + when "11" & x"8f3" => DATA <= x"6b00"; + when "11" & x"8f4" => DATA <= x"5141"; + when "11" & x"8f5" => DATA <= x"228a"; + when "11" & x"8f6" => DATA <= x"05e0"; + when "11" & x"8f7" => DATA <= x"000a"; + when "11" & x"8f8" => DATA <= x"2aaa"; + when "11" & x"8f9" => DATA <= x"aa05"; + when "11" & x"8fa" => DATA <= x"54a3"; + when "11" & x"8fb" => DATA <= x"547b"; + when "11" & x"8fc" => DATA <= x"f9fc"; + when "11" & x"8fd" => DATA <= x"41c0"; + when "11" & x"8fe" => DATA <= x"0c50"; + when "11" & x"8ff" => DATA <= x"0861"; + when "11" & x"900" => DATA <= x"f000"; + when "11" & x"901" => DATA <= x"0212"; + when "11" & x"902" => DATA <= x"1f8f"; + when "11" & x"903" => DATA <= x"f400"; + when "11" & x"904" => DATA <= x"000f"; + when "11" & x"905" => DATA <= x"d008"; + when "11" & x"906" => DATA <= x"1a8f"; + when "11" & x"907" => DATA <= x"a00b"; + when "11" & x"908" => DATA <= x"ff64"; + when "11" & x"909" => DATA <= x"002f"; + when "11" & x"90a" => DATA <= x"fdf6"; + when "11" & x"90b" => DATA <= x"f300"; + when "11" & x"90c" => DATA <= x"eb8d"; + when "11" & x"90d" => DATA <= x"00e8"; + when "11" & x"90e" => DATA <= x"0508"; + when "11" & x"90f" => DATA <= x"003b"; + when "11" & x"910" => DATA <= x"bfbf"; + when "11" & x"911" => DATA <= x"dde2"; + when "11" & x"912" => DATA <= x"793e"; + when "11" & x"913" => DATA <= x"5f8f"; + when "11" & x"914" => DATA <= x"e402"; + when "11" & x"915" => DATA <= x"bf00"; + when "11" & x"916" => DATA <= x"e007"; + when "11" & x"917" => DATA <= x"8700"; + when "11" & x"918" => DATA <= x"3fd9"; + when "11" & x"919" => DATA <= x"ec03"; + when "11" & x"91a" => DATA <= x"e3fc"; + when "11" & x"91b" => DATA <= x"0080"; + when "11" & x"91c" => DATA <= x"7332"; + when "11" & x"91d" => DATA <= x"d8ee"; + when "11" & x"91e" => DATA <= x"7703"; + when "11" & x"91f" => DATA <= x"01c0"; + when "11" & x"920" => DATA <= x"1f4f"; + when "11" & x"921" => DATA <= x"87c3"; + when "11" & x"922" => DATA <= x"69f0"; + when "11" & x"923" => DATA <= x"b878"; + when "11" & x"924" => DATA <= x"3e51"; + when "11" & x"925" => DATA <= x"2914"; + when "11" & x"926" => DATA <= x"0281"; + when "11" & x"927" => DATA <= x"5a14"; + when "11" & x"928" => DATA <= x"a002"; + when "11" & x"929" => DATA <= x"8500"; + when "11" & x"92a" => DATA <= x"1528"; + when "11" & x"92b" => DATA <= x"00a9"; + when "11" & x"92c" => DATA <= x"ffcf"; + when "11" & x"92d" => DATA <= x"ee00"; + when "11" & x"92e" => DATA <= x"5c78"; + when "11" & x"92f" => DATA <= x"037f"; + when "11" & x"930" => DATA <= x"c01f"; + when "11" & x"931" => DATA <= x"fe00"; + when "11" & x"932" => DATA <= x"7fa0"; + when "11" & x"933" => DATA <= x"0084"; + when "11" & x"934" => DATA <= x"802f"; + when "11" & x"935" => DATA <= x"e800"; + when "11" & x"936" => DATA <= x"1120"; + when "11" & x"937" => DATA <= x"0dff"; + when "11" & x"938" => DATA <= x"007e"; + when "11" & x"939" => DATA <= x"f803"; + when "11" & x"93a" => DATA <= x"fbc0"; + when "11" & x"93b" => DATA <= x"0234"; + when "11" & x"93c" => DATA <= x"0010"; + when "11" & x"93d" => DATA <= x"f00f"; + when "11" & x"93e" => DATA <= x"00d0"; + when "11" & x"93f" => DATA <= x"0010"; + when "11" & x"940" => DATA <= x"0020"; + when "11" & x"941" => DATA <= x"0210"; + when "11" & x"942" => DATA <= x"7002"; + when "11" & x"943" => DATA <= x"03c0"; + when "11" & x"944" => DATA <= x"3c03"; + when "11" & x"945" => DATA <= x"c002"; + when "11" & x"946" => DATA <= x"3400"; + when "11" & x"947" => DATA <= x"10a0"; + when "11" & x"948" => DATA <= x"0080"; + when "11" & x"949" => DATA <= x"0041"; + when "11" & x"94a" => DATA <= x"400a"; + when "11" & x"94b" => DATA <= x"2010"; + when "11" & x"94c" => DATA <= x"8bc0"; + when "11" & x"94d" => DATA <= x"3400"; + when "11" & x"94e" => DATA <= x"4000"; + when "11" & x"94f" => DATA <= x"1000"; + when "11" & x"950" => DATA <= x"041e"; + when "11" & x"951" => DATA <= x"0020"; + when "11" & x"952" => DATA <= x"f00f"; + when "11" & x"953" => DATA <= x"0000"; + when "11" & x"954" => DATA <= x"00bc"; + when "11" & x"955" => DATA <= x"02c0"; + when "11" & x"956" => DATA <= x"0434"; + when "11" & x"957" => DATA <= x"0003"; + when "11" & x"958" => DATA <= x"a001"; + when "11" & x"959" => DATA <= x"4a02"; + when "11" & x"95a" => DATA <= x"8001"; + when "11" & x"95b" => DATA <= x"1e00"; + when "11" & x"95c" => DATA <= x"0020"; + when "11" & x"95d" => DATA <= x"7800"; + when "11" & x"95e" => DATA <= x"0821"; + when "11" & x"95f" => DATA <= x"4007"; + when "11" & x"960" => DATA <= x"aa00"; + when "11" & x"961" => DATA <= x"0848"; + when "11" & x"962" => DATA <= x"03ff"; + when "11" & x"963" => DATA <= x"c01f"; + when "11" & x"964" => DATA <= x"fe00"; + when "11" & x"965" => DATA <= x"fff0"; + when "11" & x"966" => DATA <= x"01fd"; + when "11" & x"967" => DATA <= x"0004"; + when "11" & x"968" => DATA <= x"3c03"; + when "11" & x"969" => DATA <= x"4004"; + when "11" & x"96a" => DATA <= x"1200"; + when "11" & x"96b" => DATA <= x"10a0"; + when "11" & x"96c" => DATA <= x"0085"; + when "11" & x"96d" => DATA <= x"0004"; + when "11" & x"96e" => DATA <= x"3c03"; + when "11" & x"96f" => DATA <= x"4010"; + when "11" & x"970" => DATA <= x"1e00"; + when "11" & x"971" => DATA <= x"fff0"; + when "11" & x"972" => DATA <= x"07bf"; + when "11" & x"973" => DATA <= x"803e"; + when "11" & x"974" => DATA <= x"ec00"; + when "11" & x"975" => DATA <= x"c005"; + when "11" & x"976" => DATA <= x"a001"; + when "11" & x"977" => DATA <= x"0700"; + when "11" & x"978" => DATA <= x"007c"; + when "11" & x"979" => DATA <= x"02c0"; + when "11" & x"97a" => DATA <= x"0600"; + when "11" & x"97b" => DATA <= x"0300"; + when "11" & x"97c" => DATA <= x"0041"; + when "11" & x"97d" => DATA <= x"e014"; + when "11" & x"97e" => DATA <= x"0040"; + when "11" & x"97f" => DATA <= x"9000"; + when "11" & x"980" => DATA <= x"8700"; + when "11" & x"981" => DATA <= x"0801"; + when "11" & x"982" => DATA <= x"1400"; + when "11" & x"983" => DATA <= x"08e0"; + when "11" & x"984" => DATA <= x"006d"; + when "11" & x"985" => DATA <= x"0020"; + when "11" & x"986" => DATA <= x"3c03"; + when "11" & x"987" => DATA <= x"c03c"; + when "11" & x"988" => DATA <= x"0280"; + when "11" & x"989" => DATA <= x"041e"; + when "11" & x"98a" => DATA <= x"0020"; + when "11" & x"98b" => DATA <= x"0c70"; + when "11" & x"98c" => DATA <= x"0004"; + when "11" & x"98d" => DATA <= x"4160"; + when "11" & x"98e" => DATA <= x"0200"; + when "11" & x"98f" => DATA <= x"0800"; + when "11" & x"990" => DATA <= x"1140"; + when "11" & x"991" => DATA <= x"0080"; + when "11" & x"992" => DATA <= x"0004"; + when "11" & x"993" => DATA <= x"3c00"; + when "11" & x"994" => DATA <= x"a0ef"; + when "11" & x"995" => DATA <= x"00d0"; + when "11" & x"996" => DATA <= x"0040"; + when "11" & x"997" => DATA <= x"0141"; + when "11" & x"998" => DATA <= x"a00e"; + when "11" & x"999" => DATA <= x"c7e3"; + when "11" & x"99a" => DATA <= x"e1d8"; + when "11" & x"99b" => DATA <= x"fc7c"; + when "11" & x"99c" => DATA <= x"3f9f"; + when "11" & x"99d" => DATA <= x"167e"; + when "11" & x"99e" => DATA <= x"bf1f"; + when "11" & x"99f" => DATA <= x"d7f8"; + when "11" & x"9a0" => DATA <= x"02bf"; + when "11" & x"9a1" => DATA <= x"8015"; + when "11" & x"9a2" => DATA <= x"fe2b"; + when "11" & x"9a3" => DATA <= x"1780"; + when "11" & x"9a4" => DATA <= x"0560"; + when "11" & x"9a5" => DATA <= x"a200"; + when "11" & x"9a6" => DATA <= x"b42e"; + when "11" & x"9a7" => DATA <= x"01b0"; + when "11" & x"9a8" => DATA <= x"0482"; + when "11" & x"9a9" => DATA <= x"2900"; + when "11" & x"9aa" => DATA <= x"8b44"; + when "11" & x"9ab" => DATA <= x"a210"; + when "11" & x"9ac" => DATA <= x"08a5"; + when "11" & x"9ad" => DATA <= x"51fc"; + when "11" & x"9ae" => DATA <= x"8f4f"; + when "11" & x"9af" => DATA <= x"effa"; + when "11" & x"9b0" => DATA <= x"7f23"; + when "11" & x"9b1" => DATA <= x"be00"; + when "11" & x"9b2" => DATA <= x"5400"; + when "11" & x"9b3" => DATA <= x"fb00"; + when "11" & x"9b4" => DATA <= x"0200"; + when "11" & x"9b5" => DATA <= x"4ffe"; + when "11" & x"9b6" => DATA <= x"0001"; + when "11" & x"9b7" => DATA <= x"f000"; + when "11" & x"9b8" => DATA <= x"fdc0"; + when "11" & x"9b9" => DATA <= x"0098"; + when "11" & x"9ba" => DATA <= x"0702"; + when "11" & x"9bb" => DATA <= x"001f"; + when "11" & x"9bc" => DATA <= x"7ffd"; + when "11" & x"9bd" => DATA <= x"e6fb"; + when "11" & x"9be" => DATA <= x"eff7"; + when "11" & x"9bf" => DATA <= x"df80"; + when "11" & x"9c0" => DATA <= x"847c"; + when "11" & x"9c1" => DATA <= x"0000"; + when "11" & x"9c2" => DATA <= x"e777"; + when "11" & x"9c3" => DATA <= x"b9e7"; + when "11" & x"9c4" => DATA <= x"bdfe"; + when "11" & x"9c5" => DATA <= x"805c"; + when "11" & x"9c6" => DATA <= x"0eb6"; + when "11" & x"9c7" => DATA <= x"fb40"; + when "11" & x"9c8" => DATA <= x"2bfc"; + when "11" & x"9c9" => DATA <= x"1fa0"; + when "11" & x"9ca" => DATA <= x"0ff6"; + when "11" & x"9cb" => DATA <= x"0380"; + when "11" & x"9cc" => DATA <= x"00e0"; + when "11" & x"9cd" => DATA <= x"7130"; + when "11" & x"9ce" => DATA <= x"9c0c"; + when "11" & x"9cf" => DATA <= x"0703"; + when "11" & x"9d0" => DATA <= x"8e87"; + when "11" & x"9d1" => DATA <= x"d3f4"; + when "11" & x"9d2" => DATA <= x"3e1e"; + when "11" & x"9d3" => DATA <= x"09a7"; + when "11" & x"9d4" => DATA <= x"c2b4"; + when "11" & x"9d5" => DATA <= x"0a0d"; + when "11" & x"9d6" => DATA <= x"0050"; + when "11" & x"9d7" => DATA <= x"2014"; + when "11" & x"9d8" => DATA <= x"fc54"; + when "11" & x"9d9" => DATA <= x"0017"; + when "11" & x"9da" => DATA <= x"c21c"; + when "11" & x"9db" => DATA <= x"a9bf"; + when "11" & x"9dc" => DATA <= x"d5fe"; + when "11" & x"9dd" => DATA <= x"fe00"; + when "11" & x"9de" => DATA <= x"d000"; + when "11" & x"9df" => DATA <= x"4000"; + when "11" & x"9e0" => DATA <= x"b8d0"; + when "11" & x"9e1" => DATA <= x"0040"; + when "11" & x"9e2" => DATA <= x"01bf"; + when "11" & x"9e3" => DATA <= x"e00e"; + when "11" & x"9e4" => DATA <= x"fa00"; + when "11" & x"9e5" => DATA <= x"1048"; + when "11" & x"9e6" => DATA <= x"01fa"; + when "11" & x"9e7" => DATA <= x"8002"; + when "11" & x"9e8" => DATA <= x"1400"; + when "11" & x"9e9" => DATA <= x"0200"; + when "11" & x"9ea" => DATA <= x"2df4"; + when "11" & x"9eb" => DATA <= x"0102"; + when "11" & x"9ec" => DATA <= x"006d"; + when "11" & x"9ed" => DATA <= x"e801"; + when "11" & x"9ee" => DATA <= x"0000"; + when "11" & x"9ef" => DATA <= x"edf0"; + when "11" & x"9f0" => DATA <= x"03f7"; + when "11" & x"9f1" => DATA <= x"8006"; + when "11" & x"9f2" => DATA <= x"fc03"; + when "11" & x"9f3" => DATA <= x"c024"; + when "11" & x"9f4" => DATA <= x"0021"; + when "11" & x"9f5" => DATA <= x"a001"; + when "11" & x"9f6" => DATA <= x"0031"; + when "11" & x"9f7" => DATA <= x"0280"; + when "11" & x"9f8" => DATA <= x"009c"; + when "11" & x"9f9" => DATA <= x"0080"; + when "11" & x"9fa" => DATA <= x"0878"; + when "11" & x"9fb" => DATA <= x"0780"; + when "11" & x"9fc" => DATA <= x"5800"; + when "11" & x"9fd" => DATA <= x"4280"; + when "11" & x"9fe" => DATA <= x"0412"; + when "11" & x"9ff" => DATA <= x"0020"; + when "11" & x"a00" => DATA <= x"0008"; + when "11" & x"a01" => DATA <= x"b801"; + when "11" & x"a02" => DATA <= x"01c0"; + when "11" & x"a03" => DATA <= x"001f"; + when "11" & x"a04" => DATA <= x"00f0"; + when "11" & x"a05" => DATA <= x"0000"; + when "11" & x"a06" => DATA <= x"07c0"; + when "11" & x"a07" => DATA <= x"3803"; + when "11" & x"a08" => DATA <= x"80bc"; + when "11" & x"a09" => DATA <= x"02c0"; + when "11" & x"a0a" => DATA <= x"1012"; + when "11" & x"a0b" => DATA <= x"0008"; + when "11" & x"a0c" => DATA <= x"1500"; + when "11" & x"a0d" => DATA <= x"1008"; + when "11" & x"a0e" => DATA <= x"221a"; + when "11" & x"a0f" => DATA <= x"0000"; + when "11" & x"a10" => DATA <= x"61f0"; + when "11" & x"a11" => DATA <= x"0e00"; + when "11" & x"a12" => DATA <= x"0168"; + when "11" & x"a13" => DATA <= x"000a"; + when "11" & x"a14" => DATA <= x"8004"; + when "11" & x"a15" => DATA <= x"6001"; + when "11" & x"a16" => DATA <= x"d800"; + when "11" & x"a17" => DATA <= x"05c0"; + when "11" & x"a18" => DATA <= x"0100"; + when "11" & x"a19" => DATA <= x"0282"; + when "11" & x"a1a" => DATA <= x"8010"; + when "11" & x"a1b" => DATA <= x"3400"; + when "11" & x"a1c" => DATA <= x"0800"; + when "11" & x"a1d" => DATA <= x"0228"; + when "11" & x"a1e" => DATA <= x"0081"; + when "11" & x"a1f" => DATA <= x"2008"; + when "11" & x"a20" => DATA <= x"da00"; + when "11" & x"a21" => DATA <= x"1050"; + when "11" & x"a22" => DATA <= x"0010"; + when "11" & x"a23" => DATA <= x"000c"; + when "11" & x"a24" => DATA <= x"f00f"; + when "11" & x"a25" => DATA <= x"00b0"; + when "11" & x"a26" => DATA <= x"0085"; + when "11" & x"a27" => DATA <= x"0004"; + when "11" & x"a28" => DATA <= x"2400"; + when "11" & x"a29" => DATA <= x"41c0"; + when "11" & x"a2a" => DATA <= x"010b"; + when "11" & x"a2b" => DATA <= x"0040"; + when "11" & x"a2c" => DATA <= x"6800"; + when "11" & x"a2d" => DATA <= x"1000"; + when "11" & x"a2e" => DATA <= x"66d0"; + when "11" & x"a2f" => DATA <= x"0010"; + when "11" & x"a30" => DATA <= x"0029"; + when "11" & x"a31" => DATA <= x"4001"; + when "11" & x"a32" => DATA <= x"0a00"; + when "11" & x"a33" => DATA <= x"4080"; + when "11" & x"a34" => DATA <= x"1154"; + when "11" & x"a35" => DATA <= x"0018"; + when "11" & x"a36" => DATA <= x"0810"; + when "11" & x"a37" => DATA <= x"0e00"; + when "11" & x"a38" => DATA <= x"0381"; + when "11" & x"a39" => DATA <= x"40e1"; + when "11" & x"a3a" => DATA <= x"c000"; + when "11" & x"a3b" => DATA <= x"1000"; + when "11" & x"a3c" => DATA <= x"0400"; + when "11" & x"a3d" => DATA <= x"01e0"; + when "11" & x"a3e" => DATA <= x"0027"; + when "11" & x"a3f" => DATA <= x"8050"; + when "11" & x"a40" => DATA <= x"000c"; + when "11" & x"a41" => DATA <= x"0200"; + when "11" & x"a42" => DATA <= x"2150"; + when "11" & x"a43" => DATA <= x"0108"; + when "11" & x"a44" => DATA <= x"01c0"; + when "11" & x"a45" => DATA <= x"440e"; + when "11" & x"a46" => DATA <= x"0008"; + when "11" & x"a47" => DATA <= x"6800"; + when "11" & x"a48" => DATA <= x"2340"; + when "11" & x"a49" => DATA <= x"0080"; + when "11" & x"a4a" => DATA <= x"0085"; + when "11" & x"a4b" => DATA <= x"4050"; + when "11" & x"a4c" => DATA <= x"0202"; + when "11" & x"a4d" => DATA <= x"4008"; + when "11" & x"a4e" => DATA <= x"1400"; + when "11" & x"a4f" => DATA <= x"f0a0"; + when "11" & x"a50" => DATA <= x"0024"; + when "11" & x"a51" => DATA <= x"8030"; + when "11" & x"a52" => DATA <= x"0056"; + when "11" & x"a53" => DATA <= x"0029"; + when "11" & x"a54" => DATA <= x"d000"; + when "11" & x"a55" => DATA <= x"8000"; + when "11" & x"a56" => DATA <= x"4140"; + when "11" & x"a57" => DATA <= x"021f"; + when "11" & x"a58" => DATA <= x"0000"; + when "11" & x"a59" => DATA <= x"8001"; + when "11" & x"a5a" => DATA <= x"0010"; + when "11" & x"a5b" => DATA <= x"0063"; + when "11" & x"a5c" => DATA <= x"c008"; + when "11" & x"a5d" => DATA <= x"1e00"; + when "11" & x"a5e" => DATA <= x"0014"; + when "11" & x"a5f" => DATA <= x"2201"; + when "11" & x"a60" => DATA <= x"0007"; + when "11" & x"a61" => DATA <= x"c700"; + when "11" & x"a62" => DATA <= x"3e1f"; + when "11" & x"a63" => DATA <= x"ce87"; + when "11" & x"a64" => DATA <= x"c3fd"; + when "11" & x"a65" => DATA <= x"d8fc"; + when "11" & x"a66" => DATA <= x"7c51"; + when "11" & x"a67" => DATA <= x"fd5f"; + when "11" & x"a68" => DATA <= x"d1fa"; + when "11" & x"a69" => DATA <= x"fc7f"; + when "11" & x"a6a" => DATA <= x"4015"; + when "11" & x"a6b" => DATA <= x"fe00"; + when "11" & x"a6c" => DATA <= x"7f9f"; + when "11" & x"a6d" => DATA <= x"c001"; + when "11" & x"a6e" => DATA <= x"c005"; + when "11" & x"a6f" => DATA <= x"0300"; + when "11" & x"a70" => DATA <= x"0034"; + when "11" & x"a71" => DATA <= x"015e"; + when "11" & x"a72" => DATA <= x"0e0a"; + when "11" & x"a73" => DATA <= x"f048"; + when "11" & x"a74" => DATA <= x"001e"; + when "11" & x"a75" => DATA <= x"0a8a"; + when "11" & x"a76" => DATA <= x"aa51"; + when "11" & x"a77" => DATA <= x"2090"; + when "11" & x"a78" => DATA <= x"08a7"; + when "11" & x"a79" => DATA <= x"57bf"; + when "11" & x"a7a" => DATA <= x"9fdf"; + when "11" & x"a7b" => DATA <= x"8b80"; + when "11" & x"a7c" => DATA <= x"c305"; + when "11" & x"a7d" => DATA <= x"8b40"; + when "11" & x"a7e" => DATA <= x"0227"; + when "11" & x"a7f" => DATA <= x"fb84"; + when "11" & x"a80" => DATA <= x"0007"; + when "11" & x"a81" => DATA <= x"7fbf"; + when "11" & x"a82" => DATA <= x"0000"; + when "11" & x"a83" => DATA <= x"4aff"; + when "11" & x"a84" => DATA <= x"7800"; + when "11" & x"a85" => DATA <= x"01e0"; + when "11" & x"a86" => DATA <= x"1a80"; + when "11" & x"a87" => DATA <= x"eff6"; + when "11" & x"a88" => DATA <= x"0001"; + when "11" & x"a89" => DATA <= x"800f"; + when "11" & x"a8a" => DATA <= x"3ff7"; + when "11" & x"a8b" => DATA <= x"fbed"; + when "11" & x"a8c" => DATA <= x"e0e3"; + when "11" & x"a8d" => DATA <= x"5934"; + when "11" & x"a8e" => DATA <= x"e5c6"; + when "11" & x"a8f" => DATA <= x"4040"; + when "11" & x"a90" => DATA <= x"010b"; + when "11" & x"a91" => DATA <= x"007f"; + when "11" & x"a92" => DATA <= x"bbcd"; + when "11" & x"a93" => DATA <= x"e077"; + when "11" & x"a94" => DATA <= x"3abd"; + when "11" & x"a95" => DATA <= x"daef"; + when "11" & x"a96" => DATA <= x"1f80"; + when "11" & x"a97" => DATA <= x"8000"; + when "11" & x"a98" => DATA <= x"2000"; + when "11" & x"a99" => DATA <= x"a86c"; + when "11" & x"a9a" => DATA <= x"3e00"; + when "11" & x"a9b" => DATA <= x"3c2c"; + when "11" & x"a9c" => DATA <= x"01f8"; + when "11" & x"a9d" => DATA <= x"ffb0"; + when "11" & x"a9e" => DATA <= x"073b"; + when "11" & x"a9f" => DATA <= x"3dcc"; + when "11" & x"aa0" => DATA <= x"02ae"; + when "11" & x"aa1" => DATA <= x"0603"; + when "11" & x"aa2" => DATA <= x"f836"; + when "11" & x"aa3" => DATA <= x"1f4f"; + when "11" & x"aa4" => DATA <= x"83c3"; + when "11" & x"aa5" => DATA <= x"e9f0"; + when "11" & x"aa6" => DATA <= x"fa7c"; + when "11" & x"aa7" => DATA <= x"0800"; + when "11" & x"aa8" => DATA <= x"0201"; + when "11" & x"aa9" => DATA <= x"7804"; + when "11" & x"aaa" => DATA <= x"0800"; + when "11" & x"aab" => DATA <= x"2a10"; + when "11" & x"aac" => DATA <= x"0000"; + when "11" & x"aad" => DATA <= x"40a0"; + when "11" & x"aae" => DATA <= x"00ab"; + when "11" & x"aaf" => DATA <= x"dfc7"; + when "11" & x"ab0" => DATA <= x"eefe"; + when "11" & x"ab1" => DATA <= x"7fbe"; + when "11" & x"ab2" => DATA <= x"2400"; + when "11" & x"ab3" => DATA <= x"0200"; + when "11" & x"ab4" => DATA <= x"5c37"; + when "11" & x"ab5" => DATA <= x"6c01"; + when "11" & x"ab6" => DATA <= x"aabf"; + when "11" & x"ab7" => DATA <= x"e000"; + when "11" & x"ab8" => DATA <= x"1500"; + when "11" & x"ab9" => DATA <= x"3fcd"; + when "11" & x"aba" => DATA <= x"b600"; + when "11" & x"abb" => DATA <= x"ef5f"; + when "11" & x"abc" => DATA <= x"f000"; + when "11" & x"abd" => DATA <= x"1280"; + when "11" & x"abe" => DATA <= x"16ef"; + when "11" & x"abf" => DATA <= x"bb00"; + when "11" & x"ac0" => DATA <= x"6dbf"; + when "11" & x"ac1" => DATA <= x"6c01"; + when "11" & x"ac2" => DATA <= x"fa4e"; + when "11" & x"ac3" => DATA <= x"b007"; + when "11" & x"ac4" => DATA <= x"f846"; + when "11" & x"ac5" => DATA <= x"8002"; + when "11" & x"ac6" => DATA <= x"014a"; + when "11" & x"ac7" => DATA <= x"001f"; + when "11" & x"ac8" => DATA <= x"f000"; + when "11" & x"ac9" => DATA <= x"07c0"; + when "11" & x"aca" => DATA <= x"041a"; + when "11" & x"acb" => DATA <= x"0010"; + when "11" & x"acc" => DATA <= x"0308"; + when "11" & x"acd" => DATA <= x"3800"; + when "11" & x"ace" => DATA <= x"09a0"; + when "11" & x"acf" => DATA <= x"040f"; + when "11" & x"ad0" => DATA <= x"00f0"; + when "11" & x"ad1" => DATA <= x"0900"; + when "11" & x"ad2" => DATA <= x"0850"; + when "11" & x"ad3" => DATA <= x"0043"; + when "11" & x"ad4" => DATA <= x"8002"; + when "11" & x"ad5" => DATA <= x"2200"; + when "11" & x"ad6" => DATA <= x"008a"; + when "11" & x"ad7" => DATA <= x"8004"; + when "11" & x"ad8" => DATA <= x"1e01"; + when "11" & x"ad9" => DATA <= x"6003"; + when "11" & x"ada" => DATA <= x"0f00"; + when "11" & x"adb" => DATA <= x"f00b"; + when "11" & x"adc" => DATA <= x"0001"; + when "11" & x"add" => DATA <= x"5000"; + when "11" & x"ade" => DATA <= x"4804"; + when "11" & x"adf" => DATA <= x"00a0"; + when "11" & x"ae0" => DATA <= x"2f00"; + when "11" & x"ae1" => DATA <= x"a001"; + when "11" & x"ae2" => DATA <= x"0d80"; + when "11" & x"ae3" => DATA <= x"2000"; + when "11" & x"ae4" => DATA <= x"1500"; + when "11" & x"ae5" => DATA <= x"0060"; + when "11" & x"ae6" => DATA <= x"1011"; + when "11" & x"ae7" => DATA <= x"0002"; + when "11" & x"ae8" => DATA <= x"0580"; + when "11" & x"ae9" => DATA <= x"2000"; + when "11" & x"aea" => DATA <= x"1501"; + when "11" & x"aeb" => DATA <= x"c00c"; + when "11" & x"aec" => DATA <= x"27dd"; + when "11" & x"aed" => DATA <= x"0004"; + when "11" & x"aee" => DATA <= x"4000"; + when "11" & x"aef" => DATA <= x"2000"; + when "11" & x"af0" => DATA <= x"45ff"; + when "11" & x"af1" => DATA <= x"e00f"; + when "11" & x"af2" => DATA <= x"ef00"; + when "11" & x"af3" => DATA <= x"7ff8"; + when "11" & x"af4" => DATA <= x"00ff"; + when "11" & x"af5" => DATA <= x"c03c"; + when "11" & x"af6" => DATA <= x"0000"; + when "11" & x"af7" => DATA <= x"20f0"; + when "11" & x"af8" => DATA <= x"0085"; + when "11" & x"af9" => DATA <= x"0004"; + when "11" & x"afa" => DATA <= x"3802"; + when "11" & x"afb" => DATA <= x"8428"; + when "11" & x"afc" => DATA <= x"0021"; + when "11" & x"afd" => DATA <= x"c001"; + when "11" & x"afe" => DATA <= x"1407"; + when "11" & x"aff" => DATA <= x"803b"; + when "11" & x"b00" => DATA <= x"fc01"; + when "11" & x"b01" => DATA <= x"efe0"; + when "11" & x"b02" => DATA <= x"0fff"; + when "11" & x"b03" => DATA <= x"003b"; + when "11" & x"b04" => DATA <= x"8001"; + when "11" & x"b05" => DATA <= x"0100"; + when "11" & x"b06" => DATA <= x"0102"; + when "11" & x"b07" => DATA <= x"8000"; + when "11" & x"b08" => DATA <= x"3e01"; + when "11" & x"b09" => DATA <= x"e000"; + when "11" & x"b0a" => DATA <= x"0012"; + when "11" & x"b0b" => DATA <= x"0000"; + when "11" & x"b0c" => DATA <= x"0640"; + when "11" & x"b0d" => DATA <= x"5000"; + when "11" & x"b0e" => DATA <= x"0404"; + when "11" & x"b0f" => DATA <= x"0001"; + when "11" & x"b10" => DATA <= x"1080"; + when "11" & x"b11" => DATA <= x"0420"; + when "11" & x"b12" => DATA <= x"0008"; + when "11" & x"b13" => DATA <= x"21a0"; + when "11" & x"b14" => DATA <= x"010f"; + when "11" & x"b15" => DATA <= x"0000"; + when "11" & x"b16" => DATA <= x"0228"; + when "11" & x"b17" => DATA <= x"0009"; + when "11" & x"b18" => DATA <= x"4000"; + when "11" & x"b19" => DATA <= x"4200"; + when "11" & x"b1a" => DATA <= x"6240"; + when "11" & x"b1b" => DATA <= x"1c06"; + when "11" & x"b1c" => DATA <= x"0183"; + when "11" & x"b1d" => DATA <= x"c240"; + when "11" & x"b1e" => DATA <= x"0805"; + when "11" & x"b1f" => DATA <= x"e401"; + when "11" & x"b20" => DATA <= x"4340"; + when "11" & x"b21" => DATA <= x"0060"; + when "11" & x"b22" => DATA <= x"1000"; + when "11" & x"b23" => DATA <= x"6380"; + when "11" & x"b24" => DATA <= x"003e"; + when "11" & x"b25" => DATA <= x"0001"; + when "11" & x"b26" => DATA <= x"a001"; + when "11" & x"b27" => DATA <= x"0c80"; + when "11" & x"b28" => DATA <= x"0068"; + when "11" & x"b29" => DATA <= x"0002"; + when "11" & x"b2a" => DATA <= x"6190"; + when "11" & x"b2b" => DATA <= x"0100"; + when "11" & x"b2c" => DATA <= x"00c9"; + when "11" & x"b2d" => DATA <= x"a000"; + when "11" & x"b2e" => DATA <= x"8b00"; + when "11" & x"b2f" => DATA <= x"a085"; + when "11" & x"b30" => DATA <= x"4021"; + when "11" & x"b31" => DATA <= x"fcfc"; + when "11" & x"b32" => DATA <= x"7c3f"; + when "11" & x"b33" => DATA <= x"abe1"; + when "11" & x"b34" => DATA <= x"fce8"; + when "11" & x"b35" => DATA <= x"e3f5"; + when "11" & x"b36" => DATA <= x"ff1f"; + when "11" & x"b37" => DATA <= x"afd7"; + when "11" & x"b38" => DATA <= x"cbf0"; + when "11" & x"b39" => DATA <= x"027c"; + when "11" & x"b3a" => DATA <= x"bf48"; + when "11" & x"b3b" => DATA <= x"03f0"; + when "11" & x"b3c" => DATA <= x"2228"; + when "11" & x"b3d" => DATA <= x"6140"; + when "11" & x"b3e" => DATA <= x"0161"; + when "11" & x"b3f" => DATA <= x"0098"; + when "11" & x"b40" => DATA <= x"0010"; + when "11" & x"b41" => DATA <= x"6380"; + when "11" & x"b42" => DATA <= x"1800"; + when "11" & x"b43" => DATA <= x"0600"; + when "11" & x"b44" => DATA <= x"0110"; + when "11" & x"b45" => DATA <= x"8a61"; + when "11" & x"b46" => DATA <= x"2290"; + when "11" & x"b47" => DATA <= x"2825"; + when "11" & x"b48" => DATA <= x"42aa"; + when "11" & x"b49" => DATA <= x"5fcd"; + when "11" & x"b4a" => DATA <= x"fcfe"; + when "11" & x"b4b" => DATA <= x"0002"; + when "11" & x"b4c" => DATA <= x"7003"; + when "11" & x"b4d" => DATA <= x"1402"; + when "11" & x"b4e" => DATA <= x"f8a0"; + when "11" & x"b4f" => DATA <= x"0020"; + when "11" & x"b50" => DATA <= x"01f8"; + when "11" & x"b51" => DATA <= x"ff90"; + when "11" & x"b52" => DATA <= x"0a80"; + when "11" & x"b53" => DATA <= x"40d4"; + when "11" & x"b54" => DATA <= x"7b83"; + when "11" & x"b55" => DATA <= x"ffeb"; + when "11" & x"b56" => DATA <= x"febe"; + when "11" & x"b57" => DATA <= x"dfef"; + when "11" & x"b58" => DATA <= x"beff"; + when "11" & x"b59" => DATA <= x"0048"; + when "11" & x"b5a" => DATA <= x"0f38"; + when "11" & x"b5b" => DATA <= x"e800"; + when "11" & x"b5c" => DATA <= x"4280"; + when "11" & x"b5d" => DATA <= x"1df3"; + when "11" & x"b5e" => DATA <= x"feef"; + when "11" & x"b5f" => DATA <= x"03b9"; + when "11" & x"b60" => DATA <= x"e8f9"; + when "11" & x"b61" => DATA <= x"7cbf"; + when "11" & x"b62" => DATA <= x"07d0"; + when "11" & x"b63" => DATA <= x"0081"; + when "11" & x"b64" => DATA <= x"f87c"; + when "11" & x"b65" => DATA <= x"2780"; + when "11" & x"b66" => DATA <= x"5c1c"; + when "11" & x"b67" => DATA <= x"00ff"; + when "11" & x"b68" => DATA <= x"603c"; + when "11" & x"b69" => DATA <= x"0f8f"; + when "11" & x"b6a" => DATA <= x"fe00"; + when "11" & x"b6b" => DATA <= x"77b0"; + when "11" & x"b6c" => DATA <= x"dcfd"; + when "11" & x"b6d" => DATA <= x"c000"; + when "11" & x"b6e" => DATA <= x"7107"; + when "11" & x"b6f" => DATA <= x"c369"; + when "11" & x"b70" => DATA <= x"f0f8"; + when "11" & x"b71" => DATA <= x"7b87"; + when "11" & x"b72" => DATA <= x"c000"; + when "11" & x"b73" => DATA <= x"412d"; + when "11" & x"b74" => DATA <= x"0200"; + when "11" & x"b75" => DATA <= x"2914"; + when "11" & x"b76" => DATA <= x"2940"; + when "11" & x"b77" => DATA <= x"054a"; + when "11" & x"b78" => DATA <= x"002a"; + when "11" & x"b79" => DATA <= x"143b"; + when "11" & x"b7a" => DATA <= x"f9ff"; + when "11" & x"b7b" => DATA <= x"3fc1"; + when "11" & x"b7c" => DATA <= x"0002"; + when "11" & x"b7d" => DATA <= x"e280"; + when "11" & x"b7e" => DATA <= x"1514"; + when "11" & x"b7f" => DATA <= x"0008"; + when "11" & x"b80" => DATA <= x"0037"; + when "11" & x"b81" => DATA <= x"e800"; + when "11" & x"b82" => DATA <= x"8400"; + when "11" & x"b83" => DATA <= x"40d0"; + when "11" & x"b84" => DATA <= x"03fe"; + when "11" & x"b85" => DATA <= x"8017"; + when "11" & x"b86" => DATA <= x"6002"; + when "11" & x"b87" => DATA <= x"0500"; + when "11" & x"b88" => DATA <= x"1fe8"; + when "11" & x"b89" => DATA <= x"00a0"; + when "11" & x"b8a" => DATA <= x"0010"; + when "11" & x"b8b" => DATA <= x"5002"; + when "11" & x"b8c" => DATA <= x"fe80"; + when "11" & x"b8d" => DATA <= x"0114"; + when "11" & x"b8e" => DATA <= x"0081"; + when "11" & x"b8f" => DATA <= x"0036"; + when "11" & x"b90" => DATA <= x"f400"; + when "11" & x"b91" => DATA <= x"8000"; + when "11" & x"b92" => DATA <= x"7ed0"; + when "11" & x"b93" => DATA <= x"0282"; + when "11" & x"b94" => DATA <= x"400d"; + when "11" & x"b95" => DATA <= x"d400"; + when "11" & x"b96" => DATA <= x"4a00"; + when "11" & x"b97" => DATA <= x"0128"; + when "11" & x"b98" => DATA <= x"0037"; + when "11" & x"b99" => DATA <= x"4001"; + when "11" & x"b9a" => DATA <= x"1000"; + when "11" & x"b9b" => DATA <= x"0bc0"; + when "11" & x"b9c" => DATA <= x"3c02"; + when "11" & x"b9d" => DATA <= x"8000"; + when "11" & x"b9e" => DATA <= x"400a"; + when "11" & x"b9f" => DATA <= x"011b"; + when "11" & x"ba0" => DATA <= x"8000"; + when "11" & x"ba1" => DATA <= x"21fe"; + when "11" & x"ba2" => DATA <= x"0001"; + when "11" & x"ba3" => DATA <= x"7002"; + when "11" & x"ba4" => DATA <= x"03c0"; + when "11" & x"ba5" => DATA <= x"021e"; + when "11" & x"ba6" => DATA <= x"01c0"; + when "11" & x"ba7" => DATA <= x"010a"; + when "11" & x"ba8" => DATA <= x"0008"; + when "11" & x"ba9" => DATA <= x"4800"; + when "11" & x"baa" => DATA <= x"8804"; + when "11" & x"bab" => DATA <= x"2210"; + when "11" & x"bac" => DATA <= x"0084"; + when "11" & x"bad" => DATA <= x"480f"; + when "11" & x"bae" => DATA <= x"00e0"; + when "11" & x"baf" => DATA <= x"0107"; + when "11" & x"bb0" => DATA <= x"0020"; + when "11" & x"bb1" => DATA <= x"2400"; + when "11" & x"bb2" => DATA <= x"0340"; + when "11" & x"bb3" => DATA <= x"001f"; + when "11" & x"bb4" => DATA <= x"0000"; + when "11" & x"bb5" => DATA <= x"0080"; + when "11" & x"bb6" => DATA <= x"002f"; + when "11" & x"bb7" => DATA <= x"0000"; + when "11" & x"bb8" => DATA <= x"0078"; + when "11" & x"bb9" => DATA <= x"0011"; + when "11" & x"bba" => DATA <= x"c002"; + when "11" & x"bbb" => DATA <= x"0040"; + when "11" & x"bbc" => DATA <= x"0042"; + when "11" & x"bbd" => DATA <= x"0060"; + when "11" & x"bbe" => DATA <= x"101c"; + when "11" & x"bbf" => DATA <= x"0003"; + when "11" & x"bc0" => DATA <= x"4d00"; + when "11" & x"bc1" => DATA <= x"30ec"; + when "11" & x"bc2" => DATA <= x"0080"; + when "11" & x"bc3" => DATA <= x"0060"; + when "11" & x"bc4" => DATA <= x"001c"; + when "11" & x"bc5" => DATA <= x"1200"; + when "11" & x"bc6" => DATA <= x"f001"; + when "11" & x"bc7" => DATA <= x"800f"; + when "11" & x"bc8" => DATA <= x"7400"; + when "11" & x"bc9" => DATA <= x"f000"; + when "11" & x"bca" => DATA <= x"00e8"; + when "11" & x"bcb" => DATA <= x"0163"; + when "11" & x"bcc" => DATA <= x"400b"; + when "11" & x"bcd" => DATA <= x"7a00"; + when "11" & x"bce" => DATA <= x"0400"; + when "11" & x"bcf" => DATA <= x"1b34"; + when "11" & x"bd0" => DATA <= x"0057"; + when "11" & x"bd1" => DATA <= x"0020"; + when "11" & x"bd2" => DATA <= x"6801"; + when "11" & x"bd3" => DATA <= x"db40"; + when "11" & x"bd4" => DATA <= x"0bd0"; + when "11" & x"bd5" => DATA <= x"0100"; + when "11" & x"bd6" => DATA <= x"0800"; + when "11" & x"bd7" => DATA <= x"1750"; + when "11" & x"bd8" => DATA <= x"006c"; + when "11" & x"bd9" => DATA <= x"0020"; + when "11" & x"bda" => DATA <= x"f00e"; + when "11" & x"bdb" => DATA <= x"0010"; + when "11" & x"bdc" => DATA <= x"7800"; + when "11" & x"bdd" => DATA <= x"43c0"; + when "11" & x"bde" => DATA <= x"2442"; + when "11" & x"bdf" => DATA <= x"4010"; + when "11" & x"be0" => DATA <= x"1400"; + when "11" & x"be1" => DATA <= x"8000"; + when "11" & x"be2" => DATA <= x"1000"; + when "11" & x"be3" => DATA <= x"8003"; + when "11" & x"be4" => DATA <= x"7500"; + when "11" & x"be5" => DATA <= x"3bc0"; + when "11" & x"be6" => DATA <= x"0200"; + when "11" & x"be7" => DATA <= x"1001"; + when "11" & x"be8" => DATA <= x"6f40"; + when "11" & x"be9" => DATA <= x"0ff0"; + when "11" & x"bea" => DATA <= x"0080"; + when "11" & x"beb" => DATA <= x"0200"; + when "11" & x"bec" => DATA <= x"4dd0"; + when "11" & x"bed" => DATA <= x"03b8"; + when "11" & x"bee" => DATA <= x"0010"; + when "11" & x"bef" => DATA <= x"3800"; + when "11" & x"bf0" => DATA <= x"0f25"; + when "11" & x"bf1" => DATA <= x"0381"; + when "11" & x"bf2" => DATA <= x"5400"; + when "11" & x"bf3" => DATA <= x"7800"; + when "11" & x"bf4" => DATA <= x"8000"; + when "11" & x"bf5" => DATA <= x"6000"; + when "11" & x"bf6" => DATA <= x"1d00"; + when "11" & x"bf7" => DATA <= x"03c0"; + when "11" & x"bf8" => DATA <= x"9e00"; + when "11" & x"bf9" => DATA <= x"0100"; + when "11" & x"bfa" => DATA <= x"07c1"; + when "11" & x"bfb" => DATA <= x"e1c0"; + when "11" & x"bfc" => DATA <= x"0540"; + when "11" & x"bfd" => DATA <= x"1080"; + when "11" & x"bfe" => DATA <= x"1404"; + when "11" & x"bff" => DATA <= x"0001"; + when "11" & x"c00" => DATA <= x"0008"; + when "11" & x"c01" => DATA <= x"400a"; + when "11" & x"c02" => DATA <= x"10e0"; + when "11" & x"c03" => DATA <= x"0100"; + when "11" & x"c04" => DATA <= x"0a80"; + when "11" & x"c05" => DATA <= x"011e"; + when "11" & x"c06" => DATA <= x"0140"; + when "11" & x"c07" => DATA <= x"080a"; + when "11" & x"c08" => DATA <= x"0002"; + when "11" & x"c09" => DATA <= x"4803"; + when "11" & x"c0a" => DATA <= x"4020"; + when "11" & x"c0b" => DATA <= x"000a"; + when "11" & x"c0c" => DATA <= x"4802"; + when "11" & x"c0d" => DATA <= x"2e80"; + when "11" & x"c0e" => DATA <= x"1012"; + when "11" & x"c0f" => DATA <= x"0039"; + when "11" & x"c10" => DATA <= x"a004"; + when "11" & x"c11" => DATA <= x"3d00"; + when "11" & x"c12" => DATA <= x"0600"; + when "11" & x"c13" => DATA <= x"0210"; + when "11" & x"c14" => DATA <= x"c000"; + when "11" & x"c15" => DATA <= x"0320"; + when "11" & x"c16" => DATA <= x"020f"; + when "11" & x"c17" => DATA <= x"000c"; + when "11" & x"c18" => DATA <= x"0000"; + when "11" & x"c19" => DATA <= x"2409"; + when "11" & x"c1a" => DATA <= x"0020"; + when "11" & x"c1b" => DATA <= x"5001"; + when "11" & x"c1c" => DATA <= x"97c0"; + when "11" & x"c1d" => DATA <= x"2801"; + when "11" & x"c1e" => DATA <= x"6560"; + when "11" & x"c1f" => DATA <= x"0fc7"; + when "11" & x"c20" => DATA <= x"dbb1"; + when "11" & x"c21" => DATA <= x"f8f8"; + when "11" & x"c22" => DATA <= x"7f57"; + when "11" & x"c23" => DATA <= x"c2fc"; + when "11" & x"c24" => DATA <= x"7f57"; + when "11" & x"c25" => DATA <= x"e3f5"; + when "11" & x"c26" => DATA <= x"ff1f"; + when "11" & x"c27" => DATA <= x"802a"; + when "11" & x"c28" => DATA <= x"5d00"; + when "11" & x"c29" => DATA <= x"b709"; + when "11" & x"c2a" => DATA <= x"0400"; + when "11" & x"c2b" => DATA <= x"2261"; + when "11" & x"c2c" => DATA <= x"0a85"; + when "11" & x"c2d" => DATA <= x"cc00"; + when "11" & x"c2e" => DATA <= x"6338"; + when "11" & x"c2f" => DATA <= x"2b00"; + when "11" & x"c30" => DATA <= x"00ef"; + when "11" & x"c31" => DATA <= x"0600"; + when "11" & x"c32" => DATA <= x"0fa7"; + when "11" & x"c33" => DATA <= x"9452"; + when "11" & x"c34" => DATA <= x"a994"; + when "11" & x"c35" => DATA <= x"e840"; + when "11" & x"c36" => DATA <= x"2290"; + when "11" & x"c37" => DATA <= x"2eaa"; + when "11" & x"c38" => DATA <= x"7f23"; + when "11" & x"c39" => DATA <= x"d3fb"; + when "11" & x"c3a" => DATA <= x"fe9f"; + when "11" & x"c3b" => DATA <= x"df0f"; + when "11" & x"c3c" => DATA <= x"d010"; + when "11" & x"c3d" => DATA <= x"2000"; + when "11" & x"c3e" => DATA <= x"ffa0"; + when "11" & x"c3f" => DATA <= x"077b"; + when "11" & x"c40" => DATA <= x"ff80"; + when "11" & x"c41" => DATA <= x"0074"; + when "11" & x"c42" => DATA <= x"0001"; + when "11" & x"c43" => DATA <= x"0798"; + when "11" & x"c44" => DATA <= x"0013"; + when "11" & x"c45" => DATA <= x"00fc"; + when "11" & x"c46" => DATA <= x"4000"; + when "11" & x"c47" => DATA <= x"00e5"; + when "11" & x"c48" => DATA <= x"f9ff"; + when "11" & x"c49" => DATA <= x"7dbc"; + when "11" & x"c4a" => DATA <= x"0827"; + when "11" & x"c4b" => DATA <= x"0418"; + when "11" & x"c4c" => DATA <= x"edf7"; + when "11" & x"c4d" => DATA <= x"ce20"; + when "11" & x"c4e" => DATA <= x"1000"; + when "11" & x"c4f" => DATA <= x"0400"; + when "11" & x"c50" => DATA <= x"01f0"; + when "11" & x"c51" => DATA <= x"0003"; + when "11" & x"c52" => DATA <= x"beb9"; + when "11" & x"c53" => DATA <= x"fbbe"; + when "11" & x"c54" => DATA <= x"bfc6"; + when "11" & x"c55" => DATA <= x"03e9"; + when "11" & x"c56" => DATA <= x"be1f"; + when "11" & x"c57" => DATA <= x"83f8"; + when "11" & x"c58" => DATA <= x"01fe"; + when "11" & x"c59" => DATA <= x"3f07"; + when "11" & x"c5a" => DATA <= x"801c"; + when "11" & x"c5b" => DATA <= x"1c00"; + when "11" & x"c5c" => DATA <= x"ff30"; + when "11" & x"c5d" => DATA <= x"3c1f"; + when "11" & x"c5e" => DATA <= x"cff7"; + when "11" & x"c5f" => DATA <= x"1109"; + when "11" & x"c60" => DATA <= x"c0c0"; + when "11" & x"c61" => DATA <= x"7057"; + when "11" & x"c62" => DATA <= x"3b3f"; + when "11" & x"c63" => DATA <= x"87c3"; + when "11" & x"c64" => DATA <= x"c174"; + when "11" & x"c65" => DATA <= x"f86c"; + when "11" & x"c66" => DATA <= x"3f44"; + when "11" & x"c67" => DATA <= x"a000"; + when "11" & x"c68" => DATA <= x"2210"; + when "11" & x"c69" => DATA <= x"02a5"; + when "11" & x"c6a" => DATA <= x"a002"; + when "11" & x"c6b" => DATA <= x"252a"; + when "11" & x"c6c" => DATA <= x"37c0"; + when "11" & x"c6d" => DATA <= x"0542"; + when "11" & x"c6e" => DATA <= x"c1fb"; + when "11" & x"c6f" => DATA <= x"bf8f"; + when "11" & x"c70" => DATA <= x"67e7"; + when "11" & x"c71" => DATA <= x"fbf4"; + when "11" & x"c72" => DATA <= x"0008"; + when "11" & x"c73" => DATA <= x"900a"; + when "11" & x"c74" => DATA <= x"ff00"; + when "11" & x"c75" => DATA <= x"0124"; + when "11" & x"c76" => DATA <= x"02bf"; + when "11" & x"c77" => DATA <= x"c001"; + when "11" & x"c78" => DATA <= x"2900"; + when "11" & x"c79" => DATA <= x"aff0"; + when "11" & x"c7a" => DATA <= x"0026"; + when "11" & x"c7b" => DATA <= x"402b"; + when "11" & x"c7c" => DATA <= x"fc00"; + when "11" & x"c7d" => DATA <= x"0490"; + when "11" & x"c7e" => DATA <= x"0aff"; + when "11" & x"c7f" => DATA <= x"0010"; + when "11" & x"c80" => DATA <= x"2402"; + when "11" & x"c81" => DATA <= x"bfc0"; + when "11" & x"c82" => DATA <= x"0a09"; + when "11" & x"c83" => DATA <= x"00af"; + when "11" & x"c84" => DATA <= x"f002"; + when "11" & x"c85" => DATA <= x"4240"; + when "11" & x"c86" => DATA <= x"2bfc"; + when "11" & x"c87" => DATA <= x"2018"; + when "11" & x"c88" => DATA <= x"900a"; + when "11" & x"c89" => DATA <= x"ff10"; + when "11" & x"c8a" => DATA <= x"e805"; + when "11" & x"c8b" => DATA <= x"7fd8"; + when "11" & x"c8c" => DATA <= x"057f"; + when "11" & x"c8d" => DATA <= x"8fc0"; + when "11" & x"c8e" => DATA <= x"2001"; + when "11" & x"c8f" => DATA <= x"fd00"; + when "11" & x"c90" => DATA <= x"57fc"; + when "11" & x"c91" => DATA <= x"8002"; + when "11" & x"c92" => DATA <= x"0015"; + when "11" & x"c93" => DATA <= x"ff20"; + when "11" & x"c94" => DATA <= x"0040"; + when "11" & x"c95" => DATA <= x"057f"; + when "11" & x"c96" => DATA <= x"d805"; + when "11" & x"c97" => DATA <= x"7f84"; + when "11" & x"c98" => DATA <= x"3800"; + when "11" & x"c99" => DATA <= x"2200"; + when "11" & x"c9a" => DATA <= x"affb"; + when "11" & x"c9b" => DATA <= x"00af"; + when "11" & x"c9c" => DATA <= x"fb00"; + when "11" & x"c9d" => DATA <= x"aff0"; + when "11" & x"c9e" => DATA <= x"8680"; + when "11" & x"c9f" => DATA <= x"07df"; + when "11" & x"ca0" => DATA <= x"f600"; + when "11" & x"ca1" => DATA <= x"167f"; + when "11" & x"ca2" => DATA <= x"d803"; + when "11" & x"ca3" => DATA <= x"e1fe"; + when "11" & x"ca4" => DATA <= x"12d0"; + when "11" & x"ca5" => DATA <= x"0aff"; + when "11" & x"ca6" => DATA <= x"b00a"; + when "11" & x"ca7" => DATA <= x"ffb0"; + when "11" & x"ca8" => DATA <= x"07fb"; + when "11" & x"ca9" => DATA <= x"dd01"; + when "11" & x"caa" => DATA <= x"4001"; + when "11" & x"cab" => DATA <= x"25c0"; + when "11" & x"cac" => DATA <= x"02bf"; + when "11" & x"cad" => DATA <= x"ec02"; + when "11" & x"cae" => DATA <= x"bfde"; + when "11" & x"caf" => DATA <= x"1400"; + when "11" & x"cb0" => DATA <= x"8845"; + when "11" & x"cb1" => DATA <= x"022b"; + when "11" & x"cb2" => DATA <= x"fc03"; + when "11" & x"cb3" => DATA <= x"4000"; + when "11" & x"cb4" => DATA <= x"f038"; + when "11" & x"cb5" => DATA <= x"018e"; + when "11" & x"cb6" => DATA <= x"87b0"; + when "11" & x"cb7" => DATA <= x"0aff"; + when "11" & x"cb8" => DATA <= x"b00a"; + when "11" & x"cb9" => DATA <= x"ffb0"; + when "11" & x"cba" => DATA <= x"0aff"; + when "11" & x"cbb" => DATA <= x"b00a"; + when "11" & x"cbc" => DATA <= x"ffb0"; + when "11" & x"cbd" => DATA <= x"07f3"; + when "11" & x"cbe" => DATA <= x"fec0"; + when "11" & x"cbf" => DATA <= x"0fef"; + when "11" & x"cc0" => DATA <= x"f087"; + when "11" & x"cc1" => DATA <= x"0004"; + when "11" & x"cc2" => DATA <= x"000f"; + when "11" & x"cc3" => DATA <= x"c7f8"; + when "11" & x"cc4" => DATA <= x"4380"; + when "11" & x"cc5" => DATA <= x"0220"; + when "11" & x"cc6" => DATA <= x"079b"; + when "11" & x"cc7" => DATA <= x"fec0"; + when "11" & x"cc8" => DATA <= x"1cef"; + when "11" & x"cc9" => DATA <= x"fb00"; + when "11" & x"cca" => DATA <= x"affb"; + when "11" & x"ccb" => DATA <= x"00af"; + when "11" & x"ccc" => DATA <= x"fb00"; + when "11" & x"ccd" => DATA <= x"aff0"; + when "11" & x"cce" => DATA <= x"8700"; + when "11" & x"ccf" => DATA <= x"1800"; + when "11" & x"cd0" => DATA <= x"15ff"; + when "11" & x"cd1" => DATA <= x"2001"; + when "11" & x"cd2" => DATA <= x"f105"; + when "11" & x"cd3" => DATA <= x"7f84"; + when "11" & x"cd4" => DATA <= x"2400"; + when "11" & x"cd5" => DATA <= x"083f"; + when "11" & x"cd6" => DATA <= x"7f8f"; + when "11" & x"cd7" => DATA <= x"b800"; + when "11" & x"cd8" => DATA <= x"fe53"; + when "11" & x"cd9" => DATA <= x"aff0"; + when "11" & x"cda" => DATA <= x"1700"; + when "11" & x"cdb" => DATA <= x"5011"; + when "11" & x"cdc" => DATA <= x"7dff"; + when "11" & x"cdd" => DATA <= x"c001"; + when "11" & x"cde" => DATA <= x"0a00"; + when "11" & x"cdf" => DATA <= x"7e3f"; + when "11" & x"ce0" => DATA <= x"c09c"; + when "11" & x"ce1" => DATA <= x"0020"; + when "11" & x"ce2" => DATA <= x"0057"; + when "11" & x"ce3" => DATA <= x"ff00"; + when "11" & x"ce4" => DATA <= x"1000"; + when "11" & x"ce5" => DATA <= x"4003"; + when "11" & x"ce6" => DATA <= x"fbfe"; + when "11" & x"ce7" => DATA <= x"4000"; + when "11" & x"ce8" => DATA <= x"c00a"; + when "11" & x"ce9" => DATA <= x"ffd0"; + when "11" & x"cea" => DATA <= x"0405"; + when "11" & x"ceb" => DATA <= x"7ff0"; + when "11" & x"cec" => DATA <= x"0006"; + when "11" & x"ced" => DATA <= x"802b"; + when "11" & x"cee" => DATA <= x"fe40"; + when "11" & x"cef" => DATA <= x"0200"; + when "11" & x"cf0" => DATA <= x"0aff"; + when "11" & x"cf1" => DATA <= x"0000"; + when "11" & x"cf2" => DATA <= x"4000"; + when "11" & x"cf3" => DATA <= x"8008"; + when "11" & x"cf4" => DATA <= x"02bf"; + when "11" & x"cf5" => DATA <= x"c000"; + when "11" & x"cf6" => DATA <= x"1a00"; + when "11" & x"cf7" => DATA <= x"0080"; + when "11" & x"cf8" => DATA <= x"2bfe"; + when "11" & x"cf9" => DATA <= x"400b"; + when "11" & x"cfa" => DATA <= x"602a"; + when "11" & x"cfb" => DATA <= x"ff90"; + when "11" & x"cfc" => DATA <= x"0600"; + when "11" & x"cfd" => DATA <= x"02bf"; + when "11" & x"cfe" => DATA <= x"e820"; + when "11" & x"cff" => DATA <= x"00b8"; + when "11" & x"d00" => DATA <= x"0400"; + when "11" & x"d01" => DATA <= x"2bfd"; + when "11" & x"d02" => DATA <= x"fd5f"; + when "11" & x"d03" => DATA <= x"0ff7"; + when "11" & x"d04" => DATA <= x"43f2"; + when "11" & x"d05" => DATA <= x"bfec"; + when "11" & x"d06" => DATA <= x"fd7e"; + when "11" & x"d07" => DATA <= x"3f06"; + when "11" & x"d08" => DATA <= x"3110"; + when "11" & x"d09" => DATA <= x"8c26"; + when "11" & x"d0a" => DATA <= x"2001"; + when "11" & x"d0b" => DATA <= x"8a00"; + when "11" & x"d0c" => DATA <= x"043b"; + when "11" & x"d0d" => DATA <= x"dcf5"; + when "11" & x"d0e" => DATA <= x"ee00"; + when "11" & x"d0f" => DATA <= x"73d0"; + when "11" & x"d10" => DATA <= x"04bc"; + when "11" & x"d11" => DATA <= x"800f"; + when "11" & x"d12" => DATA <= x"2104"; + when "11" & x"d13" => DATA <= x"5555"; + when "11" & x"d14" => DATA <= x"2815"; + when "11" & x"d15" => DATA <= x"4824"; + when "11" & x"d16" => DATA <= x"0ba4"; + when "11" & x"d17" => DATA <= x"8fef"; + when "11" & x"d18" => DATA <= x"e027"; + when "11" & x"d19" => DATA <= x"e1e1"; + when "11" & x"d1a" => DATA <= x"f0c1"; + when "11" & x"d1b" => DATA <= x"6280"; + when "11" & x"d1c" => DATA <= x"0020"; + when "11" & x"d1d" => DATA <= x"07fb"; + when "11" & x"d1e" => DATA <= x"0000"; + when "11" & x"d1f" => DATA <= x"077f"; + when "11" & x"d20" => DATA <= x"bf09"; + when "11" & x"d21" => DATA <= x"0e0a"; + when "11" & x"d22" => DATA <= x"ff7e"; + when "11" & x"d23" => DATA <= x"2000"; + when "11" & x"d24" => DATA <= x"6010"; + when "11" & x"d25" => DATA <= x"06ff"; + when "11" & x"d26" => DATA <= x"bf18"; + when "11" & x"d27" => DATA <= x"000f"; + when "11" & x"d28" => DATA <= x"ff7c"; + when "11" & x"d29" => DATA <= x"5008"; + when "11" & x"d2a" => DATA <= x"475c"; + when "11" & x"d2b" => DATA <= x"4001"; + when "11" & x"d2c" => DATA <= x"0b00"; + when "11" & x"d2d" => DATA <= x"fef7"; + when "11" & x"d2e" => DATA <= x"7808"; + when "11" & x"d2f" => DATA <= x"0002"; + when "11" & x"d30" => DATA <= x"073f"; + when "11" & x"d31" => DATA <= x"a8f9"; + when "11" & x"d32" => DATA <= x"7dc0"; + when "11" & x"d33" => DATA <= x"0fe7"; + when "11" & x"d34" => DATA <= x"f843"; + when "11" & x"d35" => DATA <= x"402b"; + when "11" & x"d36" => DATA <= x"fc3b"; + when "11" & x"d37" => DATA <= x"400e"; + when "11" & x"d38" => DATA <= x"6003"; + when "11" & x"d39" => DATA <= x"81da"; + when "11" & x"d3a" => DATA <= x"ef7a"; + when "11" & x"d3b" => DATA <= x"309c"; + when "11" & x"d3c" => DATA <= x"09f9"; + when "11" & x"d3d" => DATA <= x"1fef"; + when "11" & x"d3e" => DATA <= x"f005"; + when "11" & x"d3f" => DATA <= x"0094"; + when "11" & x"d40" => DATA <= x"0e1d"; + when "11" & x"d41" => DATA <= x"ffc0"; + when "11" & x"d42" => DATA <= x"0a04"; + when "11" & x"d43" => DATA <= x"057f"; + when "11" & x"d44" => DATA <= x"bbdf"; + when "11" & x"d45" => DATA <= x"0c00"; + when "11" & x"d46" => DATA <= x"03e0"; + when "11" & x"d47" => DATA <= x"015f"; + when "11" & x"d48" => DATA <= x"ef77"; + when "11" & x"d49" => DATA <= x"fbbc"; + when "11" & x"d4a" => DATA <= x"147d"; + when "11" & x"d4b" => DATA <= x"003f"; + when "11" & x"d4c" => DATA <= x"d9ef"; + when "11" & x"d4d" => DATA <= x"f6f8"; + when "11" & x"d4e" => DATA <= x"9097"; + when "11" & x"d4f" => DATA <= x"4015"; + when "11" & x"d50" => DATA <= x"fefb"; + when "11" & x"d51" => DATA <= x"7fd0"; + when "11" & x"d52" => DATA <= x"0200"; + when "11" & x"d53" => DATA <= x"015f"; + when "11" & x"d54" => DATA <= x"ef74"; + when "11" & x"d55" => DATA <= x"fd00"; + when "11" & x"d56" => DATA <= x"2bc0"; + when "11" & x"d57" => DATA <= x"0ff7"; + when "11" & x"d58" => DATA <= x"ed7f"; + when "11" & x"d59" => DATA <= x"8802"; + when "11" & x"d5a" => DATA <= x"80f2"; + when "11" & x"d5b" => DATA <= x"057f"; + when "11" & x"d5c" => DATA <= x"bcc0"; + when "11" & x"d5d" => DATA <= x"7201"; + when "11" & x"d5e" => DATA <= x"5fef"; + when "11" & x"d5f" => DATA <= x"d003"; + when "11" & x"d60" => DATA <= x"0110"; + when "11" & x"d61" => DATA <= x"4010"; + when "11" & x"d62" => DATA <= x"57fb"; + when "11" & x"d63" => DATA <= x"ec00"; + when "11" & x"d64" => DATA <= x"7637"; + when "11" & x"d65" => DATA <= x"3fc0"; + when "11" & x"d66" => DATA <= x"15fe"; + when "11" & x"d67" => DATA <= x"fd00"; + when "11" & x"d68" => DATA <= x"1080"; + when "11" & x"d69" => DATA <= x"81f0"; + when "11" & x"d6a" => DATA <= x"03fd"; + when "11" & x"d6b" => DATA <= x"eeff"; + when "11" & x"d6c" => DATA <= x"0003"; + when "11" & x"d6d" => DATA <= x"0034"; + when "11" & x"d6e" => DATA <= x"015f"; + when "11" & x"d6f" => DATA <= x"efee"; + when "11" & x"d70" => DATA <= x"0052"; + when "11" & x"d71" => DATA <= x"005f"; + when "11" & x"d72" => DATA <= x"e7f7"; + when "11" & x"d73" => DATA <= x"cb02"; + when "11" & x"d74" => DATA <= x"801f"; + when "11" & x"d75" => DATA <= x"c00a"; + when "11" & x"d76" => DATA <= x"ff7f"; + when "11" & x"d77" => DATA <= x"0dd6"; + when "11" & x"d78" => DATA <= x"0040"; + when "11" & x"d79" => DATA <= x"1842"; + when "11" & x"d7a" => DATA <= x"bfcf"; + when "11" & x"d7b" => DATA <= x"c007"; + when "11" & x"d7c" => DATA <= x"9182"; + when "11" & x"d7d" => DATA <= x"803b"; + when "11" & x"d7e" => DATA <= x"fc02"; + when "11" & x"d7f" => DATA <= x"6751"; + when "11" & x"d80" => DATA <= x"b700"; + when "11" & x"d81" => DATA <= x"15fe"; + when "11" & x"d82" => DATA <= x"7f02"; + when "11" & x"d83" => DATA <= x"09eb"; + when "11" & x"d84" => DATA <= x"fc01"; + when "11" & x"d85" => DATA <= x"dfe0"; + when "11" & x"d86" => DATA <= x"0109"; + when "11" & x"d87" => DATA <= x"fc0e"; + when "11" & x"d88" => DATA <= x"007f"; + when "11" & x"d89" => DATA <= x"bf57"; + when "11" & x"d8a" => DATA <= x"e000"; + when "11" & x"d8b" => DATA <= x"0afc"; + when "11" & x"d8c" => DATA <= x"0001"; + when "11" & x"d8d" => DATA <= x"eff7"; + when "11" & x"d8e" => DATA <= x"c001"; + when "11" & x"d8f" => DATA <= x"fefa"; + when "11" & x"d90" => DATA <= x"003f"; + when "11" & x"d91" => DATA <= x"dbef"; + when "11" & x"d92" => DATA <= x"e018"; + when "11" & x"d93" => DATA <= x"006e"; + when "11" & x"d94" => DATA <= x"ff00"; + when "11" & x"d95" => DATA <= x"57fa"; + when "11" & x"d96" => DATA <= x"fcd8"; + when "11" & x"d97" => DATA <= x"d409"; + when "11" & x"d98" => DATA <= x"5005"; + when "11" & x"d99" => DATA <= x"7fb7"; + when "11" & x"d9a" => DATA <= x"df2b"; + when "11" & x"d9b" => DATA <= x"f495"; + when "11" & x"d9c" => DATA <= x"0057"; + when "11" & x"d9d" => DATA <= x"f9fd"; + when "11" & x"d9e" => DATA <= x"fefb"; + when "11" & x"d9f" => DATA <= x"2e39"; + when "11" & x"da0" => DATA <= x"0015"; + when "11" & x"da1" => DATA <= x"fedf"; + when "11" & x"da2" => DATA <= x"7f8b"; + when "11" & x"da3" => DATA <= x"c84f"; + when "11" & x"da4" => DATA <= x"f003"; + when "11" & x"da5" => DATA <= x"fcff"; + when "11" & x"da6" => DATA <= x"5fe4"; + when "11" & x"da7" => DATA <= x"2048"; + when "11" & x"da8" => DATA <= x"0c01"; + when "11" & x"da9" => DATA <= x"5fee"; + when "11" & x"daa" => DATA <= x"e7fc"; + when "11" & x"dab" => DATA <= x"e07f"; + when "11" & x"dac" => DATA <= x"fcff"; + when "11" & x"dad" => DATA <= x"f43b"; + when "11" & x"dae" => DATA <= x"1e61"; + when "11" & x"daf" => DATA <= x"ffff"; + when "11" & x"db0" => DATA <= x"bffb"; + when "11" & x"db1" => DATA <= x"cfb8"; + when "11" & x"db2" => DATA <= x"ebfc"; + when "11" & x"db3" => DATA <= x"6bff"; + when "11" & x"db4" => DATA <= x"e007"; + when "11" & x"db5" => DATA <= x"38ff"; + when "11" & x"db6" => DATA <= x"7fc0"; + when "11" & x"db7" => DATA <= x"0782"; + when "11" & x"db8" => DATA <= x"057f"; + when "11" & x"db9" => DATA <= x"bdeb"; + when "11" & x"dba" => DATA <= x"fc42"; + when "11" & x"dbb" => DATA <= x"fe00"; + when "11" & x"dbc" => DATA <= x"57fb"; + when "11" & x"dbd" => DATA <= x"eebf"; + when "11" & x"dbe" => DATA <= x"d483"; + when "11" & x"dbf" => DATA <= x"f003"; + when "11" & x"dc0" => DATA <= x"fdcf"; + when "11" & x"dc1" => DATA <= x"dfe0"; + when "11" & x"dc2" => DATA <= x"b7f8"; + when "11" & x"dc3" => DATA <= x"12bf"; + when "11" & x"dc4" => DATA <= x"dfb5"; + when "11" & x"dc5" => DATA <= x"fe00"; + when "11" & x"dc6" => DATA <= x"6780"; + when "11" & x"dc7" => DATA <= x"2bfd"; + when "11" & x"dc8" => DATA <= x"f75f"; + when "11" & x"dc9" => DATA <= x"e007"; + when "11" & x"dca" => DATA <= x"f803"; + when "11" & x"dcb" => DATA <= x"7fc0"; + when "11" & x"dcc" => DATA <= x"0270"; + when "11" & x"dcd" => DATA <= x"057f"; + when "11" & x"dce" => DATA <= x"bf7b"; + when "11" & x"dcf" => DATA <= x"fdce"; + when "11" & x"dd0" => DATA <= x"00af"; + when "11" & x"dd1" => DATA <= x"f7f5"; + when "11" & x"dd2" => DATA <= x"7faf"; + when "11" & x"dd3" => DATA <= x"d3c1"; + when "11" & x"dd4" => DATA <= x"0aff"; + when "11" & x"dd5" => DATA <= x"7ecf"; + when "11" & x"dd6" => DATA <= x"f802"; + when "11" & x"dd7" => DATA <= x"bfdf"; + when "11" & x"dd8" => DATA <= x"ddfe"; + when "11" & x"dd9" => DATA <= x"0f00"; + when "11" & x"dda" => DATA <= x"3fdf"; + when "11" & x"ddb" => DATA <= x"27fe"; + when "11" & x"ddc" => DATA <= x"ff20"; + when "11" & x"ddd" => DATA <= x"382f"; + when "11" & x"dde" => DATA <= x"fdf0"; + when "11" & x"ddf" => DATA <= x"f0ff"; + when "11" & x"de0" => DATA <= x"ffff"; + when "11" & x"de1" => DATA <= x"fff1"; + when "11" & x"de2" => DATA <= x"fafe"; + when "11" & x"de3" => DATA <= x"ffcb"; + when "11" & x"de4" => DATA <= x"200b"; + when "11" & x"de5" => DATA <= x"ff01"; + when "11" & x"de6" => DATA <= x"803b"; + when "11" & x"de7" => DATA <= x"fc01"; + when "11" & x"de8" => DATA <= x"5fef"; + when "11" & x"de9" => DATA <= x"c707"; + when "11" & x"dea" => DATA <= x"7f80"; + when "11" & x"deb" => DATA <= x"2bfc"; + when "11" & x"dec" => DATA <= x"fb3f"; + when "11" & x"ded" => DATA <= x"e01a"; + when "11" & x"dee" => DATA <= x"ff01"; + when "11" & x"def" => DATA <= x"1feb"; + when "11" & x"df0" => DATA <= x"fdf6"; + when "11" & x"df1" => DATA <= x"04af"; + when "11" & x"df2" => DATA <= x"fa00"; + when "11" & x"df3" => DATA <= x"aff6"; + when "11" & x"df4" => DATA <= x"6831"; + when "11" & x"df5" => DATA <= x"fefe"; + when "11" & x"df6" => DATA <= x"1077"; + when "11" & x"df7" => DATA <= x"fbdc"; + when "11" & x"df8" => DATA <= x"015f"; + when "11" & x"df9" => DATA <= x"e7d9"; + when "11" & x"dfa" => DATA <= x"ff00"; + when "11" & x"dfb" => DATA <= x"57fb"; + when "11" & x"dfc" => DATA <= x"91c3"; + when "11" & x"dfd" => DATA <= x"dfe0"; + when "11" & x"dfe" => DATA <= x"0eff"; + when "11" & x"dff" => DATA <= x"03f7"; + when "11" & x"e00" => DATA <= x"f902"; + when "11" & x"e01" => DATA <= x"afc7"; + when "11" & x"e02" => DATA <= x"f3ff"; + when "11" & x"e03" => DATA <= x"c00f"; + when "11" & x"e04" => DATA <= x"6787"; + when "11" & x"e05" => DATA <= x"7fa0"; + when "11" & x"e06" => DATA <= x"1f00"; + when "11" & x"e07" => DATA <= x"04b9"; + when "11" & x"e08" => DATA <= x"57bf"; + when "11" & x"e09" => DATA <= x"c000"; + when "11" & x"e0a" => DATA <= x"3000"; + when "11" & x"e0b" => DATA <= x"183c"; + when "11" & x"e0c" => DATA <= x"ff7b"; + when "11" & x"e0d" => DATA <= x"bf40"; + when "11" & x"e0e" => DATA <= x"0a94"; + when "11" & x"e0f" => DATA <= x"6a01"; + when "11" & x"e10" => DATA <= x"047f"; + when "11" & x"e11" => DATA <= x"7fbd"; + when "11" & x"e12" => DATA <= x"80da"; + when "11" & x"e13" => DATA <= x"fe7e"; + when "11" & x"e14" => DATA <= x"7dd0"; + when "11" & x"e15" => DATA <= x"0180"; + when "11" & x"e16" => DATA <= x"0840"; + when "11" & x"e17" => DATA <= x"0200"; + when "11" & x"e18" => DATA <= x"002f"; + when "11" & x"e19" => DATA <= x"f025"; + when "11" & x"e1a" => DATA <= x"0001"; + when "11" & x"e1b" => DATA <= x"2801"; + when "11" & x"e1c" => DATA <= x"803f"; + when "11" & x"e1d" => DATA <= x"a800"; + when "11" & x"e1e" => DATA <= x"0200"; + when "11" & x"e1f" => DATA <= x"0040"; + when "11" & x"e20" => DATA <= x"2110"; + when "11" & x"e21" => DATA <= x"00e0"; + when "11" & x"e22" => DATA <= x"f9ff"; + when "11" & x"e23" => DATA <= x"afe7"; + when "11" & x"e24" => DATA <= x"0000"; + when "11" & x"e25" => DATA <= x"c003"; + when "11" & x"e26" => DATA <= x"3df7"; + when "11" & x"e27" => DATA <= x"f9c4"; + when "11" & x"e28" => DATA <= x"c200"; + when "11" & x"e29" => DATA <= x"0080"; + when "11" & x"e2a" => DATA <= x"3807"; + when "11" & x"e2b" => DATA <= x"c003"; + when "11" & x"e2c" => DATA <= x"8efb"; + when "11" & x"e2d" => DATA <= x"ff77"; + when "11" & x"e2e" => DATA <= x"afaa"; + when "11" & x"e2f" => DATA <= x"ff8f"; + when "11" & x"e30" => DATA <= x"80c3"; + when "11" & x"e31" => DATA <= x"27f8"; + when "11" & x"e32" => DATA <= x"7c4e"; + when "11" & x"e33" => DATA <= x"0060"; + when "11" & x"e34" => DATA <= x"7005"; + when "11" & x"e35" => DATA <= x"3e3e"; + when "11" & x"e36" => DATA <= x"2bfc"; + when "11" & x"e37" => DATA <= x"0150"; + when "11" & x"e38" => DATA <= x"0c07"; + when "11" & x"e39" => DATA <= x"038d"; + when "11" & x"e3a" => DATA <= x"cedf"; + when "11" & x"e3b" => DATA <= x"6391"; + when "11" & x"e3c" => DATA <= x"dfe1"; + when "11" & x"e3d" => DATA <= x"f0ba"; + when "11" & x"e3e" => DATA <= x"7f87"; + when "11" & x"e3f" => DATA <= x"c1cf"; + when "11" & x"e40" => DATA <= x"f780"; + when "11" & x"e41" => DATA <= x"0807"; + when "11" & x"e42" => DATA <= x"4054"; + when "11" & x"e43" => DATA <= x"0027"; + when "11" & x"e44" => DATA <= x"0080"; + when "11" & x"e45" => DATA <= x"0020"; + when "11" & x"e46" => DATA <= x"0008"; + when "11" & x"e47" => DATA <= x"0280"; + when "11" & x"e48" => DATA <= x"4015"; + when "11" & x"e49" => DATA <= x"fc1e"; + when "11" & x"e4a" => DATA <= x"a06a"; + when "11" & x"e4b" => DATA <= x"80a0"; + when "11" & x"e4c" => DATA <= x"03c0"; + when "11" & x"e4d" => DATA <= x"e0f8"; + when "11" & x"e4e" => DATA <= x"7e3f"; + when "11" & x"e4f" => DATA <= x"bfd0"; + when "11" & x"e50" => DATA <= x"004d"; + when "11" & x"e51" => DATA <= x"001b"; + when "11" & x"e52" => DATA <= x"8000"; + when "11" & x"e53" => DATA <= x"5a00"; + when "11" & x"e54" => DATA <= x"1200"; + when "11" & x"e55" => DATA <= x"3003"; + when "11" & x"e56" => DATA <= x"e030"; + when "11" & x"e57" => DATA <= x"0b05"; + when "11" & x"e58" => DATA <= x"e070"; + when "11" & x"e59" => DATA <= x"0007"; + when "11" & x"e5a" => DATA <= x"e87b"; + when "11" & x"e5b" => DATA <= x"87c0"; + when "11" & x"e5c" => DATA <= x"1480"; + when "11" & x"e5d" => DATA <= x"4800"; + when "11" & x"e5e" => DATA <= x"7201"; + when "11" & x"e5f" => DATA <= x"2001"; + when "11" & x"e60" => DATA <= x"b01c"; + when "11" & x"e61" => DATA <= x"003f"; + when "11" & x"e62" => DATA <= x"0780"; + when "11" & x"e63" => DATA <= x"d02c"; + when "11" & x"e64" => DATA <= x"1ae0"; + when "11" & x"e65" => DATA <= x"a00d"; + when "11" & x"e66" => DATA <= x"1f7f"; + when "11" & x"e67" => DATA <= x"8828"; + when "11" & x"e68" => DATA <= x"0101"; + when "11" & x"e69" => DATA <= x"c008"; + when "11" & x"e6a" => DATA <= x"da00"; + when "11" & x"e6b" => DATA <= x"9c02"; + when "11" & x"e6c" => DATA <= x"00f8"; + when "11" & x"e6d" => DATA <= x"00f0"; + when "11" & x"e6e" => DATA <= x"61a0"; + when "11" & x"e6f" => DATA <= x"180e"; + when "11" & x"e70" => DATA <= x"0780"; + when "11" & x"e71" => DATA <= x"4001"; + when "11" & x"e72" => DATA <= x"60e0"; + when "11" & x"e73" => DATA <= x"0e10"; + when "11" & x"e74" => DATA <= x"0048"; + when "11" & x"e75" => DATA <= x"8001"; + when "11" & x"e76" => DATA <= x"c060"; + when "11" & x"e77" => DATA <= x"a203"; + when "11" & x"e78" => DATA <= x"0082"; + when "11" & x"e79" => DATA <= x"8002"; + when "11" & x"e7a" => DATA <= x"0f0a"; + when "11" & x"e7b" => DATA <= x"e0ef"; + when "11" & x"e7c" => DATA <= x"0001"; + when "11" & x"e7d" => DATA <= x"000e"; + when "11" & x"e7e" => DATA <= x"47e0"; + when "11" & x"e7f" => DATA <= x"73f8"; + when "11" & x"e80" => DATA <= x"22c0"; + when "11" & x"e81" => DATA <= x"0c60"; + when "11" & x"e82" => DATA <= x"0009"; + when "11" & x"e83" => DATA <= x"c29c"; + when "11" & x"e84" => DATA <= x"6bc0"; + when "11" & x"e85" => DATA <= x"7e00"; + when "11" & x"e86" => DATA <= x"7c3c"; + when "11" & x"e87" => DATA <= x"2b81"; + when "11" & x"e88" => DATA <= x"e0e0"; + when "11" & x"e89" => DATA <= x"a00d"; + when "11" & x"e8a" => DATA <= x"0300"; + when "11" & x"e8b" => DATA <= x"8000"; + when "11" & x"e8c" => DATA <= x"8440"; + when "11" & x"e8d" => DATA <= x"2002"; + when "11" & x"e8e" => DATA <= x"4100"; + when "11" & x"e8f" => DATA <= x"0b8e"; + when "11" & x"e90" => DATA <= x"181c"; + when "11" & x"e91" => DATA <= x"1e28"; + when "11" & x"e92" => DATA <= x"000e"; + when "11" & x"e93" => DATA <= x"fc7c"; + when "11" & x"e94" => DATA <= x"7783"; + when "11" & x"e95" => DATA <= x"8280"; + when "11" & x"e96" => DATA <= x"3405"; + when "11" & x"e97" => DATA <= x"bf5c"; + when "11" & x"e98" => DATA <= x"460a"; + when "11" & x"e99" => DATA <= x"e270"; + when "11" & x"e9a" => DATA <= x"3000"; + when "11" & x"e9b" => DATA <= x"15fe"; + when "11" & x"e9c" => DATA <= x"f870"; + when "11" & x"e9d" => DATA <= x"3010"; + when "11" & x"e9e" => DATA <= x"2830"; + when "11" & x"e9f" => DATA <= x"17c3"; + when "11" & x"ea0" => DATA <= x"a03f"; + when "11" & x"ea1" => DATA <= x"fdff"; + when "11" & x"ea2" => DATA <= x"fc60"; + when "11" & x"ea3" => DATA <= x"3aff"; + when "11" & x"ea4" => DATA <= x"70a0"; + when "11" & x"ea5" => DATA <= x"4060"; + when "11" & x"ea6" => DATA <= x"7078"; + when "11" & x"ea7" => DATA <= x"188e"; + when "11" & x"ea8" => DATA <= x"0723"; + when "11" & x"ea9" => DATA <= x"81e9"; + when "11" & x"eaa" => DATA <= x"1c8c"; + when "11" & x"eab" => DATA <= x"40a0"; + when "11" & x"eac" => DATA <= x"0010"; + when "11" & x"ead" => DATA <= x"0005"; + when "11" & x"eae" => DATA <= x"4000"; + when "11" & x"eaf" => DATA <= x"2001"; + when "11" & x"eb0" => DATA <= x"fd8e"; + when "11" & x"eb1" => DATA <= x"071b"; + when "11" & x"eb2" => DATA <= x"83c7"; + when "11" & x"eb3" => DATA <= x"e40a"; + when "11" & x"eb4" => DATA <= x"000f"; + when "11" & x"eb5" => DATA <= x"87a8"; + when "11" & x"eb6" => DATA <= x"7030"; + when "11" & x"eb7" => DATA <= x"f030"; + when "11" & x"eb8" => DATA <= x"5800"; + when "11" & x"eb9" => DATA <= x"2d20"; + when "11" & x"eba" => DATA <= x"0440"; + when "11" & x"ebb" => DATA <= x"5425"; + when "11" & x"ebc" => DATA <= x"403f"; + when "11" & x"ebd" => DATA <= x"400e"; + when "11" & x"ebe" => DATA <= x"070d"; + when "11" & x"ebf" => DATA <= x"0183"; + when "11" & x"ec0" => DATA <= x"e8fc"; + when "11" & x"ec1" => DATA <= x"11c1"; + when "11" & x"ec2" => DATA <= x"e0e0"; + when "11" & x"ec3" => DATA <= x"6020"; + when "11" & x"ec4" => DATA <= x"0030"; + when "11" & x"ec5" => DATA <= x"082c"; + when "11" & x"ec6" => DATA <= x"000b"; + when "11" & x"ec7" => DATA <= x"4080"; + when "11" & x"ec8" => DATA <= x"c168"; + when "11" & x"ec9" => DATA <= x"0060"; + when "11" & x"eca" => DATA <= x"0008"; + when "11" & x"ecb" => DATA <= x"1d81"; + when "11" & x"ecc" => DATA <= x"4001"; + when "11" & x"ecd" => DATA <= x"f7c3"; + when "11" & x"ece" => DATA <= x"0002"; + when "11" & x"ecf" => DATA <= x"070f"; + when "11" & x"ed0" => DATA <= x"f004"; + when "11" & x"ed1" => DATA <= x"8381"; + when "11" & x"ed2" => DATA <= x"1f8f"; + when "11" & x"ed3" => DATA <= x"8080"; + when "11" & x"ed4" => DATA <= x"0284"; + when "11" & x"ed5" => DATA <= x"2800"; + when "11" & x"ed6" => DATA <= x"04ff"; + when "11" & x"ed7" => DATA <= x"0030"; + when "11" & x"ed8" => DATA <= x"c0e0"; + when "11" & x"ed9" => DATA <= x"f3ff"; + when "11" & x"eda" => DATA <= x"7f80"; + when "11" & x"edb" => DATA <= x"07ef"; + when "11" & x"edc" => DATA <= x"c783"; + when "11" & x"edd" => DATA <= x"8002"; + when "11" & x"ede" => DATA <= x"037f"; + when "11" & x"edf" => DATA <= x"8018"; + when "11" & x"ee0" => DATA <= x"1dff"; + when "11" & x"ee1" => DATA <= x"580f"; + when "11" & x"ee2" => DATA <= x"f003"; + when "11" & x"ee3" => DATA <= x"c102"; + when "11" & x"ee4" => DATA <= x"0307"; + when "11" & x"ee5" => DATA <= x"9fdf"; + when "11" & x"ee6" => DATA <= x"e7f4"; + when "11" & x"ee7" => DATA <= x"001c"; + when "11" & x"ee8" => DATA <= x"1e0e"; + when "11" & x"ee9" => DATA <= x"4670"; + when "11" & x"eea" => DATA <= x"0028"; + when "11" & x"eeb" => DATA <= x"0080"; + when "11" & x"eec" => DATA <= x"9000"; + when "11" & x"eed" => DATA <= x"8001"; + when "11" & x"eee" => DATA <= x"301f"; + when "11" & x"eef" => DATA <= x"1fbf"; + when "11" & x"ef0" => DATA <= x"df00"; + when "11" & x"ef1" => DATA <= x"0603"; + when "11" & x"ef2" => DATA <= x"f1fe"; + when "11" & x"ef3" => DATA <= x"f060"; + when "11" & x"ef4" => DATA <= x"2001"; + when "11" & x"ef5" => DATA <= x"e1c0"; + when "11" & x"ef6" => DATA <= x"0004"; + when "11" & x"ef7" => DATA <= x"23c0"; + when "11" & x"ef8" => DATA <= x"2006"; + when "11" & x"ef9" => DATA <= x"e022"; + when "11" & x"efa" => DATA <= x"8324"; + when "11" & x"efb" => DATA <= x"0147"; + when "11" & x"efc" => DATA <= x"5800"; + when "11" & x"efd" => DATA <= x"2607"; + when "11" & x"efe" => DATA <= x"613f"; + when "11" & x"eff" => DATA <= x"8020"; + when "11" & x"f00" => DATA <= x"f7c2"; + when "11" & x"f01" => DATA <= x"0002"; + when "11" & x"f02" => DATA <= x"1f3f"; + when "11" & x"f03" => DATA <= x"87c0"; + when "11" & x"f04" => DATA <= x"4000"; + when "11" & x"f05" => DATA <= x"39fc"; + when "11" & x"f06" => DATA <= x"fc78"; + when "11" & x"f07" => DATA <= x"a005"; + when "11" & x"f08" => DATA <= x"0043"; + when "11" & x"f09" => DATA <= x"8002"; + when "11" & x"f0a" => DATA <= x"1c00"; + when "11" & x"f0b" => DATA <= x"0500"; + when "11" & x"f0c" => DATA <= x"7605"; + when "11" & x"f0d" => DATA <= x"0002"; + when "11" & x"f0e" => DATA <= x"000c"; + when "11" & x"f0f" => DATA <= x"4078"; + when "11" & x"f10" => DATA <= x"fdfe"; + when "11" & x"f11" => DATA <= x"fc00"; + when "11" & x"f12" => DATA <= x"1c1f"; + when "11" & x"f13" => DATA <= x"cff7"; + when "11" & x"f14" => DATA <= x"8300"; + when "11" & x"f15" => DATA <= x"021f"; + when "11" & x"f16" => DATA <= x"1f50"; + when "11" & x"f17" => DATA <= x"0022"; + when "11" & x"f18" => DATA <= x"4010"; + when "11" & x"f19" => DATA <= x"000a"; + when "11" & x"f1a" => DATA <= x"0690"; + when "11" & x"f1b" => DATA <= x"0285"; + when "11" & x"f1c" => DATA <= x"0020"; + when "11" & x"f1d" => DATA <= x"4006"; + when "11" & x"f1e" => DATA <= x"170b"; + when "11" & x"f1f" => DATA <= x"c5ff"; + when "11" & x"f20" => DATA <= x"400f"; + when "11" & x"f21" => DATA <= x"f600"; + when "11" & x"f22" => DATA <= x"007e"; + when "11" & x"f23" => DATA <= x"ff03"; + when "11" & x"f24" => DATA <= x"d000"; + when "11" & x"f25" => DATA <= x"0c3e"; + when "11" & x"f26" => DATA <= x"fe70"; + when "11" & x"f27" => DATA <= x"0040"; + when "11" & x"f28" => DATA <= x"0403"; + when "11" & x"f29" => DATA <= x"83c1"; + when "11" & x"f2a" => DATA <= x"fd5f"; + when "11" & x"f2b" => DATA <= x"f501"; + when "11" & x"f2c" => DATA <= x"ffff"; + when "11" & x"f2d" => DATA <= x"ff5f"; + when "11" & x"f2e" => DATA <= x"fee2"; + when "11" & x"f2f" => DATA <= x"710e"; + when "11" & x"f30" => DATA <= x"7804"; + when "11" & x"f31" => DATA <= x"f7d7"; + when "11" & x"f32" => DATA <= x"fd00"; + when "11" & x"f33" => DATA <= x"2f1f"; + when "11" & x"f34" => DATA <= x"d3fe"; + when "11" & x"f35" => DATA <= x"0060"; + when "11" & x"f36" => DATA <= x"5ff8"; + when "11" & x"f37" => DATA <= x"03ff"; + when "11" & x"f38" => DATA <= x"c01f"; + when "11" & x"f39" => DATA <= x"fe00"; + when "11" & x"f3a" => DATA <= x"0fdf"; + when "11" & x"f3b" => DATA <= x"fd00"; + when "11" & x"f3c" => DATA <= x"36f7"; + when "11" & x"f3d" => DATA <= x"fe80"; + when "11" & x"f3e" => DATA <= x"0042"; + when "11" & x"f3f" => DATA <= x"11ff"; + when "11" & x"f40" => DATA <= x"7fd0"; + when "11" & x"f41" => DATA <= x"03c1"; + when "11" & x"f42" => DATA <= x"f0fe"; + when "11" & x"f43" => DATA <= x"effa"; + when "11" & x"f44" => DATA <= x"00bf"; + when "11" & x"f45" => DATA <= x"fa00"; + when "11" & x"f46" => DATA <= x"bffa"; + when "11" & x"f47" => DATA <= x"0002"; + when "11" & x"f48" => DATA <= x"9ce7"; + when "11" & x"f49" => DATA <= x"fe80"; + when "11" & x"f4a" => DATA <= x"1f0f"; + when "11" & x"f4b" => DATA <= x"e9ff"; + when "11" & x"f4c" => DATA <= x"003f"; + when "11" & x"f4d" => DATA <= x"2ffc"; + when "11" & x"f4e" => DATA <= x"0001"; + when "11" & x"f4f" => DATA <= x"5ad7"; + when "11" & x"f50" => DATA <= x"f9fc"; + when "11" & x"f51" => DATA <= x"7ec7"; + when "11" & x"f52" => DATA <= x"a000"; + when "11" & x"f53" => DATA <= x"1004"; + when "11" & x"f54" => DATA <= x"0084"; + when "11" & x"f55" => DATA <= x"61bc"; + when "11" & x"f56" => DATA <= x"4008"; + when "11" & x"f57" => DATA <= x"07c3"; + when "11" & x"f58" => DATA <= x"fa7f"; + when "11" & x"f59" => DATA <= x"c01f"; + when "11" & x"f5a" => DATA <= x"fe00"; + when "11" & x"f5b" => DATA <= x"07df"; + when "11" & x"f5c" => DATA <= x"fd00"; + when "11" & x"f5d" => DATA <= x"07db"; + when "11" & x"f5e" => DATA <= x"f3ff"; + when "11" & x"f5f" => DATA <= x"400f"; + when "11" & x"f60" => DATA <= x"07cc"; + when "11" & x"f61" => DATA <= x"ffd0"; + when "11" & x"f62" => DATA <= x"01ff"; + when "11" & x"f63" => DATA <= x"7fc0"; + when "11" & x"f64" => DATA <= x"0ff3"; + when "11" & x"f65" => DATA <= x"6eff"; + when "11" & x"f66" => DATA <= x"8000"; + when "11" & x"f67" => DATA <= x"20d4"; + when "11" & x"f68" => DATA <= x"7b3f"; + when "11" & x"f69" => DATA <= x"bfe8"; + when "11" & x"f6a" => DATA <= x"01e0"; + when "11" & x"f6b" => DATA <= x"f17d"; + when "11" & x"f6c" => DATA <= x"bf6b"; + when "11" & x"f6d" => DATA <= x"fe80"; + when "11" & x"f6e" => DATA <= x"2ffc"; + when "11" & x"f6f" => DATA <= x"00f0"; + when "11" & x"f70" => DATA <= x"bff0"; + when "11" & x"f71" => DATA <= x"007c"; + when "11" & x"f72" => DATA <= x"7fcf"; + when "11" & x"f73" => DATA <= x"f5ff"; + when "11" & x"f74" => DATA <= x"400e"; + when "11" & x"f75" => DATA <= x"0733"; + when "11" & x"f76" => DATA <= x"1ddf"; + when "11" & x"f77" => DATA <= x"5ff4"; + when "11" & x"f78" => DATA <= x"005f"; + when "11" & x"f79" => DATA <= x"dffa"; + when "11" & x"f7a" => DATA <= x"002d"; + when "11" & x"f7b" => DATA <= x"6ff8"; + when "11" & x"f7c" => DATA <= x"001f"; + when "11" & x"f7d" => DATA <= x"47e7"; + when "11" & x"f7e" => DATA <= x"feff"; + when "11" & x"f7f" => DATA <= x"a007"; + when "11" & x"f80" => DATA <= x"038a"; + when "11" & x"f81" => DATA <= x"bdeb"; + when "11" & x"f82" => DATA <= x"fe80"; + when "11" & x"f83" => DATA <= x"2ffc"; + when "11" & x"f84" => DATA <= x"00e0"; + when "11" & x"f85" => DATA <= x"77ef"; + when "11" & x"f86" => DATA <= x"f802"; + when "11" & x"f87" => DATA <= x"80c0"; + when "11" & x"f88" => DATA <= x"2311"; + when "11" & x"f89" => DATA <= x"99cc"; + when "11" & x"f8a" => DATA <= x"ff40"; + when "11" & x"f8b" => DATA <= x"0efa"; + when "11" & x"f8c" => DATA <= x"feef"; + when "11" & x"f8d" => DATA <= x"fa00"; + when "11" & x"f8e" => DATA <= x"bff0"; + when "11" & x"f8f" => DATA <= x"03f9"; + when "11" & x"f90" => DATA <= x"dfbf"; + when "11" & x"f91" => DATA <= x"f401"; + when "11" & x"f92" => DATA <= x"4063"; + when "11" & x"f93" => DATA <= x"31da"; + when "11" & x"f94" => DATA <= x"edff"; + when "11" & x"f95" => DATA <= x"400e"; + when "11" & x"f96" => DATA <= x"e7e3"; + when "11" & x"f97" => DATA <= x"fbbf"; + when "11" & x"f98" => DATA <= x"c008"; + when "11" & x"f99" => DATA <= x"07ae"; + when "11" & x"f9a" => DATA <= x"ff80"; + when "11" & x"f9b" => DATA <= x"1fe7"; + when "11" & x"f9c" => DATA <= x"fa3f"; + when "11" & x"f9d" => DATA <= x"0f8f"; + when "11" & x"f9e" => DATA <= x"c3f4"; + when "11" & x"f9f" => DATA <= x"00f0"; + when "11" & x"fa0" => DATA <= x"9e06"; + when "11" & x"fa1" => DATA <= x"1d00"; + when "11" & x"fa2" => DATA <= x"5ff8"; + when "11" & x"fa3" => DATA <= x"01f1"; + when "11" & x"fa4" => DATA <= x"7fe0"; + when "11" & x"fa5" => DATA <= x"07ff"; + when "11" & x"fa6" => DATA <= x"1ff0"; + when "11" & x"fa7" => DATA <= x"fd00"; + when "11" & x"fa8" => DATA <= x"1c3b"; + when "11" & x"fa9" => DATA <= x"c1e2"; + when "11" & x"faa" => DATA <= x"f0a0"; + when "11" & x"fab" => DATA <= x"03de"; + when "11" & x"fac" => DATA <= x"ff80"; + when "11" & x"fad" => DATA <= x"1fef"; + when "11" & x"fae" => DATA <= x"bdff"; + when "11" & x"faf" => DATA <= x"003f"; + when "11" & x"fb0" => DATA <= x"c1f4"; + when "11" & x"fb1" => DATA <= x"3fc1"; + when "11" & x"fb2" => DATA <= x"e000"; + when "11" & x"fb3" => DATA <= x"0d7c"; + when "11" & x"fb4" => DATA <= x"7783"; + when "11" & x"fb5" => DATA <= x"8680"; + when "11" & x"fb6" => DATA <= x"2ffc"; + when "11" & x"fb7" => DATA <= x"00fe"; + when "11" & x"fb8" => DATA <= x"bff0"; + when "11" & x"fb9" => DATA <= x"03fc"; + when "11" & x"fba" => DATA <= x"0740"; + when "11" & x"fbb" => DATA <= x"fc1e"; + when "11" & x"fbc" => DATA <= x"0001"; + when "11" & x"fbd" => DATA <= x"bfeb"; + when "11" & x"fbe" => DATA <= x"f9f8"; + when "11" & x"fbf" => DATA <= x"f878"; + when "11" & x"fc0" => DATA <= x"5005"; + when "11" & x"fc1" => DATA <= x"ff80"; + when "11" & x"fc2" => DATA <= x"1fec"; + when "11" & x"fc3" => DATA <= x"040d"; + when "11" & x"fc4" => DATA <= x"01d0"; + when "11" & x"fc5" => DATA <= x"3800"; + when "11" & x"fc6" => DATA <= x"03df"; + when "11" & x"fc7" => DATA <= x"efe7"; + when "11" & x"fc8" => DATA <= x"e3e0"; + when "11" & x"fc9" => DATA <= x"0080"; + when "11" & x"fca" => DATA <= x"bff0"; + when "11" & x"fcb" => DATA <= x"03fe"; + when "11" & x"fcc" => DATA <= x"8fcf"; + when "11" & x"fcd" => DATA <= x"fdfe"; + when "11" & x"fce" => DATA <= x"007f"; + when "11" & x"fcf" => DATA <= x"be1e"; + when "11" & x"fd0" => DATA <= x"0e06"; + when "11" & x"fd1" => DATA <= x"0200"; + when "11" & x"fd2" => DATA <= x"0340"; + when "11" & x"fd3" => DATA <= x"1bfe"; + when "11" & x"fd4" => DATA <= x"fe00"; + when "11" & x"fd5" => DATA <= x"382f"; + when "11" & x"fd6" => DATA <= x"fc01"; + when "11" & x"fd7" => DATA <= x"ffe0"; + when "11" & x"fd8" => DATA <= x"07f8"; + when "11" & x"fd9" => DATA <= x"0c0f"; + when "11" & x"fda" => DATA <= x"41f4"; + when "11" & x"fdb" => DATA <= x"7e00"; + when "11" & x"fdc" => DATA <= x"1fbf"; + when "11" & x"fdd" => DATA <= x"dfcf"; + when "11" & x"fde" => DATA <= x"c783"; + when "11" & x"fdf" => DATA <= x"8189"; + when "11" & x"fe0" => DATA <= x"4017"; + when "11" & x"fe1" => DATA <= x"fe00"; + when "11" & x"fe2" => DATA <= x"785f"; + when "11" & x"fe3" => DATA <= x"f803"; + when "11" & x"fe4" => DATA <= x"ffc0"; + when "11" & x"fe5" => DATA <= x"0ff6"; + when "11" & x"fe6" => DATA <= x"0004"; + when "11" & x"fe7" => DATA <= x"060f"; + when "11" & x"fe8" => DATA <= x"0f8f"; + when "11" & x"fe9" => DATA <= x"c01d"; + when "11" & x"fea" => DATA <= x"fefe"; + when "11" & x"feb" => DATA <= x"7c3c"; + when "11" & x"fec" => DATA <= x"5800"; + when "11" & x"fed" => DATA <= x"07f5"; + when "11" & x"fee" => DATA <= x"ff80"; + when "11" & x"fef" => DATA <= x"3ffc"; + when "11" & x"ff0" => DATA <= x"00ff"; + when "11" & x"ff1" => DATA <= x"1fef"; + when "11" & x"ff2" => DATA <= x"f801"; + when "11" & x"ff3" => DATA <= x"fee0"; + when "11" & x"ff4" => DATA <= x"0000"; + when "11" & x"ff5" => DATA <= x"c1e7"; + when "11" & x"ff6" => DATA <= x"f7f8"; + when "11" & x"ff7" => DATA <= x"03bf"; + when "11" & x"ff8" => DATA <= x"df8e"; + when "11" & x"ff9" => DATA <= x"1460"; + when "11" & x"ffa" => DATA <= x"c401"; + when "11" & x"ffb" => DATA <= x"7fef"; + when "11" & x"ffc" => DATA <= x"c003"; + when "11" & x"ffd" => DATA <= x"dedc"; + when "11" & x"ffe" => DATA <= x"4e07"; + when "11" & x"fff" => DATA <= x"b0ff"; + when others => DATA <= (others => '0'); + end case; + end process; +end RTL; diff --git a/src/TG68/TG68.vhd b/src/TG68/TG68.vhd new file mode 100644 index 0000000..d7a0919 --- /dev/null +++ b/src/TG68/TG68.vhd @@ -0,0 +1,224 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- -- +-- This is the TOP-Level for TG68_fast to generate 68K Bus signals -- +-- -- +-- Copyright (c) 2007-2008 Tobias Gubener -- +-- -- +-- This source file is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU Lesser General Public License as published -- +-- by the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This source file 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, see . -- +-- -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- +-- Revision 1.02 2008/01/23 +-- bugfix Timing +-- +-- Revision 1.01 2007/11/28 +-- add MOVEP +-- Bugfix Interrupt in MOVEQ +-- +-- Revision 1.0 2007/11/05 +-- Clean up code and first release +-- +-- known bugs/todo: +-- Add CHK INSTRUCTION +-- full decode ILLEGAL INSTRUCTIONS +-- Add FDC Output +-- add odd Address test +-- add TRACE +-- Movem with regmask==x0000 + + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity TG68 is + port( + clk : in std_logic; + reset : in std_logic; + clkena_in : in std_logic:='1'; + data_in : in std_logic_vector(15 downto 0); + IPL : in std_logic_vector(2 downto 0):="111"; + dtack : in std_logic; + addr : out std_logic_vector(31 downto 0); + data_out : out std_logic_vector(15 downto 0); + as : out std_logic; + uds : out std_logic; + lds : out std_logic; + rw : out std_logic; + drive_data : out std_logic --enable for data_out driver + ); +end TG68; + +ARCHITECTURE logic OF TG68 IS + + COMPONENT TG68_fast + PORT ( + clk : in std_logic; + reset : in std_logic; + clkena_in : in std_logic; + data_in : in std_logic_vector(15 downto 0); + IPL : in std_logic_vector(2 downto 0); + test_IPL : in std_logic; + address : out std_logic_vector(31 downto 0); + data_write : out std_logic_vector(15 downto 0); + state_out : out std_logic_vector(1 downto 0); + decodeOPC : buffer std_logic; + wr : out std_logic; + UDS, LDS : out std_logic + ); + END COMPONENT; + + + SIGNAL as_s : std_logic; + SIGNAL as_e : std_logic; + SIGNAL uds_s : std_logic; + SIGNAL uds_e : std_logic; + SIGNAL lds_s : std_logic; + SIGNAL lds_e : std_logic; + SIGNAL rw_s : std_logic; + SIGNAL rw_e : std_logic; + SIGNAL waitm : std_logic; + SIGNAL clkena_e : std_logic; + SIGNAL S_state : std_logic_vector(1 downto 0); + SIGNAL decode : std_logic; + SIGNAL wr : std_logic; + SIGNAL uds_in : std_logic; + SIGNAL lds_in : std_logic; + SIGNAL state : std_logic_vector(1 downto 0); + SIGNAL clkena : std_logic; + SIGNAL n_clk : std_logic; + SIGNAL cpuIPL : std_logic_vector(2 downto 0); + + +BEGIN + + n_clk <= NOT clk; + +TG68_fast_inst: TG68_fast + PORT MAP ( + clk => n_clk, -- : in std_logic; + reset => reset, -- : in std_logic; + clkena_in => clkena, -- : in std_logic; + data_in => data_in, -- : in std_logic_vector(15 downto 0); + IPL => cpuIPL, -- : in std_logic_vector(2 downto 0); + test_IPL => '0', -- : in std_logic; + address => addr, -- : out std_logic_vector(31 downto 0); + data_write => data_out, -- : out std_logic_vector(15 downto 0); + state_out => state, -- : out std_logic_vector(1 downto 0); + decodeOPC => decode, -- : buffer std_logic; + wr => wr, -- : out std_logic; + UDS => uds_in, -- : out std_logic; + LDS => lds_in -- : out std_logic; + ); + + PROCESS (clk) + BEGIN + IF clkena_in='1' AND (clkena_e='1' OR state="01") THEN + clkena <= '1'; + ELSE + clkena <= '0'; + END IF; + END PROCESS; + +PROCESS (clk, reset, state, as_s, as_e, rw_s, rw_e, uds_s, uds_e, lds_s, lds_e) + BEGIN + IF state="01" THEN + as <= '1'; + rw <= '1'; + uds <= '1'; + lds <= '1'; + ELSE + as <= as_s AND as_e; + rw <= rw_s AND rw_e; + uds <= uds_s AND uds_e; + lds <= lds_s AND lds_e; + END IF; + IF reset='0' THEN + S_state <= "11"; + as_s <= '1'; + rw_s <= '1'; + uds_s <= '1'; + lds_s <= '1'; + ELSIF rising_edge(clk) THEN + IF clkena_in='1' THEN + as_s <= '1'; + rw_s <= '1'; + uds_s <= '1'; + lds_s <= '1'; + IF state/="01" OR decode='1' THEN + CASE S_state IS + WHEN "00" => as_s <= '0'; + rw_s <= wr; + IF wr='1' THEN + uds_s <= uds_in; + lds_s <= lds_in; + END IF; + S_state <= "01"; + WHEN "01" => as_s <= '0'; + rw_s <= wr; + uds_s <= uds_in; + lds_s <= lds_in; + S_state <= "10"; + WHEN "10" => + rw_s <= wr; + IF waitm='0' THEN + S_state <= "11"; + END IF; + WHEN "11" => + S_state <= "00"; + WHEN OTHERS => null; + END CASE; + END IF; + END IF; + END IF; + IF reset='0' THEN + as_e <= '1'; + rw_e <= '1'; + uds_e <= '1'; + lds_e <= '1'; + clkena_e <= '0'; + cpuIPL <= "111"; + drive_data <= '0'; + ELSIF falling_edge(clk) THEN + IF clkena_in='1' THEN + as_e <= '1'; + rw_e <= '1'; + uds_e <= '1'; + lds_e <= '1'; + clkena_e <= '0'; + drive_data <= '0'; + CASE S_state IS + WHEN "00" => null; + WHEN "01" => drive_data <= NOT wr; + WHEN "10" => as_e <= '0'; + uds_e <= uds_in; + lds_e <= lds_in; + cpuIPL <= IPL; + drive_data <= NOT wr; + IF state="01" THEN + clkena_e <= '1'; + waitm <= '0'; + ELSE + clkena_e <= NOT dtack; + waitm <= dtack; + END IF; + WHEN OTHERS => null; + END CASE; + END IF; + END IF; + END PROCESS; +END; \ No newline at end of file diff --git a/src/TG68/TG68_fast.vhd b/src/TG68/TG68_fast.vhd new file mode 100644 index 0000000..07aa688 --- /dev/null +++ b/src/TG68/TG68_fast.vhd @@ -0,0 +1,3256 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- -- +-- This is the 68000 software compatible Kernal of TG68 -- +-- -- +-- Copyright (c) 2007-2010 Tobias Gubener -- +-- -- +-- This source file is free software: you can redistribute it and/or modify -- +-- it under the terms of the GNU Lesser General Public License as published -- +-- by the Free Software Foundation, either version 3 of the License, or -- +-- (at your option) any later version. -- +-- -- +-- This source file 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, see . -- +-- -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- +-- Revision 1.08 2010/06/14 +-- Bugfix Movem with regmask==xFFFF +-- Add missing Illegal $4AFC +-- +-- Revision 1.07 2009/10/02 +-- Bugfix Movem with regmask==x0000 +-- +-- Revision 1.06 2009/02/10 +-- Bugfix shift and rotations opcodes when the bitcount and the data are in the same register: +-- Example lsr.l D2,D2 +-- Thanks to Peter Graf for report +-- +-- Revision 1.05 2009/01/26 +-- Implement missing RTR +-- Thanks to Peter Graf for report +-- +-- Revision 1.04 2007/12/29 +-- size improvement +-- change signal "microaddr" to one hot state machine +-- +-- Revision 1.03 2007/12/21 +-- Thanks to Andreas Ehliar +-- Split regfile to use blockram for registers +-- insert "WHEN OTHERS => null;" on END CASE; +-- +-- Revision 1.02 2007/12/17 +-- Bugfix jsr nn.w +-- +-- Revision 1.01 2007/11/28 +-- add MOVEP +-- Bugfix Interrupt in MOVEQ +-- +-- Revision 1.0 2007/11/05 +-- Clean up code and first release +-- +-- known bugs/todo: +-- Add CHK INSTRUCTION +-- full decode ILLEGAL INSTRUCTIONS +-- Add FC Output +-- add odd Address test +-- add TRACE + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity TG68_fast is + port(clk : in std_logic; + reset : in std_logic; --low active + clkena_in : in std_logic:='1'; + data_in : in std_logic_vector(15 downto 0); + IPL : in std_logic_vector(2 downto 0):="111"; + test_IPL : in std_logic:='0'; --only for debugging + address : out std_logic_vector(31 downto 0); + data_write : out std_logic_vector(15 downto 0); + state_out : out std_logic_vector(1 downto 0); + LDS, UDS : out std_logic; + decodeOPC : buffer std_logic; + wr : out std_logic + ); +end TG68_fast; + +architecture logic of TG68_fast is + + signal state : std_logic_vector(1 downto 0); + signal clkena : std_logic; + signal TG68_PC : std_logic_vector(31 downto 0); + signal TG68_PC_add : std_logic_vector(31 downto 0); + signal memaddr : std_logic_vector(31 downto 0); + signal memaddr_in : std_logic_vector(31 downto 0); + signal ea_data : std_logic_vector(31 downto 0); + signal ea_data_OP1 : std_logic; + signal setaddrlong : std_logic; + signal OP1out, OP2out : std_logic_vector(31 downto 0); + signal OP1outbrief : std_logic_vector(15 downto 0); + signal OP1in : std_logic_vector(31 downto 0); + signal data_write_tmp : std_logic_vector(31 downto 0); + signal Xtmp : std_logic_vector(31 downto 0); + signal PC_dataa, PC_datab, PC_result : std_logic_vector(31 downto 0); + signal setregstore : std_logic; + signal datatype : std_logic_vector(1 downto 0); + signal longread : std_logic; + signal longreaddirect : std_logic; + signal long_done : std_logic; + signal nextpass : std_logic; + signal setnextpass : std_logic; + signal setdispbyte : std_logic; + signal setdisp : std_logic; + signal setdispbrief : std_logic; + signal regdirectsource : std_logic; + signal endOPC : std_logic; + signal postadd : std_logic; + signal presub : std_logic; + signal addsub_a : std_logic_vector(31 downto 0); + signal addsub_b : std_logic_vector(31 downto 0); + signal addsub_q : std_logic_vector(31 downto 0); + signal briefext : std_logic_vector(31 downto 0); + signal setbriefext : std_logic; + signal addsub : std_logic; + signal c_in : std_logic_vector(3 downto 0); + signal c_out : std_logic_vector(2 downto 0); + signal add_result : std_logic_vector(33 downto 0); + signal addsub_ofl : std_logic_vector(2 downto 0); + signal flag_z : std_logic_vector(2 downto 0); + + signal last_data_read : std_logic_vector(15 downto 0); + signal data_read : std_logic_vector(31 downto 0); + + signal registerin : std_logic_vector(31 downto 0); + signal reg_QA : std_logic_vector(31 downto 0); + signal reg_QB : std_logic_vector(31 downto 0); + signal Hwrena,Lwrena : std_logic; + signal Regwrena : std_logic; + signal rf_dest_addr : std_logic_vector(6 downto 0); + signal rf_source_addr : std_logic_vector(6 downto 0); + signal rf_dest_addr_tmp : std_logic_vector(6 downto 0); + signal rf_source_addr_tmp : std_logic_vector(6 downto 0); + signal opcode : std_logic_vector(15 downto 0); + signal laststate : std_logic_vector(1 downto 0); + signal setstate : std_logic_vector(1 downto 0); + + signal mem_address : std_logic_vector(31 downto 0); + signal memaddr_a : std_logic_vector(31 downto 0); + signal mem_data_read : std_logic_vector(31 downto 0); + signal mem_data_write : std_logic_vector(31 downto 0); + signal set_mem_rega : std_logic; + signal data_read_ram : std_logic_vector(31 downto 0); + signal data_read_uart : std_logic_vector(7 downto 0); + + signal counter_reg : std_logic_vector(31 downto 0); + + signal TG68_PC_br8 : std_logic; + signal TG68_PC_brw : std_logic; + signal TG68_PC_nop : std_logic; + signal setgetbrief : std_logic; + signal getbrief : std_logic; + signal brief : std_logic_vector(15 downto 0); + signal dest_areg : std_logic; + signal source_areg : std_logic; + signal data_is_source : std_logic; + signal set_store_in_tmp : std_logic; + signal store_in_tmp : std_logic; + signal write_back : std_logic; + signal setaddsub : std_logic; + signal setstackaddr : std_logic; + signal writePC : std_logic; + signal writePC_add : std_logic; + signal set_TG68_PC_dec: std_logic; + signal TG68_PC_dec : std_logic_vector(1 downto 0); + signal directPC : std_logic; + signal set_directPC : std_logic; + signal execOPC : std_logic; + signal fetchOPC : std_logic; + signal Flags : std_logic_vector(15 downto 0); --T.S..III ...XNZVC + signal set_Flags : std_logic_vector(3 downto 0); --NZVC + signal exec_ADD : std_logic; + signal exec_OR : std_logic; + signal exec_AND : std_logic; + signal exec_EOR : std_logic; + signal exec_MOVE : std_logic; + signal exec_MOVEQ : std_logic; + signal exec_MOVESR : std_logic; + signal exec_DIRECT : std_logic; + signal exec_ADDQ : std_logic; + signal exec_CMP : std_logic; + signal exec_ROT : std_logic; + signal exec_exg : std_logic; + signal exec_swap : std_logic; + signal exec_write_back: std_logic; + signal exec_tas : std_logic; + signal exec_EXT : std_logic; + signal exec_ABCD : std_logic; + signal exec_SBCD : std_logic; + signal exec_MULU : std_logic; + signal exec_DIVU : std_logic; + signal exec_Scc : std_logic; + signal exec_CPMAW : std_logic; + signal set_exec_ADD : std_logic; + signal set_exec_OR : std_logic; + signal set_exec_AND : std_logic; + signal set_exec_EOR : std_logic; + signal set_exec_MOVE : std_logic; + signal set_exec_MOVEQ : std_logic; + signal set_exec_MOVESR: std_logic; + signal set_exec_ADDQ : std_logic; + signal set_exec_CMP : std_logic; + signal set_exec_ROT : std_logic; + signal set_exec_tas : std_logic; + signal set_exec_EXT : std_logic; + signal set_exec_ABCD : std_logic; + signal set_exec_SBCD : std_logic; + signal set_exec_MULU : std_logic; + signal set_exec_DIVU : std_logic; + signal set_exec_Scc : std_logic; + signal set_exec_CPMAW : std_logic; + + signal condition : std_logic; + signal OP2out_one : std_logic; + signal OP1out_zero : std_logic; + signal ea_to_pc : std_logic; + signal ea_build : std_logic; + signal ea_only : std_logic; + signal get_ea_now : std_logic; + signal source_lowbits : std_logic; + signal dest_hbits : std_logic; + signal rot_rot : std_logic; + signal rot_lsb : std_logic; + signal rot_msb : std_logic; + signal rot_XC : std_logic; + signal set_rot_nop : std_logic; + signal rot_nop : std_logic; + signal rot_out : std_logic_vector(31 downto 0); + signal rot_bits : std_logic_vector(1 downto 0); + signal rot_cnt : std_logic_vector(5 downto 0); + signal set_rot_cnt : std_logic_vector(5 downto 0); + signal movem_busy : std_logic; + signal set_movem_busy : std_logic; + signal movem_addr : std_logic; + signal movem_regaddr : std_logic_vector(3 downto 0); + signal movem_mask : std_logic_vector(15 downto 0); + signal set_get_movem_mask : std_logic; + signal get_movem_mask : std_logic; + signal maskzero : std_logic; + signal test_maskzero : std_logic; + signal movem_muxa : std_logic_vector(7 downto 0); + signal movem_muxb : std_logic_vector(3 downto 0); + signal movem_muxc : std_logic_vector(1 downto 0); + signal movem_presub : std_logic; + signal save_memaddr : std_logic; + signal movem_bits : std_logic_vector(4 downto 0); + signal ea_calc_b : std_logic_vector(31 downto 0); + signal set_mem_addsub : std_logic; + signal bit_bits : std_logic_vector(1 downto 0); + signal bit_number_reg : std_logic_vector(4 downto 0); + signal bit_number : std_logic_vector(4 downto 0); + signal exec_Bits : std_logic; + signal bits_out : std_logic_vector(31 downto 0); + signal one_bit_in : std_logic; + signal one_bit_out : std_logic; + signal set_get_bitnumber : std_logic; + signal get_bitnumber : std_logic; + signal mem_byte : std_logic; + signal wait_mem_byte : std_logic; + signal movepl : std_logic; + signal movepw : std_logic; + signal set_movepl : std_logic; + signal set_movepw : std_logic; + signal set_direct_data: std_logic; + signal use_direct_data: std_logic; + signal direct_data : std_logic; + signal set_get_extendedOPC : std_logic; + signal get_extendedOPC: std_logic; + signal setstate_delay : std_logic_vector(1 downto 0); + signal setstate_mux : std_logic_vector(1 downto 0); + signal use_XZFlag : std_logic; + signal use_XFlag : std_logic; + + signal dummy_a : std_logic_vector(8 downto 0); + signal niba_l : std_logic_vector(5 downto 0); + signal niba_h : std_logic_vector(5 downto 0); + signal niba_lc : std_logic; + signal niba_hc : std_logic; + signal bcda_lc : std_logic; + signal bcda_hc : std_logic; + signal dummy_s : std_logic_vector(8 downto 0); + signal nibs_l : std_logic_vector(5 downto 0); + signal nibs_h : std_logic_vector(5 downto 0); + signal nibs_lc : std_logic; + signal nibs_hc : std_logic; + signal dummy_mulu : std_logic_vector(31 downto 0); + signal dummy_div : std_logic_vector(31 downto 0); + signal dummy_div_sub : std_logic_vector(16 downto 0); + signal dummy_div_over : std_logic_vector(16 downto 0); + signal set_V_Flag : std_logic; + signal OP1sign : std_logic; + signal set_sign : std_logic; + signal sign : std_logic; + signal sign2 : std_logic; + signal muls_msb : std_logic; + signal mulu_reg : std_logic_vector(31 downto 0); + signal div_reg : std_logic_vector(31 downto 0); + signal div_sign : std_logic; + signal div_quot : std_logic_vector(31 downto 0); + signal div_ovl : std_logic; + signal pre_V_Flag : std_logic; + signal set_vectoraddr : std_logic; + signal writeSR : std_logic; + signal trap_illegal : std_logic; + signal trap_priv : std_logic; + signal trap_1010 : std_logic; + signal trap_1111 : std_logic; + signal trap_trap : std_logic; + signal trap_trapv : std_logic; + signal trap_interrupt : std_logic; + signal trapmake : std_logic; + signal trapd : std_logic; +-- signal trap_PC : std_logic_vector(31 downto 0); + signal trap_SR : std_logic_vector(15 downto 0); + + signal set_directSR : std_logic; + signal directSR : std_logic; + signal set_directCCR : std_logic; + signal directCCR : std_logic; + signal set_stop : std_logic; + signal stop : std_logic; + signal trap_vector : std_logic_vector(31 downto 0); + signal to_USP : std_logic; + signal from_USP : std_logic; + signal to_SR : std_logic; + signal from_SR : std_logic; + signal illegal_write_mode : std_logic; + signal illegal_read_mode : std_logic; + signal illegal_byteaddr : std_logic; + signal use_SP : std_logic; + + signal no_Flags : std_logic; + signal IPL_nr : std_logic_vector(2 downto 0); + signal rIPL_nr : std_logic_vector(2 downto 0); + signal interrupt : std_logic; + signal SVmode : std_logic; + signal trap_chk : std_logic; + signal test_delay : std_logic_vector(2 downto 0); + signal set_PCmarker : std_logic; + signal PCmarker : std_logic; + signal set_Z_error : std_logic; + signal Z_error : std_logic; + + type micro_states is (idle, nop, ld_nn, st_nn, ld_dAn1, ld_dAn2, ld_AnXn1, ld_AnXn2, ld_AnXn3, st_dAn1, st_dAn2, + st_AnXn1, st_AnXn2, st_AnXn3, bra1, bra2, bsr1, bsr2, dbcc1, dbcc2, + movem, andi, op_AxAy, cmpm, link, int1, int2, int3, int4, rte, trap1, trap2, trap3, + movep1, movep2, movep3, movep4, movep5, init1, init2, + mul1, mul2, mul3, mul4, mul5, mul6, mul7, mul8, mul9, mul10, mul11, mul12, mul13, mul14, mul15, + div1, div2, div3, div4, div5, div6, div7, div8, div9, div10, div11, div12, div13, div14, div15 ); + signal micro_state : micro_states; + signal next_micro_state : micro_states; + + type regfile_t is array(0 to 16) of std_logic_vector(15 downto 0); + signal regfile_low : regfile_t; + signal regfile_high : regfile_t; + signal RWindex_A : integer range 0 to 16; + signal RWindex_B : integer range 0 to 16; + + +BEGIN + +----------------------------------------------------------------------------- +-- Registerfile +----------------------------------------------------------------------------- + + RWindex_A <= conv_integer(rf_dest_addr(4)&(rf_dest_addr(3 downto 0) XOR "1111")); + RWindex_B <= conv_integer(rf_source_addr(4)&(rf_source_addr(3 downto 0) XOR "1111")); + + PROCESS (clk) + BEGIN + IF falling_edge(clk) THEN + IF clkena='1' THEN + reg_QA <= regfile_high(RWindex_A) & regfile_low(RWindex_A); + reg_QB <= regfile_high(RWindex_B) & regfile_low(RWindex_B); + END IF; + END IF; + IF rising_edge(clk) THEN + IF clkena='1' THEN + IF Lwrena='1' THEN + regfile_low(RWindex_A) <= registerin(15 downto 0); + END IF; + IF Hwrena='1' THEN + regfile_high(RWindex_A) <= registerin(31 downto 16); + END IF; + END IF; + END IF; + END PROCESS; + + + + address <= TG68_PC when state="00" else X"ffffffff" when state="01" else memaddr; + LDS <= '0' WHEN (datatype/="00" OR state="00" OR memaddr(0)='1') AND state/="01" ELSE '1'; + UDS <= '0' WHEN (datatype/="00" OR state="00" OR memaddr(0)='0') AND state/="01" ELSE '1'; + state_out <= state; + wr <= '0' WHEN state="11" ELSE '1'; + IPL_nr <= NOT IPL; + + +----------------------------------------------------------------------------- +-- "ALU" +----------------------------------------------------------------------------- +PROCESS (addsub_a, addsub_b, addsub, add_result, c_in) + BEGIN + IF addsub='1' THEN --ADD + add_result <= (('0'&addsub_a&c_in(0))+('0'&addsub_b&c_in(0))); + ELSE --SUB + add_result <= (('0'&addsub_a&'0')-('0'&addsub_b&c_in(0))); + END IF; + addsub_q <= add_result(32 downto 1); + c_in(1) <= add_result(9) XOR addsub_a(8) XOR addsub_b(8); + c_in(2) <= add_result(17) XOR addsub_a(16) XOR addsub_b(16); + c_in(3) <= add_result(33); + addsub_ofl(0) <= (c_in(1) XOR add_result(8) XOR addsub_a(7) XOR addsub_b(7)); --V Byte + addsub_ofl(1) <= (c_in(2) XOR add_result(16) XOR addsub_a(15) XOR addsub_b(15)); --V Word + addsub_ofl(2) <= (c_in(3) XOR add_result(32) XOR addsub_a(31) XOR addsub_b(31)); --V Long + c_out <= c_in(3 downto 1); +END PROCESS; + +----------------------------------------------------------------------------- +-- MEM_IO +----------------------------------------------------------------------------- +PROCESS (clk, reset, clkena_in, opcode, rIPL_nr, longread, get_extendedOPC, memaddr, memaddr_a, set_mem_addsub, movem_presub, + movem_busy, state, PCmarker, execOPC, datatype, setdisp, setdispbrief, briefext, setdispbyte, brief, + set_mem_rega, reg_QA, setaddrlong, data_read, decodeOPC, TG68_PC, data_in, long_done, last_data_read, mem_byte, + data_write_tmp, addsub_q, set_vectoraddr, trap_vector, interrupt) + BEGIN + clkena <= clkena_in AND NOT longread AND NOT get_extendedOPC; + + IF rising_edge(clk) THEN + IF clkena='1' THEN + trap_vector(31 downto 8) <= (others => '0'); + -- IF trap_addr_fault='1' THEN + -- trap_vector(7 downto 0) <= X"08"; + -- END IF; + -- IF trap_addr_error='1' THEN + -- trap_vector(7 downto 0) <= X"0C"; + -- END IF; + IF trap_illegal='1' THEN + trap_vector(7 downto 0) <= X"10"; + END IF; + IF z_error='1' THEN + trap_vector(7 downto 0) <= X"14"; + END IF; +-- IF trap_chk='1' THEN +-- trap_vector(7 downto 0) <= X"18"; +-- END IF; + IF trap_trapv='1' THEN + trap_vector(7 downto 0) <= X"1C"; + END IF; + IF trap_priv='1' THEN + trap_vector(7 downto 0) <= X"20"; + END IF; + -- IF trap_trace='1' THEN + -- trap_vector(7 downto 0) <= X"24"; + -- END IF; + IF trap_1010='1' THEN + trap_vector(7 downto 0) <= X"28"; + END IF; + IF trap_1111='1' THEN + trap_vector(7 downto 0) <= X"2C"; + END IF; + IF trap_trap='1' THEN + trap_vector(7 downto 2) <= "10"&opcode(3 downto 0); + END IF; + IF interrupt='1' THEN + trap_vector(7 downto 2) <= "011"&rIPL_nr; + END IF; + END IF; + END IF; + + memaddr_a(3 downto 0) <= "0000"; + memaddr_a(7 downto 4) <= (OTHERS=>memaddr_a(3)); + memaddr_a(15 downto 8) <= (OTHERS=>memaddr_a(7)); + memaddr_a(31 downto 16) <= (OTHERS=>memaddr_a(15)); + IF movem_presub='1' THEN + IF movem_busy='1' OR longread='1' THEN + memaddr_a(3 downto 0) <= "1110"; + END IF; + ELSIF state(1)='1' OR (get_extendedOPC='1' AND PCmarker='1') THEN + memaddr_a(1) <= '1'; + ELSIF execOPC='1' THEN + IF datatype="10" THEN + memaddr_a(3 downto 0) <= "1100"; + ELSE + memaddr_a(3 downto 0) <= "1110"; + END IF; + ELSIF setdisp='1' THEN + IF setdispbrief='1' THEN + memaddr_a <= briefext; + ELSIF setdispbyte='1' THEN + memaddr_a(7 downto 0) <= brief(7 downto 0); + ELSE + memaddr_a(15 downto 0) <= brief; + END IF; + END IF; + + memaddr_in <= memaddr+memaddr_a; + IF longread='0' THEN + IF set_mem_addsub='1' THEN + memaddr_in <= addsub_q; + ELSIF set_vectoraddr='1' THEN + memaddr_in <= trap_vector; + ELSIF interrupt='1' THEN + memaddr_in <= "1111111111111111111111111111"&rIPL_nr&'0'; + ELSIF set_mem_rega='1' THEN + memaddr_in <= reg_QA; + ELSIF setaddrlong='1' AND longread='0' THEN + memaddr_in <= data_read; + ELSIF decodeOPC='1' THEN + memaddr_in <= TG68_PC; + END IF; + END IF; + + data_read(15 downto 0) <= data_in; + data_read(31 downto 16) <= (OTHERS=>data_in(15)); + IF long_done='1' THEN + data_read(31 downto 16) <= last_data_read; + END IF; + IF mem_byte='1' AND memaddr(0)='0' THEN + data_read(7 downto 0) <= data_in(15 downto 8); + END IF; + + IF longread='1' THEN + data_write <= data_write_tmp(31 downto 16); + ELSE + data_write(7 downto 0) <= data_write_tmp(7 downto 0); + IF mem_byte='1' THEN + data_write(15 downto 8) <= data_write_tmp(7 downto 0); + ELSE + data_write(15 downto 8) <= data_write_tmp(15 downto 8); + IF datatype="00" THEN + data_write(7 downto 0) <= data_write_tmp(15 downto 8); + END IF; + END IF; + END IF; + + IF reset='0' THEN + longread <= '0'; + long_done <= '0'; + ELSIF rising_edge(clk) THEN + IF clkena_in='1' THEN + last_data_read <= data_in; + long_done <= longread; + IF get_extendedOPC='0' OR (get_extendedOPC='1' AND PCmarker='1') THEN + memaddr <= memaddr_in; + END IF; + IF get_extendedOPC='0' THEN + + IF ((setstate_mux(1)='1' AND datatype="10") OR longreaddirect='1') AND longread='0' AND interrupt='0' THEN + longread <= '1'; + ELSE + longread <= '0'; + END IF; + END IF; + + END IF; + END IF; + END PROCESS; +----------------------------------------------------------------------------- +-- brief +----------------------------------------------------------------------------- +process (clk, brief, OP1out) + begin + IF brief(11)='1' THEN + OP1outbrief <= OP1out(31 downto 16); + ELSE + OP1outbrief <= (OTHERS=>OP1out(15)); + END IF; + IF rising_edge(clk) THEN + IF clkena='1' THEN + briefext <= OP1outbrief&OP1out(15 downto 0); +-- CASE brief(10 downto 9) IS +-- WHEN "00" => briefext <= OP1outbrief&OP1out(15 downto 0); +-- WHEN "01" => briefext <= OP1outbrief(14 downto 0)&OP1out(15 downto 0)&'0'; +-- WHEN "10" => briefext <= OP1outbrief(13 downto 0)&OP1out(15 downto 0)&"00"; +-- WHEN "11" => briefext <= OP1outbrief(12 downto 0)&OP1out(15 downto 0)&"000"; +-- END CASE; + end if; + end if; + end process; + +----------------------------------------------------------------------------- +-- PC Calc + fetch opcode +----------------------------------------------------------------------------- +process (clk, reset, opcode, TG68_PC, TG68_PC_dec, TG68_PC_br8, TG68_PC_brw, PC_dataa, PC_datab, execOPC, last_data_read, get_extendedOPC, + setstate_delay, setstate) + begin + PC_dataa <= TG68_PC; + PC_datab(2 downto 0) <= "010"; + PC_datab(7 downto 3) <= (others => PC_datab(2)); + PC_datab(15 downto 8) <= (others => PC_datab(7)); + PC_datab(31 downto 16) <= (others => PC_datab(15)); + IF execOPC='0' THEN + IF TG68_PC_br8='1' THEN + PC_datab(7 downto 0) <= opcode(7 downto 0); + END IF; + IF TG68_PC_dec(1)='1' THEN + PC_datab(2) <= '1'; + END IF; + IF TG68_PC_brw = '1' THEN + PC_datab(15 downto 0) <= last_data_read(15 downto 0); + END IF; + END IF; + TG68_PC_add <= PC_dataa+PC_datab; + + IF get_extendedOPC='1' THEN + setstate_mux <= setstate_delay; + ELSE + setstate_mux <= setstate; + END IF; + + + IF reset = '0' THEN + opcode(15 downto 12) <= X"7"; --moveq + opcode(8 downto 6) <= "010"; --long + TG68_PC <= (others =>'0'); + state <= "01"; + decodeOPC <= '0'; + fetchOPC <= '0'; + endOPC <= '0'; + interrupt <= '0'; + trap_interrupt <= '1'; + execOPC <= '0'; + getbrief <= '0'; + TG68_PC_dec <= "00"; + directPC <= '0'; + directSR <= '0'; + directCCR <= '0'; + stop <= '0'; + exec_ADD <= '0'; + exec_OR <= '0'; + exec_AND <= '0'; + exec_EOR <= '0'; + exec_MOVE <= '0'; + exec_MOVEQ <= '0'; + exec_MOVESR <= '0'; + exec_ADDQ <= '0'; + exec_CMP <= '0'; + exec_ROT <= '0'; + exec_EXT <= '0'; + exec_ABCD <= '0'; + exec_SBCD <= '0'; + exec_MULU <= '0'; + exec_DIVU <= '0'; + exec_Scc <= '0'; + exec_CPMAW <= '0'; + mem_byte <= '0'; + rot_cnt <="000001"; + rot_nop <= '0'; + get_extendedOPC <= '0'; + get_bitnumber <= '0'; + get_movem_mask <= '0'; + test_maskzero <= '0'; + movepl <= '0'; + movepw <= '0'; + test_delay <= "000"; + PCmarker <= '0'; + ELSIF rising_edge(clk) THEN + IF clkena_in='1' THEN + get_extendedOPC <= set_get_extendedOPC; + get_bitnumber <= set_get_bitnumber; + get_movem_mask <= set_get_movem_mask; + test_maskzero <= get_movem_mask; + setstate_delay <= setstate; + + TG68_PC_dec <= TG68_PC_dec(0)&set_TG68_PC_dec; + IF directPC='1' AND clkena='1' THEN + TG68_PC <= data_read; + ELSIF ea_to_pc='1' AND longread='0' THEN + TG68_PC <= memaddr_in; + ELSIF (state ="00" AND TG68_PC_nop='0') OR TG68_PC_br8='1' OR TG68_PC_brw='1' OR TG68_PC_dec(1)='1' THEN + TG68_PC <= TG68_PC_add; + END IF; + + IF get_bitnumber='1' THEN + bit_number_reg <= data_read(4 downto 0); + END IF; + + IF clkena='1' OR get_extendedOPC='1' THEN + IF set_get_extendedOPC='1' THEN + state <= "00"; + ELSIF get_extendedOPC='1' THEN + state <= setstate_mux; + ELSIF fetchOPC='1' OR (state="10" AND write_back='1' AND setstate/="10") OR set_rot_cnt/="000001" OR stop='1' THEN + state <= "01"; --decode cycle, execute cycle + ELSE + state <= setstate_mux; + END IF; + IF setstate_mux(1)='1' AND datatype="00" AND set_get_extendedOPC='0' AND wait_mem_byte='0' THEN + mem_byte <= '1'; + ELSE + mem_byte <= '0'; + END IF; + + END IF; + END IF; + + IF clkena='1' THEN + exec_ADD <= '0'; + exec_OR <= '0'; + exec_AND <= '0'; + exec_EOR <= '0'; + exec_MOVE <= '0'; + exec_MOVEQ <= '0'; + exec_MOVESR <= '0'; + exec_ADDQ <= '0'; + exec_CMP <= '0'; + exec_ROT <= '0'; + exec_ABCD <= '0'; + exec_SBCD <= '0'; + fetchOPC <= '0'; + exec_CPMAW <= '0'; + endOPC <= '0'; + interrupt <= '0'; + execOPC <= '0'; + exec_EXT <= '0'; + exec_Scc <= '0'; + rot_nop <= '0'; + decodeOPC <= fetchOPC; + directPC <= set_directPC; + directSR <= set_directSR; + directCCR <= set_directCCR; + exec_MULU <= set_exec_MULU; + exec_DIVU <= set_exec_DIVU; + movepl <= '0'; + movepw <= '0'; + + stop <= set_stop OR (stop AND NOT interrupt); + IF set_PCmarker='1' THEN + PCmarker <= '1'; + ELSIF (state="10" AND longread='0') OR (ea_only='1' AND get_ea_now='1') THEN + PCmarker <= '0'; + END IF; + IF (decodeOPC OR execOPC)='1' THEN + rot_cnt <= set_rot_cnt; + END IF; + IF next_micro_state=idle AND setstate_mux="00" AND (setnextpass='0' OR ea_only='1') AND endOPC='0' AND movem_busy='0' AND set_movem_busy='0' AND set_get_bitnumber='0' THEN + nextpass <= '0'; + IF (exec_write_back='0' OR state="11") AND set_rot_cnt="000001" THEN + endOPC <= '1'; + IF Flags(10 downto 8) '0'); + ELSIF from_SR='1' THEN + OP1out(15 downto 0) <= Flags; + ELSIF ea_data_OP1='1' AND set_store_in_tmp='1' THEN + OP1out <= ea_data; + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- set source regaddr +----------------------------------------------------------------------------- +PROCESS (opcode, Flags, movem_addr, movem_presub, movem_regaddr, source_lowbits, source_areg, from_USP, rf_source_addr_tmp) + BEGIN + rf_source_addr <= rf_source_addr_tmp; + IF rf_source_addr_tmp(3 downto 0)="1111" AND from_USP='0' THEN + rf_source_addr(4) <= Flags(13); + END IF; + IF movem_addr='1' THEN + IF movem_presub='1' THEN + rf_source_addr_tmp <= "000"&(movem_regaddr XOR "1111"); + ELSE + rf_source_addr_tmp <= "000"&movem_regaddr; + END IF; + ELSIF from_USP='1' THEN + rf_source_addr_tmp <= "0001111"; + ELSIF source_lowbits='1' THEN + rf_source_addr_tmp <= "000"&source_areg&opcode(2 downto 0); + ELSE + rf_source_addr_tmp <= "000"&source_areg&opcode(11 downto 9); + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- set OP2 +----------------------------------------------------------------------------- +PROCESS (OP2out, reg_QB, opcode, datatype, OP2out_one, exec_EXT, exec_MOVEQ, EXEC_ADDQ, use_direct_data, data_write_tmp, + ea_data_OP1, set_store_in_tmp, ea_data, movepl) + BEGIN + OP2out(15 downto 0) <= reg_QB(15 downto 0); + OP2out(31 downto 16) <= (OTHERS => OP2out(15)); + IF OP2out_one='1' THEN + OP2out(15 downto 0) <= "1111111111111111"; + ELSIF exec_EXT='1' THEN + IF opcode(6)='0' THEN --ext.w + OP2out(15 downto 8) <= (OTHERS => OP2out(7)); + END IF; + ELSIF use_direct_data='1' THEN + OP2out <= data_write_tmp; + ELSIF ea_data_OP1='0' AND set_store_in_tmp='1' THEN + OP2out <= ea_data; + ELSIF exec_MOVEQ='1' THEN + OP2out(7 downto 0) <= opcode(7 downto 0); + OP2out(15 downto 8) <= (OTHERS => opcode(7)); + ELSIF exec_ADDQ='1' THEN + OP2out(2 downto 0) <= opcode(11 downto 9); + IF opcode(11 downto 9)="000" THEN + OP2out(3) <='1'; + ELSE + OP2out(3) <='0'; + END IF; + OP2out(15 downto 4) <= (OTHERS => '0'); + ELSIF datatype="10" OR movepl='1' THEN + OP2out(31 downto 16) <= reg_QB(31 downto 16); + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- addsub +----------------------------------------------------------------------------- +PROCESS (OP1out, OP2out, presub, postadd, execOPC, OP2out_one, datatype, use_SP, use_XZFlag, use_XFlag, Flags, setaddsub) + BEGIN + addsub_a <= OP1out; + addsub_b <= OP2out; + addsub <= NOT presub; + c_in(0) <='0'; + IF execOPC='0' AND OP2out_one='0' THEN + IF datatype="00" AND use_SP='0' THEN + addsub_b <= "00000000000000000000000000000001"; + ELSIF datatype="10" AND (presub OR postadd)='1' THEN + addsub_b <= "00000000000000000000000000000100"; + ELSE + addsub_b <= "00000000000000000000000000000010"; + END IF; + ELSE + IF (use_XZFlag='1' OR use_XFlag='1') AND Flags(4)='1' THEN + c_in(0) <= '1'; + END IF; + addsub <= setaddsub; + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- Write Reg +----------------------------------------------------------------------------- +PROCESS (clkena, OP1in, datatype, presub, postadd, endOPC, regwrena, state, execOPC, last_data_read, movem_addr, rf_dest_addr, reg_QA, maskzero) + BEGIN + Lwrena <= '0'; + Hwrena <= '0'; + registerin <= OP1in; + + IF (presub='1' OR postadd='1') AND endOPC='0' THEN -- -(An)+ + Hwrena <= '1'; + Lwrena <= '1'; + ELSIF Regwrena='1' AND maskzero='0' THEN --read (mem) + Lwrena <= '1'; + CASE datatype IS + WHEN "00" => --BYTE + registerin(15 downto 8) <= reg_QA(15 downto 8); + WHEN "01" => --WORD + IF rf_dest_addr(3)='1' OR movem_addr='1' THEN + Hwrena <='1'; + END IF; + WHEN OTHERS => --LONG + Hwrena <= '1'; + END CASE; + END IF; + END PROCESS; + +------------------------------------------------------------------------------ +--ALU +------------------------------------------------------------------------------ +PROCESS (opcode, OP1in, OP1out, OP2out, datatype, c_out, exec_ABCD, exec_SBCD, exec_CPMAW, exec_MOVESR, bits_out, Flags, flag_z, use_XZFlag, addsub_ofl, + dummy_s, dummy_a, niba_hc, niba_h, niba_l, niba_lc, nibs_hc, nibs_h, nibs_l, nibs_lc, addsub_q, movem_addr, data_read, exec_MULU, exec_DIVU, exec_OR, + exec_AND, exec_Scc, exec_EOR, exec_MOVE, exec_exg, exec_ROT, execOPC, exec_swap, exec_Bits, rot_out, dummy_mulu, dummy_div, save_memaddr, memaddr, + memaddr_in, ea_only, get_ea_now) + BEGIN + +--BCD_ARITH------------------------------------------------------------------- + --ADC + dummy_a <= niba_hc&(niba_h(4 downto 1)+('0',niba_hc,niba_hc,'0'))&(niba_l(4 downto 1)+('0',niba_lc,niba_lc,'0')); + niba_l <= ('0'&OP1out(3 downto 0)&'1') + ('0'&OP2out(3 downto 0)&Flags(4)); + niba_lc <= niba_l(5) OR (niba_l(4) AND niba_l(3)) OR (niba_l(4) AND niba_l(2)); + + niba_h <= ('0'&OP1out(7 downto 4)&'1') + ('0'&OP2out(7 downto 4)&niba_lc); + niba_hc <= niba_h(5) OR (niba_h(4) AND niba_h(3)) OR (niba_h(4) AND niba_h(2)); + --SBC + dummy_s <= nibs_hc&(nibs_h(4 downto 1)-('0',nibs_hc,nibs_hc,'0'))&(nibs_l(4 downto 1)-('0',nibs_lc,nibs_lc,'0')); + nibs_l <= ('0'&OP1out(3 downto 0)&'0') - ('0'&OP2out(3 downto 0)&Flags(4)); + nibs_lc <= nibs_l(5); + + nibs_h <= ('0'&OP1out(7 downto 4)&'0') - ('0'&OP2out(7 downto 4)&nibs_lc); + nibs_hc <= nibs_h(5); +------------------------------------------------------------------------------ + + flag_z <= "000"; + + OP1in <= addsub_q; + IF movem_addr='1' THEN + OP1in <= data_read; + ELSIF exec_ABCD='1' THEN + OP1in(7 downto 0) <= dummy_a(7 downto 0); + ELSIF exec_SBCD='1' THEN + OP1in(7 downto 0) <= dummy_s(7 downto 0); + ELSIF exec_MULU='1' THEN + OP1in <= dummy_mulu; + ELSIF exec_DIVU='1' AND execOPC='1' THEN + OP1in <= dummy_div; + ELSIF exec_OR='1' THEN + OP1in <= OP2out OR OP1out; + ELSIF exec_AND='1' OR exec_Scc='1' THEN + OP1in <= OP2out AND OP1out; + ELSIF exec_EOR='1' THEN + OP1in <= OP2out XOR OP1out; + ELSIF exec_MOVE='1' OR exec_exg='1' THEN + OP1in <= OP2out; + ELSIF exec_ROT='1' THEN + OP1in <= rot_out; + ELSIF save_memaddr='1' THEN + OP1in <= memaddr; + ELSIF get_ea_now='1' AND ea_only='1' THEN + OP1in <= memaddr_in; + ELSIF exec_swap='1' THEN + OP1in <= OP1out(15 downto 0)& OP1out(31 downto 16); + ELSIF exec_bits='1' THEN + OP1in <= bits_out; + ELSIF exec_MOVESR='1' THEN + OP1in(15 downto 0) <= Flags; + END IF; + + IF use_XZFlag='1' AND flags(2)='0' THEN + flag_z <= "000"; + ELSIF OP1in(7 downto 0)="00000000" THEN + flag_z(0) <= '1'; + IF OP1in(15 downto 8)="00000000" THEN + flag_z(1) <= '1'; + IF OP1in(31 downto 16)="0000000000000000" THEN + flag_z(2) <= '1'; + END IF; + END IF; + END IF; + +-- --Flags NZVC + IF datatype="00" THEN --Byte + set_flags <= OP1IN(7)&flag_z(0)&addsub_ofl(0)&c_out(0); + IF exec_ABCD='1' THEN + set_flags(0) <= dummy_a(8); + ELSIF exec_SBCD='1' THEN + set_flags(0) <= dummy_s(8); + END IF; + ELSIF datatype="10" OR exec_CPMAW='1' THEN --Long + set_flags <= OP1IN(31)&flag_z(2)&addsub_ofl(2)&c_out(2); + ELSE --Word + set_flags <= OP1IN(15)&flag_z(1)&addsub_ofl(1)&c_out(1); + END IF; + END PROCESS; + +------------------------------------------------------------------------------ +--Flags +------------------------------------------------------------------------------ +PROCESS (clk, reset, opcode) + BEGIN + IF reset='0' THEN + Flags(13) <= '1'; + SVmode <= '1'; + Flags(10 downto 8) <= "111"; + ELSIF rising_edge(clk) THEN + + IF clkena = '1' THEN + IF directSR='1' THEN + Flags <= data_read(15 downto 0); + END IF; + IF directCCR='1' THEN + Flags(7 downto 0) <= data_read(7 downto 0); + END IF; + IF interrupt='1' THEN + Flags(10 downto 8) <=rIPL_nr; + SVmode <= '1'; + END IF; + IF writeSR='1' OR interrupt='1' THEN + Flags(13) <='1'; + END IF; + IF endOPC='1' AND to_SR='0' THEN + SVmode <= Flags(13); + END IF; + IF execOPC='1' AND to_SR='1' THEN + Flags(7 downto 0) <= OP1in(7 downto 0); --CCR + IF datatype="01" AND (opcode(14)='0' OR opcode(9)='1') THEN --move to CCR wird als word gespeichert + Flags(15 downto 8) <= OP1in(15 downto 8); --SR + SVmode <= OP1in(13); + END IF; + ELSIF Z_error='1' THEN + IF opcode(8)='0' THEN + Flags(3 downto 0) <= "1000"; + ELSE + Flags(3 downto 0) <= "0100"; + END IF; + ELSIF no_Flags='0' AND trapmake='0' THEN + IF exec_ADD='1' THEN + Flags(4) <= set_flags(0); + ELSIF exec_ROT='1' AND rot_bits/="11" AND rot_nop='0' THEN + Flags(4) <= rot_XC; + END IF; + + IF (exec_ADD OR exec_CMP)='1' THEN + Flags(3 downto 0) <= set_flags; + ELSIF decodeOPC='1' and set_exec_ROT='1' THEN + Flags(1) <= '0'; + ELSIF exec_DIVU='1' THEN + IF set_V_Flag='1' THEN + Flags(3 downto 0) <= "1010"; + ELSE + Flags(3 downto 0) <= OP1IN(15)&flag_z(1)&"00"; + END IF; + ELSIF exec_OR='1' OR exec_AND='1' OR exec_EOR='1' OR exec_MOVE='1' OR exec_swap='1' OR exec_MULU='1' THEN + Flags(3 downto 0) <= set_flags(3 downto 2)&"00"; + ELSIF exec_ROT='1' THEN + Flags(3 downto 2) <= set_flags(3 downto 2); + Flags(0) <= rot_XC; + IF rot_bits="00" THEN --ASL/ASR + Flags(1) <= ((set_flags(3) XOR rot_rot) OR Flags(1)); + END IF; + ELSIF exec_bits='1' THEN + Flags(2) <= NOT one_bit_in; + END IF; + END IF; + END IF; + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- execute opcode +----------------------------------------------------------------------------- +PROCESS (clk, reset, OP2out, opcode, fetchOPC, decodeOPC, execOPC, endOPC, nextpass, condition, set_V_flag, trapmake, trapd, interrupt, trap_interrupt, rot_nop, + Z_error, c_in, rot_cnt, one_bit_in, bit_number_reg, bit_number, ea_only, get_ea_now, ea_build, datatype, exec_write_back, get_extendedOPC, + Flags, SVmode, movem_addr, movem_busy, getbrief, set_exec_AND, set_exec_OR, set_exec_EOR, TG68_PC_dec, c_out, OP1out, micro_state) + BEGIN + TG68_PC_br8 <= '0'; + TG68_PC_brw <= '0'; + TG68_PC_nop <= '0'; + setstate <= "00"; + Regwrena <= '0'; + postadd <= '0'; + presub <= '0'; + movem_presub <= '0'; + setaddsub <= '1'; + setaddrlong <= '0'; + setnextpass <= '0'; + regdirectsource <= '0'; + setdisp <= '0'; + setdispbyte <= '0'; + setdispbrief <= '0'; + setbriefext <= '0'; + setgetbrief <= '0'; + longreaddirect <= '0'; + dest_areg <= '0'; + source_areg <= '0'; + data_is_source <= '0'; + write_back <= '0'; + setstackaddr <= '0'; + writePC <= '0'; + writePC_add <= '0'; + set_TG68_PC_dec <= '0'; + set_directPC <= '0'; + set_exec_ADD <= '0'; + set_exec_OR <= '0'; + set_exec_AND <= '0'; + set_exec_EOR <= '0'; + set_exec_MOVE <= '0'; + set_exec_MOVEQ <= '0'; + set_exec_MOVESR <= '0'; + set_exec_ADDQ <= '0'; + set_exec_CMP <= '0'; + set_exec_ROT <= '0'; + set_exec_EXT <= '0'; + set_exec_CPMAW <= '0'; + OP2out_one <= '0'; + ea_to_pc <= '0'; + ea_build <= '0'; + get_ea_now <= '0'; + rot_bits <= "XX"; + set_rot_nop <= '0'; + set_rot_cnt <= "000001"; + set_movem_busy <= '0'; + set_get_movem_mask <= '0'; + save_memaddr <= '0'; + set_mem_addsub <= '0'; + exec_exg <= '0'; + exec_swap <= '0'; + exec_Bits <= '0'; + set_get_bitnumber <= '0'; + dest_hbits <= '0'; + source_lowbits <= '0'; + set_mem_rega <= '0'; + ea_data_OP1 <= '0'; + ea_only <= '0'; + set_direct_data <= '0'; + set_get_extendedOPC <= '0'; + set_exec_tas <= '0'; + OP1out_zero <= '0'; + use_XZFlag <= '0'; + use_XFlag <= '0'; + set_exec_ABCD <= '0'; + set_exec_SBCD <= '0'; + set_exec_MULU <= '0'; + set_exec_DIVU <= '0'; + set_exec_Scc <= '0'; + trap_illegal <='0'; + trap_priv <='0'; + trap_1010 <='0'; + trap_1111 <='0'; + trap_trap <='0'; + trap_trapv <= '0'; + trapmake <='0'; + set_vectoraddr <='0'; + writeSR <= '0'; + set_directSR <= '0'; + set_directCCR <= '0'; + set_stop <= '0'; + from_SR <= '0'; + to_SR <= '0'; + from_USP <= '0'; + to_USP <= '0'; + illegal_write_mode <= '0'; + illegal_read_mode <= '0'; + illegal_byteaddr <= '0'; + no_Flags <= '0'; + set_PCmarker <= '0'; + use_SP <= '0'; + set_Z_error <= '0'; + wait_mem_byte <= '0'; + set_movepl <= '0'; + set_movepw <= '0'; + + trap_chk <= '0'; + next_micro_state <= idle; + +------------------------------------------------------------------------------ +--Sourcepass +------------------------------------------------------------------------------ + IF ea_only='0' AND get_ea_now='1' THEN + setstate <= "10"; + END IF; + + IF ea_build='1' THEN + CASE opcode(5 downto 3) IS --source + WHEN "010"|"011"|"100" => -- -(An)+ + get_ea_now <='1'; + setnextpass <= '1'; + IF opcode(4)='1' THEN + set_mem_rega <= '1'; + ELSE + set_mem_addsub <= '1'; + END IF; + IF opcode(3)='1' THEN --(An)+ + postadd <= '1'; + IF opcode(2 downto 0)="111" THEN + use_SP <= '1'; + END IF; + END IF; + IF opcode(5)='1' THEN -- -(An) + presub <= '1'; + IF opcode(2 downto 0)="111" THEN + use_SP <= '1'; + END IF; + END IF; + IF opcode(4 downto 3)/="10" THEN + regwrena <= '1'; + END IF; + WHEN "101" => --(d16,An) + next_micro_state <= ld_dAn1; + setgetbrief <='1'; + set_mem_regA <= '1'; + WHEN "110" => --(d8,An,Xn) + next_micro_state <= ld_AnXn1; + setgetbrief <='1'; + set_mem_regA <= '1'; + WHEN "111" => + CASE opcode(2 downto 0) IS + WHEN "000" => --(xxxx).w + next_micro_state <= ld_nn; + WHEN "001" => --(xxxx).l + longreaddirect <= '1'; + next_micro_state <= ld_nn; + WHEN "010" => --(d16,PC) + next_micro_state <= ld_dAn1; + setgetbrief <= '1'; + set_PCmarker <= '1'; + WHEN "011" => --(d8,PC,Xn) + next_micro_state <= ld_AnXn1; + setgetbrief <= '1'; + set_PCmarker <= '1'; + WHEN "100" => --#data + setnextpass <= '1'; + set_direct_data <= '1'; + IF datatype="10" THEN + longreaddirect <= '1'; + END IF; + WHEN OTHERS => + END CASE; + WHEN OTHERS => + END CASE; + END IF; +------------------------------------------------------------------------------ +--prepere opcode +------------------------------------------------------------------------------ + CASE opcode(7 downto 6) IS + WHEN "00" => datatype <= "00"; --Byte + WHEN "01" => datatype <= "01"; --Word + WHEN OTHERS => datatype <= "10"; --Long + END CASE; + + IF execOPC='1' AND endOPC='0' AND exec_write_back='1' THEN + setstate <="11"; + END IF; + +------------------------------------------------------------------------------ +--test illegal mode +------------------------------------------------------------------------------ + IF (opcode(5 downto 3)="111" AND opcode(2 downto 1)/="00") OR (opcode(5 downto 3)="001" AND datatype="00") THEN + illegal_write_mode <= '1'; + END IF; + IF (opcode(5 downto 2)="1111" AND opcode(1 downto 0)/="00") OR (opcode(5 downto 3)="001" AND datatype="00") THEN + illegal_read_mode <= '1'; + END IF; + IF opcode(5 downto 3)="001" AND datatype="00" THEN + illegal_byteaddr <= '1'; + END IF; + + + CASE opcode(15 downto 12) IS +-- 0000 ---------------------------------------------------------------------------- + WHEN "0000" => + IF opcode(8)='1' AND opcode(5 downto 3)="001" THEN --movep + datatype <= "00"; --Byte + use_SP <= '1'; + no_Flags <='1'; + IF opcode(7)='0' THEN + set_exec_move <= '1'; + set_movepl <= '1'; + END IF; + IF decodeOPC='1' THEN + IF opcode(7)='0' THEN + set_direct_data <= '1'; + END IF; + next_micro_state <= movep1; + setgetbrief <='1'; + set_mem_regA <= '1'; + END IF; + IF opcode(7)='0' AND endOPC='1' THEN + IF opcode(6)='1' THEN + datatype <= "10"; --Long + ELSE + datatype <= "01"; --Word + END IF; + dest_hbits <='1'; + regwrena <= '1'; + END IF; + ELSE + IF opcode(8)='1' OR opcode(11 downto 8)="1000" THEN --Bits + IF execOPC='1' AND get_extendedOPC='0' THEN + IF opcode(7 downto 6)/="00" AND endOPC='1' THEN + regwrena <= '1'; + END IF; + exec_Bits <= '1'; + ea_data_OP1 <= '1'; + END IF; +-- IF get_extendedOPC='1' THEN +-- datatype <= "01"; --Word +-- ELS + IF opcode(5 downto 4)="00" THEN + datatype <= "10"; --Long + ELSE + datatype <= "00"; --Byte + IF opcode(7 downto 6)/="00" THEN + write_back <= '1'; + END IF; + END IF; + IF decodeOPC='1' THEN + ea_build <= '1'; + IF opcode(8)='0' THEN + IF opcode(5 downto 4)/="00" THEN --Dn, An + set_get_extendedOPC <= '1'; + END IF; + set_get_bitnumber <= '1'; + END IF; + END IF; + ELSE --andi, ...xxxi + IF opcode(11 downto 8)="0000" THEN --ORI + set_exec_OR <= '1'; + END IF; + IF opcode(11 downto 8)="0010" THEN --ANDI + set_exec_AND <= '1'; + END IF; + IF opcode(11 downto 8)="0100" OR opcode(11 downto 8)="0110" THEN --SUBI, ADDI + set_exec_ADD <= '1'; + END IF; + IF opcode(11 downto 8)="1010" THEN --EORI + set_exec_EOR <= '1'; + END IF; + IF opcode(11 downto 8)="1100" THEN --CMPI + set_exec_CMP <= '1'; + ELSIF trapmake='0' THEN + write_back <= '1'; + END IF; + IF opcode(7)='0' AND opcode(5 downto 0)="111100" AND (set_exec_AND OR set_exec_OR OR set_exec_EOR)='1' THEN --SR +-- IF opcode(7)='0' AND opcode(5 downto 0)="111100" AND (opcode(11 downto 8)="0010" OR opcode(11 downto 8)="0000" OR opcode(11 downto 8)="1010") THEN --SR + IF SVmode='0' AND opcode(6)='1' THEN --SR + trap_priv <= '1'; + trapmake <= '1'; + ELSE + from_SR <= '1'; + to_SR <= '1'; + IF decodeOPC='1' THEN + setnextpass <= '1'; + set_direct_data <= '1'; + END IF; + END IF; + ELSE + IF decodeOPC='1' THEN + IF opcode(11 downto 8)="0010" OR opcode(11 downto 8)="0000" OR opcode(11 downto 8)="0100" --ANDI, ORI, SUBI + OR opcode(11 downto 8)="0110" OR opcode(11 downto 8)="1010" OR opcode(11 downto 8)="1100" THEN --ADDI, EORI, CMPI + -- IF (set_exec_AND OR set_exec_OR OR set_exec_ADD --ANDI, ORI, SUBI + -- OR set_exec_EOR OR set_exec_CMP)='1' THEN --ADDI, EORI, CMPI + + next_micro_state <= andi; + set_direct_data <= '1'; + IF datatype="10" THEN + longreaddirect <= '1'; + END IF; + END IF; + END IF; + + IF execOPC='1' THEN + ea_data_OP1 <= '1'; + IF opcode(11 downto 8)/="1100" THEN --CMPI + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + IF opcode(11 downto 8)="1100" OR opcode(11 downto 8)="0100" THEN --CMPI, SUBI + setaddsub <= '0'; + END IF; + END IF; + END IF; + END IF; + END IF; + +-- 0001, 0010, 0011 ----------------------------------------------------------------- + WHEN "0001"|"0010"|"0011" => --move.b, move.l, move.w + set_exec_MOVE <= '1'; + IF opcode(8 downto 6)="001" THEN + no_Flags <= '1'; + END IF; + IF opcode(5 downto 4)="00" THEN --Dn, An + regdirectsource <= '1'; + END IF; + CASE opcode(13 downto 12) IS + WHEN "01" => datatype <= "00"; --Byte + WHEN "10" => datatype <= "10"; --Long + WHEN OTHERS => datatype <= "01"; --Word + END CASE; + source_lowbits <= '1'; -- Dn=> An=> + IF opcode(3)='1' THEN + source_areg <= '1'; + END IF; + IF getbrief='1' AND nextpass='1' THEN -- =>(d16,An) =>(d8,An,Xn) + set_mem_rega <= '1'; + END IF; + + IF execOPC='1' AND opcode(8 downto 7)="00" THEN + Regwrena <= '1'; + END IF; + + IF nextpass='1' OR execOPC='1' OR opcode(5 downto 4)="00" THEN + dest_hbits <= '1'; + IF opcode(8 downto 6)/="000" THEN + dest_areg <= '1'; + END IF; + END IF; + + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + + IF micro_state=idle AND (nextpass='1' OR (opcode(5 downto 4)="00" AND decodeOPC='1')) THEN + CASE opcode(8 downto 6) IS --destination +-- WHEN "000" => --Dn +-- WHEN "001" => --An + WHEN "010"|"011"|"100" => --destination -(an)+ + IF opcode(7)='1' THEN + set_mem_rega <= '1'; + ELSE + set_mem_addsub <= '1'; + END IF; + IF opcode(6)='1' THEN --(An)+ + postadd <= '1'; + IF opcode(11 downto 9)="111" THEN + use_SP <= '1'; + END IF; + END IF; + IF opcode(8)='1' THEN -- -(An) + presub <= '1'; + IF opcode(11 downto 9)="111" THEN + use_SP <= '1'; + END IF; + END IF; + IF opcode(7 downto 6)/="10" THEN + regwrena <= '1'; + END IF; + setstate <= "11"; + next_micro_state <= nop; + WHEN "101" => --(d16,An) + next_micro_state <= st_dAn1; + set_mem_regA <= '1'; + setgetbrief <= '1'; + WHEN "110" => --(d8,An,Xn) + next_micro_state <= st_AnXn1; + set_mem_regA <= '1'; + setgetbrief <= '1'; + WHEN "111" => + CASE opcode(11 downto 9) IS + WHEN "000" => --(xxxx).w + next_micro_state <= st_nn; + WHEN "001" => --(xxxx).l + longreaddirect <= '1'; + next_micro_state <= st_nn; + WHEN OTHERS => + END CASE; + WHEN OTHERS => + END CASE; + END IF; +-- 0100 ---------------------------------------------------------------------------- + WHEN "0100" => --rts_group + IF opcode(8)='1' THEN --lea + IF opcode(6)='1' THEN --lea + IF opcode(7)='1' THEN + ea_only <= '1'; + IF opcode(5 downto 3)="010" THEN --lea (Am),An + set_exec_move <='1'; + no_Flags <='1'; + dest_areg <= '1'; + dest_hbits <= '1'; + source_lowbits <= '1'; + source_areg <= '1'; + IF execOPC='1' THEN + Regwrena <= '1'; + END IF; + ELSE + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + END IF; + IF get_ea_now='1' THEN + dest_areg <= '1'; + dest_hbits <= '1'; + regwrena <= '1'; + END IF; + ELSE + trap_illegal <= '1'; + trapmake <= '1'; + END IF; + ELSE --chk + IF opcode(7)='1' THEN + set_exec_ADD <= '1'; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + datatype <= "01"; --Word + IF execOPC='1' THEN + setaddsub <= '0'; +--first alternative + ea_data_OP1 <= '1'; + IF c_out(1)='1' OR OP1out(15)='1' OR OP2out(15)='1' THEN + -- trap_chk <= '1'; --first I must change the Trap System + -- trapmake <= '1'; + END IF; +--second alternative +-- IF (c_out(1)='0' AND flag_z(1)='0') OR OP1out(15)='1' OR OP2out(15)='1' THEN +-- -- trap_chk <= '1'; --first I must change the Trap System +-- -- trapmake <= '1'; +-- END IF; +-- dest_hbits <= '1'; +-- source_lowbits <='1'; + END IF; + ELSE + trap_illegal <= '1'; -- chk long for 68020 + trapmake <= '1'; + END IF; + END IF; + ELSE + CASE opcode(11 downto 9) IS + WHEN "000"=> + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF opcode(7 downto 6)="11" THEN --move from SR + set_exec_MOVESR <= '1'; + datatype <= "01"; + write_back <='1'; -- im 68000 wird auch erst gelesen + IF execOPC='1' THEN + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + ELSE --negx + use_XFlag <= '1'; + write_back <='1'; + set_exec_ADD <= '1'; + setaddsub <='0'; + IF execOPC='1' THEN + source_lowbits <= '1'; + OP1out_zero <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + END IF; + WHEN "001"=> + IF opcode(7 downto 6)="11" THEN --move from CCR 68010 + trap_illegal <= '1'; + trapmake <= '1'; + ELSE --clr + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + write_back <='1'; + set_exec_AND <= '1'; + IF execOPC='1' THEN + OP1out_zero <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + END IF; + WHEN "010"=> + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF opcode(7 downto 6)="11" THEN --move to CCR + set_exec_MOVE <= '1'; + datatype <= "01"; + IF execOPC='1' THEN + source_lowbits <= '1'; + to_SR <= '1'; + END IF; + ELSE --neg + write_back <='1'; + set_exec_ADD <= '1'; + setaddsub <='0'; + IF execOPC='1' THEN + source_lowbits <= '1'; + OP1out_zero <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + END IF; + WHEN "011"=> --not, move toSR + IF opcode(7 downto 6)="11" THEN --move to SR + IF SVmode='1' THEN + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + set_exec_MOVE <= '1'; + datatype <= "01"; + IF execOPC='1' THEN + source_lowbits <= '1'; + to_SR <= '1'; + END IF; + ELSE + trap_priv <= '1'; + trapmake <= '1'; + END IF; + ELSE --not + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + write_back <='1'; + set_exec_EOR <= '1'; + IF execOPC='1' THEN + OP2out_one <= '1'; + ea_data_OP1 <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + END IF; + WHEN "100"|"110"=> + IF opcode(7)='1' THEN --movem, ext + IF opcode(5 downto 3)="000" AND opcode(10)='0' THEN --ext + source_lowbits <= '1'; + IF decodeOPC='1' THEN + set_exec_EXT <= '1'; + set_exec_move <= '1'; + END IF; + IF opcode(6)='0' THEN + datatype <= "01"; --WORD + END IF; + IF execOPC='1' THEN + regwrena <= '1'; + END IF; + ELSE --movem +-- IF opcode(11 downto 7)="10001" OR opcode(11 downto 7)="11001" THEN --MOVEM + ea_only <= '1'; + IF decodeOPC='1' THEN + datatype <= "01"; --Word + set_get_movem_mask <='1'; + set_get_extendedOPC <='1'; + + IF opcode(5 downto 3)="010" OR opcode(5 downto 3)="011" OR opcode(5 downto 3)="100" THEN + set_mem_rega <= '1'; + setstate <= "01"; + IF opcode(10)='0' THEN + set_movem_busy <='1'; + ELSE + next_micro_state <= movem; + END IF; + ELSE + ea_build <= '1'; + END IF; + + ELSE + IF opcode(6)='0' THEN + datatype <= "01"; --Word + END IF; + END IF; + IF execOPC='1' THEN + IF opcode(5 downto 3)="100" OR opcode(5 downto 3)="011" THEN + regwrena <= '1'; + save_memaddr <= '1'; + END IF; + END IF; + IF get_ea_now='1' THEN + set_movem_busy <= '1'; + IF opcode(10)='0' THEN + setstate <="01"; + ELSE + setstate <="10"; + END IF; + END IF; + IF opcode(5 downto 3)="100" THEN + movem_presub <= '1'; + END IF; + IF movem_addr='1' THEN + IF opcode(10)='1' THEN + regwrena <= '1'; + END IF; + END IF; + IF movem_busy='1' THEN + IF opcode(10)='0' THEN + setstate <="11"; + ELSE + setstate <="10"; + END IF; + END IF; + END IF; + ELSE + IF opcode(10)='1' THEN --MUL, DIV 68020 + trap_illegal <= '1'; + trapmake <= '1'; + ELSE --pea, swap + IF opcode(6)='1' THEN + datatype <= "10"; + IF opcode(5 downto 3)="000" THEN --swap + IF execOPC='1' THEN + exec_swap <= '1'; + regwrena <= '1'; + END IF; + ELSIF opcode(5 downto 3)="001" THEN --bkpt + + ELSE --pea + ea_only <= '1'; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF nextpass='1' AND micro_state=idle THEN + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + setstate <="11"; + next_micro_state <= nop; + END IF; + IF get_ea_now='1' THEN + setstate <="01"; + END IF; + END IF; + ELSE --nbcd + IF decodeOPC='1' THEN --nbcd + ea_build <= '1'; + END IF; + use_XFlag <= '1'; + write_back <='1'; + set_exec_ADD <= '1'; + set_exec_SBCD <= '1'; + IF execOPC='1' THEN + source_lowbits <= '1'; + OP1out_zero <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + END IF; + END IF; + END IF; + + WHEN "101"=> --tst, tas + IF opcode(7 downto 2)="111111" THEN --4AFC illegal + trap_illegal <= '1'; + trapmake <= '1'; + ELSE + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF execOPC='1' THEN + dest_hbits <= '1'; --for Flags + source_lowbits <= '1'; + -- IF opcode(3)='1' THEN --MC68020... + -- source_areg <= '1'; + -- END IF; + END IF; + set_exec_MOVE <= '1'; + IF opcode(7 downto 6)="11" THEN --tas + set_exec_tas <= '1'; + write_back <= '1'; + datatype <= "00"; --Byte + IF execOPC='1' AND endOPC='1' THEN + regwrena <= '1'; + END IF; + END IF; + END IF; +-- WHEN "110"=> + WHEN "111"=> --4EXX + IF opcode(7)='1' THEN --jsr, jmp + datatype <= "10"; + ea_only <= '1'; + IF nextpass='1' AND micro_state=idle THEN + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + setstate <="11"; + next_micro_state <= nop; + END IF; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF get_ea_now='1' THEN --jsr + IF opcode(6)='0' THEN + setstate <="01"; + END IF; + ea_to_pc <= '1'; + IF opcode(5 downto 1)="11100" THEN + writePC_add <= '1'; + ELSE + writePC <= '1'; + END IF; + END IF; + ELSE -- + CASE opcode(6 downto 0) IS + WHEN "1000000"|"1000001"|"1000010"|"1000011"|"1000100"|"1000101"|"1000110"|"1000111"| --trap + "1001000"|"1001001"|"1001010"|"1001011"|"1001100"|"1001101"|"1001110"|"1001111" => --trap + trap_trap <='1'; + trapmake <= '1'; + WHEN "1010000"|"1010001"|"1010010"|"1010011"|"1010100"|"1010101"|"1010110"|"1010111" => --link + datatype <= "10"; + IF decodeOPC='1' THEN + next_micro_state <= link; + set_exec_MOVE <= '1'; --für displacement + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + source_lowbits <= '1'; + source_areg <= '1'; + END IF; + IF execOPC='1' THEN + setstackaddr <='1'; + regwrena <= '1'; + END IF; + + WHEN "1011000"|"1011001"|"1011010"|"1011011"|"1011100"|"1011101"|"1011110"|"1011111" => --unlink + datatype <= "10"; + IF decodeOPC='1' THEN + setstate <= "10"; + set_mem_rega <= '1'; + ELSIF execOPC='1' THEN + regwrena <= '1'; + exec_exg <= '1'; + ELSE + setstackaddr <='1'; + regwrena <= '1'; + get_ea_now <= '1'; + ea_only <= '1'; + END IF; + + WHEN "1100000"|"1100001"|"1100010"|"1100011"|"1100100"|"1100101"|"1100110"|"1100111" => --move An,USP + IF SVmode='1' THEN + no_Flags <= '1'; + to_USP <= '1'; + setstackaddr <= '1'; + source_lowbits <= '1'; + source_areg <= '1'; + set_exec_MOVE <= '1'; + datatype <= "10"; + IF execOPC='1' THEN + regwrena <= '1'; + END IF; + ELSE + trap_priv <= '1'; + trapmake <= '1'; + END IF; + WHEN "1101000"|"1101001"|"1101010"|"1101011"|"1101100"|"1101101"|"1101110"|"1101111" => --move USP,An + IF SVmode='1' THEN + no_Flags <= '1'; + from_USP <= '1'; + set_exec_MOVE <= '1'; + datatype <= "10"; + IF execOPC='1' THEN + regwrena <= '1'; + END IF; + ELSE + trap_priv <= '1'; + trapmake <= '1'; + END IF; + + WHEN "1110000" => --reset + IF SVmode='0' THEN + trap_priv <= '1'; + trapmake <= '1'; + END IF; + + WHEN "1110001" => --nop + + WHEN "1110010" => --stop + IF SVmode='0' THEN + trap_priv <= '1'; + trapmake <= '1'; + ELSE + IF decodeOPC='1' THEN + setnextpass <= '1'; + set_directSR <= '1'; + set_stop <= '1'; + END IF; + END IF; + + WHEN "1110011" => --rte + IF SVmode='1' THEN + IF decodeOPC='1' THEN + datatype <= "01"; + setstate <= "10"; + postadd <= '1'; + setstackaddr <= '1'; + set_mem_rega <= '1'; + set_directSR <= '1'; + next_micro_state <= rte; + END IF; + ELSE + trap_priv <= '1'; + trapmake <= '1'; + END IF; + + WHEN "1110101" => --rts + IF decodeOPC='1' THEN + datatype <= "10"; + setstate <= "10"; + postadd <= '1'; + setstackaddr <= '1'; + set_mem_rega <= '1'; + set_directPC <= '1'; + next_micro_state <= nop; + END IF; + + WHEN "1110110" => --trapv + IF Flags(1)='1' THEN + trap_trapv <= '1'; + trapmake <= '1'; + END IF; + + WHEN "1110111" => --rtr + IF decodeOPC='1' THEN + datatype <= "01"; + setstate <= "10"; + postadd <= '1'; + setstackaddr <= '1'; + set_mem_rega <= '1'; + set_directCCR <= '1'; + next_micro_state <= rte; + END IF; + + + WHEN OTHERS => + trap_illegal <= '1'; + trapmake <= '1'; + END CASE; + END IF; + WHEN OTHERS => null; + END CASE; + END IF; + +-- 0101 ---------------------------------------------------------------------------- + WHEN "0101" => --subq, addq + + IF opcode(7 downto 6)="11" THEN --dbcc + IF opcode(5 downto 3)="001" THEN --dbcc + datatype <= "01"; --Word + IF decodeOPC='1' THEN + next_micro_state <= nop; + OP2out_one <= '1'; + IF condition='0' THEN + Regwrena <= '1'; + IF c_in(2)='1' THEN + next_micro_state <= dbcc1; + END IF; + END IF; + data_is_source <= '1'; + END IF; + ELSE --Scc + datatype <= "00"; --Byte + write_back <= '1'; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF condition='0' THEN + set_exec_Scc <= '1'; + END IF; + IF execOPC='1' THEN + IF condition='1' THEN + OP2out_one <= '1'; + exec_EXG <= '1'; + ELSE + OP1out_zero <= '1'; + END IF; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + END IF; + ELSE --addq, subq + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF opcode(5 downto 3)="001" THEN + no_Flags <= '1'; + END IF; + write_back <= '1'; + set_exec_ADDQ <= '1'; + set_exec_ADD <= '1'; + IF execOPC='1' THEN + ea_data_OP1 <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + IF opcode(8)='1' THEN + setaddsub <= '0'; + END IF; + END IF; + END IF; + +-- 0110 ---------------------------------------------------------------------------- + WHEN "0110" => --bra,bsr,bcc + datatype <= "10"; + + IF micro_state=idle THEN + IF opcode(11 downto 8)="0001" THEN --bsr + IF opcode(7 downto 0)="00000000" THEN + next_micro_state <= bsr1; + ELSE + next_micro_state <= bsr2; + setstate <= "01"; + END IF; + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + ELSE --bra + IF opcode(7 downto 0)="00000000" THEN + next_micro_state <= bra1; + END IF; + IF condition='1' THEN + TG68_PC_br8 <= '1'; + END IF; + END IF; + END IF; + +-- 0111 ---------------------------------------------------------------------------- + WHEN "0111" => --moveq + IF opcode(8)='0' THEN + IF trap_interrupt='0' THEN + datatype <= "10"; --Long + Regwrena <= '1'; + set_exec_MOVEQ <= '1'; + set_exec_MOVE <= '1'; + dest_hbits <= '1'; + END IF; + ELSE + trap_illegal <= '1'; + trapmake <= '1'; + END IF; + +-- 1000 ---------------------------------------------------------------------------- + WHEN "1000" => --or + IF opcode(7 downto 6)="11" THEN --divu, divs + IF opcode(5 downto 4)="00" THEN --Dn, An + regdirectsource <= '1'; + END IF; + IF (micro_state=idle AND nextpass='1') OR (opcode(5 downto 4)="00" AND decodeOPC='1') THEN + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div1; + END IF; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF execOPC='1' AND z_error='0' AND set_V_Flag='0' THEN + regwrena <= '1'; + END IF; + IF (micro_state/=idle AND nextpass='1') OR execOPC='1' THEN + dest_hbits <= '1'; + source_lowbits <='1'; + ELSE + datatype <= "01"; + END IF; + + + ELSIF opcode(8)='1' AND opcode(5 downto 4)="00" THEN --sbcd, pack , unpack + IF opcode(7 downto 6)="00" THEN --sbcd + use_XZFlag <= '1'; + set_exec_ADD <= '1'; + set_exec_SBCD <= '1'; + IF opcode(3)='1' THEN + write_back <= '1'; + IF decodeOPC='1' THEN + set_direct_data <= '1'; + setstate <= "10"; + set_mem_addsub <= '1'; + presub <= '1'; + next_micro_state <= op_AxAy; + END IF; + END IF; + IF execOPC='1' THEN + ea_data_OP1 <= '1'; + dest_hbits <= '1'; + source_lowbits <='1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + ELSE --pack, unpack + trap_illegal <= '1'; + trapmake <= '1'; + END IF; + ELSE --or + set_exec_OR <= '1'; + IF opcode(8)='1' THEN + write_back <= '1'; + END IF; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF execOPC='1' THEN + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + IF opcode(8)='1' THEN + ea_data_OP1 <= '1'; + ELSE + dest_hbits <= '1'; + source_lowbits <='1'; + IF opcode(3)='1' THEN + source_areg <= '1'; + END IF; + END IF; + END IF; + END IF; + +-- 1001, 1101 ----------------------------------------------------------------------- + WHEN "1001"|"1101" => --sub, add + set_exec_ADD <= '1'; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF opcode(8 downto 6)="011" THEN --adda.w, suba.w + datatype <= "01"; --Word + END IF; + IF execOPC='1' THEN + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + IF opcode(14)='0' THEN + setaddsub <= '0'; + END IF; + END IF; + IF opcode(8)='1' AND opcode(5 downto 4)="00" AND opcode(7 downto 6)/="11" THEN --addx, subx + use_XZFlag <= '1'; + IF opcode(3)='1' THEN + write_back <= '1'; + IF decodeOPC='1' THEN + set_direct_data <= '1'; + setstate <= "10"; + set_mem_addsub <= '1'; + presub <= '1'; + next_micro_state <= op_AxAy; + END IF; + END IF; + IF execOPC='1' THEN + ea_data_OP1 <= '1'; + dest_hbits <= '1'; + source_lowbits <='1'; + END IF; + ELSE --sub, add + IF opcode(8)='1' AND opcode(7 downto 6)/="11" THEN + write_back <= '1'; + END IF; + IF execOPC='1' THEN + IF opcode(7 downto 6)="11" THEN --adda, suba + no_Flags <= '1'; + dest_areg <='1'; + dest_hbits <= '1'; + source_lowbits <='1'; + IF opcode(3)='1' THEN + source_areg <= '1'; + END IF; + ELSE + IF opcode(8)='1' THEN + ea_data_OP1 <= '1'; + ELSE + dest_hbits <= '1'; + source_lowbits <='1'; + IF opcode(3)='1' THEN + source_areg <= '1'; + END IF; + END IF; + END IF; + END IF; + END IF; + +-- 1010 ---------------------------------------------------------------------------- + WHEN "1010" => --Trap 1010 + trap_1010 <= '1'; + trapmake <= '1'; +-- 1011 ---------------------------------------------------------------------------- + WHEN "1011" => --eor, cmp + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF opcode(8 downto 6)="011" THEN --cmpa.w + datatype <= "01"; --Word + set_exec_CPMAW <= '1'; + END IF; + IF opcode(8)='1' AND opcode(5 downto 3)="001" AND opcode(7 downto 6)/="11" THEN --cmpm + set_exec_CMP <= '1'; + IF decodeOPC='1' THEN + set_direct_data <= '1'; + setstate <= "10"; + set_mem_rega <= '1'; + postadd <= '1'; + next_micro_state <= cmpm; + END IF; + IF execOPC='1' THEN + ea_data_OP1 <= '1'; + setaddsub <= '0'; + END IF; + ELSE --sub, add + IF opcode(8)='1' AND opcode(7 downto 6)/="11" THEN --eor + set_exec_EOR <= '1'; + write_back <= '1'; + ELSE --cmp + set_exec_CMP <= '1'; + END IF; + + IF execOPC='1' THEN + IF opcode(8)='1' AND opcode(7 downto 6)/="11" THEN --eor + ea_data_OP1 <= '1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + ELSE --cmp + source_lowbits <='1'; + IF opcode(3)='1' THEN + source_areg <= '1'; + END IF; + IF opcode(7 downto 6)="11" THEN --cmpa + dest_areg <='1'; + END IF; + dest_hbits <= '1'; + setaddsub <= '0'; + END IF; + END IF; + END IF; + +-- 1100 ---------------------------------------------------------------------------- + WHEN "1100" => --and, exg + IF opcode(7 downto 6)="11" THEN --mulu, muls + IF opcode(5 downto 4)="00" THEN --Dn, An + regdirectsource <= '1'; + END IF; + IF (micro_state=idle AND nextpass='1') OR (opcode(5 downto 4)="00" AND decodeOPC='1') THEN + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul1; + END IF; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + IF execOPC='1' THEN + regwrena <= '1'; + END IF; + IF (micro_state/=idle AND nextpass='1') OR execOPC='1' THEN + dest_hbits <= '1'; + source_lowbits <='1'; + ELSE + datatype <= "01"; + END IF; + + ELSIF opcode(8)='1' AND opcode(5 downto 4)="00" THEN --exg, abcd + IF opcode(7 downto 6)="00" THEN --abcd + use_XZFlag <= '1'; +-- datatype <= "00"; --ist schon default + set_exec_ADD <= '1'; + set_exec_ABCD <= '1'; + IF opcode(3)='1' THEN + write_back <= '1'; + IF decodeOPC='1' THEN + set_direct_data <= '1'; + setstate <= "10"; + set_mem_addsub <= '1'; + presub <= '1'; + next_micro_state <= op_AxAy; + END IF; + END IF; + IF execOPC='1' THEN + ea_data_OP1 <= '1'; + dest_hbits <= '1'; + source_lowbits <='1'; + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + END IF; + ELSE --exg + datatype <= "10"; + regwrena <= '1'; + IF opcode(6)='1' AND opcode(3)='1' THEN + dest_areg <= '1'; + source_areg <= '1'; + END IF; + IF decodeOPC='1' THEN + set_mem_rega <= '1'; + exec_exg <= '1'; + ELSE + save_memaddr <= '1'; + dest_hbits <= '1'; + END IF; + END IF; + ELSE --and + set_exec_AND <= '1'; + IF opcode(8)='1' THEN + write_back <= '1'; + END IF; + IF decodeOPC='1' THEN + ea_build <= '1'; + END IF; + + IF execOPC='1' THEN + IF endOPC='1' THEN + Regwrena <= '1'; + END IF; + IF opcode(8)='1' THEN + ea_data_OP1 <= '1'; + ELSE + dest_hbits <= '1'; + source_lowbits <='1'; + IF opcode(3)='1' THEN + source_areg <= '1'; + END IF; + END IF; + END IF; + END IF; + +-- 1110 ---------------------------------------------------------------------------- + WHEN "1110" => --rotation + set_exec_ROT <= '1'; + IF opcode(7 downto 6)="11" THEN + datatype <= "01"; + rot_bits <= opcode(10 downto 9); + ea_data_OP1 <= '1'; + write_back <= '1'; + ELSE + rot_bits <= opcode(4 downto 3); + data_is_source <= '1'; + END IF; + + IF decodeOPC='1' THEN + IF opcode(7 downto 6)="11" THEN + ea_build <= '1'; + ELSE + IF opcode(5)='1' THEN + IF OP2out(5 downto 0)/="000000" THEN + set_rot_cnt <= OP2out(5 downto 0); + ELSE + set_rot_nop <= '1'; + END IF; + ELSE + set_rot_cnt(2 downto 0) <= opcode(11 downto 9); + IF opcode(11 downto 9)="000" THEN + set_rot_cnt(3) <='1'; + ELSE + set_rot_cnt(3) <='0'; + END IF; + END IF; + END IF; + END IF; + IF opcode(7 downto 6)/="11" THEN + IF execOPC='1' AND rot_nop='0' THEN + Regwrena <= '1'; + set_rot_cnt <= rot_cnt-1; + END IF; + END IF; + +-- ---------------------------------------------------------------------------- + WHEN OTHERS => + trap_1111 <= '1'; + trapmake <= '1'; + + END CASE; + +-- END PROCESS; + +----------------------------------------------------------------------------- +-- execute microcode +----------------------------------------------------------------------------- +--PROCESS (micro_state) +-- BEGIN + IF Z_error='1' THEN -- divu by zero + trapmake <= '1'; --wichtig für USP + IF trapd='0' THEN + writePC <= '1'; + END IF; + END IF; + + IF trapmake='1' AND trapd='0' THEN + next_micro_state <= trap1; + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + setstate <= "11"; + datatype <= "10"; + END IF; + + IF interrupt='1' THEN + next_micro_state <= int1; + setstate <= "10"; +-- datatype <= "01"; --wirkt sich auf Flags aus + END IF; + + IF reset='0' THEN + micro_state <= init1; + ELSIF rising_edge(clk) THEN + IF clkena='1' THEN + trapd <= trapmake; + IF fetchOPC='1' THEN + micro_state <= idle; + ELSE + micro_state <= next_micro_state; + END IF; + END IF; + END IF; + CASE micro_state IS + WHEN ld_nn => -- (nnnn).w/l=> + get_ea_now <='1'; + setnextpass <= '1'; + setaddrlong <= '1'; + + WHEN st_nn => -- =>(nnnn).w/l + setstate <= "11"; + setaddrlong <= '1'; + next_micro_state <= nop; + + WHEN ld_dAn1 => -- d(An)=>, --d(PC)=> + setstate <= "01"; + next_micro_state <= ld_dAn2; + WHEN ld_dAn2 => -- d(An)=>, --d(PC)=> + get_ea_now <='1'; + setdisp <= '1'; --word + setnextpass <= '1'; + + WHEN ld_AnXn1 => -- d(An,Xn)=>, --d(PC,Xn)=> + setstate <= "01"; + next_micro_state <= ld_AnXn2; + WHEN ld_AnXn2 => -- d(An,Xn)=>, --d(PC,Xn)=> + setdisp <= '1'; --byte + setdispbyte <= '1'; + setstate <= "01"; + setbriefext <= '1'; + next_micro_state <= ld_AnXn3; + WHEN ld_AnXn3 => + get_ea_now <='1'; + setdisp <= '1'; --brief + setdispbrief <= '1'; + setnextpass <= '1'; + + WHEN st_dAn1 => -- =>d(An) + setstate <= "01"; + next_micro_state <= st_dAn2; + WHEN st_dAn2 => -- =>d(An) + setstate <= "11"; + setdisp <= '1'; --word + next_micro_state <= nop; + + WHEN st_AnXn1 => -- =>d(An,Xn) + setstate <= "01"; + next_micro_state <= st_AnXn2; + WHEN st_AnXn2 => -- =>d(An,Xn) + setdisp <= '1'; --byte + setdispbyte <= '1'; + setstate <= "01"; + setbriefext <= '1'; + next_micro_state <= st_AnXn3; + WHEN st_AnXn3 => + setstate <= "11"; + setdisp <= '1'; --brief + setdispbrief <= '1'; + next_micro_state <= nop; + + WHEN bra1 => --bra + IF condition='1' THEN + TG68_PC_br8 <= '1'; --pc+0000 + setstate <= "01"; + next_micro_state <= bra2; + END IF; + WHEN bra2 => --bra + TG68_PC_brw <= '1'; + + WHEN bsr1 => --bsr + set_TG68_PC_dec <= '1'; --in 2 Takten -2 + setstate <= "01"; + next_micro_state <= bsr2; + WHEN bsr2 => --bsr + IF TG68_PC_dec(0)='1' THEN + TG68_PC_brw <= '1'; + ELSE + TG68_PC_br8 <= '1'; + END IF; + writePC <= '1'; + setstate <= "11"; + next_micro_state <= nop; + + WHEN dbcc1 => --dbcc + TG68_PC_nop <= '1'; + setstate <= "01"; + next_micro_state <= dbcc2; + WHEN dbcc2 => --dbcc + TG68_PC_brw <= '1'; + + WHEN movem => --movem + set_movem_busy <='1'; + setstate <= "10"; + + WHEN andi => --andi + IF opcode(5 downto 4)/="00" THEN + ea_build <= '1'; + setnextpass <= '1'; + END IF; + + WHEN op_AxAy => -- op -(Ax),-(Ay) + presub <= '1'; + dest_hbits <= '1'; + dest_areg <= '1'; + set_mem_addsub <= '1'; + setstate <= "10"; + + WHEN cmpm => -- cmpm (Ay)+,(Ax)+ + postadd <= '1'; + dest_hbits <= '1'; + dest_areg <= '1'; + set_mem_rega <= '1'; + setstate <= "10"; + + WHEN link => -- link + setstate <="11"; + save_memaddr <= '1'; + regwrena <= '1'; + + WHEN int1 => -- interrupt + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + setstate <= "11"; + datatype <= "10"; + next_micro_state <= int2; + WHEN int2 => -- interrupt + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + setstate <= "11"; + datatype <= "01"; + writeSR <= '1'; + next_micro_state <= int3; + WHEN int3 => -- interrupt + set_vectoraddr <= '1'; + datatype <= "10"; + set_directPC <= '1'; + setstate <= "10"; + next_micro_state <= int4; + WHEN int4 => -- interrupt + datatype <= "10"; + + WHEN rte => -- RTE + datatype <= "10"; + setstate <= "10"; + postadd <= '1'; + setstackaddr <= '1'; + set_mem_rega <= '1'; + set_directPC <= '1'; + next_micro_state <= nop; + + WHEN trap1 => -- TRAP + presub <= '1'; + setstackaddr <='1'; + set_mem_addsub <= '1'; + setstate <= "11"; + datatype <= "01"; + writeSR <= '1'; + next_micro_state <= trap2; + WHEN trap2 => -- TRAP + set_vectoraddr <= '1'; + datatype <= "10"; + set_directPC <= '1'; +-- longreaddirect <= '1'; + setstate <= "10"; + next_micro_state <= trap3; + WHEN trap3 => -- TRAP + datatype <= "10"; + + WHEN movep1 => -- MOVEP d(An) + setstate <= "01"; + IF opcode(6)='1' THEN + set_movepl <= '1'; + END IF; + next_micro_state <= movep2; + WHEN movep2 => + setdisp <= '1'; + IF opcode(7)='0' THEN + setstate <= "10"; + ELSE + setstate <= "11"; + wait_mem_byte <= '1'; + END IF; + next_micro_state <= movep3; + WHEN movep3 => + IF opcode(6)='1' THEN + set_movepw <= '1'; + next_micro_state <= movep4; + END IF; + IF opcode(7)='0' THEN + setstate <= "10"; + ELSE + setstate <= "11"; + END IF; + WHEN movep4 => + IF opcode(7)='0' THEN + setstate <= "10"; + ELSE + wait_mem_byte <= '1'; + setstate <= "11"; + END IF; + next_micro_state <= movep5; + WHEN movep5 => + IF opcode(7)='0' THEN + setstate <= "10"; + ELSE + setstate <= "11"; + END IF; + + WHEN init1 => -- init SP + longreaddirect <= '1'; + next_micro_state <= init2; + WHEN init2 => -- init PC + get_ea_now <='1'; --\ + ea_only <= '1'; --- OP1in <= memaddr_in + setaddrlong <= '1'; -- memaddr_in <= data_read + regwrena <= '1'; + setstackaddr <='1'; -- dest_addr <= SP + set_directPC <= '1'; + longreaddirect <= '1'; + next_micro_state <= nop; + + WHEN mul1 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul2; + WHEN mul2 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul3; + WHEN mul3 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul4; + WHEN mul4 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul5; + WHEN mul5 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul6; + WHEN mul6 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul7; + WHEN mul7 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul8; + WHEN mul8 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul9; + WHEN mul9 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul10; + WHEN mul10 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul11; + WHEN mul11 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul12; + WHEN mul12 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul13; + WHEN mul13 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul14; + WHEN mul14 => -- mulu + set_exec_MULU <= '1'; + setstate <="01"; + next_micro_state <= mul15; + WHEN mul15 => -- mulu + set_exec_MULU <= '1'; + + WHEN div1 => -- divu + IF OP2out(15 downto 0)=x"0000" THEN --div zero + set_Z_error <= '1'; + ELSE + set_exec_DIVU <= '1'; + next_micro_state <= div2; + END IF; + setstate <="01"; + WHEN div2 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div3; + WHEN div3 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div4; + WHEN div4 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div5; + WHEN div5 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div6; + WHEN div6 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div7; + WHEN div7 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div8; + WHEN div8 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div9; + WHEN div9 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div10; + WHEN div10 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div11; + WHEN div11 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div12; + WHEN div12 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div13; + WHEN div13 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div14; + WHEN div14 => -- divu + set_exec_DIVU <= '1'; + setstate <="01"; + next_micro_state <= div15; + WHEN div15 => -- divu + set_exec_DIVU <= '1'; + + WHEN OTHERS => null; + END CASE; + END PROCESS; + +----------------------------------------------------------------------------- +-- Conditions +----------------------------------------------------------------------------- +PROCESS (opcode, Flags) + BEGIN + CASE opcode(11 downto 8) IS + WHEN X"0" => condition <= '1'; + WHEN X"1" => condition <= '0'; + WHEN X"2" => condition <= NOT Flags(0) AND NOT Flags(2); + WHEN X"3" => condition <= Flags(0) OR Flags(2); + WHEN X"4" => condition <= NOT Flags(0); + WHEN X"5" => condition <= Flags(0); + WHEN X"6" => condition <= NOT Flags(2); + WHEN X"7" => condition <= Flags(2); + WHEN X"8" => condition <= NOT Flags(1); + WHEN X"9" => condition <= Flags(1); + WHEN X"a" => condition <= NOT Flags(3); + WHEN X"b" => condition <= Flags(3); + WHEN X"c" => condition <= (Flags(3) AND Flags(1)) OR (NOT Flags(3) AND NOT Flags(1)); + WHEN X"d" => condition <= (Flags(3) AND NOT Flags(1)) OR (NOT Flags(3) AND Flags(1)); + WHEN X"e" => condition <= (Flags(3) AND Flags(1) AND NOT Flags(2)) OR (NOT Flags(3) AND NOT Flags(1) AND NOT Flags(2)); + WHEN X"f" => condition <= (Flags(3) AND NOT Flags(1)) OR (NOT Flags(3) AND Flags(1)) OR Flags(2); + WHEN OTHERS => null; + END CASE; + END PROCESS; + +----------------------------------------------------------------------------- +-- Bits +----------------------------------------------------------------------------- +PROCESS (opcode, OP1out, OP2out, one_bit_in, one_bit_out, bit_Number, bit_number_reg) + BEGIN + CASE opcode(7 downto 6) IS + WHEN "00" => --btst + one_bit_out <= one_bit_in; + WHEN "01" => --bchg + one_bit_out <= NOT one_bit_in; + WHEN "10" => --bclr + one_bit_out <= '0'; + WHEN "11" => --bset + one_bit_out <= '1'; + WHEN OTHERS => null; + END CASE; + + IF opcode(8)='0' THEN + IF opcode(5 downto 4)="00" THEN + bit_number <= bit_number_reg(4 downto 0); + ELSE + bit_number <= "00"&bit_number_reg(2 downto 0); + END IF; + ELSE + IF opcode(5 downto 4)="00" THEN + bit_number <= OP2out(4 downto 0); + ELSE + bit_number <= "00"&OP2out(2 downto 0); + END IF; + END IF; + + bits_out <= OP1out; + CASE bit_Number IS + WHEN "00000" => one_bit_in <= OP1out(0); + bits_out(0) <= one_bit_out; + WHEN "00001" => one_bit_in <= OP1out(1); + bits_out(1) <= one_bit_out; + WHEN "00010" => one_bit_in <= OP1out(2); + bits_out(2) <= one_bit_out; + WHEN "00011" => one_bit_in <= OP1out(3); + bits_out(3) <= one_bit_out; + WHEN "00100" => one_bit_in <= OP1out(4); + bits_out(4) <= one_bit_out; + WHEN "00101" => one_bit_in <= OP1out(5); + bits_out(5) <= one_bit_out; + WHEN "00110" => one_bit_in <= OP1out(6); + bits_out(6) <= one_bit_out; + WHEN "00111" => one_bit_in <= OP1out(7); + bits_out(7) <= one_bit_out; + WHEN "01000" => one_bit_in <= OP1out(8); + bits_out(8) <= one_bit_out; + WHEN "01001" => one_bit_in <= OP1out(9); + bits_out(9) <= one_bit_out; + WHEN "01010" => one_bit_in <= OP1out(10); + bits_out(10) <= one_bit_out; + WHEN "01011" => one_bit_in <= OP1out(11); + bits_out(11) <= one_bit_out; + WHEN "01100" => one_bit_in <= OP1out(12); + bits_out(12) <= one_bit_out; + WHEN "01101" => one_bit_in <= OP1out(13); + bits_out(13) <= one_bit_out; + WHEN "01110" => one_bit_in <= OP1out(14); + bits_out(14) <= one_bit_out; + WHEN "01111" => one_bit_in <= OP1out(15); + bits_out(15) <= one_bit_out; + WHEN "10000" => one_bit_in <= OP1out(16); + bits_out(16) <= one_bit_out; + WHEN "10001" => one_bit_in <= OP1out(17); + bits_out(17) <= one_bit_out; + WHEN "10010" => one_bit_in <= OP1out(18); + bits_out(18) <= one_bit_out; + WHEN "10011" => one_bit_in <= OP1out(19); + bits_out(19) <= one_bit_out; + WHEN "10100" => one_bit_in <= OP1out(20); + bits_out(20) <= one_bit_out; + WHEN "10101" => one_bit_in <= OP1out(21); + bits_out(21) <= one_bit_out; + WHEN "10110" => one_bit_in <= OP1out(22); + bits_out(22) <= one_bit_out; + WHEN "10111" => one_bit_in <= OP1out(23); + bits_out(23) <= one_bit_out; + WHEN "11000" => one_bit_in <= OP1out(24); + bits_out(24) <= one_bit_out; + WHEN "11001" => one_bit_in <= OP1out(25); + bits_out(25) <= one_bit_out; + WHEN "11010" => one_bit_in <= OP1out(26); + bits_out(26) <= one_bit_out; + WHEN "11011" => one_bit_in <= OP1out(27); + bits_out(27) <= one_bit_out; + WHEN "11100" => one_bit_in <= OP1out(28); + bits_out(28) <= one_bit_out; + WHEN "11101" => one_bit_in <= OP1out(29); + bits_out(29) <= one_bit_out; + WHEN "11110" => one_bit_in <= OP1out(30); + bits_out(30) <= one_bit_out; + WHEN "11111" => one_bit_in <= OP1out(31); + bits_out(31) <= one_bit_out; + WHEN OTHERS => null; + END CASE; + END PROCESS; + +----------------------------------------------------------------------------- +-- Rotation +----------------------------------------------------------------------------- +PROCESS (opcode, OP1out, Flags, rot_bits, rot_msb, rot_lsb, rot_rot, rot_nop) + BEGIN + CASE opcode(7 downto 6) IS + WHEN "00" => --Byte + rot_rot <= OP1out(7); + WHEN "01"|"11" => --Word + rot_rot <= OP1out(15); + WHEN "10" => --Long + rot_rot <= OP1out(31); + WHEN OTHERS => null; + END CASE; + + CASE rot_bits IS + WHEN "00" => --ASL, ASR + rot_lsb <= '0'; + rot_msb <= rot_rot; + WHEN "01" => --LSL, LSR + rot_lsb <= '0'; + rot_msb <= '0'; + WHEN "10" => --ROXL, ROXR + rot_lsb <= Flags(4); + rot_msb <= Flags(4); + WHEN "11" => --ROL, ROR + rot_lsb <= rot_rot; + rot_msb <= OP1out(0); + WHEN OTHERS => null; + END CASE; + + IF rot_nop='1' THEN + rot_out <= OP1out; + rot_XC <= Flags(0); + ELSE + IF opcode(8)='1' THEN --left + rot_out <= OP1out(30 downto 0)&rot_lsb; + rot_XC <= rot_rot; + ELSE --right + rot_XC <= OP1out(0); + rot_out <= rot_msb&OP1out(31 downto 1); + CASE opcode(7 downto 6) IS + WHEN "00" => --Byte + rot_out(7) <= rot_msb; + WHEN "01"|"11" => --Word + rot_out(15) <= rot_msb; + WHEN OTHERS => + END CASE; + END IF; + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- MULU/MULS +----------------------------------------------------------------------------- +PROCESS (clk, opcode, OP2out, muls_msb, mulu_reg, OP1sign, sign2) + BEGIN + IF rising_edge(clk) THEN + IF clkena='1' THEN + IF decodeOPC='1' THEN + IF opcode(8)='1' AND reg_QB(15)='1' THEN --MULS Neg faktor + OP1sign <= '1'; + mulu_reg <= "0000000000000000"&(0-reg_QB(15 downto 0)); + ELSE + OP1sign <= '0'; + mulu_reg <= "0000000000000000"®_QB(15 downto 0); + END IF; + ELSIF exec_MULU='1' THEN + mulu_reg <= dummy_mulu; + END IF; + END IF; + END IF; + + IF (opcode(8)='1' AND OP2out(15)='1') OR OP1sign='1' THEN + muls_msb <= mulu_reg(31); + ELSE + muls_msb <= '0'; + END IF; + + IF opcode(8)='1' AND OP2out(15)='1' THEN + sign2 <= '1'; + ELSE + sign2 <= '0'; + END IF; + + IF mulu_reg(0)='1' THEN + IF OP1sign='1' THEN + dummy_mulu <= (muls_msb&mulu_reg(31 downto 16))-(sign2&OP2out(15 downto 0))& mulu_reg(15 downto 1); + ELSE + dummy_mulu <= (muls_msb&mulu_reg(31 downto 16))+(sign2&OP2out(15 downto 0))& mulu_reg(15 downto 1); + END IF; + ELSE + dummy_mulu <= muls_msb&mulu_reg(31 downto 1); + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- DIVU +----------------------------------------------------------------------------- +PROCESS (clk, execOPC, opcode, OP1out, OP2out, div_reg, dummy_div_sub, div_quot, div_sign, dummy_div_over, dummy_div) + BEGIN + set_V_Flag <= '0'; + + IF rising_edge(clk) THEN + IF clkena='1' THEN + IF decodeOPC='1' THEN + IF opcode(8)='1' AND reg_QB(31)='1' THEN -- Neg divisor + div_sign <= '1'; + div_reg <= 0-reg_QB; + ELSE + div_sign <= '0'; + div_reg <= reg_QB; + END IF; + ELSIF exec_DIVU='1' THEN + div_reg <= div_quot; + END IF; + END IF; + END IF; + + dummy_div_over <= ('0'&OP1out(31 downto 16))-('0'&OP2out(15 downto 0)); + + IF opcode(8)='1' AND OP2out(15) ='1' THEN + dummy_div_sub <= (div_reg(31 downto 15))+('1'&OP2out(15 downto 0)); + ELSE + dummy_div_sub <= (div_reg(31 downto 15))-('0'&OP2out(15 downto 0)); + END IF; + + IF (dummy_div_sub(16))='1' THEN + div_quot(31 downto 16) <= div_reg(30 downto 15); + ELSE + div_quot(31 downto 16) <= dummy_div_sub(15 downto 0); + END IF; + + div_quot(15 downto 0) <= div_reg(14 downto 0)&NOT dummy_div_sub(16); + + IF execOPC='1' AND opcode(8)='1' AND (OP2out(15) XOR div_sign)='1' THEN + dummy_div(15 downto 0) <= 0-div_quot(15 downto 0); + ELSE + dummy_div(15 downto 0) <= div_quot(15 downto 0); + END IF; + + IF div_sign='1' THEN + dummy_div(31 downto 16) <= 0-div_quot(31 downto 16); + ELSE + dummy_div(31 downto 16) <= div_quot(31 downto 16); + END IF; + + IF (opcode(8)='1' AND (OP2out(15) XOR div_sign XOR dummy_div(15))='1' AND dummy_div(15 downto 0)/=X"0000") --Overflow DIVS + OR (opcode(8)='0' AND dummy_div_over(16)='0') THEN --Overflow DIVU + set_V_Flag <= '1'; + END IF; + END PROCESS; + +----------------------------------------------------------------------------- +-- Movem +----------------------------------------------------------------------------- +PROCESS (reset, clk, movem_mask, movem_muxa ,movem_muxb, movem_muxc) + BEGIN + IF movem_mask(7 downto 0)="00000000" THEN + movem_muxa <= movem_mask(15 downto 8); + movem_regaddr(3) <= '1'; + ELSE + movem_muxa <= movem_mask(7 downto 0); + movem_regaddr(3) <= '0'; + END IF; + IF movem_muxa(3 downto 0)="0000" THEN + movem_muxb <= movem_muxa(7 downto 4); + movem_regaddr(2) <= '1'; + ELSE + movem_muxb <= movem_muxa(3 downto 0); + movem_regaddr(2) <= '0'; + END IF; + IF movem_muxb(1 downto 0)="00" THEN + movem_muxc <= movem_muxb(3 downto 2); + movem_regaddr(1) <= '1'; + ELSE + movem_muxc <= movem_muxb(1 downto 0); + movem_regaddr(1) <= '0'; + END IF; + IF movem_muxc(0)='0' THEN + movem_regaddr(0) <= '1'; + ELSE + movem_regaddr(0) <= '0'; + END IF; + + movem_bits <= ("0000"&movem_mask(0))+("0000"&movem_mask(1))+("0000"&movem_mask(2))+("0000"&movem_mask(3))+ + ("0000"&movem_mask(4))+("0000"&movem_mask(5))+("0000"&movem_mask(6))+("0000"&movem_mask(7))+ + ("0000"&movem_mask(8))+("0000"&movem_mask(9))+("0000"&movem_mask(10))+("0000"&movem_mask(11))+ + ("0000"&movem_mask(12))+("0000"&movem_mask(13))+("0000"&movem_mask(14))+("0000"&movem_mask(15)); + + IF reset = '0' THEN + movem_busy <= '0'; + movem_addr <= '0'; + maskzero <= '0'; + ELSIF rising_edge(clk) THEN + IF clkena_in='1' AND get_movem_mask='1' THEN + movem_mask <= data_read(15 downto 0); + END IF; + IF clkena_in='1' AND test_maskzero='1' THEN + IF movem_mask=X"0000" THEN + maskzero <= '1'; + END IF; + END IF; + IF clkena_in='1' AND endOPC='1' THEN + maskzero <= '0'; + END IF; + IF clkena='1' THEN + IF set_movem_busy='1' THEN + IF movem_bits(4 downto 1) /= "0000" OR opcode(10)='0' THEN + movem_busy <= '1'; + END IF; + movem_addr <= '1'; + END IF; + IF movem_addr='1' THEN + CASE movem_regaddr IS + WHEN "0000" => movem_mask(0) <= '0'; + WHEN "0001" => movem_mask(1) <= '0'; + WHEN "0010" => movem_mask(2) <= '0'; + WHEN "0011" => movem_mask(3) <= '0'; + WHEN "0100" => movem_mask(4) <= '0'; + WHEN "0101" => movem_mask(5) <= '0'; + WHEN "0110" => movem_mask(6) <= '0'; + WHEN "0111" => movem_mask(7) <= '0'; + WHEN "1000" => movem_mask(8) <= '0'; + WHEN "1001" => movem_mask(9) <= '0'; + WHEN "1010" => movem_mask(10) <= '0'; + WHEN "1011" => movem_mask(11) <= '0'; + WHEN "1100" => movem_mask(12) <= '0'; + WHEN "1101" => movem_mask(13) <= '0'; + WHEN "1110" => movem_mask(14) <= '0'; + WHEN "1111" => movem_mask(15) <= '0'; + WHEN OTHERS => null; + END CASE; + IF opcode(10)='1' THEN + IF movem_bits="00010" OR movem_bits="00001" OR movem_bits="00000" THEN + movem_busy <= '0'; + END IF; + END IF; + IF movem_bits="00001" OR movem_bits="00000" THEN + movem_busy <= '0'; + movem_addr <= '0'; + END IF; + END IF; + END IF; + END IF; + END PROCESS; +END; From e0f5e5d7ba504e11beb817e134a6f5fa83b0b4d0 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 12 Sep 2015 13:32:38 +0100 Subject: [PATCH 34/61] More progress on the 68000; Escape and *SAVE now work, tube clocking issue breaking *LOAD Change-Id: I401cfe8b53fe89edc23b81612f4e656f3edd1c7f --- src/LX9Co_CoPro68000.vhd | 13 +- src/ROM/tuberom_68000.vhd | 16626 ++++++++++++++++++------------------ 2 files changed, 8325 insertions(+), 8314 deletions(-) diff --git a/src/LX9Co_CoPro68000.vhd b/src/LX9Co_CoPro68000.vhd index fcad228..7893acc 100644 --- a/src/LX9Co_CoPro68000.vhd +++ b/src/LX9Co_CoPro68000.vhd @@ -78,6 +78,7 @@ architecture BEHAVIORAL of LX9CoPro68000 is signal cpu_R_W_n : std_logic; signal cpu_data_drive : std_logic; + begin --------------------------------------------------------------------- @@ -184,7 +185,17 @@ begin -- test signals -------------------------------------------------------- - test <= cpu_as & cpu_R_W_n & tube_cs_b & cpu_irq_n_sync & cpu_nmi_n_sync & trig2 & trig1 & trig0; + test(8) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f0074" else '0'; -- nmi vector + test(7) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f0602" else '0'; -- default nmi + test(6) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f05a6" else '0'; -- type 00 nmi + test(5) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f05ba" else '0'; -- type 01 nmi + + test(4) <= cpu_R_W_n; + test(3) <= tube_cs_b; + test(2) <= cpu_irq_n_sync; + test(1) <= cpu_nmi_n_sync; + + -- test <= cpu_as & cpu_R_W_n & tube_cs_b & cpu_irq_n_sync & cpu_nmi_n_sync & trig2 & trig1 & trig0; -------------------------------------------------------- -- boot mode generator diff --git a/src/ROM/tuberom_68000.vhd b/src/ROM/tuberom_68000.vhd index 37c0bb7..dcaa199 100644 --- a/src/ROM/tuberom_68000.vhd +++ b/src/ROM/tuberom_68000.vhd @@ -32,217 +32,217 @@ begin when "00" & x"002" => DATA <= x"003f"; when "00" & x"003" => DATA <= x"0200"; when "00" & x"004" => DATA <= x"003f"; - when "00" & x"005" => DATA <= x"0626"; + when "00" & x"005" => DATA <= x"062a"; when "00" & x"006" => DATA <= x"003f"; - when "00" & x"007" => DATA <= x"072e"; + when "00" & x"007" => DATA <= x"0732"; when "00" & x"008" => DATA <= x"003f"; - when "00" & x"009" => DATA <= x"073c"; + when "00" & x"009" => DATA <= x"0740"; when "00" & x"00a" => DATA <= x"003f"; - when "00" & x"00b" => DATA <= x"0748"; + when "00" & x"00b" => DATA <= x"074c"; when "00" & x"00c" => DATA <= x"003f"; - when "00" & x"00d" => DATA <= x"0760"; + when "00" & x"00d" => DATA <= x"0764"; when "00" & x"00e" => DATA <= x"003f"; - when "00" & x"00f" => DATA <= x"0760"; + when "00" & x"00f" => DATA <= x"0764"; when "00" & x"010" => DATA <= x"003f"; - when "00" & x"011" => DATA <= x"0754"; + when "00" & x"011" => DATA <= x"0758"; when "00" & x"012" => DATA <= x"003f"; - when "00" & x"013" => DATA <= x"0760"; + when "00" & x"013" => DATA <= x"0764"; when "00" & x"014" => DATA <= x"003f"; - when "00" & x"015" => DATA <= x"0760"; + when "00" & x"015" => DATA <= x"0764"; when "00" & x"016" => DATA <= x"003f"; - when "00" & x"017" => DATA <= x"0760"; + when "00" & x"017" => DATA <= x"0764"; when "00" & x"018" => DATA <= x"003f"; - when "00" & x"019" => DATA <= x"0760"; + when "00" & x"019" => DATA <= x"0764"; when "00" & x"01a" => DATA <= x"003f"; - when "00" & x"01b" => DATA <= x"0760"; + when "00" & x"01b" => DATA <= x"0764"; when "00" & x"01c" => DATA <= x"003f"; - when "00" & x"01d" => DATA <= x"0760"; + when "00" & x"01d" => DATA <= x"0764"; when "00" & x"01e" => DATA <= x"003f"; - when "00" & x"01f" => DATA <= x"0760"; + when "00" & x"01f" => DATA <= x"0764"; when "00" & x"020" => DATA <= x"003f"; - when "00" & x"021" => DATA <= x"0760"; + when "00" & x"021" => DATA <= x"0764"; when "00" & x"022" => DATA <= x"003f"; - when "00" & x"023" => DATA <= x"0760"; + when "00" & x"023" => DATA <= x"0764"; when "00" & x"024" => DATA <= x"003f"; - when "00" & x"025" => DATA <= x"0760"; + when "00" & x"025" => DATA <= x"0764"; when "00" & x"026" => DATA <= x"003f"; - when "00" & x"027" => DATA <= x"0760"; + when "00" & x"027" => DATA <= x"0764"; when "00" & x"028" => DATA <= x"003f"; - when "00" & x"029" => DATA <= x"0760"; + when "00" & x"029" => DATA <= x"0764"; when "00" & x"02a" => DATA <= x"003f"; - when "00" & x"02b" => DATA <= x"0760"; + when "00" & x"02b" => DATA <= x"0764"; when "00" & x"02c" => DATA <= x"003f"; - when "00" & x"02d" => DATA <= x"0760"; + when "00" & x"02d" => DATA <= x"0764"; when "00" & x"02e" => DATA <= x"003f"; - when "00" & x"02f" => DATA <= x"0760"; + when "00" & x"02f" => DATA <= x"0764"; when "00" & x"030" => DATA <= x"003f"; - when "00" & x"031" => DATA <= x"0760"; + when "00" & x"031" => DATA <= x"0764"; when "00" & x"032" => DATA <= x"003f"; - when "00" & x"033" => DATA <= x"25ae"; + when "00" & x"033" => DATA <= x"25b2"; when "00" & x"034" => DATA <= x"003f"; - when "00" & x"035" => DATA <= x"044c"; + when "00" & x"035" => DATA <= x"0450"; when "00" & x"036" => DATA <= x"003f"; - when "00" & x"037" => DATA <= x"25ae"; + when "00" & x"037" => DATA <= x"25b2"; when "00" & x"038" => DATA <= x"003f"; - when "00" & x"039" => DATA <= x"25ae"; + when "00" & x"039" => DATA <= x"25b2"; when "00" & x"03a" => DATA <= x"003f"; - when "00" & x"03b" => DATA <= x"05fe"; + when "00" & x"03b" => DATA <= x"0602"; when "00" & x"03c" => DATA <= x"003f"; - when "00" & x"03d" => DATA <= x"25ae"; + when "00" & x"03d" => DATA <= x"25b2"; when "00" & x"03e" => DATA <= x"003f"; - when "00" & x"03f" => DATA <= x"25ae"; + when "00" & x"03f" => DATA <= x"25b2"; when "00" & x"040" => DATA <= x"003f"; - when "00" & x"041" => DATA <= x"0760"; + when "00" & x"041" => DATA <= x"0764"; when "00" & x"042" => DATA <= x"003f"; - when "00" & x"043" => DATA <= x"0760"; + when "00" & x"043" => DATA <= x"0764"; when "00" & x"044" => DATA <= x"003f"; - when "00" & x"045" => DATA <= x"0760"; + when "00" & x"045" => DATA <= x"0764"; when "00" & x"046" => DATA <= x"003f"; - when "00" & x"047" => DATA <= x"0760"; + when "00" & x"047" => DATA <= x"0764"; when "00" & x"048" => DATA <= x"003f"; - when "00" & x"049" => DATA <= x"0760"; + when "00" & x"049" => DATA <= x"0764"; when "00" & x"04a" => DATA <= x"003f"; - when "00" & x"04b" => DATA <= x"0760"; + when "00" & x"04b" => DATA <= x"0764"; when "00" & x"04c" => DATA <= x"003f"; - when "00" & x"04d" => DATA <= x"0760"; + when "00" & x"04d" => DATA <= x"0764"; when "00" & x"04e" => DATA <= x"003f"; - when "00" & x"04f" => DATA <= x"0760"; + when "00" & x"04f" => DATA <= x"0764"; when "00" & x"050" => DATA <= x"003f"; - when "00" & x"051" => DATA <= x"0760"; + when "00" & x"051" => DATA <= x"0764"; when "00" & x"052" => DATA <= x"003f"; - when "00" & x"053" => DATA <= x"0760"; + when "00" & x"053" => DATA <= x"0764"; when "00" & x"054" => DATA <= x"003f"; - when "00" & x"055" => DATA <= x"0760"; + when "00" & x"055" => DATA <= x"0764"; when "00" & x"056" => DATA <= x"003f"; - when "00" & x"057" => DATA <= x"0760"; + when "00" & x"057" => DATA <= x"0764"; when "00" & x"058" => DATA <= x"003f"; - when "00" & x"059" => DATA <= x"08fc"; + when "00" & x"059" => DATA <= x"0900"; when "00" & x"05a" => DATA <= x"003f"; - when "00" & x"05b" => DATA <= x"0760"; + when "00" & x"05b" => DATA <= x"0764"; when "00" & x"05c" => DATA <= x"003f"; - when "00" & x"05d" => DATA <= x"0760"; + when "00" & x"05d" => DATA <= x"0764"; when "00" & x"05e" => DATA <= x"003f"; - when "00" & x"05f" => DATA <= x"0760"; + when "00" & x"05f" => DATA <= x"0764"; when "00" & x"060" => DATA <= x"003f"; - when "00" & x"061" => DATA <= x"0760"; + when "00" & x"061" => DATA <= x"0764"; when "00" & x"062" => DATA <= x"003f"; - when "00" & x"063" => DATA <= x"0760"; + when "00" & x"063" => DATA <= x"0764"; when "00" & x"064" => DATA <= x"003f"; - when "00" & x"065" => DATA <= x"0760"; + when "00" & x"065" => DATA <= x"0764"; when "00" & x"066" => DATA <= x"003f"; - when "00" & x"067" => DATA <= x"0760"; + when "00" & x"067" => DATA <= x"0764"; when "00" & x"068" => DATA <= x"003f"; - when "00" & x"069" => DATA <= x"0760"; + when "00" & x"069" => DATA <= x"0764"; when "00" & x"06a" => DATA <= x"003f"; - when "00" & x"06b" => DATA <= x"0760"; + when "00" & x"06b" => DATA <= x"0764"; when "00" & x"06c" => DATA <= x"003f"; - when "00" & x"06d" => DATA <= x"0760"; + when "00" & x"06d" => DATA <= x"0764"; when "00" & x"06e" => DATA <= x"003f"; - when "00" & x"06f" => DATA <= x"0760"; + when "00" & x"06f" => DATA <= x"0764"; when "00" & x"070" => DATA <= x"003f"; - when "00" & x"071" => DATA <= x"0760"; + when "00" & x"071" => DATA <= x"0764"; when "00" & x"072" => DATA <= x"003f"; - when "00" & x"073" => DATA <= x"0760"; + when "00" & x"073" => DATA <= x"0764"; when "00" & x"074" => DATA <= x"003f"; - when "00" & x"075" => DATA <= x"0760"; + when "00" & x"075" => DATA <= x"0764"; when "00" & x"076" => DATA <= x"003f"; - when "00" & x"077" => DATA <= x"0760"; + when "00" & x"077" => DATA <= x"0764"; when "00" & x"078" => DATA <= x"003f"; - when "00" & x"079" => DATA <= x"0760"; + when "00" & x"079" => DATA <= x"0764"; when "00" & x"07a" => DATA <= x"003f"; - when "00" & x"07b" => DATA <= x"0760"; + when "00" & x"07b" => DATA <= x"0764"; when "00" & x"07c" => DATA <= x"003f"; - when "00" & x"07d" => DATA <= x"0760"; + when "00" & x"07d" => DATA <= x"0764"; when "00" & x"07e" => DATA <= x"003f"; - when "00" & x"07f" => DATA <= x"0760"; + when "00" & x"07f" => DATA <= x"0764"; when "00" & x"080" => DATA <= x"003f"; - when "00" & x"081" => DATA <= x"0776"; + when "00" & x"081" => DATA <= x"077a"; when "00" & x"082" => DATA <= x"003f"; - when "00" & x"083" => DATA <= x"256c"; + when "00" & x"083" => DATA <= x"2570"; when "00" & x"084" => DATA <= x"003f"; - when "00" & x"085" => DATA <= x"25ae"; + when "00" & x"085" => DATA <= x"25b2"; when "00" & x"086" => DATA <= x"003f"; - when "00" & x"087" => DATA <= x"25c6"; + when "00" & x"087" => DATA <= x"25ca"; when "00" & x"088" => DATA <= x"003f"; - when "00" & x"089" => DATA <= x"0a20"; + when "00" & x"089" => DATA <= x"0a24"; when "00" & x"08a" => DATA <= x"003f"; - when "00" & x"08b" => DATA <= x"0a30"; + when "00" & x"08b" => DATA <= x"0a34"; when "00" & x"08c" => DATA <= x"003f"; - when "00" & x"08d" => DATA <= x"0ad2"; + when "00" & x"08d" => DATA <= x"0ad6"; when "00" & x"08e" => DATA <= x"003f"; - when "00" & x"08f" => DATA <= x"0be4"; + when "00" & x"08f" => DATA <= x"0be8"; when "00" & x"090" => DATA <= x"003f"; - when "00" & x"091" => DATA <= x"0cca"; + when "00" & x"091" => DATA <= x"0cce"; when "00" & x"092" => DATA <= x"003f"; - when "00" & x"093" => DATA <= x"0d1a"; + when "00" & x"093" => DATA <= x"0d1e"; when "00" & x"094" => DATA <= x"003f"; - when "00" & x"095" => DATA <= x"0d46"; + when "00" & x"095" => DATA <= x"0d4a"; when "00" & x"096" => DATA <= x"003f"; - when "00" & x"097" => DATA <= x"0d5c"; + when "00" & x"097" => DATA <= x"0d60"; when "00" & x"098" => DATA <= x"003f"; - when "00" & x"099" => DATA <= x"0d7a"; + when "00" & x"099" => DATA <= x"0d7e"; when "00" & x"09a" => DATA <= x"003f"; - when "00" & x"09b" => DATA <= x"0dbe"; + when "00" & x"09b" => DATA <= x"0dc2"; when "00" & x"09c" => DATA <= x"003f"; - when "00" & x"09d" => DATA <= x"0dec"; + when "00" & x"09d" => DATA <= x"0df0"; when "00" & x"09e" => DATA <= x"003f"; - when "00" & x"09f" => DATA <= x"10d6"; + when "00" & x"09f" => DATA <= x"10da"; when "00" & x"0a0" => DATA <= x"003f"; - when "00" & x"0a1" => DATA <= x"25d8"; + when "00" & x"0a1" => DATA <= x"25dc"; when "00" & x"0a2" => DATA <= x"003f"; - when "00" & x"0a3" => DATA <= x"0776"; + when "00" & x"0a3" => DATA <= x"077a"; when "00" & x"0a4" => DATA <= x"003f"; - when "00" & x"0a5" => DATA <= x"0776"; + when "00" & x"0a5" => DATA <= x"077a"; when "00" & x"0a6" => DATA <= x"003f"; - when "00" & x"0a7" => DATA <= x"0776"; + when "00" & x"0a7" => DATA <= x"077a"; when "00" & x"0a8" => DATA <= x"003f"; - when "00" & x"0a9" => DATA <= x"0776"; + when "00" & x"0a9" => DATA <= x"077a"; when "00" & x"0aa" => DATA <= x"003f"; - when "00" & x"0ab" => DATA <= x"0776"; + when "00" & x"0ab" => DATA <= x"077a"; when "00" & x"0ac" => DATA <= x"003f"; - when "00" & x"0ad" => DATA <= x"0776"; + when "00" & x"0ad" => DATA <= x"077a"; when "00" & x"0ae" => DATA <= x"003f"; - when "00" & x"0af" => DATA <= x"0776"; + when "00" & x"0af" => DATA <= x"077a"; when "00" & x"0b0" => DATA <= x"003f"; - when "00" & x"0b1" => DATA <= x"25da"; + when "00" & x"0b1" => DATA <= x"25de"; when "00" & x"0b2" => DATA <= x"003f"; - when "00" & x"0b3" => DATA <= x"0776"; + when "00" & x"0b3" => DATA <= x"077a"; when "00" & x"0b4" => DATA <= x"003f"; - when "00" & x"0b5" => DATA <= x"0f0a"; + when "00" & x"0b5" => DATA <= x"0f0e"; when "00" & x"0b6" => DATA <= x"003f"; - when "00" & x"0b7" => DATA <= x"0776"; + when "00" & x"0b7" => DATA <= x"077a"; when "00" & x"0b8" => DATA <= x"003f"; - when "00" & x"0b9" => DATA <= x"0776"; + when "00" & x"0b9" => DATA <= x"077a"; when "00" & x"0ba" => DATA <= x"003f"; - when "00" & x"0bb" => DATA <= x"0776"; + when "00" & x"0bb" => DATA <= x"077a"; when "00" & x"0bc" => DATA <= x"003f"; - when "00" & x"0bd" => DATA <= x"25ea"; + when "00" & x"0bd" => DATA <= x"25ee"; when "00" & x"0be" => DATA <= x"003f"; - when "00" & x"0bf" => DATA <= x"0776"; + when "00" & x"0bf" => DATA <= x"077a"; when "00" & x"0c0" => DATA <= x"003f"; - when "00" & x"0c1" => DATA <= x"0776"; + when "00" & x"0c1" => DATA <= x"077a"; when "00" & x"0c2" => DATA <= x"003f"; - when "00" & x"0c3" => DATA <= x"0776"; + when "00" & x"0c3" => DATA <= x"077a"; when "00" & x"0c4" => DATA <= x"003f"; - when "00" & x"0c5" => DATA <= x"0776"; + when "00" & x"0c5" => DATA <= x"077a"; when "00" & x"0c6" => DATA <= x"003f"; - when "00" & x"0c7" => DATA <= x"0776"; + when "00" & x"0c7" => DATA <= x"077a"; when "00" & x"0c8" => DATA <= x"003f"; - when "00" & x"0c9" => DATA <= x"0776"; + when "00" & x"0c9" => DATA <= x"077a"; when "00" & x"0ca" => DATA <= x"003f"; - when "00" & x"0cb" => DATA <= x"0776"; + when "00" & x"0cb" => DATA <= x"077a"; when "00" & x"0cc" => DATA <= x"003f"; - when "00" & x"0cd" => DATA <= x"0776"; + when "00" & x"0cd" => DATA <= x"077a"; when "00" & x"0ce" => DATA <= x"003f"; - when "00" & x"0cf" => DATA <= x"0776"; + when "00" & x"0cf" => DATA <= x"077a"; when "00" & x"0d0" => DATA <= x"003f"; - when "00" & x"0d1" => DATA <= x"0776"; + when "00" & x"0d1" => DATA <= x"077a"; when "00" & x"0d2" => DATA <= x"003f"; - when "00" & x"0d3" => DATA <= x"0776"; + when "00" & x"0d3" => DATA <= x"077a"; when "00" & x"0d4" => DATA <= x"003f"; - when "00" & x"0d5" => DATA <= x"0776"; + when "00" & x"0d5" => DATA <= x"077a"; when "00" & x"0d6" => DATA <= x"003f"; - when "00" & x"0d7" => DATA <= x"0776"; + when "00" & x"0d7" => DATA <= x"077a"; when "00" & x"0d8" => DATA <= x"0000"; when "00" & x"0d9" => DATA <= x"0000"; when "00" & x"0da" => DATA <= x"0000"; @@ -254,13 +254,13 @@ begin when "00" & x"0e0" => DATA <= x"0000"; when "00" & x"0e1" => DATA <= x"0000"; when "00" & x"0e2" => DATA <= x"003f"; - when "00" & x"0e3" => DATA <= x"2656"; + when "00" & x"0e3" => DATA <= x"265a"; when "00" & x"0e4" => DATA <= x"003f"; - when "00" & x"0e5" => DATA <= x"265a"; + when "00" & x"0e5" => DATA <= x"265e"; when "00" & x"0e6" => DATA <= x"003f"; - when "00" & x"0e7" => DATA <= x"265e"; + when "00" & x"0e7" => DATA <= x"2662"; when "00" & x"0e8" => DATA <= x"003f"; - when "00" & x"0e9" => DATA <= x"2668"; + when "00" & x"0e9" => DATA <= x"266c"; when "00" & x"0ea" => DATA <= x"0000"; when "00" & x"0eb" => DATA <= x"0000"; when "00" & x"0ec" => DATA <= x"0000"; @@ -298,7 +298,7 @@ begin when "00" & x"10c" => DATA <= x"00bf"; when "00" & x"10d" => DATA <= x"20fc"; when "00" & x"10e" => DATA <= x"003f"; - when "00" & x"10f" => DATA <= x"0760"; + when "00" & x"10f" => DATA <= x"0764"; when "00" & x"110" => DATA <= x"51c8"; when "00" & x"111" => DATA <= x"fff8"; when "00" & x"112" => DATA <= x"303c"; @@ -324,7 +324,7 @@ begin when "00" & x"126" => DATA <= x"51c8"; when "00" & x"127" => DATA <= x"fff8"; when "00" & x"128" => DATA <= x"6100"; - when "00" & x"129" => DATA <= x"0674"; + when "00" & x"129" => DATA <= x"0678"; when "00" & x"12a" => DATA <= x"21c0"; when "00" & x"12b" => DATA <= x"0508"; when "00" & x"12c" => DATA <= x"2e40"; @@ -349,5433 +349,5433 @@ begin when "00" & x"13f" => DATA <= x"0000"; when "00" & x"140" => DATA <= x"0504"; when "00" & x"141" => DATA <= x"6100"; - when "00" & x"142" => DATA <= x"0502"; + when "00" & x"142" => DATA <= x"0506"; when "00" & x"143" => DATA <= x"11c0"; when "00" & x"144" => DATA <= x"0532"; when "00" & x"145" => DATA <= x"6100"; - when "00" & x"146" => DATA <= x"0578"; + when "00" & x"146" => DATA <= x"057c"; when "00" & x"147" => DATA <= x"11c0"; when "00" & x"148" => DATA <= x"0533"; when "00" & x"149" => DATA <= x"6100"; - when "00" & x"14a" => DATA <= x"0592"; + when "00" & x"14a" => DATA <= x"0596"; when "00" & x"14b" => DATA <= x"11c0"; when "00" & x"14c" => DATA <= x"0534"; when "00" & x"14d" => DATA <= x"11fc"; when "00" & x"14e" => DATA <= x"0000"; when "00" & x"14f" => DATA <= x"0535"; - when "00" & x"150" => DATA <= x"027c"; - when "00" & x"151" => DATA <= x"dfff"; - when "00" & x"152" => DATA <= x"203c"; - when "00" & x"153" => DATA <= x"003f"; - when "00" & x"154" => DATA <= x"27e2"; - when "00" & x"155" => DATA <= x"6100"; - when "00" & x"156" => DATA <= x"0752"; - when "00" & x"157" => DATA <= x"1038"; - when "00" & x"158" => DATA <= x"0532"; - when "00" & x"159" => DATA <= x"b07c"; - when "00" & x"15a" => DATA <= x"0009"; - when "00" & x"15b" => DATA <= x"6500"; - when "00" & x"15c" => DATA <= x"0004"; - when "00" & x"15d" => DATA <= x"7000"; - when "00" & x"15e" => DATA <= x"0c38"; - when "00" & x"15f" => DATA <= x"00ff"; - when "00" & x"160" => DATA <= x"0532"; - when "00" & x"161" => DATA <= x"6700"; - when "00" & x"162" => DATA <= x"001e"; - when "00" & x"163" => DATA <= x"203c"; - when "00" & x"164" => DATA <= x"003f"; - when "00" & x"165" => DATA <= x"2800"; - when "00" & x"166" => DATA <= x"d038"; - when "00" & x"167" => DATA <= x"0532"; + when "00" & x"150" => DATA <= x"6100"; + when "00" & x"151" => DATA <= x"0bfc"; + when "00" & x"152" => DATA <= x"027c"; + when "00" & x"153" => DATA <= x"dfff"; + when "00" & x"154" => DATA <= x"203c"; + when "00" & x"155" => DATA <= x"003f"; + when "00" & x"156" => DATA <= x"27e6"; + when "00" & x"157" => DATA <= x"6100"; + when "00" & x"158" => DATA <= x"0752"; + when "00" & x"159" => DATA <= x"1038"; + when "00" & x"15a" => DATA <= x"0532"; + when "00" & x"15b" => DATA <= x"b07c"; + when "00" & x"15c" => DATA <= x"0009"; + when "00" & x"15d" => DATA <= x"6500"; + when "00" & x"15e" => DATA <= x"0004"; + when "00" & x"15f" => DATA <= x"7000"; + when "00" & x"160" => DATA <= x"0c38"; + when "00" & x"161" => DATA <= x"00ff"; + when "00" & x"162" => DATA <= x"0532"; + when "00" & x"163" => DATA <= x"6700"; + when "00" & x"164" => DATA <= x"001e"; + when "00" & x"165" => DATA <= x"203c"; + when "00" & x"166" => DATA <= x"003f"; + when "00" & x"167" => DATA <= x"2804"; when "00" & x"168" => DATA <= x"d038"; when "00" & x"169" => DATA <= x"0532"; when "00" & x"16a" => DATA <= x"d038"; when "00" & x"16b" => DATA <= x"0532"; - when "00" & x"16c" => DATA <= x"7203"; - when "00" & x"16d" => DATA <= x"6100"; - when "00" & x"16e" => DATA <= x"1092"; - when "00" & x"16f" => DATA <= x"6000"; - when "00" & x"170" => DATA <= x"000a"; - when "00" & x"171" => DATA <= x"103c"; - when "00" & x"172" => DATA <= x"004b"; - when "00" & x"173" => DATA <= x"6100"; - when "00" & x"174" => DATA <= x"06fe"; - when "00" & x"175" => DATA <= x"203c"; - when "00" & x"176" => DATA <= x"003f"; - when "00" & x"177" => DATA <= x"27ed"; - when "00" & x"178" => DATA <= x"6100"; - when "00" & x"179" => DATA <= x"070c"; - when "00" & x"17a" => DATA <= x"2038"; - when "00" & x"17b" => DATA <= x"0508"; - when "00" & x"17c" => DATA <= x"ea88"; - when "00" & x"17d" => DATA <= x"ea88"; - when "00" & x"17e" => DATA <= x"223c"; - when "00" & x"17f" => DATA <= x"0000"; - when "00" & x"180" => DATA <= x"0600"; - when "00" & x"181" => DATA <= x"243c"; - when "00" & x"182" => DATA <= x"0000"; - when "00" & x"183" => DATA <= x"00ff"; - when "00" & x"184" => DATA <= x"6100"; - when "00" & x"185" => DATA <= x"1484"; - when "00" & x"186" => DATA <= x"203c"; - when "00" & x"187" => DATA <= x"0000"; - when "00" & x"188" => DATA <= x"0600"; - when "00" & x"189" => DATA <= x"6100"; - when "00" & x"18a" => DATA <= x"06ea"; - when "00" & x"18b" => DATA <= x"203c"; - when "00" & x"18c" => DATA <= x"003f"; - when "00" & x"18d" => DATA <= x"281b"; - when "00" & x"18e" => DATA <= x"7207"; - when "00" & x"18f" => DATA <= x"6100"; - when "00" & x"190" => DATA <= x"104e"; - when "00" & x"191" => DATA <= x"7227"; - when "00" & x"192" => DATA <= x"6100"; - when "00" & x"193" => DATA <= x"0e2a"; + when "00" & x"16c" => DATA <= x"d038"; + when "00" & x"16d" => DATA <= x"0532"; + when "00" & x"16e" => DATA <= x"7203"; + when "00" & x"16f" => DATA <= x"6100"; + when "00" & x"170" => DATA <= x"1092"; + when "00" & x"171" => DATA <= x"6000"; + when "00" & x"172" => DATA <= x"000a"; + when "00" & x"173" => DATA <= x"103c"; + when "00" & x"174" => DATA <= x"004b"; + when "00" & x"175" => DATA <= x"6100"; + when "00" & x"176" => DATA <= x"06fe"; + when "00" & x"177" => DATA <= x"203c"; + when "00" & x"178" => DATA <= x"003f"; + when "00" & x"179" => DATA <= x"27f1"; + when "00" & x"17a" => DATA <= x"6100"; + when "00" & x"17b" => DATA <= x"070c"; + when "00" & x"17c" => DATA <= x"2038"; + when "00" & x"17d" => DATA <= x"0508"; + when "00" & x"17e" => DATA <= x"ea88"; + when "00" & x"17f" => DATA <= x"ea88"; + when "00" & x"180" => DATA <= x"223c"; + when "00" & x"181" => DATA <= x"0000"; + when "00" & x"182" => DATA <= x"0600"; + when "00" & x"183" => DATA <= x"243c"; + when "00" & x"184" => DATA <= x"0000"; + when "00" & x"185" => DATA <= x"00ff"; + when "00" & x"186" => DATA <= x"6100"; + when "00" & x"187" => DATA <= x"1484"; + when "00" & x"188" => DATA <= x"203c"; + when "00" & x"189" => DATA <= x"0000"; + when "00" & x"18a" => DATA <= x"0600"; + when "00" & x"18b" => DATA <= x"6100"; + when "00" & x"18c" => DATA <= x"06ea"; + when "00" & x"18d" => DATA <= x"203c"; + when "00" & x"18e" => DATA <= x"003f"; + when "00" & x"18f" => DATA <= x"281f"; + when "00" & x"190" => DATA <= x"7207"; + when "00" & x"191" => DATA <= x"6100"; + when "00" & x"192" => DATA <= x"104e"; + when "00" & x"193" => DATA <= x"7227"; when "00" & x"194" => DATA <= x"6100"; - when "00" & x"195" => DATA <= x"00a6"; - when "00" & x"196" => DATA <= x"2f00"; - when "00" & x"197" => DATA <= x"7001"; - when "00" & x"198" => DATA <= x"223c"; - when "00" & x"199" => DATA <= x"0000"; - when "00" & x"19a" => DATA <= x"0528"; - when "00" & x"19b" => DATA <= x"6100"; - when "00" & x"19c" => DATA <= x"08ac"; - when "00" & x"19d" => DATA <= x"11fc"; - when "00" & x"19e" => DATA <= x"0000"; - when "00" & x"19f" => DATA <= x"052d"; - when "00" & x"1a0" => DATA <= x"11fc"; - when "00" & x"1a1" => DATA <= x"0000"; - when "00" & x"1a2" => DATA <= x"052e"; - when "00" & x"1a3" => DATA <= x"11fc"; - when "00" & x"1a4" => DATA <= x"0000"; - when "00" & x"1a5" => DATA <= x"052f"; - when "00" & x"1a6" => DATA <= x"11fc"; - when "00" & x"1a7" => DATA <= x"0000"; - when "00" & x"1a8" => DATA <= x"0530"; - when "00" & x"1a9" => DATA <= x"11fc"; - when "00" & x"1aa" => DATA <= x"0000"; - when "00" & x"1ab" => DATA <= x"0531"; - when "00" & x"1ac" => DATA <= x"201f"; - when "00" & x"1ad" => DATA <= x"b03c"; - when "00" & x"1ae" => DATA <= x"0080"; - when "00" & x"1af" => DATA <= x"103c"; - when "00" & x"1b0" => DATA <= x"002a"; - when "00" & x"1b1" => DATA <= x"6100"; - when "00" & x"1b2" => DATA <= x"0682"; - when "00" & x"1b3" => DATA <= x"203c"; - when "00" & x"1b4" => DATA <= x"0000"; - when "00" & x"1b5" => DATA <= x"0600"; - when "00" & x"1b6" => DATA <= x"223c"; - when "00" & x"1b7" => DATA <= x"0000"; - when "00" & x"1b8" => DATA <= x"00ff"; - when "00" & x"1b9" => DATA <= x"143c"; - when "00" & x"1ba" => DATA <= x"0020"; - when "00" & x"1bb" => DATA <= x"163c"; - when "00" & x"1bc" => DATA <= x"00ff"; - when "00" & x"1bd" => DATA <= x"207c"; - when "00" & x"1be" => DATA <= x"0000"; - when "00" & x"1bf" => DATA <= x"007d"; - when "00" & x"1c0" => DATA <= x"4e4c"; - when "00" & x"1c1" => DATA <= x"6500"; - when "00" & x"1c2" => DATA <= x"0012"; - when "00" & x"1c3" => DATA <= x"203c"; - when "00" & x"1c4" => DATA <= x"0000"; - when "00" & x"1c5" => DATA <= x"0600"; - when "00" & x"1c6" => DATA <= x"207c"; - when "00" & x"1c7" => DATA <= x"0000"; - when "00" & x"1c8" => DATA <= x"0005"; - when "00" & x"1c9" => DATA <= x"4e4c"; - when "00" & x"1ca" => DATA <= x"60c8"; - when "00" & x"1cb" => DATA <= x"707e"; - when "00" & x"1cc" => DATA <= x"6100"; - when "00" & x"1cd" => DATA <= x"0738"; - when "00" & x"1ce" => DATA <= x"203c"; - when "00" & x"1cf" => DATA <= x"003f"; - when "00" & x"1d0" => DATA <= x"2d78"; - when "00" & x"1d1" => DATA <= x"207c"; - when "00" & x"1d2" => DATA <= x"0000"; - when "00" & x"1d3" => DATA <= x"002b"; - when "00" & x"1d4" => DATA <= x"4e4c"; - when "00" & x"1d5" => DATA <= x"60b2"; - when "00" & x"1d6" => DATA <= x"0839"; - when "00" & x"1d7" => DATA <= x"0007"; - when "00" & x"1d8" => DATA <= x"fffe"; - when "00" & x"1d9" => DATA <= x"0000"; - when "00" & x"1da" => DATA <= x"6600"; - when "00" & x"1db" => DATA <= x"0012"; - when "00" & x"1dc" => DATA <= x"0839"; - when "00" & x"1dd" => DATA <= x"0007"; - when "00" & x"1de" => DATA <= x"fffe"; - when "00" & x"1df" => DATA <= x"0006"; - when "00" & x"1e0" => DATA <= x"67ea"; - when "00" & x"1e1" => DATA <= x"6100"; - when "00" & x"1e2" => DATA <= x"00f0"; - when "00" & x"1e3" => DATA <= x"60e4"; - when "00" & x"1e4" => DATA <= x"1039"; - when "00" & x"1e5" => DATA <= x"fffe"; - when "00" & x"1e6" => DATA <= x"0001"; - when "00" & x"1e7" => DATA <= x"4e75"; - when "00" & x"1e8" => DATA <= x"0839"; - when "00" & x"1e9" => DATA <= x"0007"; - when "00" & x"1ea" => DATA <= x"fffe"; - when "00" & x"1eb" => DATA <= x"0002"; - when "00" & x"1ec" => DATA <= x"67f6"; - when "00" & x"1ed" => DATA <= x"1039"; - when "00" & x"1ee" => DATA <= x"fffe"; - when "00" & x"1ef" => DATA <= x"0003"; - when "00" & x"1f0" => DATA <= x"4e75"; - when "00" & x"1f1" => DATA <= x"0839"; - when "00" & x"1f2" => DATA <= x"0006"; - when "00" & x"1f3" => DATA <= x"fffe"; - when "00" & x"1f4" => DATA <= x"0002"; - when "00" & x"1f5" => DATA <= x"67f6"; - when "00" & x"1f6" => DATA <= x"13c0"; - when "00" & x"1f7" => DATA <= x"fffe"; - when "00" & x"1f8" => DATA <= x"0003"; - when "00" & x"1f9" => DATA <= x"4e75"; - when "00" & x"1fa" => DATA <= x"0839"; - when "00" & x"1fb" => DATA <= x"0007"; - when "00" & x"1fc" => DATA <= x"fffe"; - when "00" & x"1fd" => DATA <= x"0006"; - when "00" & x"1fe" => DATA <= x"67f6"; - when "00" & x"1ff" => DATA <= x"1039"; - when "00" & x"200" => DATA <= x"fffe"; - when "00" & x"201" => DATA <= x"0007"; - when "00" & x"202" => DATA <= x"4e75"; - when "00" & x"203" => DATA <= x"4280"; - when "00" & x"204" => DATA <= x"61c6"; - when "00" & x"205" => DATA <= x"e198"; - when "00" & x"206" => DATA <= x"61c2"; + when "00" & x"195" => DATA <= x"0e2a"; + when "00" & x"196" => DATA <= x"6100"; + when "00" & x"197" => DATA <= x"00a6"; + when "00" & x"198" => DATA <= x"2f00"; + when "00" & x"199" => DATA <= x"7001"; + when "00" & x"19a" => DATA <= x"223c"; + when "00" & x"19b" => DATA <= x"0000"; + when "00" & x"19c" => DATA <= x"0528"; + when "00" & x"19d" => DATA <= x"6100"; + when "00" & x"19e" => DATA <= x"08ac"; + when "00" & x"19f" => DATA <= x"11fc"; + when "00" & x"1a0" => DATA <= x"0000"; + when "00" & x"1a1" => DATA <= x"052d"; + when "00" & x"1a2" => DATA <= x"11fc"; + when "00" & x"1a3" => DATA <= x"0000"; + when "00" & x"1a4" => DATA <= x"052e"; + when "00" & x"1a5" => DATA <= x"11fc"; + when "00" & x"1a6" => DATA <= x"0000"; + when "00" & x"1a7" => DATA <= x"052f"; + when "00" & x"1a8" => DATA <= x"11fc"; + when "00" & x"1a9" => DATA <= x"0000"; + when "00" & x"1aa" => DATA <= x"0530"; + when "00" & x"1ab" => DATA <= x"11fc"; + when "00" & x"1ac" => DATA <= x"0000"; + when "00" & x"1ad" => DATA <= x"0531"; + when "00" & x"1ae" => DATA <= x"201f"; + when "00" & x"1af" => DATA <= x"b03c"; + when "00" & x"1b0" => DATA <= x"0080"; + when "00" & x"1b1" => DATA <= x"103c"; + when "00" & x"1b2" => DATA <= x"002a"; + when "00" & x"1b3" => DATA <= x"6100"; + when "00" & x"1b4" => DATA <= x"0682"; + when "00" & x"1b5" => DATA <= x"203c"; + when "00" & x"1b6" => DATA <= x"0000"; + when "00" & x"1b7" => DATA <= x"0600"; + when "00" & x"1b8" => DATA <= x"223c"; + when "00" & x"1b9" => DATA <= x"0000"; + when "00" & x"1ba" => DATA <= x"00ff"; + when "00" & x"1bb" => DATA <= x"143c"; + when "00" & x"1bc" => DATA <= x"0020"; + when "00" & x"1bd" => DATA <= x"163c"; + when "00" & x"1be" => DATA <= x"00ff"; + when "00" & x"1bf" => DATA <= x"207c"; + when "00" & x"1c0" => DATA <= x"0000"; + when "00" & x"1c1" => DATA <= x"007d"; + when "00" & x"1c2" => DATA <= x"4e4c"; + when "00" & x"1c3" => DATA <= x"6500"; + when "00" & x"1c4" => DATA <= x"0012"; + when "00" & x"1c5" => DATA <= x"203c"; + when "00" & x"1c6" => DATA <= x"0000"; + when "00" & x"1c7" => DATA <= x"0600"; + when "00" & x"1c8" => DATA <= x"207c"; + when "00" & x"1c9" => DATA <= x"0000"; + when "00" & x"1ca" => DATA <= x"0005"; + when "00" & x"1cb" => DATA <= x"4e4c"; + when "00" & x"1cc" => DATA <= x"60c8"; + when "00" & x"1cd" => DATA <= x"707e"; + when "00" & x"1ce" => DATA <= x"6100"; + when "00" & x"1cf" => DATA <= x"0738"; + when "00" & x"1d0" => DATA <= x"203c"; + when "00" & x"1d1" => DATA <= x"003f"; + when "00" & x"1d2" => DATA <= x"2d7c"; + when "00" & x"1d3" => DATA <= x"207c"; + when "00" & x"1d4" => DATA <= x"0000"; + when "00" & x"1d5" => DATA <= x"002b"; + when "00" & x"1d6" => DATA <= x"4e4c"; + when "00" & x"1d7" => DATA <= x"60b2"; + when "00" & x"1d8" => DATA <= x"0839"; + when "00" & x"1d9" => DATA <= x"0007"; + when "00" & x"1da" => DATA <= x"fffe"; + when "00" & x"1db" => DATA <= x"0000"; + when "00" & x"1dc" => DATA <= x"6600"; + when "00" & x"1dd" => DATA <= x"0012"; + when "00" & x"1de" => DATA <= x"0839"; + when "00" & x"1df" => DATA <= x"0007"; + when "00" & x"1e0" => DATA <= x"fffe"; + when "00" & x"1e1" => DATA <= x"0006"; + when "00" & x"1e2" => DATA <= x"67ea"; + when "00" & x"1e3" => DATA <= x"6100"; + when "00" & x"1e4" => DATA <= x"00f0"; + when "00" & x"1e5" => DATA <= x"60e4"; + when "00" & x"1e6" => DATA <= x"1039"; + when "00" & x"1e7" => DATA <= x"fffe"; + when "00" & x"1e8" => DATA <= x"0001"; + when "00" & x"1e9" => DATA <= x"4e75"; + when "00" & x"1ea" => DATA <= x"0839"; + when "00" & x"1eb" => DATA <= x"0007"; + when "00" & x"1ec" => DATA <= x"fffe"; + when "00" & x"1ed" => DATA <= x"0002"; + when "00" & x"1ee" => DATA <= x"67f6"; + when "00" & x"1ef" => DATA <= x"1039"; + when "00" & x"1f0" => DATA <= x"fffe"; + when "00" & x"1f1" => DATA <= x"0003"; + when "00" & x"1f2" => DATA <= x"4e75"; + when "00" & x"1f3" => DATA <= x"0839"; + when "00" & x"1f4" => DATA <= x"0006"; + when "00" & x"1f5" => DATA <= x"fffe"; + when "00" & x"1f6" => DATA <= x"0002"; + when "00" & x"1f7" => DATA <= x"67f6"; + when "00" & x"1f8" => DATA <= x"13c0"; + when "00" & x"1f9" => DATA <= x"fffe"; + when "00" & x"1fa" => DATA <= x"0003"; + when "00" & x"1fb" => DATA <= x"4e75"; + when "00" & x"1fc" => DATA <= x"0839"; + when "00" & x"1fd" => DATA <= x"0007"; + when "00" & x"1fe" => DATA <= x"fffe"; + when "00" & x"1ff" => DATA <= x"0006"; + when "00" & x"200" => DATA <= x"67f6"; + when "00" & x"201" => DATA <= x"1039"; + when "00" & x"202" => DATA <= x"fffe"; + when "00" & x"203" => DATA <= x"0007"; + when "00" & x"204" => DATA <= x"4e75"; + when "00" & x"205" => DATA <= x"4280"; + when "00" & x"206" => DATA <= x"61c6"; when "00" & x"207" => DATA <= x"e198"; - when "00" & x"208" => DATA <= x"61be"; + when "00" & x"208" => DATA <= x"61c2"; when "00" & x"209" => DATA <= x"e198"; - when "00" & x"20a" => DATA <= x"60ba"; + when "00" & x"20a" => DATA <= x"61be"; when "00" & x"20b" => DATA <= x"e198"; - when "00" & x"20c" => DATA <= x"61c8"; + when "00" & x"20c" => DATA <= x"60ba"; when "00" & x"20d" => DATA <= x"e198"; - when "00" & x"20e" => DATA <= x"61c4"; + when "00" & x"20e" => DATA <= x"61c8"; when "00" & x"20f" => DATA <= x"e198"; - when "00" & x"210" => DATA <= x"61c0"; + when "00" & x"210" => DATA <= x"61c4"; when "00" & x"211" => DATA <= x"e198"; - when "00" & x"212" => DATA <= x"60bc"; - when "00" & x"213" => DATA <= x"4280"; - when "00" & x"214" => DATA <= x"61ca"; - when "00" & x"215" => DATA <= x"e198"; - when "00" & x"216" => DATA <= x"61c6"; + when "00" & x"212" => DATA <= x"61c0"; + when "00" & x"213" => DATA <= x"e198"; + when "00" & x"214" => DATA <= x"60bc"; + when "00" & x"215" => DATA <= x"4280"; + when "00" & x"216" => DATA <= x"61ca"; when "00" & x"217" => DATA <= x"e198"; - when "00" & x"218" => DATA <= x"61c2"; + when "00" & x"218" => DATA <= x"61c6"; when "00" & x"219" => DATA <= x"e198"; - when "00" & x"21a" => DATA <= x"60be"; - when "00" & x"21b" => DATA <= x"0839"; - when "00" & x"21c" => DATA <= x"0006"; - when "00" & x"21d" => DATA <= x"fffe"; - when "00" & x"21e" => DATA <= x"0002"; - when "00" & x"21f" => DATA <= x"67f6"; - when "00" & x"220" => DATA <= x"101e"; - when "00" & x"221" => DATA <= x"619e"; - when "00" & x"222" => DATA <= x"b03c"; - when "00" & x"223" => DATA <= x"000d"; - when "00" & x"224" => DATA <= x"66ec"; - when "00" & x"225" => DATA <= x"4e75"; - when "00" & x"226" => DATA <= x"0839"; - when "00" & x"227" => DATA <= x"0007"; - when "00" & x"228" => DATA <= x"fffe"; - when "00" & x"229" => DATA <= x"0006"; - when "00" & x"22a" => DATA <= x"6600"; - when "00" & x"22b" => DATA <= x"005e"; - when "00" & x"22c" => DATA <= x"0839"; - when "00" & x"22d" => DATA <= x"0007"; - when "00" & x"22e" => DATA <= x"fffe"; - when "00" & x"22f" => DATA <= x"0000"; - when "00" & x"230" => DATA <= x"6600"; - when "00" & x"231" => DATA <= x"0010"; - when "00" & x"232" => DATA <= x"2f0e"; - when "00" & x"233" => DATA <= x"2c79"; - when "00" & x"234" => DATA <= x"0000"; - when "00" & x"235" => DATA <= x"0408"; - when "00" & x"236" => DATA <= x"4e96"; - when "00" & x"237" => DATA <= x"2c5f"; - when "00" & x"238" => DATA <= x"4e73"; - when "00" & x"239" => DATA <= x"2f00"; - when "00" & x"23a" => DATA <= x"1039"; - when "00" & x"23b" => DATA <= x"fffe"; - when "00" & x"23c" => DATA <= x"0001"; - when "00" & x"23d" => DATA <= x"6b00"; - when "00" & x"23e" => DATA <= x"0028"; - when "00" & x"23f" => DATA <= x"2f01"; - when "00" & x"240" => DATA <= x"4280"; - when "00" & x"241" => DATA <= x"6100"; - when "00" & x"242" => DATA <= x"ff28"; - when "00" & x"243" => DATA <= x"e158"; - when "00" & x"244" => DATA <= x"6100"; - when "00" & x"245" => DATA <= x"ff22"; - when "00" & x"246" => DATA <= x"3200"; - when "00" & x"247" => DATA <= x"6100"; - when "00" & x"248" => DATA <= x"ff1c"; - when "00" & x"249" => DATA <= x"2f0e"; - when "00" & x"24a" => DATA <= x"2c79"; - when "00" & x"24b" => DATA <= x"0000"; - when "00" & x"24c" => DATA <= x"0440"; - when "00" & x"24d" => DATA <= x"4e96"; - when "00" & x"24e" => DATA <= x"2c5f"; - when "00" & x"24f" => DATA <= x"221f"; - when "00" & x"250" => DATA <= x"201f"; - when "00" & x"251" => DATA <= x"4e73"; - when "00" & x"252" => DATA <= x"2f0e"; - when "00" & x"253" => DATA <= x"2c79"; - when "00" & x"254" => DATA <= x"0000"; - when "00" & x"255" => DATA <= x"04cc"; - when "00" & x"256" => DATA <= x"4e96"; - when "00" & x"257" => DATA <= x"2c5f"; - when "00" & x"258" => DATA <= x"201f"; - when "00" & x"259" => DATA <= x"4e73"; - when "00" & x"25a" => DATA <= x"1039"; - when "00" & x"25b" => DATA <= x"fffe"; - when "00" & x"25c" => DATA <= x"0007"; - when "00" & x"25d" => DATA <= x"6a00"; - when "00" & x"25e" => DATA <= x"003c"; - when "00" & x"25f" => DATA <= x"2f00"; - when "00" & x"260" => DATA <= x"2f0e"; - when "00" & x"261" => DATA <= x"2c7c"; - when "00" & x"262" => DATA <= x"0000"; - when "00" & x"263" => DATA <= x"0700"; - when "00" & x"264" => DATA <= x"6100"; - when "00" & x"265" => DATA <= x"ff06"; - when "00" & x"266" => DATA <= x"4280"; - when "00" & x"267" => DATA <= x"6100"; - when "00" & x"268" => DATA <= x"ff00"; - when "00" & x"269" => DATA <= x"2cc0"; - when "00" & x"26a" => DATA <= x"6100"; - when "00" & x"26b" => DATA <= x"fefa"; - when "00" & x"26c" => DATA <= x"1cc0"; - when "00" & x"26d" => DATA <= x"66f8"; - when "00" & x"26e" => DATA <= x"2c5f"; - when "00" & x"26f" => DATA <= x"203c"; - when "00" & x"270" => DATA <= x"0000"; - when "00" & x"271" => DATA <= x"0700"; - when "00" & x"272" => DATA <= x"21c0"; - when "00" & x"273" => DATA <= x"0514"; - when "00" & x"274" => DATA <= x"21fc"; - when "00" & x"275" => DATA <= x"ffff"; - when "00" & x"276" => DATA <= x"6502"; - when "00" & x"277" => DATA <= x"0510"; - when "00" & x"278" => DATA <= x"6100"; - when "00" & x"279" => DATA <= x"0c2e"; - when "00" & x"27a" => DATA <= x"201f"; - when "00" & x"27b" => DATA <= x"4e73"; - when "00" & x"27c" => DATA <= x"2f08"; - when "00" & x"27d" => DATA <= x"2f00"; - when "00" & x"27e" => DATA <= x"0280"; - when "00" & x"27f" => DATA <= x"0000"; - when "00" & x"280" => DATA <= x"00ff"; - when "00" & x"281" => DATA <= x"e588"; - when "00" & x"282" => DATA <= x"41f9"; - when "00" & x"283" => DATA <= x"003f"; - when "00" & x"284" => DATA <= x"0606"; - when "00" & x"285" => DATA <= x"d1c0"; - when "00" & x"286" => DATA <= x"21c8"; - when "00" & x"287" => DATA <= x"0074"; - when "00" & x"288" => DATA <= x"6100"; - when "00" & x"289" => DATA <= x"fee2"; - when "00" & x"28a" => DATA <= x"2017"; - when "00" & x"28b" => DATA <= x"b03c"; - when "00" & x"28c" => DATA <= x"0005"; - when "00" & x"28d" => DATA <= x"6700"; - when "00" & x"28e" => DATA <= x"005c"; - when "00" & x"28f" => DATA <= x"6100"; - when "00" & x"290" => DATA <= x"ff06"; - when "00" & x"291" => DATA <= x"23c0"; - when "00" & x"292" => DATA <= x"0000"; - when "00" & x"293" => DATA <= x"0520"; - when "00" & x"294" => DATA <= x"1039"; - when "00" & x"295" => DATA <= x"fffe"; - when "00" & x"296" => DATA <= x"0005"; - when "00" & x"297" => DATA <= x"1039"; - when "00" & x"298" => DATA <= x"fffe"; - when "00" & x"299" => DATA <= x"0005"; - when "00" & x"29a" => DATA <= x"6100"; - when "00" & x"29b" => DATA <= x"febe"; - when "00" & x"29c" => DATA <= x"2017"; - when "00" & x"29d" => DATA <= x"b03c"; - when "00" & x"29e" => DATA <= x"0006"; - when "00" & x"29f" => DATA <= x"6500"; - when "00" & x"2a0" => DATA <= x"0038"; - when "00" & x"2a1" => DATA <= x"6600"; - when "00" & x"2a2" => DATA <= x"003a"; - when "00" & x"2a3" => DATA <= x"2f0e"; - when "00" & x"2a4" => DATA <= x"2c78"; - when "00" & x"2a5" => DATA <= x"0520"; - when "00" & x"2a6" => DATA <= x"203c"; - when "00" & x"2a7" => DATA <= x"0000"; - when "00" & x"2a8" => DATA <= x"00ff"; - when "00" & x"2a9" => DATA <= x"0839"; - when "00" & x"2aa" => DATA <= x"0007"; - when "00" & x"2ab" => DATA <= x"fffe"; - when "00" & x"2ac" => DATA <= x"0004"; - when "00" & x"2ad" => DATA <= x"67f6"; - when "00" & x"2ae" => DATA <= x"13de"; - when "00" & x"2af" => DATA <= x"fffe"; - when "00" & x"2b0" => DATA <= x"0005"; - when "00" & x"2b1" => DATA <= x"51c8"; - when "00" & x"2b2" => DATA <= x"ffee"; - when "00" & x"2b3" => DATA <= x"0839"; - when "00" & x"2b4" => DATA <= x"0007"; - when "00" & x"2b5" => DATA <= x"fffe"; - when "00" & x"2b6" => DATA <= x"0004"; - when "00" & x"2b7" => DATA <= x"67f6"; - when "00" & x"2b8" => DATA <= x"13e6"; - when "00" & x"2b9" => DATA <= x"fffe"; - when "00" & x"2ba" => DATA <= x"0005"; - when "00" & x"2bb" => DATA <= x"2c5f"; - when "00" & x"2bc" => DATA <= x"201f"; - when "00" & x"2bd" => DATA <= x"205f"; - when "00" & x"2be" => DATA <= x"4e73"; - when "00" & x"2bf" => DATA <= x"2f0e"; - when "00" & x"2c0" => DATA <= x"2c78"; - when "00" & x"2c1" => DATA <= x"0520"; - when "00" & x"2c2" => DATA <= x"203c"; - when "00" & x"2c3" => DATA <= x"0000"; - when "00" & x"2c4" => DATA <= x"00ff"; - when "00" & x"2c5" => DATA <= x"0839"; - when "00" & x"2c6" => DATA <= x"0007"; - when "00" & x"2c7" => DATA <= x"fffe"; - when "00" & x"2c8" => DATA <= x"0004"; - when "00" & x"2c9" => DATA <= x"67f6"; - when "00" & x"2ca" => DATA <= x"1cf9"; - when "00" & x"2cb" => DATA <= x"fffe"; - when "00" & x"2cc" => DATA <= x"0005"; - when "00" & x"2cd" => DATA <= x"51c8"; - when "00" & x"2ce" => DATA <= x"ffee"; - when "00" & x"2cf" => DATA <= x"2c5f"; - when "00" & x"2d0" => DATA <= x"60d6"; - when "00" & x"2d1" => DATA <= x"2f0e"; - when "00" & x"2d2" => DATA <= x"2c78"; - when "00" & x"2d3" => DATA <= x"0520"; - when "00" & x"2d4" => DATA <= x"13de"; - when "00" & x"2d5" => DATA <= x"fffe"; - when "00" & x"2d6" => DATA <= x"0005"; - when "00" & x"2d7" => DATA <= x"21ce"; - when "00" & x"2d8" => DATA <= x"0520"; - when "00" & x"2d9" => DATA <= x"2c5f"; - when "00" & x"2da" => DATA <= x"4e73"; - when "00" & x"2db" => DATA <= x"2f0e"; - when "00" & x"2dc" => DATA <= x"2c78"; - when "00" & x"2dd" => DATA <= x"0520"; - when "00" & x"2de" => DATA <= x"1cf9"; - when "00" & x"2df" => DATA <= x"fffe"; - when "00" & x"2e0" => DATA <= x"0005"; - when "00" & x"2e1" => DATA <= x"21ce"; - when "00" & x"2e2" => DATA <= x"0520"; - when "00" & x"2e3" => DATA <= x"2c5f"; - when "00" & x"2e4" => DATA <= x"4e73"; - when "00" & x"2e5" => DATA <= x"2f0e"; - when "00" & x"2e6" => DATA <= x"2c78"; - when "00" & x"2e7" => DATA <= x"0520"; - when "00" & x"2e8" => DATA <= x"13de"; - when "00" & x"2e9" => DATA <= x"fffe"; - when "00" & x"2ea" => DATA <= x"0005"; - when "00" & x"2eb" => DATA <= x"13de"; - when "00" & x"2ec" => DATA <= x"fffe"; - when "00" & x"2ed" => DATA <= x"0005"; - when "00" & x"2ee" => DATA <= x"21ce"; - when "00" & x"2ef" => DATA <= x"0520"; - when "00" & x"2f0" => DATA <= x"2c5f"; - when "00" & x"2f1" => DATA <= x"4e73"; - when "00" & x"2f2" => DATA <= x"2f0e"; - when "00" & x"2f3" => DATA <= x"2c78"; - when "00" & x"2f4" => DATA <= x"0520"; - when "00" & x"2f5" => DATA <= x"1cf9"; - when "00" & x"2f6" => DATA <= x"fffe"; - when "00" & x"2f7" => DATA <= x"0005"; - when "00" & x"2f8" => DATA <= x"1cf9"; - when "00" & x"2f9" => DATA <= x"fffe"; - when "00" & x"2fa" => DATA <= x"0005"; - when "00" & x"2fb" => DATA <= x"21ce"; - when "00" & x"2fc" => DATA <= x"0520"; - when "00" & x"2fd" => DATA <= x"2c5f"; - when "00" & x"2fe" => DATA <= x"4e73"; - when "00" & x"2ff" => DATA <= x"13c0"; - when "00" & x"300" => DATA <= x"fffe"; - when "00" & x"301" => DATA <= x"0005"; - when "00" & x"302" => DATA <= x"4e73"; - when "00" & x"303" => DATA <= x"003f"; - when "00" & x"304" => DATA <= x"05a2"; + when "00" & x"21a" => DATA <= x"61c2"; + when "00" & x"21b" => DATA <= x"e198"; + when "00" & x"21c" => DATA <= x"60be"; + when "00" & x"21d" => DATA <= x"0839"; + when "00" & x"21e" => DATA <= x"0006"; + when "00" & x"21f" => DATA <= x"fffe"; + when "00" & x"220" => DATA <= x"0002"; + when "00" & x"221" => DATA <= x"67f6"; + when "00" & x"222" => DATA <= x"101e"; + when "00" & x"223" => DATA <= x"619e"; + when "00" & x"224" => DATA <= x"b03c"; + when "00" & x"225" => DATA <= x"000d"; + when "00" & x"226" => DATA <= x"66ec"; + when "00" & x"227" => DATA <= x"4e75"; + when "00" & x"228" => DATA <= x"0839"; + when "00" & x"229" => DATA <= x"0007"; + when "00" & x"22a" => DATA <= x"fffe"; + when "00" & x"22b" => DATA <= x"0006"; + when "00" & x"22c" => DATA <= x"6600"; + when "00" & x"22d" => DATA <= x"005e"; + when "00" & x"22e" => DATA <= x"0839"; + when "00" & x"22f" => DATA <= x"0007"; + when "00" & x"230" => DATA <= x"fffe"; + when "00" & x"231" => DATA <= x"0000"; + when "00" & x"232" => DATA <= x"6600"; + when "00" & x"233" => DATA <= x"0010"; + when "00" & x"234" => DATA <= x"2f0e"; + when "00" & x"235" => DATA <= x"2c79"; + when "00" & x"236" => DATA <= x"0000"; + when "00" & x"237" => DATA <= x"0408"; + when "00" & x"238" => DATA <= x"4e96"; + when "00" & x"239" => DATA <= x"2c5f"; + when "00" & x"23a" => DATA <= x"4e73"; + when "00" & x"23b" => DATA <= x"2f00"; + when "00" & x"23c" => DATA <= x"1039"; + when "00" & x"23d" => DATA <= x"fffe"; + when "00" & x"23e" => DATA <= x"0001"; + when "00" & x"23f" => DATA <= x"6b00"; + when "00" & x"240" => DATA <= x"0028"; + when "00" & x"241" => DATA <= x"2f01"; + when "00" & x"242" => DATA <= x"4280"; + when "00" & x"243" => DATA <= x"6100"; + when "00" & x"244" => DATA <= x"ff28"; + when "00" & x"245" => DATA <= x"e158"; + when "00" & x"246" => DATA <= x"6100"; + when "00" & x"247" => DATA <= x"ff22"; + when "00" & x"248" => DATA <= x"3200"; + when "00" & x"249" => DATA <= x"6100"; + when "00" & x"24a" => DATA <= x"ff1c"; + when "00" & x"24b" => DATA <= x"2f0e"; + when "00" & x"24c" => DATA <= x"2c79"; + when "00" & x"24d" => DATA <= x"0000"; + when "00" & x"24e" => DATA <= x"0440"; + when "00" & x"24f" => DATA <= x"4e96"; + when "00" & x"250" => DATA <= x"2c5f"; + when "00" & x"251" => DATA <= x"221f"; + when "00" & x"252" => DATA <= x"201f"; + when "00" & x"253" => DATA <= x"4e73"; + when "00" & x"254" => DATA <= x"2f0e"; + when "00" & x"255" => DATA <= x"2c79"; + when "00" & x"256" => DATA <= x"0000"; + when "00" & x"257" => DATA <= x"04cc"; + when "00" & x"258" => DATA <= x"4e96"; + when "00" & x"259" => DATA <= x"2c5f"; + when "00" & x"25a" => DATA <= x"201f"; + when "00" & x"25b" => DATA <= x"4e73"; + when "00" & x"25c" => DATA <= x"1039"; + when "00" & x"25d" => DATA <= x"fffe"; + when "00" & x"25e" => DATA <= x"0007"; + when "00" & x"25f" => DATA <= x"6a00"; + when "00" & x"260" => DATA <= x"003c"; + when "00" & x"261" => DATA <= x"2f00"; + when "00" & x"262" => DATA <= x"2f0e"; + when "00" & x"263" => DATA <= x"2c7c"; + when "00" & x"264" => DATA <= x"0000"; + when "00" & x"265" => DATA <= x"0700"; + when "00" & x"266" => DATA <= x"6100"; + when "00" & x"267" => DATA <= x"ff06"; + when "00" & x"268" => DATA <= x"4280"; + when "00" & x"269" => DATA <= x"6100"; + when "00" & x"26a" => DATA <= x"ff00"; + when "00" & x"26b" => DATA <= x"2cc0"; + when "00" & x"26c" => DATA <= x"6100"; + when "00" & x"26d" => DATA <= x"fefa"; + when "00" & x"26e" => DATA <= x"1cc0"; + when "00" & x"26f" => DATA <= x"66f8"; + when "00" & x"270" => DATA <= x"2c5f"; + when "00" & x"271" => DATA <= x"203c"; + when "00" & x"272" => DATA <= x"0000"; + when "00" & x"273" => DATA <= x"0700"; + when "00" & x"274" => DATA <= x"21c0"; + when "00" & x"275" => DATA <= x"0514"; + when "00" & x"276" => DATA <= x"21fc"; + when "00" & x"277" => DATA <= x"ffff"; + when "00" & x"278" => DATA <= x"6502"; + when "00" & x"279" => DATA <= x"0510"; + when "00" & x"27a" => DATA <= x"6100"; + when "00" & x"27b" => DATA <= x"0c2e"; + when "00" & x"27c" => DATA <= x"201f"; + when "00" & x"27d" => DATA <= x"4e73"; + when "00" & x"27e" => DATA <= x"2f08"; + when "00" & x"27f" => DATA <= x"2f00"; + when "00" & x"280" => DATA <= x"0280"; + when "00" & x"281" => DATA <= x"0000"; + when "00" & x"282" => DATA <= x"00ff"; + when "00" & x"283" => DATA <= x"e588"; + when "00" & x"284" => DATA <= x"41f9"; + when "00" & x"285" => DATA <= x"003f"; + when "00" & x"286" => DATA <= x"060a"; + when "00" & x"287" => DATA <= x"d1c0"; + when "00" & x"288" => DATA <= x"21d0"; + when "00" & x"289" => DATA <= x"0074"; + when "00" & x"28a" => DATA <= x"6100"; + when "00" & x"28b" => DATA <= x"fee2"; + when "00" & x"28c" => DATA <= x"2017"; + when "00" & x"28d" => DATA <= x"b03c"; + when "00" & x"28e" => DATA <= x"0005"; + when "00" & x"28f" => DATA <= x"6700"; + when "00" & x"290" => DATA <= x"005c"; + when "00" & x"291" => DATA <= x"6100"; + when "00" & x"292" => DATA <= x"ff06"; + when "00" & x"293" => DATA <= x"23c0"; + when "00" & x"294" => DATA <= x"0000"; + when "00" & x"295" => DATA <= x"0520"; + when "00" & x"296" => DATA <= x"1039"; + when "00" & x"297" => DATA <= x"fffe"; + when "00" & x"298" => DATA <= x"0005"; + when "00" & x"299" => DATA <= x"1039"; + when "00" & x"29a" => DATA <= x"fffe"; + when "00" & x"29b" => DATA <= x"0005"; + when "00" & x"29c" => DATA <= x"6100"; + when "00" & x"29d" => DATA <= x"febe"; + when "00" & x"29e" => DATA <= x"2017"; + when "00" & x"29f" => DATA <= x"b03c"; + when "00" & x"2a0" => DATA <= x"0006"; + when "00" & x"2a1" => DATA <= x"6500"; + when "00" & x"2a2" => DATA <= x"0038"; + when "00" & x"2a3" => DATA <= x"6600"; + when "00" & x"2a4" => DATA <= x"003a"; + when "00" & x"2a5" => DATA <= x"2f0e"; + when "00" & x"2a6" => DATA <= x"2c78"; + when "00" & x"2a7" => DATA <= x"0520"; + when "00" & x"2a8" => DATA <= x"203c"; + when "00" & x"2a9" => DATA <= x"0000"; + when "00" & x"2aa" => DATA <= x"00ff"; + when "00" & x"2ab" => DATA <= x"0839"; + when "00" & x"2ac" => DATA <= x"0007"; + when "00" & x"2ad" => DATA <= x"fffe"; + when "00" & x"2ae" => DATA <= x"0004"; + when "00" & x"2af" => DATA <= x"67f6"; + when "00" & x"2b0" => DATA <= x"13de"; + when "00" & x"2b1" => DATA <= x"fffe"; + when "00" & x"2b2" => DATA <= x"0005"; + when "00" & x"2b3" => DATA <= x"51c8"; + when "00" & x"2b4" => DATA <= x"ffee"; + when "00" & x"2b5" => DATA <= x"0839"; + when "00" & x"2b6" => DATA <= x"0007"; + when "00" & x"2b7" => DATA <= x"fffe"; + when "00" & x"2b8" => DATA <= x"0004"; + when "00" & x"2b9" => DATA <= x"67f6"; + when "00" & x"2ba" => DATA <= x"13e6"; + when "00" & x"2bb" => DATA <= x"fffe"; + when "00" & x"2bc" => DATA <= x"0005"; + when "00" & x"2bd" => DATA <= x"2c5f"; + when "00" & x"2be" => DATA <= x"201f"; + when "00" & x"2bf" => DATA <= x"205f"; + when "00" & x"2c0" => DATA <= x"4e73"; + when "00" & x"2c1" => DATA <= x"2f0e"; + when "00" & x"2c2" => DATA <= x"2c78"; + when "00" & x"2c3" => DATA <= x"0520"; + when "00" & x"2c4" => DATA <= x"203c"; + when "00" & x"2c5" => DATA <= x"0000"; + when "00" & x"2c6" => DATA <= x"00ff"; + when "00" & x"2c7" => DATA <= x"0839"; + when "00" & x"2c8" => DATA <= x"0007"; + when "00" & x"2c9" => DATA <= x"fffe"; + when "00" & x"2ca" => DATA <= x"0004"; + when "00" & x"2cb" => DATA <= x"67f6"; + when "00" & x"2cc" => DATA <= x"1cf9"; + when "00" & x"2cd" => DATA <= x"fffe"; + when "00" & x"2ce" => DATA <= x"0005"; + when "00" & x"2cf" => DATA <= x"51c8"; + when "00" & x"2d0" => DATA <= x"ffee"; + when "00" & x"2d1" => DATA <= x"2c5f"; + when "00" & x"2d2" => DATA <= x"60d6"; + when "00" & x"2d3" => DATA <= x"2f0e"; + when "00" & x"2d4" => DATA <= x"2c78"; + when "00" & x"2d5" => DATA <= x"0520"; + when "00" & x"2d6" => DATA <= x"13de"; + when "00" & x"2d7" => DATA <= x"fffe"; + when "00" & x"2d8" => DATA <= x"0005"; + when "00" & x"2d9" => DATA <= x"21ce"; + when "00" & x"2da" => DATA <= x"0520"; + when "00" & x"2db" => DATA <= x"2c5f"; + when "00" & x"2dc" => DATA <= x"4e73"; + when "00" & x"2dd" => DATA <= x"2f0e"; + when "00" & x"2de" => DATA <= x"2c78"; + when "00" & x"2df" => DATA <= x"0520"; + when "00" & x"2e0" => DATA <= x"1cf9"; + when "00" & x"2e1" => DATA <= x"fffe"; + when "00" & x"2e2" => DATA <= x"0005"; + when "00" & x"2e3" => DATA <= x"21ce"; + when "00" & x"2e4" => DATA <= x"0520"; + when "00" & x"2e5" => DATA <= x"2c5f"; + when "00" & x"2e6" => DATA <= x"4e73"; + when "00" & x"2e7" => DATA <= x"2f0e"; + when "00" & x"2e8" => DATA <= x"2c78"; + when "00" & x"2e9" => DATA <= x"0520"; + when "00" & x"2ea" => DATA <= x"13de"; + when "00" & x"2eb" => DATA <= x"fffe"; + when "00" & x"2ec" => DATA <= x"0005"; + when "00" & x"2ed" => DATA <= x"13de"; + when "00" & x"2ee" => DATA <= x"fffe"; + when "00" & x"2ef" => DATA <= x"0005"; + when "00" & x"2f0" => DATA <= x"21ce"; + when "00" & x"2f1" => DATA <= x"0520"; + when "00" & x"2f2" => DATA <= x"2c5f"; + when "00" & x"2f3" => DATA <= x"4e73"; + when "00" & x"2f4" => DATA <= x"2f0e"; + when "00" & x"2f5" => DATA <= x"2c78"; + when "00" & x"2f6" => DATA <= x"0520"; + when "00" & x"2f7" => DATA <= x"1cf9"; + when "00" & x"2f8" => DATA <= x"fffe"; + when "00" & x"2f9" => DATA <= x"0005"; + when "00" & x"2fa" => DATA <= x"1cf9"; + when "00" & x"2fb" => DATA <= x"fffe"; + when "00" & x"2fc" => DATA <= x"0005"; + when "00" & x"2fd" => DATA <= x"21ce"; + when "00" & x"2fe" => DATA <= x"0520"; + when "00" & x"2ff" => DATA <= x"2c5f"; + when "00" & x"300" => DATA <= x"4e73"; + when "00" & x"301" => DATA <= x"13c0"; + when "00" & x"302" => DATA <= x"fffe"; + when "00" & x"303" => DATA <= x"0005"; + when "00" & x"304" => DATA <= x"4e73"; when "00" & x"305" => DATA <= x"003f"; - when "00" & x"306" => DATA <= x"05b6"; + when "00" & x"306" => DATA <= x"05a6"; when "00" & x"307" => DATA <= x"003f"; - when "00" & x"308" => DATA <= x"05ca"; + when "00" & x"308" => DATA <= x"05ba"; when "00" & x"309" => DATA <= x"003f"; - when "00" & x"30a" => DATA <= x"05e4"; + when "00" & x"30a" => DATA <= x"05ce"; when "00" & x"30b" => DATA <= x"003f"; - when "00" & x"30c" => DATA <= x"05fe"; + when "00" & x"30c" => DATA <= x"05e8"; when "00" & x"30d" => DATA <= x"003f"; - when "00" & x"30e" => DATA <= x"05fe"; + when "00" & x"30e" => DATA <= x"0602"; when "00" & x"30f" => DATA <= x"003f"; - when "00" & x"310" => DATA <= x"05fe"; + when "00" & x"310" => DATA <= x"0602"; when "00" & x"311" => DATA <= x"003f"; - when "00" & x"312" => DATA <= x"05fe"; - when "00" & x"313" => DATA <= x"203c"; - when "00" & x"314" => DATA <= x"003f"; - when "00" & x"315" => DATA <= x"2c49"; - when "00" & x"316" => DATA <= x"6100"; - when "00" & x"317" => DATA <= x"03d0"; - when "00" & x"318" => DATA <= x"31df"; - when "00" & x"319" => DATA <= x"0544"; - when "00" & x"31a" => DATA <= x"21df"; - when "00" & x"31b" => DATA <= x"0540"; - when "00" & x"31c" => DATA <= x"31df"; - when "00" & x"31d" => DATA <= x"053e"; + when "00" & x"312" => DATA <= x"0602"; + when "00" & x"313" => DATA <= x"003f"; + when "00" & x"314" => DATA <= x"0602"; + when "00" & x"315" => DATA <= x"203c"; + when "00" & x"316" => DATA <= x"003f"; + when "00" & x"317" => DATA <= x"2c4d"; + when "00" & x"318" => DATA <= x"6100"; + when "00" & x"319" => DATA <= x"03d0"; + when "00" & x"31a" => DATA <= x"31df"; + when "00" & x"31b" => DATA <= x"0544"; + when "00" & x"31c" => DATA <= x"21df"; + when "00" & x"31d" => DATA <= x"0540"; when "00" & x"31e" => DATA <= x"31df"; - when "00" & x"31f" => DATA <= x"053c"; - when "00" & x"320" => DATA <= x"21d7"; - when "00" & x"321" => DATA <= x"0538"; - when "00" & x"322" => DATA <= x"223c"; - when "00" & x"323" => DATA <= x"0000"; - when "00" & x"324" => DATA <= x"0600"; - when "00" & x"325" => DATA <= x"143c"; - when "00" & x"326" => DATA <= x"00ff"; - when "00" & x"327" => DATA <= x"7000"; - when "00" & x"328" => DATA <= x"2038"; - when "00" & x"329" => DATA <= x"0538"; - when "00" & x"32a" => DATA <= x"6100"; - when "00" & x"32b" => DATA <= x"1090"; + when "00" & x"31f" => DATA <= x"053e"; + when "00" & x"320" => DATA <= x"31df"; + when "00" & x"321" => DATA <= x"053c"; + when "00" & x"322" => DATA <= x"21d7"; + when "00" & x"323" => DATA <= x"0538"; + when "00" & x"324" => DATA <= x"223c"; + when "00" & x"325" => DATA <= x"0000"; + when "00" & x"326" => DATA <= x"0600"; + when "00" & x"327" => DATA <= x"143c"; + when "00" & x"328" => DATA <= x"00ff"; + when "00" & x"329" => DATA <= x"7000"; + when "00" & x"32a" => DATA <= x"2038"; + when "00" & x"32b" => DATA <= x"0538"; when "00" & x"32c" => DATA <= x"6100"; - when "00" & x"32d" => DATA <= x"03a4"; + when "00" & x"32d" => DATA <= x"1090"; when "00" & x"32e" => DATA <= x"6100"; - when "00" & x"32f" => DATA <= x"03b4"; - when "00" & x"330" => DATA <= x"203c"; - when "00" & x"331" => DATA <= x"003f"; - when "00" & x"332" => DATA <= x"2c79"; - when "00" & x"333" => DATA <= x"6100"; - when "00" & x"334" => DATA <= x"0396"; - when "00" & x"335" => DATA <= x"223c"; - when "00" & x"336" => DATA <= x"0000"; - when "00" & x"337" => DATA <= x"0600"; - when "00" & x"338" => DATA <= x"143c"; - when "00" & x"339" => DATA <= x"00ff"; - when "00" & x"33a" => DATA <= x"7000"; - when "00" & x"33b" => DATA <= x"3038"; - when "00" & x"33c" => DATA <= x"0544"; - when "00" & x"33d" => DATA <= x"6100"; - when "00" & x"33e" => DATA <= x"1030"; + when "00" & x"32f" => DATA <= x"03a4"; + when "00" & x"330" => DATA <= x"6100"; + when "00" & x"331" => DATA <= x"03b4"; + when "00" & x"332" => DATA <= x"203c"; + when "00" & x"333" => DATA <= x"003f"; + when "00" & x"334" => DATA <= x"2c7d"; + when "00" & x"335" => DATA <= x"6100"; + when "00" & x"336" => DATA <= x"0396"; + when "00" & x"337" => DATA <= x"223c"; + when "00" & x"338" => DATA <= x"0000"; + when "00" & x"339" => DATA <= x"0600"; + when "00" & x"33a" => DATA <= x"143c"; + when "00" & x"33b" => DATA <= x"00ff"; + when "00" & x"33c" => DATA <= x"7000"; + when "00" & x"33d" => DATA <= x"3038"; + when "00" & x"33e" => DATA <= x"0544"; when "00" & x"33f" => DATA <= x"6100"; - when "00" & x"340" => DATA <= x"037e"; + when "00" & x"340" => DATA <= x"1030"; when "00" & x"341" => DATA <= x"6100"; - when "00" & x"342" => DATA <= x"038e"; - when "00" & x"343" => DATA <= x"203c"; - when "00" & x"344" => DATA <= x"003f"; - when "00" & x"345" => DATA <= x"2c90"; - when "00" & x"346" => DATA <= x"6100"; - when "00" & x"347" => DATA <= x"0370"; - when "00" & x"348" => DATA <= x"223c"; - when "00" & x"349" => DATA <= x"0000"; - when "00" & x"34a" => DATA <= x"0600"; - when "00" & x"34b" => DATA <= x"143c"; - when "00" & x"34c" => DATA <= x"00ff"; - when "00" & x"34d" => DATA <= x"7000"; - when "00" & x"34e" => DATA <= x"2038"; - when "00" & x"34f" => DATA <= x"0540"; - when "00" & x"350" => DATA <= x"6100"; - when "00" & x"351" => DATA <= x"1044"; + when "00" & x"342" => DATA <= x"037e"; + when "00" & x"343" => DATA <= x"6100"; + when "00" & x"344" => DATA <= x"038e"; + when "00" & x"345" => DATA <= x"203c"; + when "00" & x"346" => DATA <= x"003f"; + when "00" & x"347" => DATA <= x"2c94"; + when "00" & x"348" => DATA <= x"6100"; + when "00" & x"349" => DATA <= x"0370"; + when "00" & x"34a" => DATA <= x"223c"; + when "00" & x"34b" => DATA <= x"0000"; + when "00" & x"34c" => DATA <= x"0600"; + when "00" & x"34d" => DATA <= x"143c"; + when "00" & x"34e" => DATA <= x"00ff"; + when "00" & x"34f" => DATA <= x"7000"; + when "00" & x"350" => DATA <= x"2038"; + when "00" & x"351" => DATA <= x"0540"; when "00" & x"352" => DATA <= x"6100"; - when "00" & x"353" => DATA <= x"0358"; + when "00" & x"353" => DATA <= x"1044"; when "00" & x"354" => DATA <= x"6100"; - when "00" & x"355" => DATA <= x"0368"; - when "00" & x"356" => DATA <= x"203c"; - when "00" & x"357" => DATA <= x"003f"; - when "00" & x"358" => DATA <= x"2ca7"; - when "00" & x"359" => DATA <= x"6100"; - when "00" & x"35a" => DATA <= x"034a"; - when "00" & x"35b" => DATA <= x"223c"; - when "00" & x"35c" => DATA <= x"0000"; - when "00" & x"35d" => DATA <= x"0600"; - when "00" & x"35e" => DATA <= x"143c"; - when "00" & x"35f" => DATA <= x"00ff"; - when "00" & x"360" => DATA <= x"7000"; - when "00" & x"361" => DATA <= x"3038"; - when "00" & x"362" => DATA <= x"053e"; - when "00" & x"363" => DATA <= x"6100"; - when "00" & x"364" => DATA <= x"0fe4"; + when "00" & x"355" => DATA <= x"0358"; + when "00" & x"356" => DATA <= x"6100"; + when "00" & x"357" => DATA <= x"0368"; + when "00" & x"358" => DATA <= x"203c"; + when "00" & x"359" => DATA <= x"003f"; + when "00" & x"35a" => DATA <= x"2cab"; + when "00" & x"35b" => DATA <= x"6100"; + when "00" & x"35c" => DATA <= x"034a"; + when "00" & x"35d" => DATA <= x"223c"; + when "00" & x"35e" => DATA <= x"0000"; + when "00" & x"35f" => DATA <= x"0600"; + when "00" & x"360" => DATA <= x"143c"; + when "00" & x"361" => DATA <= x"00ff"; + when "00" & x"362" => DATA <= x"7000"; + when "00" & x"363" => DATA <= x"3038"; + when "00" & x"364" => DATA <= x"053e"; when "00" & x"365" => DATA <= x"6100"; - when "00" & x"366" => DATA <= x"0332"; - when "00" & x"367" => DATA <= x"103c"; - when "00" & x"368" => DATA <= x"0020"; - when "00" & x"369" => DATA <= x"6100"; - when "00" & x"36a" => DATA <= x"0312"; - when "00" & x"36b" => DATA <= x"103c"; - when "00" & x"36c" => DATA <= x"005b"; - when "00" & x"36d" => DATA <= x"6100"; - when "00" & x"36e" => DATA <= x"030a"; - when "00" & x"36f" => DATA <= x"303c"; - when "00" & x"370" => DATA <= x"053e"; - when "00" & x"371" => DATA <= x"223c"; - when "00" & x"372" => DATA <= x"0000"; - when "00" & x"373" => DATA <= x"0600"; - when "00" & x"374" => DATA <= x"6100"; - when "00" & x"375" => DATA <= x"1422"; - when "00" & x"376" => DATA <= x"2001"; - when "00" & x"377" => DATA <= x"6100"; - when "00" & x"378" => DATA <= x"030e"; - when "00" & x"379" => DATA <= x"103c"; - when "00" & x"37a" => DATA <= x"005d"; - when "00" & x"37b" => DATA <= x"6100"; - when "00" & x"37c" => DATA <= x"02ee"; + when "00" & x"366" => DATA <= x"0fe4"; + when "00" & x"367" => DATA <= x"6100"; + when "00" & x"368" => DATA <= x"0332"; + when "00" & x"369" => DATA <= x"103c"; + when "00" & x"36a" => DATA <= x"0020"; + when "00" & x"36b" => DATA <= x"6100"; + when "00" & x"36c" => DATA <= x"0312"; + when "00" & x"36d" => DATA <= x"103c"; + when "00" & x"36e" => DATA <= x"005b"; + when "00" & x"36f" => DATA <= x"6100"; + when "00" & x"370" => DATA <= x"030a"; + when "00" & x"371" => DATA <= x"303c"; + when "00" & x"372" => DATA <= x"053e"; + when "00" & x"373" => DATA <= x"223c"; + when "00" & x"374" => DATA <= x"0000"; + when "00" & x"375" => DATA <= x"0600"; + when "00" & x"376" => DATA <= x"6100"; + when "00" & x"377" => DATA <= x"1422"; + when "00" & x"378" => DATA <= x"2001"; + when "00" & x"379" => DATA <= x"6100"; + when "00" & x"37a" => DATA <= x"030e"; + when "00" & x"37b" => DATA <= x"103c"; + when "00" & x"37c" => DATA <= x"005d"; when "00" & x"37d" => DATA <= x"6100"; - when "00" & x"37e" => DATA <= x"0316"; - when "00" & x"37f" => DATA <= x"203c"; - when "00" & x"380" => DATA <= x"003f"; - when "00" & x"381" => DATA <= x"2cbe"; - when "00" & x"382" => DATA <= x"6100"; - when "00" & x"383" => DATA <= x"02f8"; - when "00" & x"384" => DATA <= x"223c"; - when "00" & x"385" => DATA <= x"0000"; - when "00" & x"386" => DATA <= x"0600"; - when "00" & x"387" => DATA <= x"143c"; - when "00" & x"388" => DATA <= x"00ff"; - when "00" & x"389" => DATA <= x"7000"; - when "00" & x"38a" => DATA <= x"3038"; - when "00" & x"38b" => DATA <= x"053c"; - when "00" & x"38c" => DATA <= x"6100"; - when "00" & x"38d" => DATA <= x"120e"; + when "00" & x"37e" => DATA <= x"02ee"; + when "00" & x"37f" => DATA <= x"6100"; + when "00" & x"380" => DATA <= x"0316"; + when "00" & x"381" => DATA <= x"203c"; + when "00" & x"382" => DATA <= x"003f"; + when "00" & x"383" => DATA <= x"2cc2"; + when "00" & x"384" => DATA <= x"6100"; + when "00" & x"385" => DATA <= x"02f8"; + when "00" & x"386" => DATA <= x"223c"; + when "00" & x"387" => DATA <= x"0000"; + when "00" & x"388" => DATA <= x"0600"; + when "00" & x"389" => DATA <= x"143c"; + when "00" & x"38a" => DATA <= x"00ff"; + when "00" & x"38b" => DATA <= x"7000"; + when "00" & x"38c" => DATA <= x"3038"; + when "00" & x"38d" => DATA <= x"053c"; when "00" & x"38e" => DATA <= x"6100"; - when "00" & x"38f" => DATA <= x"02e0"; + when "00" & x"38f" => DATA <= x"120e"; when "00" & x"390" => DATA <= x"6100"; - when "00" & x"391" => DATA <= x"02f0"; - when "00" & x"392" => DATA <= x"60fe"; - when "00" & x"393" => DATA <= x"6100"; - when "00" & x"394" => DATA <= x"02f8"; - when "00" & x"395" => DATA <= x"6000"; - when "00" & x"396" => DATA <= x"fc32"; - when "00" & x"397" => DATA <= x"203c"; - when "00" & x"398" => DATA <= x"003f"; - when "00" & x"399" => DATA <= x"2c5a"; - when "00" & x"39a" => DATA <= x"6100"; - when "00" & x"39b" => DATA <= x"02c8"; - when "00" & x"39c" => DATA <= x"6000"; - when "00" & x"39d" => DATA <= x"fef6"; - when "00" & x"39e" => DATA <= x"2f00"; - when "00" & x"39f" => DATA <= x"203c"; - when "00" & x"3a0" => DATA <= x"003f"; - when "00" & x"3a1" => DATA <= x"2d00"; - when "00" & x"3a2" => DATA <= x"6000"; - when "00" & x"3a3" => DATA <= x"0022"; - when "00" & x"3a4" => DATA <= x"2f00"; - when "00" & x"3a5" => DATA <= x"203c"; - when "00" & x"3a6" => DATA <= x"003f"; - when "00" & x"3a7" => DATA <= x"2d30"; - when "00" & x"3a8" => DATA <= x"6000"; - when "00" & x"3a9" => DATA <= x"0016"; - when "00" & x"3aa" => DATA <= x"2f00"; - when "00" & x"3ab" => DATA <= x"203c"; - when "00" & x"3ac" => DATA <= x"003f"; - when "00" & x"3ad" => DATA <= x"2d4c"; - when "00" & x"3ae" => DATA <= x"6000"; - when "00" & x"3af" => DATA <= x"000a"; - when "00" & x"3b0" => DATA <= x"2f00"; - when "00" & x"3b1" => DATA <= x"203c"; - when "00" & x"3b2" => DATA <= x"003f"; - when "00" & x"3b3" => DATA <= x"2dbc"; - when "00" & x"3b4" => DATA <= x"21ef"; - when "00" & x"3b5" => DATA <= x"0006"; - when "00" & x"3b6" => DATA <= x"0510"; - when "00" & x"3b7" => DATA <= x"6100"; - when "00" & x"3b8" => DATA <= x"09b0"; - when "00" & x"3b9" => DATA <= x"201f"; - when "00" & x"3ba" => DATA <= x"4e73"; - when "00" & x"3bb" => DATA <= x"203c"; - when "00" & x"3bc" => DATA <= x"003f"; - when "00" & x"3bd" => DATA <= x"2dd4"; - when "00" & x"3be" => DATA <= x"207c"; - when "00" & x"3bf" => DATA <= x"0000"; - when "00" & x"3c0" => DATA <= x"002b"; - when "00" & x"3c1" => DATA <= x"4e4c"; - when "00" & x"3c2" => DATA <= x"4e75"; - when "00" & x"3c3" => DATA <= x"7000"; - when "00" & x"3c4" => DATA <= x"2a40"; - when "00" & x"3c5" => DATA <= x"206d"; - when "00" & x"3c6" => DATA <= x"000c"; - when "00" & x"3c7" => DATA <= x"43fa"; - when "00" & x"3c8" => DATA <= x"000e"; - when "00" & x"3c9" => DATA <= x"2b49"; - when "00" & x"3ca" => DATA <= x"000c"; - when "00" & x"3cb" => DATA <= x"2e0f"; - when "00" & x"3cc" => DATA <= x"2c07"; - when "00" & x"3cd" => DATA <= x"4efa"; - when "00" & x"3ce" => DATA <= x"0003"; - when "00" & x"3cf" => DATA <= x"2b48"; - when "00" & x"3d0" => DATA <= x"000c"; - when "00" & x"3d1" => DATA <= x"9e8f"; - when "00" & x"3d2" => DATA <= x"7001"; - when "00" & x"3d3" => DATA <= x"0c07"; - when "00" & x"3d4" => DATA <= x"0012"; - when "00" & x"3d5" => DATA <= x"6754"; - when "00" & x"3d6" => DATA <= x"7002"; - when "00" & x"3d7" => DATA <= x"0c07"; - when "00" & x"3d8" => DATA <= x"003e"; - when "00" & x"3d9" => DATA <= x"674c"; - when "00" & x"3da" => DATA <= x"7007"; - when "00" & x"3db" => DATA <= x"0c07"; - when "00" & x"3dc" => DATA <= x"0026"; - when "00" & x"3dd" => DATA <= x"6744"; - when "00" & x"3de" => DATA <= x"7008"; - when "00" & x"3df" => DATA <= x"0c07"; - when "00" & x"3e0" => DATA <= x"001c"; - when "00" & x"3e1" => DATA <= x"673c"; - when "00" & x"3e2" => DATA <= x"7005"; - when "00" & x"3e3" => DATA <= x"0c07"; - when "00" & x"3e4" => DATA <= x"0010"; - when "00" & x"3e5" => DATA <= x"6734"; - when "00" & x"3e6" => DATA <= x"70ff"; - when "00" & x"3e7" => DATA <= x"0c07"; - when "00" & x"3e8" => DATA <= x"0024"; - when "00" & x"3e9" => DATA <= x"662c"; - when "00" & x"3ea" => DATA <= x"206d"; - when "00" & x"3eb" => DATA <= x"001a"; - when "00" & x"3ec" => DATA <= x"226d"; - when "00" & x"3ed" => DATA <= x"007e"; - when "00" & x"3ee" => DATA <= x"45fa"; - when "00" & x"3ef" => DATA <= x"001a"; - when "00" & x"3f0" => DATA <= x"2b4a"; - when "00" & x"3f1" => DATA <= x"007e"; - when "00" & x"3f2" => DATA <= x"45fa"; - when "00" & x"3f3" => DATA <= x"0010"; - when "00" & x"3f4" => DATA <= x"2b4a"; - when "00" & x"3f5" => DATA <= x"001a"; - when "00" & x"3f6" => DATA <= x"7003"; - when "00" & x"3f7" => DATA <= x"06fa"; - when "00" & x"3f8" => DATA <= x"0000"; - when "00" & x"3f9" => DATA <= x"0002"; - when "00" & x"3fa" => DATA <= x"ffff"; - when "00" & x"3fb" => DATA <= x"7004"; - when "00" & x"3fc" => DATA <= x"2b49"; - when "00" & x"3fd" => DATA <= x"007e"; - when "00" & x"3fe" => DATA <= x"2b48"; - when "00" & x"3ff" => DATA <= x"001a"; - when "00" & x"400" => DATA <= x"2e46"; - when "00" & x"401" => DATA <= x"4e75"; - when "00" & x"402" => DATA <= x"7000"; - when "00" & x"403" => DATA <= x"2a40"; - when "00" & x"404" => DATA <= x"206d"; - when "00" & x"405" => DATA <= x"002c"; - when "00" & x"406" => DATA <= x"43fa"; - when "00" & x"407" => DATA <= x"000e"; - when "00" & x"408" => DATA <= x"2b49"; - when "00" & x"409" => DATA <= x"002c"; - when "00" & x"40a" => DATA <= x"2e0f"; - when "00" & x"40b" => DATA <= x"70ff"; - when "00" & x"40c" => DATA <= x"6000"; - when "00" & x"40d" => DATA <= x"0004"; - when "00" & x"40e" => DATA <= x"7000"; - when "00" & x"40f" => DATA <= x"2e47"; - when "00" & x"410" => DATA <= x"2b48"; - when "00" & x"411" => DATA <= x"002c"; - when "00" & x"412" => DATA <= x"4e75"; - when "00" & x"413" => DATA <= x"7000"; + when "00" & x"391" => DATA <= x"02e0"; + when "00" & x"392" => DATA <= x"6100"; + when "00" & x"393" => DATA <= x"02f0"; + when "00" & x"394" => DATA <= x"60fe"; + when "00" & x"395" => DATA <= x"6100"; + when "00" & x"396" => DATA <= x"02f8"; + when "00" & x"397" => DATA <= x"6000"; + when "00" & x"398" => DATA <= x"fc32"; + when "00" & x"399" => DATA <= x"203c"; + when "00" & x"39a" => DATA <= x"003f"; + when "00" & x"39b" => DATA <= x"2c5e"; + when "00" & x"39c" => DATA <= x"6100"; + when "00" & x"39d" => DATA <= x"02c8"; + when "00" & x"39e" => DATA <= x"6000"; + when "00" & x"39f" => DATA <= x"fef6"; + when "00" & x"3a0" => DATA <= x"2f00"; + when "00" & x"3a1" => DATA <= x"203c"; + when "00" & x"3a2" => DATA <= x"003f"; + when "00" & x"3a3" => DATA <= x"2d04"; + when "00" & x"3a4" => DATA <= x"6000"; + when "00" & x"3a5" => DATA <= x"0022"; + when "00" & x"3a6" => DATA <= x"2f00"; + when "00" & x"3a7" => DATA <= x"203c"; + when "00" & x"3a8" => DATA <= x"003f"; + when "00" & x"3a9" => DATA <= x"2d34"; + when "00" & x"3aa" => DATA <= x"6000"; + when "00" & x"3ab" => DATA <= x"0016"; + when "00" & x"3ac" => DATA <= x"2f00"; + when "00" & x"3ad" => DATA <= x"203c"; + when "00" & x"3ae" => DATA <= x"003f"; + when "00" & x"3af" => DATA <= x"2d50"; + when "00" & x"3b0" => DATA <= x"6000"; + when "00" & x"3b1" => DATA <= x"000a"; + when "00" & x"3b2" => DATA <= x"2f00"; + when "00" & x"3b3" => DATA <= x"203c"; + when "00" & x"3b4" => DATA <= x"003f"; + when "00" & x"3b5" => DATA <= x"2dc0"; + when "00" & x"3b6" => DATA <= x"21ef"; + when "00" & x"3b7" => DATA <= x"0006"; + when "00" & x"3b8" => DATA <= x"0510"; + when "00" & x"3b9" => DATA <= x"6100"; + when "00" & x"3ba" => DATA <= x"09b0"; + when "00" & x"3bb" => DATA <= x"201f"; + when "00" & x"3bc" => DATA <= x"4e73"; + when "00" & x"3bd" => DATA <= x"203c"; + when "00" & x"3be" => DATA <= x"003f"; + when "00" & x"3bf" => DATA <= x"2dd8"; + when "00" & x"3c0" => DATA <= x"207c"; + when "00" & x"3c1" => DATA <= x"0000"; + when "00" & x"3c2" => DATA <= x"002b"; + when "00" & x"3c3" => DATA <= x"4e4c"; + when "00" & x"3c4" => DATA <= x"4e75"; + when "00" & x"3c5" => DATA <= x"7000"; + when "00" & x"3c6" => DATA <= x"2a40"; + when "00" & x"3c7" => DATA <= x"206d"; + when "00" & x"3c8" => DATA <= x"000c"; + when "00" & x"3c9" => DATA <= x"43fa"; + when "00" & x"3ca" => DATA <= x"000e"; + when "00" & x"3cb" => DATA <= x"2b49"; + when "00" & x"3cc" => DATA <= x"000c"; + when "00" & x"3cd" => DATA <= x"2e0f"; + when "00" & x"3ce" => DATA <= x"2c07"; + when "00" & x"3cf" => DATA <= x"4efa"; + when "00" & x"3d0" => DATA <= x"0003"; + when "00" & x"3d1" => DATA <= x"2b48"; + when "00" & x"3d2" => DATA <= x"000c"; + when "00" & x"3d3" => DATA <= x"9e8f"; + when "00" & x"3d4" => DATA <= x"7001"; + when "00" & x"3d5" => DATA <= x"0c07"; + when "00" & x"3d6" => DATA <= x"0012"; + when "00" & x"3d7" => DATA <= x"6754"; + when "00" & x"3d8" => DATA <= x"7002"; + when "00" & x"3d9" => DATA <= x"0c07"; + when "00" & x"3da" => DATA <= x"003e"; + when "00" & x"3db" => DATA <= x"674c"; + when "00" & x"3dc" => DATA <= x"7007"; + when "00" & x"3dd" => DATA <= x"0c07"; + when "00" & x"3de" => DATA <= x"0026"; + when "00" & x"3df" => DATA <= x"6744"; + when "00" & x"3e0" => DATA <= x"7008"; + when "00" & x"3e1" => DATA <= x"0c07"; + when "00" & x"3e2" => DATA <= x"001c"; + when "00" & x"3e3" => DATA <= x"673c"; + when "00" & x"3e4" => DATA <= x"7005"; + when "00" & x"3e5" => DATA <= x"0c07"; + when "00" & x"3e6" => DATA <= x"0010"; + when "00" & x"3e7" => DATA <= x"6734"; + when "00" & x"3e8" => DATA <= x"70ff"; + when "00" & x"3e9" => DATA <= x"0c07"; + when "00" & x"3ea" => DATA <= x"0024"; + when "00" & x"3eb" => DATA <= x"662c"; + when "00" & x"3ec" => DATA <= x"206d"; + when "00" & x"3ed" => DATA <= x"001a"; + when "00" & x"3ee" => DATA <= x"226d"; + when "00" & x"3ef" => DATA <= x"007e"; + when "00" & x"3f0" => DATA <= x"45fa"; + when "00" & x"3f1" => DATA <= x"001a"; + when "00" & x"3f2" => DATA <= x"2b4a"; + when "00" & x"3f3" => DATA <= x"007e"; + when "00" & x"3f4" => DATA <= x"45fa"; + when "00" & x"3f5" => DATA <= x"0010"; + when "00" & x"3f6" => DATA <= x"2b4a"; + when "00" & x"3f7" => DATA <= x"001a"; + when "00" & x"3f8" => DATA <= x"7003"; + when "00" & x"3f9" => DATA <= x"06fa"; + when "00" & x"3fa" => DATA <= x"0000"; + when "00" & x"3fb" => DATA <= x"0002"; + when "00" & x"3fc" => DATA <= x"ffff"; + when "00" & x"3fd" => DATA <= x"7004"; + when "00" & x"3fe" => DATA <= x"2b49"; + when "00" & x"3ff" => DATA <= x"007e"; + when "00" & x"400" => DATA <= x"2b48"; + when "00" & x"401" => DATA <= x"001a"; + when "00" & x"402" => DATA <= x"2e46"; + when "00" & x"403" => DATA <= x"4e75"; + when "00" & x"404" => DATA <= x"7000"; + when "00" & x"405" => DATA <= x"2a40"; + when "00" & x"406" => DATA <= x"206d"; + when "00" & x"407" => DATA <= x"002c"; + when "00" & x"408" => DATA <= x"43fa"; + when "00" & x"409" => DATA <= x"000e"; + when "00" & x"40a" => DATA <= x"2b49"; + when "00" & x"40b" => DATA <= x"002c"; + when "00" & x"40c" => DATA <= x"2e0f"; + when "00" & x"40d" => DATA <= x"70ff"; + when "00" & x"40e" => DATA <= x"6000"; + when "00" & x"40f" => DATA <= x"0004"; + when "00" & x"410" => DATA <= x"7000"; + when "00" & x"411" => DATA <= x"2e47"; + when "00" & x"412" => DATA <= x"2b48"; + when "00" & x"413" => DATA <= x"002c"; when "00" & x"414" => DATA <= x"4e75"; - when "00" & x"415" => DATA <= x"13fc"; - when "00" & x"416" => DATA <= x"00f0"; - when "00" & x"417" => DATA <= x"003f"; - when "00" & x"418" => DATA <= x"0000"; - when "00" & x"419" => DATA <= x"13fc"; - when "00" & x"41a" => DATA <= x"00ff"; - when "00" & x"41b" => DATA <= x"003f"; - when "00" & x"41c" => DATA <= x"0000"; - when "00" & x"41d" => DATA <= x"4e75"; - when "00" & x"41e" => DATA <= x"13fc"; - when "00" & x"41f" => DATA <= x"00aa"; - when "00" & x"420" => DATA <= x"003f"; - when "00" & x"421" => DATA <= x"5555"; - when "00" & x"422" => DATA <= x"13fc"; - when "00" & x"423" => DATA <= x"0055"; - when "00" & x"424" => DATA <= x"003f"; - when "00" & x"425" => DATA <= x"aaaa"; - when "00" & x"426" => DATA <= x"13fc"; - when "00" & x"427" => DATA <= x"0090"; - when "00" & x"428" => DATA <= x"003f"; - when "00" & x"429" => DATA <= x"5555"; - when "00" & x"42a" => DATA <= x"13c0"; - when "00" & x"42b" => DATA <= x"003f"; - when "00" & x"42c" => DATA <= x"0000"; - when "00" & x"42d" => DATA <= x"e140"; - when "00" & x"42e" => DATA <= x"61cc"; - when "00" & x"42f" => DATA <= x"13fc"; - when "00" & x"430" => DATA <= x"00aa"; - when "00" & x"431" => DATA <= x"003f"; - when "00" & x"432" => DATA <= x"5555"; - when "00" & x"433" => DATA <= x"13fc"; - when "00" & x"434" => DATA <= x"0055"; - when "00" & x"435" => DATA <= x"003f"; - when "00" & x"436" => DATA <= x"aaaa"; - when "00" & x"437" => DATA <= x"13fc"; - when "00" & x"438" => DATA <= x"0090"; - when "00" & x"439" => DATA <= x"003f"; - when "00" & x"43a" => DATA <= x"5555"; - when "00" & x"43b" => DATA <= x"13c0"; - when "00" & x"43c" => DATA <= x"003f"; - when "00" & x"43d" => DATA <= x"0001"; - when "00" & x"43e" => DATA <= x"61ac"; - when "00" & x"43f" => DATA <= x"4e75"; - when "00" & x"440" => DATA <= x"be3c"; - when "00" & x"441" => DATA <= x"0008"; - when "00" & x"442" => DATA <= x"6400"; - when "00" & x"443" => DATA <= x"0012"; - when "00" & x"444" => DATA <= x"e147"; - when "00" & x"445" => DATA <= x"e147"; - when "00" & x"446" => DATA <= x"223c"; - when "00" & x"447" => DATA <= x"0000"; - when "00" & x"448" => DATA <= x"ffff"; - when "00" & x"449" => DATA <= x"1015"; - when "00" & x"44a" => DATA <= x"6100"; - when "00" & x"44b" => DATA <= x"0004"; - when "00" & x"44c" => DATA <= x"4e75"; - when "00" & x"44d" => DATA <= x"b016"; - when "00" & x"44e" => DATA <= x"6700"; - when "00" & x"44f" => DATA <= x"0026"; - when "00" & x"450" => DATA <= x"13fc"; - when "00" & x"451" => DATA <= x"00aa"; - when "00" & x"452" => DATA <= x"003f"; - when "00" & x"453" => DATA <= x"5555"; - when "00" & x"454" => DATA <= x"13fc"; - when "00" & x"455" => DATA <= x"0055"; - when "00" & x"456" => DATA <= x"003f"; - when "00" & x"457" => DATA <= x"aaaa"; - when "00" & x"458" => DATA <= x"13fc"; - when "00" & x"459" => DATA <= x"00a0"; - when "00" & x"45a" => DATA <= x"003f"; - when "00" & x"45b" => DATA <= x"5555"; - when "00" & x"45c" => DATA <= x"1016"; - when "00" & x"45d" => DATA <= x"0c16"; - when "00" & x"45e" => DATA <= x"0002"; - when "00" & x"45f" => DATA <= x"66fa"; - when "00" & x"460" => DATA <= x"6100"; - when "00" & x"461" => DATA <= x"ff68"; - when "00" & x"462" => DATA <= x"4e75"; - when "00" & x"463" => DATA <= x"2f08"; - when "00" & x"464" => DATA <= x"2f38"; - when "00" & x"465" => DATA <= x"0000"; - when "00" & x"466" => DATA <= x"207c"; + when "00" & x"415" => DATA <= x"7000"; + when "00" & x"416" => DATA <= x"4e75"; + when "00" & x"417" => DATA <= x"13fc"; + when "00" & x"418" => DATA <= x"00f0"; + when "00" & x"419" => DATA <= x"003f"; + when "00" & x"41a" => DATA <= x"0000"; + when "00" & x"41b" => DATA <= x"13fc"; + when "00" & x"41c" => DATA <= x"00ff"; + when "00" & x"41d" => DATA <= x"003f"; + when "00" & x"41e" => DATA <= x"0000"; + when "00" & x"41f" => DATA <= x"4e75"; + when "00" & x"420" => DATA <= x"13fc"; + when "00" & x"421" => DATA <= x"00aa"; + when "00" & x"422" => DATA <= x"003f"; + when "00" & x"423" => DATA <= x"5555"; + when "00" & x"424" => DATA <= x"13fc"; + when "00" & x"425" => DATA <= x"0055"; + when "00" & x"426" => DATA <= x"003f"; + when "00" & x"427" => DATA <= x"aaaa"; + when "00" & x"428" => DATA <= x"13fc"; + when "00" & x"429" => DATA <= x"0090"; + when "00" & x"42a" => DATA <= x"003f"; + when "00" & x"42b" => DATA <= x"5555"; + when "00" & x"42c" => DATA <= x"13c0"; + when "00" & x"42d" => DATA <= x"003f"; + when "00" & x"42e" => DATA <= x"0000"; + when "00" & x"42f" => DATA <= x"e140"; + when "00" & x"430" => DATA <= x"61cc"; + when "00" & x"431" => DATA <= x"13fc"; + when "00" & x"432" => DATA <= x"00aa"; + when "00" & x"433" => DATA <= x"003f"; + when "00" & x"434" => DATA <= x"5555"; + when "00" & x"435" => DATA <= x"13fc"; + when "00" & x"436" => DATA <= x"0055"; + when "00" & x"437" => DATA <= x"003f"; + when "00" & x"438" => DATA <= x"aaaa"; + when "00" & x"439" => DATA <= x"13fc"; + when "00" & x"43a" => DATA <= x"0090"; + when "00" & x"43b" => DATA <= x"003f"; + when "00" & x"43c" => DATA <= x"5555"; + when "00" & x"43d" => DATA <= x"13c0"; + when "00" & x"43e" => DATA <= x"003f"; + when "00" & x"43f" => DATA <= x"0001"; + when "00" & x"440" => DATA <= x"61ac"; + when "00" & x"441" => DATA <= x"4e75"; + when "00" & x"442" => DATA <= x"be3c"; + when "00" & x"443" => DATA <= x"0008"; + when "00" & x"444" => DATA <= x"6400"; + when "00" & x"445" => DATA <= x"0012"; + when "00" & x"446" => DATA <= x"e147"; + when "00" & x"447" => DATA <= x"e147"; + when "00" & x"448" => DATA <= x"223c"; + when "00" & x"449" => DATA <= x"0000"; + when "00" & x"44a" => DATA <= x"ffff"; + when "00" & x"44b" => DATA <= x"1015"; + when "00" & x"44c" => DATA <= x"6100"; + when "00" & x"44d" => DATA <= x"0004"; + when "00" & x"44e" => DATA <= x"4e75"; + when "00" & x"44f" => DATA <= x"b016"; + when "00" & x"450" => DATA <= x"6700"; + when "00" & x"451" => DATA <= x"0026"; + when "00" & x"452" => DATA <= x"13fc"; + when "00" & x"453" => DATA <= x"00aa"; + when "00" & x"454" => DATA <= x"003f"; + when "00" & x"455" => DATA <= x"5555"; + when "00" & x"456" => DATA <= x"13fc"; + when "00" & x"457" => DATA <= x"0055"; + when "00" & x"458" => DATA <= x"003f"; + when "00" & x"459" => DATA <= x"aaaa"; + when "00" & x"45a" => DATA <= x"13fc"; + when "00" & x"45b" => DATA <= x"00a0"; + when "00" & x"45c" => DATA <= x"003f"; + when "00" & x"45d" => DATA <= x"5555"; + when "00" & x"45e" => DATA <= x"1016"; + when "00" & x"45f" => DATA <= x"0c16"; + when "00" & x"460" => DATA <= x"0002"; + when "00" & x"461" => DATA <= x"66fa"; + when "00" & x"462" => DATA <= x"6100"; + when "00" & x"463" => DATA <= x"ff68"; + when "00" & x"464" => DATA <= x"4e75"; + when "00" & x"465" => DATA <= x"2f08"; + when "00" & x"466" => DATA <= x"2f38"; when "00" & x"467" => DATA <= x"0000"; - when "00" & x"468" => DATA <= x"0000"; - when "00" & x"469" => DATA <= x"21fc"; - when "00" & x"46a" => DATA <= x"dead"; - when "00" & x"46b" => DATA <= x"beef"; - when "00" & x"46c" => DATA <= x"0000"; - when "00" & x"46d" => DATA <= x"d1fc"; + when "00" & x"468" => DATA <= x"207c"; + when "00" & x"469" => DATA <= x"0000"; + when "00" & x"46a" => DATA <= x"0000"; + when "00" & x"46b" => DATA <= x"21fc"; + when "00" & x"46c" => DATA <= x"dead"; + when "00" & x"46d" => DATA <= x"beef"; when "00" & x"46e" => DATA <= x"0000"; - when "00" & x"46f" => DATA <= x"0400"; - when "00" & x"470" => DATA <= x"0c90"; - when "00" & x"471" => DATA <= x"dead"; - when "00" & x"472" => DATA <= x"beef"; - when "00" & x"473" => DATA <= x"6700"; - when "00" & x"474" => DATA <= x"000a"; - when "00" & x"475" => DATA <= x"b1fc"; - when "00" & x"476" => DATA <= x"0030"; - when "00" & x"477" => DATA <= x"0000"; - when "00" & x"478" => DATA <= x"65e8"; - when "00" & x"479" => DATA <= x"2008"; - when "00" & x"47a" => DATA <= x"21df"; - when "00" & x"47b" => DATA <= x"0000"; - when "00" & x"47c" => DATA <= x"205f"; - when "00" & x"47d" => DATA <= x"4e75"; - when "00" & x"47e" => DATA <= x"2f0e"; - when "00" & x"47f" => DATA <= x"2f09"; - when "00" & x"480" => DATA <= x"2f08"; - when "00" & x"481" => DATA <= x"2f01"; - when "00" & x"482" => DATA <= x"c188"; - when "00" & x"483" => DATA <= x"0280"; - when "00" & x"484" => DATA <= x"00fd"; - when "00" & x"485" => DATA <= x"ffff"; - when "00" & x"486" => DATA <= x"43f9"; - when "00" & x"487" => DATA <= x"003f"; - when "00" & x"488" => DATA <= x"2f50"; - when "00" & x"489" => DATA <= x"b099"; - when "00" & x"48a" => DATA <= x"6700"; - when "00" & x"48b" => DATA <= x"0014"; - when "00" & x"48c" => DATA <= x"2219"; - when "00" & x"48d" => DATA <= x"b23c"; - when "00" & x"48e" => DATA <= x"00ff"; - when "00" & x"48f" => DATA <= x"6700"; - when "00" & x"490" => DATA <= x"0082"; - when "00" & x"491" => DATA <= x"b23c"; - when "00" & x"492" => DATA <= x"0000"; - when "00" & x"493" => DATA <= x"66f0"; - when "00" & x"494" => DATA <= x"60e8"; - when "00" & x"495" => DATA <= x"2c59"; - when "00" & x"496" => DATA <= x"c188"; - when "00" & x"497" => DATA <= x"bdfc"; - when "00" & x"498" => DATA <= x"0000"; - when "00" & x"499" => DATA <= x"0504"; - when "00" & x"49a" => DATA <= x"6400"; - when "00" & x"49b" => DATA <= x"0004"; - when "00" & x"49c" => DATA <= x"2c56"; - when "00" & x"49d" => DATA <= x"221f"; - when "00" & x"49e" => DATA <= x"205f"; - when "00" & x"49f" => DATA <= x"225f"; - when "00" & x"4a0" => DATA <= x"4e96"; - when "00" & x"4a1" => DATA <= x"6900"; - when "00" & x"4a2" => DATA <= x"001a"; - when "00" & x"4a3" => DATA <= x"6500"; - when "00" & x"4a4" => DATA <= x"000a"; - when "00" & x"4a5" => DATA <= x"2c5f"; - when "00" & x"4a6" => DATA <= x"0257"; - when "00" & x"4a7" => DATA <= x"fffc"; - when "00" & x"4a8" => DATA <= x"4e73"; - when "00" & x"4a9" => DATA <= x"2c5f"; - when "00" & x"4aa" => DATA <= x"0257"; - when "00" & x"4ab" => DATA <= x"fffd"; - when "00" & x"4ac" => DATA <= x"0057"; - when "00" & x"4ad" => DATA <= x"0001"; - when "00" & x"4ae" => DATA <= x"4e73"; - when "00" & x"4af" => DATA <= x"6500"; - when "00" & x"4b0" => DATA <= x"000e"; - when "00" & x"4b1" => DATA <= x"0057"; - when "00" & x"4b2" => DATA <= x"0002"; - when "00" & x"4b3" => DATA <= x"0257"; - when "00" & x"4b4" => DATA <= x"fffe"; - when "00" & x"4b5" => DATA <= x"6000"; - when "00" & x"4b6" => DATA <= x"0006"; - when "00" & x"4b7" => DATA <= x"0057"; - when "00" & x"4b8" => DATA <= x"0003"; - when "00" & x"4b9" => DATA <= x"2c5f"; - when "00" & x"4ba" => DATA <= x"c188"; - when "00" & x"4bb" => DATA <= x"0800"; - when "00" & x"4bc" => DATA <= x"0011"; - when "00" & x"4bd" => DATA <= x"6700"; - when "00" & x"4be" => DATA <= x"0006"; - when "00" & x"4bf" => DATA <= x"c188"; - when "00" & x"4c0" => DATA <= x"4e73"; + when "00" & x"46f" => DATA <= x"d1fc"; + when "00" & x"470" => DATA <= x"0000"; + when "00" & x"471" => DATA <= x"0400"; + when "00" & x"472" => DATA <= x"0c90"; + when "00" & x"473" => DATA <= x"dead"; + when "00" & x"474" => DATA <= x"beef"; + when "00" & x"475" => DATA <= x"6700"; + when "00" & x"476" => DATA <= x"000a"; + when "00" & x"477" => DATA <= x"b1fc"; + when "00" & x"478" => DATA <= x"0030"; + when "00" & x"479" => DATA <= x"0000"; + when "00" & x"47a" => DATA <= x"65e8"; + when "00" & x"47b" => DATA <= x"2008"; + when "00" & x"47c" => DATA <= x"21df"; + when "00" & x"47d" => DATA <= x"0000"; + when "00" & x"47e" => DATA <= x"205f"; + when "00" & x"47f" => DATA <= x"4e75"; + when "00" & x"480" => DATA <= x"2f0e"; + when "00" & x"481" => DATA <= x"2f09"; + when "00" & x"482" => DATA <= x"2f08"; + when "00" & x"483" => DATA <= x"2f01"; + when "00" & x"484" => DATA <= x"c188"; + when "00" & x"485" => DATA <= x"0280"; + when "00" & x"486" => DATA <= x"00fd"; + when "00" & x"487" => DATA <= x"ffff"; + when "00" & x"488" => DATA <= x"43f9"; + when "00" & x"489" => DATA <= x"003f"; + when "00" & x"48a" => DATA <= x"2f54"; + when "00" & x"48b" => DATA <= x"b099"; + when "00" & x"48c" => DATA <= x"6700"; + when "00" & x"48d" => DATA <= x"0014"; + when "00" & x"48e" => DATA <= x"2219"; + when "00" & x"48f" => DATA <= x"b23c"; + when "00" & x"490" => DATA <= x"00ff"; + when "00" & x"491" => DATA <= x"6700"; + when "00" & x"492" => DATA <= x"0082"; + when "00" & x"493" => DATA <= x"b23c"; + when "00" & x"494" => DATA <= x"0000"; + when "00" & x"495" => DATA <= x"66f0"; + when "00" & x"496" => DATA <= x"60e8"; + when "00" & x"497" => DATA <= x"2c59"; + when "00" & x"498" => DATA <= x"c188"; + when "00" & x"499" => DATA <= x"bdfc"; + when "00" & x"49a" => DATA <= x"0000"; + when "00" & x"49b" => DATA <= x"0504"; + when "00" & x"49c" => DATA <= x"6400"; + when "00" & x"49d" => DATA <= x"0004"; + when "00" & x"49e" => DATA <= x"2c56"; + when "00" & x"49f" => DATA <= x"221f"; + when "00" & x"4a0" => DATA <= x"205f"; + when "00" & x"4a1" => DATA <= x"225f"; + when "00" & x"4a2" => DATA <= x"4e96"; + when "00" & x"4a3" => DATA <= x"6900"; + when "00" & x"4a4" => DATA <= x"001a"; + when "00" & x"4a5" => DATA <= x"6500"; + when "00" & x"4a6" => DATA <= x"000a"; + when "00" & x"4a7" => DATA <= x"2c5f"; + when "00" & x"4a8" => DATA <= x"0257"; + when "00" & x"4a9" => DATA <= x"fffc"; + when "00" & x"4aa" => DATA <= x"4e73"; + when "00" & x"4ab" => DATA <= x"2c5f"; + when "00" & x"4ac" => DATA <= x"0257"; + when "00" & x"4ad" => DATA <= x"fffd"; + when "00" & x"4ae" => DATA <= x"0057"; + when "00" & x"4af" => DATA <= x"0001"; + when "00" & x"4b0" => DATA <= x"4e73"; + when "00" & x"4b1" => DATA <= x"6500"; + when "00" & x"4b2" => DATA <= x"000e"; + when "00" & x"4b3" => DATA <= x"0057"; + when "00" & x"4b4" => DATA <= x"0002"; + when "00" & x"4b5" => DATA <= x"0257"; + when "00" & x"4b6" => DATA <= x"fffe"; + when "00" & x"4b7" => DATA <= x"6000"; + when "00" & x"4b8" => DATA <= x"0006"; + when "00" & x"4b9" => DATA <= x"0057"; + when "00" & x"4ba" => DATA <= x"0003"; + when "00" & x"4bb" => DATA <= x"2c5f"; + when "00" & x"4bc" => DATA <= x"c188"; + when "00" & x"4bd" => DATA <= x"0800"; + when "00" & x"4be" => DATA <= x"0011"; + when "00" & x"4bf" => DATA <= x"6700"; + when "00" & x"4c0" => DATA <= x"0006"; when "00" & x"4c1" => DATA <= x"c188"; - when "00" & x"4c2" => DATA <= x"2f01"; - when "00" & x"4c3" => DATA <= x"7206"; - when "00" & x"4c4" => DATA <= x"6100"; - when "00" & x"4c5" => DATA <= x"07c6"; - when "00" & x"4c6" => DATA <= x"221f"; - when "00" & x"4c7" => DATA <= x"21c0"; - when "00" & x"4c8" => DATA <= x"0514"; - when "00" & x"4c9" => DATA <= x"21ef"; - when "00" & x"4ca" => DATA <= x"0002"; - when "00" & x"4cb" => DATA <= x"0510"; - when "00" & x"4cc" => DATA <= x"2f79"; - when "00" & x"4cd" => DATA <= x"0000"; - when "00" & x"4ce" => DATA <= x"0404"; - when "00" & x"4cf" => DATA <= x"0002"; - when "00" & x"4d0" => DATA <= x"4e73"; - when "00" & x"4d1" => DATA <= x"221f"; - when "00" & x"4d2" => DATA <= x"205f"; - when "00" & x"4d3" => DATA <= x"225f"; - when "00" & x"4d4" => DATA <= x"2040"; - when "00" & x"4d5" => DATA <= x"c0bc"; - when "00" & x"4d6" => DATA <= x"00fd"; - when "00" & x"4d7" => DATA <= x"ff00"; - when "00" & x"4d8" => DATA <= x"b0bc"; - when "00" & x"4d9" => DATA <= x"0000"; - when "00" & x"4da" => DATA <= x"0100"; - when "00" & x"4db" => DATA <= x"6600"; - when "00" & x"4dc" => DATA <= x"0012"; - when "00" & x"4dd" => DATA <= x"2008"; - when "00" & x"4de" => DATA <= x"4eb9"; - when "00" & x"4df" => DATA <= x"003f"; - when "00" & x"4e0" => DATA <= x"09e0"; - when "00" & x"4e1" => DATA <= x"2c5f"; - when "00" & x"4e2" => DATA <= x"0257"; - when "00" & x"4e3" => DATA <= x"fffc"; - when "00" & x"4e4" => DATA <= x"4e73"; - when "00" & x"4e5" => DATA <= x"2008"; - when "00" & x"4e6" => DATA <= x"2c78"; - when "00" & x"4e7" => DATA <= x"0460"; - when "00" & x"4e8" => DATA <= x"21ef"; - when "00" & x"4e9" => DATA <= x"0006"; - when "00" & x"4ea" => DATA <= x"0510"; - when "00" & x"4eb" => DATA <= x"4e96"; - when "00" & x"4ec" => DATA <= x"2c5f"; - when "00" & x"4ed" => DATA <= x"0057"; - when "00" & x"4ee" => DATA <= x"0002"; - when "00" & x"4ef" => DATA <= x"4e73"; - when "00" & x"4f0" => DATA <= x"201f"; - when "00" & x"4f1" => DATA <= x"6000"; - when "00" & x"4f2" => DATA <= x"0002"; - when "00" & x"4f3" => DATA <= x"2f38"; - when "00" & x"4f4" => DATA <= x"040c"; - when "00" & x"4f5" => DATA <= x"4e75"; - when "00" & x"4f6" => DATA <= x"2f00"; - when "00" & x"4f7" => DATA <= x"202f"; - when "00" & x"4f8" => DATA <= x"0004"; - when "00" & x"4f9" => DATA <= x"6100"; - when "00" & x"4fa" => DATA <= x"000a"; - when "00" & x"4fb" => DATA <= x"2f40"; - when "00" & x"4fc" => DATA <= x"0004"; - when "00" & x"4fd" => DATA <= x"201f"; - when "00" & x"4fe" => DATA <= x"4e75"; - when "00" & x"4ff" => DATA <= x"2f08"; - when "00" & x"500" => DATA <= x"2040"; - when "00" & x"501" => DATA <= x"1018"; - when "00" & x"502" => DATA <= x"6700"; - when "00" & x"503" => DATA <= x"0006"; - when "00" & x"504" => DATA <= x"61dc"; - when "00" & x"505" => DATA <= x"60f6"; - when "00" & x"506" => DATA <= x"2008"; - when "00" & x"507" => DATA <= x"205f"; - when "00" & x"508" => DATA <= x"4e75"; - when "00" & x"509" => DATA <= x"2f00"; - when "00" & x"50a" => DATA <= x"700a"; - when "00" & x"50b" => DATA <= x"61ce"; - when "00" & x"50c" => DATA <= x"700d"; - when "00" & x"50d" => DATA <= x"61ca"; - when "00" & x"50e" => DATA <= x"201f"; - when "00" & x"50f" => DATA <= x"4e75"; - when "00" & x"510" => DATA <= x"7000"; - when "00" & x"511" => DATA <= x"6100"; - when "00" & x"512" => DATA <= x"f9be"; + when "00" & x"4c2" => DATA <= x"4e73"; + when "00" & x"4c3" => DATA <= x"c188"; + when "00" & x"4c4" => DATA <= x"2f01"; + when "00" & x"4c5" => DATA <= x"7206"; + when "00" & x"4c6" => DATA <= x"6100"; + when "00" & x"4c7" => DATA <= x"07c6"; + when "00" & x"4c8" => DATA <= x"221f"; + when "00" & x"4c9" => DATA <= x"21c0"; + when "00" & x"4ca" => DATA <= x"0514"; + when "00" & x"4cb" => DATA <= x"21ef"; + when "00" & x"4cc" => DATA <= x"0002"; + when "00" & x"4cd" => DATA <= x"0510"; + when "00" & x"4ce" => DATA <= x"2f79"; + when "00" & x"4cf" => DATA <= x"0000"; + when "00" & x"4d0" => DATA <= x"0404"; + when "00" & x"4d1" => DATA <= x"0002"; + when "00" & x"4d2" => DATA <= x"4e73"; + when "00" & x"4d3" => DATA <= x"221f"; + when "00" & x"4d4" => DATA <= x"205f"; + when "00" & x"4d5" => DATA <= x"225f"; + when "00" & x"4d6" => DATA <= x"2040"; + when "00" & x"4d7" => DATA <= x"c0bc"; + when "00" & x"4d8" => DATA <= x"00fd"; + when "00" & x"4d9" => DATA <= x"ff00"; + when "00" & x"4da" => DATA <= x"b0bc"; + when "00" & x"4db" => DATA <= x"0000"; + when "00" & x"4dc" => DATA <= x"0100"; + when "00" & x"4dd" => DATA <= x"6600"; + when "00" & x"4de" => DATA <= x"0012"; + when "00" & x"4df" => DATA <= x"2008"; + when "00" & x"4e0" => DATA <= x"4eb9"; + when "00" & x"4e1" => DATA <= x"003f"; + when "00" & x"4e2" => DATA <= x"09e4"; + when "00" & x"4e3" => DATA <= x"2c5f"; + when "00" & x"4e4" => DATA <= x"0257"; + when "00" & x"4e5" => DATA <= x"fffc"; + when "00" & x"4e6" => DATA <= x"4e73"; + when "00" & x"4e7" => DATA <= x"2008"; + when "00" & x"4e8" => DATA <= x"2c78"; + when "00" & x"4e9" => DATA <= x"0460"; + when "00" & x"4ea" => DATA <= x"21ef"; + when "00" & x"4eb" => DATA <= x"0006"; + when "00" & x"4ec" => DATA <= x"0510"; + when "00" & x"4ed" => DATA <= x"4e96"; + when "00" & x"4ee" => DATA <= x"2c5f"; + when "00" & x"4ef" => DATA <= x"0057"; + when "00" & x"4f0" => DATA <= x"0002"; + when "00" & x"4f1" => DATA <= x"4e73"; + when "00" & x"4f2" => DATA <= x"201f"; + when "00" & x"4f3" => DATA <= x"6000"; + when "00" & x"4f4" => DATA <= x"0002"; + when "00" & x"4f5" => DATA <= x"2f38"; + when "00" & x"4f6" => DATA <= x"040c"; + when "00" & x"4f7" => DATA <= x"4e75"; + when "00" & x"4f8" => DATA <= x"2f00"; + when "00" & x"4f9" => DATA <= x"202f"; + when "00" & x"4fa" => DATA <= x"0004"; + when "00" & x"4fb" => DATA <= x"6100"; + when "00" & x"4fc" => DATA <= x"000a"; + when "00" & x"4fd" => DATA <= x"2f40"; + when "00" & x"4fe" => DATA <= x"0004"; + when "00" & x"4ff" => DATA <= x"201f"; + when "00" & x"500" => DATA <= x"4e75"; + when "00" & x"501" => DATA <= x"2f08"; + when "00" & x"502" => DATA <= x"2040"; + when "00" & x"503" => DATA <= x"1018"; + when "00" & x"504" => DATA <= x"6700"; + when "00" & x"505" => DATA <= x"0006"; + when "00" & x"506" => DATA <= x"61dc"; + when "00" & x"507" => DATA <= x"60f6"; + when "00" & x"508" => DATA <= x"2008"; + when "00" & x"509" => DATA <= x"205f"; + when "00" & x"50a" => DATA <= x"4e75"; + when "00" & x"50b" => DATA <= x"2f00"; + when "00" & x"50c" => DATA <= x"700a"; + when "00" & x"50d" => DATA <= x"61ce"; + when "00" & x"50e" => DATA <= x"700d"; + when "00" & x"50f" => DATA <= x"61ca"; + when "00" & x"510" => DATA <= x"201f"; + when "00" & x"511" => DATA <= x"4e75"; + when "00" & x"512" => DATA <= x"7000"; when "00" & x"513" => DATA <= x"6100"; - when "00" & x"514" => DATA <= x"f9a8"; - when "00" & x"515" => DATA <= x"e000"; - when "00" & x"516" => DATA <= x"6000"; - when "00" & x"517" => DATA <= x"f9a2"; - when "00" & x"518" => DATA <= x"2f0e"; - when "00" & x"519" => DATA <= x"2f00"; - when "00" & x"51a" => DATA <= x"2c40"; - when "00" & x"51b" => DATA <= x"6100"; - when "00" & x"51c" => DATA <= x"1ce8"; - when "00" & x"51d" => DATA <= x"101e"; - when "00" & x"51e" => DATA <= x"b03c"; - when "00" & x"51f" => DATA <= x"002a"; - when "00" & x"520" => DATA <= x"67f4"; - when "00" & x"521" => DATA <= x"1026"; - when "00" & x"522" => DATA <= x"43f9"; - when "00" & x"523" => DATA <= x"003f"; - when "00" & x"524" => DATA <= x"35cc"; - when "00" & x"525" => DATA <= x"2f0e"; - when "00" & x"526" => DATA <= x"2459"; - when "00" & x"527" => DATA <= x"b4fc"; - when "00" & x"528" => DATA <= x"ffff"; - when "00" & x"529" => DATA <= x"6700"; - when "00" & x"52a" => DATA <= x"0050"; - when "00" & x"52b" => DATA <= x"101e"; - when "00" & x"52c" => DATA <= x"0200"; - when "00" & x"52d" => DATA <= x"00df"; - when "00" & x"52e" => DATA <= x"b019"; - when "00" & x"52f" => DATA <= x"6600"; - when "00" & x"530" => DATA <= x"003a"; - when "00" & x"531" => DATA <= x"0c16"; - when "00" & x"532" => DATA <= x"002e"; - when "00" & x"533" => DATA <= x"6700"; - when "00" & x"534" => DATA <= x"0010"; - when "00" & x"535" => DATA <= x"0c11"; - when "00" & x"536" => DATA <= x"0020"; - when "00" & x"537" => DATA <= x"6700"; - when "00" & x"538" => DATA <= x"0008"; - when "00" & x"539" => DATA <= x"0c11"; - when "00" & x"53a" => DATA <= x"0000"; - when "00" & x"53b" => DATA <= x"66de"; - when "00" & x"53c" => DATA <= x"0c16"; - when "00" & x"53d" => DATA <= x"000d"; - when "00" & x"53e" => DATA <= x"6700"; - when "00" & x"53f" => DATA <= x"000a"; - when "00" & x"540" => DATA <= x"0c16"; - when "00" & x"541" => DATA <= x"0020"; - when "00" & x"542" => DATA <= x"6600"; - when "00" & x"543" => DATA <= x"0014"; - when "00" & x"544" => DATA <= x"6100"; - when "00" & x"545" => DATA <= x"1c96"; - when "00" & x"546" => DATA <= x"225f"; - when "00" & x"547" => DATA <= x"4e92"; - when "00" & x"548" => DATA <= x"201f"; - when "00" & x"549" => DATA <= x"2c5f"; - when "00" & x"54a" => DATA <= x"6500"; - when "00" & x"54b" => DATA <= x"0012"; - when "00" & x"54c" => DATA <= x"4e75"; - when "00" & x"54d" => DATA <= x"0c19"; - when "00" & x"54e" => DATA <= x"0000"; - when "00" & x"54f" => DATA <= x"66fa"; - when "00" & x"550" => DATA <= x"2c5f"; - when "00" & x"551" => DATA <= x"60a6"; + when "00" & x"514" => DATA <= x"f9be"; + when "00" & x"515" => DATA <= x"6100"; + when "00" & x"516" => DATA <= x"f9a8"; + when "00" & x"517" => DATA <= x"e000"; + when "00" & x"518" => DATA <= x"6000"; + when "00" & x"519" => DATA <= x"f9a2"; + when "00" & x"51a" => DATA <= x"2f0e"; + when "00" & x"51b" => DATA <= x"2f00"; + when "00" & x"51c" => DATA <= x"2c40"; + when "00" & x"51d" => DATA <= x"6100"; + when "00" & x"51e" => DATA <= x"1ce8"; + when "00" & x"51f" => DATA <= x"101e"; + when "00" & x"520" => DATA <= x"b03c"; + when "00" & x"521" => DATA <= x"002a"; + when "00" & x"522" => DATA <= x"67f4"; + when "00" & x"523" => DATA <= x"1026"; + when "00" & x"524" => DATA <= x"43f9"; + when "00" & x"525" => DATA <= x"003f"; + when "00" & x"526" => DATA <= x"35d0"; + when "00" & x"527" => DATA <= x"2f0e"; + when "00" & x"528" => DATA <= x"2459"; + when "00" & x"529" => DATA <= x"b4fc"; + when "00" & x"52a" => DATA <= x"ffff"; + when "00" & x"52b" => DATA <= x"6700"; + when "00" & x"52c" => DATA <= x"0050"; + when "00" & x"52d" => DATA <= x"101e"; + when "00" & x"52e" => DATA <= x"0200"; + when "00" & x"52f" => DATA <= x"00df"; + when "00" & x"530" => DATA <= x"b019"; + when "00" & x"531" => DATA <= x"6600"; + when "00" & x"532" => DATA <= x"003a"; + when "00" & x"533" => DATA <= x"0c16"; + when "00" & x"534" => DATA <= x"002e"; + when "00" & x"535" => DATA <= x"6700"; + when "00" & x"536" => DATA <= x"0010"; + when "00" & x"537" => DATA <= x"0c11"; + when "00" & x"538" => DATA <= x"0020"; + when "00" & x"539" => DATA <= x"6700"; + when "00" & x"53a" => DATA <= x"0008"; + when "00" & x"53b" => DATA <= x"0c11"; + when "00" & x"53c" => DATA <= x"0000"; + when "00" & x"53d" => DATA <= x"66de"; + when "00" & x"53e" => DATA <= x"0c16"; + when "00" & x"53f" => DATA <= x"000d"; + when "00" & x"540" => DATA <= x"6700"; + when "00" & x"541" => DATA <= x"000a"; + when "00" & x"542" => DATA <= x"0c16"; + when "00" & x"543" => DATA <= x"0020"; + when "00" & x"544" => DATA <= x"6600"; + when "00" & x"545" => DATA <= x"0014"; + when "00" & x"546" => DATA <= x"6100"; + when "00" & x"547" => DATA <= x"1c96"; + when "00" & x"548" => DATA <= x"225f"; + when "00" & x"549" => DATA <= x"4e92"; + when "00" & x"54a" => DATA <= x"201f"; + when "00" & x"54b" => DATA <= x"2c5f"; + when "00" & x"54c" => DATA <= x"6500"; + when "00" & x"54d" => DATA <= x"0012"; + when "00" & x"54e" => DATA <= x"4e75"; + when "00" & x"54f" => DATA <= x"0c19"; + when "00" & x"550" => DATA <= x"0000"; + when "00" & x"551" => DATA <= x"66fa"; when "00" & x"552" => DATA <= x"2c5f"; - when "00" & x"553" => DATA <= x"201f"; - when "00" & x"554" => DATA <= x"2f01"; - when "00" & x"555" => DATA <= x"7204"; - when "00" & x"556" => DATA <= x"6100"; - when "00" & x"557" => DATA <= x"06a2"; - when "00" & x"558" => DATA <= x"221f"; - when "00" & x"559" => DATA <= x"2c40"; - when "00" & x"55a" => DATA <= x"7002"; - when "00" & x"55b" => DATA <= x"6100"; - when "00" & x"55c" => DATA <= x"f92a"; + when "00" & x"553" => DATA <= x"60a6"; + when "00" & x"554" => DATA <= x"2c5f"; + when "00" & x"555" => DATA <= x"201f"; + when "00" & x"556" => DATA <= x"2f01"; + when "00" & x"557" => DATA <= x"7204"; + when "00" & x"558" => DATA <= x"6100"; + when "00" & x"559" => DATA <= x"06a2"; + when "00" & x"55a" => DATA <= x"221f"; + when "00" & x"55b" => DATA <= x"2c40"; + when "00" & x"55c" => DATA <= x"7002"; when "00" & x"55d" => DATA <= x"6100"; - when "00" & x"55e" => DATA <= x"f97a"; + when "00" & x"55e" => DATA <= x"f92a"; when "00" & x"55f" => DATA <= x"6100"; - when "00" & x"560" => DATA <= x"f910"; - when "00" & x"561" => DATA <= x"2c5f"; - when "00" & x"562" => DATA <= x"b03c"; - when "00" & x"563" => DATA <= x"0080"; - when "00" & x"564" => DATA <= x"6700"; - when "00" & x"565" => DATA <= x"00b6"; - when "00" & x"566" => DATA <= x"023c"; - when "00" & x"567" => DATA <= x"00fd"; - when "00" & x"568" => DATA <= x"4e75"; - when "00" & x"569" => DATA <= x"b03c"; - when "00" & x"56a" => DATA <= x"0080"; - when "00" & x"56b" => DATA <= x"6400"; - when "00" & x"56c" => DATA <= x"002a"; - when "00" & x"56d" => DATA <= x"b03c"; - when "00" & x"56e" => DATA <= x"007e"; - when "00" & x"56f" => DATA <= x"6600"; - when "00" & x"570" => DATA <= x"0002"; - when "00" & x"571" => DATA <= x"2f00"; - when "00" & x"572" => DATA <= x"103c"; - when "00" & x"573" => DATA <= x"0004"; - when "00" & x"574" => DATA <= x"6100"; - when "00" & x"575" => DATA <= x"f8f8"; - when "00" & x"576" => DATA <= x"1001"; - when "00" & x"577" => DATA <= x"6100"; - when "00" & x"578" => DATA <= x"f8f2"; - when "00" & x"579" => DATA <= x"2017"; - when "00" & x"57a" => DATA <= x"6100"; - when "00" & x"57b" => DATA <= x"f8ec"; + when "00" & x"560" => DATA <= x"f97a"; + when "00" & x"561" => DATA <= x"6100"; + when "00" & x"562" => DATA <= x"f910"; + when "00" & x"563" => DATA <= x"2c5f"; + when "00" & x"564" => DATA <= x"b03c"; + when "00" & x"565" => DATA <= x"0080"; + when "00" & x"566" => DATA <= x"6700"; + when "00" & x"567" => DATA <= x"00b6"; + when "00" & x"568" => DATA <= x"023c"; + when "00" & x"569" => DATA <= x"00fd"; + when "00" & x"56a" => DATA <= x"4e75"; + when "00" & x"56b" => DATA <= x"b03c"; + when "00" & x"56c" => DATA <= x"0080"; + when "00" & x"56d" => DATA <= x"6400"; + when "00" & x"56e" => DATA <= x"002a"; + when "00" & x"56f" => DATA <= x"b03c"; + when "00" & x"570" => DATA <= x"007e"; + when "00" & x"571" => DATA <= x"6600"; + when "00" & x"572" => DATA <= x"0002"; + when "00" & x"573" => DATA <= x"2f00"; + when "00" & x"574" => DATA <= x"103c"; + when "00" & x"575" => DATA <= x"0004"; + when "00" & x"576" => DATA <= x"6100"; + when "00" & x"577" => DATA <= x"f8f8"; + when "00" & x"578" => DATA <= x"1001"; + when "00" & x"579" => DATA <= x"6100"; + when "00" & x"57a" => DATA <= x"f8f2"; + when "00" & x"57b" => DATA <= x"2017"; when "00" & x"57c" => DATA <= x"6100"; - when "00" & x"57d" => DATA <= x"f8d6"; - when "00" & x"57e" => DATA <= x"1200"; - when "00" & x"57f" => DATA <= x"201f"; - when "00" & x"580" => DATA <= x"4e75"; - when "00" & x"581" => DATA <= x"b03c"; - when "00" & x"582" => DATA <= x"0082"; - when "00" & x"583" => DATA <= x"6700"; - when "00" & x"584" => DATA <= x"005a"; - when "00" & x"585" => DATA <= x"b03c"; - when "00" & x"586" => DATA <= x"0083"; - when "00" & x"587" => DATA <= x"6700"; - when "00" & x"588" => DATA <= x"005c"; - when "00" & x"589" => DATA <= x"b03c"; - when "00" & x"58a" => DATA <= x"0084"; - when "00" & x"58b" => DATA <= x"6700"; - when "00" & x"58c" => DATA <= x"005e"; - when "00" & x"58d" => DATA <= x"2f00"; - when "00" & x"58e" => DATA <= x"103c"; - when "00" & x"58f" => DATA <= x"0006"; - when "00" & x"590" => DATA <= x"6100"; - when "00" & x"591" => DATA <= x"f8c0"; - when "00" & x"592" => DATA <= x"1001"; - when "00" & x"593" => DATA <= x"6100"; - when "00" & x"594" => DATA <= x"f8ba"; - when "00" & x"595" => DATA <= x"1002"; - when "00" & x"596" => DATA <= x"6100"; - when "00" & x"597" => DATA <= x"f8b4"; - when "00" & x"598" => DATA <= x"201f"; - when "00" & x"599" => DATA <= x"6100"; - when "00" & x"59a" => DATA <= x"f8ae"; - when "00" & x"59b" => DATA <= x"b03c"; - when "00" & x"59c" => DATA <= x"008e"; - when "00" & x"59d" => DATA <= x"6700"; - when "00" & x"59e" => DATA <= x"0044"; - when "00" & x"59f" => DATA <= x"b03c"; - when "00" & x"5a0" => DATA <= x"009d"; - when "00" & x"5a1" => DATA <= x"6700"; - when "00" & x"5a2" => DATA <= x"009e"; - when "00" & x"5a3" => DATA <= x"2f00"; - when "00" & x"5a4" => DATA <= x"6100"; - when "00" & x"5a5" => DATA <= x"f886"; - when "00" & x"5a6" => DATA <= x"3f00"; - when "00" & x"5a7" => DATA <= x"6100"; - when "00" & x"5a8" => DATA <= x"f880"; - when "00" & x"5a9" => DATA <= x"1400"; - when "00" & x"5aa" => DATA <= x"6100"; - when "00" & x"5ab" => DATA <= x"f87a"; - when "00" & x"5ac" => DATA <= x"1200"; - when "00" & x"5ad" => DATA <= x"201f"; - when "00" & x"5ae" => DATA <= x"e000"; + when "00" & x"57d" => DATA <= x"f8ec"; + when "00" & x"57e" => DATA <= x"6100"; + when "00" & x"57f" => DATA <= x"f8d6"; + when "00" & x"580" => DATA <= x"1200"; + when "00" & x"581" => DATA <= x"201f"; + when "00" & x"582" => DATA <= x"4e75"; + when "00" & x"583" => DATA <= x"b03c"; + when "00" & x"584" => DATA <= x"0082"; + when "00" & x"585" => DATA <= x"6700"; + when "00" & x"586" => DATA <= x"005a"; + when "00" & x"587" => DATA <= x"b03c"; + when "00" & x"588" => DATA <= x"0083"; + when "00" & x"589" => DATA <= x"6700"; + when "00" & x"58a" => DATA <= x"005c"; + when "00" & x"58b" => DATA <= x"b03c"; + when "00" & x"58c" => DATA <= x"0084"; + when "00" & x"58d" => DATA <= x"6700"; + when "00" & x"58e" => DATA <= x"005e"; + when "00" & x"58f" => DATA <= x"2f00"; + when "00" & x"590" => DATA <= x"103c"; + when "00" & x"591" => DATA <= x"0006"; + when "00" & x"592" => DATA <= x"6100"; + when "00" & x"593" => DATA <= x"f8c0"; + when "00" & x"594" => DATA <= x"1001"; + when "00" & x"595" => DATA <= x"6100"; + when "00" & x"596" => DATA <= x"f8ba"; + when "00" & x"597" => DATA <= x"1002"; + when "00" & x"598" => DATA <= x"6100"; + when "00" & x"599" => DATA <= x"f8b4"; + when "00" & x"59a" => DATA <= x"201f"; + when "00" & x"59b" => DATA <= x"6100"; + when "00" & x"59c" => DATA <= x"f8ae"; + when "00" & x"59d" => DATA <= x"b03c"; + when "00" & x"59e" => DATA <= x"008e"; + when "00" & x"59f" => DATA <= x"6700"; + when "00" & x"5a0" => DATA <= x"0044"; + when "00" & x"5a1" => DATA <= x"b03c"; + when "00" & x"5a2" => DATA <= x"009d"; + when "00" & x"5a3" => DATA <= x"6700"; + when "00" & x"5a4" => DATA <= x"009e"; + when "00" & x"5a5" => DATA <= x"2f00"; + when "00" & x"5a6" => DATA <= x"6100"; + when "00" & x"5a7" => DATA <= x"f886"; + when "00" & x"5a8" => DATA <= x"3f00"; + when "00" & x"5a9" => DATA <= x"6100"; + when "00" & x"5aa" => DATA <= x"f880"; + when "00" & x"5ab" => DATA <= x"1400"; + when "00" & x"5ac" => DATA <= x"6100"; + when "00" & x"5ad" => DATA <= x"f87a"; + when "00" & x"5ae" => DATA <= x"1200"; when "00" & x"5af" => DATA <= x"201f"; - when "00" & x"5b0" => DATA <= x"4e75"; - when "00" & x"5b1" => DATA <= x"3238"; - when "00" & x"5b2" => DATA <= x"0524"; - when "00" & x"5b3" => DATA <= x"2401"; - when "00" & x"5b4" => DATA <= x"e082"; - when "00" & x"5b5" => DATA <= x"4e75"; - when "00" & x"5b6" => DATA <= x"2238"; - when "00" & x"5b7" => DATA <= x"0504"; - when "00" & x"5b8" => DATA <= x"2401"; - when "00" & x"5b9" => DATA <= x"e082"; - when "00" & x"5ba" => DATA <= x"4e75"; - when "00" & x"5bb" => DATA <= x"2238"; - when "00" & x"5bc" => DATA <= x"0500"; - when "00" & x"5bd" => DATA <= x"2401"; - when "00" & x"5be" => DATA <= x"e082"; - when "00" & x"5bf" => DATA <= x"4e75"; - when "00" & x"5c0" => DATA <= x"2c78"; - when "00" & x"5c1" => DATA <= x"0520"; - when "00" & x"5c2" => DATA <= x"122e"; - when "00" & x"5c3" => DATA <= x"0006"; - when "00" & x"5c4" => DATA <= x"7000"; - when "00" & x"5c5" => DATA <= x"102e"; - when "00" & x"5c6" => DATA <= x"0007"; - when "00" & x"5c7" => DATA <= x"ddc0"; - when "00" & x"5c8" => DATA <= x"4a1e"; - when "00" & x"5c9" => DATA <= x"6600"; - when "00" & x"5ca" => DATA <= x"0026"; - when "00" & x"5cb" => DATA <= x"0c1e"; - when "00" & x"5cc" => DATA <= x"0028"; - when "00" & x"5cd" => DATA <= x"6600"; - when "00" & x"5ce" => DATA <= x"001e"; - when "00" & x"5cf" => DATA <= x"0c1e"; - when "00" & x"5d0" => DATA <= x"0043"; - when "00" & x"5d1" => DATA <= x"6600"; - when "00" & x"5d2" => DATA <= x"0016"; - when "00" & x"5d3" => DATA <= x"0c1e"; - when "00" & x"5d4" => DATA <= x"0029"; - when "00" & x"5d5" => DATA <= x"6600"; - when "00" & x"5d6" => DATA <= x"000e"; - when "00" & x"5d7" => DATA <= x"0201"; - when "00" & x"5d8" => DATA <= x"000f"; - when "00" & x"5d9" => DATA <= x"0c01"; - when "00" & x"5da" => DATA <= x"0003"; - when "00" & x"5db" => DATA <= x"6600"; - when "00" & x"5dc" => DATA <= x"0018"; - when "00" & x"5dd" => DATA <= x"2c78"; - when "00" & x"5de" => DATA <= x"0520"; - when "00" & x"5df" => DATA <= x"7001"; - when "00" & x"5e0" => DATA <= x"223c"; - when "00" & x"5e1" => DATA <= x"0000"; - when "00" & x"5e2" => DATA <= x"052d"; - when "00" & x"5e3" => DATA <= x"6100"; - when "00" & x"5e4" => DATA <= x"001c"; - when "00" & x"5e5" => DATA <= x"7001"; - when "00" & x"5e6" => DATA <= x"4ed6"; - when "00" & x"5e7" => DATA <= x"4e75"; - when "00" & x"5e8" => DATA <= x"203c"; - when "00" & x"5e9" => DATA <= x"003f"; - when "00" & x"5ea" => DATA <= x"2da0"; - when "00" & x"5eb" => DATA <= x"21fc"; - when "00" & x"5ec" => DATA <= x"0000"; - when "00" & x"5ed" => DATA <= x"0000"; - when "00" & x"5ee" => DATA <= x"0510"; - when "00" & x"5ef" => DATA <= x"6000"; - when "00" & x"5f0" => DATA <= x"0540"; - when "00" & x"5f1" => DATA <= x"4e75"; - when "00" & x"5f2" => DATA <= x"b0bc"; - when "00" & x"5f3" => DATA <= x"0000"; - when "00" & x"5f4" => DATA <= x"00ff"; - when "00" & x"5f5" => DATA <= x"6200"; - when "00" & x"5f6" => DATA <= x"00d8"; - when "00" & x"5f7" => DATA <= x"2f0e"; - when "00" & x"5f8" => DATA <= x"2f00"; - when "00" & x"5f9" => DATA <= x"2f01"; - when "00" & x"5fa" => DATA <= x"2f02"; - when "00" & x"5fb" => DATA <= x"2c41"; - when "00" & x"5fc" => DATA <= x"4a40"; - when "00" & x"5fd" => DATA <= x"6600"; - when "00" & x"5fe" => DATA <= x"003c"; - when "00" & x"5ff" => DATA <= x"2f03"; - when "00" & x"600" => DATA <= x"2f04"; - when "00" & x"601" => DATA <= x"3038"; - when "00" & x"602" => DATA <= x"0524"; - when "00" & x"603" => DATA <= x"4840"; - when "00" & x"604" => DATA <= x"3016"; - when "00" & x"605" => DATA <= x"7200"; - when "00" & x"606" => DATA <= x"122e"; - when "00" & x"607" => DATA <= x"0002"; - when "00" & x"608" => DATA <= x"7400"; - when "00" & x"609" => DATA <= x"142e"; - when "00" & x"60a" => DATA <= x"0003"; - when "00" & x"60b" => DATA <= x"7600"; - when "00" & x"60c" => DATA <= x"162e"; - when "00" & x"60d" => DATA <= x"0004"; - when "00" & x"60e" => DATA <= x"7800"; - when "00" & x"60f" => DATA <= x"6100"; - when "00" & x"610" => DATA <= x"08cc"; - when "00" & x"611" => DATA <= x"281f"; - when "00" & x"612" => DATA <= x"261f"; - when "00" & x"613" => DATA <= x"241f"; - when "00" & x"614" => DATA <= x"2401"; - when "00" & x"615" => DATA <= x"5242"; - when "00" & x"616" => DATA <= x"221f"; - when "00" & x"617" => DATA <= x"201f"; - when "00" & x"618" => DATA <= x"2c5f"; - when "00" & x"619" => DATA <= x"023c"; - when "00" & x"61a" => DATA <= x"00fd"; - when "00" & x"61b" => DATA <= x"4e75"; - when "00" & x"61c" => DATA <= x"7200"; - when "00" & x"61d" => DATA <= x"7400"; - when "00" & x"61e" => DATA <= x"b03c"; - when "00" & x"61f" => DATA <= x"0014"; - when "00" & x"620" => DATA <= x"6200"; - when "00" & x"621" => DATA <= x"001e"; - when "00" & x"622" => DATA <= x"207c"; - when "00" & x"623" => DATA <= x"003f"; - when "00" & x"624" => DATA <= x"2f28"; - when "00" & x"625" => DATA <= x"d1c0"; - when "00" & x"626" => DATA <= x"5348"; - when "00" & x"627" => DATA <= x"1210"; - when "00" & x"628" => DATA <= x"207c"; - when "00" & x"629" => DATA <= x"003f"; - when "00" & x"62a" => DATA <= x"2f3c"; - when "00" & x"62b" => DATA <= x"d1c0"; - when "00" & x"62c" => DATA <= x"5348"; - when "00" & x"62d" => DATA <= x"1410"; - when "00" & x"62e" => DATA <= x"6000"; - when "00" & x"62f" => DATA <= x"0018"; - when "00" & x"630" => DATA <= x"b03c"; - when "00" & x"631" => DATA <= x"007f"; - when "00" & x"632" => DATA <= x"6200"; - when "00" & x"633" => DATA <= x"000a"; - when "00" & x"634" => DATA <= x"7210"; - when "00" & x"635" => DATA <= x"7410"; - when "00" & x"636" => DATA <= x"6000"; - when "00" & x"637" => DATA <= x"0008"; - when "00" & x"638" => DATA <= x"1216"; - when "00" & x"639" => DATA <= x"142e"; - when "00" & x"63a" => DATA <= x"0001"; - when "00" & x"63b" => DATA <= x"2f00"; - when "00" & x"63c" => DATA <= x"103c"; - when "00" & x"63d" => DATA <= x"0008"; - when "00" & x"63e" => DATA <= x"6100"; - when "00" & x"63f" => DATA <= x"f764"; - when "00" & x"640" => DATA <= x"201f"; - when "00" & x"641" => DATA <= x"6100"; - when "00" & x"642" => DATA <= x"f75e"; - when "00" & x"643" => DATA <= x"1001"; - when "00" & x"644" => DATA <= x"6100"; - when "00" & x"645" => DATA <= x"f758"; - when "00" & x"646" => DATA <= x"5341"; - when "00" & x"647" => DATA <= x"6b00"; - when "00" & x"648" => DATA <= x"000e"; - when "00" & x"649" => DATA <= x"1036"; - when "00" & x"64a" => DATA <= x"1000"; - when "00" & x"64b" => DATA <= x"6100"; - when "00" & x"64c" => DATA <= x"f74a"; - when "00" & x"64d" => DATA <= x"51c9"; - when "00" & x"64e" => DATA <= x"fff6"; - when "00" & x"64f" => DATA <= x"1002"; - when "00" & x"650" => DATA <= x"6100"; - when "00" & x"651" => DATA <= x"f740"; - when "00" & x"652" => DATA <= x"5342"; - when "00" & x"653" => DATA <= x"6b00"; - when "00" & x"654" => DATA <= x"000e"; - when "00" & x"655" => DATA <= x"6100"; - when "00" & x"656" => DATA <= x"f724"; - when "00" & x"657" => DATA <= x"1d80"; - when "00" & x"658" => DATA <= x"2000"; - when "00" & x"659" => DATA <= x"51ca"; - when "00" & x"65a" => DATA <= x"fff6"; - when "00" & x"65b" => DATA <= x"241f"; - when "00" & x"65c" => DATA <= x"221f"; - when "00" & x"65d" => DATA <= x"201f"; - when "00" & x"65e" => DATA <= x"2c5f"; - when "00" & x"65f" => DATA <= x"023c"; - when "00" & x"660" => DATA <= x"00fd"; - when "00" & x"661" => DATA <= x"4e75"; - when "00" & x"662" => DATA <= x"003c"; - when "00" & x"663" => DATA <= x"0002"; - when "00" & x"664" => DATA <= x"4e75"; - when "00" & x"665" => DATA <= x"2f00"; - when "00" & x"666" => DATA <= x"103c"; - when "00" & x"667" => DATA <= x"0014"; - when "00" & x"668" => DATA <= x"6100"; - when "00" & x"669" => DATA <= x"f710"; - when "00" & x"66a" => DATA <= x"2005"; - when "00" & x"66b" => DATA <= x"6100"; - when "00" & x"66c" => DATA <= x"f73e"; - when "00" & x"66d" => DATA <= x"2004"; - when "00" & x"66e" => DATA <= x"6100"; - when "00" & x"66f" => DATA <= x"f738"; - when "00" & x"670" => DATA <= x"2003"; - when "00" & x"671" => DATA <= x"6100"; - when "00" & x"672" => DATA <= x"f732"; - when "00" & x"673" => DATA <= x"2002"; - when "00" & x"674" => DATA <= x"6100"; - when "00" & x"675" => DATA <= x"f72c"; - when "00" & x"676" => DATA <= x"2c41"; - when "00" & x"677" => DATA <= x"6100"; - when "00" & x"678" => DATA <= x"f746"; - when "00" & x"679" => DATA <= x"201f"; - when "00" & x"67a" => DATA <= x"6100"; - when "00" & x"67b" => DATA <= x"f6ec"; + when "00" & x"5b0" => DATA <= x"e000"; + when "00" & x"5b1" => DATA <= x"201f"; + when "00" & x"5b2" => DATA <= x"4e75"; + when "00" & x"5b3" => DATA <= x"3238"; + when "00" & x"5b4" => DATA <= x"0524"; + when "00" & x"5b5" => DATA <= x"2401"; + when "00" & x"5b6" => DATA <= x"e082"; + when "00" & x"5b7" => DATA <= x"4e75"; + when "00" & x"5b8" => DATA <= x"2238"; + when "00" & x"5b9" => DATA <= x"0504"; + when "00" & x"5ba" => DATA <= x"2401"; + when "00" & x"5bb" => DATA <= x"e082"; + when "00" & x"5bc" => DATA <= x"4e75"; + when "00" & x"5bd" => DATA <= x"2238"; + when "00" & x"5be" => DATA <= x"0500"; + when "00" & x"5bf" => DATA <= x"2401"; + when "00" & x"5c0" => DATA <= x"e082"; + when "00" & x"5c1" => DATA <= x"4e75"; + when "00" & x"5c2" => DATA <= x"2c78"; + when "00" & x"5c3" => DATA <= x"0520"; + when "00" & x"5c4" => DATA <= x"122e"; + when "00" & x"5c5" => DATA <= x"0006"; + when "00" & x"5c6" => DATA <= x"7000"; + when "00" & x"5c7" => DATA <= x"102e"; + when "00" & x"5c8" => DATA <= x"0007"; + when "00" & x"5c9" => DATA <= x"ddc0"; + when "00" & x"5ca" => DATA <= x"4a1e"; + when "00" & x"5cb" => DATA <= x"6600"; + when "00" & x"5cc" => DATA <= x"0026"; + when "00" & x"5cd" => DATA <= x"0c1e"; + when "00" & x"5ce" => DATA <= x"0028"; + when "00" & x"5cf" => DATA <= x"6600"; + when "00" & x"5d0" => DATA <= x"001e"; + when "00" & x"5d1" => DATA <= x"0c1e"; + when "00" & x"5d2" => DATA <= x"0043"; + when "00" & x"5d3" => DATA <= x"6600"; + when "00" & x"5d4" => DATA <= x"0016"; + when "00" & x"5d5" => DATA <= x"0c1e"; + when "00" & x"5d6" => DATA <= x"0029"; + when "00" & x"5d7" => DATA <= x"6600"; + when "00" & x"5d8" => DATA <= x"000e"; + when "00" & x"5d9" => DATA <= x"0201"; + when "00" & x"5da" => DATA <= x"000f"; + when "00" & x"5db" => DATA <= x"0c01"; + when "00" & x"5dc" => DATA <= x"0003"; + when "00" & x"5dd" => DATA <= x"6600"; + when "00" & x"5de" => DATA <= x"0018"; + when "00" & x"5df" => DATA <= x"2c78"; + when "00" & x"5e0" => DATA <= x"0520"; + when "00" & x"5e1" => DATA <= x"7001"; + when "00" & x"5e2" => DATA <= x"223c"; + when "00" & x"5e3" => DATA <= x"0000"; + when "00" & x"5e4" => DATA <= x"052d"; + when "00" & x"5e5" => DATA <= x"6100"; + when "00" & x"5e6" => DATA <= x"001c"; + when "00" & x"5e7" => DATA <= x"7001"; + when "00" & x"5e8" => DATA <= x"4ed6"; + when "00" & x"5e9" => DATA <= x"4e75"; + when "00" & x"5ea" => DATA <= x"203c"; + when "00" & x"5eb" => DATA <= x"003f"; + when "00" & x"5ec" => DATA <= x"2da4"; + when "00" & x"5ed" => DATA <= x"21fc"; + when "00" & x"5ee" => DATA <= x"0000"; + when "00" & x"5ef" => DATA <= x"0000"; + when "00" & x"5f0" => DATA <= x"0510"; + when "00" & x"5f1" => DATA <= x"6000"; + when "00" & x"5f2" => DATA <= x"0540"; + when "00" & x"5f3" => DATA <= x"4e75"; + when "00" & x"5f4" => DATA <= x"b0bc"; + when "00" & x"5f5" => DATA <= x"0000"; + when "00" & x"5f6" => DATA <= x"00ff"; + when "00" & x"5f7" => DATA <= x"6200"; + when "00" & x"5f8" => DATA <= x"00d8"; + when "00" & x"5f9" => DATA <= x"2f0e"; + when "00" & x"5fa" => DATA <= x"2f00"; + when "00" & x"5fb" => DATA <= x"2f01"; + when "00" & x"5fc" => DATA <= x"2f02"; + when "00" & x"5fd" => DATA <= x"2c41"; + when "00" & x"5fe" => DATA <= x"4a40"; + when "00" & x"5ff" => DATA <= x"6600"; + when "00" & x"600" => DATA <= x"003c"; + when "00" & x"601" => DATA <= x"2f03"; + when "00" & x"602" => DATA <= x"2f04"; + when "00" & x"603" => DATA <= x"3038"; + when "00" & x"604" => DATA <= x"0524"; + when "00" & x"605" => DATA <= x"4840"; + when "00" & x"606" => DATA <= x"3016"; + when "00" & x"607" => DATA <= x"7200"; + when "00" & x"608" => DATA <= x"122e"; + when "00" & x"609" => DATA <= x"0002"; + when "00" & x"60a" => DATA <= x"7400"; + when "00" & x"60b" => DATA <= x"142e"; + when "00" & x"60c" => DATA <= x"0003"; + when "00" & x"60d" => DATA <= x"7600"; + when "00" & x"60e" => DATA <= x"162e"; + when "00" & x"60f" => DATA <= x"0004"; + when "00" & x"610" => DATA <= x"7800"; + when "00" & x"611" => DATA <= x"6100"; + when "00" & x"612" => DATA <= x"08cc"; + when "00" & x"613" => DATA <= x"281f"; + when "00" & x"614" => DATA <= x"261f"; + when "00" & x"615" => DATA <= x"241f"; + when "00" & x"616" => DATA <= x"2401"; + when "00" & x"617" => DATA <= x"5242"; + when "00" & x"618" => DATA <= x"221f"; + when "00" & x"619" => DATA <= x"201f"; + when "00" & x"61a" => DATA <= x"2c5f"; + when "00" & x"61b" => DATA <= x"023c"; + when "00" & x"61c" => DATA <= x"00fd"; + when "00" & x"61d" => DATA <= x"4e75"; + when "00" & x"61e" => DATA <= x"7200"; + when "00" & x"61f" => DATA <= x"7400"; + when "00" & x"620" => DATA <= x"b03c"; + when "00" & x"621" => DATA <= x"0014"; + when "00" & x"622" => DATA <= x"6200"; + when "00" & x"623" => DATA <= x"001e"; + when "00" & x"624" => DATA <= x"207c"; + when "00" & x"625" => DATA <= x"003f"; + when "00" & x"626" => DATA <= x"2f2c"; + when "00" & x"627" => DATA <= x"d1c0"; + when "00" & x"628" => DATA <= x"5348"; + when "00" & x"629" => DATA <= x"1210"; + when "00" & x"62a" => DATA <= x"207c"; + when "00" & x"62b" => DATA <= x"003f"; + when "00" & x"62c" => DATA <= x"2f40"; + when "00" & x"62d" => DATA <= x"d1c0"; + when "00" & x"62e" => DATA <= x"5348"; + when "00" & x"62f" => DATA <= x"1410"; + when "00" & x"630" => DATA <= x"6000"; + when "00" & x"631" => DATA <= x"0018"; + when "00" & x"632" => DATA <= x"b03c"; + when "00" & x"633" => DATA <= x"007f"; + when "00" & x"634" => DATA <= x"6200"; + when "00" & x"635" => DATA <= x"000a"; + when "00" & x"636" => DATA <= x"7210"; + when "00" & x"637" => DATA <= x"7410"; + when "00" & x"638" => DATA <= x"6000"; + when "00" & x"639" => DATA <= x"0008"; + when "00" & x"63a" => DATA <= x"1216"; + when "00" & x"63b" => DATA <= x"142e"; + when "00" & x"63c" => DATA <= x"0001"; + when "00" & x"63d" => DATA <= x"2f00"; + when "00" & x"63e" => DATA <= x"103c"; + when "00" & x"63f" => DATA <= x"0008"; + when "00" & x"640" => DATA <= x"6100"; + when "00" & x"641" => DATA <= x"f764"; + when "00" & x"642" => DATA <= x"201f"; + when "00" & x"643" => DATA <= x"6100"; + when "00" & x"644" => DATA <= x"f75e"; + when "00" & x"645" => DATA <= x"1001"; + when "00" & x"646" => DATA <= x"6100"; + when "00" & x"647" => DATA <= x"f758"; + when "00" & x"648" => DATA <= x"5341"; + when "00" & x"649" => DATA <= x"6b00"; + when "00" & x"64a" => DATA <= x"000e"; + when "00" & x"64b" => DATA <= x"1036"; + when "00" & x"64c" => DATA <= x"1000"; + when "00" & x"64d" => DATA <= x"6100"; + when "00" & x"64e" => DATA <= x"f74a"; + when "00" & x"64f" => DATA <= x"51c9"; + when "00" & x"650" => DATA <= x"fff6"; + when "00" & x"651" => DATA <= x"1002"; + when "00" & x"652" => DATA <= x"6100"; + when "00" & x"653" => DATA <= x"f740"; + when "00" & x"654" => DATA <= x"5342"; + when "00" & x"655" => DATA <= x"6b00"; + when "00" & x"656" => DATA <= x"000e"; + when "00" & x"657" => DATA <= x"6100"; + when "00" & x"658" => DATA <= x"f724"; + when "00" & x"659" => DATA <= x"1d80"; + when "00" & x"65a" => DATA <= x"2000"; + when "00" & x"65b" => DATA <= x"51ca"; + when "00" & x"65c" => DATA <= x"fff6"; + when "00" & x"65d" => DATA <= x"241f"; + when "00" & x"65e" => DATA <= x"221f"; + when "00" & x"65f" => DATA <= x"201f"; + when "00" & x"660" => DATA <= x"2c5f"; + when "00" & x"661" => DATA <= x"023c"; + when "00" & x"662" => DATA <= x"00fd"; + when "00" & x"663" => DATA <= x"4e75"; + when "00" & x"664" => DATA <= x"003c"; + when "00" & x"665" => DATA <= x"0002"; + when "00" & x"666" => DATA <= x"4e75"; + when "00" & x"667" => DATA <= x"2f00"; + when "00" & x"668" => DATA <= x"103c"; + when "00" & x"669" => DATA <= x"0014"; + when "00" & x"66a" => DATA <= x"6100"; + when "00" & x"66b" => DATA <= x"f710"; + when "00" & x"66c" => DATA <= x"2005"; + when "00" & x"66d" => DATA <= x"6100"; + when "00" & x"66e" => DATA <= x"f73e"; + when "00" & x"66f" => DATA <= x"2004"; + when "00" & x"670" => DATA <= x"6100"; + when "00" & x"671" => DATA <= x"f738"; + when "00" & x"672" => DATA <= x"2003"; + when "00" & x"673" => DATA <= x"6100"; + when "00" & x"674" => DATA <= x"f732"; + when "00" & x"675" => DATA <= x"2002"; + when "00" & x"676" => DATA <= x"6100"; + when "00" & x"677" => DATA <= x"f72c"; + when "00" & x"678" => DATA <= x"2c41"; + when "00" & x"679" => DATA <= x"6100"; + when "00" & x"67a" => DATA <= x"f746"; + when "00" & x"67b" => DATA <= x"201f"; when "00" & x"67c" => DATA <= x"6100"; - when "00" & x"67d" => DATA <= x"f6d6"; - when "00" & x"67e" => DATA <= x"2f00"; - when "00" & x"67f" => DATA <= x"6100"; - when "00" & x"680" => DATA <= x"f706"; - when "00" & x"681" => DATA <= x"2a00"; - when "00" & x"682" => DATA <= x"6100"; - when "00" & x"683" => DATA <= x"f700"; - when "00" & x"684" => DATA <= x"2800"; - when "00" & x"685" => DATA <= x"6100"; - when "00" & x"686" => DATA <= x"f6fa"; - when "00" & x"687" => DATA <= x"2600"; - when "00" & x"688" => DATA <= x"6100"; - when "00" & x"689" => DATA <= x"f6f4"; - when "00" & x"68a" => DATA <= x"2400"; - when "00" & x"68b" => DATA <= x"201f"; - when "00" & x"68c" => DATA <= x"4e75"; - when "00" & x"68d" => DATA <= x"2f00"; - when "00" & x"68e" => DATA <= x"103c"; - when "00" & x"68f" => DATA <= x"000c"; - when "00" & x"690" => DATA <= x"6100"; - when "00" & x"691" => DATA <= x"f6c0"; - when "00" & x"692" => DATA <= x"1001"; - when "00" & x"693" => DATA <= x"6100"; - when "00" & x"694" => DATA <= x"f6ba"; - when "00" & x"695" => DATA <= x"2002"; - when "00" & x"696" => DATA <= x"6100"; - when "00" & x"697" => DATA <= x"f6e8"; - when "00" & x"698" => DATA <= x"201f"; - when "00" & x"699" => DATA <= x"6100"; - when "00" & x"69a" => DATA <= x"f6ae"; + when "00" & x"67d" => DATA <= x"f6ec"; + when "00" & x"67e" => DATA <= x"6100"; + when "00" & x"67f" => DATA <= x"f6d6"; + when "00" & x"680" => DATA <= x"2f00"; + when "00" & x"681" => DATA <= x"6100"; + when "00" & x"682" => DATA <= x"f706"; + when "00" & x"683" => DATA <= x"2a00"; + when "00" & x"684" => DATA <= x"6100"; + when "00" & x"685" => DATA <= x"f700"; + when "00" & x"686" => DATA <= x"2800"; + when "00" & x"687" => DATA <= x"6100"; + when "00" & x"688" => DATA <= x"f6fa"; + when "00" & x"689" => DATA <= x"2600"; + when "00" & x"68a" => DATA <= x"6100"; + when "00" & x"68b" => DATA <= x"f6f4"; + when "00" & x"68c" => DATA <= x"2400"; + when "00" & x"68d" => DATA <= x"201f"; + when "00" & x"68e" => DATA <= x"4e75"; + when "00" & x"68f" => DATA <= x"2f00"; + when "00" & x"690" => DATA <= x"103c"; + when "00" & x"691" => DATA <= x"000c"; + when "00" & x"692" => DATA <= x"6100"; + when "00" & x"693" => DATA <= x"f6c0"; + when "00" & x"694" => DATA <= x"1001"; + when "00" & x"695" => DATA <= x"6100"; + when "00" & x"696" => DATA <= x"f6ba"; + when "00" & x"697" => DATA <= x"2002"; + when "00" & x"698" => DATA <= x"6100"; + when "00" & x"699" => DATA <= x"f6e8"; + when "00" & x"69a" => DATA <= x"201f"; when "00" & x"69b" => DATA <= x"6100"; - when "00" & x"69c" => DATA <= x"f698"; - when "00" & x"69d" => DATA <= x"2f00"; - when "00" & x"69e" => DATA <= x"6100"; - when "00" & x"69f" => DATA <= x"f6c8"; - when "00" & x"6a0" => DATA <= x"2400"; - when "00" & x"6a1" => DATA <= x"201f"; - when "00" & x"6a2" => DATA <= x"4e75"; - when "00" & x"6a3" => DATA <= x"103c"; - when "00" & x"6a4" => DATA <= x"000e"; - when "00" & x"6a5" => DATA <= x"4eb9"; - when "00" & x"6a6" => DATA <= x"003f"; - when "00" & x"6a7" => DATA <= x"03e2"; - when "00" & x"6a8" => DATA <= x"1001"; - when "00" & x"6a9" => DATA <= x"4eb9"; - when "00" & x"6aa" => DATA <= x"003f"; - when "00" & x"6ab" => DATA <= x"03e2"; - when "00" & x"6ac" => DATA <= x"6000"; - when "00" & x"6ad" => DATA <= x"fccc"; - when "00" & x"6ae" => DATA <= x"2f00"; - when "00" & x"6af" => DATA <= x"103c"; - when "00" & x"6b0" => DATA <= x"0010"; - when "00" & x"6b1" => DATA <= x"6100"; - when "00" & x"6b2" => DATA <= x"f67e"; - when "00" & x"6b3" => DATA <= x"1001"; - when "00" & x"6b4" => DATA <= x"6100"; - when "00" & x"6b5" => DATA <= x"f678"; - when "00" & x"6b6" => DATA <= x"2017"; - when "00" & x"6b7" => DATA <= x"6100"; - when "00" & x"6b8" => DATA <= x"f672"; + when "00" & x"69c" => DATA <= x"f6ae"; + when "00" & x"69d" => DATA <= x"6100"; + when "00" & x"69e" => DATA <= x"f698"; + when "00" & x"69f" => DATA <= x"2f00"; + when "00" & x"6a0" => DATA <= x"6100"; + when "00" & x"6a1" => DATA <= x"f6c8"; + when "00" & x"6a2" => DATA <= x"2400"; + when "00" & x"6a3" => DATA <= x"201f"; + when "00" & x"6a4" => DATA <= x"4e75"; + when "00" & x"6a5" => DATA <= x"103c"; + when "00" & x"6a6" => DATA <= x"000e"; + when "00" & x"6a7" => DATA <= x"4eb9"; + when "00" & x"6a8" => DATA <= x"003f"; + when "00" & x"6a9" => DATA <= x"03e6"; + when "00" & x"6aa" => DATA <= x"1001"; + when "00" & x"6ab" => DATA <= x"4eb9"; + when "00" & x"6ac" => DATA <= x"003f"; + when "00" & x"6ad" => DATA <= x"03e6"; + when "00" & x"6ae" => DATA <= x"6000"; + when "00" & x"6af" => DATA <= x"fccc"; + when "00" & x"6b0" => DATA <= x"2f00"; + when "00" & x"6b1" => DATA <= x"103c"; + when "00" & x"6b2" => DATA <= x"0010"; + when "00" & x"6b3" => DATA <= x"6100"; + when "00" & x"6b4" => DATA <= x"f67e"; + when "00" & x"6b5" => DATA <= x"1001"; + when "00" & x"6b6" => DATA <= x"6100"; + when "00" & x"6b7" => DATA <= x"f678"; + when "00" & x"6b8" => DATA <= x"2017"; when "00" & x"6b9" => DATA <= x"6100"; - when "00" & x"6ba" => DATA <= x"f65c"; - when "00" & x"6bb" => DATA <= x"201f"; - when "00" & x"6bc" => DATA <= x"4e75"; - when "00" & x"6bd" => DATA <= x"2f00"; - when "00" & x"6be" => DATA <= x"103c"; - when "00" & x"6bf" => DATA <= x"0016"; - when "00" & x"6c0" => DATA <= x"6100"; - when "00" & x"6c1" => DATA <= x"f660"; - when "00" & x"6c2" => DATA <= x"2004"; - when "00" & x"6c3" => DATA <= x"6100"; - when "00" & x"6c4" => DATA <= x"f68e"; - when "00" & x"6c5" => DATA <= x"2003"; - when "00" & x"6c6" => DATA <= x"6100"; - when "00" & x"6c7" => DATA <= x"f688"; - when "00" & x"6c8" => DATA <= x"2002"; - when "00" & x"6c9" => DATA <= x"6100"; - when "00" & x"6ca" => DATA <= x"f682"; - when "00" & x"6cb" => DATA <= x"2001"; - when "00" & x"6cc" => DATA <= x"6100"; - when "00" & x"6cd" => DATA <= x"f648"; - when "00" & x"6ce" => DATA <= x"201f"; - when "00" & x"6cf" => DATA <= x"6100"; - when "00" & x"6d0" => DATA <= x"f676"; + when "00" & x"6ba" => DATA <= x"f672"; + when "00" & x"6bb" => DATA <= x"6100"; + when "00" & x"6bc" => DATA <= x"f65c"; + when "00" & x"6bd" => DATA <= x"201f"; + when "00" & x"6be" => DATA <= x"4e75"; + when "00" & x"6bf" => DATA <= x"2f00"; + when "00" & x"6c0" => DATA <= x"103c"; + when "00" & x"6c1" => DATA <= x"0016"; + when "00" & x"6c2" => DATA <= x"6100"; + when "00" & x"6c3" => DATA <= x"f660"; + when "00" & x"6c4" => DATA <= x"2004"; + when "00" & x"6c5" => DATA <= x"6100"; + when "00" & x"6c6" => DATA <= x"f68e"; + when "00" & x"6c7" => DATA <= x"2003"; + when "00" & x"6c8" => DATA <= x"6100"; + when "00" & x"6c9" => DATA <= x"f688"; + when "00" & x"6ca" => DATA <= x"2002"; + when "00" & x"6cb" => DATA <= x"6100"; + when "00" & x"6cc" => DATA <= x"f682"; + when "00" & x"6cd" => DATA <= x"2001"; + when "00" & x"6ce" => DATA <= x"6100"; + when "00" & x"6cf" => DATA <= x"f648"; + when "00" & x"6d0" => DATA <= x"201f"; when "00" & x"6d1" => DATA <= x"6100"; - when "00" & x"6d2" => DATA <= x"f62c"; - when "00" & x"6d3" => DATA <= x"2800"; - when "00" & x"6d4" => DATA <= x"6100"; - when "00" & x"6d5" => DATA <= x"f65c"; - when "00" & x"6d6" => DATA <= x"2600"; - when "00" & x"6d7" => DATA <= x"6100"; - when "00" & x"6d8" => DATA <= x"f656"; - when "00" & x"6d9" => DATA <= x"2400"; - when "00" & x"6da" => DATA <= x"6100"; - when "00" & x"6db" => DATA <= x"f61a"; - when "00" & x"6dc" => DATA <= x"2200"; - when "00" & x"6dd" => DATA <= x"6000"; - when "00" & x"6de" => DATA <= x"fc6a"; - when "00" & x"6df" => DATA <= x"2f00"; - when "00" & x"6e0" => DATA <= x"103c"; - when "00" & x"6e1" => DATA <= x"0012"; - when "00" & x"6e2" => DATA <= x"6100"; - when "00" & x"6e3" => DATA <= x"f61c"; - when "00" & x"6e4" => DATA <= x"201f"; - when "00" & x"6e5" => DATA <= x"6100"; - when "00" & x"6e6" => DATA <= x"f616"; - when "00" & x"6e7" => DATA <= x"4a40"; - when "00" & x"6e8" => DATA <= x"6600"; - when "00" & x"6e9" => DATA <= x"0012"; - when "00" & x"6ea" => DATA <= x"2f00"; - when "00" & x"6eb" => DATA <= x"1001"; - when "00" & x"6ec" => DATA <= x"6100"; - when "00" & x"6ed" => DATA <= x"f608"; + when "00" & x"6d2" => DATA <= x"f676"; + when "00" & x"6d3" => DATA <= x"6100"; + when "00" & x"6d4" => DATA <= x"f62c"; + when "00" & x"6d5" => DATA <= x"2800"; + when "00" & x"6d6" => DATA <= x"6100"; + when "00" & x"6d7" => DATA <= x"f65c"; + when "00" & x"6d8" => DATA <= x"2600"; + when "00" & x"6d9" => DATA <= x"6100"; + when "00" & x"6da" => DATA <= x"f656"; + when "00" & x"6db" => DATA <= x"2400"; + when "00" & x"6dc" => DATA <= x"6100"; + when "00" & x"6dd" => DATA <= x"f61a"; + when "00" & x"6de" => DATA <= x"2200"; + when "00" & x"6df" => DATA <= x"6000"; + when "00" & x"6e0" => DATA <= x"fc6a"; + when "00" & x"6e1" => DATA <= x"2f00"; + when "00" & x"6e2" => DATA <= x"103c"; + when "00" & x"6e3" => DATA <= x"0012"; + when "00" & x"6e4" => DATA <= x"6100"; + when "00" & x"6e5" => DATA <= x"f61c"; + when "00" & x"6e6" => DATA <= x"201f"; + when "00" & x"6e7" => DATA <= x"6100"; + when "00" & x"6e8" => DATA <= x"f616"; + when "00" & x"6e9" => DATA <= x"4a40"; + when "00" & x"6ea" => DATA <= x"6600"; + when "00" & x"6eb" => DATA <= x"0012"; + when "00" & x"6ec" => DATA <= x"2f00"; + when "00" & x"6ed" => DATA <= x"1001"; when "00" & x"6ee" => DATA <= x"6100"; - when "00" & x"6ef" => DATA <= x"f5f2"; - when "00" & x"6f0" => DATA <= x"201f"; - when "00" & x"6f1" => DATA <= x"4e75"; - when "00" & x"6f2" => DATA <= x"6100"; - when "00" & x"6f3" => DATA <= x"f650"; - when "00" & x"6f4" => DATA <= x"6000"; - when "00" & x"6f5" => DATA <= x"f5e6"; - when "00" & x"6f6" => DATA <= x"2800"; - when "00" & x"6f7" => DATA <= x"c8bc"; - when "00" & x"6f8" => DATA <= x"d000"; - when "00" & x"6f9" => DATA <= x"0000"; - when "00" & x"6fa" => DATA <= x"6000"; - when "00" & x"6fb" => DATA <= x"06f6"; - when "00" & x"6fc" => DATA <= x"2f05"; - when "00" & x"6fd" => DATA <= x"2f04"; - when "00" & x"6fe" => DATA <= x"2f01"; - when "00" & x"6ff" => DATA <= x"2f00"; - when "00" & x"700" => DATA <= x"2203"; - when "00" & x"701" => DATA <= x"700a"; - when "00" & x"702" => DATA <= x"6100"; - when "00" & x"703" => DATA <= x"04fa"; - when "00" & x"704" => DATA <= x"2801"; - when "00" & x"705" => DATA <= x"2202"; - when "00" & x"706" => DATA <= x"7009"; - when "00" & x"707" => DATA <= x"6100"; - when "00" & x"708" => DATA <= x"04f0"; - when "00" & x"709" => DATA <= x"2a01"; - when "00" & x"70a" => DATA <= x"221f"; - when "00" & x"70b" => DATA <= x"261f"; - when "00" & x"70c" => DATA <= x"7006"; - when "00" & x"70d" => DATA <= x"6100"; - when "00" & x"70e" => DATA <= x"04e4"; - when "00" & x"70f" => DATA <= x"2001"; - when "00" & x"710" => DATA <= x"2203"; - when "00" & x"711" => DATA <= x"2604"; - when "00" & x"712" => DATA <= x"2405"; - when "00" & x"713" => DATA <= x"281f"; - when "00" & x"714" => DATA <= x"2a1f"; - when "00" & x"715" => DATA <= x"023c"; - when "00" & x"716" => DATA <= x"00fd"; - when "00" & x"717" => DATA <= x"4e75"; - when "00" & x"718" => DATA <= x"203c"; - when "00" & x"719" => DATA <= x"0000"; - when "00" & x"71a" => DATA <= x"0600"; - when "00" & x"71b" => DATA <= x"223c"; - when "00" & x"71c" => DATA <= x"0000"; - when "00" & x"71d" => DATA <= x"0500"; - when "00" & x"71e" => DATA <= x"243c"; - when "00" & x"71f" => DATA <= x"0000"; - when "00" & x"720" => DATA <= x"052d"; - when "00" & x"721" => DATA <= x"4e75"; - when "00" & x"722" => DATA <= x"2f38"; - when "00" & x"723" => DATA <= x"04d0"; - when "00" & x"724" => DATA <= x"4e75"; - when "00" & x"725" => DATA <= x"2f03"; - when "00" & x"726" => DATA <= x"2f02"; - when "00" & x"727" => DATA <= x"2f01"; - when "00" & x"728" => DATA <= x"2f00"; - when "00" & x"729" => DATA <= x"2207"; - when "00" & x"72a" => DATA <= x"7004"; - when "00" & x"72b" => DATA <= x"6100"; - when "00" & x"72c" => DATA <= x"04a8"; - when "00" & x"72d" => DATA <= x"2e01"; - when "00" & x"72e" => DATA <= x"2206"; - when "00" & x"72f" => DATA <= x"7003"; - when "00" & x"730" => DATA <= x"6100"; - when "00" & x"731" => DATA <= x"049e"; - when "00" & x"732" => DATA <= x"2c01"; - when "00" & x"733" => DATA <= x"2205"; - when "00" & x"734" => DATA <= x"7002"; - when "00" & x"735" => DATA <= x"6100"; - when "00" & x"736" => DATA <= x"0494"; - when "00" & x"737" => DATA <= x"2a01"; - when "00" & x"738" => DATA <= x"2204"; - when "00" & x"739" => DATA <= x"7001"; - when "00" & x"73a" => DATA <= x"6100"; - when "00" & x"73b" => DATA <= x"048a"; - when "00" & x"73c" => DATA <= x"2801"; - when "00" & x"73d" => DATA <= x"221f"; - when "00" & x"73e" => DATA <= x"700b"; - when "00" & x"73f" => DATA <= x"6100"; - when "00" & x"740" => DATA <= x"0480"; - when "00" & x"741" => DATA <= x"2001"; - when "00" & x"742" => DATA <= x"221f"; - when "00" & x"743" => DATA <= x"2f00"; - when "00" & x"744" => DATA <= x"7000"; - when "00" & x"745" => DATA <= x"6100"; - when "00" & x"746" => DATA <= x"0474"; - when "00" & x"747" => DATA <= x"201f"; - when "00" & x"748" => DATA <= x"241f"; - when "00" & x"749" => DATA <= x"261f"; - when "00" & x"74a" => DATA <= x"023c"; - when "00" & x"74b" => DATA <= x"00fd"; - when "00" & x"74c" => DATA <= x"4e75"; - when "00" & x"74d" => DATA <= x"007c"; - when "00" & x"74e" => DATA <= x"0700"; - when "00" & x"74f" => DATA <= x"4e75"; - when "00" & x"750" => DATA <= x"027c"; - when "00" & x"751" => DATA <= x"f8ff"; - when "00" & x"752" => DATA <= x"4e75"; - when "00" & x"753" => DATA <= x"2f03"; - when "00" & x"754" => DATA <= x"2f02"; - when "00" & x"755" => DATA <= x"4282"; - when "00" & x"756" => DATA <= x"c343"; - when "00" & x"757" => DATA <= x"2200"; - when "00" & x"758" => DATA <= x"103c"; - when "00" & x"759" => DATA <= x"0007"; - when "00" & x"75a" => DATA <= x"6100"; - when "00" & x"75b" => DATA <= x"044a"; - when "00" & x"75c" => DATA <= x"c340"; - when "00" & x"75d" => DATA <= x"c741"; - when "00" & x"75e" => DATA <= x"241f"; - when "00" & x"75f" => DATA <= x"261f"; - when "00" & x"760" => DATA <= x"023c"; - when "00" & x"761" => DATA <= x"00fd"; - when "00" & x"762" => DATA <= x"4e75"; - when "00" & x"763" => DATA <= x"007c"; - when "00" & x"764" => DATA <= x"2000"; - when "00" & x"765" => DATA <= x"4e75"; - when "00" & x"766" => DATA <= x"2f03"; - when "00" & x"767" => DATA <= x"2f02"; - when "00" & x"768" => DATA <= x"4282"; - when "00" & x"769" => DATA <= x"c343"; - when "00" & x"76a" => DATA <= x"2200"; - when "00" & x"76b" => DATA <= x"103c"; - when "00" & x"76c" => DATA <= x"0008"; - when "00" & x"76d" => DATA <= x"6100"; - when "00" & x"76e" => DATA <= x"0424"; - when "00" & x"76f" => DATA <= x"c340"; - when "00" & x"770" => DATA <= x"c741"; - when "00" & x"771" => DATA <= x"241f"; - when "00" & x"772" => DATA <= x"261f"; - when "00" & x"773" => DATA <= x"023c"; - when "00" & x"774" => DATA <= x"00fd"; - when "00" & x"775" => DATA <= x"4e75"; - when "00" & x"776" => DATA <= x"2f03"; - when "00" & x"777" => DATA <= x"2f02"; - when "00" & x"778" => DATA <= x"2f01"; - when "00" & x"779" => DATA <= x"2200"; - when "00" & x"77a" => DATA <= x"103c"; - when "00" & x"77b" => DATA <= x"000c"; - when "00" & x"77c" => DATA <= x"6100"; - when "00" & x"77d" => DATA <= x"0406"; - when "00" & x"77e" => DATA <= x"2001"; - when "00" & x"77f" => DATA <= x"221f"; - when "00" & x"780" => DATA <= x"241f"; - when "00" & x"781" => DATA <= x"261f"; - when "00" & x"782" => DATA <= x"023c"; - when "00" & x"783" => DATA <= x"00fd"; - when "00" & x"784" => DATA <= x"4e75"; - when "00" & x"785" => DATA <= x"6100"; - when "00" & x"786" => DATA <= x"03fa"; - when "00" & x"787" => DATA <= x"2600"; - when "00" & x"788" => DATA <= x"7040"; - when "00" & x"789" => DATA <= x"2238"; - when "00" & x"78a" => DATA <= x"0600"; - when "00" & x"78b" => DATA <= x"6100"; - when "00" & x"78c" => DATA <= x"fccc"; - when "00" & x"78d" => DATA <= x"4280"; - when "00" & x"78e" => DATA <= x"4281"; - when "00" & x"78f" => DATA <= x"3038"; - when "00" & x"790" => DATA <= x"0600"; - when "00" & x"791" => DATA <= x"3238"; + when "00" & x"6ef" => DATA <= x"f608"; + when "00" & x"6f0" => DATA <= x"6100"; + when "00" & x"6f1" => DATA <= x"f5f2"; + when "00" & x"6f2" => DATA <= x"201f"; + when "00" & x"6f3" => DATA <= x"4e75"; + when "00" & x"6f4" => DATA <= x"6100"; + when "00" & x"6f5" => DATA <= x"f650"; + when "00" & x"6f6" => DATA <= x"6000"; + when "00" & x"6f7" => DATA <= x"f5e6"; + when "00" & x"6f8" => DATA <= x"2800"; + when "00" & x"6f9" => DATA <= x"c8bc"; + when "00" & x"6fa" => DATA <= x"d000"; + when "00" & x"6fb" => DATA <= x"0000"; + when "00" & x"6fc" => DATA <= x"6000"; + when "00" & x"6fd" => DATA <= x"06f6"; + when "00" & x"6fe" => DATA <= x"2f05"; + when "00" & x"6ff" => DATA <= x"2f04"; + when "00" & x"700" => DATA <= x"2f01"; + when "00" & x"701" => DATA <= x"2f00"; + when "00" & x"702" => DATA <= x"2203"; + when "00" & x"703" => DATA <= x"700a"; + when "00" & x"704" => DATA <= x"6100"; + when "00" & x"705" => DATA <= x"04fa"; + when "00" & x"706" => DATA <= x"2801"; + when "00" & x"707" => DATA <= x"2202"; + when "00" & x"708" => DATA <= x"7009"; + when "00" & x"709" => DATA <= x"6100"; + when "00" & x"70a" => DATA <= x"04f0"; + when "00" & x"70b" => DATA <= x"2a01"; + when "00" & x"70c" => DATA <= x"221f"; + when "00" & x"70d" => DATA <= x"261f"; + when "00" & x"70e" => DATA <= x"7006"; + when "00" & x"70f" => DATA <= x"6100"; + when "00" & x"710" => DATA <= x"04e4"; + when "00" & x"711" => DATA <= x"2001"; + when "00" & x"712" => DATA <= x"2203"; + when "00" & x"713" => DATA <= x"2604"; + when "00" & x"714" => DATA <= x"2405"; + when "00" & x"715" => DATA <= x"281f"; + when "00" & x"716" => DATA <= x"2a1f"; + when "00" & x"717" => DATA <= x"023c"; + when "00" & x"718" => DATA <= x"00fd"; + when "00" & x"719" => DATA <= x"4e75"; + when "00" & x"71a" => DATA <= x"203c"; + when "00" & x"71b" => DATA <= x"0000"; + when "00" & x"71c" => DATA <= x"0600"; + when "00" & x"71d" => DATA <= x"223c"; + when "00" & x"71e" => DATA <= x"0000"; + when "00" & x"71f" => DATA <= x"0500"; + when "00" & x"720" => DATA <= x"243c"; + when "00" & x"721" => DATA <= x"0000"; + when "00" & x"722" => DATA <= x"052d"; + when "00" & x"723" => DATA <= x"4e75"; + when "00" & x"724" => DATA <= x"2f38"; + when "00" & x"725" => DATA <= x"04d0"; + when "00" & x"726" => DATA <= x"4e75"; + when "00" & x"727" => DATA <= x"2f03"; + when "00" & x"728" => DATA <= x"2f02"; + when "00" & x"729" => DATA <= x"2f01"; + when "00" & x"72a" => DATA <= x"2f00"; + when "00" & x"72b" => DATA <= x"2207"; + when "00" & x"72c" => DATA <= x"7004"; + when "00" & x"72d" => DATA <= x"6100"; + when "00" & x"72e" => DATA <= x"04a8"; + when "00" & x"72f" => DATA <= x"2e01"; + when "00" & x"730" => DATA <= x"2206"; + when "00" & x"731" => DATA <= x"7003"; + when "00" & x"732" => DATA <= x"6100"; + when "00" & x"733" => DATA <= x"049e"; + when "00" & x"734" => DATA <= x"2c01"; + when "00" & x"735" => DATA <= x"2205"; + when "00" & x"736" => DATA <= x"7002"; + when "00" & x"737" => DATA <= x"6100"; + when "00" & x"738" => DATA <= x"0494"; + when "00" & x"739" => DATA <= x"2a01"; + when "00" & x"73a" => DATA <= x"2204"; + when "00" & x"73b" => DATA <= x"7001"; + when "00" & x"73c" => DATA <= x"6100"; + when "00" & x"73d" => DATA <= x"048a"; + when "00" & x"73e" => DATA <= x"2801"; + when "00" & x"73f" => DATA <= x"221f"; + when "00" & x"740" => DATA <= x"700b"; + when "00" & x"741" => DATA <= x"6100"; + when "00" & x"742" => DATA <= x"0480"; + when "00" & x"743" => DATA <= x"2001"; + when "00" & x"744" => DATA <= x"221f"; + when "00" & x"745" => DATA <= x"2f00"; + when "00" & x"746" => DATA <= x"7000"; + when "00" & x"747" => DATA <= x"6100"; + when "00" & x"748" => DATA <= x"0474"; + when "00" & x"749" => DATA <= x"201f"; + when "00" & x"74a" => DATA <= x"241f"; + when "00" & x"74b" => DATA <= x"261f"; + when "00" & x"74c" => DATA <= x"023c"; + when "00" & x"74d" => DATA <= x"00fd"; + when "00" & x"74e" => DATA <= x"4e75"; + when "00" & x"74f" => DATA <= x"027c"; + when "00" & x"750" => DATA <= x"f8ff"; + when "00" & x"751" => DATA <= x"4e75"; + when "00" & x"752" => DATA <= x"007c"; + when "00" & x"753" => DATA <= x"0700"; + when "00" & x"754" => DATA <= x"4e75"; + when "00" & x"755" => DATA <= x"2f03"; + when "00" & x"756" => DATA <= x"2f02"; + when "00" & x"757" => DATA <= x"4282"; + when "00" & x"758" => DATA <= x"c343"; + when "00" & x"759" => DATA <= x"2200"; + when "00" & x"75a" => DATA <= x"103c"; + when "00" & x"75b" => DATA <= x"0007"; + when "00" & x"75c" => DATA <= x"6100"; + when "00" & x"75d" => DATA <= x"044a"; + when "00" & x"75e" => DATA <= x"c340"; + when "00" & x"75f" => DATA <= x"c741"; + when "00" & x"760" => DATA <= x"241f"; + when "00" & x"761" => DATA <= x"261f"; + when "00" & x"762" => DATA <= x"023c"; + when "00" & x"763" => DATA <= x"00fd"; + when "00" & x"764" => DATA <= x"4e75"; + when "00" & x"765" => DATA <= x"007c"; + when "00" & x"766" => DATA <= x"2000"; + when "00" & x"767" => DATA <= x"4e75"; + when "00" & x"768" => DATA <= x"2f03"; + when "00" & x"769" => DATA <= x"2f02"; + when "00" & x"76a" => DATA <= x"4282"; + when "00" & x"76b" => DATA <= x"c343"; + when "00" & x"76c" => DATA <= x"2200"; + when "00" & x"76d" => DATA <= x"103c"; + when "00" & x"76e" => DATA <= x"0008"; + when "00" & x"76f" => DATA <= x"6100"; + when "00" & x"770" => DATA <= x"0424"; + when "00" & x"771" => DATA <= x"c340"; + when "00" & x"772" => DATA <= x"c741"; + when "00" & x"773" => DATA <= x"241f"; + when "00" & x"774" => DATA <= x"261f"; + when "00" & x"775" => DATA <= x"023c"; + when "00" & x"776" => DATA <= x"00fd"; + when "00" & x"777" => DATA <= x"4e75"; + when "00" & x"778" => DATA <= x"2f03"; + when "00" & x"779" => DATA <= x"2f02"; + when "00" & x"77a" => DATA <= x"2f01"; + when "00" & x"77b" => DATA <= x"2200"; + when "00" & x"77c" => DATA <= x"103c"; + when "00" & x"77d" => DATA <= x"000c"; + when "00" & x"77e" => DATA <= x"6100"; + when "00" & x"77f" => DATA <= x"0406"; + when "00" & x"780" => DATA <= x"2001"; + when "00" & x"781" => DATA <= x"221f"; + when "00" & x"782" => DATA <= x"241f"; + when "00" & x"783" => DATA <= x"261f"; + when "00" & x"784" => DATA <= x"023c"; + when "00" & x"785" => DATA <= x"00fd"; + when "00" & x"786" => DATA <= x"4e75"; + when "00" & x"787" => DATA <= x"6100"; + when "00" & x"788" => DATA <= x"03fa"; + when "00" & x"789" => DATA <= x"2600"; + when "00" & x"78a" => DATA <= x"7040"; + when "00" & x"78b" => DATA <= x"2238"; + when "00" & x"78c" => DATA <= x"0600"; + when "00" & x"78d" => DATA <= x"6100"; + when "00" & x"78e" => DATA <= x"fccc"; + when "00" & x"78f" => DATA <= x"4280"; + when "00" & x"790" => DATA <= x"4281"; + when "00" & x"791" => DATA <= x"3038"; when "00" & x"792" => DATA <= x"0600"; - when "00" & x"793" => DATA <= x"0480"; - when "00" & x"794" => DATA <= x"0000"; - when "00" & x"795" => DATA <= x"0280"; - when "00" & x"796" => DATA <= x"0481"; - when "00" & x"797" => DATA <= x"0000"; - when "00" & x"798" => DATA <= x"0200"; - when "00" & x"799" => DATA <= x"c1fc"; - when "00" & x"79a" => DATA <= x"0033"; - when "00" & x"79b" => DATA <= x"ed89"; - when "00" & x"79c" => DATA <= x"4282"; - when "00" & x"79d" => DATA <= x"0838"; - when "00" & x"79e" => DATA <= x"0007"; - when "00" & x"79f" => DATA <= x"0606"; - when "00" & x"7a0" => DATA <= x"6700"; - when "00" & x"7a1" => DATA <= x"0006"; - when "00" & x"7a2" => DATA <= x"08c2"; - when "00" & x"7a3" => DATA <= x"0000"; - when "00" & x"7a4" => DATA <= x"0838"; - when "00" & x"7a5" => DATA <= x"0006"; - when "00" & x"7a6" => DATA <= x"0606"; - when "00" & x"7a7" => DATA <= x"6700"; - when "00" & x"7a8" => DATA <= x"0006"; - when "00" & x"7a9" => DATA <= x"08c2"; - when "00" & x"7aa" => DATA <= x"0001"; - when "00" & x"7ab" => DATA <= x"0838"; - when "00" & x"7ac" => DATA <= x"0005"; - when "00" & x"7ad" => DATA <= x"0606"; - when "00" & x"7ae" => DATA <= x"6700"; - when "00" & x"7af" => DATA <= x"0006"; - when "00" & x"7b0" => DATA <= x"08c2"; - when "00" & x"7b1" => DATA <= x"0002"; - when "00" & x"7b2" => DATA <= x"023c"; - when "00" & x"7b3" => DATA <= x"00fd"; - when "00" & x"7b4" => DATA <= x"4e75"; - when "00" & x"7b5" => DATA <= x"103c"; - when "00" & x"7b6" => DATA <= x"0080"; - when "00" & x"7b7" => DATA <= x"123c"; - when "00" & x"7b8" => DATA <= x"0007"; - when "00" & x"7b9" => DATA <= x"143c"; - when "00" & x"7ba" => DATA <= x"0000"; - when "00" & x"7bb" => DATA <= x"6100"; - when "00" & x"7bc" => DATA <= x"fb5a"; - when "00" & x"7bd" => DATA <= x"103c"; - when "00" & x"7be" => DATA <= x"0080"; - when "00" & x"7bf" => DATA <= x"123c"; - when "00" & x"7c0" => DATA <= x"0008"; - when "00" & x"7c1" => DATA <= x"143c"; - when "00" & x"7c2" => DATA <= x"0000"; - when "00" & x"7c3" => DATA <= x"6100"; - when "00" & x"7c4" => DATA <= x"fb4a"; - when "00" & x"7c5" => DATA <= x"103c"; - when "00" & x"7c6" => DATA <= x"0080"; - when "00" & x"7c7" => DATA <= x"123c"; - when "00" & x"7c8" => DATA <= x"0009"; - when "00" & x"7c9" => DATA <= x"143c"; - when "00" & x"7ca" => DATA <= x"0000"; - when "00" & x"7cb" => DATA <= x"6100"; - when "00" & x"7cc" => DATA <= x"fb3a"; - when "00" & x"7cd" => DATA <= x"103c"; - when "00" & x"7ce" => DATA <= x"0081"; - when "00" & x"7cf" => DATA <= x"123c"; - when "00" & x"7d0" => DATA <= x"00f6"; - when "00" & x"7d1" => DATA <= x"143c"; - when "00" & x"7d2" => DATA <= x"00ff"; - when "00" & x"7d3" => DATA <= x"6100"; - when "00" & x"7d4" => DATA <= x"fb2a"; - when "00" & x"7d5" => DATA <= x"103c"; - when "00" & x"7d6" => DATA <= x"0081"; - when "00" & x"7d7" => DATA <= x"123c"; - when "00" & x"7d8" => DATA <= x"00f5"; - when "00" & x"7d9" => DATA <= x"143c"; - when "00" & x"7da" => DATA <= x"00ff"; - when "00" & x"7db" => DATA <= x"6100"; - when "00" & x"7dc" => DATA <= x"fb1a"; - when "00" & x"7dd" => DATA <= x"103c"; - when "00" & x"7de" => DATA <= x"0081"; - when "00" & x"7df" => DATA <= x"123c"; - when "00" & x"7e0" => DATA <= x"00f4"; - when "00" & x"7e1" => DATA <= x"143c"; - when "00" & x"7e2" => DATA <= x"00ff"; - when "00" & x"7e3" => DATA <= x"6100"; - when "00" & x"7e4" => DATA <= x"fb0a"; - when "00" & x"7e5" => DATA <= x"4e75"; - when "00" & x"7e6" => DATA <= x"2f0e"; - when "00" & x"7e7" => DATA <= x"2f07"; - when "00" & x"7e8" => DATA <= x"2f06"; - when "00" & x"7e9" => DATA <= x"2f04"; - when "00" & x"7ea" => DATA <= x"2f03"; - when "00" & x"7eb" => DATA <= x"2f00"; - when "00" & x"7ec" => DATA <= x"7eff"; - when "00" & x"7ed" => DATA <= x"0800"; - when "00" & x"7ee" => DATA <= x"001d"; - when "00" & x"7ef" => DATA <= x"6700"; - when "00" & x"7f0" => DATA <= x"0004"; - when "00" & x"7f1" => DATA <= x"2e02"; - when "00" & x"7f2" => DATA <= x"0280"; - when "00" & x"7f3" => DATA <= x"0000"; - when "00" & x"7f4" => DATA <= x"00ff"; - when "00" & x"7f5" => DATA <= x"4a80"; - when "00" & x"7f6" => DATA <= x"6600"; - when "00" & x"7f7" => DATA <= x"0004"; - when "00" & x"7f8" => DATA <= x"700a"; - when "00" & x"7f9" => DATA <= x"b0bc"; - when "00" & x"7fa" => DATA <= x"0000"; - when "00" & x"7fb" => DATA <= x"0002"; - when "00" & x"7fc" => DATA <= x"6500"; - when "00" & x"7fd" => DATA <= x"00a0"; - when "00" & x"7fe" => DATA <= x"b0bc"; - when "00" & x"7ff" => DATA <= x"0000"; - when "00" & x"800" => DATA <= x"0024"; - when "00" & x"801" => DATA <= x"6200"; - when "00" & x"802" => DATA <= x"0096"; - when "00" & x"803" => DATA <= x"2c00"; - when "00" & x"804" => DATA <= x"4282"; - when "00" & x"805" => DATA <= x"2c41"; - when "00" & x"806" => DATA <= x"6100"; - when "00" & x"807" => DATA <= x"1712"; - when "00" & x"808" => DATA <= x"528e"; - when "00" & x"809" => DATA <= x"b03c"; - when "00" & x"80a" => DATA <= x"0026"; - when "00" & x"80b" => DATA <= x"6600"; - when "00" & x"80c" => DATA <= x"000a"; - when "00" & x"80d" => DATA <= x"7c10"; - when "00" & x"80e" => DATA <= x"528e"; - when "00" & x"80f" => DATA <= x"6000"; - when "00" & x"810" => DATA <= x"000e"; - when "00" & x"811" => DATA <= x"b03c"; - when "00" & x"812" => DATA <= x"0024"; - when "00" & x"813" => DATA <= x"6600"; - when "00" & x"814" => DATA <= x"0006"; - when "00" & x"815" => DATA <= x"7c10"; - when "00" & x"816" => DATA <= x"528e"; - when "00" & x"817" => DATA <= x"0c00"; - when "00" & x"818" => DATA <= x"0039"; - when "00" & x"819" => DATA <= x"6300"; - when "00" & x"81a" => DATA <= x"0008"; - when "00" & x"81b" => DATA <= x"0200"; - when "00" & x"81c" => DATA <= x"00df"; - when "00" & x"81d" => DATA <= x"5f00"; - when "00" & x"81e" => DATA <= x"0400"; - when "00" & x"81f" => DATA <= x"0030"; - when "00" & x"820" => DATA <= x"6b00"; + when "00" & x"793" => DATA <= x"3238"; + when "00" & x"794" => DATA <= x"0600"; + when "00" & x"795" => DATA <= x"0480"; + when "00" & x"796" => DATA <= x"0000"; + when "00" & x"797" => DATA <= x"0280"; + when "00" & x"798" => DATA <= x"0481"; + when "00" & x"799" => DATA <= x"0000"; + when "00" & x"79a" => DATA <= x"0200"; + when "00" & x"79b" => DATA <= x"c1fc"; + when "00" & x"79c" => DATA <= x"0033"; + when "00" & x"79d" => DATA <= x"ed89"; + when "00" & x"79e" => DATA <= x"4282"; + when "00" & x"79f" => DATA <= x"0838"; + when "00" & x"7a0" => DATA <= x"0007"; + when "00" & x"7a1" => DATA <= x"0606"; + when "00" & x"7a2" => DATA <= x"6700"; + when "00" & x"7a3" => DATA <= x"0006"; + when "00" & x"7a4" => DATA <= x"08c2"; + when "00" & x"7a5" => DATA <= x"0000"; + when "00" & x"7a6" => DATA <= x"0838"; + when "00" & x"7a7" => DATA <= x"0006"; + when "00" & x"7a8" => DATA <= x"0606"; + when "00" & x"7a9" => DATA <= x"6700"; + when "00" & x"7aa" => DATA <= x"0006"; + when "00" & x"7ab" => DATA <= x"08c2"; + when "00" & x"7ac" => DATA <= x"0001"; + when "00" & x"7ad" => DATA <= x"0838"; + when "00" & x"7ae" => DATA <= x"0005"; + when "00" & x"7af" => DATA <= x"0606"; + when "00" & x"7b0" => DATA <= x"6700"; + when "00" & x"7b1" => DATA <= x"0006"; + when "00" & x"7b2" => DATA <= x"08c2"; + when "00" & x"7b3" => DATA <= x"0002"; + when "00" & x"7b4" => DATA <= x"023c"; + when "00" & x"7b5" => DATA <= x"00fd"; + when "00" & x"7b6" => DATA <= x"4e75"; + when "00" & x"7b7" => DATA <= x"103c"; + when "00" & x"7b8" => DATA <= x"0080"; + when "00" & x"7b9" => DATA <= x"123c"; + when "00" & x"7ba" => DATA <= x"0007"; + when "00" & x"7bb" => DATA <= x"143c"; + when "00" & x"7bc" => DATA <= x"0000"; + when "00" & x"7bd" => DATA <= x"6100"; + when "00" & x"7be" => DATA <= x"fb5a"; + when "00" & x"7bf" => DATA <= x"103c"; + when "00" & x"7c0" => DATA <= x"0080"; + when "00" & x"7c1" => DATA <= x"123c"; + when "00" & x"7c2" => DATA <= x"0008"; + when "00" & x"7c3" => DATA <= x"143c"; + when "00" & x"7c4" => DATA <= x"0000"; + when "00" & x"7c5" => DATA <= x"6100"; + when "00" & x"7c6" => DATA <= x"fb4a"; + when "00" & x"7c7" => DATA <= x"103c"; + when "00" & x"7c8" => DATA <= x"0080"; + when "00" & x"7c9" => DATA <= x"123c"; + when "00" & x"7ca" => DATA <= x"0009"; + when "00" & x"7cb" => DATA <= x"143c"; + when "00" & x"7cc" => DATA <= x"0000"; + when "00" & x"7cd" => DATA <= x"6100"; + when "00" & x"7ce" => DATA <= x"fb3a"; + when "00" & x"7cf" => DATA <= x"103c"; + when "00" & x"7d0" => DATA <= x"0081"; + when "00" & x"7d1" => DATA <= x"123c"; + when "00" & x"7d2" => DATA <= x"00f6"; + when "00" & x"7d3" => DATA <= x"143c"; + when "00" & x"7d4" => DATA <= x"00ff"; + when "00" & x"7d5" => DATA <= x"6100"; + when "00" & x"7d6" => DATA <= x"fb2a"; + when "00" & x"7d7" => DATA <= x"103c"; + when "00" & x"7d8" => DATA <= x"0081"; + when "00" & x"7d9" => DATA <= x"123c"; + when "00" & x"7da" => DATA <= x"00f5"; + when "00" & x"7db" => DATA <= x"143c"; + when "00" & x"7dc" => DATA <= x"00ff"; + when "00" & x"7dd" => DATA <= x"6100"; + when "00" & x"7de" => DATA <= x"fb1a"; + when "00" & x"7df" => DATA <= x"103c"; + when "00" & x"7e0" => DATA <= x"0081"; + when "00" & x"7e1" => DATA <= x"123c"; + when "00" & x"7e2" => DATA <= x"00f4"; + when "00" & x"7e3" => DATA <= x"143c"; + when "00" & x"7e4" => DATA <= x"00ff"; + when "00" & x"7e5" => DATA <= x"6100"; + when "00" & x"7e6" => DATA <= x"fb0a"; + when "00" & x"7e7" => DATA <= x"4e75"; + when "00" & x"7e8" => DATA <= x"2f0e"; + when "00" & x"7e9" => DATA <= x"2f07"; + when "00" & x"7ea" => DATA <= x"2f06"; + when "00" & x"7eb" => DATA <= x"2f04"; + when "00" & x"7ec" => DATA <= x"2f03"; + when "00" & x"7ed" => DATA <= x"2f00"; + when "00" & x"7ee" => DATA <= x"7eff"; + when "00" & x"7ef" => DATA <= x"0800"; + when "00" & x"7f0" => DATA <= x"001d"; + when "00" & x"7f1" => DATA <= x"6700"; + when "00" & x"7f2" => DATA <= x"0004"; + when "00" & x"7f3" => DATA <= x"2e02"; + when "00" & x"7f4" => DATA <= x"0280"; + when "00" & x"7f5" => DATA <= x"0000"; + when "00" & x"7f6" => DATA <= x"00ff"; + when "00" & x"7f7" => DATA <= x"4a80"; + when "00" & x"7f8" => DATA <= x"6600"; + when "00" & x"7f9" => DATA <= x"0004"; + when "00" & x"7fa" => DATA <= x"700a"; + when "00" & x"7fb" => DATA <= x"b0bc"; + when "00" & x"7fc" => DATA <= x"0000"; + when "00" & x"7fd" => DATA <= x"0002"; + when "00" & x"7fe" => DATA <= x"6500"; + when "00" & x"7ff" => DATA <= x"00a0"; + when "00" & x"800" => DATA <= x"b0bc"; + when "00" & x"801" => DATA <= x"0000"; + when "00" & x"802" => DATA <= x"0024"; + when "00" & x"803" => DATA <= x"6200"; + when "00" & x"804" => DATA <= x"0096"; + when "00" & x"805" => DATA <= x"2c00"; + when "00" & x"806" => DATA <= x"4282"; + when "00" & x"807" => DATA <= x"2c41"; + when "00" & x"808" => DATA <= x"6100"; + when "00" & x"809" => DATA <= x"1712"; + when "00" & x"80a" => DATA <= x"528e"; + when "00" & x"80b" => DATA <= x"b03c"; + when "00" & x"80c" => DATA <= x"0026"; + when "00" & x"80d" => DATA <= x"6600"; + when "00" & x"80e" => DATA <= x"000a"; + when "00" & x"80f" => DATA <= x"7c10"; + when "00" & x"810" => DATA <= x"528e"; + when "00" & x"811" => DATA <= x"6000"; + when "00" & x"812" => DATA <= x"000e"; + when "00" & x"813" => DATA <= x"b03c"; + when "00" & x"814" => DATA <= x"0024"; + when "00" & x"815" => DATA <= x"6600"; + when "00" & x"816" => DATA <= x"0006"; + when "00" & x"817" => DATA <= x"7c10"; + when "00" & x"818" => DATA <= x"528e"; + when "00" & x"819" => DATA <= x"0c00"; + when "00" & x"81a" => DATA <= x"0039"; + when "00" & x"81b" => DATA <= x"6300"; + when "00" & x"81c" => DATA <= x"0008"; + when "00" & x"81d" => DATA <= x"0200"; + when "00" & x"81e" => DATA <= x"00df"; + when "00" & x"81f" => DATA <= x"5f00"; + when "00" & x"820" => DATA <= x"0400"; when "00" & x"821" => DATA <= x"0030"; - when "00" & x"822" => DATA <= x"b006"; - when "00" & x"823" => DATA <= x"6200"; - when "00" & x"824" => DATA <= x"002a"; - when "00" & x"825" => DATA <= x"bcbc"; - when "00" & x"826" => DATA <= x"0000"; - when "00" & x"827" => DATA <= x"0010"; - when "00" & x"828" => DATA <= x"6600"; - when "00" & x"829" => DATA <= x"000a"; - when "00" & x"82a" => DATA <= x"e98a"; - when "00" & x"82b" => DATA <= x"d480"; - when "00" & x"82c" => DATA <= x"101e"; - when "00" & x"82d" => DATA <= x"60d2"; - when "00" & x"82e" => DATA <= x"2606"; - when "00" & x"82f" => DATA <= x"5583"; - when "00" & x"830" => DATA <= x"2802"; - when "00" & x"831" => DATA <= x"d484"; - when "00" & x"832" => DATA <= x"6500"; - when "00" & x"833" => DATA <= x"0048"; - when "00" & x"834" => DATA <= x"51cb"; - when "00" & x"835" => DATA <= x"fff8"; - when "00" & x"836" => DATA <= x"d480"; - when "00" & x"837" => DATA <= x"101e"; - when "00" & x"838" => DATA <= x"60bc"; - when "00" & x"839" => DATA <= x"4a82"; - when "00" & x"83a" => DATA <= x"6700"; - when "00" & x"83b" => DATA <= x"002e"; - when "00" & x"83c" => DATA <= x"4a87"; - when "00" & x"83d" => DATA <= x"6700"; - when "00" & x"83e" => DATA <= x"0008"; - when "00" & x"83f" => DATA <= x"b087"; - when "00" & x"840" => DATA <= x"6200"; - when "00" & x"841" => DATA <= x"002c"; - when "00" & x"842" => DATA <= x"220e"; - when "00" & x"843" => DATA <= x"5381"; - when "00" & x"844" => DATA <= x"201f"; - when "00" & x"845" => DATA <= x"261f"; - when "00" & x"846" => DATA <= x"281f"; - when "00" & x"847" => DATA <= x"2c1f"; - when "00" & x"848" => DATA <= x"2e1f"; - when "00" & x"849" => DATA <= x"2c5f"; - when "00" & x"84a" => DATA <= x"023c"; - when "00" & x"84b" => DATA <= x"00fd"; - when "00" & x"84c" => DATA <= x"4e75"; - when "00" & x"84d" => DATA <= x"203c"; - when "00" & x"84e" => DATA <= x"003f"; - when "00" & x"84f" => DATA <= x"2de8"; - when "00" & x"850" => DATA <= x"6000"; - when "00" & x"851" => DATA <= x"0012"; - when "00" & x"852" => DATA <= x"203c"; - when "00" & x"853" => DATA <= x"003f"; - when "00" & x"854" => DATA <= x"2df8"; - when "00" & x"855" => DATA <= x"6000"; - when "00" & x"856" => DATA <= x"0008"; - when "00" & x"857" => DATA <= x"203c"; - when "00" & x"858" => DATA <= x"003f"; - when "00" & x"859" => DATA <= x"2e08"; - when "00" & x"85a" => DATA <= x"261f"; - when "00" & x"85b" => DATA <= x"261f"; - when "00" & x"85c" => DATA <= x"281f"; - when "00" & x"85d" => DATA <= x"2c1f"; - when "00" & x"85e" => DATA <= x"2e1f"; - when "00" & x"85f" => DATA <= x"2c5f"; - when "00" & x"860" => DATA <= x"003c"; - when "00" & x"861" => DATA <= x"0002"; - when "00" & x"862" => DATA <= x"4e75"; - when "00" & x"863" => DATA <= x"2f00"; - when "00" & x"864" => DATA <= x"2f01"; - when "00" & x"865" => DATA <= x"6100"; - when "00" & x"866" => DATA <= x"07bc"; - when "00" & x"867" => DATA <= x"2401"; - when "00" & x"868" => DATA <= x"221f"; - when "00" & x"869" => DATA <= x"201f"; - when "00" & x"86a" => DATA <= x"4e75"; - when "00" & x"86b" => DATA <= x"b03c"; - when "00" & x"86c" => DATA <= x"003a"; - when "00" & x"86d" => DATA <= x"6200"; - when "00" & x"86e" => DATA <= x"001c"; - when "00" & x"86f" => DATA <= x"2f0e"; - when "00" & x"870" => DATA <= x"d040"; - when "00" & x"871" => DATA <= x"d040"; - when "00" & x"872" => DATA <= x"2c79"; - when "00" & x"873" => DATA <= x"003f"; - when "00" & x"874" => DATA <= x"36f8"; - when "00" & x"875" => DATA <= x"ddc0"; - when "00" & x"876" => DATA <= x"4dd6"; - when "00" & x"877" => DATA <= x"4e96"; - when "00" & x"878" => DATA <= x"2c5f"; - when "00" & x"879" => DATA <= x"023c"; - when "00" & x"87a" => DATA <= x"00fd"; - when "00" & x"87b" => DATA <= x"4e75"; - when "00" & x"87c" => DATA <= x"203c"; - when "00" & x"87d" => DATA <= x"003f"; - when "00" & x"87e" => DATA <= x"2ef4"; - when "00" & x"87f" => DATA <= x"003c"; - when "00" & x"880" => DATA <= x"0002"; - when "00" & x"881" => DATA <= x"4e75"; - when "00" & x"882" => DATA <= x"103c"; - when "00" & x"883" => DATA <= x"008b"; - when "00" & x"884" => DATA <= x"6100"; - when "00" & x"885" => DATA <= x"f9c8"; - when "00" & x"886" => DATA <= x"103c"; - when "00" & x"887" => DATA <= x"0010"; - when "00" & x"888" => DATA <= x"4e75"; - when "00" & x"889" => DATA <= x"7000"; - when "00" & x"88a" => DATA <= x"7200"; - when "00" & x"88b" => DATA <= x"6100"; - when "00" & x"88c" => DATA <= x"fbb2"; - when "00" & x"88d" => DATA <= x"103c"; - when "00" & x"88e" => DATA <= x"0016"; - when "00" & x"88f" => DATA <= x"4e75"; - when "00" & x"890" => DATA <= x"2f38"; - when "00" & x"891" => DATA <= x"0404"; - when "00" & x"892" => DATA <= x"4e75"; - when "00" & x"893" => DATA <= x"0838"; - when "00" & x"894" => DATA <= x"0006"; - when "00" & x"895" => DATA <= x"0535"; - when "00" & x"896" => DATA <= x"6600"; - when "00" & x"897" => DATA <= x"0008"; - when "00" & x"898" => DATA <= x"023c"; - when "00" & x"899" => DATA <= x"00fe"; - when "00" & x"89a" => DATA <= x"4e75"; - when "00" & x"89b" => DATA <= x"003c"; - when "00" & x"89c" => DATA <= x"0001"; - when "00" & x"89d" => DATA <= x"4e75"; - when "00" & x"89e" => DATA <= x"2f04"; - when "00" & x"89f" => DATA <= x"7801"; - when "00" & x"8a0" => DATA <= x"2f0e"; - when "00" & x"8a1" => DATA <= x"2c79"; - when "00" & x"8a2" => DATA <= x"0000"; - when "00" & x"8a3" => DATA <= x"048c"; - when "00" & x"8a4" => DATA <= x"4e96"; - when "00" & x"8a5" => DATA <= x"2c5f"; - when "00" & x"8a6" => DATA <= x"281f"; - when "00" & x"8a7" => DATA <= x"4e75"; - when "00" & x"8a8" => DATA <= x"4e75"; - when "00" & x"8a9" => DATA <= x"b0bc"; - when "00" & x"8aa" => DATA <= x"0000"; - when "00" & x"8ab" => DATA <= x"04ff"; - when "00" & x"8ac" => DATA <= x"6200"; - when "00" & x"8ad" => DATA <= x"0040"; - when "00" & x"8ae" => DATA <= x"b2bc"; - when "00" & x"8af" => DATA <= x"0000"; - when "00" & x"8b0" => DATA <= x"03ff"; - when "00" & x"8b1" => DATA <= x"6200"; - when "00" & x"8b2" => DATA <= x"0036"; - when "00" & x"8b3" => DATA <= x"2f00"; - when "00" & x"8b4" => DATA <= x"2f01"; - when "00" & x"8b5" => DATA <= x"31c0"; - when "00" & x"8b6" => DATA <= x"0600"; - when "00" & x"8b7" => DATA <= x"31c1"; - when "00" & x"8b8" => DATA <= x"0602"; - when "00" & x"8b9" => DATA <= x"223c"; - when "00" & x"8ba" => DATA <= x"0000"; - when "00" & x"8bb" => DATA <= x"0600"; - when "00" & x"8bc" => DATA <= x"7009"; - when "00" & x"8bd" => DATA <= x"6100"; - when "00" & x"8be" => DATA <= x"fa68"; - when "00" & x"8bf" => DATA <= x"7400"; - when "00" & x"8c0" => DATA <= x"7600"; - when "00" & x"8c1" => DATA <= x"1438"; - when "00" & x"8c2" => DATA <= x"0604"; - when "00" & x"8c3" => DATA <= x"221f"; - when "00" & x"8c4" => DATA <= x"201f"; - when "00" & x"8c5" => DATA <= x"b43c"; - when "00" & x"8c6" => DATA <= x"00ff"; - when "00" & x"8c7" => DATA <= x"6700"; - when "00" & x"8c8" => DATA <= x"000a"; - when "00" & x"8c9" => DATA <= x"7800"; - when "00" & x"8ca" => DATA <= x"023c"; - when "00" & x"8cb" => DATA <= x"00fd"; - when "00" & x"8cc" => DATA <= x"4e75"; - when "00" & x"8cd" => DATA <= x"203c"; - when "00" & x"8ce" => DATA <= x"003f"; - when "00" & x"8cf" => DATA <= x"2d64"; - when "00" & x"8d0" => DATA <= x"78ff"; - when "00" & x"8d1" => DATA <= x"003c"; - when "00" & x"8d2" => DATA <= x"0002"; - when "00" & x"8d3" => DATA <= x"4e75"; - when "00" & x"8d4" => DATA <= x"b5fc"; - when "00" & x"8d5" => DATA <= x"0000"; - when "00" & x"8d6" => DATA <= x"002f"; - when "00" & x"8d7" => DATA <= x"6200"; - when "00" & x"8d8" => DATA <= x"0018"; - when "00" & x"8d9" => DATA <= x"2f0a"; - when "00" & x"8da" => DATA <= x"d4ca"; - when "00" & x"8db" => DATA <= x"d4ca"; - when "00" & x"8dc" => DATA <= x"d5f8"; - when "00" & x"8dd" => DATA <= x"0000"; - when "00" & x"8de" => DATA <= x"45d2"; - when "00" & x"8df" => DATA <= x"4e92"; - when "00" & x"8e0" => DATA <= x"245f"; - when "00" & x"8e1" => DATA <= x"023c"; - when "00" & x"8e2" => DATA <= x"00fd"; - when "00" & x"8e3" => DATA <= x"4e75"; - when "00" & x"8e4" => DATA <= x"203c"; - when "00" & x"8e5" => DATA <= x"003f"; - when "00" & x"8e6" => DATA <= x"2e48"; - when "00" & x"8e7" => DATA <= x"003c"; - when "00" & x"8e8" => DATA <= x"0002"; - when "00" & x"8e9" => DATA <= x"4e75"; - when "00" & x"8ea" => DATA <= x"2f00"; - when "00" & x"8eb" => DATA <= x"2f01"; - when "00" & x"8ec" => DATA <= x"203c"; - when "00" & x"8ed" => DATA <= x"003f"; - when "00" & x"8ee" => DATA <= x"2822"; - when "00" & x"8ef" => DATA <= x"720b"; - when "00" & x"8f0" => DATA <= x"6100"; - when "00" & x"8f1" => DATA <= x"018c"; - when "00" & x"8f2" => DATA <= x"221f"; - when "00" & x"8f3" => DATA <= x"201f"; - when "00" & x"8f4" => DATA <= x"023c"; - when "00" & x"8f5" => DATA <= x"00fd"; - when "00" & x"8f6" => DATA <= x"4e75"; - when "00" & x"8f7" => DATA <= x"2f00"; - when "00" & x"8f8" => DATA <= x"2f01"; - when "00" & x"8f9" => DATA <= x"203c"; - when "00" & x"8fa" => DATA <= x"003f"; - when "00" & x"8fb" => DATA <= x"282d"; - when "00" & x"8fc" => DATA <= x"720b"; - when "00" & x"8fd" => DATA <= x"6100"; - when "00" & x"8fe" => DATA <= x"0172"; - when "00" & x"8ff" => DATA <= x"221f"; - when "00" & x"900" => DATA <= x"201f"; - when "00" & x"901" => DATA <= x"023c"; - when "00" & x"902" => DATA <= x"00fd"; - when "00" & x"903" => DATA <= x"4e75"; - when "00" & x"904" => DATA <= x"2f0e"; - when "00" & x"905" => DATA <= x"2f09"; - when "00" & x"906" => DATA <= x"2f01"; - when "00" & x"907" => DATA <= x"2f00"; - when "00" & x"908" => DATA <= x"2c41"; - when "00" & x"909" => DATA <= x"0280"; - when "00" & x"90a" => DATA <= x"0002"; - when "00" & x"90b" => DATA <= x"0000"; - when "00" & x"90c" => DATA <= x"6700"; - when "00" & x"90d" => DATA <= x"000c"; - when "00" & x"90e" => DATA <= x"5382"; - when "00" & x"90f" => DATA <= x"6b00"; - when "00" & x"910" => DATA <= x"005c"; - when "00" & x"911" => DATA <= x"1cfc"; - when "00" & x"912" => DATA <= x"0058"; - when "00" & x"913" => DATA <= x"43f9"; - when "00" & x"914" => DATA <= x"003f"; - when "00" & x"915" => DATA <= x"2f50"; - when "00" & x"916" => DATA <= x"b099"; - when "00" & x"917" => DATA <= x"6700"; - when "00" & x"918" => DATA <= x"0014"; - when "00" & x"919" => DATA <= x"2219"; - when "00" & x"91a" => DATA <= x"b23c"; - when "00" & x"91b" => DATA <= x"00ff"; - when "00" & x"91c" => DATA <= x"6700"; - when "00" & x"91d" => DATA <= x"0020"; - when "00" & x"91e" => DATA <= x"b23c"; - when "00" & x"91f" => DATA <= x"0000"; - when "00" & x"920" => DATA <= x"66f0"; - when "00" & x"921" => DATA <= x"60e8"; - when "00" & x"922" => DATA <= x"2019"; - when "00" & x"923" => DATA <= x"5382"; - when "00" & x"924" => DATA <= x"6b00"; - when "00" & x"925" => DATA <= x"0032"; - when "00" & x"926" => DATA <= x"1cd9"; - when "00" & x"927" => DATA <= x"66f6"; - when "00" & x"928" => DATA <= x"201f"; - when "00" & x"929" => DATA <= x"221f"; - when "00" & x"92a" => DATA <= x"225f"; - when "00" & x"92b" => DATA <= x"2c5f"; - when "00" & x"92c" => DATA <= x"4e75"; - when "00" & x"92d" => DATA <= x"0c81"; - when "00" & x"92e" => DATA <= x"0000"; - when "00" & x"92f" => DATA <= x"000d"; - when "00" & x"930" => DATA <= x"6500"; - when "00" & x"931" => DATA <= x"001a"; - when "00" & x"932" => DATA <= x"2cfc"; - when "00" & x"933" => DATA <= x"4f53"; - when "00" & x"934" => DATA <= x"5f55"; - when "00" & x"935" => DATA <= x"2cfc"; - when "00" & x"936" => DATA <= x"6e64"; - when "00" & x"937" => DATA <= x"6566"; - when "00" & x"938" => DATA <= x"2cfc"; - when "00" & x"939" => DATA <= x"696e"; - when "00" & x"93a" => DATA <= x"6564"; - when "00" & x"93b" => DATA <= x"1cfc"; - when "00" & x"93c" => DATA <= x"0000"; - when "00" & x"93d" => DATA <= x"60d4"; - when "00" & x"93e" => DATA <= x"003c"; - when "00" & x"93f" => DATA <= x"0002"; - when "00" & x"940" => DATA <= x"2ebc"; - when "00" & x"941" => DATA <= x"003f"; - when "00" & x"942" => DATA <= x"2e80"; - when "00" & x"943" => DATA <= x"60c8"; - when "00" & x"944" => DATA <= x"2f0e"; - when "00" & x"945" => DATA <= x"2f0d"; - when "00" & x"946" => DATA <= x"2f01"; - when "00" & x"947" => DATA <= x"4bf9"; - when "00" & x"948" => DATA <= x"003f"; - when "00" & x"949" => DATA <= x"2f50"; - when "00" & x"94a" => DATA <= x"2c57"; - when "00" & x"94b" => DATA <= x"201d"; - when "00" & x"94c" => DATA <= x"588d"; - when "00" & x"94d" => DATA <= x"bd8d"; - when "00" & x"94e" => DATA <= x"6600"; - when "00" & x"94f" => DATA <= x"0010"; - when "00" & x"950" => DATA <= x"4a2d"; - when "00" & x"951" => DATA <= x"ffff"; - when "00" & x"952" => DATA <= x"66f4"; - when "00" & x"953" => DATA <= x"221f"; - when "00" & x"954" => DATA <= x"2a5f"; - when "00" & x"955" => DATA <= x"2c5f"; - when "00" & x"956" => DATA <= x"4e75"; - when "00" & x"957" => DATA <= x"201d"; - when "00" & x"958" => DATA <= x"4a00"; - when "00" & x"959" => DATA <= x"66fa"; - when "00" & x"95a" => DATA <= x"b03c"; - when "00" & x"95b" => DATA <= x"00ff"; - when "00" & x"95c" => DATA <= x"66da"; - when "00" & x"95d" => DATA <= x"221f"; - when "00" & x"95e" => DATA <= x"2a5f"; - when "00" & x"95f" => DATA <= x"2c5f"; - when "00" & x"960" => DATA <= x"203c"; - when "00" & x"961" => DATA <= x"003f"; - when "00" & x"962" => DATA <= x"2e94"; - when "00" & x"963" => DATA <= x"003c"; - when "00" & x"964" => DATA <= x"0002"; - when "00" & x"965" => DATA <= x"4e75"; - when "00" & x"966" => DATA <= x"4a80"; - when "00" & x"967" => DATA <= x"6d00"; - when "00" & x"968" => DATA <= x"0010"; - when "00" & x"969" => DATA <= x"b2b8"; - when "00" & x"96a" => DATA <= x"0508"; - when "00" & x"96b" => DATA <= x"6200"; - when "00" & x"96c" => DATA <= x"0008"; - when "00" & x"96d" => DATA <= x"023c"; - when "00" & x"96e" => DATA <= x"00fe"; - when "00" & x"96f" => DATA <= x"4e75"; - when "00" & x"970" => DATA <= x"003c"; - when "00" & x"971" => DATA <= x"0001"; - when "00" & x"972" => DATA <= x"4e75"; - when "00" & x"973" => DATA <= x"0c80"; - when "00" & x"974" => DATA <= x"0000"; - when "00" & x"975" => DATA <= x"0007"; - when "00" & x"976" => DATA <= x"6200"; - when "00" & x"977" => DATA <= x"0008"; - when "00" & x"978" => DATA <= x"023c"; - when "00" & x"979" => DATA <= x"00fe"; - when "00" & x"97a" => DATA <= x"4e75"; - when "00" & x"97b" => DATA <= x"70ff"; - when "00" & x"97c" => DATA <= x"72fe"; - when "00" & x"97d" => DATA <= x"003c"; - when "00" & x"97e" => DATA <= x"0001"; - when "00" & x"97f" => DATA <= x"4e75"; - when "00" & x"980" => DATA <= x"2f38"; - when "00" & x"981" => DATA <= x"0478"; - when "00" & x"982" => DATA <= x"4e75"; - when "00" & x"983" => DATA <= x"2f01"; - when "00" & x"984" => DATA <= x"7001"; - when "00" & x"985" => DATA <= x"223c"; - when "00" & x"986" => DATA <= x"0000"; - when "00" & x"987" => DATA <= x"0600"; - when "00" & x"988" => DATA <= x"6100"; - when "00" & x"989" => DATA <= x"f8d2"; - when "00" & x"98a" => DATA <= x"2038"; - when "00" & x"98b" => DATA <= x"0600"; - when "00" & x"98c" => DATA <= x"90b8"; - when "00" & x"98d" => DATA <= x"0528"; - when "00" & x"98e" => DATA <= x"221f"; - when "00" & x"98f" => DATA <= x"4e75"; - when "00" & x"990" => DATA <= x"b0bc"; - when "00" & x"991" => DATA <= x"0000"; - when "00" & x"992" => DATA <= x"04ff"; - when "00" & x"993" => DATA <= x"6200"; - when "00" & x"994" => DATA <= x"0038"; - when "00" & x"995" => DATA <= x"b2bc"; - when "00" & x"996" => DATA <= x"0000"; - when "00" & x"997" => DATA <= x"03ff"; - when "00" & x"998" => DATA <= x"6200"; - when "00" & x"999" => DATA <= x"002e"; - when "00" & x"99a" => DATA <= x"2f00"; - when "00" & x"99b" => DATA <= x"7019"; - when "00" & x"99c" => DATA <= x"6100"; - when "00" & x"99d" => DATA <= x"f6ac"; - when "00" & x"99e" => DATA <= x"201f"; - when "00" & x"99f" => DATA <= x"6100"; - when "00" & x"9a0" => DATA <= x"f6a6"; - when "00" & x"9a1" => DATA <= x"3001"; - when "00" & x"9a2" => DATA <= x"6100"; - when "00" & x"9a3" => DATA <= x"f6a0"; - when "00" & x"9a4" => DATA <= x"e088"; - when "00" & x"9a5" => DATA <= x"6100"; - when "00" & x"9a6" => DATA <= x"f69a"; - when "00" & x"9a7" => DATA <= x"3002"; - when "00" & x"9a8" => DATA <= x"6100"; - when "00" & x"9a9" => DATA <= x"f694"; - when "00" & x"9aa" => DATA <= x"e088"; - when "00" & x"9ab" => DATA <= x"6100"; - when "00" & x"9ac" => DATA <= x"f68e"; - when "00" & x"9ad" => DATA <= x"023c"; - when "00" & x"9ae" => DATA <= x"00fd"; - when "00" & x"9af" => DATA <= x"4e75"; - when "00" & x"9b0" => DATA <= x"203c"; - when "00" & x"9b1" => DATA <= x"003f"; - when "00" & x"9b2" => DATA <= x"2d64"; - when "00" & x"9b3" => DATA <= x"78ff"; - when "00" & x"9b4" => DATA <= x"003c"; - when "00" & x"9b5" => DATA <= x"0002"; - when "00" & x"9b6" => DATA <= x"4e75"; - when "00" & x"9b7" => DATA <= x"0c81"; - when "00" & x"9b8" => DATA <= x"0000"; - when "00" & x"9b9" => DATA <= x"0000"; - when "00" & x"9ba" => DATA <= x"6700"; - when "00" & x"9bb" => DATA <= x"001c"; - when "00" & x"9bc" => DATA <= x"5341"; - when "00" & x"9bd" => DATA <= x"2f08"; - when "00" & x"9be" => DATA <= x"2f00"; - when "00" & x"9bf" => DATA <= x"2f01"; - when "00" & x"9c0" => DATA <= x"2040"; - when "00" & x"9c1" => DATA <= x"1018"; - when "00" & x"9c2" => DATA <= x"6100"; - when "00" & x"9c3" => DATA <= x"f660"; - when "00" & x"9c4" => DATA <= x"51c9"; - when "00" & x"9c5" => DATA <= x"fff8"; - when "00" & x"9c6" => DATA <= x"221f"; - when "00" & x"9c7" => DATA <= x"201f"; - when "00" & x"9c8" => DATA <= x"205f"; - when "00" & x"9c9" => DATA <= x"4e75"; - when "00" & x"9ca" => DATA <= x"2f0e"; - when "00" & x"9cb" => DATA <= x"2f0d"; - when "00" & x"9cc" => DATA <= x"4a80"; - when "00" & x"9cd" => DATA <= x"6700"; - when "00" & x"9ce" => DATA <= x"000e"; - when "00" & x"9cf" => DATA <= x"2c40"; - when "00" & x"9d0" => DATA <= x"2a7c"; - when "00" & x"9d1" => DATA <= x"0000"; - when "00" & x"9d2" => DATA <= x"0600"; - when "00" & x"9d3" => DATA <= x"1ade"; - when "00" & x"9d4" => DATA <= x"66fc"; - when "00" & x"9d5" => DATA <= x"4a81"; - when "00" & x"9d6" => DATA <= x"6700"; - when "00" & x"9d7" => DATA <= x"0016"; - when "00" & x"9d8" => DATA <= x"2f02"; - when "00" & x"9d9" => DATA <= x"7404"; - when "00" & x"9da" => DATA <= x"2c41"; - when "00" & x"9db" => DATA <= x"2a7c"; - when "00" & x"9dc" => DATA <= x"0000"; - when "00" & x"9dd" => DATA <= x"052d"; - when "00" & x"9de" => DATA <= x"1ade"; - when "00" & x"9df" => DATA <= x"5382"; - when "00" & x"9e0" => DATA <= x"6afa"; - when "00" & x"9e1" => DATA <= x"241f"; - when "00" & x"9e2" => DATA <= x"2a5f"; - when "00" & x"9e3" => DATA <= x"2c5f"; - when "00" & x"9e4" => DATA <= x"4e75"; - when "00" & x"9e5" => DATA <= x"2f02"; - when "00" & x"9e6" => DATA <= x"2f01"; - when "00" & x"9e7" => DATA <= x"2f00"; - when "00" & x"9e8" => DATA <= x"2203"; - when "00" & x"9e9" => DATA <= x"7004"; - when "00" & x"9ea" => DATA <= x"6100"; - when "00" & x"9eb" => DATA <= x"fbf4"; - when "00" & x"9ec" => DATA <= x"201f"; - when "00" & x"9ed" => DATA <= x"221f"; - when "00" & x"9ee" => DATA <= x"241f"; - when "00" & x"9ef" => DATA <= x"6000"; - when "00" & x"9f0" => DATA <= x"fa64"; - when "00" & x"9f1" => DATA <= x"b07c"; - when "00" & x"9f2" => DATA <= x"0010"; - when "00" & x"9f3" => DATA <= x"6300"; - when "00" & x"9f4" => DATA <= x"000e"; - when "00" & x"9f5" => DATA <= x"203c"; - when "00" & x"9f6" => DATA <= x"003f"; - when "00" & x"9f7" => DATA <= x"2e1c"; - when "00" & x"9f8" => DATA <= x"003c"; - when "00" & x"9f9" => DATA <= x"0002"; - when "00" & x"9fa" => DATA <= x"4e75"; - when "00" & x"9fb" => DATA <= x"41f9"; - when "00" & x"9fc" => DATA <= x"003f"; - when "00" & x"9fd" => DATA <= x"362c"; - when "00" & x"9fe" => DATA <= x"e588"; - when "00" & x"9ff" => DATA <= x"d1c0"; - when "00" & x"a00" => DATA <= x"d1c0"; + when "00" & x"822" => DATA <= x"6b00"; + when "00" & x"823" => DATA <= x"0030"; + when "00" & x"824" => DATA <= x"b006"; + when "00" & x"825" => DATA <= x"6200"; + when "00" & x"826" => DATA <= x"002a"; + when "00" & x"827" => DATA <= x"bcbc"; + when "00" & x"828" => DATA <= x"0000"; + when "00" & x"829" => DATA <= x"0010"; + when "00" & x"82a" => DATA <= x"6600"; + when "00" & x"82b" => DATA <= x"000a"; + when "00" & x"82c" => DATA <= x"e98a"; + when "00" & x"82d" => DATA <= x"d480"; + when "00" & x"82e" => DATA <= x"101e"; + when "00" & x"82f" => DATA <= x"60d2"; + when "00" & x"830" => DATA <= x"2606"; + when "00" & x"831" => DATA <= x"5583"; + when "00" & x"832" => DATA <= x"2802"; + when "00" & x"833" => DATA <= x"d484"; + when "00" & x"834" => DATA <= x"6500"; + when "00" & x"835" => DATA <= x"0048"; + when "00" & x"836" => DATA <= x"51cb"; + when "00" & x"837" => DATA <= x"fff8"; + when "00" & x"838" => DATA <= x"d480"; + when "00" & x"839" => DATA <= x"101e"; + when "00" & x"83a" => DATA <= x"60bc"; + when "00" & x"83b" => DATA <= x"4a82"; + when "00" & x"83c" => DATA <= x"6700"; + when "00" & x"83d" => DATA <= x"002e"; + when "00" & x"83e" => DATA <= x"4a87"; + when "00" & x"83f" => DATA <= x"6700"; + when "00" & x"840" => DATA <= x"0008"; + when "00" & x"841" => DATA <= x"b087"; + when "00" & x"842" => DATA <= x"6200"; + when "00" & x"843" => DATA <= x"002c"; + when "00" & x"844" => DATA <= x"220e"; + when "00" & x"845" => DATA <= x"5381"; + when "00" & x"846" => DATA <= x"201f"; + when "00" & x"847" => DATA <= x"261f"; + when "00" & x"848" => DATA <= x"281f"; + when "00" & x"849" => DATA <= x"2c1f"; + when "00" & x"84a" => DATA <= x"2e1f"; + when "00" & x"84b" => DATA <= x"2c5f"; + when "00" & x"84c" => DATA <= x"023c"; + when "00" & x"84d" => DATA <= x"00fd"; + when "00" & x"84e" => DATA <= x"4e75"; + when "00" & x"84f" => DATA <= x"203c"; + when "00" & x"850" => DATA <= x"003f"; + when "00" & x"851" => DATA <= x"2dec"; + when "00" & x"852" => DATA <= x"6000"; + when "00" & x"853" => DATA <= x"0012"; + when "00" & x"854" => DATA <= x"203c"; + when "00" & x"855" => DATA <= x"003f"; + when "00" & x"856" => DATA <= x"2dfc"; + when "00" & x"857" => DATA <= x"6000"; + when "00" & x"858" => DATA <= x"0008"; + when "00" & x"859" => DATA <= x"203c"; + when "00" & x"85a" => DATA <= x"003f"; + when "00" & x"85b" => DATA <= x"2e0c"; + when "00" & x"85c" => DATA <= x"261f"; + when "00" & x"85d" => DATA <= x"261f"; + when "00" & x"85e" => DATA <= x"281f"; + when "00" & x"85f" => DATA <= x"2c1f"; + when "00" & x"860" => DATA <= x"2e1f"; + when "00" & x"861" => DATA <= x"2c5f"; + when "00" & x"862" => DATA <= x"003c"; + when "00" & x"863" => DATA <= x"0002"; + when "00" & x"864" => DATA <= x"4e75"; + when "00" & x"865" => DATA <= x"2f00"; + when "00" & x"866" => DATA <= x"2f01"; + when "00" & x"867" => DATA <= x"6100"; + when "00" & x"868" => DATA <= x"07bc"; + when "00" & x"869" => DATA <= x"2401"; + when "00" & x"86a" => DATA <= x"221f"; + when "00" & x"86b" => DATA <= x"201f"; + when "00" & x"86c" => DATA <= x"4e75"; + when "00" & x"86d" => DATA <= x"b03c"; + when "00" & x"86e" => DATA <= x"003a"; + when "00" & x"86f" => DATA <= x"6200"; + when "00" & x"870" => DATA <= x"001c"; + when "00" & x"871" => DATA <= x"2f0e"; + when "00" & x"872" => DATA <= x"d040"; + when "00" & x"873" => DATA <= x"d040"; + when "00" & x"874" => DATA <= x"2c79"; + when "00" & x"875" => DATA <= x"003f"; + when "00" & x"876" => DATA <= x"36fc"; + when "00" & x"877" => DATA <= x"ddc0"; + when "00" & x"878" => DATA <= x"4dd6"; + when "00" & x"879" => DATA <= x"4e96"; + when "00" & x"87a" => DATA <= x"2c5f"; + when "00" & x"87b" => DATA <= x"023c"; + when "00" & x"87c" => DATA <= x"00fd"; + when "00" & x"87d" => DATA <= x"4e75"; + when "00" & x"87e" => DATA <= x"203c"; + when "00" & x"87f" => DATA <= x"003f"; + when "00" & x"880" => DATA <= x"2ef8"; + when "00" & x"881" => DATA <= x"003c"; + when "00" & x"882" => DATA <= x"0002"; + when "00" & x"883" => DATA <= x"4e75"; + when "00" & x"884" => DATA <= x"103c"; + when "00" & x"885" => DATA <= x"008b"; + when "00" & x"886" => DATA <= x"6100"; + when "00" & x"887" => DATA <= x"f9c8"; + when "00" & x"888" => DATA <= x"103c"; + when "00" & x"889" => DATA <= x"0010"; + when "00" & x"88a" => DATA <= x"4e75"; + when "00" & x"88b" => DATA <= x"7000"; + when "00" & x"88c" => DATA <= x"7200"; + when "00" & x"88d" => DATA <= x"6100"; + when "00" & x"88e" => DATA <= x"fbb2"; + when "00" & x"88f" => DATA <= x"103c"; + when "00" & x"890" => DATA <= x"0016"; + when "00" & x"891" => DATA <= x"4e75"; + when "00" & x"892" => DATA <= x"2f38"; + when "00" & x"893" => DATA <= x"0404"; + when "00" & x"894" => DATA <= x"4e75"; + when "00" & x"895" => DATA <= x"0838"; + when "00" & x"896" => DATA <= x"0006"; + when "00" & x"897" => DATA <= x"0535"; + when "00" & x"898" => DATA <= x"6600"; + when "00" & x"899" => DATA <= x"0008"; + when "00" & x"89a" => DATA <= x"023c"; + when "00" & x"89b" => DATA <= x"00fe"; + when "00" & x"89c" => DATA <= x"4e75"; + when "00" & x"89d" => DATA <= x"003c"; + when "00" & x"89e" => DATA <= x"0001"; + when "00" & x"89f" => DATA <= x"4e75"; + when "00" & x"8a0" => DATA <= x"2f04"; + when "00" & x"8a1" => DATA <= x"7801"; + when "00" & x"8a2" => DATA <= x"2f0e"; + when "00" & x"8a3" => DATA <= x"2c79"; + when "00" & x"8a4" => DATA <= x"0000"; + when "00" & x"8a5" => DATA <= x"048c"; + when "00" & x"8a6" => DATA <= x"4e96"; + when "00" & x"8a7" => DATA <= x"2c5f"; + when "00" & x"8a8" => DATA <= x"281f"; + when "00" & x"8a9" => DATA <= x"4e75"; + when "00" & x"8aa" => DATA <= x"4e75"; + when "00" & x"8ab" => DATA <= x"b0bc"; + when "00" & x"8ac" => DATA <= x"0000"; + when "00" & x"8ad" => DATA <= x"04ff"; + when "00" & x"8ae" => DATA <= x"6200"; + when "00" & x"8af" => DATA <= x"0040"; + when "00" & x"8b0" => DATA <= x"b2bc"; + when "00" & x"8b1" => DATA <= x"0000"; + when "00" & x"8b2" => DATA <= x"03ff"; + when "00" & x"8b3" => DATA <= x"6200"; + when "00" & x"8b4" => DATA <= x"0036"; + when "00" & x"8b5" => DATA <= x"2f00"; + when "00" & x"8b6" => DATA <= x"2f01"; + when "00" & x"8b7" => DATA <= x"31c0"; + when "00" & x"8b8" => DATA <= x"0600"; + when "00" & x"8b9" => DATA <= x"31c1"; + when "00" & x"8ba" => DATA <= x"0602"; + when "00" & x"8bb" => DATA <= x"223c"; + when "00" & x"8bc" => DATA <= x"0000"; + when "00" & x"8bd" => DATA <= x"0600"; + when "00" & x"8be" => DATA <= x"7009"; + when "00" & x"8bf" => DATA <= x"6100"; + when "00" & x"8c0" => DATA <= x"fa68"; + when "00" & x"8c1" => DATA <= x"7400"; + when "00" & x"8c2" => DATA <= x"7600"; + when "00" & x"8c3" => DATA <= x"1438"; + when "00" & x"8c4" => DATA <= x"0604"; + when "00" & x"8c5" => DATA <= x"221f"; + when "00" & x"8c6" => DATA <= x"201f"; + when "00" & x"8c7" => DATA <= x"b43c"; + when "00" & x"8c8" => DATA <= x"00ff"; + when "00" & x"8c9" => DATA <= x"6700"; + when "00" & x"8ca" => DATA <= x"000a"; + when "00" & x"8cb" => DATA <= x"7800"; + when "00" & x"8cc" => DATA <= x"023c"; + when "00" & x"8cd" => DATA <= x"00fd"; + when "00" & x"8ce" => DATA <= x"4e75"; + when "00" & x"8cf" => DATA <= x"203c"; + when "00" & x"8d0" => DATA <= x"003f"; + when "00" & x"8d1" => DATA <= x"2d68"; + when "00" & x"8d2" => DATA <= x"78ff"; + when "00" & x"8d3" => DATA <= x"003c"; + when "00" & x"8d4" => DATA <= x"0002"; + when "00" & x"8d5" => DATA <= x"4e75"; + when "00" & x"8d6" => DATA <= x"b5fc"; + when "00" & x"8d7" => DATA <= x"0000"; + when "00" & x"8d8" => DATA <= x"002f"; + when "00" & x"8d9" => DATA <= x"6200"; + when "00" & x"8da" => DATA <= x"0018"; + when "00" & x"8db" => DATA <= x"2f0a"; + when "00" & x"8dc" => DATA <= x"d4ca"; + when "00" & x"8dd" => DATA <= x"d4ca"; + when "00" & x"8de" => DATA <= x"d5f8"; + when "00" & x"8df" => DATA <= x"0000"; + when "00" & x"8e0" => DATA <= x"45d2"; + when "00" & x"8e1" => DATA <= x"4e92"; + when "00" & x"8e2" => DATA <= x"245f"; + when "00" & x"8e3" => DATA <= x"023c"; + when "00" & x"8e4" => DATA <= x"00fd"; + when "00" & x"8e5" => DATA <= x"4e75"; + when "00" & x"8e6" => DATA <= x"203c"; + when "00" & x"8e7" => DATA <= x"003f"; + when "00" & x"8e8" => DATA <= x"2e4c"; + when "00" & x"8e9" => DATA <= x"003c"; + when "00" & x"8ea" => DATA <= x"0002"; + when "00" & x"8eb" => DATA <= x"4e75"; + when "00" & x"8ec" => DATA <= x"2f00"; + when "00" & x"8ed" => DATA <= x"2f01"; + when "00" & x"8ee" => DATA <= x"203c"; + when "00" & x"8ef" => DATA <= x"003f"; + when "00" & x"8f0" => DATA <= x"2826"; + when "00" & x"8f1" => DATA <= x"720b"; + when "00" & x"8f2" => DATA <= x"6100"; + when "00" & x"8f3" => DATA <= x"018c"; + when "00" & x"8f4" => DATA <= x"221f"; + when "00" & x"8f5" => DATA <= x"201f"; + when "00" & x"8f6" => DATA <= x"023c"; + when "00" & x"8f7" => DATA <= x"00fd"; + when "00" & x"8f8" => DATA <= x"4e75"; + when "00" & x"8f9" => DATA <= x"2f00"; + when "00" & x"8fa" => DATA <= x"2f01"; + when "00" & x"8fb" => DATA <= x"203c"; + when "00" & x"8fc" => DATA <= x"003f"; + when "00" & x"8fd" => DATA <= x"2831"; + when "00" & x"8fe" => DATA <= x"720b"; + when "00" & x"8ff" => DATA <= x"6100"; + when "00" & x"900" => DATA <= x"0172"; + when "00" & x"901" => DATA <= x"221f"; + when "00" & x"902" => DATA <= x"201f"; + when "00" & x"903" => DATA <= x"023c"; + when "00" & x"904" => DATA <= x"00fd"; + when "00" & x"905" => DATA <= x"4e75"; + when "00" & x"906" => DATA <= x"2f0e"; + when "00" & x"907" => DATA <= x"2f09"; + when "00" & x"908" => DATA <= x"2f01"; + when "00" & x"909" => DATA <= x"2f00"; + when "00" & x"90a" => DATA <= x"2c41"; + when "00" & x"90b" => DATA <= x"0280"; + when "00" & x"90c" => DATA <= x"0002"; + when "00" & x"90d" => DATA <= x"0000"; + when "00" & x"90e" => DATA <= x"6700"; + when "00" & x"90f" => DATA <= x"000c"; + when "00" & x"910" => DATA <= x"5382"; + when "00" & x"911" => DATA <= x"6b00"; + when "00" & x"912" => DATA <= x"005c"; + when "00" & x"913" => DATA <= x"1cfc"; + when "00" & x"914" => DATA <= x"0058"; + when "00" & x"915" => DATA <= x"43f9"; + when "00" & x"916" => DATA <= x"003f"; + when "00" & x"917" => DATA <= x"2f54"; + when "00" & x"918" => DATA <= x"b099"; + when "00" & x"919" => DATA <= x"6700"; + when "00" & x"91a" => DATA <= x"0014"; + when "00" & x"91b" => DATA <= x"2219"; + when "00" & x"91c" => DATA <= x"b23c"; + when "00" & x"91d" => DATA <= x"00ff"; + when "00" & x"91e" => DATA <= x"6700"; + when "00" & x"91f" => DATA <= x"0020"; + when "00" & x"920" => DATA <= x"b23c"; + when "00" & x"921" => DATA <= x"0000"; + when "00" & x"922" => DATA <= x"66f0"; + when "00" & x"923" => DATA <= x"60e8"; + when "00" & x"924" => DATA <= x"2019"; + when "00" & x"925" => DATA <= x"5382"; + when "00" & x"926" => DATA <= x"6b00"; + when "00" & x"927" => DATA <= x"0032"; + when "00" & x"928" => DATA <= x"1cd9"; + when "00" & x"929" => DATA <= x"66f6"; + when "00" & x"92a" => DATA <= x"201f"; + when "00" & x"92b" => DATA <= x"221f"; + when "00" & x"92c" => DATA <= x"225f"; + when "00" & x"92d" => DATA <= x"2c5f"; + when "00" & x"92e" => DATA <= x"4e75"; + when "00" & x"92f" => DATA <= x"0c81"; + when "00" & x"930" => DATA <= x"0000"; + when "00" & x"931" => DATA <= x"000d"; + when "00" & x"932" => DATA <= x"6500"; + when "00" & x"933" => DATA <= x"001a"; + when "00" & x"934" => DATA <= x"2cfc"; + when "00" & x"935" => DATA <= x"4f53"; + when "00" & x"936" => DATA <= x"5f55"; + when "00" & x"937" => DATA <= x"2cfc"; + when "00" & x"938" => DATA <= x"6e64"; + when "00" & x"939" => DATA <= x"6566"; + when "00" & x"93a" => DATA <= x"2cfc"; + when "00" & x"93b" => DATA <= x"696e"; + when "00" & x"93c" => DATA <= x"6564"; + when "00" & x"93d" => DATA <= x"1cfc"; + when "00" & x"93e" => DATA <= x"0000"; + when "00" & x"93f" => DATA <= x"60d4"; + when "00" & x"940" => DATA <= x"003c"; + when "00" & x"941" => DATA <= x"0002"; + when "00" & x"942" => DATA <= x"2ebc"; + when "00" & x"943" => DATA <= x"003f"; + when "00" & x"944" => DATA <= x"2e84"; + when "00" & x"945" => DATA <= x"60c8"; + when "00" & x"946" => DATA <= x"2f0e"; + when "00" & x"947" => DATA <= x"2f0d"; + when "00" & x"948" => DATA <= x"2f01"; + when "00" & x"949" => DATA <= x"4bf9"; + when "00" & x"94a" => DATA <= x"003f"; + when "00" & x"94b" => DATA <= x"2f54"; + when "00" & x"94c" => DATA <= x"2c57"; + when "00" & x"94d" => DATA <= x"201d"; + when "00" & x"94e" => DATA <= x"588d"; + when "00" & x"94f" => DATA <= x"bd8d"; + when "00" & x"950" => DATA <= x"6600"; + when "00" & x"951" => DATA <= x"0010"; + when "00" & x"952" => DATA <= x"4a2d"; + when "00" & x"953" => DATA <= x"ffff"; + when "00" & x"954" => DATA <= x"66f4"; + when "00" & x"955" => DATA <= x"221f"; + when "00" & x"956" => DATA <= x"2a5f"; + when "00" & x"957" => DATA <= x"2c5f"; + when "00" & x"958" => DATA <= x"4e75"; + when "00" & x"959" => DATA <= x"201d"; + when "00" & x"95a" => DATA <= x"4a00"; + when "00" & x"95b" => DATA <= x"66fa"; + when "00" & x"95c" => DATA <= x"b03c"; + when "00" & x"95d" => DATA <= x"00ff"; + when "00" & x"95e" => DATA <= x"66da"; + when "00" & x"95f" => DATA <= x"221f"; + when "00" & x"960" => DATA <= x"2a5f"; + when "00" & x"961" => DATA <= x"2c5f"; + when "00" & x"962" => DATA <= x"203c"; + when "00" & x"963" => DATA <= x"003f"; + when "00" & x"964" => DATA <= x"2e98"; + when "00" & x"965" => DATA <= x"003c"; + when "00" & x"966" => DATA <= x"0002"; + when "00" & x"967" => DATA <= x"4e75"; + when "00" & x"968" => DATA <= x"4a80"; + when "00" & x"969" => DATA <= x"6d00"; + when "00" & x"96a" => DATA <= x"0010"; + when "00" & x"96b" => DATA <= x"b2b8"; + when "00" & x"96c" => DATA <= x"0508"; + when "00" & x"96d" => DATA <= x"6200"; + when "00" & x"96e" => DATA <= x"0008"; + when "00" & x"96f" => DATA <= x"023c"; + when "00" & x"970" => DATA <= x"00fe"; + when "00" & x"971" => DATA <= x"4e75"; + when "00" & x"972" => DATA <= x"003c"; + when "00" & x"973" => DATA <= x"0001"; + when "00" & x"974" => DATA <= x"4e75"; + when "00" & x"975" => DATA <= x"0c80"; + when "00" & x"976" => DATA <= x"0000"; + when "00" & x"977" => DATA <= x"0007"; + when "00" & x"978" => DATA <= x"6200"; + when "00" & x"979" => DATA <= x"0008"; + when "00" & x"97a" => DATA <= x"023c"; + when "00" & x"97b" => DATA <= x"00fe"; + when "00" & x"97c" => DATA <= x"4e75"; + when "00" & x"97d" => DATA <= x"70ff"; + when "00" & x"97e" => DATA <= x"72fe"; + when "00" & x"97f" => DATA <= x"003c"; + when "00" & x"980" => DATA <= x"0001"; + when "00" & x"981" => DATA <= x"4e75"; + when "00" & x"982" => DATA <= x"2f38"; + when "00" & x"983" => DATA <= x"0478"; + when "00" & x"984" => DATA <= x"4e75"; + when "00" & x"985" => DATA <= x"2f01"; + when "00" & x"986" => DATA <= x"7001"; + when "00" & x"987" => DATA <= x"223c"; + when "00" & x"988" => DATA <= x"0000"; + when "00" & x"989" => DATA <= x"0600"; + when "00" & x"98a" => DATA <= x"6100"; + when "00" & x"98b" => DATA <= x"f8d2"; + when "00" & x"98c" => DATA <= x"2038"; + when "00" & x"98d" => DATA <= x"0600"; + when "00" & x"98e" => DATA <= x"90b8"; + when "00" & x"98f" => DATA <= x"0528"; + when "00" & x"990" => DATA <= x"221f"; + when "00" & x"991" => DATA <= x"4e75"; + when "00" & x"992" => DATA <= x"b0bc"; + when "00" & x"993" => DATA <= x"0000"; + when "00" & x"994" => DATA <= x"04ff"; + when "00" & x"995" => DATA <= x"6200"; + when "00" & x"996" => DATA <= x"0038"; + when "00" & x"997" => DATA <= x"b2bc"; + when "00" & x"998" => DATA <= x"0000"; + when "00" & x"999" => DATA <= x"03ff"; + when "00" & x"99a" => DATA <= x"6200"; + when "00" & x"99b" => DATA <= x"002e"; + when "00" & x"99c" => DATA <= x"2f00"; + when "00" & x"99d" => DATA <= x"7019"; + when "00" & x"99e" => DATA <= x"6100"; + when "00" & x"99f" => DATA <= x"f6ac"; + when "00" & x"9a0" => DATA <= x"201f"; + when "00" & x"9a1" => DATA <= x"6100"; + when "00" & x"9a2" => DATA <= x"f6a6"; + when "00" & x"9a3" => DATA <= x"3001"; + when "00" & x"9a4" => DATA <= x"6100"; + when "00" & x"9a5" => DATA <= x"f6a0"; + when "00" & x"9a6" => DATA <= x"e088"; + when "00" & x"9a7" => DATA <= x"6100"; + when "00" & x"9a8" => DATA <= x"f69a"; + when "00" & x"9a9" => DATA <= x"3002"; + when "00" & x"9aa" => DATA <= x"6100"; + when "00" & x"9ab" => DATA <= x"f694"; + when "00" & x"9ac" => DATA <= x"e088"; + when "00" & x"9ad" => DATA <= x"6100"; + when "00" & x"9ae" => DATA <= x"f68e"; + when "00" & x"9af" => DATA <= x"023c"; + when "00" & x"9b0" => DATA <= x"00fd"; + when "00" & x"9b1" => DATA <= x"4e75"; + when "00" & x"9b2" => DATA <= x"203c"; + when "00" & x"9b3" => DATA <= x"003f"; + when "00" & x"9b4" => DATA <= x"2d68"; + when "00" & x"9b5" => DATA <= x"78ff"; + when "00" & x"9b6" => DATA <= x"003c"; + when "00" & x"9b7" => DATA <= x"0002"; + when "00" & x"9b8" => DATA <= x"4e75"; + when "00" & x"9b9" => DATA <= x"0c81"; + when "00" & x"9ba" => DATA <= x"0000"; + when "00" & x"9bb" => DATA <= x"0000"; + when "00" & x"9bc" => DATA <= x"6700"; + when "00" & x"9bd" => DATA <= x"001c"; + when "00" & x"9be" => DATA <= x"5341"; + when "00" & x"9bf" => DATA <= x"2f08"; + when "00" & x"9c0" => DATA <= x"2f00"; + when "00" & x"9c1" => DATA <= x"2f01"; + when "00" & x"9c2" => DATA <= x"2040"; + when "00" & x"9c3" => DATA <= x"1018"; + when "00" & x"9c4" => DATA <= x"6100"; + when "00" & x"9c5" => DATA <= x"f660"; + when "00" & x"9c6" => DATA <= x"51c9"; + when "00" & x"9c7" => DATA <= x"fff8"; + when "00" & x"9c8" => DATA <= x"221f"; + when "00" & x"9c9" => DATA <= x"201f"; + when "00" & x"9ca" => DATA <= x"205f"; + when "00" & x"9cb" => DATA <= x"4e75"; + when "00" & x"9cc" => DATA <= x"2f0e"; + when "00" & x"9cd" => DATA <= x"2f0d"; + when "00" & x"9ce" => DATA <= x"4a80"; + when "00" & x"9cf" => DATA <= x"6700"; + when "00" & x"9d0" => DATA <= x"000e"; + when "00" & x"9d1" => DATA <= x"2c40"; + when "00" & x"9d2" => DATA <= x"2a7c"; + when "00" & x"9d3" => DATA <= x"0000"; + when "00" & x"9d4" => DATA <= x"0600"; + when "00" & x"9d5" => DATA <= x"1ade"; + when "00" & x"9d6" => DATA <= x"66fc"; + when "00" & x"9d7" => DATA <= x"4a81"; + when "00" & x"9d8" => DATA <= x"6700"; + when "00" & x"9d9" => DATA <= x"0016"; + when "00" & x"9da" => DATA <= x"2f02"; + when "00" & x"9db" => DATA <= x"7404"; + when "00" & x"9dc" => DATA <= x"2c41"; + when "00" & x"9dd" => DATA <= x"2a7c"; + when "00" & x"9de" => DATA <= x"0000"; + when "00" & x"9df" => DATA <= x"052d"; + when "00" & x"9e0" => DATA <= x"1ade"; + when "00" & x"9e1" => DATA <= x"5382"; + when "00" & x"9e2" => DATA <= x"6afa"; + when "00" & x"9e3" => DATA <= x"241f"; + when "00" & x"9e4" => DATA <= x"2a5f"; + when "00" & x"9e5" => DATA <= x"2c5f"; + when "00" & x"9e6" => DATA <= x"4e75"; + when "00" & x"9e7" => DATA <= x"2f02"; + when "00" & x"9e8" => DATA <= x"2f01"; + when "00" & x"9e9" => DATA <= x"2f00"; + when "00" & x"9ea" => DATA <= x"2203"; + when "00" & x"9eb" => DATA <= x"7004"; + when "00" & x"9ec" => DATA <= x"6100"; + when "00" & x"9ed" => DATA <= x"fbf4"; + when "00" & x"9ee" => DATA <= x"201f"; + when "00" & x"9ef" => DATA <= x"221f"; + when "00" & x"9f0" => DATA <= x"241f"; + when "00" & x"9f1" => DATA <= x"6000"; + when "00" & x"9f2" => DATA <= x"fa64"; + when "00" & x"9f3" => DATA <= x"b07c"; + when "00" & x"9f4" => DATA <= x"0010"; + when "00" & x"9f5" => DATA <= x"6300"; + when "00" & x"9f6" => DATA <= x"000e"; + when "00" & x"9f7" => DATA <= x"203c"; + when "00" & x"9f8" => DATA <= x"003f"; + when "00" & x"9f9" => DATA <= x"2e20"; + when "00" & x"9fa" => DATA <= x"003c"; + when "00" & x"9fb" => DATA <= x"0002"; + when "00" & x"9fc" => DATA <= x"4e75"; + when "00" & x"9fd" => DATA <= x"41f9"; + when "00" & x"9fe" => DATA <= x"003f"; + when "00" & x"9ff" => DATA <= x"3630"; + when "00" & x"a00" => DATA <= x"e588"; when "00" & x"a01" => DATA <= x"d1c0"; - when "00" & x"a02" => DATA <= x"2218"; - when "00" & x"a03" => DATA <= x"6700"; - when "00" & x"a04" => DATA <= x"11ea"; - when "00" & x"a05" => DATA <= x"0681"; - when "00" & x"a06" => DATA <= x"003f"; - when "00" & x"a07" => DATA <= x"0000"; - when "00" & x"a08" => DATA <= x"2418"; - when "00" & x"a09" => DATA <= x"6700"; - when "00" & x"a0a" => DATA <= x"0008"; - when "00" & x"a0b" => DATA <= x"0682"; - when "00" & x"a0c" => DATA <= x"003f"; - when "00" & x"a0d" => DATA <= x"0000"; - when "00" & x"a0e" => DATA <= x"2618"; - when "00" & x"a0f" => DATA <= x"6700"; - when "00" & x"a10" => DATA <= x"0008"; - when "00" & x"a11" => DATA <= x"0683"; - when "00" & x"a12" => DATA <= x"003f"; - when "00" & x"a13" => DATA <= x"0000"; - when "00" & x"a14" => DATA <= x"4e75"; - when "00" & x"a15" => DATA <= x"b0bc"; - when "00" & x"a16" => DATA <= x"0000"; - when "00" & x"a17" => DATA <= x"04ff"; - when "00" & x"a18" => DATA <= x"6200"; - when "00" & x"a19" => DATA <= x"005c"; - when "00" & x"a1a" => DATA <= x"b2bc"; - when "00" & x"a1b" => DATA <= x"0000"; - when "00" & x"a1c" => DATA <= x"03ff"; - when "00" & x"a1d" => DATA <= x"6200"; - when "00" & x"a1e" => DATA <= x"0052"; - when "00" & x"a1f" => DATA <= x"2f00"; - when "00" & x"a20" => DATA <= x"2f01"; - when "00" & x"a21" => DATA <= x"103c"; - when "00" & x"a22" => DATA <= x"0017"; - when "00" & x"a23" => DATA <= x"6100"; - when "00" & x"a24" => DATA <= x"f59e"; - when "00" & x"a25" => DATA <= x"103c"; - when "00" & x"a26" => DATA <= x"0011"; - when "00" & x"a27" => DATA <= x"6100"; - when "00" & x"a28" => DATA <= x"f596"; - when "00" & x"a29" => DATA <= x"103c"; - when "00" & x"a2a" => DATA <= x"0006"; - when "00" & x"a2b" => DATA <= x"6100"; - when "00" & x"a2c" => DATA <= x"f58e"; - when "00" & x"a2d" => DATA <= x"201f"; - when "00" & x"a2e" => DATA <= x"e098"; - when "00" & x"a2f" => DATA <= x"6100"; - when "00" & x"a30" => DATA <= x"f586"; - when "00" & x"a31" => DATA <= x"e198"; - when "00" & x"a32" => DATA <= x"6100"; - when "00" & x"a33" => DATA <= x"f580"; - when "00" & x"a34" => DATA <= x"2001"; - when "00" & x"a35" => DATA <= x"e098"; - when "00" & x"a36" => DATA <= x"6100"; - when "00" & x"a37" => DATA <= x"f578"; - when "00" & x"a38" => DATA <= x"e198"; - when "00" & x"a39" => DATA <= x"6100"; - when "00" & x"a3a" => DATA <= x"f572"; - when "00" & x"a3b" => DATA <= x"7000"; - when "00" & x"a3c" => DATA <= x"6100"; - when "00" & x"a3d" => DATA <= x"f56c"; + when "00" & x"a02" => DATA <= x"d1c0"; + when "00" & x"a03" => DATA <= x"d1c0"; + when "00" & x"a04" => DATA <= x"2218"; + when "00" & x"a05" => DATA <= x"6700"; + when "00" & x"a06" => DATA <= x"11ea"; + when "00" & x"a07" => DATA <= x"0681"; + when "00" & x"a08" => DATA <= x"003f"; + when "00" & x"a09" => DATA <= x"0000"; + when "00" & x"a0a" => DATA <= x"2418"; + when "00" & x"a0b" => DATA <= x"6700"; + when "00" & x"a0c" => DATA <= x"0008"; + when "00" & x"a0d" => DATA <= x"0682"; + when "00" & x"a0e" => DATA <= x"003f"; + when "00" & x"a0f" => DATA <= x"0000"; + when "00" & x"a10" => DATA <= x"2618"; + when "00" & x"a11" => DATA <= x"6700"; + when "00" & x"a12" => DATA <= x"0008"; + when "00" & x"a13" => DATA <= x"0683"; + when "00" & x"a14" => DATA <= x"003f"; + when "00" & x"a15" => DATA <= x"0000"; + when "00" & x"a16" => DATA <= x"4e75"; + when "00" & x"a17" => DATA <= x"b0bc"; + when "00" & x"a18" => DATA <= x"0000"; + when "00" & x"a19" => DATA <= x"04ff"; + when "00" & x"a1a" => DATA <= x"6200"; + when "00" & x"a1b" => DATA <= x"005c"; + when "00" & x"a1c" => DATA <= x"b2bc"; + when "00" & x"a1d" => DATA <= x"0000"; + when "00" & x"a1e" => DATA <= x"03ff"; + when "00" & x"a1f" => DATA <= x"6200"; + when "00" & x"a20" => DATA <= x"0052"; + when "00" & x"a21" => DATA <= x"2f00"; + when "00" & x"a22" => DATA <= x"2f01"; + when "00" & x"a23" => DATA <= x"103c"; + when "00" & x"a24" => DATA <= x"0017"; + when "00" & x"a25" => DATA <= x"6100"; + when "00" & x"a26" => DATA <= x"f59e"; + when "00" & x"a27" => DATA <= x"103c"; + when "00" & x"a28" => DATA <= x"0011"; + when "00" & x"a29" => DATA <= x"6100"; + when "00" & x"a2a" => DATA <= x"f596"; + when "00" & x"a2b" => DATA <= x"103c"; + when "00" & x"a2c" => DATA <= x"0006"; + when "00" & x"a2d" => DATA <= x"6100"; + when "00" & x"a2e" => DATA <= x"f58e"; + when "00" & x"a2f" => DATA <= x"201f"; + when "00" & x"a30" => DATA <= x"e098"; + when "00" & x"a31" => DATA <= x"6100"; + when "00" & x"a32" => DATA <= x"f586"; + when "00" & x"a33" => DATA <= x"e198"; + when "00" & x"a34" => DATA <= x"6100"; + when "00" & x"a35" => DATA <= x"f580"; + when "00" & x"a36" => DATA <= x"2001"; + when "00" & x"a37" => DATA <= x"e098"; + when "00" & x"a38" => DATA <= x"6100"; + when "00" & x"a39" => DATA <= x"f578"; + when "00" & x"a3a" => DATA <= x"e198"; + when "00" & x"a3b" => DATA <= x"6100"; + when "00" & x"a3c" => DATA <= x"f572"; + when "00" & x"a3d" => DATA <= x"7000"; when "00" & x"a3e" => DATA <= x"6100"; - when "00" & x"a3f" => DATA <= x"f568"; + when "00" & x"a3f" => DATA <= x"f56c"; when "00" & x"a40" => DATA <= x"6100"; - when "00" & x"a41" => DATA <= x"f564"; - when "00" & x"a42" => DATA <= x"221f"; - when "00" & x"a43" => DATA <= x"201f"; - when "00" & x"a44" => DATA <= x"023c"; - when "00" & x"a45" => DATA <= x"00fe"; - when "00" & x"a46" => DATA <= x"4e75"; - when "00" & x"a47" => DATA <= x"203c"; - when "00" & x"a48" => DATA <= x"003f"; - when "00" & x"a49" => DATA <= x"2d64"; - when "00" & x"a4a" => DATA <= x"003c"; - when "00" & x"a4b" => DATA <= x"0002"; - when "00" & x"a4c" => DATA <= x"4e75"; - when "00" & x"a4d" => DATA <= x"6100"; - when "00" & x"a4e" => DATA <= x"f584"; - when "00" & x"a4f" => DATA <= x"0000"; - when "00" & x"a50" => DATA <= x"0020"; - when "00" & x"a51" => DATA <= x"b03c"; - when "00" & x"a52" => DATA <= x"0079"; - when "00" & x"a53" => DATA <= x"4e75"; - when "00" & x"a54" => DATA <= x"2f0e"; - when "00" & x"a55" => DATA <= x"2f04"; - when "00" & x"a56" => DATA <= x"2c41"; - when "00" & x"a57" => DATA <= x"8643"; - when "00" & x"a58" => DATA <= x"6700"; - when "00" & x"a59" => DATA <= x"001e"; - when "00" & x"a5a" => DATA <= x"1816"; - when "00" & x"a5b" => DATA <= x"e144"; - when "00" & x"a5c" => DATA <= x"b940"; - when "00" & x"a5d" => DATA <= x"7807"; - when "00" & x"a5e" => DATA <= x"e340"; - when "00" & x"a5f" => DATA <= x"6400"; - when "00" & x"a60" => DATA <= x"0006"; - when "00" & x"a61" => DATA <= x"0a40"; - when "00" & x"a62" => DATA <= x"1021"; - when "00" & x"a63" => DATA <= x"51cc"; - when "00" & x"a64" => DATA <= x"fff4"; - when "00" & x"a65" => DATA <= x"dcc3"; - when "00" & x"a66" => DATA <= x"b48e"; - when "00" & x"a67" => DATA <= x"65e4"; - when "00" & x"a68" => DATA <= x"281f"; - when "00" & x"a69" => DATA <= x"2c5f"; - when "00" & x"a6a" => DATA <= x"023c"; - when "00" & x"a6b" => DATA <= x"00fd"; - when "00" & x"a6c" => DATA <= x"4e75"; - when "00" & x"a6d" => DATA <= x"1400"; - when "00" & x"a6e" => DATA <= x"708a"; - when "00" & x"a6f" => DATA <= x"7203"; - when "00" & x"a70" => DATA <= x"6100"; - when "00" & x"a71" => DATA <= x"f5f0"; - when "00" & x"a72" => DATA <= x"4e75"; - when "00" & x"a73" => DATA <= x"027c"; - when "00" & x"a74" => DATA <= x"dfff"; - when "00" & x"a75" => DATA <= x"4e75"; - when "00" & x"a76" => DATA <= x"b2bc"; - when "00" & x"a77" => DATA <= x"0000"; - when "00" & x"a78" => DATA <= x"00ff"; - when "00" & x"a79" => DATA <= x"6200"; - when "00" & x"a7a" => DATA <= x"0060"; - when "00" & x"a7b" => DATA <= x"2f08"; - when "00" & x"a7c" => DATA <= x"2040"; - when "00" & x"a7d" => DATA <= x"103c"; - when "00" & x"a7e" => DATA <= x"000a"; - when "00" & x"a7f" => DATA <= x"6100"; - when "00" & x"a80" => DATA <= x"eee2"; - when "00" & x"a81" => DATA <= x"1003"; - when "00" & x"a82" => DATA <= x"6100"; - when "00" & x"a83" => DATA <= x"eedc"; - when "00" & x"a84" => DATA <= x"1002"; - when "00" & x"a85" => DATA <= x"6100"; - when "00" & x"a86" => DATA <= x"eed6"; - when "00" & x"a87" => DATA <= x"1001"; - when "00" & x"a88" => DATA <= x"6100"; - when "00" & x"a89" => DATA <= x"eed0"; - when "00" & x"a8a" => DATA <= x"103c"; - when "00" & x"a8b" => DATA <= x"0007"; - when "00" & x"a8c" => DATA <= x"6100"; - when "00" & x"a8d" => DATA <= x"eec8"; - when "00" & x"a8e" => DATA <= x"103c"; - when "00" & x"a8f" => DATA <= x"0000"; - when "00" & x"a90" => DATA <= x"6100"; - when "00" & x"a91" => DATA <= x"eec0"; + when "00" & x"a41" => DATA <= x"f568"; + when "00" & x"a42" => DATA <= x"6100"; + when "00" & x"a43" => DATA <= x"f564"; + when "00" & x"a44" => DATA <= x"221f"; + when "00" & x"a45" => DATA <= x"201f"; + when "00" & x"a46" => DATA <= x"023c"; + when "00" & x"a47" => DATA <= x"00fe"; + when "00" & x"a48" => DATA <= x"4e75"; + when "00" & x"a49" => DATA <= x"203c"; + when "00" & x"a4a" => DATA <= x"003f"; + when "00" & x"a4b" => DATA <= x"2d68"; + when "00" & x"a4c" => DATA <= x"003c"; + when "00" & x"a4d" => DATA <= x"0002"; + when "00" & x"a4e" => DATA <= x"4e75"; + when "00" & x"a4f" => DATA <= x"6100"; + when "00" & x"a50" => DATA <= x"f584"; + when "00" & x"a51" => DATA <= x"0000"; + when "00" & x"a52" => DATA <= x"0020"; + when "00" & x"a53" => DATA <= x"b03c"; + when "00" & x"a54" => DATA <= x"0079"; + when "00" & x"a55" => DATA <= x"4e75"; + when "00" & x"a56" => DATA <= x"2f0e"; + when "00" & x"a57" => DATA <= x"2f04"; + when "00" & x"a58" => DATA <= x"2c41"; + when "00" & x"a59" => DATA <= x"8643"; + when "00" & x"a5a" => DATA <= x"6700"; + when "00" & x"a5b" => DATA <= x"001e"; + when "00" & x"a5c" => DATA <= x"1816"; + when "00" & x"a5d" => DATA <= x"e144"; + when "00" & x"a5e" => DATA <= x"b940"; + when "00" & x"a5f" => DATA <= x"7807"; + when "00" & x"a60" => DATA <= x"e340"; + when "00" & x"a61" => DATA <= x"6400"; + when "00" & x"a62" => DATA <= x"0006"; + when "00" & x"a63" => DATA <= x"0a40"; + when "00" & x"a64" => DATA <= x"1021"; + when "00" & x"a65" => DATA <= x"51cc"; + when "00" & x"a66" => DATA <= x"fff4"; + when "00" & x"a67" => DATA <= x"dcc3"; + when "00" & x"a68" => DATA <= x"b48e"; + when "00" & x"a69" => DATA <= x"65e4"; + when "00" & x"a6a" => DATA <= x"281f"; + when "00" & x"a6b" => DATA <= x"2c5f"; + when "00" & x"a6c" => DATA <= x"023c"; + when "00" & x"a6d" => DATA <= x"00fd"; + when "00" & x"a6e" => DATA <= x"4e75"; + when "00" & x"a6f" => DATA <= x"1400"; + when "00" & x"a70" => DATA <= x"708a"; + when "00" & x"a71" => DATA <= x"7203"; + when "00" & x"a72" => DATA <= x"6100"; + when "00" & x"a73" => DATA <= x"f5f0"; + when "00" & x"a74" => DATA <= x"4e75"; + when "00" & x"a75" => DATA <= x"027c"; + when "00" & x"a76" => DATA <= x"dfff"; + when "00" & x"a77" => DATA <= x"4e75"; + when "00" & x"a78" => DATA <= x"b2bc"; + when "00" & x"a79" => DATA <= x"0000"; + when "00" & x"a7a" => DATA <= x"00ff"; + when "00" & x"a7b" => DATA <= x"6200"; + when "00" & x"a7c" => DATA <= x"0060"; + when "00" & x"a7d" => DATA <= x"2f08"; + when "00" & x"a7e" => DATA <= x"2040"; + when "00" & x"a7f" => DATA <= x"103c"; + when "00" & x"a80" => DATA <= x"000a"; + when "00" & x"a81" => DATA <= x"6100"; + when "00" & x"a82" => DATA <= x"eee2"; + when "00" & x"a83" => DATA <= x"1003"; + when "00" & x"a84" => DATA <= x"6100"; + when "00" & x"a85" => DATA <= x"eedc"; + when "00" & x"a86" => DATA <= x"1002"; + when "00" & x"a87" => DATA <= x"6100"; + when "00" & x"a88" => DATA <= x"eed6"; + when "00" & x"a89" => DATA <= x"1001"; + when "00" & x"a8a" => DATA <= x"6100"; + when "00" & x"a8b" => DATA <= x"eed0"; + when "00" & x"a8c" => DATA <= x"103c"; + when "00" & x"a8d" => DATA <= x"0007"; + when "00" & x"a8e" => DATA <= x"6100"; + when "00" & x"a8f" => DATA <= x"eec8"; + when "00" & x"a90" => DATA <= x"103c"; + when "00" & x"a91" => DATA <= x"0000"; when "00" & x"a92" => DATA <= x"6100"; - when "00" & x"a93" => DATA <= x"eeaa"; - when "00" & x"a94" => DATA <= x"b03c"; - when "00" & x"a95" => DATA <= x"0080"; - when "00" & x"a96" => DATA <= x"6700"; - when "00" & x"a97" => DATA <= x"001c"; - when "00" & x"a98" => DATA <= x"7200"; - when "00" & x"a99" => DATA <= x"6100"; - when "00" & x"a9a" => DATA <= x"ee9c"; - when "00" & x"a9b" => DATA <= x"10c0"; - when "00" & x"a9c" => DATA <= x"5241"; - when "00" & x"a9d" => DATA <= x"b03c"; - when "00" & x"a9e" => DATA <= x"000d"; - when "00" & x"a9f" => DATA <= x"66f2"; - when "00" & x"aa0" => DATA <= x"5341"; - when "00" & x"aa1" => DATA <= x"205f"; - when "00" & x"aa2" => DATA <= x"023c"; - when "00" & x"aa3" => DATA <= x"00fe"; - when "00" & x"aa4" => DATA <= x"4e75"; - when "00" & x"aa5" => DATA <= x"205f"; - when "00" & x"aa6" => DATA <= x"5341"; - when "00" & x"aa7" => DATA <= x"003c"; - when "00" & x"aa8" => DATA <= x"0001"; - when "00" & x"aa9" => DATA <= x"4e75"; - when "00" & x"aaa" => DATA <= x"003c"; - when "00" & x"aab" => DATA <= x"0002"; - when "00" & x"aac" => DATA <= x"4e75"; - when "00" & x"aad" => DATA <= x"2f03"; - when "00" & x"aae" => DATA <= x"2639"; - when "00" & x"aaf" => DATA <= x"003f"; - when "00" & x"ab0" => DATA <= x"3eda"; - when "00" & x"ab1" => DATA <= x"6100"; - when "00" & x"ab2" => DATA <= x"0006"; - when "00" & x"ab3" => DATA <= x"261f"; - when "00" & x"ab4" => DATA <= x"4e75"; - when "00" & x"ab5" => DATA <= x"2f0e"; - when "00" & x"ab6" => DATA <= x"2f0d"; - when "00" & x"ab7" => DATA <= x"2c41"; - when "00" & x"ab8" => DATA <= x"2a43"; - when "00" & x"ab9" => DATA <= x"101e"; - when "00" & x"aba" => DATA <= x"b03c"; - when "00" & x"abb" => DATA <= x"0025"; - when "00" & x"abc" => DATA <= x"6700"; - when "00" & x"abd" => DATA <= x"0010"; - when "00" & x"abe" => DATA <= x"1ac0"; - when "00" & x"abf" => DATA <= x"b03c"; - when "00" & x"ac0" => DATA <= x"0000"; - when "00" & x"ac1" => DATA <= x"66ee"; - when "00" & x"ac2" => DATA <= x"2a5f"; - when "00" & x"ac3" => DATA <= x"2c5f"; - when "00" & x"ac4" => DATA <= x"4e75"; - when "00" & x"ac5" => DATA <= x"101e"; - when "00" & x"ac6" => DATA <= x"b03c"; - when "00" & x"ac7" => DATA <= x"0030"; - when "00" & x"ac8" => DATA <= x"6600"; - when "00" & x"ac9" => DATA <= x"0008"; - when "00" & x"aca" => DATA <= x"1afc"; - when "00" & x"acb" => DATA <= x"0000"; - when "00" & x"acc" => DATA <= x"60d8"; - when "00" & x"acd" => DATA <= x"c03c"; - when "00" & x"ace" => DATA <= x"00df"; - when "00" & x"acf" => DATA <= x"b03c"; - when "00" & x"ad0" => DATA <= x"0025"; - when "00" & x"ad1" => DATA <= x"6600"; - when "00" & x"ad2" => DATA <= x"0008"; - when "00" & x"ad3" => DATA <= x"1afc"; - when "00" & x"ad4" => DATA <= x"0025"; - when "00" & x"ad5" => DATA <= x"60c6"; - when "00" & x"ad6" => DATA <= x"b03c"; - when "00" & x"ad7" => DATA <= x"005a"; - when "00" & x"ad8" => DATA <= x"6600"; - when "00" & x"ad9" => DATA <= x"0006"; - when "00" & x"ada" => DATA <= x"123c"; - when "00" & x"adb" => DATA <= x"005a"; - when "00" & x"adc" => DATA <= x"e158"; - when "00" & x"add" => DATA <= x"101e"; - when "00" & x"ade" => DATA <= x"c07c"; - when "00" & x"adf" => DATA <= x"dfdf"; - when "00" & x"ae0" => DATA <= x"b07c"; - when "00" & x"ae1" => DATA <= x"4353"; - when "00" & x"ae2" => DATA <= x"6700"; - when "00" & x"ae3" => DATA <= x"00aa"; - when "00" & x"ae4" => DATA <= x"b07c"; - when "00" & x"ae5" => DATA <= x"5345"; - when "00" & x"ae6" => DATA <= x"6700"; - when "00" & x"ae7" => DATA <= x"00a2"; - when "00" & x"ae8" => DATA <= x"b07c"; - when "00" & x"ae9" => DATA <= x"4d49"; - when "00" & x"aea" => DATA <= x"6700"; - when "00" & x"aeb" => DATA <= x"009a"; - when "00" & x"aec" => DATA <= x"b07c"; - when "00" & x"aed" => DATA <= x"3132"; - when "00" & x"aee" => DATA <= x"6700"; - when "00" & x"aef" => DATA <= x"0092"; - when "00" & x"af0" => DATA <= x"b07c"; - when "00" & x"af1" => DATA <= x"3234"; - when "00" & x"af2" => DATA <= x"6700"; - when "00" & x"af3" => DATA <= x"008a"; - when "00" & x"af4" => DATA <= x"b07c"; - when "00" & x"af5" => DATA <= x"414d"; - when "00" & x"af6" => DATA <= x"6700"; - when "00" & x"af7" => DATA <= x"0082"; - when "00" & x"af8" => DATA <= x"b07c"; - when "00" & x"af9" => DATA <= x"504d"; - when "00" & x"afa" => DATA <= x"6700"; - when "00" & x"afb" => DATA <= x"007a"; - when "00" & x"afc" => DATA <= x"b07c"; - when "00" & x"afd" => DATA <= x"5745"; - when "00" & x"afe" => DATA <= x"6700"; - when "00" & x"aff" => DATA <= x"0072"; - when "00" & x"b00" => DATA <= x"b07c"; - when "00" & x"b01" => DATA <= x"5733"; - when "00" & x"b02" => DATA <= x"6700"; - when "00" & x"b03" => DATA <= x"006a"; - when "00" & x"b04" => DATA <= x"b07c"; - when "00" & x"b05" => DATA <= x"574e"; - when "00" & x"b06" => DATA <= x"6700"; - when "00" & x"b07" => DATA <= x"0062"; - when "00" & x"b08" => DATA <= x"b07c"; - when "00" & x"b09" => DATA <= x"4459"; - when "00" & x"b0a" => DATA <= x"6700"; - when "00" & x"b0b" => DATA <= x"005a"; - when "00" & x"b0c" => DATA <= x"b07c"; - when "00" & x"b0d" => DATA <= x"5354"; - when "00" & x"b0e" => DATA <= x"6700"; - when "00" & x"b0f" => DATA <= x"0052"; - when "00" & x"b10" => DATA <= x"b07c"; - when "00" & x"b11" => DATA <= x"4d4f"; - when "00" & x"b12" => DATA <= x"6700"; - when "00" & x"b13" => DATA <= x"004a"; - when "00" & x"b14" => DATA <= x"b07c"; - when "00" & x"b15" => DATA <= x"4d33"; - when "00" & x"b16" => DATA <= x"6700"; - when "00" & x"b17" => DATA <= x"0042"; - when "00" & x"b18" => DATA <= x"b07c"; - when "00" & x"b19" => DATA <= x"4d4e"; - when "00" & x"b1a" => DATA <= x"6700"; - when "00" & x"b1b" => DATA <= x"003a"; - when "00" & x"b1c" => DATA <= x"b07c"; - when "00" & x"b1d" => DATA <= x"4345"; - when "00" & x"b1e" => DATA <= x"6700"; - when "00" & x"b1f" => DATA <= x"0032"; - when "00" & x"b20" => DATA <= x"b07c"; - when "00" & x"b21" => DATA <= x"5952"; - when "00" & x"b22" => DATA <= x"6700"; - when "00" & x"b23" => DATA <= x"002a"; - when "00" & x"b24" => DATA <= x"b07c"; - when "00" & x"b25" => DATA <= x"574b"; - when "00" & x"b26" => DATA <= x"6700"; - when "00" & x"b27" => DATA <= x"0022"; - when "00" & x"b28" => DATA <= x"b07c"; - when "00" & x"b29" => DATA <= x"444e"; - when "00" & x"b2a" => DATA <= x"6700"; - when "00" & x"b2b" => DATA <= x"001a"; - when "00" & x"b2c" => DATA <= x"b07c"; - when "00" & x"b2d" => DATA <= x"545a"; - when "00" & x"b2e" => DATA <= x"6700"; - when "00" & x"b2f" => DATA <= x"0012"; - when "00" & x"b30" => DATA <= x"2a5f"; - when "00" & x"b31" => DATA <= x"2c5f"; - when "00" & x"b32" => DATA <= x"203c"; - when "00" & x"b33" => DATA <= x"003f"; - when "00" & x"b34" => DATA <= x"2eac"; - when "00" & x"b35" => DATA <= x"003c"; - when "00" & x"b36" => DATA <= x"0002"; - when "00" & x"b37" => DATA <= x"4e75"; - when "00" & x"b38" => DATA <= x"6000"; - when "00" & x"b39" => DATA <= x"ff00"; - when "00" & x"b3a" => DATA <= x"b4bc"; - when "00" & x"b3b" => DATA <= x"0000"; - when "00" & x"b3c" => DATA <= x"0002"; - when "00" & x"b3d" => DATA <= x"6f00"; - when "00" & x"b3e" => DATA <= x"0484"; - when "00" & x"b3f" => DATA <= x"5582"; - when "00" & x"b40" => DATA <= x"2f0e"; - when "00" & x"b41" => DATA <= x"48e7"; - when "00" & x"b42" => DATA <= x"7000"; - when "00" & x"b43" => DATA <= x"343c"; - when "00" & x"b44" => DATA <= x"0000"; - when "00" & x"b45" => DATA <= x"e898"; - when "00" & x"b46" => DATA <= x"6000"; - when "00" & x"b47" => DATA <= x"0072"; - when "00" & x"b48" => DATA <= x"b4bc"; - when "00" & x"b49" => DATA <= x"0000"; - when "00" & x"b4a" => DATA <= x"0003"; - when "00" & x"b4b" => DATA <= x"6f00"; - when "00" & x"b4c" => DATA <= x"0468"; - when "00" & x"b4d" => DATA <= x"5782"; - when "00" & x"b4e" => DATA <= x"2f0e"; - when "00" & x"b4f" => DATA <= x"48e7"; - when "00" & x"b50" => DATA <= x"7000"; - when "00" & x"b51" => DATA <= x"343c"; - when "00" & x"b52" => DATA <= x"0001"; - when "00" & x"b53" => DATA <= x"e098"; - when "00" & x"b54" => DATA <= x"6000"; - when "00" & x"b55" => DATA <= x"0056"; - when "00" & x"b56" => DATA <= x"b4bc"; - when "00" & x"b57" => DATA <= x"0000"; - when "00" & x"b58" => DATA <= x"0005"; - when "00" & x"b59" => DATA <= x"6f00"; - when "00" & x"b5a" => DATA <= x"044c"; - when "00" & x"b5b" => DATA <= x"5b82"; - when "00" & x"b5c" => DATA <= x"2f0e"; - when "00" & x"b5d" => DATA <= x"48e7"; - when "00" & x"b5e" => DATA <= x"7000"; - when "00" & x"b5f" => DATA <= x"343c"; - when "00" & x"b60" => DATA <= x"0003"; - when "00" & x"b61" => DATA <= x"e198"; - when "00" & x"b62" => DATA <= x"e198"; - when "00" & x"b63" => DATA <= x"6000"; - when "00" & x"b64" => DATA <= x"0038"; - when "00" & x"b65" => DATA <= x"b4bc"; - when "00" & x"b66" => DATA <= x"0000"; - when "00" & x"b67" => DATA <= x"0007"; - when "00" & x"b68" => DATA <= x"6f00"; - when "00" & x"b69" => DATA <= x"042e"; - when "00" & x"b6a" => DATA <= x"5f82"; - when "00" & x"b6b" => DATA <= x"2f0e"; - when "00" & x"b6c" => DATA <= x"48e7"; - when "00" & x"b6d" => DATA <= x"7000"; - when "00" & x"b6e" => DATA <= x"343c"; - when "00" & x"b6f" => DATA <= x"0005"; - when "00" & x"b70" => DATA <= x"e098"; - when "00" & x"b71" => DATA <= x"6000"; - when "00" & x"b72" => DATA <= x"001c"; - when "00" & x"b73" => DATA <= x"b4bc"; - when "00" & x"b74" => DATA <= x"0000"; - when "00" & x"b75" => DATA <= x"0009"; - when "00" & x"b76" => DATA <= x"6f00"; - when "00" & x"b77" => DATA <= x"0412"; - when "00" & x"b78" => DATA <= x"0482"; - when "00" & x"b79" => DATA <= x"0000"; - when "00" & x"b7a" => DATA <= x"0009"; - when "00" & x"b7b" => DATA <= x"2f0e"; - when "00" & x"b7c" => DATA <= x"48e7"; - when "00" & x"b7d" => DATA <= x"7000"; - when "00" & x"b7e" => DATA <= x"343c"; - when "00" & x"b7f" => DATA <= x"0007"; - when "00" & x"b80" => DATA <= x"2c41"; - when "00" & x"b81" => DATA <= x"2200"; - when "00" & x"b82" => DATA <= x"e999"; - when "00" & x"b83" => DATA <= x"1001"; - when "00" & x"b84" => DATA <= x"c03c"; - when "00" & x"b85" => DATA <= x"000f"; - when "00" & x"b86" => DATA <= x"163c"; - when "00" & x"b87" => DATA <= x"0009"; - when "00" & x"b88" => DATA <= x"9600"; - when "00" & x"b89" => DATA <= x"0600"; - when "00" & x"b8a" => DATA <= x"0030"; - when "00" & x"b8b" => DATA <= x"0c00"; - when "00" & x"b8c" => DATA <= x"003a"; - when "00" & x"b8d" => DATA <= x"6500"; - when "00" & x"b8e" => DATA <= x"0004"; - when "00" & x"b8f" => DATA <= x"5e00"; - when "00" & x"b90" => DATA <= x"1cc0"; - when "00" & x"b91" => DATA <= x"51ca"; - when "00" & x"b92" => DATA <= x"ffe0"; - when "00" & x"b93" => DATA <= x"1cbc"; - when "00" & x"b94" => DATA <= x"0000"; - when "00" & x"b95" => DATA <= x"4cdf"; - when "00" & x"b96" => DATA <= x"000e"; - when "00" & x"b97" => DATA <= x"2001"; - when "00" & x"b98" => DATA <= x"220e"; - when "00" & x"b99" => DATA <= x"2c5f"; - when "00" & x"b9a" => DATA <= x"023c"; - when "00" & x"b9b" => DATA <= x"00fd"; - when "00" & x"b9c" => DATA <= x"4e75"; - when "00" & x"b9d" => DATA <= x"003c"; - when "00" & x"b9e" => DATA <= x"0002"; - when "00" & x"b9f" => DATA <= x"4e75"; - when "00" & x"ba0" => DATA <= x"b4bc"; - when "00" & x"ba1" => DATA <= x"0000"; - when "00" & x"ba2" => DATA <= x"0004"; - when "00" & x"ba3" => DATA <= x"6500"; - when "00" & x"ba4" => DATA <= x"03b8"; - when "00" & x"ba5" => DATA <= x"b0bc"; - when "00" & x"ba6" => DATA <= x"0000"; - when "00" & x"ba7" => DATA <= x"0100"; - when "00" & x"ba8" => DATA <= x"6400"; - when "00" & x"ba9" => DATA <= x"01b2"; - when "00" & x"baa" => DATA <= x"7c03"; - when "00" & x"bab" => DATA <= x"6000"; - when "00" & x"bac" => DATA <= x"0042"; - when "00" & x"bad" => DATA <= x"b4bc"; - when "00" & x"bae" => DATA <= x"0000"; - when "00" & x"baf" => DATA <= x"0006"; - when "00" & x"bb0" => DATA <= x"6500"; - when "00" & x"bb1" => DATA <= x"039e"; - when "00" & x"bb2" => DATA <= x"b0bc"; - when "00" & x"bb3" => DATA <= x"0001"; - when "00" & x"bb4" => DATA <= x"0000"; - when "00" & x"bb5" => DATA <= x"6400"; - when "00" & x"bb6" => DATA <= x"0198"; - when "00" & x"bb7" => DATA <= x"7c05"; - when "00" & x"bb8" => DATA <= x"6000"; - when "00" & x"bb9" => DATA <= x"0028"; - when "00" & x"bba" => DATA <= x"b4bc"; - when "00" & x"bbb" => DATA <= x"0000"; - when "00" & x"bbc" => DATA <= x"0009"; - when "00" & x"bbd" => DATA <= x"6500"; - when "00" & x"bbe" => DATA <= x"0384"; - when "00" & x"bbf" => DATA <= x"b0bc"; - when "00" & x"bc0" => DATA <= x"0100"; - when "00" & x"bc1" => DATA <= x"0000"; - when "00" & x"bc2" => DATA <= x"6400"; - when "00" & x"bc3" => DATA <= x"017e"; - when "00" & x"bc4" => DATA <= x"7c08"; - when "00" & x"bc5" => DATA <= x"6000"; - when "00" & x"bc6" => DATA <= x"000e"; - when "00" & x"bc7" => DATA <= x"b4bc"; - when "00" & x"bc8" => DATA <= x"0000"; - when "00" & x"bc9" => DATA <= x"000b"; - when "00" & x"bca" => DATA <= x"6500"; - when "00" & x"bcb" => DATA <= x"036a"; - when "00" & x"bcc" => DATA <= x"7c0a"; - when "00" & x"bcd" => DATA <= x"c38d"; - when "00" & x"bce" => DATA <= x"48e7"; - when "00" & x"bcf" => DATA <= x"ff00"; - when "00" & x"bd0" => DATA <= x"2e00"; - when "00" & x"bd1" => DATA <= x"6700"; - when "00" & x"bd2" => DATA <= x"0058"; - when "00" & x"bd3" => DATA <= x"6000"; - when "00" & x"bd4" => DATA <= x"0002"; - when "00" & x"bd5" => DATA <= x"4244"; - when "00" & x"bd6" => DATA <= x"7401"; - when "00" & x"bd7" => DATA <= x"2206"; - when "00" & x"bd8" => DATA <= x"5381"; - when "00" & x"bd9" => DATA <= x"6700"; - when "00" & x"bda" => DATA <= x"001c"; - when "00" & x"bdb" => DATA <= x"3602"; - when "00" & x"bdc" => DATA <= x"c6fc"; - when "00" & x"bdd" => DATA <= x"000a"; - when "00" & x"bde" => DATA <= x"4842"; - when "00" & x"bdf" => DATA <= x"c4fc"; - when "00" & x"be0" => DATA <= x"000a"; - when "00" & x"be1" => DATA <= x"4843"; - when "00" & x"be2" => DATA <= x"d443"; - when "00" & x"be3" => DATA <= x"4842"; - when "00" & x"be4" => DATA <= x"4843"; - when "00" & x"be5" => DATA <= x"3403"; - when "00" & x"be6" => DATA <= x"5381"; - when "00" & x"be7" => DATA <= x"66e6"; - when "00" & x"be8" => DATA <= x"4280"; - when "00" & x"be9" => DATA <= x"be82"; - when "00" & x"bea" => DATA <= x"6500"; - when "00" & x"beb" => DATA <= x"0008"; - when "00" & x"bec" => DATA <= x"5280"; - when "00" & x"bed" => DATA <= x"9e82"; - when "00" & x"bee" => DATA <= x"60f4"; - when "00" & x"bef" => DATA <= x"4a00"; - when "00" & x"bf0" => DATA <= x"6600"; - when "00" & x"bf1" => DATA <= x"0008"; - when "00" & x"bf2" => DATA <= x"4a44"; - when "00" & x"bf3" => DATA <= x"6700"; - when "00" & x"bf4" => DATA <= x"000a"; - when "00" & x"bf5" => DATA <= x"0600"; - when "00" & x"bf6" => DATA <= x"0030"; - when "00" & x"bf7" => DATA <= x"1ac0"; - when "00" & x"bf8" => DATA <= x"1800"; - when "00" & x"bf9" => DATA <= x"5386"; - when "00" & x"bfa" => DATA <= x"66b6"; - when "00" & x"bfb" => DATA <= x"4a44"; - when "00" & x"bfc" => DATA <= x"6600"; - when "00" & x"bfd" => DATA <= x"0006"; - when "00" & x"bfe" => DATA <= x"1afc"; - when "00" & x"bff" => DATA <= x"0030"; - when "00" & x"c00" => DATA <= x"1abc"; - when "00" & x"c01" => DATA <= x"0000"; - when "00" & x"c02" => DATA <= x"4cdf"; - when "00" & x"c03" => DATA <= x"00ff"; - when "00" & x"c04" => DATA <= x"c38d"; - when "00" & x"c05" => DATA <= x"023c"; - when "00" & x"c06" => DATA <= x"00fd"; - when "00" & x"c07" => DATA <= x"4e75"; - when "00" & x"c08" => DATA <= x"b4bc"; - when "00" & x"c09" => DATA <= x"0000"; - when "00" & x"c0a" => DATA <= x"0005"; - when "00" & x"c0b" => DATA <= x"6500"; - when "00" & x"c0c" => DATA <= x"02e8"; - when "00" & x"c0d" => DATA <= x"b0bc"; - when "00" & x"c0e" => DATA <= x"0000"; - when "00" & x"c0f" => DATA <= x"0100"; - when "00" & x"c10" => DATA <= x"6400"; - when "00" & x"c11" => DATA <= x"00e2"; - when "00" & x"c12" => DATA <= x"0800"; - when "00" & x"c13" => DATA <= x"0007"; - when "00" & x"c14" => DATA <= x"6700"; - when "00" & x"c15" => DATA <= x"0008"; - when "00" & x"c16" => DATA <= x"0080"; - when "00" & x"c17" => DATA <= x"ffff"; - when "00" & x"c18" => DATA <= x"ff00"; - when "00" & x"c19" => DATA <= x"7c03"; - when "00" & x"c1a" => DATA <= x"6000"; - when "00" & x"c1b" => DATA <= x"005e"; - when "00" & x"c1c" => DATA <= x"b4bc"; - when "00" & x"c1d" => DATA <= x"0000"; - when "00" & x"c1e" => DATA <= x"0007"; - when "00" & x"c1f" => DATA <= x"6500"; - when "00" & x"c20" => DATA <= x"02c0"; - when "00" & x"c21" => DATA <= x"b0bc"; - when "00" & x"c22" => DATA <= x"0001"; - when "00" & x"c23" => DATA <= x"0000"; - when "00" & x"c24" => DATA <= x"6400"; - when "00" & x"c25" => DATA <= x"00ba"; - when "00" & x"c26" => DATA <= x"0800"; - when "00" & x"c27" => DATA <= x"000f"; - when "00" & x"c28" => DATA <= x"6700"; - when "00" & x"c29" => DATA <= x"0008"; - when "00" & x"c2a" => DATA <= x"0080"; - when "00" & x"c2b" => DATA <= x"ffff"; - when "00" & x"c2c" => DATA <= x"0000"; - when "00" & x"c2d" => DATA <= x"7c05"; - when "00" & x"c2e" => DATA <= x"6000"; - when "00" & x"c2f" => DATA <= x"0036"; - when "00" & x"c30" => DATA <= x"b4bc"; - when "00" & x"c31" => DATA <= x"0000"; - when "00" & x"c32" => DATA <= x"000b"; - when "00" & x"c33" => DATA <= x"6500"; - when "00" & x"c34" => DATA <= x"0298"; - when "00" & x"c35" => DATA <= x"b0bc"; - when "00" & x"c36" => DATA <= x"0100"; - when "00" & x"c37" => DATA <= x"0000"; - when "00" & x"c38" => DATA <= x"6400"; - when "00" & x"c39" => DATA <= x"0092"; - when "00" & x"c3a" => DATA <= x"0800"; - when "00" & x"c3b" => DATA <= x"0017"; - when "00" & x"c3c" => DATA <= x"6700"; - when "00" & x"c3d" => DATA <= x"0008"; - when "00" & x"c3e" => DATA <= x"0080"; - when "00" & x"c3f" => DATA <= x"ff00"; - when "00" & x"c40" => DATA <= x"0000"; - when "00" & x"c41" => DATA <= x"7c08"; - when "00" & x"c42" => DATA <= x"6000"; - when "00" & x"c43" => DATA <= x"000e"; - when "00" & x"c44" => DATA <= x"b4bc"; - when "00" & x"c45" => DATA <= x"0000"; - when "00" & x"c46" => DATA <= x"000d"; - when "00" & x"c47" => DATA <= x"6500"; - when "00" & x"c48" => DATA <= x"0270"; - when "00" & x"c49" => DATA <= x"7c0a"; - when "00" & x"c4a" => DATA <= x"c38d"; - when "00" & x"c4b" => DATA <= x"48e7"; - when "00" & x"c4c" => DATA <= x"ff00"; - when "00" & x"c4d" => DATA <= x"2e00"; - when "00" & x"c4e" => DATA <= x"6a08"; - when "00" & x"c4f" => DATA <= x"4487"; - when "00" & x"c50" => DATA <= x"6b4e"; - when "00" & x"c51" => DATA <= x"1afc"; - when "00" & x"c52" => DATA <= x"002d"; - when "00" & x"c53" => DATA <= x"4244"; - when "00" & x"c54" => DATA <= x"7a01"; - when "00" & x"c55" => DATA <= x"2206"; - when "00" & x"c56" => DATA <= x"5381"; - when "00" & x"c57" => DATA <= x"671a"; - when "00" & x"c58" => DATA <= x"3605"; - when "00" & x"c59" => DATA <= x"c6fc"; - when "00" & x"c5a" => DATA <= x"000a"; - when "00" & x"c5b" => DATA <= x"4845"; - when "00" & x"c5c" => DATA <= x"cafc"; - when "00" & x"c5d" => DATA <= x"000a"; - when "00" & x"c5e" => DATA <= x"4843"; - when "00" & x"c5f" => DATA <= x"da43"; - when "00" & x"c60" => DATA <= x"4845"; - when "00" & x"c61" => DATA <= x"4843"; - when "00" & x"c62" => DATA <= x"3a03"; - when "00" & x"c63" => DATA <= x"5381"; - when "00" & x"c64" => DATA <= x"66e6"; - when "00" & x"c65" => DATA <= x"4280"; - when "00" & x"c66" => DATA <= x"be85"; - when "00" & x"c67" => DATA <= x"6d06"; - when "00" & x"c68" => DATA <= x"5280"; - when "00" & x"c69" => DATA <= x"9e85"; - when "00" & x"c6a" => DATA <= x"60f6"; - when "00" & x"c6b" => DATA <= x"4a00"; - when "00" & x"c6c" => DATA <= x"6604"; - when "00" & x"c6d" => DATA <= x"4a44"; - when "00" & x"c6e" => DATA <= x"6708"; - when "00" & x"c6f" => DATA <= x"0600"; - when "00" & x"c70" => DATA <= x"0030"; - when "00" & x"c71" => DATA <= x"1ac0"; - when "00" & x"c72" => DATA <= x"1800"; - when "00" & x"c73" => DATA <= x"5386"; - when "00" & x"c74" => DATA <= x"66be"; - when "00" & x"c75" => DATA <= x"4a44"; - when "00" & x"c76" => DATA <= x"6600"; - when "00" & x"c77" => DATA <= x"0006"; - when "00" & x"c78" => DATA <= x"1afc"; - when "00" & x"c79" => DATA <= x"0030"; - when "00" & x"c7a" => DATA <= x"1abc"; - when "00" & x"c7b" => DATA <= x"0000"; - when "00" & x"c7c" => DATA <= x"4cdf"; - when "00" & x"c7d" => DATA <= x"00ff"; - when "00" & x"c7e" => DATA <= x"c38d"; - when "00" & x"c7f" => DATA <= x"023c"; - when "00" & x"c80" => DATA <= x"00fd"; - when "00" & x"c81" => DATA <= x"4e75"; - when "00" & x"c82" => DATA <= x"003c"; - when "00" & x"c83" => DATA <= x"0002"; - when "00" & x"c84" => DATA <= x"4e75"; - when "00" & x"c85" => DATA <= x"b4bc"; - when "00" & x"c86" => DATA <= x"0000"; - when "00" & x"c87" => DATA <= x"0009"; - when "00" & x"c88" => DATA <= x"6f00"; - when "00" & x"c89" => DATA <= x"01ee"; - when "00" & x"c8a" => DATA <= x"0482"; - when "00" & x"c8b" => DATA <= x"0000"; - when "00" & x"c8c" => DATA <= x"0009"; - when "00" & x"c8d" => DATA <= x"2f0e"; - when "00" & x"c8e" => DATA <= x"48e7"; - when "00" & x"c8f" => DATA <= x"7000"; - when "00" & x"c90" => DATA <= x"7407"; - when "00" & x"c91" => DATA <= x"e098"; - when "00" & x"c92" => DATA <= x"6000"; - when "00" & x"c93" => DATA <= x"0058"; - when "00" & x"c94" => DATA <= x"b4bc"; - when "00" & x"c95" => DATA <= x"0000"; - when "00" & x"c96" => DATA <= x"0011"; - when "00" & x"c97" => DATA <= x"6f00"; - when "00" & x"c98" => DATA <= x"01d0"; - when "00" & x"c99" => DATA <= x"0482"; - when "00" & x"c9a" => DATA <= x"0000"; - when "00" & x"c9b" => DATA <= x"0011"; - when "00" & x"c9c" => DATA <= x"2f0e"; - when "00" & x"c9d" => DATA <= x"48e7"; - when "00" & x"c9e" => DATA <= x"7000"; - when "00" & x"c9f" => DATA <= x"740f"; - when "00" & x"ca0" => DATA <= x"e198"; - when "00" & x"ca1" => DATA <= x"e198"; - when "00" & x"ca2" => DATA <= x"6000"; - when "00" & x"ca3" => DATA <= x"0038"; - when "00" & x"ca4" => DATA <= x"b4bc"; - when "00" & x"ca5" => DATA <= x"0000"; - when "00" & x"ca6" => DATA <= x"0019"; - when "00" & x"ca7" => DATA <= x"6f00"; - when "00" & x"ca8" => DATA <= x"01b0"; - when "00" & x"ca9" => DATA <= x"0482"; - when "00" & x"caa" => DATA <= x"0000"; - when "00" & x"cab" => DATA <= x"0019"; - when "00" & x"cac" => DATA <= x"2f0e"; - when "00" & x"cad" => DATA <= x"48e7"; - when "00" & x"cae" => DATA <= x"7000"; - when "00" & x"caf" => DATA <= x"7417"; - when "00" & x"cb0" => DATA <= x"e098"; - when "00" & x"cb1" => DATA <= x"6000"; - when "00" & x"cb2" => DATA <= x"001a"; - when "00" & x"cb3" => DATA <= x"b4bc"; - when "00" & x"cb4" => DATA <= x"0000"; - when "00" & x"cb5" => DATA <= x"0021"; - when "00" & x"cb6" => DATA <= x"6f00"; - when "00" & x"cb7" => DATA <= x"0192"; - when "00" & x"cb8" => DATA <= x"0482"; - when "00" & x"cb9" => DATA <= x"0000"; - when "00" & x"cba" => DATA <= x"0021"; - when "00" & x"cbb" => DATA <= x"2f0e"; - when "00" & x"cbc" => DATA <= x"48e7"; - when "00" & x"cbd" => DATA <= x"7000"; - when "00" & x"cbe" => DATA <= x"741f"; - when "00" & x"cbf" => DATA <= x"2c41"; - when "00" & x"cc0" => DATA <= x"7600"; - when "00" & x"cc1" => DATA <= x"7230"; - when "00" & x"cc2" => DATA <= x"e380"; - when "00" & x"cc3" => DATA <= x"c303"; - when "00" & x"cc4" => DATA <= x"1cc1"; - when "00" & x"cc5" => DATA <= x"51ca"; - when "00" & x"cc6" => DATA <= x"fff6"; - when "00" & x"cc7" => DATA <= x"1cbc"; - when "00" & x"cc8" => DATA <= x"0000"; - when "00" & x"cc9" => DATA <= x"4cdf"; - when "00" & x"cca" => DATA <= x"000e"; - when "00" & x"ccb" => DATA <= x"2001"; - when "00" & x"ccc" => DATA <= x"220e"; - when "00" & x"ccd" => DATA <= x"2c5f"; - when "00" & x"cce" => DATA <= x"023c"; - when "00" & x"ccf" => DATA <= x"00fd"; - when "00" & x"cd0" => DATA <= x"4e75"; - when "00" & x"cd1" => DATA <= x"6100"; - when "00" & x"cd2" => DATA <= x"fe6c"; - when "00" & x"cd3" => DATA <= x"2f07"; - when "00" & x"cd4" => DATA <= x"7e05"; - when "00" & x"cd5" => DATA <= x"6100"; - when "00" & x"cd6" => DATA <= x"0122"; - when "00" & x"cd7" => DATA <= x"2e1f"; - when "00" & x"cd8" => DATA <= x"4e75"; - when "00" & x"cd9" => DATA <= x"6100"; - when "00" & x"cda" => DATA <= x"fe84"; - when "00" & x"cdb" => DATA <= x"2f07"; - when "00" & x"cdc" => DATA <= x"7e07"; - when "00" & x"cdd" => DATA <= x"6100"; - when "00" & x"cde" => DATA <= x"0112"; - when "00" & x"cdf" => DATA <= x"2e1f"; - when "00" & x"ce0" => DATA <= x"4e75"; - when "00" & x"ce1" => DATA <= x"6100"; - when "00" & x"ce2" => DATA <= x"fe9c"; - when "00" & x"ce3" => DATA <= x"2f07"; - when "00" & x"ce4" => DATA <= x"7e09"; - when "00" & x"ce5" => DATA <= x"6100"; - when "00" & x"ce6" => DATA <= x"0102"; - when "00" & x"ce7" => DATA <= x"2e1f"; - when "00" & x"ce8" => DATA <= x"4e75"; - when "00" & x"ce9" => DATA <= x"6100"; - when "00" & x"cea" => DATA <= x"feb4"; - when "00" & x"ceb" => DATA <= x"2f07"; - when "00" & x"cec" => DATA <= x"7e0c"; - when "00" & x"ced" => DATA <= x"6100"; - when "00" & x"cee" => DATA <= x"00f2"; - when "00" & x"cef" => DATA <= x"2e1f"; - when "00" & x"cf0" => DATA <= x"4e75"; - when "00" & x"cf1" => DATA <= x"2f01"; - when "00" & x"cf2" => DATA <= x"2f06"; - when "00" & x"cf3" => DATA <= x"2f07"; - when "00" & x"cf4" => DATA <= x"2f0e"; - when "00" & x"cf5" => DATA <= x"2c40"; - when "00" & x"cf6" => DATA <= x"2c1e"; - when "00" & x"cf7" => DATA <= x"2e1e"; - when "00" & x"cf8" => DATA <= x"0c87"; - when "00" & x"cf9" => DATA <= x"0000"; - when "00" & x"cfa" => DATA <= x"0100"; - when "00" & x"cfb" => DATA <= x"6400"; - when "00" & x"cfc" => DATA <= x"003a"; - when "00" & x"cfd" => DATA <= x"0c86"; - when "00" & x"cfe" => DATA <= x"0000"; - when "00" & x"cff" => DATA <= x"0100"; - when "00" & x"d00" => DATA <= x"6400"; - when "00" & x"d01" => DATA <= x"003e"; - when "00" & x"d02" => DATA <= x"4a47"; - when "00" & x"d03" => DATA <= x"6700"; - when "00" & x"d04" => DATA <= x"0016"; - when "00" & x"d05" => DATA <= x"1007"; - when "00" & x"d06" => DATA <= x"6100"; - when "00" & x"d07" => DATA <= x"fd32"; - when "00" & x"d08" => DATA <= x"4a41"; - when "00" & x"d09" => DATA <= x"6700"; - when "00" & x"d0a" => DATA <= x"00ec"; - when "00" & x"d0b" => DATA <= x"2c41"; - when "00" & x"d0c" => DATA <= x"1cfc"; - when "00" & x"d0d" => DATA <= x"002e"; - when "00" & x"d0e" => DATA <= x"220e"; - when "00" & x"d0f" => DATA <= x"1006"; - when "00" & x"d10" => DATA <= x"6100"; - when "00" & x"d11" => DATA <= x"fd1e"; - when "00" & x"d12" => DATA <= x"2c5f"; - when "00" & x"d13" => DATA <= x"2e1f"; - when "00" & x"d14" => DATA <= x"2c1f"; - when "00" & x"d15" => DATA <= x"201f"; - when "00" & x"d16" => DATA <= x"023c"; - when "00" & x"d17" => DATA <= x"00fd"; - when "00" & x"d18" => DATA <= x"4e75"; - when "00" & x"d19" => DATA <= x"2f7c"; - when "00" & x"d1a" => DATA <= x"003f"; - when "00" & x"d1b" => DATA <= x"2edc"; - when "00" & x"d1c" => DATA <= x"000c"; - when "00" & x"d1d" => DATA <= x"003c"; - when "00" & x"d1e" => DATA <= x"0002"; - when "00" & x"d1f" => DATA <= x"60e4"; - when "00" & x"d20" => DATA <= x"2f7c"; - when "00" & x"d21" => DATA <= x"003f"; - when "00" & x"d22" => DATA <= x"2ec4"; - when "00" & x"d23" => DATA <= x"000c"; - when "00" & x"d24" => DATA <= x"003c"; - when "00" & x"d25" => DATA <= x"0002"; - when "00" & x"d26" => DATA <= x"60d6"; - when "00" & x"d27" => DATA <= x"2f07"; - when "00" & x"d28" => DATA <= x"2f01"; - when "00" & x"d29" => DATA <= x"2200"; - when "00" & x"d2a" => DATA <= x"0281"; - when "00" & x"d2b" => DATA <= x"c000"; - when "00" & x"d2c" => DATA <= x"0000"; - when "00" & x"d2d" => DATA <= x"6700"; - when "00" & x"d2e" => DATA <= x"0014"; - when "00" & x"d2f" => DATA <= x"e089"; - when "00" & x"d30" => DATA <= x"e089"; + when "00" & x"a93" => DATA <= x"eec0"; + when "00" & x"a94" => DATA <= x"6100"; + when "00" & x"a95" => DATA <= x"eeaa"; + when "00" & x"a96" => DATA <= x"b03c"; + when "00" & x"a97" => DATA <= x"0080"; + when "00" & x"a98" => DATA <= x"6400"; + when "00" & x"a99" => DATA <= x"001c"; + when "00" & x"a9a" => DATA <= x"7200"; + when "00" & x"a9b" => DATA <= x"6100"; + when "00" & x"a9c" => DATA <= x"ee9c"; + when "00" & x"a9d" => DATA <= x"10c0"; + when "00" & x"a9e" => DATA <= x"5241"; + when "00" & x"a9f" => DATA <= x"b03c"; + when "00" & x"aa0" => DATA <= x"000d"; + when "00" & x"aa1" => DATA <= x"66f2"; + when "00" & x"aa2" => DATA <= x"5341"; + when "00" & x"aa3" => DATA <= x"205f"; + when "00" & x"aa4" => DATA <= x"023c"; + when "00" & x"aa5" => DATA <= x"00fe"; + when "00" & x"aa6" => DATA <= x"4e75"; + when "00" & x"aa7" => DATA <= x"205f"; + when "00" & x"aa8" => DATA <= x"5341"; + when "00" & x"aa9" => DATA <= x"003c"; + when "00" & x"aaa" => DATA <= x"0001"; + when "00" & x"aab" => DATA <= x"4e75"; + when "00" & x"aac" => DATA <= x"003c"; + when "00" & x"aad" => DATA <= x"0002"; + when "00" & x"aae" => DATA <= x"4e75"; + when "00" & x"aaf" => DATA <= x"2f03"; + when "00" & x"ab0" => DATA <= x"2639"; + when "00" & x"ab1" => DATA <= x"003f"; + when "00" & x"ab2" => DATA <= x"3ede"; + when "00" & x"ab3" => DATA <= x"6100"; + when "00" & x"ab4" => DATA <= x"0006"; + when "00" & x"ab5" => DATA <= x"261f"; + when "00" & x"ab6" => DATA <= x"4e75"; + when "00" & x"ab7" => DATA <= x"2f0e"; + when "00" & x"ab8" => DATA <= x"2f0d"; + when "00" & x"ab9" => DATA <= x"2c41"; + when "00" & x"aba" => DATA <= x"2a43"; + when "00" & x"abb" => DATA <= x"101e"; + when "00" & x"abc" => DATA <= x"b03c"; + when "00" & x"abd" => DATA <= x"0025"; + when "00" & x"abe" => DATA <= x"6700"; + when "00" & x"abf" => DATA <= x"0010"; + when "00" & x"ac0" => DATA <= x"1ac0"; + when "00" & x"ac1" => DATA <= x"b03c"; + when "00" & x"ac2" => DATA <= x"0000"; + when "00" & x"ac3" => DATA <= x"66ee"; + when "00" & x"ac4" => DATA <= x"2a5f"; + when "00" & x"ac5" => DATA <= x"2c5f"; + when "00" & x"ac6" => DATA <= x"4e75"; + when "00" & x"ac7" => DATA <= x"101e"; + when "00" & x"ac8" => DATA <= x"b03c"; + when "00" & x"ac9" => DATA <= x"0030"; + when "00" & x"aca" => DATA <= x"6600"; + when "00" & x"acb" => DATA <= x"0008"; + when "00" & x"acc" => DATA <= x"1afc"; + when "00" & x"acd" => DATA <= x"0000"; + when "00" & x"ace" => DATA <= x"60d8"; + when "00" & x"acf" => DATA <= x"c03c"; + when "00" & x"ad0" => DATA <= x"00df"; + when "00" & x"ad1" => DATA <= x"b03c"; + when "00" & x"ad2" => DATA <= x"0025"; + when "00" & x"ad3" => DATA <= x"6600"; + when "00" & x"ad4" => DATA <= x"0008"; + when "00" & x"ad5" => DATA <= x"1afc"; + when "00" & x"ad6" => DATA <= x"0025"; + when "00" & x"ad7" => DATA <= x"60c6"; + when "00" & x"ad8" => DATA <= x"b03c"; + when "00" & x"ad9" => DATA <= x"005a"; + when "00" & x"ada" => DATA <= x"6600"; + when "00" & x"adb" => DATA <= x"0006"; + when "00" & x"adc" => DATA <= x"123c"; + when "00" & x"add" => DATA <= x"005a"; + when "00" & x"ade" => DATA <= x"e158"; + when "00" & x"adf" => DATA <= x"101e"; + when "00" & x"ae0" => DATA <= x"c07c"; + when "00" & x"ae1" => DATA <= x"dfdf"; + when "00" & x"ae2" => DATA <= x"b07c"; + when "00" & x"ae3" => DATA <= x"4353"; + when "00" & x"ae4" => DATA <= x"6700"; + when "00" & x"ae5" => DATA <= x"00aa"; + when "00" & x"ae6" => DATA <= x"b07c"; + when "00" & x"ae7" => DATA <= x"5345"; + when "00" & x"ae8" => DATA <= x"6700"; + when "00" & x"ae9" => DATA <= x"00a2"; + when "00" & x"aea" => DATA <= x"b07c"; + when "00" & x"aeb" => DATA <= x"4d49"; + when "00" & x"aec" => DATA <= x"6700"; + when "00" & x"aed" => DATA <= x"009a"; + when "00" & x"aee" => DATA <= x"b07c"; + when "00" & x"aef" => DATA <= x"3132"; + when "00" & x"af0" => DATA <= x"6700"; + when "00" & x"af1" => DATA <= x"0092"; + when "00" & x"af2" => DATA <= x"b07c"; + when "00" & x"af3" => DATA <= x"3234"; + when "00" & x"af4" => DATA <= x"6700"; + when "00" & x"af5" => DATA <= x"008a"; + when "00" & x"af6" => DATA <= x"b07c"; + when "00" & x"af7" => DATA <= x"414d"; + when "00" & x"af8" => DATA <= x"6700"; + when "00" & x"af9" => DATA <= x"0082"; + when "00" & x"afa" => DATA <= x"b07c"; + when "00" & x"afb" => DATA <= x"504d"; + when "00" & x"afc" => DATA <= x"6700"; + when "00" & x"afd" => DATA <= x"007a"; + when "00" & x"afe" => DATA <= x"b07c"; + when "00" & x"aff" => DATA <= x"5745"; + when "00" & x"b00" => DATA <= x"6700"; + when "00" & x"b01" => DATA <= x"0072"; + when "00" & x"b02" => DATA <= x"b07c"; + when "00" & x"b03" => DATA <= x"5733"; + when "00" & x"b04" => DATA <= x"6700"; + when "00" & x"b05" => DATA <= x"006a"; + when "00" & x"b06" => DATA <= x"b07c"; + when "00" & x"b07" => DATA <= x"574e"; + when "00" & x"b08" => DATA <= x"6700"; + when "00" & x"b09" => DATA <= x"0062"; + when "00" & x"b0a" => DATA <= x"b07c"; + when "00" & x"b0b" => DATA <= x"4459"; + when "00" & x"b0c" => DATA <= x"6700"; + when "00" & x"b0d" => DATA <= x"005a"; + when "00" & x"b0e" => DATA <= x"b07c"; + when "00" & x"b0f" => DATA <= x"5354"; + when "00" & x"b10" => DATA <= x"6700"; + when "00" & x"b11" => DATA <= x"0052"; + when "00" & x"b12" => DATA <= x"b07c"; + when "00" & x"b13" => DATA <= x"4d4f"; + when "00" & x"b14" => DATA <= x"6700"; + when "00" & x"b15" => DATA <= x"004a"; + when "00" & x"b16" => DATA <= x"b07c"; + when "00" & x"b17" => DATA <= x"4d33"; + when "00" & x"b18" => DATA <= x"6700"; + when "00" & x"b19" => DATA <= x"0042"; + when "00" & x"b1a" => DATA <= x"b07c"; + when "00" & x"b1b" => DATA <= x"4d4e"; + when "00" & x"b1c" => DATA <= x"6700"; + when "00" & x"b1d" => DATA <= x"003a"; + when "00" & x"b1e" => DATA <= x"b07c"; + when "00" & x"b1f" => DATA <= x"4345"; + when "00" & x"b20" => DATA <= x"6700"; + when "00" & x"b21" => DATA <= x"0032"; + when "00" & x"b22" => DATA <= x"b07c"; + when "00" & x"b23" => DATA <= x"5952"; + when "00" & x"b24" => DATA <= x"6700"; + when "00" & x"b25" => DATA <= x"002a"; + when "00" & x"b26" => DATA <= x"b07c"; + when "00" & x"b27" => DATA <= x"574b"; + when "00" & x"b28" => DATA <= x"6700"; + when "00" & x"b29" => DATA <= x"0022"; + when "00" & x"b2a" => DATA <= x"b07c"; + when "00" & x"b2b" => DATA <= x"444e"; + when "00" & x"b2c" => DATA <= x"6700"; + when "00" & x"b2d" => DATA <= x"001a"; + when "00" & x"b2e" => DATA <= x"b07c"; + when "00" & x"b2f" => DATA <= x"545a"; + when "00" & x"b30" => DATA <= x"6700"; + when "00" & x"b31" => DATA <= x"0012"; + when "00" & x"b32" => DATA <= x"2a5f"; + when "00" & x"b33" => DATA <= x"2c5f"; + when "00" & x"b34" => DATA <= x"203c"; + when "00" & x"b35" => DATA <= x"003f"; + when "00" & x"b36" => DATA <= x"2eb0"; + when "00" & x"b37" => DATA <= x"003c"; + when "00" & x"b38" => DATA <= x"0002"; + when "00" & x"b39" => DATA <= x"4e75"; + when "00" & x"b3a" => DATA <= x"6000"; + when "00" & x"b3b" => DATA <= x"ff00"; + when "00" & x"b3c" => DATA <= x"b4bc"; + when "00" & x"b3d" => DATA <= x"0000"; + when "00" & x"b3e" => DATA <= x"0002"; + when "00" & x"b3f" => DATA <= x"6f00"; + when "00" & x"b40" => DATA <= x"0484"; + when "00" & x"b41" => DATA <= x"5582"; + when "00" & x"b42" => DATA <= x"2f0e"; + when "00" & x"b43" => DATA <= x"48e7"; + when "00" & x"b44" => DATA <= x"7000"; + when "00" & x"b45" => DATA <= x"343c"; + when "00" & x"b46" => DATA <= x"0000"; + when "00" & x"b47" => DATA <= x"e898"; + when "00" & x"b48" => DATA <= x"6000"; + when "00" & x"b49" => DATA <= x"0072"; + when "00" & x"b4a" => DATA <= x"b4bc"; + when "00" & x"b4b" => DATA <= x"0000"; + when "00" & x"b4c" => DATA <= x"0003"; + when "00" & x"b4d" => DATA <= x"6f00"; + when "00" & x"b4e" => DATA <= x"0468"; + when "00" & x"b4f" => DATA <= x"5782"; + when "00" & x"b50" => DATA <= x"2f0e"; + when "00" & x"b51" => DATA <= x"48e7"; + when "00" & x"b52" => DATA <= x"7000"; + when "00" & x"b53" => DATA <= x"343c"; + when "00" & x"b54" => DATA <= x"0001"; + when "00" & x"b55" => DATA <= x"e098"; + when "00" & x"b56" => DATA <= x"6000"; + when "00" & x"b57" => DATA <= x"0056"; + when "00" & x"b58" => DATA <= x"b4bc"; + when "00" & x"b59" => DATA <= x"0000"; + when "00" & x"b5a" => DATA <= x"0005"; + when "00" & x"b5b" => DATA <= x"6f00"; + when "00" & x"b5c" => DATA <= x"044c"; + when "00" & x"b5d" => DATA <= x"5b82"; + when "00" & x"b5e" => DATA <= x"2f0e"; + when "00" & x"b5f" => DATA <= x"48e7"; + when "00" & x"b60" => DATA <= x"7000"; + when "00" & x"b61" => DATA <= x"343c"; + when "00" & x"b62" => DATA <= x"0003"; + when "00" & x"b63" => DATA <= x"e198"; + when "00" & x"b64" => DATA <= x"e198"; + when "00" & x"b65" => DATA <= x"6000"; + when "00" & x"b66" => DATA <= x"0038"; + when "00" & x"b67" => DATA <= x"b4bc"; + when "00" & x"b68" => DATA <= x"0000"; + when "00" & x"b69" => DATA <= x"0007"; + when "00" & x"b6a" => DATA <= x"6f00"; + when "00" & x"b6b" => DATA <= x"042e"; + when "00" & x"b6c" => DATA <= x"5f82"; + when "00" & x"b6d" => DATA <= x"2f0e"; + when "00" & x"b6e" => DATA <= x"48e7"; + when "00" & x"b6f" => DATA <= x"7000"; + when "00" & x"b70" => DATA <= x"343c"; + when "00" & x"b71" => DATA <= x"0005"; + when "00" & x"b72" => DATA <= x"e098"; + when "00" & x"b73" => DATA <= x"6000"; + when "00" & x"b74" => DATA <= x"001c"; + when "00" & x"b75" => DATA <= x"b4bc"; + when "00" & x"b76" => DATA <= x"0000"; + when "00" & x"b77" => DATA <= x"0009"; + when "00" & x"b78" => DATA <= x"6f00"; + when "00" & x"b79" => DATA <= x"0412"; + when "00" & x"b7a" => DATA <= x"0482"; + when "00" & x"b7b" => DATA <= x"0000"; + when "00" & x"b7c" => DATA <= x"0009"; + when "00" & x"b7d" => DATA <= x"2f0e"; + when "00" & x"b7e" => DATA <= x"48e7"; + when "00" & x"b7f" => DATA <= x"7000"; + when "00" & x"b80" => DATA <= x"343c"; + when "00" & x"b81" => DATA <= x"0007"; + when "00" & x"b82" => DATA <= x"2c41"; + when "00" & x"b83" => DATA <= x"2200"; + when "00" & x"b84" => DATA <= x"e999"; + when "00" & x"b85" => DATA <= x"1001"; + when "00" & x"b86" => DATA <= x"c03c"; + when "00" & x"b87" => DATA <= x"000f"; + when "00" & x"b88" => DATA <= x"163c"; + when "00" & x"b89" => DATA <= x"0009"; + when "00" & x"b8a" => DATA <= x"9600"; + when "00" & x"b8b" => DATA <= x"0600"; + when "00" & x"b8c" => DATA <= x"0030"; + when "00" & x"b8d" => DATA <= x"0c00"; + when "00" & x"b8e" => DATA <= x"003a"; + when "00" & x"b8f" => DATA <= x"6500"; + when "00" & x"b90" => DATA <= x"0004"; + when "00" & x"b91" => DATA <= x"5e00"; + when "00" & x"b92" => DATA <= x"1cc0"; + when "00" & x"b93" => DATA <= x"51ca"; + when "00" & x"b94" => DATA <= x"ffe0"; + when "00" & x"b95" => DATA <= x"1cbc"; + when "00" & x"b96" => DATA <= x"0000"; + when "00" & x"b97" => DATA <= x"4cdf"; + when "00" & x"b98" => DATA <= x"000e"; + when "00" & x"b99" => DATA <= x"2001"; + when "00" & x"b9a" => DATA <= x"220e"; + when "00" & x"b9b" => DATA <= x"2c5f"; + when "00" & x"b9c" => DATA <= x"023c"; + when "00" & x"b9d" => DATA <= x"00fd"; + when "00" & x"b9e" => DATA <= x"4e75"; + when "00" & x"b9f" => DATA <= x"003c"; + when "00" & x"ba0" => DATA <= x"0002"; + when "00" & x"ba1" => DATA <= x"4e75"; + when "00" & x"ba2" => DATA <= x"b4bc"; + when "00" & x"ba3" => DATA <= x"0000"; + when "00" & x"ba4" => DATA <= x"0004"; + when "00" & x"ba5" => DATA <= x"6500"; + when "00" & x"ba6" => DATA <= x"03b8"; + when "00" & x"ba7" => DATA <= x"b0bc"; + when "00" & x"ba8" => DATA <= x"0000"; + when "00" & x"ba9" => DATA <= x"0100"; + when "00" & x"baa" => DATA <= x"6400"; + when "00" & x"bab" => DATA <= x"01b2"; + when "00" & x"bac" => DATA <= x"7c03"; + when "00" & x"bad" => DATA <= x"6000"; + when "00" & x"bae" => DATA <= x"0042"; + when "00" & x"baf" => DATA <= x"b4bc"; + when "00" & x"bb0" => DATA <= x"0000"; + when "00" & x"bb1" => DATA <= x"0006"; + when "00" & x"bb2" => DATA <= x"6500"; + when "00" & x"bb3" => DATA <= x"039e"; + when "00" & x"bb4" => DATA <= x"b0bc"; + when "00" & x"bb5" => DATA <= x"0001"; + when "00" & x"bb6" => DATA <= x"0000"; + when "00" & x"bb7" => DATA <= x"6400"; + when "00" & x"bb8" => DATA <= x"0198"; + when "00" & x"bb9" => DATA <= x"7c05"; + when "00" & x"bba" => DATA <= x"6000"; + when "00" & x"bbb" => DATA <= x"0028"; + when "00" & x"bbc" => DATA <= x"b4bc"; + when "00" & x"bbd" => DATA <= x"0000"; + when "00" & x"bbe" => DATA <= x"0009"; + when "00" & x"bbf" => DATA <= x"6500"; + when "00" & x"bc0" => DATA <= x"0384"; + when "00" & x"bc1" => DATA <= x"b0bc"; + when "00" & x"bc2" => DATA <= x"0100"; + when "00" & x"bc3" => DATA <= x"0000"; + when "00" & x"bc4" => DATA <= x"6400"; + when "00" & x"bc5" => DATA <= x"017e"; + when "00" & x"bc6" => DATA <= x"7c08"; + when "00" & x"bc7" => DATA <= x"6000"; + when "00" & x"bc8" => DATA <= x"000e"; + when "00" & x"bc9" => DATA <= x"b4bc"; + when "00" & x"bca" => DATA <= x"0000"; + when "00" & x"bcb" => DATA <= x"000b"; + when "00" & x"bcc" => DATA <= x"6500"; + when "00" & x"bcd" => DATA <= x"036a"; + when "00" & x"bce" => DATA <= x"7c0a"; + when "00" & x"bcf" => DATA <= x"c38d"; + when "00" & x"bd0" => DATA <= x"48e7"; + when "00" & x"bd1" => DATA <= x"ff00"; + when "00" & x"bd2" => DATA <= x"2e00"; + when "00" & x"bd3" => DATA <= x"6700"; + when "00" & x"bd4" => DATA <= x"0058"; + when "00" & x"bd5" => DATA <= x"6000"; + when "00" & x"bd6" => DATA <= x"0002"; + when "00" & x"bd7" => DATA <= x"4244"; + when "00" & x"bd8" => DATA <= x"7401"; + when "00" & x"bd9" => DATA <= x"2206"; + when "00" & x"bda" => DATA <= x"5381"; + when "00" & x"bdb" => DATA <= x"6700"; + when "00" & x"bdc" => DATA <= x"001c"; + when "00" & x"bdd" => DATA <= x"3602"; + when "00" & x"bde" => DATA <= x"c6fc"; + when "00" & x"bdf" => DATA <= x"000a"; + when "00" & x"be0" => DATA <= x"4842"; + when "00" & x"be1" => DATA <= x"c4fc"; + when "00" & x"be2" => DATA <= x"000a"; + when "00" & x"be3" => DATA <= x"4843"; + when "00" & x"be4" => DATA <= x"d443"; + when "00" & x"be5" => DATA <= x"4842"; + when "00" & x"be6" => DATA <= x"4843"; + when "00" & x"be7" => DATA <= x"3403"; + when "00" & x"be8" => DATA <= x"5381"; + when "00" & x"be9" => DATA <= x"66e6"; + when "00" & x"bea" => DATA <= x"4280"; + when "00" & x"beb" => DATA <= x"be82"; + when "00" & x"bec" => DATA <= x"6500"; + when "00" & x"bed" => DATA <= x"0008"; + when "00" & x"bee" => DATA <= x"5280"; + when "00" & x"bef" => DATA <= x"9e82"; + when "00" & x"bf0" => DATA <= x"60f4"; + when "00" & x"bf1" => DATA <= x"4a00"; + when "00" & x"bf2" => DATA <= x"6600"; + when "00" & x"bf3" => DATA <= x"0008"; + when "00" & x"bf4" => DATA <= x"4a44"; + when "00" & x"bf5" => DATA <= x"6700"; + when "00" & x"bf6" => DATA <= x"000a"; + when "00" & x"bf7" => DATA <= x"0600"; + when "00" & x"bf8" => DATA <= x"0030"; + when "00" & x"bf9" => DATA <= x"1ac0"; + when "00" & x"bfa" => DATA <= x"1800"; + when "00" & x"bfb" => DATA <= x"5386"; + when "00" & x"bfc" => DATA <= x"66b6"; + when "00" & x"bfd" => DATA <= x"4a44"; + when "00" & x"bfe" => DATA <= x"6600"; + when "00" & x"bff" => DATA <= x"0006"; + when "00" & x"c00" => DATA <= x"1afc"; + when "00" & x"c01" => DATA <= x"0030"; + when "00" & x"c02" => DATA <= x"1abc"; + when "00" & x"c03" => DATA <= x"0000"; + when "00" & x"c04" => DATA <= x"4cdf"; + when "00" & x"c05" => DATA <= x"00ff"; + when "00" & x"c06" => DATA <= x"c38d"; + when "00" & x"c07" => DATA <= x"023c"; + when "00" & x"c08" => DATA <= x"00fd"; + when "00" & x"c09" => DATA <= x"4e75"; + when "00" & x"c0a" => DATA <= x"b4bc"; + when "00" & x"c0b" => DATA <= x"0000"; + when "00" & x"c0c" => DATA <= x"0005"; + when "00" & x"c0d" => DATA <= x"6500"; + when "00" & x"c0e" => DATA <= x"02e8"; + when "00" & x"c0f" => DATA <= x"b0bc"; + when "00" & x"c10" => DATA <= x"0000"; + when "00" & x"c11" => DATA <= x"0100"; + when "00" & x"c12" => DATA <= x"6400"; + when "00" & x"c13" => DATA <= x"00e2"; + when "00" & x"c14" => DATA <= x"0800"; + when "00" & x"c15" => DATA <= x"0007"; + when "00" & x"c16" => DATA <= x"6700"; + when "00" & x"c17" => DATA <= x"0008"; + when "00" & x"c18" => DATA <= x"0080"; + when "00" & x"c19" => DATA <= x"ffff"; + when "00" & x"c1a" => DATA <= x"ff00"; + when "00" & x"c1b" => DATA <= x"7c03"; + when "00" & x"c1c" => DATA <= x"6000"; + when "00" & x"c1d" => DATA <= x"005e"; + when "00" & x"c1e" => DATA <= x"b4bc"; + when "00" & x"c1f" => DATA <= x"0000"; + when "00" & x"c20" => DATA <= x"0007"; + when "00" & x"c21" => DATA <= x"6500"; + when "00" & x"c22" => DATA <= x"02c0"; + when "00" & x"c23" => DATA <= x"b0bc"; + when "00" & x"c24" => DATA <= x"0001"; + when "00" & x"c25" => DATA <= x"0000"; + when "00" & x"c26" => DATA <= x"6400"; + when "00" & x"c27" => DATA <= x"00ba"; + when "00" & x"c28" => DATA <= x"0800"; + when "00" & x"c29" => DATA <= x"000f"; + when "00" & x"c2a" => DATA <= x"6700"; + when "00" & x"c2b" => DATA <= x"0008"; + when "00" & x"c2c" => DATA <= x"0080"; + when "00" & x"c2d" => DATA <= x"ffff"; + when "00" & x"c2e" => DATA <= x"0000"; + when "00" & x"c2f" => DATA <= x"7c05"; + when "00" & x"c30" => DATA <= x"6000"; + when "00" & x"c31" => DATA <= x"0036"; + when "00" & x"c32" => DATA <= x"b4bc"; + when "00" & x"c33" => DATA <= x"0000"; + when "00" & x"c34" => DATA <= x"000b"; + when "00" & x"c35" => DATA <= x"6500"; + when "00" & x"c36" => DATA <= x"0298"; + when "00" & x"c37" => DATA <= x"b0bc"; + when "00" & x"c38" => DATA <= x"0100"; + when "00" & x"c39" => DATA <= x"0000"; + when "00" & x"c3a" => DATA <= x"6400"; + when "00" & x"c3b" => DATA <= x"0092"; + when "00" & x"c3c" => DATA <= x"0800"; + when "00" & x"c3d" => DATA <= x"0017"; + when "00" & x"c3e" => DATA <= x"6700"; + when "00" & x"c3f" => DATA <= x"0008"; + when "00" & x"c40" => DATA <= x"0080"; + when "00" & x"c41" => DATA <= x"ff00"; + when "00" & x"c42" => DATA <= x"0000"; + when "00" & x"c43" => DATA <= x"7c08"; + when "00" & x"c44" => DATA <= x"6000"; + when "00" & x"c45" => DATA <= x"000e"; + when "00" & x"c46" => DATA <= x"b4bc"; + when "00" & x"c47" => DATA <= x"0000"; + when "00" & x"c48" => DATA <= x"000d"; + when "00" & x"c49" => DATA <= x"6500"; + when "00" & x"c4a" => DATA <= x"0270"; + when "00" & x"c4b" => DATA <= x"7c0a"; + when "00" & x"c4c" => DATA <= x"c38d"; + when "00" & x"c4d" => DATA <= x"48e7"; + when "00" & x"c4e" => DATA <= x"ff00"; + when "00" & x"c4f" => DATA <= x"2e00"; + when "00" & x"c50" => DATA <= x"6a08"; + when "00" & x"c51" => DATA <= x"4487"; + when "00" & x"c52" => DATA <= x"6b4e"; + when "00" & x"c53" => DATA <= x"1afc"; + when "00" & x"c54" => DATA <= x"002d"; + when "00" & x"c55" => DATA <= x"4244"; + when "00" & x"c56" => DATA <= x"7a01"; + when "00" & x"c57" => DATA <= x"2206"; + when "00" & x"c58" => DATA <= x"5381"; + when "00" & x"c59" => DATA <= x"671a"; + when "00" & x"c5a" => DATA <= x"3605"; + when "00" & x"c5b" => DATA <= x"c6fc"; + when "00" & x"c5c" => DATA <= x"000a"; + when "00" & x"c5d" => DATA <= x"4845"; + when "00" & x"c5e" => DATA <= x"cafc"; + when "00" & x"c5f" => DATA <= x"000a"; + when "00" & x"c60" => DATA <= x"4843"; + when "00" & x"c61" => DATA <= x"da43"; + when "00" & x"c62" => DATA <= x"4845"; + when "00" & x"c63" => DATA <= x"4843"; + when "00" & x"c64" => DATA <= x"3a03"; + when "00" & x"c65" => DATA <= x"5381"; + when "00" & x"c66" => DATA <= x"66e6"; + when "00" & x"c67" => DATA <= x"4280"; + when "00" & x"c68" => DATA <= x"be85"; + when "00" & x"c69" => DATA <= x"6d06"; + when "00" & x"c6a" => DATA <= x"5280"; + when "00" & x"c6b" => DATA <= x"9e85"; + when "00" & x"c6c" => DATA <= x"60f6"; + when "00" & x"c6d" => DATA <= x"4a00"; + when "00" & x"c6e" => DATA <= x"6604"; + when "00" & x"c6f" => DATA <= x"4a44"; + when "00" & x"c70" => DATA <= x"6708"; + when "00" & x"c71" => DATA <= x"0600"; + when "00" & x"c72" => DATA <= x"0030"; + when "00" & x"c73" => DATA <= x"1ac0"; + when "00" & x"c74" => DATA <= x"1800"; + when "00" & x"c75" => DATA <= x"5386"; + when "00" & x"c76" => DATA <= x"66be"; + when "00" & x"c77" => DATA <= x"4a44"; + when "00" & x"c78" => DATA <= x"6600"; + when "00" & x"c79" => DATA <= x"0006"; + when "00" & x"c7a" => DATA <= x"1afc"; + when "00" & x"c7b" => DATA <= x"0030"; + when "00" & x"c7c" => DATA <= x"1abc"; + when "00" & x"c7d" => DATA <= x"0000"; + when "00" & x"c7e" => DATA <= x"4cdf"; + when "00" & x"c7f" => DATA <= x"00ff"; + when "00" & x"c80" => DATA <= x"c38d"; + when "00" & x"c81" => DATA <= x"023c"; + when "00" & x"c82" => DATA <= x"00fd"; + when "00" & x"c83" => DATA <= x"4e75"; + when "00" & x"c84" => DATA <= x"003c"; + when "00" & x"c85" => DATA <= x"0002"; + when "00" & x"c86" => DATA <= x"4e75"; + when "00" & x"c87" => DATA <= x"b4bc"; + when "00" & x"c88" => DATA <= x"0000"; + when "00" & x"c89" => DATA <= x"0009"; + when "00" & x"c8a" => DATA <= x"6f00"; + when "00" & x"c8b" => DATA <= x"01ee"; + when "00" & x"c8c" => DATA <= x"0482"; + when "00" & x"c8d" => DATA <= x"0000"; + when "00" & x"c8e" => DATA <= x"0009"; + when "00" & x"c8f" => DATA <= x"2f0e"; + when "00" & x"c90" => DATA <= x"48e7"; + when "00" & x"c91" => DATA <= x"7000"; + when "00" & x"c92" => DATA <= x"7407"; + when "00" & x"c93" => DATA <= x"e098"; + when "00" & x"c94" => DATA <= x"6000"; + when "00" & x"c95" => DATA <= x"0058"; + when "00" & x"c96" => DATA <= x"b4bc"; + when "00" & x"c97" => DATA <= x"0000"; + when "00" & x"c98" => DATA <= x"0011"; + when "00" & x"c99" => DATA <= x"6f00"; + when "00" & x"c9a" => DATA <= x"01d0"; + when "00" & x"c9b" => DATA <= x"0482"; + when "00" & x"c9c" => DATA <= x"0000"; + when "00" & x"c9d" => DATA <= x"0011"; + when "00" & x"c9e" => DATA <= x"2f0e"; + when "00" & x"c9f" => DATA <= x"48e7"; + when "00" & x"ca0" => DATA <= x"7000"; + when "00" & x"ca1" => DATA <= x"740f"; + when "00" & x"ca2" => DATA <= x"e198"; + when "00" & x"ca3" => DATA <= x"e198"; + when "00" & x"ca4" => DATA <= x"6000"; + when "00" & x"ca5" => DATA <= x"0038"; + when "00" & x"ca6" => DATA <= x"b4bc"; + when "00" & x"ca7" => DATA <= x"0000"; + when "00" & x"ca8" => DATA <= x"0019"; + when "00" & x"ca9" => DATA <= x"6f00"; + when "00" & x"caa" => DATA <= x"01b0"; + when "00" & x"cab" => DATA <= x"0482"; + when "00" & x"cac" => DATA <= x"0000"; + when "00" & x"cad" => DATA <= x"0019"; + when "00" & x"cae" => DATA <= x"2f0e"; + when "00" & x"caf" => DATA <= x"48e7"; + when "00" & x"cb0" => DATA <= x"7000"; + when "00" & x"cb1" => DATA <= x"7417"; + when "00" & x"cb2" => DATA <= x"e098"; + when "00" & x"cb3" => DATA <= x"6000"; + when "00" & x"cb4" => DATA <= x"001a"; + when "00" & x"cb5" => DATA <= x"b4bc"; + when "00" & x"cb6" => DATA <= x"0000"; + when "00" & x"cb7" => DATA <= x"0021"; + when "00" & x"cb8" => DATA <= x"6f00"; + when "00" & x"cb9" => DATA <= x"0192"; + when "00" & x"cba" => DATA <= x"0482"; + when "00" & x"cbb" => DATA <= x"0000"; + when "00" & x"cbc" => DATA <= x"0021"; + when "00" & x"cbd" => DATA <= x"2f0e"; + when "00" & x"cbe" => DATA <= x"48e7"; + when "00" & x"cbf" => DATA <= x"7000"; + when "00" & x"cc0" => DATA <= x"741f"; + when "00" & x"cc1" => DATA <= x"2c41"; + when "00" & x"cc2" => DATA <= x"7600"; + when "00" & x"cc3" => DATA <= x"7230"; + when "00" & x"cc4" => DATA <= x"e380"; + when "00" & x"cc5" => DATA <= x"c303"; + when "00" & x"cc6" => DATA <= x"1cc1"; + when "00" & x"cc7" => DATA <= x"51ca"; + when "00" & x"cc8" => DATA <= x"fff6"; + when "00" & x"cc9" => DATA <= x"1cbc"; + when "00" & x"cca" => DATA <= x"0000"; + when "00" & x"ccb" => DATA <= x"4cdf"; + when "00" & x"ccc" => DATA <= x"000e"; + when "00" & x"ccd" => DATA <= x"2001"; + when "00" & x"cce" => DATA <= x"220e"; + when "00" & x"ccf" => DATA <= x"2c5f"; + when "00" & x"cd0" => DATA <= x"023c"; + when "00" & x"cd1" => DATA <= x"00fd"; + when "00" & x"cd2" => DATA <= x"4e75"; + when "00" & x"cd3" => DATA <= x"6100"; + when "00" & x"cd4" => DATA <= x"fe6c"; + when "00" & x"cd5" => DATA <= x"2f07"; + when "00" & x"cd6" => DATA <= x"7e05"; + when "00" & x"cd7" => DATA <= x"6100"; + when "00" & x"cd8" => DATA <= x"0122"; + when "00" & x"cd9" => DATA <= x"2e1f"; + when "00" & x"cda" => DATA <= x"4e75"; + when "00" & x"cdb" => DATA <= x"6100"; + when "00" & x"cdc" => DATA <= x"fe84"; + when "00" & x"cdd" => DATA <= x"2f07"; + when "00" & x"cde" => DATA <= x"7e07"; + when "00" & x"cdf" => DATA <= x"6100"; + when "00" & x"ce0" => DATA <= x"0112"; + when "00" & x"ce1" => DATA <= x"2e1f"; + when "00" & x"ce2" => DATA <= x"4e75"; + when "00" & x"ce3" => DATA <= x"6100"; + when "00" & x"ce4" => DATA <= x"fe9c"; + when "00" & x"ce5" => DATA <= x"2f07"; + when "00" & x"ce6" => DATA <= x"7e09"; + when "00" & x"ce7" => DATA <= x"6100"; + when "00" & x"ce8" => DATA <= x"0102"; + when "00" & x"ce9" => DATA <= x"2e1f"; + when "00" & x"cea" => DATA <= x"4e75"; + when "00" & x"ceb" => DATA <= x"6100"; + when "00" & x"cec" => DATA <= x"feb4"; + when "00" & x"ced" => DATA <= x"2f07"; + when "00" & x"cee" => DATA <= x"7e0c"; + when "00" & x"cef" => DATA <= x"6100"; + when "00" & x"cf0" => DATA <= x"00f2"; + when "00" & x"cf1" => DATA <= x"2e1f"; + when "00" & x"cf2" => DATA <= x"4e75"; + when "00" & x"cf3" => DATA <= x"2f01"; + when "00" & x"cf4" => DATA <= x"2f06"; + when "00" & x"cf5" => DATA <= x"2f07"; + when "00" & x"cf6" => DATA <= x"2f0e"; + when "00" & x"cf7" => DATA <= x"2c40"; + when "00" & x"cf8" => DATA <= x"2c1e"; + when "00" & x"cf9" => DATA <= x"2e1e"; + when "00" & x"cfa" => DATA <= x"0c87"; + when "00" & x"cfb" => DATA <= x"0000"; + when "00" & x"cfc" => DATA <= x"0100"; + when "00" & x"cfd" => DATA <= x"6400"; + when "00" & x"cfe" => DATA <= x"003a"; + when "00" & x"cff" => DATA <= x"0c86"; + when "00" & x"d00" => DATA <= x"0000"; + when "00" & x"d01" => DATA <= x"0100"; + when "00" & x"d02" => DATA <= x"6400"; + when "00" & x"d03" => DATA <= x"003e"; + when "00" & x"d04" => DATA <= x"4a47"; + when "00" & x"d05" => DATA <= x"6700"; + when "00" & x"d06" => DATA <= x"0016"; + when "00" & x"d07" => DATA <= x"1007"; + when "00" & x"d08" => DATA <= x"6100"; + when "00" & x"d09" => DATA <= x"fd32"; + when "00" & x"d0a" => DATA <= x"4a41"; + when "00" & x"d0b" => DATA <= x"6700"; + when "00" & x"d0c" => DATA <= x"00ec"; + when "00" & x"d0d" => DATA <= x"2c41"; + when "00" & x"d0e" => DATA <= x"1cfc"; + when "00" & x"d0f" => DATA <= x"002e"; + when "00" & x"d10" => DATA <= x"220e"; + when "00" & x"d11" => DATA <= x"1006"; + when "00" & x"d12" => DATA <= x"6100"; + when "00" & x"d13" => DATA <= x"fd1e"; + when "00" & x"d14" => DATA <= x"2c5f"; + when "00" & x"d15" => DATA <= x"2e1f"; + when "00" & x"d16" => DATA <= x"2c1f"; + when "00" & x"d17" => DATA <= x"201f"; + when "00" & x"d18" => DATA <= x"023c"; + when "00" & x"d19" => DATA <= x"00fd"; + when "00" & x"d1a" => DATA <= x"4e75"; + when "00" & x"d1b" => DATA <= x"2f7c"; + when "00" & x"d1c" => DATA <= x"003f"; + when "00" & x"d1d" => DATA <= x"2ee0"; + when "00" & x"d1e" => DATA <= x"000c"; + when "00" & x"d1f" => DATA <= x"003c"; + when "00" & x"d20" => DATA <= x"0002"; + when "00" & x"d21" => DATA <= x"60e4"; + when "00" & x"d22" => DATA <= x"2f7c"; + when "00" & x"d23" => DATA <= x"003f"; + when "00" & x"d24" => DATA <= x"2ec8"; + when "00" & x"d25" => DATA <= x"000c"; + when "00" & x"d26" => DATA <= x"003c"; + when "00" & x"d27" => DATA <= x"0002"; + when "00" & x"d28" => DATA <= x"60d6"; + when "00" & x"d29" => DATA <= x"2f07"; + when "00" & x"d2a" => DATA <= x"2f01"; + when "00" & x"d2b" => DATA <= x"2200"; + when "00" & x"d2c" => DATA <= x"0281"; + when "00" & x"d2d" => DATA <= x"c000"; + when "00" & x"d2e" => DATA <= x"0000"; + when "00" & x"d2f" => DATA <= x"6700"; + when "00" & x"d30" => DATA <= x"0014"; when "00" & x"d31" => DATA <= x"e089"; - when "00" & x"d32" => DATA <= x"ec89"; - when "00" & x"d33" => DATA <= x"2001"; - when "00" & x"d34" => DATA <= x"1e38"; - when "00" & x"d35" => DATA <= x"004d"; - when "00" & x"d36" => DATA <= x"6000"; - when "00" & x"d37" => DATA <= x"0034"; - when "00" & x"d38" => DATA <= x"2200"; - when "00" & x"d39" => DATA <= x"0281"; - when "00" & x"d3a" => DATA <= x"fff0"; - when "00" & x"d3b" => DATA <= x"0000"; - when "00" & x"d3c" => DATA <= x"6700"; - when "00" & x"d3d" => DATA <= x"0012"; - when "00" & x"d3e" => DATA <= x"e089"; - when "00" & x"d3f" => DATA <= x"e089"; - when "00" & x"d40" => DATA <= x"e889"; - when "00" & x"d41" => DATA <= x"2001"; - when "00" & x"d42" => DATA <= x"1e38"; - when "00" & x"d43" => DATA <= x"004b"; - when "00" & x"d44" => DATA <= x"6000"; - when "00" & x"d45" => DATA <= x"0018"; - when "00" & x"d46" => DATA <= x"2200"; - when "00" & x"d47" => DATA <= x"0281"; - when "00" & x"d48" => DATA <= x"ffff"; - when "00" & x"d49" => DATA <= x"fc00"; - when "00" & x"d4a" => DATA <= x"6700"; - when "00" & x"d4b" => DATA <= x"000c"; - when "00" & x"d4c" => DATA <= x"e089"; - when "00" & x"d4d" => DATA <= x"e489"; - when "00" & x"d4e" => DATA <= x"2001"; - when "00" & x"d4f" => DATA <= x"1e3c"; - when "00" & x"d50" => DATA <= x"0000"; - when "00" & x"d51" => DATA <= x"221f"; - when "00" & x"d52" => DATA <= x"6100"; - when "00" & x"d53" => DATA <= x"fce8"; - when "00" & x"d54" => DATA <= x"2c41"; - when "00" & x"d55" => DATA <= x"1cfc"; - when "00" & x"d56" => DATA <= x"0020"; - when "00" & x"d57" => DATA <= x"1cc7"; - when "00" & x"d58" => DATA <= x"1cfc"; - when "00" & x"d59" => DATA <= x"0062"; + when "00" & x"d32" => DATA <= x"e089"; + when "00" & x"d33" => DATA <= x"e089"; + when "00" & x"d34" => DATA <= x"ec89"; + when "00" & x"d35" => DATA <= x"2001"; + when "00" & x"d36" => DATA <= x"1e38"; + when "00" & x"d37" => DATA <= x"004d"; + when "00" & x"d38" => DATA <= x"6000"; + when "00" & x"d39" => DATA <= x"0034"; + when "00" & x"d3a" => DATA <= x"2200"; + when "00" & x"d3b" => DATA <= x"0281"; + when "00" & x"d3c" => DATA <= x"fff0"; + when "00" & x"d3d" => DATA <= x"0000"; + when "00" & x"d3e" => DATA <= x"6700"; + when "00" & x"d3f" => DATA <= x"0012"; + when "00" & x"d40" => DATA <= x"e089"; + when "00" & x"d41" => DATA <= x"e089"; + when "00" & x"d42" => DATA <= x"e889"; + when "00" & x"d43" => DATA <= x"2001"; + when "00" & x"d44" => DATA <= x"1e38"; + when "00" & x"d45" => DATA <= x"004b"; + when "00" & x"d46" => DATA <= x"6000"; + when "00" & x"d47" => DATA <= x"0018"; + when "00" & x"d48" => DATA <= x"2200"; + when "00" & x"d49" => DATA <= x"0281"; + when "00" & x"d4a" => DATA <= x"ffff"; + when "00" & x"d4b" => DATA <= x"fc00"; + when "00" & x"d4c" => DATA <= x"6700"; + when "00" & x"d4d" => DATA <= x"000c"; + when "00" & x"d4e" => DATA <= x"e089"; + when "00" & x"d4f" => DATA <= x"e489"; + when "00" & x"d50" => DATA <= x"2001"; + when "00" & x"d51" => DATA <= x"1e3c"; + when "00" & x"d52" => DATA <= x"0000"; + when "00" & x"d53" => DATA <= x"221f"; + when "00" & x"d54" => DATA <= x"6100"; + when "00" & x"d55" => DATA <= x"fce8"; + when "00" & x"d56" => DATA <= x"2c41"; + when "00" & x"d57" => DATA <= x"1cfc"; + when "00" & x"d58" => DATA <= x"0020"; + when "00" & x"d59" => DATA <= x"1cc7"; when "00" & x"d5a" => DATA <= x"1cfc"; - when "00" & x"d5b" => DATA <= x"0079"; + when "00" & x"d5b" => DATA <= x"0062"; when "00" & x"d5c" => DATA <= x"1cfc"; - when "00" & x"d5d" => DATA <= x"0074"; + when "00" & x"d5d" => DATA <= x"0079"; when "00" & x"d5e" => DATA <= x"1cfc"; - when "00" & x"d5f" => DATA <= x"0065"; + when "00" & x"d5f" => DATA <= x"0074"; when "00" & x"d60" => DATA <= x"1cfc"; - when "00" & x"d61" => DATA <= x"0073"; + when "00" & x"d61" => DATA <= x"0065"; when "00" & x"d62" => DATA <= x"1cfc"; - when "00" & x"d63" => DATA <= x"0000"; - when "00" & x"d64" => DATA <= x"023c"; - when "00" & x"d65" => DATA <= x"00fd"; - when "00" & x"d66" => DATA <= x"4e75"; - when "00" & x"d67" => DATA <= x"2f0e"; - when "00" & x"d68" => DATA <= x"2f00"; - when "00" & x"d69" => DATA <= x"2f01"; - when "00" & x"d6a" => DATA <= x"2c40"; - when "00" & x"d6b" => DATA <= x"9280"; - when "00" & x"d6c" => DATA <= x"1dbc"; - when "00" & x"d6d" => DATA <= x"0000"; - when "00" & x"d6e" => DATA <= x"7000"; - when "00" & x"d6f" => DATA <= x"5387"; - when "00" & x"d70" => DATA <= x"1db6"; - when "00" & x"d71" => DATA <= x"1000"; - when "00" & x"d72" => DATA <= x"7000"; - when "00" & x"d73" => DATA <= x"5387"; - when "00" & x"d74" => DATA <= x"51c9"; - when "00" & x"d75" => DATA <= x"fff6"; - when "00" & x"d76" => DATA <= x"9487"; - when "00" & x"d77" => DATA <= x"1dbc"; - when "00" & x"d78" => DATA <= x"0020"; - when "00" & x"d79" => DATA <= x"7000"; - when "00" & x"d7a" => DATA <= x"51cf"; - when "00" & x"d7b" => DATA <= x"fff8"; - when "00" & x"d7c" => DATA <= x"201f"; - when "00" & x"d7d" => DATA <= x"221f"; - when "00" & x"d7e" => DATA <= x"2c5f"; - when "00" & x"d7f" => DATA <= x"4e75"; - when "00" & x"d80" => DATA <= x"203c"; - when "00" & x"d81" => DATA <= x"003f"; - when "00" & x"d82" => DATA <= x"2e80"; - when "00" & x"d83" => DATA <= x"003c"; - when "00" & x"d84" => DATA <= x"0002"; - when "00" & x"d85" => DATA <= x"4e75"; - when "00" & x"d86" => DATA <= x"2f03"; - when "00" & x"d87" => DATA <= x"2f00"; - when "00" & x"d88" => DATA <= x"0280"; - when "00" & x"d89" => DATA <= x"0000"; - when "00" & x"d8a" => DATA <= x"0001"; - when "00" & x"d8b" => DATA <= x"6600"; - when "00" & x"d8c" => DATA <= x"002c"; - when "00" & x"d8d" => DATA <= x"201f"; - when "00" & x"d8e" => DATA <= x"c188"; - when "00" & x"d8f" => DATA <= x"c389"; - when "00" & x"d90" => DATA <= x"2c7c"; - when "00" & x"d91" => DATA <= x"003f"; - when "00" & x"d92" => DATA <= x"39e0"; - when "00" & x"d93" => DATA <= x"3610"; - when "00" & x"d94" => DATA <= x"c66e"; - when "00" & x"d95" => DATA <= x"0002"; - when "00" & x"d96" => DATA <= x"b656"; - when "00" & x"d97" => DATA <= x"6700"; - when "00" & x"d98" => DATA <= x"000a"; - when "00" & x"d99" => DATA <= x"ddfc"; - when "00" & x"d9a" => DATA <= x"0000"; - when "00" & x"d9b" => DATA <= x"000e"; - when "00" & x"d9c" => DATA <= x"60ec"; - when "00" & x"d9d" => DATA <= x"588e"; - when "00" & x"d9e" => DATA <= x"12de"; - when "00" & x"d9f" => DATA <= x"66fc"; - when "00" & x"da0" => DATA <= x"261f"; - when "00" & x"da1" => DATA <= x"4e75"; + when "00" & x"d63" => DATA <= x"0073"; + when "00" & x"d64" => DATA <= x"1cfc"; + when "00" & x"d65" => DATA <= x"0000"; + when "00" & x"d66" => DATA <= x"023c"; + when "00" & x"d67" => DATA <= x"00fd"; + when "00" & x"d68" => DATA <= x"4e75"; + when "00" & x"d69" => DATA <= x"2f0e"; + when "00" & x"d6a" => DATA <= x"2f00"; + when "00" & x"d6b" => DATA <= x"2f01"; + when "00" & x"d6c" => DATA <= x"2c40"; + when "00" & x"d6d" => DATA <= x"9280"; + when "00" & x"d6e" => DATA <= x"1dbc"; + when "00" & x"d6f" => DATA <= x"0000"; + when "00" & x"d70" => DATA <= x"7000"; + when "00" & x"d71" => DATA <= x"5387"; + when "00" & x"d72" => DATA <= x"1db6"; + when "00" & x"d73" => DATA <= x"1000"; + when "00" & x"d74" => DATA <= x"7000"; + when "00" & x"d75" => DATA <= x"5387"; + when "00" & x"d76" => DATA <= x"51c9"; + when "00" & x"d77" => DATA <= x"fff6"; + when "00" & x"d78" => DATA <= x"9487"; + when "00" & x"d79" => DATA <= x"1dbc"; + when "00" & x"d7a" => DATA <= x"0020"; + when "00" & x"d7b" => DATA <= x"7000"; + when "00" & x"d7c" => DATA <= x"51cf"; + when "00" & x"d7d" => DATA <= x"fff8"; + when "00" & x"d7e" => DATA <= x"201f"; + when "00" & x"d7f" => DATA <= x"221f"; + when "00" & x"d80" => DATA <= x"2c5f"; + when "00" & x"d81" => DATA <= x"4e75"; + when "00" & x"d82" => DATA <= x"203c"; + when "00" & x"d83" => DATA <= x"003f"; + when "00" & x"d84" => DATA <= x"2e84"; + when "00" & x"d85" => DATA <= x"003c"; + when "00" & x"d86" => DATA <= x"0002"; + when "00" & x"d87" => DATA <= x"4e75"; + when "00" & x"d88" => DATA <= x"2f03"; + when "00" & x"d89" => DATA <= x"2f00"; + when "00" & x"d8a" => DATA <= x"0280"; + when "00" & x"d8b" => DATA <= x"0000"; + when "00" & x"d8c" => DATA <= x"0001"; + when "00" & x"d8d" => DATA <= x"6600"; + when "00" & x"d8e" => DATA <= x"002c"; + when "00" & x"d8f" => DATA <= x"201f"; + when "00" & x"d90" => DATA <= x"c188"; + when "00" & x"d91" => DATA <= x"c389"; + when "00" & x"d92" => DATA <= x"2c7c"; + when "00" & x"d93" => DATA <= x"003f"; + when "00" & x"d94" => DATA <= x"39e4"; + when "00" & x"d95" => DATA <= x"3610"; + when "00" & x"d96" => DATA <= x"c66e"; + when "00" & x"d97" => DATA <= x"0002"; + when "00" & x"d98" => DATA <= x"b656"; + when "00" & x"d99" => DATA <= x"6700"; + when "00" & x"d9a" => DATA <= x"000a"; + when "00" & x"d9b" => DATA <= x"ddfc"; + when "00" & x"d9c" => DATA <= x"0000"; + when "00" & x"d9d" => DATA <= x"000e"; + when "00" & x"d9e" => DATA <= x"60ec"; + when "00" & x"d9f" => DATA <= x"588e"; + when "00" & x"da0" => DATA <= x"12de"; + when "00" & x"da1" => DATA <= x"66fc"; when "00" & x"da2" => DATA <= x"261f"; - when "00" & x"da3" => DATA <= x"203c"; - when "00" & x"da4" => DATA <= x"003f"; - when "00" & x"da5" => DATA <= x"2f0c"; - when "00" & x"da6" => DATA <= x"003c"; - when "00" & x"da7" => DATA <= x"0002"; - when "00" & x"da8" => DATA <= x"4e75"; - when "00" & x"da9" => DATA <= x"0c16"; - when "00" & x"daa" => DATA <= x"000d"; - when "00" & x"dab" => DATA <= x"6700"; - when "00" & x"dac" => DATA <= x"004c"; - when "00" & x"dad" => DATA <= x"2f0e"; - when "00" & x"dae" => DATA <= x"7010"; - when "00" & x"daf" => DATA <= x"220e"; - when "00" & x"db0" => DATA <= x"6100"; - when "00" & x"db1" => DATA <= x"f46a"; - when "00" & x"db2" => DATA <= x"6800"; - when "00" & x"db3" => DATA <= x"0010"; - when "00" & x"db4" => DATA <= x"21fc"; - when "00" & x"db5" => DATA <= x"0000"; - when "00" & x"db6" => DATA <= x"0000"; - when "00" & x"db7" => DATA <= x"0700"; - when "00" & x"db8" => DATA <= x"2c5f"; - when "00" & x"db9" => DATA <= x"6000"; - when "00" & x"dba" => DATA <= x"000a"; - when "00" & x"dbb" => DATA <= x"2c41"; - when "00" & x"dbc" => DATA <= x"21c2"; - when "00" & x"dbd" => DATA <= x"0700"; - when "00" & x"dbe" => DATA <= x"241f"; - when "00" & x"dbf" => DATA <= x"6100"; - when "00" & x"dc0" => DATA <= x"0ba0"; - when "00" & x"dc1" => DATA <= x"6500"; - when "00" & x"dc2" => DATA <= x"0020"; - when "00" & x"dc3" => DATA <= x"2a7c"; - when "00" & x"dc4" => DATA <= x"0000"; - when "00" & x"dc5" => DATA <= x"0704"; - when "00" & x"dc6" => DATA <= x"1a9e"; - when "00" & x"dc7" => DATA <= x"0c1d"; - when "00" & x"dc8" => DATA <= x"000d"; - when "00" & x"dc9" => DATA <= x"66f8"; - when "00" & x"dca" => DATA <= x"1b3c"; - when "00" & x"dcb" => DATA <= x"0000"; - when "00" & x"dcc" => DATA <= x"203c"; + when "00" & x"da3" => DATA <= x"4e75"; + when "00" & x"da4" => DATA <= x"261f"; + when "00" & x"da5" => DATA <= x"203c"; + when "00" & x"da6" => DATA <= x"003f"; + when "00" & x"da7" => DATA <= x"2f10"; + when "00" & x"da8" => DATA <= x"003c"; + when "00" & x"da9" => DATA <= x"0002"; + when "00" & x"daa" => DATA <= x"4e75"; + when "00" & x"dab" => DATA <= x"0c16"; + when "00" & x"dac" => DATA <= x"000d"; + when "00" & x"dad" => DATA <= x"6700"; + when "00" & x"dae" => DATA <= x"004c"; + when "00" & x"daf" => DATA <= x"2f0e"; + when "00" & x"db0" => DATA <= x"7010"; + when "00" & x"db1" => DATA <= x"220e"; + when "00" & x"db2" => DATA <= x"6100"; + when "00" & x"db3" => DATA <= x"f46a"; + when "00" & x"db4" => DATA <= x"6800"; + when "00" & x"db5" => DATA <= x"0010"; + when "00" & x"db6" => DATA <= x"21fc"; + when "00" & x"db7" => DATA <= x"0000"; + when "00" & x"db8" => DATA <= x"0000"; + when "00" & x"db9" => DATA <= x"0700"; + when "00" & x"dba" => DATA <= x"2c5f"; + when "00" & x"dbb" => DATA <= x"6000"; + when "00" & x"dbc" => DATA <= x"000a"; + when "00" & x"dbd" => DATA <= x"2c41"; + when "00" & x"dbe" => DATA <= x"21c2"; + when "00" & x"dbf" => DATA <= x"0700"; + when "00" & x"dc0" => DATA <= x"241f"; + when "00" & x"dc1" => DATA <= x"6100"; + when "00" & x"dc2" => DATA <= x"0ba0"; + when "00" & x"dc3" => DATA <= x"6500"; + when "00" & x"dc4" => DATA <= x"0020"; + when "00" & x"dc5" => DATA <= x"2a7c"; + when "00" & x"dc6" => DATA <= x"0000"; + when "00" & x"dc7" => DATA <= x"0704"; + when "00" & x"dc8" => DATA <= x"1a9e"; + when "00" & x"dc9" => DATA <= x"0c1d"; + when "00" & x"dca" => DATA <= x"000d"; + when "00" & x"dcb" => DATA <= x"66f8"; + when "00" & x"dcc" => DATA <= x"1b3c"; when "00" & x"dcd" => DATA <= x"0000"; - when "00" & x"dce" => DATA <= x"0700"; - when "00" & x"dcf" => DATA <= x"6100"; - when "00" & x"dd0" => DATA <= x"f580"; - when "00" & x"dd1" => DATA <= x"4e75"; - when "00" & x"dd2" => DATA <= x"203c"; - when "00" & x"dd3" => DATA <= x"003f"; - when "00" & x"dd4" => DATA <= x"28f8"; - when "00" & x"dd5" => DATA <= x"6100"; - when "00" & x"dd6" => DATA <= x"ee52"; - when "00" & x"dd7" => DATA <= x"4e75"; - when "00" & x"dd8" => DATA <= x"2f0e"; - when "00" & x"dd9" => DATA <= x"6100"; - when "00" & x"dda" => DATA <= x"0b6c"; - when "00" & x"ddb" => DATA <= x"0c16"; - when "00" & x"ddc" => DATA <= x"000d"; - when "00" & x"ddd" => DATA <= x"6700"; - when "00" & x"dde" => DATA <= x"0010"; - when "00" & x"ddf" => DATA <= x"0c16"; - when "00" & x"de0" => DATA <= x"000d"; - when "00" & x"de1" => DATA <= x"6700"; - when "00" & x"de2" => DATA <= x"0016"; - when "00" & x"de3" => DATA <= x"0c1e"; - when "00" & x"de4" => DATA <= x"0020"; - when "00" & x"de5" => DATA <= x"66f2"; - when "00" & x"de6" => DATA <= x"203c"; - when "00" & x"de7" => DATA <= x"003f"; - when "00" & x"de8" => DATA <= x"2bfe"; - when "00" & x"de9" => DATA <= x"6100"; - when "00" & x"dea" => DATA <= x"ee2a"; - when "00" & x"deb" => DATA <= x"2c5f"; - when "00" & x"dec" => DATA <= x"4e75"; + when "00" & x"dce" => DATA <= x"203c"; + when "00" & x"dcf" => DATA <= x"0000"; + when "00" & x"dd0" => DATA <= x"0700"; + when "00" & x"dd1" => DATA <= x"6100"; + when "00" & x"dd2" => DATA <= x"f580"; + when "00" & x"dd3" => DATA <= x"4e75"; + when "00" & x"dd4" => DATA <= x"203c"; + when "00" & x"dd5" => DATA <= x"003f"; + when "00" & x"dd6" => DATA <= x"28fc"; + when "00" & x"dd7" => DATA <= x"6100"; + when "00" & x"dd8" => DATA <= x"ee52"; + when "00" & x"dd9" => DATA <= x"4e75"; + when "00" & x"dda" => DATA <= x"2f0e"; + when "00" & x"ddb" => DATA <= x"6100"; + when "00" & x"ddc" => DATA <= x"0b6c"; + when "00" & x"ddd" => DATA <= x"0c16"; + when "00" & x"dde" => DATA <= x"000d"; + when "00" & x"ddf" => DATA <= x"6700"; + when "00" & x"de0" => DATA <= x"0010"; + when "00" & x"de1" => DATA <= x"0c16"; + when "00" & x"de2" => DATA <= x"000d"; + when "00" & x"de3" => DATA <= x"6700"; + when "00" & x"de4" => DATA <= x"0016"; + when "00" & x"de5" => DATA <= x"0c1e"; + when "00" & x"de6" => DATA <= x"0020"; + when "00" & x"de7" => DATA <= x"66f2"; + when "00" & x"de8" => DATA <= x"203c"; + when "00" & x"de9" => DATA <= x"003f"; + when "00" & x"dea" => DATA <= x"2c02"; + when "00" & x"deb" => DATA <= x"6100"; + when "00" & x"dec" => DATA <= x"ee2a"; when "00" & x"ded" => DATA <= x"2c5f"; - when "00" & x"dee" => DATA <= x"220e"; - when "00" & x"def" => DATA <= x"7005"; - when "00" & x"df0" => DATA <= x"6100"; - when "00" & x"df1" => DATA <= x"f0e8"; - when "00" & x"df2" => DATA <= x"b8bc"; - when "00" & x"df3" => DATA <= x"0000"; - when "00" & x"df4" => DATA <= x"8000"; - when "00" & x"df5" => DATA <= x"6600"; - when "00" & x"df6" => DATA <= x"0078"; - when "00" & x"df7" => DATA <= x"2a78"; - when "00" & x"df8" => DATA <= x"0504"; - when "00" & x"df9" => DATA <= x"dbfc"; - when "00" & x"dfa" => DATA <= x"0000"; - when "00" & x"dfb" => DATA <= x"8000"; - when "00" & x"dfc" => DATA <= x"dbfc"; - when "00" & x"dfd" => DATA <= x"0000"; - when "00" & x"dfe" => DATA <= x"0100"; - when "00" & x"dff" => DATA <= x"bbf8"; - when "00" & x"e00" => DATA <= x"0508"; - when "00" & x"e01" => DATA <= x"6300"; - when "00" & x"e02" => DATA <= x"006c"; - when "00" & x"e03" => DATA <= x"220e"; - when "00" & x"e04" => DATA <= x"243c"; - when "00" & x"e05" => DATA <= x"0000"; - when "00" & x"e06" => DATA <= x"0400"; - when "00" & x"e07" => DATA <= x"7600"; - when "00" & x"e08" => DATA <= x"203c"; - when "00" & x"e09" => DATA <= x"0000"; - when "00" & x"e0a" => DATA <= x"00ff"; - when "00" & x"e0b" => DATA <= x"6100"; - when "00" & x"e0c" => DATA <= x"f0b2"; - when "00" & x"e0d" => DATA <= x"203c"; - when "00" & x"e0e" => DATA <= x"003f"; - when "00" & x"e0f" => DATA <= x"2b5d"; - when "00" & x"e10" => DATA <= x"6100"; - when "00" & x"e11" => DATA <= x"eddc"; - when "00" & x"e12" => DATA <= x"7015"; - when "00" & x"e13" => DATA <= x"7200"; - when "00" & x"e14" => DATA <= x"6100"; - when "00" & x"e15" => DATA <= x"eea8"; + when "00" & x"dee" => DATA <= x"4e75"; + when "00" & x"def" => DATA <= x"2c5f"; + when "00" & x"df0" => DATA <= x"220e"; + when "00" & x"df1" => DATA <= x"7005"; + when "00" & x"df2" => DATA <= x"6100"; + when "00" & x"df3" => DATA <= x"f0e8"; + when "00" & x"df4" => DATA <= x"b8bc"; + when "00" & x"df5" => DATA <= x"0000"; + when "00" & x"df6" => DATA <= x"8000"; + when "00" & x"df7" => DATA <= x"6600"; + when "00" & x"df8" => DATA <= x"0078"; + when "00" & x"df9" => DATA <= x"2a78"; + when "00" & x"dfa" => DATA <= x"0504"; + when "00" & x"dfb" => DATA <= x"dbfc"; + when "00" & x"dfc" => DATA <= x"0000"; + when "00" & x"dfd" => DATA <= x"8000"; + when "00" & x"dfe" => DATA <= x"dbfc"; + when "00" & x"dff" => DATA <= x"0000"; + when "00" & x"e00" => DATA <= x"0100"; + when "00" & x"e01" => DATA <= x"bbf8"; + when "00" & x"e02" => DATA <= x"0508"; + when "00" & x"e03" => DATA <= x"6300"; + when "00" & x"e04" => DATA <= x"006c"; + when "00" & x"e05" => DATA <= x"220e"; + when "00" & x"e06" => DATA <= x"243c"; + when "00" & x"e07" => DATA <= x"0000"; + when "00" & x"e08" => DATA <= x"0400"; + when "00" & x"e09" => DATA <= x"7600"; + when "00" & x"e0a" => DATA <= x"203c"; + when "00" & x"e0b" => DATA <= x"0000"; + when "00" & x"e0c" => DATA <= x"00ff"; + when "00" & x"e0d" => DATA <= x"6100"; + when "00" & x"e0e" => DATA <= x"f0b2"; + when "00" & x"e0f" => DATA <= x"203c"; + when "00" & x"e10" => DATA <= x"003f"; + when "00" & x"e11" => DATA <= x"2b61"; + when "00" & x"e12" => DATA <= x"6100"; + when "00" & x"e13" => DATA <= x"eddc"; + when "00" & x"e14" => DATA <= x"7015"; + when "00" & x"e15" => DATA <= x"7200"; when "00" & x"e16" => DATA <= x"6100"; - when "00" & x"e17" => DATA <= x"f86c"; + when "00" & x"e17" => DATA <= x"eea8"; when "00" & x"e18" => DATA <= x"6100"; - when "00" & x"e19" => DATA <= x"edb4"; - when "00" & x"e1a" => DATA <= x"66a0"; - when "00" & x"e1b" => DATA <= x"223c"; - when "00" & x"e1c" => DATA <= x"0000"; - when "00" & x"e1d" => DATA <= x"0600"; - when "00" & x"e1e" => DATA <= x"74ff"; - when "00" & x"e1f" => DATA <= x"203c"; - when "00" & x"e20" => DATA <= x"003f"; - when "00" & x"e21" => DATA <= x"2bca"; - when "00" & x"e22" => DATA <= x"6100"; - when "00" & x"e23" => DATA <= x"edb8"; - when "00" & x"e24" => DATA <= x"1007"; - when "00" & x"e25" => DATA <= x"0600"; - when "00" & x"e26" => DATA <= x"0030"; - when "00" & x"e27" => DATA <= x"6100"; - when "00" & x"e28" => DATA <= x"ed96"; + when "00" & x"e19" => DATA <= x"f86c"; + when "00" & x"e1a" => DATA <= x"6100"; + when "00" & x"e1b" => DATA <= x"edb4"; + when "00" & x"e1c" => DATA <= x"66a0"; + when "00" & x"e1d" => DATA <= x"223c"; + when "00" & x"e1e" => DATA <= x"0000"; + when "00" & x"e1f" => DATA <= x"0600"; + when "00" & x"e20" => DATA <= x"74ff"; + when "00" & x"e21" => DATA <= x"203c"; + when "00" & x"e22" => DATA <= x"003f"; + when "00" & x"e23" => DATA <= x"2bce"; + when "00" & x"e24" => DATA <= x"6100"; + when "00" & x"e25" => DATA <= x"edb8"; + when "00" & x"e26" => DATA <= x"1007"; + when "00" & x"e27" => DATA <= x"0600"; + when "00" & x"e28" => DATA <= x"0030"; when "00" & x"e29" => DATA <= x"6100"; - when "00" & x"e2a" => DATA <= x"edbe"; - when "00" & x"e2b" => DATA <= x"203c"; - when "00" & x"e2c" => DATA <= x"003f"; - when "00" & x"e2d" => DATA <= x"2bdf"; - when "00" & x"e2e" => DATA <= x"6100"; - when "00" & x"e2f" => DATA <= x"eda0"; - when "00" & x"e30" => DATA <= x"6000"; - when "00" & x"e31" => DATA <= x"ff74"; - when "00" & x"e32" => DATA <= x"203c"; - when "00" & x"e33" => DATA <= x"003f"; - when "00" & x"e34" => DATA <= x"2b37"; - when "00" & x"e35" => DATA <= x"6100"; - when "00" & x"e36" => DATA <= x"ed92"; - when "00" & x"e37" => DATA <= x"4e75"; - when "00" & x"e38" => DATA <= x"203c"; - when "00" & x"e39" => DATA <= x"003f"; - when "00" & x"e3a" => DATA <= x"2b53"; - when "00" & x"e3b" => DATA <= x"6100"; - when "00" & x"e3c" => DATA <= x"ed86"; - when "00" & x"e3d" => DATA <= x"4e75"; - when "00" & x"e3e" => DATA <= x"203c"; - when "00" & x"e3f" => DATA <= x"003f"; - when "00" & x"e40" => DATA <= x"291b"; - when "00" & x"e41" => DATA <= x"6100"; - when "00" & x"e42" => DATA <= x"ed7a"; - when "00" & x"e43" => DATA <= x"4e75"; - when "00" & x"e44" => DATA <= x"7010"; - when "00" & x"e45" => DATA <= x"220e"; - when "00" & x"e46" => DATA <= x"6100"; - when "00" & x"e47" => DATA <= x"f33e"; - when "00" & x"e48" => DATA <= x"6900"; - when "00" & x"e49" => DATA <= x"0018"; - when "00" & x"e4a" => DATA <= x"6100"; - when "00" & x"e4b" => DATA <= x"0a98"; - when "00" & x"e4c" => DATA <= x"6600"; - when "00" & x"e4d" => DATA <= x"0010"; - when "00" & x"e4e" => DATA <= x"21c2"; - when "00" & x"e4f" => DATA <= x"0520"; - when "00" & x"e50" => DATA <= x"6100"; - when "00" & x"e51" => DATA <= x"eee2"; - when "00" & x"e52" => DATA <= x"023c"; - when "00" & x"e53" => DATA <= x"00fe"; - when "00" & x"e54" => DATA <= x"4e75"; - when "00" & x"e55" => DATA <= x"203c"; - when "00" & x"e56" => DATA <= x"003f"; - when "00" & x"e57" => DATA <= x"2931"; - when "00" & x"e58" => DATA <= x"6100"; - when "00" & x"e59" => DATA <= x"ed4c"; - when "00" & x"e5a" => DATA <= x"4e75"; - when "00" & x"e5b" => DATA <= x"2f0e"; - when "00" & x"e5c" => DATA <= x"0c16"; - when "00" & x"e5d" => DATA <= x"000d"; - when "00" & x"e5e" => DATA <= x"6600"; - when "00" & x"e5f" => DATA <= x"001a"; - when "00" & x"e60" => DATA <= x"203c"; - when "00" & x"e61" => DATA <= x"003f"; - when "00" & x"e62" => DATA <= x"2838"; - when "00" & x"e63" => DATA <= x"6100"; - when "00" & x"e64" => DATA <= x"ed36"; - when "00" & x"e65" => DATA <= x"203c"; - when "00" & x"e66" => DATA <= x"003f"; - when "00" & x"e67" => DATA <= x"2859"; - when "00" & x"e68" => DATA <= x"6100"; - when "00" & x"e69" => DATA <= x"ed2c"; - when "00" & x"e6a" => DATA <= x"6000"; - when "00" & x"e6b" => DATA <= x"00ca"; - when "00" & x"e6c" => DATA <= x"0216"; - when "00" & x"e6d" => DATA <= x"00df"; - when "00" & x"e6e" => DATA <= x"0c1e"; - when "00" & x"e6f" => DATA <= x"0054"; - when "00" & x"e70" => DATA <= x"6600"; - when "00" & x"e71" => DATA <= x"0042"; - when "00" & x"e72" => DATA <= x"0216"; - when "00" & x"e73" => DATA <= x"00df"; - when "00" & x"e74" => DATA <= x"0c1e"; - when "00" & x"e75" => DATA <= x"0055"; - when "00" & x"e76" => DATA <= x"6600"; - when "00" & x"e77" => DATA <= x"00b2"; - when "00" & x"e78" => DATA <= x"0216"; - when "00" & x"e79" => DATA <= x"00df"; - when "00" & x"e7a" => DATA <= x"0c1e"; - when "00" & x"e7b" => DATA <= x"0042"; - when "00" & x"e7c" => DATA <= x"6600"; - when "00" & x"e7d" => DATA <= x"00a6"; - when "00" & x"e7e" => DATA <= x"0216"; - when "00" & x"e7f" => DATA <= x"00df"; - when "00" & x"e80" => DATA <= x"0c1e"; - when "00" & x"e81" => DATA <= x"0045"; - when "00" & x"e82" => DATA <= x"6600"; - when "00" & x"e83" => DATA <= x"009a"; - when "00" & x"e84" => DATA <= x"0c16"; - when "00" & x"e85" => DATA <= x"000d"; - when "00" & x"e86" => DATA <= x"6600"; - when "00" & x"e87" => DATA <= x"0092"; - when "00" & x"e88" => DATA <= x"203c"; - when "00" & x"e89" => DATA <= x"003f"; - when "00" & x"e8a" => DATA <= x"2838"; - when "00" & x"e8b" => DATA <= x"6100"; - when "00" & x"e8c" => DATA <= x"ece6"; - when "00" & x"e8d" => DATA <= x"203c"; - when "00" & x"e8e" => DATA <= x"003f"; - when "00" & x"e8f" => DATA <= x"286b"; - when "00" & x"e90" => DATA <= x"6100"; - when "00" & x"e91" => DATA <= x"ecdc"; - when "00" & x"e92" => DATA <= x"0226"; - when "00" & x"e93" => DATA <= x"00df"; - when "00" & x"e94" => DATA <= x"0c1e"; - when "00" & x"e95" => DATA <= x"0053"; - when "00" & x"e96" => DATA <= x"6600"; - when "00" & x"e97" => DATA <= x"0072"; - when "00" & x"e98" => DATA <= x"0216"; - when "00" & x"e99" => DATA <= x"00df"; - when "00" & x"e9a" => DATA <= x"0c1e"; - when "00" & x"e9b" => DATA <= x"0057"; - when "00" & x"e9c" => DATA <= x"6600"; - when "00" & x"e9d" => DATA <= x"0066"; - when "00" & x"e9e" => DATA <= x"0216"; - when "00" & x"e9f" => DATA <= x"00df"; - when "00" & x"ea0" => DATA <= x"0c1e"; - when "00" & x"ea1" => DATA <= x"0049"; - when "00" & x"ea2" => DATA <= x"6600"; - when "00" & x"ea3" => DATA <= x"005a"; - when "00" & x"ea4" => DATA <= x"0c16"; - when "00" & x"ea5" => DATA <= x"000d"; - when "00" & x"ea6" => DATA <= x"6600"; - when "00" & x"ea7" => DATA <= x"0052"; - when "00" & x"ea8" => DATA <= x"203c"; - when "00" & x"ea9" => DATA <= x"003f"; - when "00" & x"eaa" => DATA <= x"2838"; - when "00" & x"eab" => DATA <= x"6100"; - when "00" & x"eac" => DATA <= x"eca6"; - when "00" & x"ead" => DATA <= x"4df9"; - when "00" & x"eae" => DATA <= x"003f"; - when "00" & x"eaf" => DATA <= x"2f50"; - when "00" & x"eb0" => DATA <= x"103c"; - when "00" & x"eb1" => DATA <= x"0020"; - when "00" & x"eb2" => DATA <= x"6100"; - when "00" & x"eb3" => DATA <= x"ec80"; + when "00" & x"e2a" => DATA <= x"ed96"; + when "00" & x"e2b" => DATA <= x"6100"; + when "00" & x"e2c" => DATA <= x"edbe"; + when "00" & x"e2d" => DATA <= x"203c"; + when "00" & x"e2e" => DATA <= x"003f"; + when "00" & x"e2f" => DATA <= x"2be3"; + when "00" & x"e30" => DATA <= x"6100"; + when "00" & x"e31" => DATA <= x"eda0"; + when "00" & x"e32" => DATA <= x"6000"; + when "00" & x"e33" => DATA <= x"ff74"; + when "00" & x"e34" => DATA <= x"203c"; + when "00" & x"e35" => DATA <= x"003f"; + when "00" & x"e36" => DATA <= x"2b3b"; + when "00" & x"e37" => DATA <= x"6100"; + when "00" & x"e38" => DATA <= x"ed92"; + when "00" & x"e39" => DATA <= x"4e75"; + when "00" & x"e3a" => DATA <= x"203c"; + when "00" & x"e3b" => DATA <= x"003f"; + when "00" & x"e3c" => DATA <= x"2b57"; + when "00" & x"e3d" => DATA <= x"6100"; + when "00" & x"e3e" => DATA <= x"ed86"; + when "00" & x"e3f" => DATA <= x"4e75"; + when "00" & x"e40" => DATA <= x"203c"; + when "00" & x"e41" => DATA <= x"003f"; + when "00" & x"e42" => DATA <= x"291f"; + when "00" & x"e43" => DATA <= x"6100"; + when "00" & x"e44" => DATA <= x"ed7a"; + when "00" & x"e45" => DATA <= x"4e75"; + when "00" & x"e46" => DATA <= x"7010"; + when "00" & x"e47" => DATA <= x"220e"; + when "00" & x"e48" => DATA <= x"6100"; + when "00" & x"e49" => DATA <= x"f33e"; + when "00" & x"e4a" => DATA <= x"6900"; + when "00" & x"e4b" => DATA <= x"0018"; + when "00" & x"e4c" => DATA <= x"6100"; + when "00" & x"e4d" => DATA <= x"0a98"; + when "00" & x"e4e" => DATA <= x"6600"; + when "00" & x"e4f" => DATA <= x"0010"; + when "00" & x"e50" => DATA <= x"21c2"; + when "00" & x"e51" => DATA <= x"0520"; + when "00" & x"e52" => DATA <= x"6100"; + when "00" & x"e53" => DATA <= x"eee2"; + when "00" & x"e54" => DATA <= x"023c"; + when "00" & x"e55" => DATA <= x"00fe"; + when "00" & x"e56" => DATA <= x"4e75"; + when "00" & x"e57" => DATA <= x"203c"; + when "00" & x"e58" => DATA <= x"003f"; + when "00" & x"e59" => DATA <= x"2935"; + when "00" & x"e5a" => DATA <= x"6100"; + when "00" & x"e5b" => DATA <= x"ed4c"; + when "00" & x"e5c" => DATA <= x"4e75"; + when "00" & x"e5d" => DATA <= x"2f0e"; + when "00" & x"e5e" => DATA <= x"0c16"; + when "00" & x"e5f" => DATA <= x"000d"; + when "00" & x"e60" => DATA <= x"6600"; + when "00" & x"e61" => DATA <= x"001a"; + when "00" & x"e62" => DATA <= x"203c"; + when "00" & x"e63" => DATA <= x"003f"; + when "00" & x"e64" => DATA <= x"283c"; + when "00" & x"e65" => DATA <= x"6100"; + when "00" & x"e66" => DATA <= x"ed36"; + when "00" & x"e67" => DATA <= x"203c"; + when "00" & x"e68" => DATA <= x"003f"; + when "00" & x"e69" => DATA <= x"285d"; + when "00" & x"e6a" => DATA <= x"6100"; + when "00" & x"e6b" => DATA <= x"ed2c"; + when "00" & x"e6c" => DATA <= x"6000"; + when "00" & x"e6d" => DATA <= x"00ca"; + when "00" & x"e6e" => DATA <= x"0216"; + when "00" & x"e6f" => DATA <= x"00df"; + when "00" & x"e70" => DATA <= x"0c1e"; + when "00" & x"e71" => DATA <= x"0054"; + when "00" & x"e72" => DATA <= x"6600"; + when "00" & x"e73" => DATA <= x"0042"; + when "00" & x"e74" => DATA <= x"0216"; + when "00" & x"e75" => DATA <= x"00df"; + when "00" & x"e76" => DATA <= x"0c1e"; + when "00" & x"e77" => DATA <= x"0055"; + when "00" & x"e78" => DATA <= x"6600"; + when "00" & x"e79" => DATA <= x"00b2"; + when "00" & x"e7a" => DATA <= x"0216"; + when "00" & x"e7b" => DATA <= x"00df"; + when "00" & x"e7c" => DATA <= x"0c1e"; + when "00" & x"e7d" => DATA <= x"0042"; + when "00" & x"e7e" => DATA <= x"6600"; + when "00" & x"e7f" => DATA <= x"00a6"; + when "00" & x"e80" => DATA <= x"0216"; + when "00" & x"e81" => DATA <= x"00df"; + when "00" & x"e82" => DATA <= x"0c1e"; + when "00" & x"e83" => DATA <= x"0045"; + when "00" & x"e84" => DATA <= x"6600"; + when "00" & x"e85" => DATA <= x"009a"; + when "00" & x"e86" => DATA <= x"0c16"; + when "00" & x"e87" => DATA <= x"000d"; + when "00" & x"e88" => DATA <= x"6600"; + when "00" & x"e89" => DATA <= x"0092"; + when "00" & x"e8a" => DATA <= x"203c"; + when "00" & x"e8b" => DATA <= x"003f"; + when "00" & x"e8c" => DATA <= x"283c"; + when "00" & x"e8d" => DATA <= x"6100"; + when "00" & x"e8e" => DATA <= x"ece6"; + when "00" & x"e8f" => DATA <= x"203c"; + when "00" & x"e90" => DATA <= x"003f"; + when "00" & x"e91" => DATA <= x"286f"; + when "00" & x"e92" => DATA <= x"6100"; + when "00" & x"e93" => DATA <= x"ecdc"; + when "00" & x"e94" => DATA <= x"0226"; + when "00" & x"e95" => DATA <= x"00df"; + when "00" & x"e96" => DATA <= x"0c1e"; + when "00" & x"e97" => DATA <= x"0053"; + when "00" & x"e98" => DATA <= x"6600"; + when "00" & x"e99" => DATA <= x"0072"; + when "00" & x"e9a" => DATA <= x"0216"; + when "00" & x"e9b" => DATA <= x"00df"; + when "00" & x"e9c" => DATA <= x"0c1e"; + when "00" & x"e9d" => DATA <= x"0057"; + when "00" & x"e9e" => DATA <= x"6600"; + when "00" & x"e9f" => DATA <= x"0066"; + when "00" & x"ea0" => DATA <= x"0216"; + when "00" & x"ea1" => DATA <= x"00df"; + when "00" & x"ea2" => DATA <= x"0c1e"; + when "00" & x"ea3" => DATA <= x"0049"; + when "00" & x"ea4" => DATA <= x"6600"; + when "00" & x"ea5" => DATA <= x"005a"; + when "00" & x"ea6" => DATA <= x"0c16"; + when "00" & x"ea7" => DATA <= x"000d"; + when "00" & x"ea8" => DATA <= x"6600"; + when "00" & x"ea9" => DATA <= x"0052"; + when "00" & x"eaa" => DATA <= x"203c"; + when "00" & x"eab" => DATA <= x"003f"; + when "00" & x"eac" => DATA <= x"283c"; + when "00" & x"ead" => DATA <= x"6100"; + when "00" & x"eae" => DATA <= x"eca6"; + when "00" & x"eaf" => DATA <= x"4df9"; + when "00" & x"eb0" => DATA <= x"003f"; + when "00" & x"eb1" => DATA <= x"2f54"; + when "00" & x"eb2" => DATA <= x"103c"; + when "00" & x"eb3" => DATA <= x"0020"; when "00" & x"eb4" => DATA <= x"6100"; - when "00" & x"eb5" => DATA <= x"ec7c"; + when "00" & x"eb5" => DATA <= x"ec80"; when "00" & x"eb6" => DATA <= x"6100"; - when "00" & x"eb7" => DATA <= x"ec78"; - when "00" & x"eb8" => DATA <= x"201e"; - when "00" & x"eb9" => DATA <= x"201e"; - when "00" & x"eba" => DATA <= x"0c80"; - when "00" & x"ebb" => DATA <= x"ffff"; - when "00" & x"ebc" => DATA <= x"ffff"; - when "00" & x"ebd" => DATA <= x"6700"; - when "00" & x"ebe" => DATA <= x"0024"; - when "00" & x"ebf" => DATA <= x"200e"; - when "00" & x"ec0" => DATA <= x"6100"; - when "00" & x"ec1" => DATA <= x"ec7c"; - when "00" & x"ec2" => DATA <= x"2c40"; - when "00" & x"ec3" => DATA <= x"0c26"; - when "00" & x"ec4" => DATA <= x"0000"; - when "00" & x"ec5" => DATA <= x"6100"; - when "00" & x"ec6" => DATA <= x"ec86"; - when "00" & x"ec7" => DATA <= x"0c1e"; - when "00" & x"ec8" => DATA <= x"00ff"; - when "00" & x"ec9" => DATA <= x"6700"; - when "00" & x"eca" => DATA <= x"000c"; - when "00" & x"ecb" => DATA <= x"200e"; - when "00" & x"ecc" => DATA <= x"0200"; - when "00" & x"ecd" => DATA <= x"0003"; - when "00" & x"ece" => DATA <= x"66f0"; - when "00" & x"ecf" => DATA <= x"60c0"; - when "00" & x"ed0" => DATA <= x"2f01"; - when "00" & x"ed1" => DATA <= x"7209"; - when "00" & x"ed2" => DATA <= x"6100"; - when "00" & x"ed3" => DATA <= x"f3aa"; - when "00" & x"ed4" => DATA <= x"221f"; - when "00" & x"ed5" => DATA <= x"2c5f"; - when "00" & x"ed6" => DATA <= x"003c"; - when "00" & x"ed7" => DATA <= x"0001"; - when "00" & x"ed8" => DATA <= x"4e75"; - when "00" & x"ed9" => DATA <= x"0c16"; - when "00" & x"eda" => DATA <= x"000d"; - when "00" & x"edb" => DATA <= x"6600"; - when "00" & x"edc" => DATA <= x"06b8"; - when "00" & x"edd" => DATA <= x"203c"; - when "00" & x"ede" => DATA <= x"003f"; - when "00" & x"edf" => DATA <= x"299f"; - when "00" & x"ee0" => DATA <= x"6100"; - when "00" & x"ee1" => DATA <= x"ec3c"; + when "00" & x"eb7" => DATA <= x"ec7c"; + when "00" & x"eb8" => DATA <= x"6100"; + when "00" & x"eb9" => DATA <= x"ec78"; + when "00" & x"eba" => DATA <= x"201e"; + when "00" & x"ebb" => DATA <= x"201e"; + when "00" & x"ebc" => DATA <= x"0c80"; + when "00" & x"ebd" => DATA <= x"ffff"; + when "00" & x"ebe" => DATA <= x"ffff"; + when "00" & x"ebf" => DATA <= x"6700"; + when "00" & x"ec0" => DATA <= x"0024"; + when "00" & x"ec1" => DATA <= x"200e"; + when "00" & x"ec2" => DATA <= x"6100"; + when "00" & x"ec3" => DATA <= x"ec7c"; + when "00" & x"ec4" => DATA <= x"2c40"; + when "00" & x"ec5" => DATA <= x"0c26"; + when "00" & x"ec6" => DATA <= x"0000"; + when "00" & x"ec7" => DATA <= x"6100"; + when "00" & x"ec8" => DATA <= x"ec86"; + when "00" & x"ec9" => DATA <= x"0c1e"; + when "00" & x"eca" => DATA <= x"00ff"; + when "00" & x"ecb" => DATA <= x"6700"; + when "00" & x"ecc" => DATA <= x"000c"; + when "00" & x"ecd" => DATA <= x"200e"; + when "00" & x"ece" => DATA <= x"0200"; + when "00" & x"ecf" => DATA <= x"0003"; + when "00" & x"ed0" => DATA <= x"66f0"; + when "00" & x"ed1" => DATA <= x"60c0"; + when "00" & x"ed2" => DATA <= x"2f01"; + when "00" & x"ed3" => DATA <= x"7209"; + when "00" & x"ed4" => DATA <= x"6100"; + when "00" & x"ed5" => DATA <= x"f3aa"; + when "00" & x"ed6" => DATA <= x"221f"; + when "00" & x"ed7" => DATA <= x"2c5f"; + when "00" & x"ed8" => DATA <= x"003c"; + when "00" & x"ed9" => DATA <= x"0001"; + when "00" & x"eda" => DATA <= x"4e75"; + when "00" & x"edb" => DATA <= x"0c16"; + when "00" & x"edc" => DATA <= x"000d"; + when "00" & x"edd" => DATA <= x"6600"; + when "00" & x"ede" => DATA <= x"06b8"; + when "00" & x"edf" => DATA <= x"203c"; + when "00" & x"ee0" => DATA <= x"003f"; + when "00" & x"ee1" => DATA <= x"29a3"; when "00" & x"ee2" => DATA <= x"6100"; - when "00" & x"ee3" => DATA <= x"ec4c"; - when "00" & x"ee4" => DATA <= x"103c"; - when "00" & x"ee5" => DATA <= x"003a"; - when "00" & x"ee6" => DATA <= x"6100"; - when "00" & x"ee7" => DATA <= x"ec18"; - when "00" & x"ee8" => DATA <= x"203c"; - when "00" & x"ee9" => DATA <= x"0000"; - when "00" & x"eea" => DATA <= x"0600"; - when "00" & x"eeb" => DATA <= x"123c"; - when "00" & x"eec" => DATA <= x"00ff"; - when "00" & x"eed" => DATA <= x"143c"; - when "00" & x"eee" => DATA <= x"0020"; - when "00" & x"eef" => DATA <= x"163c"; - when "00" & x"ef0" => DATA <= x"00ff"; - when "00" & x"ef1" => DATA <= x"207c"; - when "00" & x"ef2" => DATA <= x"0000"; - when "00" & x"ef3" => DATA <= x"007d"; - when "00" & x"ef4" => DATA <= x"4e4c"; - when "00" & x"ef5" => DATA <= x"6500"; - when "00" & x"ef6" => DATA <= x"00b8"; - when "00" & x"ef7" => DATA <= x"2c7c"; - when "00" & x"ef8" => DATA <= x"0000"; - when "00" & x"ef9" => DATA <= x"0600"; - when "00" & x"efa" => DATA <= x"101e"; - when "00" & x"efb" => DATA <= x"b03c"; - when "00" & x"efc" => DATA <= x"003f"; - when "00" & x"efd" => DATA <= x"6700"; - when "00" & x"efe" => DATA <= x"02c8"; - when "00" & x"eff" => DATA <= x"b03c"; - when "00" & x"f00" => DATA <= x"002a"; - when "00" & x"f01" => DATA <= x"6700"; - when "00" & x"f02" => DATA <= x"03b2"; - when "00" & x"f03" => DATA <= x"0200"; - when "00" & x"f04" => DATA <= x"00df"; - when "00" & x"f05" => DATA <= x"b03c"; - when "00" & x"f06" => DATA <= x"0042"; - when "00" & x"f07" => DATA <= x"6700"; - when "00" & x"f08" => DATA <= x"009e"; - when "00" & x"f09" => DATA <= x"b03c"; - when "00" & x"f0a" => DATA <= x"0044"; - when "00" & x"f0b" => DATA <= x"6700"; - when "00" & x"f0c" => DATA <= x"0060"; - when "00" & x"f0d" => DATA <= x"b03c"; - when "00" & x"f0e" => DATA <= x"0045"; - when "00" & x"f0f" => DATA <= x"6700"; - when "00" & x"f10" => DATA <= x"00f2"; - when "00" & x"f11" => DATA <= x"b03c"; - when "00" & x"f12" => DATA <= x"0046"; - when "00" & x"f13" => DATA <= x"6700"; - when "00" & x"f14" => DATA <= x"01a0"; - when "00" & x"f15" => DATA <= x"b03c"; - when "00" & x"f16" => DATA <= x"0047"; - when "00" & x"f17" => DATA <= x"6700"; - when "00" & x"f18" => DATA <= x"01d2"; - when "00" & x"f19" => DATA <= x"b03c"; - when "00" & x"f1a" => DATA <= x"0048"; - when "00" & x"f1b" => DATA <= x"6700"; - when "00" & x"f1c" => DATA <= x"01e6"; - when "00" & x"f1d" => DATA <= x"b03c"; - when "00" & x"f1e" => DATA <= x"004d"; - when "00" & x"f1f" => DATA <= x"6700"; - when "00" & x"f20" => DATA <= x"0292"; - when "00" & x"f21" => DATA <= x"b03c"; - when "00" & x"f22" => DATA <= x"0051"; - when "00" & x"f23" => DATA <= x"6700"; - when "00" & x"f24" => DATA <= x"02c0"; - when "00" & x"f25" => DATA <= x"b03c"; - when "00" & x"f26" => DATA <= x"0052"; - when "00" & x"f27" => DATA <= x"6700"; - when "00" & x"f28" => DATA <= x"02be"; - when "00" & x"f29" => DATA <= x"b03c"; - when "00" & x"f2a" => DATA <= x"0053"; - when "00" & x"f2b" => DATA <= x"6700"; - when "00" & x"f2c" => DATA <= x"0012"; - when "00" & x"f2d" => DATA <= x"b03c"; - when "00" & x"f2e" => DATA <= x"0054"; - when "00" & x"f2f" => DATA <= x"6700"; - when "00" & x"f30" => DATA <= x"000a"; - when "00" & x"f31" => DATA <= x"b03c"; - when "00" & x"f32" => DATA <= x"0056"; - when "00" & x"f33" => DATA <= x"6700"; - when "00" & x"f34" => DATA <= x"0358"; - when "00" & x"f35" => DATA <= x"203c"; - when "00" & x"f36" => DATA <= x"003f"; - when "00" & x"f37" => DATA <= x"2b03"; - when "00" & x"f38" => DATA <= x"6100"; - when "00" & x"f39" => DATA <= x"eb8c"; - when "00" & x"f3a" => DATA <= x"6000"; - when "00" & x"f3b" => DATA <= x"ff4e"; - when "00" & x"f3c" => DATA <= x"6100"; - when "00" & x"f3d" => DATA <= x"08a6"; - when "00" & x"f3e" => DATA <= x"7010"; - when "00" & x"f3f" => DATA <= x"220e"; - when "00" & x"f40" => DATA <= x"6100"; - when "00" & x"f41" => DATA <= x"f14a"; - when "00" & x"f42" => DATA <= x"6900"; - when "00" & x"f43" => DATA <= x"023e"; - when "00" & x"f44" => DATA <= x"2c41"; - when "00" & x"f45" => DATA <= x"2002"; - when "00" & x"f46" => DATA <= x"223c"; - when "00" & x"f47" => DATA <= x"0000"; - when "00" & x"f48" => DATA <= x"0600"; - when "00" & x"f49" => DATA <= x"6100"; - when "00" & x"f4a" => DATA <= x"fc78"; - when "00" & x"f4b" => DATA <= x"2001"; - when "00" & x"f4c" => DATA <= x"6100"; - when "00" & x"f4d" => DATA <= x"eb64"; + when "00" & x"ee3" => DATA <= x"ec3c"; + when "00" & x"ee4" => DATA <= x"6100"; + when "00" & x"ee5" => DATA <= x"ec4c"; + when "00" & x"ee6" => DATA <= x"103c"; + when "00" & x"ee7" => DATA <= x"003a"; + when "00" & x"ee8" => DATA <= x"6100"; + when "00" & x"ee9" => DATA <= x"ec18"; + when "00" & x"eea" => DATA <= x"203c"; + when "00" & x"eeb" => DATA <= x"0000"; + when "00" & x"eec" => DATA <= x"0600"; + when "00" & x"eed" => DATA <= x"123c"; + when "00" & x"eee" => DATA <= x"00ff"; + when "00" & x"eef" => DATA <= x"143c"; + when "00" & x"ef0" => DATA <= x"0020"; + when "00" & x"ef1" => DATA <= x"163c"; + when "00" & x"ef2" => DATA <= x"00ff"; + when "00" & x"ef3" => DATA <= x"207c"; + when "00" & x"ef4" => DATA <= x"0000"; + when "00" & x"ef5" => DATA <= x"007d"; + when "00" & x"ef6" => DATA <= x"4e4c"; + when "00" & x"ef7" => DATA <= x"6500"; + when "00" & x"ef8" => DATA <= x"00b8"; + when "00" & x"ef9" => DATA <= x"2c7c"; + when "00" & x"efa" => DATA <= x"0000"; + when "00" & x"efb" => DATA <= x"0600"; + when "00" & x"efc" => DATA <= x"101e"; + when "00" & x"efd" => DATA <= x"b03c"; + when "00" & x"efe" => DATA <= x"003f"; + when "00" & x"eff" => DATA <= x"6700"; + when "00" & x"f00" => DATA <= x"02c8"; + when "00" & x"f01" => DATA <= x"b03c"; + when "00" & x"f02" => DATA <= x"002a"; + when "00" & x"f03" => DATA <= x"6700"; + when "00" & x"f04" => DATA <= x"03b2"; + when "00" & x"f05" => DATA <= x"0200"; + when "00" & x"f06" => DATA <= x"00df"; + when "00" & x"f07" => DATA <= x"b03c"; + when "00" & x"f08" => DATA <= x"0042"; + when "00" & x"f09" => DATA <= x"6700"; + when "00" & x"f0a" => DATA <= x"009e"; + when "00" & x"f0b" => DATA <= x"b03c"; + when "00" & x"f0c" => DATA <= x"0044"; + when "00" & x"f0d" => DATA <= x"6700"; + when "00" & x"f0e" => DATA <= x"0060"; + when "00" & x"f0f" => DATA <= x"b03c"; + when "00" & x"f10" => DATA <= x"0045"; + when "00" & x"f11" => DATA <= x"6700"; + when "00" & x"f12" => DATA <= x"00f2"; + when "00" & x"f13" => DATA <= x"b03c"; + when "00" & x"f14" => DATA <= x"0046"; + when "00" & x"f15" => DATA <= x"6700"; + when "00" & x"f16" => DATA <= x"01a0"; + when "00" & x"f17" => DATA <= x"b03c"; + when "00" & x"f18" => DATA <= x"0047"; + when "00" & x"f19" => DATA <= x"6700"; + when "00" & x"f1a" => DATA <= x"01d2"; + when "00" & x"f1b" => DATA <= x"b03c"; + when "00" & x"f1c" => DATA <= x"0048"; + when "00" & x"f1d" => DATA <= x"6700"; + when "00" & x"f1e" => DATA <= x"01e6"; + when "00" & x"f1f" => DATA <= x"b03c"; + when "00" & x"f20" => DATA <= x"004d"; + when "00" & x"f21" => DATA <= x"6700"; + when "00" & x"f22" => DATA <= x"0292"; + when "00" & x"f23" => DATA <= x"b03c"; + when "00" & x"f24" => DATA <= x"0051"; + when "00" & x"f25" => DATA <= x"6700"; + when "00" & x"f26" => DATA <= x"02c0"; + when "00" & x"f27" => DATA <= x"b03c"; + when "00" & x"f28" => DATA <= x"0052"; + when "00" & x"f29" => DATA <= x"6700"; + when "00" & x"f2a" => DATA <= x"02be"; + when "00" & x"f2b" => DATA <= x"b03c"; + when "00" & x"f2c" => DATA <= x"0053"; + when "00" & x"f2d" => DATA <= x"6700"; + when "00" & x"f2e" => DATA <= x"0012"; + when "00" & x"f2f" => DATA <= x"b03c"; + when "00" & x"f30" => DATA <= x"0054"; + when "00" & x"f31" => DATA <= x"6700"; + when "00" & x"f32" => DATA <= x"000a"; + when "00" & x"f33" => DATA <= x"b03c"; + when "00" & x"f34" => DATA <= x"0056"; + when "00" & x"f35" => DATA <= x"6700"; + when "00" & x"f36" => DATA <= x"0358"; + when "00" & x"f37" => DATA <= x"203c"; + when "00" & x"f38" => DATA <= x"003f"; + when "00" & x"f39" => DATA <= x"2b07"; + when "00" & x"f3a" => DATA <= x"6100"; + when "00" & x"f3b" => DATA <= x"eb8c"; + when "00" & x"f3c" => DATA <= x"6000"; + when "00" & x"f3d" => DATA <= x"ff4e"; + when "00" & x"f3e" => DATA <= x"6100"; + when "00" & x"f3f" => DATA <= x"08a6"; + when "00" & x"f40" => DATA <= x"7010"; + when "00" & x"f41" => DATA <= x"220e"; + when "00" & x"f42" => DATA <= x"6100"; + when "00" & x"f43" => DATA <= x"f14a"; + when "00" & x"f44" => DATA <= x"6900"; + when "00" & x"f45" => DATA <= x"023e"; + when "00" & x"f46" => DATA <= x"2c41"; + when "00" & x"f47" => DATA <= x"2002"; + when "00" & x"f48" => DATA <= x"223c"; + when "00" & x"f49" => DATA <= x"0000"; + when "00" & x"f4a" => DATA <= x"0600"; + when "00" & x"f4b" => DATA <= x"6100"; + when "00" & x"f4c" => DATA <= x"fc78"; + when "00" & x"f4d" => DATA <= x"2001"; when "00" & x"f4e" => DATA <= x"6100"; - when "00" & x"f4f" => DATA <= x"eb74"; - when "00" & x"f50" => DATA <= x"6000"; - when "00" & x"f51" => DATA <= x"ff22"; - when "00" & x"f52" => DATA <= x"707e"; - when "00" & x"f53" => DATA <= x"6100"; - when "00" & x"f54" => DATA <= x"ec2a"; - when "00" & x"f55" => DATA <= x"6000"; - when "00" & x"f56" => DATA <= x"ff18"; - when "00" & x"f57" => DATA <= x"6100"; - when "00" & x"f58" => DATA <= x"0870"; - when "00" & x"f59" => DATA <= x"7010"; - when "00" & x"f5a" => DATA <= x"220e"; - when "00" & x"f5b" => DATA <= x"6100"; - when "00" & x"f5c" => DATA <= x"f114"; - when "00" & x"f5d" => DATA <= x"6900"; - when "00" & x"f5e" => DATA <= x"0208"; - when "00" & x"f5f" => DATA <= x"2842"; - when "00" & x"f60" => DATA <= x"6100"; - when "00" & x"f61" => DATA <= x"086c"; - when "00" & x"f62" => DATA <= x"7010"; - when "00" & x"f63" => DATA <= x"6100"; - when "00" & x"f64" => DATA <= x"f104"; - when "00" & x"f65" => DATA <= x"6900"; - when "00" & x"f66" => DATA <= x"01f8"; - when "00" & x"f67" => DATA <= x"2a42"; - when "00" & x"f68" => DATA <= x"6100"; - when "00" & x"f69" => DATA <= x"085c"; - when "00" & x"f6a" => DATA <= x"7010"; - when "00" & x"f6b" => DATA <= x"6100"; - when "00" & x"f6c" => DATA <= x"f0f4"; - when "00" & x"f6d" => DATA <= x"6900"; - when "00" & x"f6e" => DATA <= x"01e8"; - when "00" & x"f6f" => DATA <= x"2c41"; - when "00" & x"f70" => DATA <= x"1e02"; - when "00" & x"f71" => DATA <= x"be1c"; - when "00" & x"f72" => DATA <= x"6600"; - when "00" & x"f73" => DATA <= x"0024"; - when "00" & x"f74" => DATA <= x"200c"; - when "00" & x"f75" => DATA <= x"223c"; - when "00" & x"f76" => DATA <= x"0000"; - when "00" & x"f77" => DATA <= x"0600"; - when "00" & x"f78" => DATA <= x"243c"; - when "00" & x"f79" => DATA <= x"0000"; - when "00" & x"f7a" => DATA <= x"00ff"; - when "00" & x"f7b" => DATA <= x"6100"; - when "00" & x"f7c" => DATA <= x"f7ee"; - when "00" & x"f7d" => DATA <= x"21fc"; - when "00" & x"f7e" => DATA <= x"2020"; - when "00" & x"f7f" => DATA <= x"0000"; - when "00" & x"f80" => DATA <= x"0608"; - when "00" & x"f81" => DATA <= x"303c"; - when "00" & x"f82" => DATA <= x"0600"; - when "00" & x"f83" => DATA <= x"6100"; - when "00" & x"f84" => DATA <= x"eaf6"; - when "00" & x"f85" => DATA <= x"bbcc"; - when "00" & x"f86" => DATA <= x"64d4"; - when "00" & x"f87" => DATA <= x"6000"; - when "00" & x"f88" => DATA <= x"feb4"; - when "00" & x"f89" => DATA <= x"6100"; - when "00" & x"f8a" => DATA <= x"080c"; - when "00" & x"f8b" => DATA <= x"7010"; - when "00" & x"f8c" => DATA <= x"220e"; - when "00" & x"f8d" => DATA <= x"6100"; - when "00" & x"f8e" => DATA <= x"f0b0"; - when "00" & x"f8f" => DATA <= x"6900"; - when "00" & x"f90" => DATA <= x"01a4"; - when "00" & x"f91" => DATA <= x"2842"; - when "00" & x"f92" => DATA <= x"11fc"; - when "00" & x"f93" => DATA <= x"0020"; - when "00" & x"f94" => DATA <= x"0609"; - when "00" & x"f95" => DATA <= x"11fc"; - when "00" & x"f96" => DATA <= x"0020"; - when "00" & x"f97" => DATA <= x"060d"; - when "00" & x"f98" => DATA <= x"11fc"; - when "00" & x"f99" => DATA <= x"0028"; - when "00" & x"f9a" => DATA <= x"060e"; - when "00" & x"f9b" => DATA <= x"21fc"; - when "00" & x"f9c" => DATA <= x"2920"; - when "00" & x"f9d" => DATA <= x"2000"; - when "00" & x"f9e" => DATA <= x"0610"; - when "00" & x"f9f" => DATA <= x"200c"; - when "00" & x"fa0" => DATA <= x"223c"; - when "00" & x"fa1" => DATA <= x"0000"; - when "00" & x"fa2" => DATA <= x"0600"; - when "00" & x"fa3" => DATA <= x"243c"; - when "00" & x"fa4" => DATA <= x"0000"; - when "00" & x"fa5" => DATA <= x"00ff"; - when "00" & x"fa6" => DATA <= x"6100"; - when "00" & x"fa7" => DATA <= x"f798"; - when "00" & x"fa8" => DATA <= x"11fc"; - when "00" & x"fa9" => DATA <= x"0020"; - when "00" & x"faa" => DATA <= x"0608"; - when "00" & x"fab" => DATA <= x"5441"; - when "00" & x"fac" => DATA <= x"1014"; - when "00" & x"fad" => DATA <= x"243c"; - when "00" & x"fae" => DATA <= x"0000"; - when "00" & x"faf" => DATA <= x"00ff"; - when "00" & x"fb0" => DATA <= x"6100"; - when "00" & x"fb1" => DATA <= x"f72e"; - when "00" & x"fb2" => DATA <= x"2a41"; - when "00" & x"fb3" => DATA <= x"1afc"; - when "00" & x"fb4" => DATA <= x"0020"; - when "00" & x"fb5" => DATA <= x"2c4c"; - when "00" & x"fb6" => DATA <= x"6100"; - when "00" & x"fb7" => DATA <= x"084c"; - when "00" & x"fb8" => DATA <= x"11c0"; - when "00" & x"fb9" => DATA <= x"060f"; - when "00" & x"fba" => DATA <= x"203c"; - when "00" & x"fbb" => DATA <= x"0000"; - when "00" & x"fbc" => DATA <= x"0600"; - when "00" & x"fbd" => DATA <= x"6100"; - when "00" & x"fbe" => DATA <= x"ea82"; - when "00" & x"fbf" => DATA <= x"203c"; - when "00" & x"fc0" => DATA <= x"0000"; - when "00" & x"fc1" => DATA <= x"0680"; - when "00" & x"fc2" => DATA <= x"123c"; - when "00" & x"fc3" => DATA <= x"0002"; - when "00" & x"fc4" => DATA <= x"143c"; - when "00" & x"fc5" => DATA <= x"0020"; - when "00" & x"fc6" => DATA <= x"163c"; - when "00" & x"fc7" => DATA <= x"0046"; - when "00" & x"fc8" => DATA <= x"207c"; - when "00" & x"fc9" => DATA <= x"0000"; - when "00" & x"fca" => DATA <= x"007d"; - when "00" & x"fcb" => DATA <= x"4e4c"; - when "00" & x"fcc" => DATA <= x"6500"; - when "00" & x"fcd" => DATA <= x"0024"; - when "00" & x"fce" => DATA <= x"0c38"; - when "00" & x"fcf" => DATA <= x"000d"; - when "00" & x"fd0" => DATA <= x"0680"; - when "00" & x"fd1" => DATA <= x"6600"; - when "00" & x"fd2" => DATA <= x"0006"; - when "00" & x"fd3" => DATA <= x"524c"; - when "00" & x"fd4" => DATA <= x"6094"; - when "00" & x"fd5" => DATA <= x"2c7c"; - when "00" & x"fd6" => DATA <= x"0000"; - when "00" & x"fd7" => DATA <= x"0680"; - when "00" & x"fd8" => DATA <= x"7010"; - when "00" & x"fd9" => DATA <= x"220e"; - when "00" & x"fda" => DATA <= x"6100"; - when "00" & x"fdb" => DATA <= x"f016"; - when "00" & x"fdc" => DATA <= x"6984"; - when "00" & x"fdd" => DATA <= x"18c2"; - when "00" & x"fde" => DATA <= x"6080"; - when "00" & x"fdf" => DATA <= x"707e"; - when "00" & x"fe0" => DATA <= x"6100"; - when "00" & x"fe1" => DATA <= x"eb10"; - when "00" & x"fe2" => DATA <= x"6000"; - when "00" & x"fe3" => DATA <= x"fdfe"; - when "00" & x"fe4" => DATA <= x"220e"; - when "00" & x"fe5" => DATA <= x"6100"; - when "00" & x"fe6" => DATA <= x"0762"; - when "00" & x"fe7" => DATA <= x"7010"; - when "00" & x"fe8" => DATA <= x"6100"; - when "00" & x"fe9" => DATA <= x"effa"; - when "00" & x"fea" => DATA <= x"6900"; - when "00" & x"feb" => DATA <= x"00ee"; - when "00" & x"fec" => DATA <= x"2842"; - when "00" & x"fed" => DATA <= x"6100"; - when "00" & x"fee" => DATA <= x"0752"; - when "00" & x"fef" => DATA <= x"7010"; - when "00" & x"ff0" => DATA <= x"6100"; - when "00" & x"ff1" => DATA <= x"efea"; - when "00" & x"ff2" => DATA <= x"6900"; - when "00" & x"ff3" => DATA <= x"00de"; - when "00" & x"ff4" => DATA <= x"2a42"; - when "00" & x"ff5" => DATA <= x"6100"; - when "00" & x"ff6" => DATA <= x"0742"; - when "00" & x"ff7" => DATA <= x"7010"; - when "00" & x"ff8" => DATA <= x"6100"; - when "00" & x"ff9" => DATA <= x"efda"; - when "00" & x"ffa" => DATA <= x"6900"; - when "00" & x"ffb" => DATA <= x"00ce"; - when "00" & x"ffc" => DATA <= x"18c2"; - when "00" & x"ffd" => DATA <= x"bbcc"; - when "00" & x"ffe" => DATA <= x"64fa"; - when "00" & x"fff" => DATA <= x"6000"; - when "01" & x"000" => DATA <= x"fdc4"; - when "01" & x"001" => DATA <= x"6100"; - when "01" & x"002" => DATA <= x"071c"; - when "01" & x"003" => DATA <= x"6700"; - when "01" & x"004" => DATA <= x"00bc"; - when "01" & x"005" => DATA <= x"7010"; - when "01" & x"006" => DATA <= x"220e"; - when "01" & x"007" => DATA <= x"6100"; - when "01" & x"008" => DATA <= x"efbc"; - when "01" & x"009" => DATA <= x"6900"; - when "01" & x"00a" => DATA <= x"00b0"; - when "01" & x"00b" => DATA <= x"2c42"; - when "01" & x"00c" => DATA <= x"4e96"; - when "01" & x"00d" => DATA <= x"6000"; - when "01" & x"00e" => DATA <= x"fda8"; - when "01" & x"00f" => DATA <= x"6100"; - when "01" & x"010" => DATA <= x"0700"; - when "01" & x"011" => DATA <= x"0c16"; - when "01" & x"012" => DATA <= x"000d"; - when "01" & x"013" => DATA <= x"6600"; - when "01" & x"014" => DATA <= x"0008"; - when "01" & x"015" => DATA <= x"4282"; - when "01" & x"016" => DATA <= x"6000"; - when "01" & x"017" => DATA <= x"0016"; - when "01" & x"018" => DATA <= x"7010"; - when "01" & x"019" => DATA <= x"220e"; - when "01" & x"01a" => DATA <= x"6100"; - when "01" & x"01b" => DATA <= x"ef96"; - when "01" & x"01c" => DATA <= x"6900"; - when "01" & x"01d" => DATA <= x"008a"; - when "01" & x"01e" => DATA <= x"6100"; - when "01" & x"01f" => DATA <= x"06f0"; - when "01" & x"020" => DATA <= x"6600"; - when "01" & x"021" => DATA <= x"0082"; - when "01" & x"022" => DATA <= x"0282"; - when "01" & x"023" => DATA <= x"ffff"; - when "01" & x"024" => DATA <= x"fffc"; - when "01" & x"025" => DATA <= x"2c42"; - when "01" & x"026" => DATA <= x"103c"; - when "01" & x"027" => DATA <= x"000e"; - when "01" & x"028" => DATA <= x"6100"; - when "01" & x"029" => DATA <= x"e994"; - when "01" & x"02a" => DATA <= x"200e"; - when "01" & x"02b" => DATA <= x"223c"; - when "01" & x"02c" => DATA <= x"0000"; - when "01" & x"02d" => DATA <= x"0600"; - when "01" & x"02e" => DATA <= x"243c"; - when "01" & x"02f" => DATA <= x"0000"; - when "01" & x"030" => DATA <= x"00ff"; - when "01" & x"031" => DATA <= x"6100"; - when "01" & x"032" => DATA <= x"f682"; - when "01" & x"033" => DATA <= x"31fc"; - when "01" & x"034" => DATA <= x"2020"; - when "01" & x"035" => DATA <= x"0608"; - when "01" & x"036" => DATA <= x"5441"; - when "01" & x"037" => DATA <= x"760f"; - when "01" & x"038" => DATA <= x"287c"; - when "01" & x"039" => DATA <= x"0000"; - when "01" & x"03a" => DATA <= x"063b"; - when "01" & x"03b" => DATA <= x"11fc"; - when "01" & x"03c" => DATA <= x"0020"; - when "01" & x"03d" => DATA <= x"063a"; - when "01" & x"03e" => DATA <= x"11fc"; - when "01" & x"03f" => DATA <= x"0000"; - when "01" & x"040" => DATA <= x"064b"; - when "01" & x"041" => DATA <= x"1016"; - when "01" & x"042" => DATA <= x"243c"; - when "01" & x"043" => DATA <= x"0000"; - when "01" & x"044" => DATA <= x"00ff"; - when "01" & x"045" => DATA <= x"6100"; - when "01" & x"046" => DATA <= x"f604"; - when "01" & x"047" => DATA <= x"2a41"; - when "01" & x"048" => DATA <= x"1abc"; - when "01" & x"049" => DATA <= x"0020"; - when "01" & x"04a" => DATA <= x"5241"; - when "01" & x"04b" => DATA <= x"6100"; - when "01" & x"04c" => DATA <= x"0722"; - when "01" & x"04d" => DATA <= x"18c0"; - when "01" & x"04e" => DATA <= x"51cb"; - when "01" & x"04f" => DATA <= x"ffe4"; - when "01" & x"050" => DATA <= x"303c"; - when "01" & x"051" => DATA <= x"0600"; - when "01" & x"052" => DATA <= x"6100"; - when "01" & x"053" => DATA <= x"e958"; + when "00" & x"f4f" => DATA <= x"eb64"; + when "00" & x"f50" => DATA <= x"6100"; + when "00" & x"f51" => DATA <= x"eb74"; + when "00" & x"f52" => DATA <= x"6000"; + when "00" & x"f53" => DATA <= x"ff22"; + when "00" & x"f54" => DATA <= x"707e"; + when "00" & x"f55" => DATA <= x"6100"; + when "00" & x"f56" => DATA <= x"ec2a"; + when "00" & x"f57" => DATA <= x"6000"; + when "00" & x"f58" => DATA <= x"ff18"; + when "00" & x"f59" => DATA <= x"6100"; + when "00" & x"f5a" => DATA <= x"0870"; + when "00" & x"f5b" => DATA <= x"7010"; + when "00" & x"f5c" => DATA <= x"220e"; + when "00" & x"f5d" => DATA <= x"6100"; + when "00" & x"f5e" => DATA <= x"f114"; + when "00" & x"f5f" => DATA <= x"6900"; + when "00" & x"f60" => DATA <= x"0208"; + when "00" & x"f61" => DATA <= x"2842"; + when "00" & x"f62" => DATA <= x"6100"; + when "00" & x"f63" => DATA <= x"086c"; + when "00" & x"f64" => DATA <= x"7010"; + when "00" & x"f65" => DATA <= x"6100"; + when "00" & x"f66" => DATA <= x"f104"; + when "00" & x"f67" => DATA <= x"6900"; + when "00" & x"f68" => DATA <= x"01f8"; + when "00" & x"f69" => DATA <= x"2a42"; + when "00" & x"f6a" => DATA <= x"6100"; + when "00" & x"f6b" => DATA <= x"085c"; + when "00" & x"f6c" => DATA <= x"7010"; + when "00" & x"f6d" => DATA <= x"6100"; + when "00" & x"f6e" => DATA <= x"f0f4"; + when "00" & x"f6f" => DATA <= x"6900"; + when "00" & x"f70" => DATA <= x"01e8"; + when "00" & x"f71" => DATA <= x"2c41"; + when "00" & x"f72" => DATA <= x"1e02"; + when "00" & x"f73" => DATA <= x"be1c"; + when "00" & x"f74" => DATA <= x"6600"; + when "00" & x"f75" => DATA <= x"0024"; + when "00" & x"f76" => DATA <= x"200c"; + when "00" & x"f77" => DATA <= x"223c"; + when "00" & x"f78" => DATA <= x"0000"; + when "00" & x"f79" => DATA <= x"0600"; + when "00" & x"f7a" => DATA <= x"243c"; + when "00" & x"f7b" => DATA <= x"0000"; + when "00" & x"f7c" => DATA <= x"00ff"; + when "00" & x"f7d" => DATA <= x"6100"; + when "00" & x"f7e" => DATA <= x"f7ee"; + when "00" & x"f7f" => DATA <= x"21fc"; + when "00" & x"f80" => DATA <= x"2020"; + when "00" & x"f81" => DATA <= x"0000"; + when "00" & x"f82" => DATA <= x"0608"; + when "00" & x"f83" => DATA <= x"303c"; + when "00" & x"f84" => DATA <= x"0600"; + when "00" & x"f85" => DATA <= x"6100"; + when "00" & x"f86" => DATA <= x"eaf6"; + when "00" & x"f87" => DATA <= x"bbcc"; + when "00" & x"f88" => DATA <= x"64d4"; + when "00" & x"f89" => DATA <= x"6000"; + when "00" & x"f8a" => DATA <= x"feb4"; + when "00" & x"f8b" => DATA <= x"6100"; + when "00" & x"f8c" => DATA <= x"080c"; + when "00" & x"f8d" => DATA <= x"7010"; + when "00" & x"f8e" => DATA <= x"220e"; + when "00" & x"f8f" => DATA <= x"6100"; + when "00" & x"f90" => DATA <= x"f0b0"; + when "00" & x"f91" => DATA <= x"6900"; + when "00" & x"f92" => DATA <= x"01a4"; + when "00" & x"f93" => DATA <= x"2842"; + when "00" & x"f94" => DATA <= x"11fc"; + when "00" & x"f95" => DATA <= x"0020"; + when "00" & x"f96" => DATA <= x"0609"; + when "00" & x"f97" => DATA <= x"11fc"; + when "00" & x"f98" => DATA <= x"0020"; + when "00" & x"f99" => DATA <= x"060d"; + when "00" & x"f9a" => DATA <= x"11fc"; + when "00" & x"f9b" => DATA <= x"0028"; + when "00" & x"f9c" => DATA <= x"060e"; + when "00" & x"f9d" => DATA <= x"21fc"; + when "00" & x"f9e" => DATA <= x"2920"; + when "00" & x"f9f" => DATA <= x"2000"; + when "00" & x"fa0" => DATA <= x"0610"; + when "00" & x"fa1" => DATA <= x"200c"; + when "00" & x"fa2" => DATA <= x"223c"; + when "00" & x"fa3" => DATA <= x"0000"; + when "00" & x"fa4" => DATA <= x"0600"; + when "00" & x"fa5" => DATA <= x"243c"; + when "00" & x"fa6" => DATA <= x"0000"; + when "00" & x"fa7" => DATA <= x"00ff"; + when "00" & x"fa8" => DATA <= x"6100"; + when "00" & x"fa9" => DATA <= x"f798"; + when "00" & x"faa" => DATA <= x"11fc"; + when "00" & x"fab" => DATA <= x"0020"; + when "00" & x"fac" => DATA <= x"0608"; + when "00" & x"fad" => DATA <= x"5441"; + when "00" & x"fae" => DATA <= x"1014"; + when "00" & x"faf" => DATA <= x"243c"; + when "00" & x"fb0" => DATA <= x"0000"; + when "00" & x"fb1" => DATA <= x"00ff"; + when "00" & x"fb2" => DATA <= x"6100"; + when "00" & x"fb3" => DATA <= x"f72e"; + when "00" & x"fb4" => DATA <= x"2a41"; + when "00" & x"fb5" => DATA <= x"1afc"; + when "00" & x"fb6" => DATA <= x"0020"; + when "00" & x"fb7" => DATA <= x"2c4c"; + when "00" & x"fb8" => DATA <= x"6100"; + when "00" & x"fb9" => DATA <= x"084c"; + when "00" & x"fba" => DATA <= x"11c0"; + when "00" & x"fbb" => DATA <= x"060f"; + when "00" & x"fbc" => DATA <= x"203c"; + when "00" & x"fbd" => DATA <= x"0000"; + when "00" & x"fbe" => DATA <= x"0600"; + when "00" & x"fbf" => DATA <= x"6100"; + when "00" & x"fc0" => DATA <= x"ea82"; + when "00" & x"fc1" => DATA <= x"203c"; + when "00" & x"fc2" => DATA <= x"0000"; + when "00" & x"fc3" => DATA <= x"0680"; + when "00" & x"fc4" => DATA <= x"123c"; + when "00" & x"fc5" => DATA <= x"0002"; + when "00" & x"fc6" => DATA <= x"143c"; + when "00" & x"fc7" => DATA <= x"0020"; + when "00" & x"fc8" => DATA <= x"163c"; + when "00" & x"fc9" => DATA <= x"0046"; + when "00" & x"fca" => DATA <= x"207c"; + when "00" & x"fcb" => DATA <= x"0000"; + when "00" & x"fcc" => DATA <= x"007d"; + when "00" & x"fcd" => DATA <= x"4e4c"; + when "00" & x"fce" => DATA <= x"6500"; + when "00" & x"fcf" => DATA <= x"0024"; + when "00" & x"fd0" => DATA <= x"0c38"; + when "00" & x"fd1" => DATA <= x"000d"; + when "00" & x"fd2" => DATA <= x"0680"; + when "00" & x"fd3" => DATA <= x"6600"; + when "00" & x"fd4" => DATA <= x"0006"; + when "00" & x"fd5" => DATA <= x"524c"; + when "00" & x"fd6" => DATA <= x"6094"; + when "00" & x"fd7" => DATA <= x"2c7c"; + when "00" & x"fd8" => DATA <= x"0000"; + when "00" & x"fd9" => DATA <= x"0680"; + when "00" & x"fda" => DATA <= x"7010"; + when "00" & x"fdb" => DATA <= x"220e"; + when "00" & x"fdc" => DATA <= x"6100"; + when "00" & x"fdd" => DATA <= x"f016"; + when "00" & x"fde" => DATA <= x"6984"; + when "00" & x"fdf" => DATA <= x"18c2"; + when "00" & x"fe0" => DATA <= x"6080"; + when "00" & x"fe1" => DATA <= x"707e"; + when "00" & x"fe2" => DATA <= x"6100"; + when "00" & x"fe3" => DATA <= x"eb10"; + when "00" & x"fe4" => DATA <= x"6000"; + when "00" & x"fe5" => DATA <= x"fdfe"; + when "00" & x"fe6" => DATA <= x"220e"; + when "00" & x"fe7" => DATA <= x"6100"; + when "00" & x"fe8" => DATA <= x"0762"; + when "00" & x"fe9" => DATA <= x"7010"; + when "00" & x"fea" => DATA <= x"6100"; + when "00" & x"feb" => DATA <= x"effa"; + when "00" & x"fec" => DATA <= x"6900"; + when "00" & x"fed" => DATA <= x"00ee"; + when "00" & x"fee" => DATA <= x"2842"; + when "00" & x"fef" => DATA <= x"6100"; + when "00" & x"ff0" => DATA <= x"0752"; + when "00" & x"ff1" => DATA <= x"7010"; + when "00" & x"ff2" => DATA <= x"6100"; + when "00" & x"ff3" => DATA <= x"efea"; + when "00" & x"ff4" => DATA <= x"6900"; + when "00" & x"ff5" => DATA <= x"00de"; + when "00" & x"ff6" => DATA <= x"2a42"; + when "00" & x"ff7" => DATA <= x"6100"; + when "00" & x"ff8" => DATA <= x"0742"; + when "00" & x"ff9" => DATA <= x"7010"; + when "00" & x"ffa" => DATA <= x"6100"; + when "00" & x"ffb" => DATA <= x"efda"; + when "00" & x"ffc" => DATA <= x"6900"; + when "00" & x"ffd" => DATA <= x"00ce"; + when "00" & x"ffe" => DATA <= x"18c2"; + when "00" & x"fff" => DATA <= x"bbcc"; + when "01" & x"000" => DATA <= x"64fa"; + when "01" & x"001" => DATA <= x"6000"; + when "01" & x"002" => DATA <= x"fdc4"; + when "01" & x"003" => DATA <= x"6100"; + when "01" & x"004" => DATA <= x"071c"; + when "01" & x"005" => DATA <= x"6700"; + when "01" & x"006" => DATA <= x"00bc"; + when "01" & x"007" => DATA <= x"7010"; + when "01" & x"008" => DATA <= x"220e"; + when "01" & x"009" => DATA <= x"6100"; + when "01" & x"00a" => DATA <= x"efbc"; + when "01" & x"00b" => DATA <= x"6900"; + when "01" & x"00c" => DATA <= x"00b0"; + when "01" & x"00d" => DATA <= x"2c42"; + when "01" & x"00e" => DATA <= x"4e96"; + when "01" & x"00f" => DATA <= x"6000"; + when "01" & x"010" => DATA <= x"fda8"; + when "01" & x"011" => DATA <= x"6100"; + when "01" & x"012" => DATA <= x"0700"; + when "01" & x"013" => DATA <= x"0c16"; + when "01" & x"014" => DATA <= x"000d"; + when "01" & x"015" => DATA <= x"6600"; + when "01" & x"016" => DATA <= x"0008"; + when "01" & x"017" => DATA <= x"4282"; + when "01" & x"018" => DATA <= x"6000"; + when "01" & x"019" => DATA <= x"0016"; + when "01" & x"01a" => DATA <= x"7010"; + when "01" & x"01b" => DATA <= x"220e"; + when "01" & x"01c" => DATA <= x"6100"; + when "01" & x"01d" => DATA <= x"ef96"; + when "01" & x"01e" => DATA <= x"6900"; + when "01" & x"01f" => DATA <= x"008a"; + when "01" & x"020" => DATA <= x"6100"; + when "01" & x"021" => DATA <= x"06f0"; + when "01" & x"022" => DATA <= x"6600"; + when "01" & x"023" => DATA <= x"0082"; + when "01" & x"024" => DATA <= x"0282"; + when "01" & x"025" => DATA <= x"ffff"; + when "01" & x"026" => DATA <= x"fffc"; + when "01" & x"027" => DATA <= x"2c42"; + when "01" & x"028" => DATA <= x"103c"; + when "01" & x"029" => DATA <= x"000e"; + when "01" & x"02a" => DATA <= x"6100"; + when "01" & x"02b" => DATA <= x"e994"; + when "01" & x"02c" => DATA <= x"200e"; + when "01" & x"02d" => DATA <= x"223c"; + when "01" & x"02e" => DATA <= x"0000"; + when "01" & x"02f" => DATA <= x"0600"; + when "01" & x"030" => DATA <= x"243c"; + when "01" & x"031" => DATA <= x"0000"; + when "01" & x"032" => DATA <= x"00ff"; + when "01" & x"033" => DATA <= x"6100"; + when "01" & x"034" => DATA <= x"f682"; + when "01" & x"035" => DATA <= x"31fc"; + when "01" & x"036" => DATA <= x"2020"; + when "01" & x"037" => DATA <= x"0608"; + when "01" & x"038" => DATA <= x"5441"; + when "01" & x"039" => DATA <= x"760f"; + when "01" & x"03a" => DATA <= x"287c"; + when "01" & x"03b" => DATA <= x"0000"; + when "01" & x"03c" => DATA <= x"063b"; + when "01" & x"03d" => DATA <= x"11fc"; + when "01" & x"03e" => DATA <= x"0020"; + when "01" & x"03f" => DATA <= x"063a"; + when "01" & x"040" => DATA <= x"11fc"; + when "01" & x"041" => DATA <= x"0000"; + when "01" & x"042" => DATA <= x"064b"; + when "01" & x"043" => DATA <= x"1016"; + when "01" & x"044" => DATA <= x"243c"; + when "01" & x"045" => DATA <= x"0000"; + when "01" & x"046" => DATA <= x"00ff"; + when "01" & x"047" => DATA <= x"6100"; + when "01" & x"048" => DATA <= x"f604"; + when "01" & x"049" => DATA <= x"2a41"; + when "01" & x"04a" => DATA <= x"1abc"; + when "01" & x"04b" => DATA <= x"0020"; + when "01" & x"04c" => DATA <= x"5241"; + when "01" & x"04d" => DATA <= x"6100"; + when "01" & x"04e" => DATA <= x"0722"; + when "01" & x"04f" => DATA <= x"18c0"; + when "01" & x"050" => DATA <= x"51cb"; + when "01" & x"051" => DATA <= x"ffe4"; + when "01" & x"052" => DATA <= x"303c"; + when "01" & x"053" => DATA <= x"0600"; when "01" & x"054" => DATA <= x"6100"; - when "01" & x"055" => DATA <= x"e968"; + when "01" & x"055" => DATA <= x"e958"; when "01" & x"056" => DATA <= x"6100"; - when "01" & x"057" => DATA <= x"f078"; - when "01" & x"058" => DATA <= x"64a2"; - when "01" & x"059" => DATA <= x"707e"; - when "01" & x"05a" => DATA <= x"6100"; - when "01" & x"05b" => DATA <= x"ea1c"; - when "01" & x"05c" => DATA <= x"103c"; - when "01" & x"05d" => DATA <= x"000f"; - when "01" & x"05e" => DATA <= x"6100"; - when "01" & x"05f" => DATA <= x"e928"; - when "01" & x"060" => DATA <= x"6000"; - when "01" & x"061" => DATA <= x"fd02"; - when "01" & x"062" => DATA <= x"203c"; - when "01" & x"063" => DATA <= x"003f"; - when "01" & x"064" => DATA <= x"29ae"; - when "01" & x"065" => DATA <= x"6100"; - when "01" & x"066" => DATA <= x"e932"; - when "01" & x"067" => DATA <= x"6000"; - when "01" & x"068" => DATA <= x"fcf4"; - when "01" & x"069" => DATA <= x"6100"; - when "01" & x"06a" => DATA <= x"064c"; - when "01" & x"06b" => DATA <= x"7010"; - when "01" & x"06c" => DATA <= x"220e"; - when "01" & x"06d" => DATA <= x"6100"; - when "01" & x"06e" => DATA <= x"eef0"; - when "01" & x"06f" => DATA <= x"69e4"; - when "01" & x"070" => DATA <= x"2842"; - when "01" & x"071" => DATA <= x"6100"; - when "01" & x"072" => DATA <= x"064a"; - when "01" & x"073" => DATA <= x"7010"; - when "01" & x"074" => DATA <= x"6100"; - when "01" & x"075" => DATA <= x"eee2"; - when "01" & x"076" => DATA <= x"69d6"; - when "01" & x"077" => DATA <= x"2a42"; - when "01" & x"078" => DATA <= x"6100"; - when "01" & x"079" => DATA <= x"063c"; - when "01" & x"07a" => DATA <= x"7010"; - when "01" & x"07b" => DATA <= x"6100"; - when "01" & x"07c" => DATA <= x"eed4"; - when "01" & x"07d" => DATA <= x"69c8"; - when "01" & x"07e" => DATA <= x"5382"; - when "01" & x"07f" => DATA <= x"1adc"; - when "01" & x"080" => DATA <= x"51ca"; - when "01" & x"081" => DATA <= x"fffc"; - when "01" & x"082" => DATA <= x"6000"; - when "01" & x"083" => DATA <= x"fcbe"; - when "01" & x"084" => DATA <= x"6100"; - when "01" & x"085" => DATA <= x"e908"; - when "01" & x"086" => DATA <= x"4e75"; - when "01" & x"087" => DATA <= x"6100"; - when "01" & x"088" => DATA <= x"0610"; - when "01" & x"089" => DATA <= x"2f0d"; - when "01" & x"08a" => DATA <= x"2f02"; - when "01" & x"08b" => DATA <= x"2f01"; - when "01" & x"08c" => DATA <= x"2f00"; - when "01" & x"08d" => DATA <= x"4280"; - when "01" & x"08e" => DATA <= x"101e"; - when "01" & x"08f" => DATA <= x"0200"; - when "01" & x"090" => DATA <= x"00df"; - when "01" & x"091" => DATA <= x"0c00"; - when "01" & x"092" => DATA <= x"0041"; - when "01" & x"093" => DATA <= x"6700"; - when "01" & x"094" => DATA <= x"0008"; - when "01" & x"095" => DATA <= x"0c00"; - when "01" & x"096" => DATA <= x"0044"; - when "01" & x"097" => DATA <= x"6694"; - when "01" & x"098" => DATA <= x"0200"; - when "01" & x"099" => DATA <= x"00be"; - when "01" & x"09a" => DATA <= x"e380"; - when "01" & x"09b" => DATA <= x"1400"; - when "01" & x"09c" => DATA <= x"101e"; - when "01" & x"09d" => DATA <= x"0c00"; - when "01" & x"09e" => DATA <= x"0030"; - when "01" & x"09f" => DATA <= x"6584"; - when "01" & x"0a0" => DATA <= x"0c00"; - when "01" & x"0a1" => DATA <= x"0037"; - when "01" & x"0a2" => DATA <= x"6200"; - when "01" & x"0a3" => DATA <= x"ff7e"; - when "01" & x"0a4" => DATA <= x"0400"; - when "01" & x"0a5" => DATA <= x"0030"; - when "01" & x"0a6" => DATA <= x"d002"; - when "01" & x"0a7" => DATA <= x"e580"; - when "01" & x"0a8" => DATA <= x"2a7c"; - when "01" & x"0a9" => DATA <= x"003f"; - when "01" & x"0aa" => DATA <= x"2176"; - when "01" & x"0ab" => DATA <= x"dbc0"; - when "01" & x"0ac" => DATA <= x"6100"; - when "01" & x"0ad" => DATA <= x"05c6"; - when "01" & x"0ae" => DATA <= x"7010"; - when "01" & x"0af" => DATA <= x"220e"; - when "01" & x"0b0" => DATA <= x"6100"; - when "01" & x"0b1" => DATA <= x"ee6a"; - when "01" & x"0b2" => DATA <= x"6900"; - when "01" & x"0b3" => DATA <= x"ff5e"; - when "01" & x"0b4" => DATA <= x"4ed5"; - when "01" & x"0b5" => DATA <= x"201f"; - when "01" & x"0b6" => DATA <= x"221f"; - when "01" & x"0b7" => DATA <= x"241f"; - when "01" & x"0b8" => DATA <= x"2a5f"; - when "01" & x"0b9" => DATA <= x"6000"; - when "01" & x"0ba" => DATA <= x"fc50"; - when "01" & x"0bb" => DATA <= x"2042"; - when "01" & x"0bc" => DATA <= x"60f0"; - when "01" & x"0bd" => DATA <= x"2242"; - when "01" & x"0be" => DATA <= x"60ec"; - when "01" & x"0bf" => DATA <= x"2442"; - when "01" & x"0c0" => DATA <= x"60e8"; - when "01" & x"0c1" => DATA <= x"2642"; - when "01" & x"0c2" => DATA <= x"60e4"; - when "01" & x"0c3" => DATA <= x"2842"; - when "01" & x"0c4" => DATA <= x"60e0"; - when "01" & x"0c5" => DATA <= x"2a42"; - when "01" & x"0c6" => DATA <= x"60dc"; - when "01" & x"0c7" => DATA <= x"2c42"; - when "01" & x"0c8" => DATA <= x"60d8"; - when "01" & x"0c9" => DATA <= x"2e42"; - when "01" & x"0ca" => DATA <= x"60d4"; - when "01" & x"0cb" => DATA <= x"2002"; - when "01" & x"0cc" => DATA <= x"60d0"; - when "01" & x"0cd" => DATA <= x"2202"; - when "01" & x"0ce" => DATA <= x"60cc"; - when "01" & x"0cf" => DATA <= x"4e71"; - when "01" & x"0d0" => DATA <= x"60c8"; - when "01" & x"0d1" => DATA <= x"2602"; - when "01" & x"0d2" => DATA <= x"60c4"; - when "01" & x"0d3" => DATA <= x"2802"; - when "01" & x"0d4" => DATA <= x"60c0"; - when "01" & x"0d5" => DATA <= x"2a02"; - when "01" & x"0d6" => DATA <= x"60bc"; - when "01" & x"0d7" => DATA <= x"2c02"; - when "01" & x"0d8" => DATA <= x"60b8"; - when "01" & x"0d9" => DATA <= x"2e02"; - when "01" & x"0da" => DATA <= x"60b4"; - when "01" & x"0db" => DATA <= x"200e"; - when "01" & x"0dc" => DATA <= x"6100"; - when "01" & x"0dd" => DATA <= x"e876"; - when "01" & x"0de" => DATA <= x"6000"; - when "01" & x"0df" => DATA <= x"fc06"; - when "01" & x"0e0" => DATA <= x"103c"; - when "01" & x"0e1" => DATA <= x"0020"; - when "01" & x"0e2" => DATA <= x"323c"; - when "01" & x"0e3" => DATA <= x"0032"; - when "01" & x"0e4" => DATA <= x"6100"; - when "01" & x"0e5" => DATA <= x"e81c"; - when "01" & x"0e6" => DATA <= x"51c9"; - when "01" & x"0e7" => DATA <= x"fffa"; - when "01" & x"0e8" => DATA <= x"203c"; - when "01" & x"0e9" => DATA <= x"003f"; - when "01" & x"0ea" => DATA <= x"2b26"; - when "01" & x"0eb" => DATA <= x"6100"; - when "01" & x"0ec" => DATA <= x"e826"; + when "01" & x"057" => DATA <= x"e968"; + when "01" & x"058" => DATA <= x"6100"; + when "01" & x"059" => DATA <= x"f078"; + when "01" & x"05a" => DATA <= x"64a2"; + when "01" & x"05b" => DATA <= x"707e"; + when "01" & x"05c" => DATA <= x"6100"; + when "01" & x"05d" => DATA <= x"ea1c"; + when "01" & x"05e" => DATA <= x"103c"; + when "01" & x"05f" => DATA <= x"000f"; + when "01" & x"060" => DATA <= x"6100"; + when "01" & x"061" => DATA <= x"e928"; + when "01" & x"062" => DATA <= x"6000"; + when "01" & x"063" => DATA <= x"fd02"; + when "01" & x"064" => DATA <= x"203c"; + when "01" & x"065" => DATA <= x"003f"; + when "01" & x"066" => DATA <= x"29b2"; + when "01" & x"067" => DATA <= x"6100"; + when "01" & x"068" => DATA <= x"e932"; + when "01" & x"069" => DATA <= x"6000"; + when "01" & x"06a" => DATA <= x"fcf4"; + when "01" & x"06b" => DATA <= x"6100"; + when "01" & x"06c" => DATA <= x"064c"; + when "01" & x"06d" => DATA <= x"7010"; + when "01" & x"06e" => DATA <= x"220e"; + when "01" & x"06f" => DATA <= x"6100"; + when "01" & x"070" => DATA <= x"eef0"; + when "01" & x"071" => DATA <= x"69e4"; + when "01" & x"072" => DATA <= x"2842"; + when "01" & x"073" => DATA <= x"6100"; + when "01" & x"074" => DATA <= x"064a"; + when "01" & x"075" => DATA <= x"7010"; + when "01" & x"076" => DATA <= x"6100"; + when "01" & x"077" => DATA <= x"eee2"; + when "01" & x"078" => DATA <= x"69d6"; + when "01" & x"079" => DATA <= x"2a42"; + when "01" & x"07a" => DATA <= x"6100"; + when "01" & x"07b" => DATA <= x"063c"; + when "01" & x"07c" => DATA <= x"7010"; + when "01" & x"07d" => DATA <= x"6100"; + when "01" & x"07e" => DATA <= x"eed4"; + when "01" & x"07f" => DATA <= x"69c8"; + when "01" & x"080" => DATA <= x"5382"; + when "01" & x"081" => DATA <= x"1adc"; + when "01" & x"082" => DATA <= x"51ca"; + when "01" & x"083" => DATA <= x"fffc"; + when "01" & x"084" => DATA <= x"6000"; + when "01" & x"085" => DATA <= x"fcbe"; + when "01" & x"086" => DATA <= x"6100"; + when "01" & x"087" => DATA <= x"e908"; + when "01" & x"088" => DATA <= x"4e75"; + when "01" & x"089" => DATA <= x"6100"; + when "01" & x"08a" => DATA <= x"0610"; + when "01" & x"08b" => DATA <= x"2f0d"; + when "01" & x"08c" => DATA <= x"2f02"; + when "01" & x"08d" => DATA <= x"2f01"; + when "01" & x"08e" => DATA <= x"2f00"; + when "01" & x"08f" => DATA <= x"4280"; + when "01" & x"090" => DATA <= x"101e"; + when "01" & x"091" => DATA <= x"0200"; + when "01" & x"092" => DATA <= x"00df"; + when "01" & x"093" => DATA <= x"0c00"; + when "01" & x"094" => DATA <= x"0041"; + when "01" & x"095" => DATA <= x"6700"; + when "01" & x"096" => DATA <= x"0008"; + when "01" & x"097" => DATA <= x"0c00"; + when "01" & x"098" => DATA <= x"0044"; + when "01" & x"099" => DATA <= x"6694"; + when "01" & x"09a" => DATA <= x"0200"; + when "01" & x"09b" => DATA <= x"00be"; + when "01" & x"09c" => DATA <= x"e380"; + when "01" & x"09d" => DATA <= x"1400"; + when "01" & x"09e" => DATA <= x"101e"; + when "01" & x"09f" => DATA <= x"0c00"; + when "01" & x"0a0" => DATA <= x"0030"; + when "01" & x"0a1" => DATA <= x"6584"; + when "01" & x"0a2" => DATA <= x"0c00"; + when "01" & x"0a3" => DATA <= x"0037"; + when "01" & x"0a4" => DATA <= x"6200"; + when "01" & x"0a5" => DATA <= x"ff7e"; + when "01" & x"0a6" => DATA <= x"0400"; + when "01" & x"0a7" => DATA <= x"0030"; + when "01" & x"0a8" => DATA <= x"d002"; + when "01" & x"0a9" => DATA <= x"e580"; + when "01" & x"0aa" => DATA <= x"2a7c"; + when "01" & x"0ab" => DATA <= x"003f"; + when "01" & x"0ac" => DATA <= x"217a"; + when "01" & x"0ad" => DATA <= x"dbc0"; + when "01" & x"0ae" => DATA <= x"6100"; + when "01" & x"0af" => DATA <= x"05c6"; + when "01" & x"0b0" => DATA <= x"7010"; + when "01" & x"0b1" => DATA <= x"220e"; + when "01" & x"0b2" => DATA <= x"6100"; + when "01" & x"0b3" => DATA <= x"ee6a"; + when "01" & x"0b4" => DATA <= x"6900"; + when "01" & x"0b5" => DATA <= x"ff5e"; + when "01" & x"0b6" => DATA <= x"4ed5"; + when "01" & x"0b7" => DATA <= x"201f"; + when "01" & x"0b8" => DATA <= x"221f"; + when "01" & x"0b9" => DATA <= x"241f"; + when "01" & x"0ba" => DATA <= x"2a5f"; + when "01" & x"0bb" => DATA <= x"6000"; + when "01" & x"0bc" => DATA <= x"fc50"; + when "01" & x"0bd" => DATA <= x"2042"; + when "01" & x"0be" => DATA <= x"60f0"; + when "01" & x"0bf" => DATA <= x"2242"; + when "01" & x"0c0" => DATA <= x"60ec"; + when "01" & x"0c1" => DATA <= x"2442"; + when "01" & x"0c2" => DATA <= x"60e8"; + when "01" & x"0c3" => DATA <= x"2642"; + when "01" & x"0c4" => DATA <= x"60e4"; + when "01" & x"0c5" => DATA <= x"2842"; + when "01" & x"0c6" => DATA <= x"60e0"; + when "01" & x"0c7" => DATA <= x"2a42"; + when "01" & x"0c8" => DATA <= x"60dc"; + when "01" & x"0c9" => DATA <= x"2c42"; + when "01" & x"0ca" => DATA <= x"60d8"; + when "01" & x"0cb" => DATA <= x"2e42"; + when "01" & x"0cc" => DATA <= x"60d4"; + when "01" & x"0cd" => DATA <= x"2002"; + when "01" & x"0ce" => DATA <= x"60d0"; + when "01" & x"0cf" => DATA <= x"2202"; + when "01" & x"0d0" => DATA <= x"60cc"; + when "01" & x"0d1" => DATA <= x"4e71"; + when "01" & x"0d2" => DATA <= x"60c8"; + when "01" & x"0d3" => DATA <= x"2602"; + when "01" & x"0d4" => DATA <= x"60c4"; + when "01" & x"0d5" => DATA <= x"2802"; + when "01" & x"0d6" => DATA <= x"60c0"; + when "01" & x"0d7" => DATA <= x"2a02"; + when "01" & x"0d8" => DATA <= x"60bc"; + when "01" & x"0d9" => DATA <= x"2c02"; + when "01" & x"0da" => DATA <= x"60b8"; + when "01" & x"0db" => DATA <= x"2e02"; + when "01" & x"0dc" => DATA <= x"60b4"; + when "01" & x"0dd" => DATA <= x"200e"; + when "01" & x"0de" => DATA <= x"6100"; + when "01" & x"0df" => DATA <= x"e876"; + when "01" & x"0e0" => DATA <= x"6000"; + when "01" & x"0e1" => DATA <= x"fc06"; + when "01" & x"0e2" => DATA <= x"103c"; + when "01" & x"0e3" => DATA <= x"0020"; + when "01" & x"0e4" => DATA <= x"323c"; + when "01" & x"0e5" => DATA <= x"0032"; + when "01" & x"0e6" => DATA <= x"6100"; + when "01" & x"0e7" => DATA <= x"e81c"; + when "01" & x"0e8" => DATA <= x"51c9"; + when "01" & x"0e9" => DATA <= x"fffa"; + when "01" & x"0ea" => DATA <= x"203c"; + when "01" & x"0eb" => DATA <= x"003f"; + when "01" & x"0ec" => DATA <= x"2b2a"; when "01" & x"0ed" => DATA <= x"6100"; - when "01" & x"0ee" => DATA <= x"e836"; - when "01" & x"0ef" => DATA <= x"21fc"; - when "01" & x"0f0" => DATA <= x"4430"; - when "01" & x"0f1" => DATA <= x"3a00"; - when "01" & x"0f2" => DATA <= x"0600"; - when "01" & x"0f3" => DATA <= x"223c"; - when "01" & x"0f4" => DATA <= x"0000"; - when "01" & x"0f5" => DATA <= x"0603"; - when "01" & x"0f6" => DATA <= x"243c"; - when "01" & x"0f7" => DATA <= x"0000"; - when "01" & x"0f8" => DATA <= x"00fc"; - when "01" & x"0f9" => DATA <= x"6100"; - when "01" & x"0fa" => DATA <= x"f4f2"; - when "01" & x"0fb" => DATA <= x"11fc"; - when "01" & x"0fc" => DATA <= x"0020"; - when "01" & x"0fd" => DATA <= x"060b"; - when "01" & x"0fe" => DATA <= x"21fc"; - when "01" & x"0ff" => DATA <= x"4431"; - when "01" & x"100" => DATA <= x"3a00"; - when "01" & x"101" => DATA <= x"060c"; - when "01" & x"102" => DATA <= x"2001"; - when "01" & x"103" => DATA <= x"223c"; - when "01" & x"104" => DATA <= x"0000"; - when "01" & x"105" => DATA <= x"060f"; - when "01" & x"106" => DATA <= x"243c"; - when "01" & x"107" => DATA <= x"0000"; - when "01" & x"108" => DATA <= x"00f4"; - when "01" & x"109" => DATA <= x"6100"; - when "01" & x"10a" => DATA <= x"f4d2"; - when "01" & x"10b" => DATA <= x"11fc"; - when "01" & x"10c" => DATA <= x"0020"; - when "01" & x"10d" => DATA <= x"0617"; - when "01" & x"10e" => DATA <= x"21fc"; - when "01" & x"10f" => DATA <= x"4432"; - when "01" & x"110" => DATA <= x"3a00"; - when "01" & x"111" => DATA <= x"0618"; - when "01" & x"112" => DATA <= x"2002"; - when "01" & x"113" => DATA <= x"223c"; - when "01" & x"114" => DATA <= x"0000"; - when "01" & x"115" => DATA <= x"061b"; - when "01" & x"116" => DATA <= x"243c"; - when "01" & x"117" => DATA <= x"0000"; - when "01" & x"118" => DATA <= x"00e8"; - when "01" & x"119" => DATA <= x"6100"; - when "01" & x"11a" => DATA <= x"f4b2"; - when "01" & x"11b" => DATA <= x"11fc"; - when "01" & x"11c" => DATA <= x"0020"; - when "01" & x"11d" => DATA <= x"0623"; - when "01" & x"11e" => DATA <= x"21fc"; - when "01" & x"11f" => DATA <= x"4433"; - when "01" & x"120" => DATA <= x"3a00"; - when "01" & x"121" => DATA <= x"0624"; - when "01" & x"122" => DATA <= x"2003"; - when "01" & x"123" => DATA <= x"223c"; - when "01" & x"124" => DATA <= x"0000"; - when "01" & x"125" => DATA <= x"0627"; - when "01" & x"126" => DATA <= x"243c"; - when "01" & x"127" => DATA <= x"0000"; - when "01" & x"128" => DATA <= x"00dc"; - when "01" & x"129" => DATA <= x"6100"; - when "01" & x"12a" => DATA <= x"f492"; - when "01" & x"12b" => DATA <= x"11fc"; - when "01" & x"12c" => DATA <= x"0020"; - when "01" & x"12d" => DATA <= x"062f"; - when "01" & x"12e" => DATA <= x"21fc"; - when "01" & x"12f" => DATA <= x"5352"; - when "01" & x"130" => DATA <= x"3a00"; - when "01" & x"131" => DATA <= x"0630"; - when "01" & x"132" => DATA <= x"223c"; - when "01" & x"133" => DATA <= x"0000"; - when "01" & x"134" => DATA <= x"0633"; - when "01" & x"135" => DATA <= x"243c"; - when "01" & x"136" => DATA <= x"0000"; - when "01" & x"137" => DATA <= x"00cd"; - when "01" & x"138" => DATA <= x"40c0"; - when "01" & x"139" => DATA <= x"6100"; - when "01" & x"13a" => DATA <= x"f6b4"; - when "01" & x"13b" => DATA <= x"11fc"; - when "01" & x"13c" => DATA <= x"0020"; - when "01" & x"13d" => DATA <= x"0643"; - when "01" & x"13e" => DATA <= x"21fc"; - when "01" & x"13f" => DATA <= x"2020"; - when "01" & x"140" => DATA <= x"0a0d"; - when "01" & x"141" => DATA <= x"0644"; - when "01" & x"142" => DATA <= x"21fc"; - when "01" & x"143" => DATA <= x"4434"; - when "01" & x"144" => DATA <= x"3a00"; - when "01" & x"145" => DATA <= x"0648"; - when "01" & x"146" => DATA <= x"2004"; - when "01" & x"147" => DATA <= x"223c"; - when "01" & x"148" => DATA <= x"0000"; - when "01" & x"149" => DATA <= x"064b"; - when "01" & x"14a" => DATA <= x"243c"; - when "01" & x"14b" => DATA <= x"0000"; - when "01" & x"14c" => DATA <= x"00b8"; - when "01" & x"14d" => DATA <= x"6100"; - when "01" & x"14e" => DATA <= x"f44a"; - when "01" & x"14f" => DATA <= x"11fc"; - when "01" & x"150" => DATA <= x"0020"; - when "01" & x"151" => DATA <= x"0653"; - when "01" & x"152" => DATA <= x"21fc"; - when "01" & x"153" => DATA <= x"4435"; - when "01" & x"154" => DATA <= x"3a00"; - when "01" & x"155" => DATA <= x"0654"; - when "01" & x"156" => DATA <= x"2005"; - when "01" & x"157" => DATA <= x"223c"; - when "01" & x"158" => DATA <= x"0000"; - when "01" & x"159" => DATA <= x"0657"; - when "01" & x"15a" => DATA <= x"243c"; - when "01" & x"15b" => DATA <= x"0000"; - when "01" & x"15c" => DATA <= x"00ac"; - when "01" & x"15d" => DATA <= x"6100"; - when "01" & x"15e" => DATA <= x"f42a"; - when "01" & x"15f" => DATA <= x"11fc"; - when "01" & x"160" => DATA <= x"0020"; - when "01" & x"161" => DATA <= x"065f"; - when "01" & x"162" => DATA <= x"21fc"; - when "01" & x"163" => DATA <= x"4436"; - when "01" & x"164" => DATA <= x"3a00"; - when "01" & x"165" => DATA <= x"0660"; - when "01" & x"166" => DATA <= x"2006"; - when "01" & x"167" => DATA <= x"223c"; - when "01" & x"168" => DATA <= x"0000"; - when "01" & x"169" => DATA <= x"0663"; - when "01" & x"16a" => DATA <= x"243c"; - when "01" & x"16b" => DATA <= x"0000"; - when "01" & x"16c" => DATA <= x"00a0"; - when "01" & x"16d" => DATA <= x"6100"; - when "01" & x"16e" => DATA <= x"f40a"; - when "01" & x"16f" => DATA <= x"11fc"; - when "01" & x"170" => DATA <= x"0020"; - when "01" & x"171" => DATA <= x"066b"; - when "01" & x"172" => DATA <= x"21fc"; - when "01" & x"173" => DATA <= x"4437"; - when "01" & x"174" => DATA <= x"3a00"; - when "01" & x"175" => DATA <= x"066c"; - when "01" & x"176" => DATA <= x"2007"; - when "01" & x"177" => DATA <= x"223c"; - when "01" & x"178" => DATA <= x"0000"; - when "01" & x"179" => DATA <= x"066f"; - when "01" & x"17a" => DATA <= x"243c"; - when "01" & x"17b" => DATA <= x"0000"; - when "01" & x"17c" => DATA <= x"0094"; - when "01" & x"17d" => DATA <= x"6100"; - when "01" & x"17e" => DATA <= x"f3ea"; - when "01" & x"17f" => DATA <= x"11fc"; - when "01" & x"180" => DATA <= x"0020"; - when "01" & x"181" => DATA <= x"0677"; - when "01" & x"182" => DATA <= x"21fc"; - when "01" & x"183" => DATA <= x"5553"; - when "01" & x"184" => DATA <= x"3a00"; - when "01" & x"185" => DATA <= x"0678"; - when "01" & x"186" => DATA <= x"4e68"; - when "01" & x"187" => DATA <= x"2008"; - when "01" & x"188" => DATA <= x"223c"; - when "01" & x"189" => DATA <= x"0000"; - when "01" & x"18a" => DATA <= x"067b"; - when "01" & x"18b" => DATA <= x"243c"; - when "01" & x"18c" => DATA <= x"0000"; - when "01" & x"18d" => DATA <= x"0094"; - when "01" & x"18e" => DATA <= x"6100"; - when "01" & x"18f" => DATA <= x"f3c8"; - when "01" & x"190" => DATA <= x"11fc"; - when "01" & x"191" => DATA <= x"0020"; - when "01" & x"192" => DATA <= x"0683"; - when "01" & x"193" => DATA <= x"21fc"; - when "01" & x"194" => DATA <= x"2020"; - when "01" & x"195" => DATA <= x"0a0d"; - when "01" & x"196" => DATA <= x"0684"; - when "01" & x"197" => DATA <= x"21fc"; - when "01" & x"198" => DATA <= x"4130"; - when "01" & x"199" => DATA <= x"3a00"; - when "01" & x"19a" => DATA <= x"0688"; - when "01" & x"19b" => DATA <= x"2008"; - when "01" & x"19c" => DATA <= x"223c"; - when "01" & x"19d" => DATA <= x"0000"; - when "01" & x"19e" => DATA <= x"068b"; - when "01" & x"19f" => DATA <= x"243c"; - when "01" & x"1a0" => DATA <= x"0000"; - when "01" & x"1a1" => DATA <= x"0094"; - when "01" & x"1a2" => DATA <= x"6100"; - when "01" & x"1a3" => DATA <= x"f3a0"; - when "01" & x"1a4" => DATA <= x"11fc"; - when "01" & x"1a5" => DATA <= x"0020"; - when "01" & x"1a6" => DATA <= x"0693"; - when "01" & x"1a7" => DATA <= x"21fc"; - when "01" & x"1a8" => DATA <= x"4131"; - when "01" & x"1a9" => DATA <= x"3a00"; - when "01" & x"1aa" => DATA <= x"0694"; - when "01" & x"1ab" => DATA <= x"2009"; - when "01" & x"1ac" => DATA <= x"223c"; - when "01" & x"1ad" => DATA <= x"0000"; - when "01" & x"1ae" => DATA <= x"0697"; - when "01" & x"1af" => DATA <= x"243c"; - when "01" & x"1b0" => DATA <= x"0000"; - when "01" & x"1b1" => DATA <= x"0094"; - when "01" & x"1b2" => DATA <= x"6100"; - when "01" & x"1b3" => DATA <= x"f380"; - when "01" & x"1b4" => DATA <= x"11fc"; - when "01" & x"1b5" => DATA <= x"0020"; - when "01" & x"1b6" => DATA <= x"069f"; - when "01" & x"1b7" => DATA <= x"21fc"; - when "01" & x"1b8" => DATA <= x"4132"; - when "01" & x"1b9" => DATA <= x"3a00"; - when "01" & x"1ba" => DATA <= x"06a0"; - when "01" & x"1bb" => DATA <= x"200a"; - when "01" & x"1bc" => DATA <= x"223c"; - when "01" & x"1bd" => DATA <= x"0000"; - when "01" & x"1be" => DATA <= x"06a3"; - when "01" & x"1bf" => DATA <= x"243c"; - when "01" & x"1c0" => DATA <= x"0000"; - when "01" & x"1c1" => DATA <= x"0094"; - when "01" & x"1c2" => DATA <= x"6100"; - when "01" & x"1c3" => DATA <= x"f360"; - when "01" & x"1c4" => DATA <= x"11fc"; - when "01" & x"1c5" => DATA <= x"0020"; - when "01" & x"1c6" => DATA <= x"06ab"; - when "01" & x"1c7" => DATA <= x"21fc"; - when "01" & x"1c8" => DATA <= x"4133"; - when "01" & x"1c9" => DATA <= x"3a00"; - when "01" & x"1ca" => DATA <= x"06ac"; - when "01" & x"1cb" => DATA <= x"200b"; - when "01" & x"1cc" => DATA <= x"223c"; - when "01" & x"1cd" => DATA <= x"0000"; - when "01" & x"1ce" => DATA <= x"06af"; - when "01" & x"1cf" => DATA <= x"243c"; - when "01" & x"1d0" => DATA <= x"0000"; - when "01" & x"1d1" => DATA <= x"0094"; - when "01" & x"1d2" => DATA <= x"6100"; - when "01" & x"1d3" => DATA <= x"f340"; - when "01" & x"1d4" => DATA <= x"11fc"; - when "01" & x"1d5" => DATA <= x"0020"; - when "01" & x"1d6" => DATA <= x"06b7"; - when "01" & x"1d7" => DATA <= x"21fc"; - when "01" & x"1d8" => DATA <= x"5353"; - when "01" & x"1d9" => DATA <= x"3a00"; - when "01" & x"1da" => DATA <= x"06b8"; - when "01" & x"1db" => DATA <= x"200f"; - when "01" & x"1dc" => DATA <= x"223c"; - when "01" & x"1dd" => DATA <= x"0000"; - when "01" & x"1de" => DATA <= x"06bb"; - when "01" & x"1df" => DATA <= x"243c"; - when "01" & x"1e0" => DATA <= x"0000"; - when "01" & x"1e1" => DATA <= x"0094"; - when "01" & x"1e2" => DATA <= x"6100"; - when "01" & x"1e3" => DATA <= x"f320"; - when "01" & x"1e4" => DATA <= x"11fc"; - when "01" & x"1e5" => DATA <= x"0020"; - when "01" & x"1e6" => DATA <= x"06c3"; - when "01" & x"1e7" => DATA <= x"21fc"; - when "01" & x"1e8" => DATA <= x"2020"; - when "01" & x"1e9" => DATA <= x"0a0d"; - when "01" & x"1ea" => DATA <= x"06c4"; - when "01" & x"1eb" => DATA <= x"21fc"; - when "01" & x"1ec" => DATA <= x"4134"; - when "01" & x"1ed" => DATA <= x"3a00"; - when "01" & x"1ee" => DATA <= x"06c8"; - when "01" & x"1ef" => DATA <= x"200c"; - when "01" & x"1f0" => DATA <= x"223c"; - when "01" & x"1f1" => DATA <= x"0000"; - when "01" & x"1f2" => DATA <= x"06cb"; - when "01" & x"1f3" => DATA <= x"243c"; - when "01" & x"1f4" => DATA <= x"0000"; - when "01" & x"1f5" => DATA <= x"0094"; - when "01" & x"1f6" => DATA <= x"6100"; - when "01" & x"1f7" => DATA <= x"f2f8"; - when "01" & x"1f8" => DATA <= x"11fc"; - when "01" & x"1f9" => DATA <= x"0020"; - when "01" & x"1fa" => DATA <= x"06d3"; - when "01" & x"1fb" => DATA <= x"21fc"; - when "01" & x"1fc" => DATA <= x"4135"; - when "01" & x"1fd" => DATA <= x"3a00"; - when "01" & x"1fe" => DATA <= x"06d4"; - when "01" & x"1ff" => DATA <= x"200d"; - when "01" & x"200" => DATA <= x"223c"; - when "01" & x"201" => DATA <= x"0000"; - when "01" & x"202" => DATA <= x"06d7"; - when "01" & x"203" => DATA <= x"243c"; - when "01" & x"204" => DATA <= x"0000"; - when "01" & x"205" => DATA <= x"0094"; - when "01" & x"206" => DATA <= x"6100"; - when "01" & x"207" => DATA <= x"f2d8"; - when "01" & x"208" => DATA <= x"11fc"; - when "01" & x"209" => DATA <= x"0020"; - when "01" & x"20a" => DATA <= x"06df"; - when "01" & x"20b" => DATA <= x"21fc"; - when "01" & x"20c" => DATA <= x"4136"; - when "01" & x"20d" => DATA <= x"3a00"; - when "01" & x"20e" => DATA <= x"06e0"; - when "01" & x"20f" => DATA <= x"200e"; - when "01" & x"210" => DATA <= x"223c"; - when "01" & x"211" => DATA <= x"0000"; - when "01" & x"212" => DATA <= x"06e3"; - when "01" & x"213" => DATA <= x"243c"; - when "01" & x"214" => DATA <= x"0000"; - when "01" & x"215" => DATA <= x"0094"; - when "01" & x"216" => DATA <= x"6100"; - when "01" & x"217" => DATA <= x"f2b8"; - when "01" & x"218" => DATA <= x"11fc"; - when "01" & x"219" => DATA <= x"0020"; - when "01" & x"21a" => DATA <= x"06eb"; - when "01" & x"21b" => DATA <= x"21fc"; - when "01" & x"21c" => DATA <= x"4137"; - when "01" & x"21d" => DATA <= x"3a00"; - when "01" & x"21e" => DATA <= x"06ec"; - when "01" & x"21f" => DATA <= x"200f"; - when "01" & x"220" => DATA <= x"223c"; - when "01" & x"221" => DATA <= x"0000"; - when "01" & x"222" => DATA <= x"06ef"; - when "01" & x"223" => DATA <= x"243c"; - when "01" & x"224" => DATA <= x"0000"; - when "01" & x"225" => DATA <= x"0094"; - when "01" & x"226" => DATA <= x"6100"; - when "01" & x"227" => DATA <= x"f298"; - when "01" & x"228" => DATA <= x"11fc"; - when "01" & x"229" => DATA <= x"0020"; - when "01" & x"22a" => DATA <= x"06f7"; - when "01" & x"22b" => DATA <= x"21fc"; - when "01" & x"22c" => DATA <= x"5043"; - when "01" & x"22d" => DATA <= x"3a00"; - when "01" & x"22e" => DATA <= x"06f8"; - when "01" & x"22f" => DATA <= x"203c"; - when "01" & x"230" => DATA <= x"0000"; - when "01" & x"231" => DATA <= x"0600"; - when "01" & x"232" => DATA <= x"6100"; - when "01" & x"233" => DATA <= x"e598"; + when "01" & x"0ee" => DATA <= x"e826"; + when "01" & x"0ef" => DATA <= x"6100"; + when "01" & x"0f0" => DATA <= x"e836"; + when "01" & x"0f1" => DATA <= x"21fc"; + when "01" & x"0f2" => DATA <= x"4430"; + when "01" & x"0f3" => DATA <= x"3a00"; + when "01" & x"0f4" => DATA <= x"0600"; + when "01" & x"0f5" => DATA <= x"223c"; + when "01" & x"0f6" => DATA <= x"0000"; + when "01" & x"0f7" => DATA <= x"0603"; + when "01" & x"0f8" => DATA <= x"243c"; + when "01" & x"0f9" => DATA <= x"0000"; + when "01" & x"0fa" => DATA <= x"00fc"; + when "01" & x"0fb" => DATA <= x"6100"; + when "01" & x"0fc" => DATA <= x"f4f2"; + when "01" & x"0fd" => DATA <= x"11fc"; + when "01" & x"0fe" => DATA <= x"0020"; + when "01" & x"0ff" => DATA <= x"060b"; + when "01" & x"100" => DATA <= x"21fc"; + when "01" & x"101" => DATA <= x"4431"; + when "01" & x"102" => DATA <= x"3a00"; + when "01" & x"103" => DATA <= x"060c"; + when "01" & x"104" => DATA <= x"2001"; + when "01" & x"105" => DATA <= x"223c"; + when "01" & x"106" => DATA <= x"0000"; + when "01" & x"107" => DATA <= x"060f"; + when "01" & x"108" => DATA <= x"243c"; + when "01" & x"109" => DATA <= x"0000"; + when "01" & x"10a" => DATA <= x"00f4"; + when "01" & x"10b" => DATA <= x"6100"; + when "01" & x"10c" => DATA <= x"f4d2"; + when "01" & x"10d" => DATA <= x"11fc"; + when "01" & x"10e" => DATA <= x"0020"; + when "01" & x"10f" => DATA <= x"0617"; + when "01" & x"110" => DATA <= x"21fc"; + when "01" & x"111" => DATA <= x"4432"; + when "01" & x"112" => DATA <= x"3a00"; + when "01" & x"113" => DATA <= x"0618"; + when "01" & x"114" => DATA <= x"2002"; + when "01" & x"115" => DATA <= x"223c"; + when "01" & x"116" => DATA <= x"0000"; + when "01" & x"117" => DATA <= x"061b"; + when "01" & x"118" => DATA <= x"243c"; + when "01" & x"119" => DATA <= x"0000"; + when "01" & x"11a" => DATA <= x"00e8"; + when "01" & x"11b" => DATA <= x"6100"; + when "01" & x"11c" => DATA <= x"f4b2"; + when "01" & x"11d" => DATA <= x"11fc"; + when "01" & x"11e" => DATA <= x"0020"; + when "01" & x"11f" => DATA <= x"0623"; + when "01" & x"120" => DATA <= x"21fc"; + when "01" & x"121" => DATA <= x"4433"; + when "01" & x"122" => DATA <= x"3a00"; + when "01" & x"123" => DATA <= x"0624"; + when "01" & x"124" => DATA <= x"2003"; + when "01" & x"125" => DATA <= x"223c"; + when "01" & x"126" => DATA <= x"0000"; + when "01" & x"127" => DATA <= x"0627"; + when "01" & x"128" => DATA <= x"243c"; + when "01" & x"129" => DATA <= x"0000"; + when "01" & x"12a" => DATA <= x"00dc"; + when "01" & x"12b" => DATA <= x"6100"; + when "01" & x"12c" => DATA <= x"f492"; + when "01" & x"12d" => DATA <= x"11fc"; + when "01" & x"12e" => DATA <= x"0020"; + when "01" & x"12f" => DATA <= x"062f"; + when "01" & x"130" => DATA <= x"21fc"; + when "01" & x"131" => DATA <= x"5352"; + when "01" & x"132" => DATA <= x"3a00"; + when "01" & x"133" => DATA <= x"0630"; + when "01" & x"134" => DATA <= x"223c"; + when "01" & x"135" => DATA <= x"0000"; + when "01" & x"136" => DATA <= x"0633"; + when "01" & x"137" => DATA <= x"243c"; + when "01" & x"138" => DATA <= x"0000"; + when "01" & x"139" => DATA <= x"00cd"; + when "01" & x"13a" => DATA <= x"40c0"; + when "01" & x"13b" => DATA <= x"6100"; + when "01" & x"13c" => DATA <= x"f6b4"; + when "01" & x"13d" => DATA <= x"11fc"; + when "01" & x"13e" => DATA <= x"0020"; + when "01" & x"13f" => DATA <= x"0643"; + when "01" & x"140" => DATA <= x"21fc"; + when "01" & x"141" => DATA <= x"2020"; + when "01" & x"142" => DATA <= x"0a0d"; + when "01" & x"143" => DATA <= x"0644"; + when "01" & x"144" => DATA <= x"21fc"; + when "01" & x"145" => DATA <= x"4434"; + when "01" & x"146" => DATA <= x"3a00"; + when "01" & x"147" => DATA <= x"0648"; + when "01" & x"148" => DATA <= x"2004"; + when "01" & x"149" => DATA <= x"223c"; + when "01" & x"14a" => DATA <= x"0000"; + when "01" & x"14b" => DATA <= x"064b"; + when "01" & x"14c" => DATA <= x"243c"; + when "01" & x"14d" => DATA <= x"0000"; + when "01" & x"14e" => DATA <= x"00b8"; + when "01" & x"14f" => DATA <= x"6100"; + when "01" & x"150" => DATA <= x"f44a"; + when "01" & x"151" => DATA <= x"11fc"; + when "01" & x"152" => DATA <= x"0020"; + when "01" & x"153" => DATA <= x"0653"; + when "01" & x"154" => DATA <= x"21fc"; + when "01" & x"155" => DATA <= x"4435"; + when "01" & x"156" => DATA <= x"3a00"; + when "01" & x"157" => DATA <= x"0654"; + when "01" & x"158" => DATA <= x"2005"; + when "01" & x"159" => DATA <= x"223c"; + when "01" & x"15a" => DATA <= x"0000"; + when "01" & x"15b" => DATA <= x"0657"; + when "01" & x"15c" => DATA <= x"243c"; + when "01" & x"15d" => DATA <= x"0000"; + when "01" & x"15e" => DATA <= x"00ac"; + when "01" & x"15f" => DATA <= x"6100"; + when "01" & x"160" => DATA <= x"f42a"; + when "01" & x"161" => DATA <= x"11fc"; + when "01" & x"162" => DATA <= x"0020"; + when "01" & x"163" => DATA <= x"065f"; + when "01" & x"164" => DATA <= x"21fc"; + when "01" & x"165" => DATA <= x"4436"; + when "01" & x"166" => DATA <= x"3a00"; + when "01" & x"167" => DATA <= x"0660"; + when "01" & x"168" => DATA <= x"2006"; + when "01" & x"169" => DATA <= x"223c"; + when "01" & x"16a" => DATA <= x"0000"; + when "01" & x"16b" => DATA <= x"0663"; + when "01" & x"16c" => DATA <= x"243c"; + when "01" & x"16d" => DATA <= x"0000"; + when "01" & x"16e" => DATA <= x"00a0"; + when "01" & x"16f" => DATA <= x"6100"; + when "01" & x"170" => DATA <= x"f40a"; + when "01" & x"171" => DATA <= x"11fc"; + when "01" & x"172" => DATA <= x"0020"; + when "01" & x"173" => DATA <= x"066b"; + when "01" & x"174" => DATA <= x"21fc"; + when "01" & x"175" => DATA <= x"4437"; + when "01" & x"176" => DATA <= x"3a00"; + when "01" & x"177" => DATA <= x"066c"; + when "01" & x"178" => DATA <= x"2007"; + when "01" & x"179" => DATA <= x"223c"; + when "01" & x"17a" => DATA <= x"0000"; + when "01" & x"17b" => DATA <= x"066f"; + when "01" & x"17c" => DATA <= x"243c"; + when "01" & x"17d" => DATA <= x"0000"; + when "01" & x"17e" => DATA <= x"0094"; + when "01" & x"17f" => DATA <= x"6100"; + when "01" & x"180" => DATA <= x"f3ea"; + when "01" & x"181" => DATA <= x"11fc"; + when "01" & x"182" => DATA <= x"0020"; + when "01" & x"183" => DATA <= x"0677"; + when "01" & x"184" => DATA <= x"21fc"; + when "01" & x"185" => DATA <= x"5553"; + when "01" & x"186" => DATA <= x"3a00"; + when "01" & x"187" => DATA <= x"0678"; + when "01" & x"188" => DATA <= x"4e68"; + when "01" & x"189" => DATA <= x"2008"; + when "01" & x"18a" => DATA <= x"223c"; + when "01" & x"18b" => DATA <= x"0000"; + when "01" & x"18c" => DATA <= x"067b"; + when "01" & x"18d" => DATA <= x"243c"; + when "01" & x"18e" => DATA <= x"0000"; + when "01" & x"18f" => DATA <= x"0094"; + when "01" & x"190" => DATA <= x"6100"; + when "01" & x"191" => DATA <= x"f3c8"; + when "01" & x"192" => DATA <= x"11fc"; + when "01" & x"193" => DATA <= x"0020"; + when "01" & x"194" => DATA <= x"0683"; + when "01" & x"195" => DATA <= x"21fc"; + when "01" & x"196" => DATA <= x"2020"; + when "01" & x"197" => DATA <= x"0a0d"; + when "01" & x"198" => DATA <= x"0684"; + when "01" & x"199" => DATA <= x"21fc"; + when "01" & x"19a" => DATA <= x"4130"; + when "01" & x"19b" => DATA <= x"3a00"; + when "01" & x"19c" => DATA <= x"0688"; + when "01" & x"19d" => DATA <= x"2008"; + when "01" & x"19e" => DATA <= x"223c"; + when "01" & x"19f" => DATA <= x"0000"; + when "01" & x"1a0" => DATA <= x"068b"; + when "01" & x"1a1" => DATA <= x"243c"; + when "01" & x"1a2" => DATA <= x"0000"; + when "01" & x"1a3" => DATA <= x"0094"; + when "01" & x"1a4" => DATA <= x"6100"; + when "01" & x"1a5" => DATA <= x"f3a0"; + when "01" & x"1a6" => DATA <= x"11fc"; + when "01" & x"1a7" => DATA <= x"0020"; + when "01" & x"1a8" => DATA <= x"0693"; + when "01" & x"1a9" => DATA <= x"21fc"; + when "01" & x"1aa" => DATA <= x"4131"; + when "01" & x"1ab" => DATA <= x"3a00"; + when "01" & x"1ac" => DATA <= x"0694"; + when "01" & x"1ad" => DATA <= x"2009"; + when "01" & x"1ae" => DATA <= x"223c"; + when "01" & x"1af" => DATA <= x"0000"; + when "01" & x"1b0" => DATA <= x"0697"; + when "01" & x"1b1" => DATA <= x"243c"; + when "01" & x"1b2" => DATA <= x"0000"; + when "01" & x"1b3" => DATA <= x"0094"; + when "01" & x"1b4" => DATA <= x"6100"; + when "01" & x"1b5" => DATA <= x"f380"; + when "01" & x"1b6" => DATA <= x"11fc"; + when "01" & x"1b7" => DATA <= x"0020"; + when "01" & x"1b8" => DATA <= x"069f"; + when "01" & x"1b9" => DATA <= x"21fc"; + when "01" & x"1ba" => DATA <= x"4132"; + when "01" & x"1bb" => DATA <= x"3a00"; + when "01" & x"1bc" => DATA <= x"06a0"; + when "01" & x"1bd" => DATA <= x"200a"; + when "01" & x"1be" => DATA <= x"223c"; + when "01" & x"1bf" => DATA <= x"0000"; + when "01" & x"1c0" => DATA <= x"06a3"; + when "01" & x"1c1" => DATA <= x"243c"; + when "01" & x"1c2" => DATA <= x"0000"; + when "01" & x"1c3" => DATA <= x"0094"; + when "01" & x"1c4" => DATA <= x"6100"; + when "01" & x"1c5" => DATA <= x"f360"; + when "01" & x"1c6" => DATA <= x"11fc"; + when "01" & x"1c7" => DATA <= x"0020"; + when "01" & x"1c8" => DATA <= x"06ab"; + when "01" & x"1c9" => DATA <= x"21fc"; + when "01" & x"1ca" => DATA <= x"4133"; + when "01" & x"1cb" => DATA <= x"3a00"; + when "01" & x"1cc" => DATA <= x"06ac"; + when "01" & x"1cd" => DATA <= x"200b"; + when "01" & x"1ce" => DATA <= x"223c"; + when "01" & x"1cf" => DATA <= x"0000"; + when "01" & x"1d0" => DATA <= x"06af"; + when "01" & x"1d1" => DATA <= x"243c"; + when "01" & x"1d2" => DATA <= x"0000"; + when "01" & x"1d3" => DATA <= x"0094"; + when "01" & x"1d4" => DATA <= x"6100"; + when "01" & x"1d5" => DATA <= x"f340"; + when "01" & x"1d6" => DATA <= x"11fc"; + when "01" & x"1d7" => DATA <= x"0020"; + when "01" & x"1d8" => DATA <= x"06b7"; + when "01" & x"1d9" => DATA <= x"21fc"; + when "01" & x"1da" => DATA <= x"5353"; + when "01" & x"1db" => DATA <= x"3a00"; + when "01" & x"1dc" => DATA <= x"06b8"; + when "01" & x"1dd" => DATA <= x"200f"; + when "01" & x"1de" => DATA <= x"223c"; + when "01" & x"1df" => DATA <= x"0000"; + when "01" & x"1e0" => DATA <= x"06bb"; + when "01" & x"1e1" => DATA <= x"243c"; + when "01" & x"1e2" => DATA <= x"0000"; + when "01" & x"1e3" => DATA <= x"0094"; + when "01" & x"1e4" => DATA <= x"6100"; + when "01" & x"1e5" => DATA <= x"f320"; + when "01" & x"1e6" => DATA <= x"11fc"; + when "01" & x"1e7" => DATA <= x"0020"; + when "01" & x"1e8" => DATA <= x"06c3"; + when "01" & x"1e9" => DATA <= x"21fc"; + when "01" & x"1ea" => DATA <= x"2020"; + when "01" & x"1eb" => DATA <= x"0a0d"; + when "01" & x"1ec" => DATA <= x"06c4"; + when "01" & x"1ed" => DATA <= x"21fc"; + when "01" & x"1ee" => DATA <= x"4134"; + when "01" & x"1ef" => DATA <= x"3a00"; + when "01" & x"1f0" => DATA <= x"06c8"; + when "01" & x"1f1" => DATA <= x"200c"; + when "01" & x"1f2" => DATA <= x"223c"; + when "01" & x"1f3" => DATA <= x"0000"; + when "01" & x"1f4" => DATA <= x"06cb"; + when "01" & x"1f5" => DATA <= x"243c"; + when "01" & x"1f6" => DATA <= x"0000"; + when "01" & x"1f7" => DATA <= x"0094"; + when "01" & x"1f8" => DATA <= x"6100"; + when "01" & x"1f9" => DATA <= x"f2f8"; + when "01" & x"1fa" => DATA <= x"11fc"; + when "01" & x"1fb" => DATA <= x"0020"; + when "01" & x"1fc" => DATA <= x"06d3"; + when "01" & x"1fd" => DATA <= x"21fc"; + when "01" & x"1fe" => DATA <= x"4135"; + when "01" & x"1ff" => DATA <= x"3a00"; + when "01" & x"200" => DATA <= x"06d4"; + when "01" & x"201" => DATA <= x"200d"; + when "01" & x"202" => DATA <= x"223c"; + when "01" & x"203" => DATA <= x"0000"; + when "01" & x"204" => DATA <= x"06d7"; + when "01" & x"205" => DATA <= x"243c"; + when "01" & x"206" => DATA <= x"0000"; + when "01" & x"207" => DATA <= x"0094"; + when "01" & x"208" => DATA <= x"6100"; + when "01" & x"209" => DATA <= x"f2d8"; + when "01" & x"20a" => DATA <= x"11fc"; + when "01" & x"20b" => DATA <= x"0020"; + when "01" & x"20c" => DATA <= x"06df"; + when "01" & x"20d" => DATA <= x"21fc"; + when "01" & x"20e" => DATA <= x"4136"; + when "01" & x"20f" => DATA <= x"3a00"; + when "01" & x"210" => DATA <= x"06e0"; + when "01" & x"211" => DATA <= x"200e"; + when "01" & x"212" => DATA <= x"223c"; + when "01" & x"213" => DATA <= x"0000"; + when "01" & x"214" => DATA <= x"06e3"; + when "01" & x"215" => DATA <= x"243c"; + when "01" & x"216" => DATA <= x"0000"; + when "01" & x"217" => DATA <= x"0094"; + when "01" & x"218" => DATA <= x"6100"; + when "01" & x"219" => DATA <= x"f2b8"; + when "01" & x"21a" => DATA <= x"11fc"; + when "01" & x"21b" => DATA <= x"0020"; + when "01" & x"21c" => DATA <= x"06eb"; + when "01" & x"21d" => DATA <= x"21fc"; + when "01" & x"21e" => DATA <= x"4137"; + when "01" & x"21f" => DATA <= x"3a00"; + when "01" & x"220" => DATA <= x"06ec"; + when "01" & x"221" => DATA <= x"200f"; + when "01" & x"222" => DATA <= x"223c"; + when "01" & x"223" => DATA <= x"0000"; + when "01" & x"224" => DATA <= x"06ef"; + when "01" & x"225" => DATA <= x"243c"; + when "01" & x"226" => DATA <= x"0000"; + when "01" & x"227" => DATA <= x"0094"; + when "01" & x"228" => DATA <= x"6100"; + when "01" & x"229" => DATA <= x"f298"; + when "01" & x"22a" => DATA <= x"11fc"; + when "01" & x"22b" => DATA <= x"0020"; + when "01" & x"22c" => DATA <= x"06f7"; + when "01" & x"22d" => DATA <= x"21fc"; + when "01" & x"22e" => DATA <= x"5043"; + when "01" & x"22f" => DATA <= x"3a00"; + when "01" & x"230" => DATA <= x"06f8"; + when "01" & x"231" => DATA <= x"203c"; + when "01" & x"232" => DATA <= x"0000"; + when "01" & x"233" => DATA <= x"0600"; when "01" & x"234" => DATA <= x"6100"; - when "01" & x"235" => DATA <= x"e5a8"; - when "01" & x"236" => DATA <= x"6000"; - when "01" & x"237" => DATA <= x"f956"; - when "01" & x"238" => DATA <= x"203c"; - when "01" & x"239" => DATA <= x"003f"; - when "01" & x"23a" => DATA <= x"2945"; - when "01" & x"23b" => DATA <= x"6100"; - when "01" & x"23c" => DATA <= x"e586"; - when "01" & x"23d" => DATA <= x"4e75"; - when "01" & x"23e" => DATA <= x"6000"; - when "01" & x"23f" => DATA <= x"e9c6"; + when "01" & x"235" => DATA <= x"e598"; + when "01" & x"236" => DATA <= x"6100"; + when "01" & x"237" => DATA <= x"e5a8"; + when "01" & x"238" => DATA <= x"6000"; + when "01" & x"239" => DATA <= x"f956"; + when "01" & x"23a" => DATA <= x"203c"; + when "01" & x"23b" => DATA <= x"003f"; + when "01" & x"23c" => DATA <= x"2949"; + when "01" & x"23d" => DATA <= x"6100"; + when "01" & x"23e" => DATA <= x"e586"; + when "01" & x"23f" => DATA <= x"4e75"; when "01" & x"240" => DATA <= x"6000"; - when "01" & x"241" => DATA <= x"e2f4"; - when "01" & x"242" => DATA <= x"7010"; - when "01" & x"243" => DATA <= x"220e"; - when "01" & x"244" => DATA <= x"6100"; - when "01" & x"245" => DATA <= x"eb42"; - when "01" & x"246" => DATA <= x"6900"; - when "01" & x"247" => DATA <= x"00d2"; - when "01" & x"248" => DATA <= x"2e02"; - when "01" & x"249" => DATA <= x"6100"; - when "01" & x"24a" => DATA <= x"029a"; - when "01" & x"24b" => DATA <= x"7010"; - when "01" & x"24c" => DATA <= x"6100"; - when "01" & x"24d" => DATA <= x"eb32"; - when "01" & x"24e" => DATA <= x"6900"; - when "01" & x"24f" => DATA <= x"00c2"; - when "01" & x"250" => DATA <= x"2c02"; - when "01" & x"251" => DATA <= x"6100"; - when "01" & x"252" => DATA <= x"028a"; - when "01" & x"253" => DATA <= x"7010"; - when "01" & x"254" => DATA <= x"6100"; - when "01" & x"255" => DATA <= x"eb22"; - when "01" & x"256" => DATA <= x"6900"; - when "01" & x"257" => DATA <= x"00b2"; - when "01" & x"258" => DATA <= x"2c41"; - when "01" & x"259" => DATA <= x"2a02"; - when "01" & x"25a" => DATA <= x"6100"; - when "01" & x"25b" => DATA <= x"026a"; - when "01" & x"25c" => DATA <= x"101e"; - when "01" & x"25d" => DATA <= x"0200"; - when "01" & x"25e" => DATA <= x"00df"; - when "01" & x"25f" => DATA <= x"b03c"; - when "01" & x"260" => DATA <= x"0052"; - when "01" & x"261" => DATA <= x"6700"; - when "01" & x"262" => DATA <= x"0012"; - when "01" & x"263" => DATA <= x"b03c"; - when "01" & x"264" => DATA <= x"0057"; - when "01" & x"265" => DATA <= x"6600"; - when "01" & x"266" => DATA <= x"0094"; - when "01" & x"267" => DATA <= x"183c"; - when "01" & x"268" => DATA <= x"0006"; - when "01" & x"269" => DATA <= x"6000"; + when "01" & x"241" => DATA <= x"e9c6"; + when "01" & x"242" => DATA <= x"6000"; + when "01" & x"243" => DATA <= x"e2f4"; + when "01" & x"244" => DATA <= x"7010"; + when "01" & x"245" => DATA <= x"220e"; + when "01" & x"246" => DATA <= x"6100"; + when "01" & x"247" => DATA <= x"eb42"; + when "01" & x"248" => DATA <= x"6900"; + when "01" & x"249" => DATA <= x"00d2"; + when "01" & x"24a" => DATA <= x"2e02"; + when "01" & x"24b" => DATA <= x"6100"; + when "01" & x"24c" => DATA <= x"029a"; + when "01" & x"24d" => DATA <= x"7010"; + when "01" & x"24e" => DATA <= x"6100"; + when "01" & x"24f" => DATA <= x"eb32"; + when "01" & x"250" => DATA <= x"6900"; + when "01" & x"251" => DATA <= x"00c2"; + when "01" & x"252" => DATA <= x"2c02"; + when "01" & x"253" => DATA <= x"6100"; + when "01" & x"254" => DATA <= x"028a"; + when "01" & x"255" => DATA <= x"7010"; + when "01" & x"256" => DATA <= x"6100"; + when "01" & x"257" => DATA <= x"eb22"; + when "01" & x"258" => DATA <= x"6900"; + when "01" & x"259" => DATA <= x"00b2"; + when "01" & x"25a" => DATA <= x"2c41"; + when "01" & x"25b" => DATA <= x"2a02"; + when "01" & x"25c" => DATA <= x"6100"; + when "01" & x"25d" => DATA <= x"026a"; + when "01" & x"25e" => DATA <= x"101e"; + when "01" & x"25f" => DATA <= x"0200"; + when "01" & x"260" => DATA <= x"00df"; + when "01" & x"261" => DATA <= x"b03c"; + when "01" & x"262" => DATA <= x"0052"; + when "01" & x"263" => DATA <= x"6700"; + when "01" & x"264" => DATA <= x"0012"; + when "01" & x"265" => DATA <= x"b03c"; + when "01" & x"266" => DATA <= x"0057"; + when "01" & x"267" => DATA <= x"6600"; + when "01" & x"268" => DATA <= x"0094"; + when "01" & x"269" => DATA <= x"183c"; when "01" & x"26a" => DATA <= x"0006"; - when "01" & x"26b" => DATA <= x"183c"; - when "01" & x"26c" => DATA <= x"0007"; - when "01" & x"26d" => DATA <= x"6100"; - when "01" & x"26e" => DATA <= x"0244"; - when "01" & x"26f" => DATA <= x"6700"; - when "01" & x"270" => DATA <= x"0020"; - when "01" & x"271" => DATA <= x"101e"; - when "01" & x"272" => DATA <= x"0200"; - when "01" & x"273" => DATA <= x"00df"; - when "01" & x"274" => DATA <= x"b03c"; - when "01" & x"275" => DATA <= x"0053"; - when "01" & x"276" => DATA <= x"6700"; - when "01" & x"277" => DATA <= x"001a"; - when "01" & x"278" => DATA <= x"b03c"; - when "01" & x"279" => DATA <= x"004d"; - when "01" & x"27a" => DATA <= x"6600"; - when "01" & x"27b" => DATA <= x"006a"; - when "01" & x"27c" => DATA <= x"163c"; - when "01" & x"27d" => DATA <= x"0040"; - when "01" & x"27e" => DATA <= x"6000"; - when "01" & x"27f" => DATA <= x"000e"; - when "01" & x"280" => DATA <= x"103c"; - when "01" & x"281" => DATA <= x"0010"; - when "01" & x"282" => DATA <= x"6000"; - when "01" & x"283" => DATA <= x"0006"; - when "01" & x"284" => DATA <= x"163c"; - when "01" & x"285" => DATA <= x"0020"; - when "01" & x"286" => DATA <= x"6100"; - when "01" & x"287" => DATA <= x"0212"; - when "01" & x"288" => DATA <= x"6600"; - when "01" & x"289" => DATA <= x"f798"; - when "01" & x"28a" => DATA <= x"11fc"; - when "01" & x"28b" => DATA <= x"000e"; - when "01" & x"28c" => DATA <= x"0600"; - when "01" & x"28d" => DATA <= x"11fc"; - when "01" & x"28e" => DATA <= x"0010"; - when "01" & x"28f" => DATA <= x"0601"; - when "01" & x"290" => DATA <= x"21c7"; - when "01" & x"291" => DATA <= x"0602"; - when "01" & x"292" => DATA <= x"21c6"; - when "01" & x"293" => DATA <= x"0606"; - when "01" & x"294" => DATA <= x"31c5"; - when "01" & x"295" => DATA <= x"060a"; - when "01" & x"296" => DATA <= x"11c4"; - when "01" & x"297" => DATA <= x"060c"; - when "01" & x"298" => DATA <= x"11c3"; - when "01" & x"299" => DATA <= x"060d"; - when "01" & x"29a" => DATA <= x"223c"; - when "01" & x"29b" => DATA <= x"0000"; - when "01" & x"29c" => DATA <= x"0600"; - when "01" & x"29d" => DATA <= x"203c"; - when "01" & x"29e" => DATA <= x"0000"; - when "01" & x"29f" => DATA <= x"00fa"; - when "01" & x"2a0" => DATA <= x"6100"; - when "01" & x"2a1" => DATA <= x"e6a2"; - when "01" & x"2a2" => DATA <= x"0c04"; - when "01" & x"2a3" => DATA <= x"0006"; - when "01" & x"2a4" => DATA <= x"6600"; - when "01" & x"2a5" => DATA <= x"000c"; - when "01" & x"2a6" => DATA <= x"2a47"; - when "01" & x"2a7" => DATA <= x"2c46"; - when "01" & x"2a8" => DATA <= x"2405"; - when "01" & x"2a9" => DATA <= x"6000"; - when "01" & x"2aa" => DATA <= x"014c"; - when "01" & x"2ab" => DATA <= x"2a46"; - when "01" & x"2ac" => DATA <= x"2c47"; - when "01" & x"2ad" => DATA <= x"2405"; - when "01" & x"2ae" => DATA <= x"6000"; - when "01" & x"2af" => DATA <= x"015c"; - when "01" & x"2b0" => DATA <= x"203c"; - when "01" & x"2b1" => DATA <= x"003f"; - when "01" & x"2b2" => DATA <= x"2969"; - when "01" & x"2b3" => DATA <= x"6100"; - when "01" & x"2b4" => DATA <= x"e496"; - when "01" & x"2b5" => DATA <= x"4e75"; - when "01" & x"2b6" => DATA <= x"6100"; - when "01" & x"2b7" => DATA <= x"e4a4"; - when "01" & x"2b8" => DATA <= x"5880"; - when "01" & x"2b9" => DATA <= x"6100"; - when "01" & x"2ba" => DATA <= x"e48a"; - when "01" & x"2bb" => DATA <= x"0cb8"; - when "01" & x"2bc" => DATA <= x"0000"; - when "01" & x"2bd" => DATA <= x"0000"; - when "01" & x"2be" => DATA <= x"0510"; - when "01" & x"2bf" => DATA <= x"6700"; - when "01" & x"2c0" => DATA <= x"0022"; - when "01" & x"2c1" => DATA <= x"203c"; - when "01" & x"2c2" => DATA <= x"003f"; - when "01" & x"2c3" => DATA <= x"2c54"; - when "01" & x"2c4" => DATA <= x"6100"; - when "01" & x"2c5" => DATA <= x"e474"; - when "01" & x"2c6" => DATA <= x"2038"; - when "01" & x"2c7" => DATA <= x"0510"; - when "01" & x"2c8" => DATA <= x"223c"; - when "01" & x"2c9" => DATA <= x"0000"; - when "01" & x"2ca" => DATA <= x"0600"; - when "01" & x"2cb" => DATA <= x"143c"; - when "01" & x"2cc" => DATA <= x"00ff"; - when "01" & x"2cd" => DATA <= x"6100"; - when "01" & x"2ce" => DATA <= x"f14a"; + when "01" & x"26b" => DATA <= x"6000"; + when "01" & x"26c" => DATA <= x"0006"; + when "01" & x"26d" => DATA <= x"183c"; + when "01" & x"26e" => DATA <= x"0007"; + when "01" & x"26f" => DATA <= x"6100"; + when "01" & x"270" => DATA <= x"0244"; + when "01" & x"271" => DATA <= x"6700"; + when "01" & x"272" => DATA <= x"0020"; + when "01" & x"273" => DATA <= x"101e"; + when "01" & x"274" => DATA <= x"0200"; + when "01" & x"275" => DATA <= x"00df"; + when "01" & x"276" => DATA <= x"b03c"; + when "01" & x"277" => DATA <= x"0053"; + when "01" & x"278" => DATA <= x"6700"; + when "01" & x"279" => DATA <= x"001a"; + when "01" & x"27a" => DATA <= x"b03c"; + when "01" & x"27b" => DATA <= x"004d"; + when "01" & x"27c" => DATA <= x"6600"; + when "01" & x"27d" => DATA <= x"006a"; + when "01" & x"27e" => DATA <= x"163c"; + when "01" & x"27f" => DATA <= x"0040"; + when "01" & x"280" => DATA <= x"6000"; + when "01" & x"281" => DATA <= x"000e"; + when "01" & x"282" => DATA <= x"103c"; + when "01" & x"283" => DATA <= x"0010"; + when "01" & x"284" => DATA <= x"6000"; + when "01" & x"285" => DATA <= x"0006"; + when "01" & x"286" => DATA <= x"163c"; + when "01" & x"287" => DATA <= x"0020"; + when "01" & x"288" => DATA <= x"6100"; + when "01" & x"289" => DATA <= x"0212"; + when "01" & x"28a" => DATA <= x"6600"; + when "01" & x"28b" => DATA <= x"f798"; + when "01" & x"28c" => DATA <= x"11fc"; + when "01" & x"28d" => DATA <= x"000e"; + when "01" & x"28e" => DATA <= x"0600"; + when "01" & x"28f" => DATA <= x"11fc"; + when "01" & x"290" => DATA <= x"0010"; + when "01" & x"291" => DATA <= x"0601"; + when "01" & x"292" => DATA <= x"21c7"; + when "01" & x"293" => DATA <= x"0602"; + when "01" & x"294" => DATA <= x"21c6"; + when "01" & x"295" => DATA <= x"0606"; + when "01" & x"296" => DATA <= x"31c5"; + when "01" & x"297" => DATA <= x"060a"; + when "01" & x"298" => DATA <= x"11c4"; + when "01" & x"299" => DATA <= x"060c"; + when "01" & x"29a" => DATA <= x"11c3"; + when "01" & x"29b" => DATA <= x"060d"; + when "01" & x"29c" => DATA <= x"223c"; + when "01" & x"29d" => DATA <= x"0000"; + when "01" & x"29e" => DATA <= x"0600"; + when "01" & x"29f" => DATA <= x"203c"; + when "01" & x"2a0" => DATA <= x"0000"; + when "01" & x"2a1" => DATA <= x"00fa"; + when "01" & x"2a2" => DATA <= x"6100"; + when "01" & x"2a3" => DATA <= x"e6a2"; + when "01" & x"2a4" => DATA <= x"0c04"; + when "01" & x"2a5" => DATA <= x"0006"; + when "01" & x"2a6" => DATA <= x"6600"; + when "01" & x"2a7" => DATA <= x"000c"; + when "01" & x"2a8" => DATA <= x"2a47"; + when "01" & x"2a9" => DATA <= x"2c46"; + when "01" & x"2aa" => DATA <= x"2405"; + when "01" & x"2ab" => DATA <= x"6000"; + when "01" & x"2ac" => DATA <= x"014c"; + when "01" & x"2ad" => DATA <= x"2a46"; + when "01" & x"2ae" => DATA <= x"2c47"; + when "01" & x"2af" => DATA <= x"2405"; + when "01" & x"2b0" => DATA <= x"6000"; + when "01" & x"2b1" => DATA <= x"015c"; + when "01" & x"2b2" => DATA <= x"203c"; + when "01" & x"2b3" => DATA <= x"003f"; + when "01" & x"2b4" => DATA <= x"296d"; + when "01" & x"2b5" => DATA <= x"6100"; + when "01" & x"2b6" => DATA <= x"e496"; + when "01" & x"2b7" => DATA <= x"4e75"; + when "01" & x"2b8" => DATA <= x"6100"; + when "01" & x"2b9" => DATA <= x"e4a4"; + when "01" & x"2ba" => DATA <= x"5880"; + when "01" & x"2bb" => DATA <= x"6100"; + when "01" & x"2bc" => DATA <= x"e48a"; + when "01" & x"2bd" => DATA <= x"0cb8"; + when "01" & x"2be" => DATA <= x"0000"; + when "01" & x"2bf" => DATA <= x"0000"; + when "01" & x"2c0" => DATA <= x"0510"; + when "01" & x"2c1" => DATA <= x"6700"; + when "01" & x"2c2" => DATA <= x"0022"; + when "01" & x"2c3" => DATA <= x"203c"; + when "01" & x"2c4" => DATA <= x"003f"; + when "01" & x"2c5" => DATA <= x"2c58"; + when "01" & x"2c6" => DATA <= x"6100"; + when "01" & x"2c7" => DATA <= x"e474"; + when "01" & x"2c8" => DATA <= x"2038"; + when "01" & x"2c9" => DATA <= x"0510"; + when "01" & x"2ca" => DATA <= x"223c"; + when "01" & x"2cb" => DATA <= x"0000"; + when "01" & x"2cc" => DATA <= x"0600"; + when "01" & x"2cd" => DATA <= x"143c"; + when "01" & x"2ce" => DATA <= x"00ff"; when "01" & x"2cf" => DATA <= x"6100"; - when "01" & x"2d0" => DATA <= x"e45e"; + when "01" & x"2d0" => DATA <= x"f14a"; when "01" & x"2d1" => DATA <= x"6100"; - when "01" & x"2d2" => DATA <= x"e46e"; - when "01" & x"2d3" => DATA <= x"2e78"; - when "01" & x"2d4" => DATA <= x"0508"; - when "01" & x"2d5" => DATA <= x"6000"; - when "01" & x"2d6" => DATA <= x"ddb2"; - when "01" & x"2d7" => DATA <= x"2f00"; - when "01" & x"2d8" => DATA <= x"203c"; - when "01" & x"2d9" => DATA <= x"003f"; - when "01" & x"2da" => DATA <= x"2d18"; - when "01" & x"2db" => DATA <= x"21fc"; - when "01" & x"2dc" => DATA <= x"0000"; - when "01" & x"2dd" => DATA <= x"0000"; - when "01" & x"2de" => DATA <= x"0510"; - when "01" & x"2df" => DATA <= x"6100"; - when "01" & x"2e0" => DATA <= x"eb60"; - when "01" & x"2e1" => DATA <= x"201f"; - when "01" & x"2e2" => DATA <= x"4e75"; - when "01" & x"2e3" => DATA <= x"0839"; - when "01" & x"2e4" => DATA <= x"0006"; - when "01" & x"2e5" => DATA <= x"fffe"; - when "01" & x"2e6" => DATA <= x"0000"; - when "01" & x"2e7" => DATA <= x"67f6"; - when "01" & x"2e8" => DATA <= x"13c0"; - when "01" & x"2e9" => DATA <= x"fffe"; - when "01" & x"2ea" => DATA <= x"0001"; - when "01" & x"2eb" => DATA <= x"4e75"; - when "01" & x"2ec" => DATA <= x"4e75"; - when "01" & x"2ed" => DATA <= x"2f00"; - when "01" & x"2ee" => DATA <= x"203c"; - when "01" & x"2ef" => DATA <= x"003f"; - when "01" & x"2f0" => DATA <= x"2e38"; - when "01" & x"2f1" => DATA <= x"6100"; - when "01" & x"2f2" => DATA <= x"eb3c"; - when "01" & x"2f3" => DATA <= x"201f"; - when "01" & x"2f4" => DATA <= x"4e75"; - when "01" & x"2f5" => DATA <= x"b07c"; - when "01" & x"2f6" => DATA <= x"0010"; - when "01" & x"2f7" => DATA <= x"6300"; - when "01" & x"2f8" => DATA <= x"000e"; - when "01" & x"2f9" => DATA <= x"203c"; - when "01" & x"2fa" => DATA <= x"003f"; - when "01" & x"2fb" => DATA <= x"2e1c"; - when "01" & x"2fc" => DATA <= x"003c"; - when "01" & x"2fd" => DATA <= x"0002"; - when "01" & x"2fe" => DATA <= x"4e75"; - when "01" & x"2ff" => DATA <= x"41f9"; - when "01" & x"300" => DATA <= x"003f"; - when "01" & x"301" => DATA <= x"362c"; - when "01" & x"302" => DATA <= x"e588"; - when "01" & x"303" => DATA <= x"d1c0"; - when "01" & x"304" => DATA <= x"d1c0"; + when "01" & x"2d2" => DATA <= x"e45e"; + when "01" & x"2d3" => DATA <= x"6100"; + when "01" & x"2d4" => DATA <= x"e46e"; + when "01" & x"2d5" => DATA <= x"2e78"; + when "01" & x"2d6" => DATA <= x"0508"; + when "01" & x"2d7" => DATA <= x"6000"; + when "01" & x"2d8" => DATA <= x"ddb2"; + when "01" & x"2d9" => DATA <= x"2f00"; + when "01" & x"2da" => DATA <= x"203c"; + when "01" & x"2db" => DATA <= x"003f"; + when "01" & x"2dc" => DATA <= x"2d1c"; + when "01" & x"2dd" => DATA <= x"21fc"; + when "01" & x"2de" => DATA <= x"0000"; + when "01" & x"2df" => DATA <= x"0000"; + when "01" & x"2e0" => DATA <= x"0510"; + when "01" & x"2e1" => DATA <= x"6100"; + when "01" & x"2e2" => DATA <= x"eb60"; + when "01" & x"2e3" => DATA <= x"201f"; + when "01" & x"2e4" => DATA <= x"4e75"; + when "01" & x"2e5" => DATA <= x"0839"; + when "01" & x"2e6" => DATA <= x"0006"; + when "01" & x"2e7" => DATA <= x"fffe"; + when "01" & x"2e8" => DATA <= x"0000"; + when "01" & x"2e9" => DATA <= x"67f6"; + when "01" & x"2ea" => DATA <= x"13c0"; + when "01" & x"2eb" => DATA <= x"fffe"; + when "01" & x"2ec" => DATA <= x"0001"; + when "01" & x"2ed" => DATA <= x"4e75"; + when "01" & x"2ee" => DATA <= x"4e75"; + when "01" & x"2ef" => DATA <= x"2f00"; + when "01" & x"2f0" => DATA <= x"203c"; + when "01" & x"2f1" => DATA <= x"003f"; + when "01" & x"2f2" => DATA <= x"2e3c"; + when "01" & x"2f3" => DATA <= x"6100"; + when "01" & x"2f4" => DATA <= x"eb3c"; + when "01" & x"2f5" => DATA <= x"201f"; + when "01" & x"2f6" => DATA <= x"4e75"; + when "01" & x"2f7" => DATA <= x"b07c"; + when "01" & x"2f8" => DATA <= x"0010"; + when "01" & x"2f9" => DATA <= x"6300"; + when "01" & x"2fa" => DATA <= x"000e"; + when "01" & x"2fb" => DATA <= x"203c"; + when "01" & x"2fc" => DATA <= x"003f"; + when "01" & x"2fd" => DATA <= x"2e20"; + when "01" & x"2fe" => DATA <= x"003c"; + when "01" & x"2ff" => DATA <= x"0002"; + when "01" & x"300" => DATA <= x"4e75"; + when "01" & x"301" => DATA <= x"41f9"; + when "01" & x"302" => DATA <= x"003f"; + when "01" & x"303" => DATA <= x"3630"; + when "01" & x"304" => DATA <= x"e588"; when "01" & x"305" => DATA <= x"d1c0"; - when "01" & x"306" => DATA <= x"2258"; - when "01" & x"307" => DATA <= x"b3fc"; - when "01" & x"308" => DATA <= x"0000"; - when "01" & x"309" => DATA <= x"0000"; - when "01" & x"30a" => DATA <= x"67dc"; - when "01" & x"30b" => DATA <= x"2f04"; - when "01" & x"30c" => DATA <= x"2458"; - when "01" & x"30d" => DATA <= x"2658"; - when "01" & x"30e" => DATA <= x"4a81"; - when "01" & x"30f" => DATA <= x"6600"; - when "01" & x"310" => DATA <= x"0008"; - when "01" & x"311" => DATA <= x"2211"; - when "01" & x"312" => DATA <= x"6000"; - when "01" & x"313" => DATA <= x"0008"; - when "01" & x"314" => DATA <= x"2811"; - when "01" & x"315" => DATA <= x"2281"; - when "01" & x"316" => DATA <= x"c941"; - when "01" & x"317" => DATA <= x"4a82"; - when "01" & x"318" => DATA <= x"6600"; - when "01" & x"319" => DATA <= x"0008"; - when "01" & x"31a" => DATA <= x"2412"; - when "01" & x"31b" => DATA <= x"6000"; - when "01" & x"31c" => DATA <= x"0008"; - when "01" & x"31d" => DATA <= x"2812"; - when "01" & x"31e" => DATA <= x"2482"; - when "01" & x"31f" => DATA <= x"c942"; - when "01" & x"320" => DATA <= x"4a83"; - when "01" & x"321" => DATA <= x"6600"; - when "01" & x"322" => DATA <= x"0008"; - when "01" & x"323" => DATA <= x"2612"; - when "01" & x"324" => DATA <= x"6000"; - when "01" & x"325" => DATA <= x"0008"; - when "01" & x"326" => DATA <= x"2813"; - when "01" & x"327" => DATA <= x"2681"; - when "01" & x"328" => DATA <= x"c941"; - when "01" & x"329" => DATA <= x"281f"; - when "01" & x"32a" => DATA <= x"4e75"; - when "01" & x"32b" => DATA <= x"6000"; - when "01" & x"32c" => DATA <= x"e11e"; + when "01" & x"306" => DATA <= x"d1c0"; + when "01" & x"307" => DATA <= x"d1c0"; + when "01" & x"308" => DATA <= x"2258"; + when "01" & x"309" => DATA <= x"b3fc"; + when "01" & x"30a" => DATA <= x"0000"; + when "01" & x"30b" => DATA <= x"0000"; + when "01" & x"30c" => DATA <= x"67dc"; + when "01" & x"30d" => DATA <= x"2f04"; + when "01" & x"30e" => DATA <= x"2458"; + when "01" & x"30f" => DATA <= x"2658"; + when "01" & x"310" => DATA <= x"4a81"; + when "01" & x"311" => DATA <= x"6600"; + when "01" & x"312" => DATA <= x"0008"; + when "01" & x"313" => DATA <= x"2211"; + when "01" & x"314" => DATA <= x"6000"; + when "01" & x"315" => DATA <= x"0008"; + when "01" & x"316" => DATA <= x"2811"; + when "01" & x"317" => DATA <= x"2281"; + when "01" & x"318" => DATA <= x"c941"; + when "01" & x"319" => DATA <= x"4a82"; + when "01" & x"31a" => DATA <= x"6600"; + when "01" & x"31b" => DATA <= x"0008"; + when "01" & x"31c" => DATA <= x"2412"; + when "01" & x"31d" => DATA <= x"6000"; + when "01" & x"31e" => DATA <= x"0008"; + when "01" & x"31f" => DATA <= x"2812"; + when "01" & x"320" => DATA <= x"2482"; + when "01" & x"321" => DATA <= x"c942"; + when "01" & x"322" => DATA <= x"4a83"; + when "01" & x"323" => DATA <= x"6600"; + when "01" & x"324" => DATA <= x"0008"; + when "01" & x"325" => DATA <= x"2612"; + when "01" & x"326" => DATA <= x"6000"; + when "01" & x"327" => DATA <= x"0008"; + when "01" & x"328" => DATA <= x"2813"; + when "01" & x"329" => DATA <= x"2681"; + when "01" & x"32a" => DATA <= x"c941"; + when "01" & x"32b" => DATA <= x"281f"; + when "01" & x"32c" => DATA <= x"4e75"; when "01" & x"32d" => DATA <= x"6000"; - when "01" & x"32e" => DATA <= x"e11a"; - when "01" & x"32f" => DATA <= x"0200"; - when "01" & x"330" => DATA <= x"0040"; - when "01" & x"331" => DATA <= x"8138"; - when "01" & x"332" => DATA <= x"0535"; - when "01" & x"333" => DATA <= x"4e75"; - when "01" & x"334" => DATA <= x"21fc"; - when "01" & x"335" => DATA <= x"0000"; - when "01" & x"336" => DATA <= x"0000"; - when "01" & x"337" => DATA <= x"0518"; - when "01" & x"338" => DATA <= x"b2bc"; - when "01" & x"339" => DATA <= x"4142"; - when "01" & x"33a" => DATA <= x"4558"; - when "01" & x"33b" => DATA <= x"6600"; - when "01" & x"33c" => DATA <= x"0018"; - when "01" & x"33d" => DATA <= x"21c2"; - when "01" & x"33e" => DATA <= x"0518"; - when "01" & x"33f" => DATA <= x"b4b8"; - when "01" & x"340" => DATA <= x"051c"; - when "01" & x"341" => DATA <= x"6300"; - when "01" & x"342" => DATA <= x"000c"; - when "01" & x"343" => DATA <= x"203c"; - when "01" & x"344" => DATA <= x"003f"; - when "01" & x"345" => DATA <= x"2e60"; - when "01" & x"346" => DATA <= x"6100"; - when "01" & x"347" => DATA <= x"ea92"; - when "01" & x"348" => DATA <= x"2e78"; - when "01" & x"349" => DATA <= x"0508"; - when "01" & x"34a" => DATA <= x"6000"; - when "01" & x"34b" => DATA <= x"dcc8"; + when "01" & x"32e" => DATA <= x"e11e"; + when "01" & x"32f" => DATA <= x"6000"; + when "01" & x"330" => DATA <= x"e11a"; + when "01" & x"331" => DATA <= x"0200"; + when "01" & x"332" => DATA <= x"0040"; + when "01" & x"333" => DATA <= x"8138"; + when "01" & x"334" => DATA <= x"0535"; + when "01" & x"335" => DATA <= x"4e75"; + when "01" & x"336" => DATA <= x"21fc"; + when "01" & x"337" => DATA <= x"0000"; + when "01" & x"338" => DATA <= x"0000"; + when "01" & x"339" => DATA <= x"0518"; + when "01" & x"33a" => DATA <= x"b2bc"; + when "01" & x"33b" => DATA <= x"4142"; + when "01" & x"33c" => DATA <= x"4558"; + when "01" & x"33d" => DATA <= x"6600"; + when "01" & x"33e" => DATA <= x"0018"; + when "01" & x"33f" => DATA <= x"21c2"; + when "01" & x"340" => DATA <= x"0518"; + when "01" & x"341" => DATA <= x"b4b8"; + when "01" & x"342" => DATA <= x"051c"; + when "01" & x"343" => DATA <= x"6300"; + when "01" & x"344" => DATA <= x"000c"; + when "01" & x"345" => DATA <= x"203c"; + when "01" & x"346" => DATA <= x"003f"; + when "01" & x"347" => DATA <= x"2e64"; + when "01" & x"348" => DATA <= x"6100"; + when "01" & x"349" => DATA <= x"ea92"; + when "01" & x"34a" => DATA <= x"2e78"; + when "01" & x"34b" => DATA <= x"0508"; when "01" & x"34c" => DATA <= x"6000"; - when "01" & x"34d" => DATA <= x"e0dc"; + when "01" & x"34d" => DATA <= x"dcc8"; when "01" & x"34e" => DATA <= x"6000"; - when "01" & x"34f" => DATA <= x"e0d8"; - when "01" & x"350" => DATA <= x"21cd"; - when "01" & x"351" => DATA <= x"0600"; - when "01" & x"352" => DATA <= x"223c"; - when "01" & x"353" => DATA <= x"0000"; - when "01" & x"354" => DATA <= x"0600"; - when "01" & x"355" => DATA <= x"7005"; - when "01" & x"356" => DATA <= x"6100"; - when "01" & x"357" => DATA <= x"e536"; - when "01" & x"358" => DATA <= x"1cf8"; - when "01" & x"359" => DATA <= x"0605"; - when "01" & x"35a" => DATA <= x"51ca"; - when "01" & x"35b" => DATA <= x"ffee"; - when "01" & x"35c" => DATA <= x"4e75"; - when "01" & x"35d" => DATA <= x"21cd"; - when "01" & x"35e" => DATA <= x"0600"; - when "01" & x"35f" => DATA <= x"223c"; - when "01" & x"360" => DATA <= x"0000"; - when "01" & x"361" => DATA <= x"0600"; - when "01" & x"362" => DATA <= x"11de"; - when "01" & x"363" => DATA <= x"0605"; - when "01" & x"364" => DATA <= x"7006"; - when "01" & x"365" => DATA <= x"6100"; - when "01" & x"366" => DATA <= x"e518"; - when "01" & x"367" => DATA <= x"51ca"; - when "01" & x"368" => DATA <= x"ffee"; - when "01" & x"369" => DATA <= x"4e75"; - when "01" & x"36a" => DATA <= x"2a7c"; - when "01" & x"36b" => DATA <= x"003f"; - when "01" & x"36c" => DATA <= x"37e4"; - when "01" & x"36d" => DATA <= x"2c7c"; - when "01" & x"36e" => DATA <= x"ffff"; - when "01" & x"36f" => DATA <= x"2500"; - when "01" & x"370" => DATA <= x"243c"; - when "01" & x"371" => DATA <= x"0000"; - when "01" & x"372" => DATA <= x"01fb"; - when "01" & x"373" => DATA <= x"61d2"; - when "01" & x"374" => DATA <= x"2a7c"; - when "01" & x"375" => DATA <= x"ffff"; - when "01" & x"376" => DATA <= x"0200"; - when "01" & x"377" => DATA <= x"2c7c"; - when "01" & x"378" => DATA <= x"0000"; - when "01" & x"379" => DATA <= x"0600"; - when "01" & x"37a" => DATA <= x"7402"; - when "01" & x"37b" => DATA <= x"61a8"; - when "01" & x"37c" => DATA <= x"2a7c"; - when "01" & x"37d" => DATA <= x"0000"; - when "01" & x"37e" => DATA <= x"0600"; - when "01" & x"37f" => DATA <= x"2c7c"; - when "01" & x"380" => DATA <= x"ffff"; - when "01" & x"381" => DATA <= x"2503"; - when "01" & x"382" => DATA <= x"7402"; - when "01" & x"383" => DATA <= x"61b2"; - when "01" & x"384" => DATA <= x"31fc"; - when "01" & x"385" => DATA <= x"2500"; - when "01" & x"386" => DATA <= x"0600"; - when "01" & x"387" => DATA <= x"2a7c"; - when "01" & x"388" => DATA <= x"0000"; - when "01" & x"389" => DATA <= x"0600"; - when "01" & x"38a" => DATA <= x"2c7c"; - when "01" & x"38b" => DATA <= x"ffff"; - when "01" & x"38c" => DATA <= x"0200"; - when "01" & x"38d" => DATA <= x"7402"; - when "01" & x"38e" => DATA <= x"619c"; - when "01" & x"38f" => DATA <= x"4e75"; - when "01" & x"390" => DATA <= x"0c1e"; - when "01" & x"391" => DATA <= x"0020"; - when "01" & x"392" => DATA <= x"67fa"; - when "01" & x"393" => DATA <= x"1026"; - when "01" & x"394" => DATA <= x"b03c"; - when "01" & x"395" => DATA <= x"000d"; - when "01" & x"396" => DATA <= x"4e75"; - when "01" & x"397" => DATA <= x"c38e"; - when "01" & x"398" => DATA <= x"0c1e"; - when "01" & x"399" => DATA <= x"0020"; - when "01" & x"39a" => DATA <= x"67fa"; - when "01" & x"39b" => DATA <= x"1026"; - when "01" & x"39c" => DATA <= x"c38e"; - when "01" & x"39d" => DATA <= x"b03c"; - when "01" & x"39e" => DATA <= x"000d"; - when "01" & x"39f" => DATA <= x"4e75"; - when "01" & x"3a0" => DATA <= x"7010"; - when "01" & x"3a1" => DATA <= x"220e"; - when "01" & x"3a2" => DATA <= x"6100"; - when "01" & x"3a3" => DATA <= x"e886"; - when "01" & x"3a4" => DATA <= x"6900"; - when "01" & x"3a5" => DATA <= x"000c"; - when "01" & x"3a6" => DATA <= x"2c41"; - when "01" & x"3a7" => DATA <= x"2202"; - when "01" & x"3a8" => DATA <= x"023c"; - when "01" & x"3a9" => DATA <= x"00fe"; - when "01" & x"3aa" => DATA <= x"4e75"; - when "01" & x"3ab" => DATA <= x"2c41"; - when "01" & x"3ac" => DATA <= x"2202"; - when "01" & x"3ad" => DATA <= x"003c"; - when "01" & x"3ae" => DATA <= x"0001"; - when "01" & x"3af" => DATA <= x"4e75"; - when "01" & x"3b0" => DATA <= x"4281"; - when "01" & x"3b1" => DATA <= x"101e"; - when "01" & x"3b2" => DATA <= x"2f00"; - when "01" & x"3b3" => DATA <= x"0c00"; - when "01" & x"3b4" => DATA <= x"0030"; - when "01" & x"3b5" => DATA <= x"6500"; - when "01" & x"3b6" => DATA <= x"002c"; - when "01" & x"3b7" => DATA <= x"0c00"; - when "01" & x"3b8" => DATA <= x"0039"; - when "01" & x"3b9" => DATA <= x"6300"; - when "01" & x"3ba" => DATA <= x"0018"; - when "01" & x"3bb" => DATA <= x"0200"; - when "01" & x"3bc" => DATA <= x"00df"; - when "01" & x"3bd" => DATA <= x"0c00"; - when "01" & x"3be" => DATA <= x"0041"; - when "01" & x"3bf" => DATA <= x"6500"; - when "01" & x"3c0" => DATA <= x"0018"; - when "01" & x"3c1" => DATA <= x"0c00"; - when "01" & x"3c2" => DATA <= x"0046"; - when "01" & x"3c3" => DATA <= x"6200"; - when "01" & x"3c4" => DATA <= x"0010"; - when "01" & x"3c5" => DATA <= x"5f00"; - when "01" & x"3c6" => DATA <= x"0200"; - when "01" & x"3c7" => DATA <= x"000f"; - when "01" & x"3c8" => DATA <= x"e981"; - when "01" & x"3c9" => DATA <= x"d200"; - when "01" & x"3ca" => DATA <= x"201f"; - when "01" & x"3cb" => DATA <= x"60ca"; + when "01" & x"34f" => DATA <= x"e0dc"; + when "01" & x"350" => DATA <= x"6000"; + when "01" & x"351" => DATA <= x"e0d8"; + when "01" & x"352" => DATA <= x"21cd"; + when "01" & x"353" => DATA <= x"0600"; + when "01" & x"354" => DATA <= x"223c"; + when "01" & x"355" => DATA <= x"0000"; + when "01" & x"356" => DATA <= x"0600"; + when "01" & x"357" => DATA <= x"7005"; + when "01" & x"358" => DATA <= x"6100"; + when "01" & x"359" => DATA <= x"e536"; + when "01" & x"35a" => DATA <= x"1cf8"; + when "01" & x"35b" => DATA <= x"0605"; + when "01" & x"35c" => DATA <= x"51ca"; + when "01" & x"35d" => DATA <= x"ffee"; + when "01" & x"35e" => DATA <= x"4e75"; + when "01" & x"35f" => DATA <= x"21cd"; + when "01" & x"360" => DATA <= x"0600"; + when "01" & x"361" => DATA <= x"223c"; + when "01" & x"362" => DATA <= x"0000"; + when "01" & x"363" => DATA <= x"0600"; + when "01" & x"364" => DATA <= x"11de"; + when "01" & x"365" => DATA <= x"0605"; + when "01" & x"366" => DATA <= x"7006"; + when "01" & x"367" => DATA <= x"6100"; + when "01" & x"368" => DATA <= x"e518"; + when "01" & x"369" => DATA <= x"51ca"; + when "01" & x"36a" => DATA <= x"ffee"; + when "01" & x"36b" => DATA <= x"4e75"; + when "01" & x"36c" => DATA <= x"2a7c"; + when "01" & x"36d" => DATA <= x"003f"; + when "01" & x"36e" => DATA <= x"37e8"; + when "01" & x"36f" => DATA <= x"2c7c"; + when "01" & x"370" => DATA <= x"ffff"; + when "01" & x"371" => DATA <= x"2500"; + when "01" & x"372" => DATA <= x"243c"; + when "01" & x"373" => DATA <= x"0000"; + when "01" & x"374" => DATA <= x"01fb"; + when "01" & x"375" => DATA <= x"61d2"; + when "01" & x"376" => DATA <= x"2a7c"; + when "01" & x"377" => DATA <= x"ffff"; + when "01" & x"378" => DATA <= x"0200"; + when "01" & x"379" => DATA <= x"2c7c"; + when "01" & x"37a" => DATA <= x"0000"; + when "01" & x"37b" => DATA <= x"0600"; + when "01" & x"37c" => DATA <= x"7402"; + when "01" & x"37d" => DATA <= x"61a8"; + when "01" & x"37e" => DATA <= x"2a7c"; + when "01" & x"37f" => DATA <= x"0000"; + when "01" & x"380" => DATA <= x"0600"; + when "01" & x"381" => DATA <= x"2c7c"; + when "01" & x"382" => DATA <= x"ffff"; + when "01" & x"383" => DATA <= x"2503"; + when "01" & x"384" => DATA <= x"7402"; + when "01" & x"385" => DATA <= x"61b2"; + when "01" & x"386" => DATA <= x"31fc"; + when "01" & x"387" => DATA <= x"2500"; + when "01" & x"388" => DATA <= x"0600"; + when "01" & x"389" => DATA <= x"2a7c"; + when "01" & x"38a" => DATA <= x"0000"; + when "01" & x"38b" => DATA <= x"0600"; + when "01" & x"38c" => DATA <= x"2c7c"; + when "01" & x"38d" => DATA <= x"ffff"; + when "01" & x"38e" => DATA <= x"0200"; + when "01" & x"38f" => DATA <= x"7402"; + when "01" & x"390" => DATA <= x"619c"; + when "01" & x"391" => DATA <= x"4e75"; + when "01" & x"392" => DATA <= x"0c1e"; + when "01" & x"393" => DATA <= x"0020"; + when "01" & x"394" => DATA <= x"67fa"; + when "01" & x"395" => DATA <= x"1026"; + when "01" & x"396" => DATA <= x"b03c"; + when "01" & x"397" => DATA <= x"000d"; + when "01" & x"398" => DATA <= x"4e75"; + when "01" & x"399" => DATA <= x"c38e"; + when "01" & x"39a" => DATA <= x"0c1e"; + when "01" & x"39b" => DATA <= x"0020"; + when "01" & x"39c" => DATA <= x"67fa"; + when "01" & x"39d" => DATA <= x"1026"; + when "01" & x"39e" => DATA <= x"c38e"; + when "01" & x"39f" => DATA <= x"b03c"; + when "01" & x"3a0" => DATA <= x"000d"; + when "01" & x"3a1" => DATA <= x"4e75"; + when "01" & x"3a2" => DATA <= x"7010"; + when "01" & x"3a3" => DATA <= x"220e"; + when "01" & x"3a4" => DATA <= x"6100"; + when "01" & x"3a5" => DATA <= x"e886"; + when "01" & x"3a6" => DATA <= x"6900"; + when "01" & x"3a7" => DATA <= x"000c"; + when "01" & x"3a8" => DATA <= x"2c41"; + when "01" & x"3a9" => DATA <= x"2202"; + when "01" & x"3aa" => DATA <= x"023c"; + when "01" & x"3ab" => DATA <= x"00fe"; + when "01" & x"3ac" => DATA <= x"4e75"; + when "01" & x"3ad" => DATA <= x"2c41"; + when "01" & x"3ae" => DATA <= x"2202"; + when "01" & x"3af" => DATA <= x"003c"; + when "01" & x"3b0" => DATA <= x"0001"; + when "01" & x"3b1" => DATA <= x"4e75"; + when "01" & x"3b2" => DATA <= x"4281"; + when "01" & x"3b3" => DATA <= x"101e"; + when "01" & x"3b4" => DATA <= x"2f00"; + when "01" & x"3b5" => DATA <= x"0c00"; + when "01" & x"3b6" => DATA <= x"0030"; + when "01" & x"3b7" => DATA <= x"6500"; + when "01" & x"3b8" => DATA <= x"002c"; + when "01" & x"3b9" => DATA <= x"0c00"; + when "01" & x"3ba" => DATA <= x"0039"; + when "01" & x"3bb" => DATA <= x"6300"; + when "01" & x"3bc" => DATA <= x"0018"; + when "01" & x"3bd" => DATA <= x"0200"; + when "01" & x"3be" => DATA <= x"00df"; + when "01" & x"3bf" => DATA <= x"0c00"; + when "01" & x"3c0" => DATA <= x"0041"; + when "01" & x"3c1" => DATA <= x"6500"; + when "01" & x"3c2" => DATA <= x"0018"; + when "01" & x"3c3" => DATA <= x"0c00"; + when "01" & x"3c4" => DATA <= x"0046"; + when "01" & x"3c5" => DATA <= x"6200"; + when "01" & x"3c6" => DATA <= x"0010"; + when "01" & x"3c7" => DATA <= x"5f00"; + when "01" & x"3c8" => DATA <= x"0200"; + when "01" & x"3c9" => DATA <= x"000f"; + when "01" & x"3ca" => DATA <= x"e981"; + when "01" & x"3cb" => DATA <= x"d200"; when "01" & x"3cc" => DATA <= x"201f"; - when "01" & x"3cd" => DATA <= x"0c00"; - when "01" & x"3ce" => DATA <= x"000d"; - when "01" & x"3cf" => DATA <= x"6700"; - when "01" & x"3d0" => DATA <= x"0012"; - when "01" & x"3d1" => DATA <= x"0c00"; - when "01" & x"3d2" => DATA <= x"0020"; - when "01" & x"3d3" => DATA <= x"6700"; - when "01" & x"3d4" => DATA <= x"000a"; - when "01" & x"3d5" => DATA <= x"534e"; - when "01" & x"3d6" => DATA <= x"003c"; - when "01" & x"3d7" => DATA <= x"0001"; - when "01" & x"3d8" => DATA <= x"4e75"; - when "01" & x"3d9" => DATA <= x"534e"; - when "01" & x"3da" => DATA <= x"023c"; - when "01" & x"3db" => DATA <= x"00fe"; - when "01" & x"3dc" => DATA <= x"4e75"; - when "01" & x"3dd" => DATA <= x"101e"; - when "01" & x"3de" => DATA <= x"0c00"; - when "01" & x"3df" => DATA <= x"0020"; - when "01" & x"3e0" => DATA <= x"6500"; - when "01" & x"3e1" => DATA <= x"000a"; - when "01" & x"3e2" => DATA <= x"0c00"; - when "01" & x"3e3" => DATA <= x"007f"; - when "01" & x"3e4" => DATA <= x"6500"; - when "01" & x"3e5" => DATA <= x"0006"; - when "01" & x"3e6" => DATA <= x"103c"; - when "01" & x"3e7" => DATA <= x"002e"; - when "01" & x"3e8" => DATA <= x"4e75"; - when "01" & x"3e9" => DATA <= x"0280"; - when "01" & x"3ea" => DATA <= x"0000"; - when "01" & x"3eb" => DATA <= x"0007"; - when "01" & x"3ec" => DATA <= x"e140"; - when "01" & x"3ed" => DATA <= x"027c"; - when "01" & x"3ee" => DATA <= x"f8ff"; - when "01" & x"3ef" => DATA <= x"221f"; - when "01" & x"3f0" => DATA <= x"4e75"; - when "01" & x"3f1" => DATA <= x"0d0a"; - when "01" & x"3f2" => DATA <= x"4163"; - when "01" & x"3f3" => DATA <= x"6f72"; - when "01" & x"3f4" => DATA <= x"6e20"; - when "01" & x"3f5" => DATA <= x"3638"; - when "01" & x"3f6" => DATA <= x"0020"; - when "01" & x"3f7" => DATA <= x"7365"; - when "01" & x"3f8" => DATA <= x"636f"; - when "01" & x"3f9" => DATA <= x"6e64"; - when "01" & x"3fa" => DATA <= x"2070"; - when "01" & x"3fb" => DATA <= x"726f"; - when "01" & x"3fc" => DATA <= x"6365"; - when "01" & x"3fd" => DATA <= x"7373"; - when "01" & x"3fe" => DATA <= x"6f72"; - when "01" & x"3ff" => DATA <= x"2000"; - when "01" & x"400" => DATA <= x"3030"; - when "01" & x"401" => DATA <= x"3830"; + when "01" & x"3cd" => DATA <= x"60ca"; + when "01" & x"3ce" => DATA <= x"201f"; + when "01" & x"3cf" => DATA <= x"0c00"; + when "01" & x"3d0" => DATA <= x"000d"; + when "01" & x"3d1" => DATA <= x"6700"; + when "01" & x"3d2" => DATA <= x"0012"; + when "01" & x"3d3" => DATA <= x"0c00"; + when "01" & x"3d4" => DATA <= x"0020"; + when "01" & x"3d5" => DATA <= x"6700"; + when "01" & x"3d6" => DATA <= x"000a"; + when "01" & x"3d7" => DATA <= x"534e"; + when "01" & x"3d8" => DATA <= x"003c"; + when "01" & x"3d9" => DATA <= x"0001"; + when "01" & x"3da" => DATA <= x"4e75"; + when "01" & x"3db" => DATA <= x"534e"; + when "01" & x"3dc" => DATA <= x"023c"; + when "01" & x"3dd" => DATA <= x"00fe"; + when "01" & x"3de" => DATA <= x"4e75"; + when "01" & x"3df" => DATA <= x"101e"; + when "01" & x"3e0" => DATA <= x"0c00"; + when "01" & x"3e1" => DATA <= x"0020"; + when "01" & x"3e2" => DATA <= x"6500"; + when "01" & x"3e3" => DATA <= x"000a"; + when "01" & x"3e4" => DATA <= x"0c00"; + when "01" & x"3e5" => DATA <= x"007f"; + when "01" & x"3e6" => DATA <= x"6500"; + when "01" & x"3e7" => DATA <= x"0006"; + when "01" & x"3e8" => DATA <= x"103c"; + when "01" & x"3e9" => DATA <= x"002e"; + when "01" & x"3ea" => DATA <= x"4e75"; + when "01" & x"3eb" => DATA <= x"0280"; + when "01" & x"3ec" => DATA <= x"0000"; + when "01" & x"3ed" => DATA <= x"0007"; + when "01" & x"3ee" => DATA <= x"e140"; + when "01" & x"3ef" => DATA <= x"027c"; + when "01" & x"3f0" => DATA <= x"f8ff"; + when "01" & x"3f1" => DATA <= x"221f"; + when "01" & x"3f2" => DATA <= x"4e75"; + when "01" & x"3f3" => DATA <= x"0d0a"; + when "01" & x"3f4" => DATA <= x"4163"; + when "01" & x"3f5" => DATA <= x"6f72"; + when "01" & x"3f6" => DATA <= x"6e20"; + when "01" & x"3f7" => DATA <= x"3638"; + when "01" & x"3f8" => DATA <= x"0020"; + when "01" & x"3f9" => DATA <= x"7365"; + when "01" & x"3fa" => DATA <= x"636f"; + when "01" & x"3fb" => DATA <= x"6e64"; + when "01" & x"3fc" => DATA <= x"2070"; + when "01" & x"3fd" => DATA <= x"726f"; + when "01" & x"3fe" => DATA <= x"6365"; + when "01" & x"3ff" => DATA <= x"7373"; + when "01" & x"400" => DATA <= x"6f72"; + when "01" & x"401" => DATA <= x"2000"; when "01" & x"402" => DATA <= x"3030"; - when "01" & x"403" => DATA <= x"3031"; + when "01" & x"403" => DATA <= x"3830"; when "01" & x"404" => DATA <= x"3030"; - when "01" & x"405" => DATA <= x"3230"; - when "01" & x"406" => DATA <= x"3033"; - when "01" & x"407" => DATA <= x"3030"; - when "01" & x"408" => DATA <= x"3430"; - when "01" & x"409" => DATA <= x"3036"; - when "01" & x"40a" => DATA <= x"3030"; - when "01" & x"40b" => DATA <= x"3730"; - when "01" & x"40c" => DATA <= x"3330"; - when "01" & x"40d" => DATA <= x"304b"; - when "01" & x"40e" => DATA <= x"070d"; - when "01" & x"40f" => DATA <= x"0a0d"; - when "01" & x"410" => DATA <= x"0a00"; - when "01" & x"411" => DATA <= x"1701"; - when "01" & x"412" => DATA <= x"0000"; - when "01" & x"413" => DATA <= x"0000"; + when "01" & x"405" => DATA <= x"3031"; + when "01" & x"406" => DATA <= x"3030"; + when "01" & x"407" => DATA <= x"3230"; + when "01" & x"408" => DATA <= x"3033"; + when "01" & x"409" => DATA <= x"3030"; + when "01" & x"40a" => DATA <= x"3430"; + when "01" & x"40b" => DATA <= x"3036"; + when "01" & x"40c" => DATA <= x"3030"; + when "01" & x"40d" => DATA <= x"3730"; + when "01" & x"40e" => DATA <= x"3330"; + when "01" & x"40f" => DATA <= x"304b"; + when "01" & x"410" => DATA <= x"070d"; + when "01" & x"411" => DATA <= x"0a0d"; + when "01" & x"412" => DATA <= x"0a00"; + when "01" & x"413" => DATA <= x"1701"; when "01" & x"414" => DATA <= x"0000"; when "01" & x"415" => DATA <= x"0000"; - when "01" & x"416" => DATA <= x"0017"; - when "01" & x"417" => DATA <= x"0101"; - when "01" & x"418" => DATA <= x"0000"; - when "01" & x"419" => DATA <= x"0000"; + when "01" & x"416" => DATA <= x"0000"; + when "01" & x"417" => DATA <= x"0000"; + when "01" & x"418" => DATA <= x"0017"; + when "01" & x"419" => DATA <= x"0101"; when "01" & x"41a" => DATA <= x"0000"; when "01" & x"41b" => DATA <= x"0000"; - when "01" & x"41c" => DATA <= x"0a0d"; - when "01" & x"41d" => DATA <= x"4369"; - when "01" & x"41e" => DATA <= x"7363"; - when "01" & x"41f" => DATA <= x"4f53"; - when "01" & x"420" => DATA <= x"2076"; - when "01" & x"421" => DATA <= x"322e"; - when "01" & x"422" => DATA <= x"3031"; - when "01" & x"423" => DATA <= x"2028"; - when "01" & x"424" => DATA <= x"4a75"; - when "01" & x"425" => DATA <= x"6c79"; - when "01" & x"426" => DATA <= x"2033"; - when "01" & x"427" => DATA <= x"312c"; - when "01" & x"428" => DATA <= x"2032"; - when "01" & x"429" => DATA <= x"3031"; - when "01" & x"42a" => DATA <= x"3529"; - when "01" & x"42b" => DATA <= x"0a0d"; - when "01" & x"42c" => DATA <= x"0020"; - when "01" & x"42d" => DATA <= x"2020"; - when "01" & x"42e" => DATA <= x"5357"; - when "01" & x"42f" => DATA <= x"490a"; - when "01" & x"430" => DATA <= x"0d20"; - when "01" & x"431" => DATA <= x"2020"; - when "01" & x"432" => DATA <= x"5455"; - when "01" & x"433" => DATA <= x"4245"; - when "01" & x"434" => DATA <= x"0a0d"; - when "01" & x"435" => DATA <= x"0020"; - when "01" & x"436" => DATA <= x"2020"; - when "01" & x"437" => DATA <= x"4552"; - when "01" & x"438" => DATA <= x"524f"; - when "01" & x"439" => DATA <= x"5220"; - when "01" & x"43a" => DATA <= x"286e"; - when "01" & x"43b" => DATA <= x"756d"; - when "01" & x"43c" => DATA <= x"6265"; - when "01" & x"43d" => DATA <= x"7229"; - when "01" & x"43e" => DATA <= x"203c"; - when "01" & x"43f" => DATA <= x"6d65"; - when "01" & x"440" => DATA <= x"7373"; - when "01" & x"441" => DATA <= x"6167"; - when "01" & x"442" => DATA <= x"653e"; - when "01" & x"443" => DATA <= x"0a0d"; - when "01" & x"444" => DATA <= x"2020"; - when "01" & x"445" => DATA <= x"2046"; - when "01" & x"446" => DATA <= x"4c41"; - when "01" & x"447" => DATA <= x"5348"; - when "01" & x"448" => DATA <= x"203c"; - when "01" & x"449" => DATA <= x"6673"; - when "01" & x"44a" => DATA <= x"703e"; - when "01" & x"44b" => DATA <= x"0a0d"; - when "01" & x"44c" => DATA <= x"2020"; - when "01" & x"44d" => DATA <= x"2047"; - when "01" & x"44e" => DATA <= x"4f20"; - when "01" & x"44f" => DATA <= x"3c61"; - when "01" & x"450" => DATA <= x"6464"; - when "01" & x"451" => DATA <= x"723e"; - when "01" & x"452" => DATA <= x"0a0d"; - when "01" & x"453" => DATA <= x"2020"; - when "01" & x"454" => DATA <= x"204d"; - when "01" & x"455" => DATA <= x"4f4e"; - when "01" & x"456" => DATA <= x"0a0d"; - when "01" & x"457" => DATA <= x"2020"; - when "01" & x"458" => DATA <= x"2051"; - when "01" & x"459" => DATA <= x"5549"; - when "01" & x"45a" => DATA <= x"540a"; - when "01" & x"45b" => DATA <= x"0d20"; - when "01" & x"45c" => DATA <= x"2020"; - when "01" & x"45d" => DATA <= x"545a"; - when "01" & x"45e" => DATA <= x"4150"; - when "01" & x"45f" => DATA <= x"2028"; - when "01" & x"460" => DATA <= x"6164"; - when "01" & x"461" => DATA <= x"6472"; - when "01" & x"462" => DATA <= x"290a"; - when "01" & x"463" => DATA <= x"0d20"; - when "01" & x"464" => DATA <= x"2020"; - when "01" & x"465" => DATA <= x"5846"; - when "01" & x"466" => DATA <= x"4552"; - when "01" & x"467" => DATA <= x"203c"; - when "01" & x"468" => DATA <= x"696f"; - when "01" & x"469" => DATA <= x"2061"; - when "01" & x"46a" => DATA <= x"6464"; - when "01" & x"46b" => DATA <= x"722e"; - when "01" & x"46c" => DATA <= x"3e20"; - when "01" & x"46d" => DATA <= x"3c61"; - when "01" & x"46e" => DATA <= x"6464"; - when "01" & x"46f" => DATA <= x"723e"; - when "01" & x"470" => DATA <= x"203c"; - when "01" & x"471" => DATA <= x"6c65"; - when "01" & x"472" => DATA <= x"6e67"; - when "01" & x"473" => DATA <= x"7468"; - when "01" & x"474" => DATA <= x"3e20"; - when "01" & x"475" => DATA <= x"2852"; - when "01" & x"476" => DATA <= x"7c57"; - when "01" & x"477" => DATA <= x"2920"; - when "01" & x"478" => DATA <= x"2853"; - when "01" & x"479" => DATA <= x"7c4d"; - when "01" & x"47a" => DATA <= x"290a"; - when "01" & x"47b" => DATA <= x"0d00"; - when "01" & x"47c" => DATA <= x"5379"; - when "01" & x"47d" => DATA <= x"6e74"; - when "01" & x"47e" => DATA <= x"6178"; - when "01" & x"47f" => DATA <= x"3a20"; - when "01" & x"480" => DATA <= x"4552"; - when "01" & x"481" => DATA <= x"524f"; - when "01" & x"482" => DATA <= x"5220"; - when "01" & x"483" => DATA <= x"286e"; - when "01" & x"484" => DATA <= x"756d"; - when "01" & x"485" => DATA <= x"6265"; - when "01" & x"486" => DATA <= x"7229"; - when "01" & x"487" => DATA <= x"203c"; - when "01" & x"488" => DATA <= x"6d65"; - when "01" & x"489" => DATA <= x"7373"; - when "01" & x"48a" => DATA <= x"6167"; - when "01" & x"48b" => DATA <= x"653e"; - when "01" & x"48c" => DATA <= x"0a0d"; - when "01" & x"48d" => DATA <= x"0053"; - when "01" & x"48e" => DATA <= x"796e"; - when "01" & x"48f" => DATA <= x"7461"; - when "01" & x"490" => DATA <= x"783a"; - when "01" & x"491" => DATA <= x"2046"; - when "01" & x"492" => DATA <= x"4c41"; - when "01" & x"493" => DATA <= x"5348"; - when "01" & x"494" => DATA <= x"203c"; - when "01" & x"495" => DATA <= x"6673"; - when "01" & x"496" => DATA <= x"703e"; - when "01" & x"497" => DATA <= x"0a0d"; - when "01" & x"498" => DATA <= x"0053"; - when "01" & x"499" => DATA <= x"796e"; - when "01" & x"49a" => DATA <= x"7461"; - when "01" & x"49b" => DATA <= x"783a"; - when "01" & x"49c" => DATA <= x"2047"; - when "01" & x"49d" => DATA <= x"4f20"; - when "01" & x"49e" => DATA <= x"3c61"; - when "01" & x"49f" => DATA <= x"6464"; - when "01" & x"4a0" => DATA <= x"723e"; - when "01" & x"4a1" => DATA <= x"0a0d"; - when "01" & x"4a2" => DATA <= x"0053"; - when "01" & x"4a3" => DATA <= x"796e"; - when "01" & x"4a4" => DATA <= x"7461"; - when "01" & x"4a5" => DATA <= x"783a"; - when "01" & x"4a6" => DATA <= x"204d"; - when "01" & x"4a7" => DATA <= x"4f4e"; - when "01" & x"4a8" => DATA <= x"0a0d"; - when "01" & x"4a9" => DATA <= x"0053"; - when "01" & x"4aa" => DATA <= x"796e"; - when "01" & x"4ab" => DATA <= x"7461"; - when "01" & x"4ac" => DATA <= x"783a"; - when "01" & x"4ad" => DATA <= x"2054"; - when "01" & x"4ae" => DATA <= x"5a41"; - when "01" & x"4af" => DATA <= x"5020"; - when "01" & x"4b0" => DATA <= x"2861"; - when "01" & x"4b1" => DATA <= x"6464"; - when "01" & x"4b2" => DATA <= x"7229"; - when "01" & x"4b3" => DATA <= x"0a0d"; - when "01" & x"4b4" => DATA <= x"0053"; - when "01" & x"4b5" => DATA <= x"796e"; - when "01" & x"4b6" => DATA <= x"7461"; - when "01" & x"4b7" => DATA <= x"783a"; - when "01" & x"4b8" => DATA <= x"2058"; - when "01" & x"4b9" => DATA <= x"4645"; - when "01" & x"4ba" => DATA <= x"5220"; - when "01" & x"4bb" => DATA <= x"3c69"; - when "01" & x"4bc" => DATA <= x"6f20"; - when "01" & x"4bd" => DATA <= x"6164"; - when "01" & x"4be" => DATA <= x"6472"; - when "01" & x"4bf" => DATA <= x"2e3e"; - when "01" & x"4c0" => DATA <= x"203c"; - when "01" & x"4c1" => DATA <= x"6164"; - when "01" & x"4c2" => DATA <= x"6472"; - when "01" & x"4c3" => DATA <= x"3e20"; - when "01" & x"4c4" => DATA <= x"3c6c"; - when "01" & x"4c5" => DATA <= x"656e"; - when "01" & x"4c6" => DATA <= x"6774"; - when "01" & x"4c7" => DATA <= x"683e"; - when "01" & x"4c8" => DATA <= x"2028"; - when "01" & x"4c9" => DATA <= x"527c"; - when "01" & x"4ca" => DATA <= x"5729"; - when "01" & x"4cb" => DATA <= x"2028"; - when "01" & x"4cc" => DATA <= x"537c"; - when "01" & x"4cd" => DATA <= x"4d29"; - when "01" & x"4ce" => DATA <= x"0a0d"; - when "01" & x"4cf" => DATA <= x"0043"; - when "01" & x"4d0" => DATA <= x"6973"; - when "01" & x"4d1" => DATA <= x"634f"; - when "01" & x"4d2" => DATA <= x"5320"; - when "01" & x"4d3" => DATA <= x"4d6f"; - when "01" & x"4d4" => DATA <= x"6e69"; - when "01" & x"4d5" => DATA <= x"746f"; - when "01" & x"4d6" => DATA <= x"7200"; - when "01" & x"4d7" => DATA <= x"4220"; - when "01" & x"4d8" => DATA <= x"2042"; - when "01" & x"4d9" => DATA <= x"7974"; - when "01" & x"4da" => DATA <= x"6520"; - when "01" & x"4db" => DATA <= x"7365"; - when "01" & x"4dc" => DATA <= x"6172"; - when "01" & x"4dd" => DATA <= x"6368"; - when "01" & x"4de" => DATA <= x"203c"; - when "01" & x"4df" => DATA <= x"7374"; - when "01" & x"4e0" => DATA <= x"6172"; - when "01" & x"4e1" => DATA <= x"743e"; - when "01" & x"4e2" => DATA <= x"203c"; - when "01" & x"4e3" => DATA <= x"656e"; - when "01" & x"4e4" => DATA <= x"643e"; - when "01" & x"4e5" => DATA <= x"203c"; - when "01" & x"4e6" => DATA <= x"6279"; - when "01" & x"4e7" => DATA <= x"7465"; - when "01" & x"4e8" => DATA <= x"3e0a"; - when "01" & x"4e9" => DATA <= x"0d44"; - when "01" & x"4ea" => DATA <= x"2020"; - when "01" & x"4eb" => DATA <= x"4469"; - when "01" & x"4ec" => DATA <= x"7361"; - when "01" & x"4ed" => DATA <= x"7373"; - when "01" & x"4ee" => DATA <= x"656d"; - when "01" & x"4ef" => DATA <= x"626c"; - when "01" & x"4f0" => DATA <= x"6520"; - when "01" & x"4f1" => DATA <= x"3c61"; - when "01" & x"4f2" => DATA <= x"6464"; - when "01" & x"4f3" => DATA <= x"723e"; - when "01" & x"4f4" => DATA <= x"0a0d"; - when "01" & x"4f5" => DATA <= x"4520"; - when "01" & x"4f6" => DATA <= x"2045"; - when "01" & x"4f7" => DATA <= x"6469"; - when "01" & x"4f8" => DATA <= x"7420"; - when "01" & x"4f9" => DATA <= x"6d65"; - when "01" & x"4fa" => DATA <= x"6d6f"; - when "01" & x"4fb" => DATA <= x"7279"; - when "01" & x"4fc" => DATA <= x"203c"; - when "01" & x"4fd" => DATA <= x"6164"; - when "01" & x"4fe" => DATA <= x"6472"; - when "01" & x"4ff" => DATA <= x"3e0a"; - when "01" & x"500" => DATA <= x"0d46"; - when "01" & x"501" => DATA <= x"2020"; - when "01" & x"502" => DATA <= x"4669"; - when "01" & x"503" => DATA <= x"6c6c"; - when "01" & x"504" => DATA <= x"203c"; - when "01" & x"505" => DATA <= x"7374"; - when "01" & x"506" => DATA <= x"6172"; - when "01" & x"507" => DATA <= x"743e"; - when "01" & x"508" => DATA <= x"203c"; - when "01" & x"509" => DATA <= x"656e"; - when "01" & x"50a" => DATA <= x"643e"; - when "01" & x"50b" => DATA <= x"203c"; - when "01" & x"50c" => DATA <= x"6279"; - when "01" & x"50d" => DATA <= x"7465"; - when "01" & x"50e" => DATA <= x"3e0a"; - when "01" & x"50f" => DATA <= x"0d47"; - when "01" & x"510" => DATA <= x"2020"; - when "01" & x"511" => DATA <= x"476f"; - when "01" & x"512" => DATA <= x"203c"; - when "01" & x"513" => DATA <= x"6164"; - when "01" & x"514" => DATA <= x"6472"; - when "01" & x"515" => DATA <= x"3e0a"; - when "01" & x"516" => DATA <= x"0d48"; - when "01" & x"517" => DATA <= x"2020"; - when "01" & x"518" => DATA <= x"4865"; - when "01" & x"519" => DATA <= x"7820"; - when "01" & x"51a" => DATA <= x"6475"; - when "01" & x"51b" => DATA <= x"6d70"; - when "01" & x"51c" => DATA <= x"207b"; - when "01" & x"51d" => DATA <= x"6164"; - when "01" & x"51e" => DATA <= x"6472"; - when "01" & x"51f" => DATA <= x"7d0a"; - when "01" & x"520" => DATA <= x"0d4d"; - when "01" & x"521" => DATA <= x"2020"; - when "01" & x"522" => DATA <= x"4d6f"; - when "01" & x"523" => DATA <= x"7665"; - when "01" & x"524" => DATA <= x"206d"; - when "01" & x"525" => DATA <= x"656d"; - when "01" & x"526" => DATA <= x"6f72"; - when "01" & x"527" => DATA <= x"7920"; - when "01" & x"528" => DATA <= x"3c73"; - when "01" & x"529" => DATA <= x"6f75"; - when "01" & x"52a" => DATA <= x"7263"; - when "01" & x"52b" => DATA <= x"653e"; - when "01" & x"52c" => DATA <= x"203c"; - when "01" & x"52d" => DATA <= x"6465"; - when "01" & x"52e" => DATA <= x"7374"; - when "01" & x"52f" => DATA <= x"6e3e"; - when "01" & x"530" => DATA <= x"203c"; - when "01" & x"531" => DATA <= x"6c65"; - when "01" & x"532" => DATA <= x"6e67"; - when "01" & x"533" => DATA <= x"7468"; - when "01" & x"534" => DATA <= x"3e0a"; - when "01" & x"535" => DATA <= x"0d51"; - when "01" & x"536" => DATA <= x"2020"; - when "01" & x"537" => DATA <= x"5175"; - when "01" & x"538" => DATA <= x"6974"; - when "01" & x"539" => DATA <= x"0a0d"; - when "01" & x"53a" => DATA <= x"5220"; - when "01" & x"53b" => DATA <= x"2053"; - when "01" & x"53c" => DATA <= x"6574"; - when "01" & x"53d" => DATA <= x"2072"; - when "01" & x"53e" => DATA <= x"6567"; - when "01" & x"53f" => DATA <= x"6973"; - when "01" & x"540" => DATA <= x"7465"; - when "01" & x"541" => DATA <= x"7220"; - when "01" & x"542" => DATA <= x"636f"; - when "01" & x"543" => DATA <= x"6e74"; - when "01" & x"544" => DATA <= x"656e"; - when "01" & x"545" => DATA <= x"7473"; - when "01" & x"546" => DATA <= x"203c"; - when "01" & x"547" => DATA <= x"7265"; - when "01" & x"548" => DATA <= x"673e"; - when "01" & x"549" => DATA <= x"203c"; - when "01" & x"54a" => DATA <= x"7661"; - when "01" & x"54b" => DATA <= x"6c75"; - when "01" & x"54c" => DATA <= x"653e"; - when "01" & x"54d" => DATA <= x"0a0d"; - when "01" & x"54e" => DATA <= x"5320"; - when "01" & x"54f" => DATA <= x"2053"; - when "01" & x"550" => DATA <= x"7472"; - when "01" & x"551" => DATA <= x"696e"; - when "01" & x"552" => DATA <= x"6720"; - when "01" & x"553" => DATA <= x"7365"; - when "01" & x"554" => DATA <= x"6172"; - when "01" & x"555" => DATA <= x"6368"; - when "01" & x"556" => DATA <= x"203c"; - when "01" & x"557" => DATA <= x"7374"; - when "01" & x"558" => DATA <= x"6172"; - when "01" & x"559" => DATA <= x"743e"; - when "01" & x"55a" => DATA <= x"203c"; - when "01" & x"55b" => DATA <= x"656e"; - when "01" & x"55c" => DATA <= x"643e"; - when "01" & x"55d" => DATA <= x"203c"; - when "01" & x"55e" => DATA <= x"7374"; - when "01" & x"55f" => DATA <= x"7269"; - when "01" & x"560" => DATA <= x"6e67"; - when "01" & x"561" => DATA <= x"3e0a"; - when "01" & x"562" => DATA <= x"0d54"; - when "01" & x"563" => DATA <= x"2020"; - when "01" & x"564" => DATA <= x"5472"; - when "01" & x"565" => DATA <= x"6163"; - when "01" & x"566" => DATA <= x"650a"; - when "01" & x"567" => DATA <= x"0d56"; - when "01" & x"568" => DATA <= x"2020"; - when "01" & x"569" => DATA <= x"5669"; - when "01" & x"56a" => DATA <= x"6577"; - when "01" & x"56b" => DATA <= x"2072"; - when "01" & x"56c" => DATA <= x"6567"; - when "01" & x"56d" => DATA <= x"6973"; - when "01" & x"56e" => DATA <= x"7465"; - when "01" & x"56f" => DATA <= x"7220"; - when "01" & x"570" => DATA <= x"636f"; - when "01" & x"571" => DATA <= x"6e74"; - when "01" & x"572" => DATA <= x"656e"; - when "01" & x"573" => DATA <= x"7473"; - when "01" & x"574" => DATA <= x"0a0d"; - when "01" & x"575" => DATA <= x"2a20"; - when "01" & x"576" => DATA <= x"204f"; - when "01" & x"577" => DATA <= x"5320"; - when "01" & x"578" => DATA <= x"636f"; - when "01" & x"579" => DATA <= x"6d6d"; - when "01" & x"57a" => DATA <= x"616e"; - when "01" & x"57b" => DATA <= x"640a"; - when "01" & x"57c" => DATA <= x"0d3f"; - when "01" & x"57d" => DATA <= x"2020"; - when "01" & x"57e" => DATA <= x"4865"; - when "01" & x"57f" => DATA <= x"6c70"; - when "01" & x"580" => DATA <= x"0a0d"; - when "01" & x"581" => DATA <= x"0055"; - when "01" & x"582" => DATA <= x"6e6b"; - when "01" & x"583" => DATA <= x"6e6f"; - when "01" & x"584" => DATA <= x"776e"; - when "01" & x"585" => DATA <= x"2063"; - when "01" & x"586" => DATA <= x"6f6d"; - when "01" & x"587" => DATA <= x"6d61"; - when "01" & x"588" => DATA <= x"6e64"; - when "01" & x"589" => DATA <= x"2c20"; - when "01" & x"58a" => DATA <= x"7573"; - when "01" & x"58b" => DATA <= x"6520"; - when "01" & x"58c" => DATA <= x"3f20"; - when "01" & x"58d" => DATA <= x"666f"; - when "01" & x"58e" => DATA <= x"7220"; - when "01" & x"58f" => DATA <= x"6865"; - when "01" & x"590" => DATA <= x"6c70"; - when "01" & x"591" => DATA <= x"2e0a"; - when "01" & x"592" => DATA <= x"0d00"; - when "01" & x"593" => DATA <= x"542d"; - when "01" & x"594" => DATA <= x"532d"; - when "01" & x"595" => DATA <= x"2d49"; - when "01" & x"596" => DATA <= x"4e54"; - when "01" & x"597" => DATA <= x"2d2d"; - when "01" & x"598" => DATA <= x"2d58"; - when "01" & x"599" => DATA <= x"4e5a"; - when "01" & x"59a" => DATA <= x"5643"; - when "01" & x"59b" => DATA <= x"0046"; - when "01" & x"59c" => DATA <= x"696c"; - when "01" & x"59d" => DATA <= x"6520"; - when "01" & x"59e" => DATA <= x"6973"; - when "01" & x"59f" => DATA <= x"206e"; - when "01" & x"5a0" => DATA <= x"6f74"; - when "01" & x"5a1" => DATA <= x"2061"; - when "01" & x"5a2" => DATA <= x"2043"; - when "01" & x"5a3" => DATA <= x"6973"; - when "01" & x"5a4" => DATA <= x"634f"; - when "01" & x"5a5" => DATA <= x"5320"; - when "01" & x"5a6" => DATA <= x"6669"; - when "01" & x"5a7" => DATA <= x"6c65"; - when "01" & x"5a8" => DATA <= x"0a0d"; - when "01" & x"5a9" => DATA <= x"004e"; - when "01" & x"5aa" => DATA <= x"6f20"; - when "01" & x"5ab" => DATA <= x"726f"; - when "01" & x"5ac" => DATA <= x"6f6d"; - when "01" & x"5ad" => DATA <= x"0a0d"; - when "01" & x"5ae" => DATA <= x"0057"; - when "01" & x"5af" => DATA <= x"4152"; - when "01" & x"5b0" => DATA <= x"4e49"; - when "01" & x"5b1" => DATA <= x"4e47"; - when "01" & x"5b2" => DATA <= x"2120"; - when "01" & x"5b3" => DATA <= x"5448"; - when "01" & x"5b4" => DATA <= x"4953"; - when "01" & x"5b5" => DATA <= x"2057"; - when "01" & x"5b6" => DATA <= x"494c"; - when "01" & x"5b7" => DATA <= x"4c20"; - when "01" & x"5b8" => DATA <= x"464c"; - when "01" & x"5b9" => DATA <= x"4153"; - when "01" & x"5ba" => DATA <= x"4820"; - when "01" & x"5bb" => DATA <= x"5448"; - when "01" & x"5bc" => DATA <= x"4520"; - when "01" & x"5bd" => DATA <= x"4249"; - when "01" & x"5be" => DATA <= x"4f53"; - when "01" & x"5bf" => DATA <= x"0a0d"; - when "01" & x"5c0" => DATA <= x"5553"; - when "01" & x"5c1" => DATA <= x"4520"; - when "01" & x"5c2" => DATA <= x"4154"; - when "01" & x"5c3" => DATA <= x"2059"; - when "01" & x"5c4" => DATA <= x"4f55"; - when "01" & x"5c5" => DATA <= x"5220"; - when "01" & x"5c6" => DATA <= x"4f57"; - when "01" & x"5c7" => DATA <= x"4e20"; - when "01" & x"5c8" => DATA <= x"5249"; - when "01" & x"5c9" => DATA <= x"534b"; - when "01" & x"5ca" => DATA <= x"210a"; - when "01" & x"5cb" => DATA <= x"0d0a"; - when "01" & x"5cc" => DATA <= x"0d44"; - when "01" & x"5cd" => DATA <= x"6f20"; - when "01" & x"5ce" => DATA <= x"796f"; - when "01" & x"5cf" => DATA <= x"7520"; - when "01" & x"5d0" => DATA <= x"7761"; - when "01" & x"5d1" => DATA <= x"6e74"; - when "01" & x"5d2" => DATA <= x"2074"; - when "01" & x"5d3" => DATA <= x"6f20"; - when "01" & x"5d4" => DATA <= x"636f"; - when "01" & x"5d5" => DATA <= x"6e74"; - when "01" & x"5d6" => DATA <= x"696e"; - when "01" & x"5d7" => DATA <= x"7565"; - when "01" & x"5d8" => DATA <= x"3f20"; - when "01" & x"5d9" => DATA <= x"2859"; - when "01" & x"5da" => DATA <= x"2f4e"; - when "01" & x"5db" => DATA <= x"2920"; - when "01" & x"5dc" => DATA <= x"3a20"; - when "01" & x"5dd" => DATA <= x"0046"; - when "01" & x"5de" => DATA <= x"6c61"; - when "01" & x"5df" => DATA <= x"7368"; - when "01" & x"5e0" => DATA <= x"2052"; - when "01" & x"5e1" => DATA <= x"4f4d"; - when "01" & x"5e2" => DATA <= x"2049"; - when "01" & x"5e3" => DATA <= x"443d"; - when "01" & x"5e4" => DATA <= x"2400"; - when "01" & x"5e5" => DATA <= x"0a0d"; - when "01" & x"5e6" => DATA <= x"466c"; - when "01" & x"5e7" => DATA <= x"6173"; - when "01" & x"5e8" => DATA <= x"6869"; - when "01" & x"5e9" => DATA <= x"6e67"; - when "01" & x"5ea" => DATA <= x"2073"; - when "01" & x"5eb" => DATA <= x"6563"; - when "01" & x"5ec" => DATA <= x"746f"; - when "01" & x"5ed" => DATA <= x"7220"; - when "01" & x"5ee" => DATA <= x"0a0d"; - when "01" & x"5ef" => DATA <= x"0046"; - when "01" & x"5f0" => DATA <= x"6c61"; - when "01" & x"5f1" => DATA <= x"7368"; - when "01" & x"5f2" => DATA <= x"2063"; - when "01" & x"5f3" => DATA <= x"6f6d"; - when "01" & x"5f4" => DATA <= x"706c"; - when "01" & x"5f5" => DATA <= x"6574"; - when "01" & x"5f6" => DATA <= x"6564"; - when "01" & x"5f7" => DATA <= x"2073"; - when "01" & x"5f8" => DATA <= x"7563"; - when "01" & x"5f9" => DATA <= x"6365"; - when "01" & x"5fa" => DATA <= x"7373"; - when "01" & x"5fb" => DATA <= x"6675"; - when "01" & x"5fc" => DATA <= x"6c6c"; - when "01" & x"5fd" => DATA <= x"790a"; - when "01" & x"5fe" => DATA <= x"0d00"; - when "01" & x"5ff" => DATA <= x"466c"; - when "01" & x"600" => DATA <= x"6173"; - when "01" & x"601" => DATA <= x"6820"; - when "01" & x"602" => DATA <= x"6572"; - when "01" & x"603" => DATA <= x"726f"; - when "01" & x"604" => DATA <= x"7220"; - when "01" & x"605" => DATA <= x"6174"; - when "01" & x"606" => DATA <= x"2000"; - when "01" & x"607" => DATA <= x"4d6f"; - when "01" & x"608" => DATA <= x"6e54"; - when "01" & x"609" => DATA <= x"7565"; - when "01" & x"60a" => DATA <= x"5765"; - when "01" & x"60b" => DATA <= x"6454"; - when "01" & x"60c" => DATA <= x"6875"; - when "01" & x"60d" => DATA <= x"4672"; - when "01" & x"60e" => DATA <= x"6953"; - when "01" & x"60f" => DATA <= x"6174"; - when "01" & x"610" => DATA <= x"5375"; - when "01" & x"611" => DATA <= x"6e00"; - when "01" & x"612" => DATA <= x"4a61"; - when "01" & x"613" => DATA <= x"6e46"; - when "01" & x"614" => DATA <= x"6562"; - when "01" & x"615" => DATA <= x"4d61"; - when "01" & x"616" => DATA <= x"7241"; - when "01" & x"617" => DATA <= x"7072"; - when "01" & x"618" => DATA <= x"4d61"; - when "01" & x"619" => DATA <= x"794a"; - when "01" & x"61a" => DATA <= x"756e"; - when "01" & x"61b" => DATA <= x"4a75"; - when "01" & x"61c" => DATA <= x"6c41"; - when "01" & x"61d" => DATA <= x"7567"; - when "01" & x"61e" => DATA <= x"5365"; - when "01" & x"61f" => DATA <= x"704f"; - when "01" & x"620" => DATA <= x"6374"; - when "01" & x"621" => DATA <= x"4e6f"; - when "01" & x"622" => DATA <= x"7644"; - when "01" & x"623" => DATA <= x"6563"; - when "01" & x"624" => DATA <= x"000a"; - when "01" & x"625" => DATA <= x"0d42"; - when "01" & x"626" => DATA <= x"7573"; - when "01" & x"627" => DATA <= x"2065"; - when "01" & x"628" => DATA <= x"7272"; - when "01" & x"629" => DATA <= x"6f72"; - when "01" & x"62a" => DATA <= x"2061"; - when "01" & x"62b" => DATA <= x"7420"; - when "01" & x"62c" => DATA <= x"2400"; - when "01" & x"62d" => DATA <= x"0a0d"; - when "01" & x"62e" => DATA <= x"4164"; - when "01" & x"62f" => DATA <= x"6472"; - when "01" & x"630" => DATA <= x"6573"; - when "01" & x"631" => DATA <= x"7320"; - when "01" & x"632" => DATA <= x"6572"; - when "01" & x"633" => DATA <= x"726f"; - when "01" & x"634" => DATA <= x"7220"; - when "01" & x"635" => DATA <= x"6578"; - when "01" & x"636" => DATA <= x"6365"; - when "01" & x"637" => DATA <= x"7074"; - when "01" & x"638" => DATA <= x"696f"; - when "01" & x"639" => DATA <= x"6e20"; - when "01" & x"63a" => DATA <= x"6174"; - when "01" & x"63b" => DATA <= x"2024"; - when "01" & x"63c" => DATA <= x"0020"; - when "01" & x"63d" => DATA <= x"4163"; - when "01" & x"63e" => DATA <= x"6365"; - when "01" & x"63f" => DATA <= x"7373"; - when "01" & x"640" => DATA <= x"2074"; - when "01" & x"641" => DATA <= x"7970"; - when "01" & x"642" => DATA <= x"6526"; - when "01" & x"643" => DATA <= x"6675"; - when "01" & x"644" => DATA <= x"6e63"; - when "01" & x"645" => DATA <= x"7469"; - when "01" & x"646" => DATA <= x"6f6e"; - when "01" & x"647" => DATA <= x"3a00"; - when "01" & x"648" => DATA <= x"2041"; - when "01" & x"649" => DATA <= x"6363"; - when "01" & x"64a" => DATA <= x"6573"; - when "01" & x"64b" => DATA <= x"7320"; - when "01" & x"64c" => DATA <= x"6164"; - when "01" & x"64d" => DATA <= x"6472"; - when "01" & x"64e" => DATA <= x"6573"; - when "01" & x"64f" => DATA <= x"7320"; - when "01" & x"650" => DATA <= x"2020"; - when "01" & x"651" => DATA <= x"2020"; - when "01" & x"652" => DATA <= x"203a"; - when "01" & x"653" => DATA <= x"0020"; - when "01" & x"654" => DATA <= x"496e"; - when "01" & x"655" => DATA <= x"7374"; - when "01" & x"656" => DATA <= x"7275"; - when "01" & x"657" => DATA <= x"6374"; - when "01" & x"658" => DATA <= x"696f"; - when "01" & x"659" => DATA <= x"6e20"; - when "01" & x"65a" => DATA <= x"7265"; - when "01" & x"65b" => DATA <= x"6769"; - when "01" & x"65c" => DATA <= x"7374"; - when "01" & x"65d" => DATA <= x"6572"; - when "01" & x"65e" => DATA <= x"3a00"; - when "01" & x"65f" => DATA <= x"2053"; - when "01" & x"660" => DATA <= x"7461"; - when "01" & x"661" => DATA <= x"7475"; - when "01" & x"662" => DATA <= x"7320"; - when "01" & x"663" => DATA <= x"7265"; - when "01" & x"664" => DATA <= x"6769"; - when "01" & x"665" => DATA <= x"7374"; - when "01" & x"666" => DATA <= x"6572"; - when "01" & x"667" => DATA <= x"2020"; - when "01" & x"668" => DATA <= x"2020"; - when "01" & x"669" => DATA <= x"203a"; - when "01" & x"66a" => DATA <= x"5452"; - when "01" & x"66b" => DATA <= x"534d"; - when "01" & x"66c" => DATA <= x"2d49"; - when "01" & x"66d" => DATA <= x"4e54"; - when "01" & x"66e" => DATA <= x"2d2d"; - when "01" & x"66f" => DATA <= x"2d58"; - when "01" & x"670" => DATA <= x"4e5a"; - when "01" & x"671" => DATA <= x"5643"; - when "01" & x"672" => DATA <= x"0a0d"; - when "01" & x"673" => DATA <= x"2020"; - when "01" & x"674" => DATA <= x"2020"; + when "01" & x"41c" => DATA <= x"0000"; + when "01" & x"41d" => DATA <= x"0000"; + when "01" & x"41e" => DATA <= x"0a0d"; + when "01" & x"41f" => DATA <= x"4369"; + when "01" & x"420" => DATA <= x"7363"; + when "01" & x"421" => DATA <= x"4f53"; + when "01" & x"422" => DATA <= x"2076"; + when "01" & x"423" => DATA <= x"322e"; + when "01" & x"424" => DATA <= x"3031"; + when "01" & x"425" => DATA <= x"2028"; + when "01" & x"426" => DATA <= x"4a75"; + when "01" & x"427" => DATA <= x"6c79"; + when "01" & x"428" => DATA <= x"2033"; + when "01" & x"429" => DATA <= x"312c"; + when "01" & x"42a" => DATA <= x"2032"; + when "01" & x"42b" => DATA <= x"3031"; + when "01" & x"42c" => DATA <= x"3529"; + when "01" & x"42d" => DATA <= x"0a0d"; + when "01" & x"42e" => DATA <= x"0020"; + when "01" & x"42f" => DATA <= x"2020"; + when "01" & x"430" => DATA <= x"5357"; + when "01" & x"431" => DATA <= x"490a"; + when "01" & x"432" => DATA <= x"0d20"; + when "01" & x"433" => DATA <= x"2020"; + when "01" & x"434" => DATA <= x"5455"; + when "01" & x"435" => DATA <= x"4245"; + when "01" & x"436" => DATA <= x"0a0d"; + when "01" & x"437" => DATA <= x"0020"; + when "01" & x"438" => DATA <= x"2020"; + when "01" & x"439" => DATA <= x"4552"; + when "01" & x"43a" => DATA <= x"524f"; + when "01" & x"43b" => DATA <= x"5220"; + when "01" & x"43c" => DATA <= x"286e"; + when "01" & x"43d" => DATA <= x"756d"; + when "01" & x"43e" => DATA <= x"6265"; + when "01" & x"43f" => DATA <= x"7229"; + when "01" & x"440" => DATA <= x"203c"; + when "01" & x"441" => DATA <= x"6d65"; + when "01" & x"442" => DATA <= x"7373"; + when "01" & x"443" => DATA <= x"6167"; + when "01" & x"444" => DATA <= x"653e"; + when "01" & x"445" => DATA <= x"0a0d"; + when "01" & x"446" => DATA <= x"2020"; + when "01" & x"447" => DATA <= x"2046"; + when "01" & x"448" => DATA <= x"4c41"; + when "01" & x"449" => DATA <= x"5348"; + when "01" & x"44a" => DATA <= x"203c"; + when "01" & x"44b" => DATA <= x"6673"; + when "01" & x"44c" => DATA <= x"703e"; + when "01" & x"44d" => DATA <= x"0a0d"; + when "01" & x"44e" => DATA <= x"2020"; + when "01" & x"44f" => DATA <= x"2047"; + when "01" & x"450" => DATA <= x"4f20"; + when "01" & x"451" => DATA <= x"3c61"; + when "01" & x"452" => DATA <= x"6464"; + when "01" & x"453" => DATA <= x"723e"; + when "01" & x"454" => DATA <= x"0a0d"; + when "01" & x"455" => DATA <= x"2020"; + when "01" & x"456" => DATA <= x"204d"; + when "01" & x"457" => DATA <= x"4f4e"; + when "01" & x"458" => DATA <= x"0a0d"; + when "01" & x"459" => DATA <= x"2020"; + when "01" & x"45a" => DATA <= x"2051"; + when "01" & x"45b" => DATA <= x"5549"; + when "01" & x"45c" => DATA <= x"540a"; + when "01" & x"45d" => DATA <= x"0d20"; + when "01" & x"45e" => DATA <= x"2020"; + when "01" & x"45f" => DATA <= x"545a"; + when "01" & x"460" => DATA <= x"4150"; + when "01" & x"461" => DATA <= x"2028"; + when "01" & x"462" => DATA <= x"6164"; + when "01" & x"463" => DATA <= x"6472"; + when "01" & x"464" => DATA <= x"290a"; + when "01" & x"465" => DATA <= x"0d20"; + when "01" & x"466" => DATA <= x"2020"; + when "01" & x"467" => DATA <= x"5846"; + when "01" & x"468" => DATA <= x"4552"; + when "01" & x"469" => DATA <= x"203c"; + when "01" & x"46a" => DATA <= x"696f"; + when "01" & x"46b" => DATA <= x"2061"; + when "01" & x"46c" => DATA <= x"6464"; + when "01" & x"46d" => DATA <= x"722e"; + when "01" & x"46e" => DATA <= x"3e20"; + when "01" & x"46f" => DATA <= x"3c61"; + when "01" & x"470" => DATA <= x"6464"; + when "01" & x"471" => DATA <= x"723e"; + when "01" & x"472" => DATA <= x"203c"; + when "01" & x"473" => DATA <= x"6c65"; + when "01" & x"474" => DATA <= x"6e67"; + when "01" & x"475" => DATA <= x"7468"; + when "01" & x"476" => DATA <= x"3e20"; + when "01" & x"477" => DATA <= x"2852"; + when "01" & x"478" => DATA <= x"7c57"; + when "01" & x"479" => DATA <= x"2920"; + when "01" & x"47a" => DATA <= x"2853"; + when "01" & x"47b" => DATA <= x"7c4d"; + when "01" & x"47c" => DATA <= x"290a"; + when "01" & x"47d" => DATA <= x"0d00"; + when "01" & x"47e" => DATA <= x"5379"; + when "01" & x"47f" => DATA <= x"6e74"; + when "01" & x"480" => DATA <= x"6178"; + when "01" & x"481" => DATA <= x"3a20"; + when "01" & x"482" => DATA <= x"4552"; + when "01" & x"483" => DATA <= x"524f"; + when "01" & x"484" => DATA <= x"5220"; + when "01" & x"485" => DATA <= x"286e"; + when "01" & x"486" => DATA <= x"756d"; + when "01" & x"487" => DATA <= x"6265"; + when "01" & x"488" => DATA <= x"7229"; + when "01" & x"489" => DATA <= x"203c"; + when "01" & x"48a" => DATA <= x"6d65"; + when "01" & x"48b" => DATA <= x"7373"; + when "01" & x"48c" => DATA <= x"6167"; + when "01" & x"48d" => DATA <= x"653e"; + when "01" & x"48e" => DATA <= x"0a0d"; + when "01" & x"48f" => DATA <= x"0053"; + when "01" & x"490" => DATA <= x"796e"; + when "01" & x"491" => DATA <= x"7461"; + when "01" & x"492" => DATA <= x"783a"; + when "01" & x"493" => DATA <= x"2046"; + when "01" & x"494" => DATA <= x"4c41"; + when "01" & x"495" => DATA <= x"5348"; + when "01" & x"496" => DATA <= x"203c"; + when "01" & x"497" => DATA <= x"6673"; + when "01" & x"498" => DATA <= x"703e"; + when "01" & x"499" => DATA <= x"0a0d"; + when "01" & x"49a" => DATA <= x"0053"; + when "01" & x"49b" => DATA <= x"796e"; + when "01" & x"49c" => DATA <= x"7461"; + when "01" & x"49d" => DATA <= x"783a"; + when "01" & x"49e" => DATA <= x"2047"; + when "01" & x"49f" => DATA <= x"4f20"; + when "01" & x"4a0" => DATA <= x"3c61"; + when "01" & x"4a1" => DATA <= x"6464"; + when "01" & x"4a2" => DATA <= x"723e"; + when "01" & x"4a3" => DATA <= x"0a0d"; + when "01" & x"4a4" => DATA <= x"0053"; + when "01" & x"4a5" => DATA <= x"796e"; + when "01" & x"4a6" => DATA <= x"7461"; + when "01" & x"4a7" => DATA <= x"783a"; + when "01" & x"4a8" => DATA <= x"204d"; + when "01" & x"4a9" => DATA <= x"4f4e"; + when "01" & x"4aa" => DATA <= x"0a0d"; + when "01" & x"4ab" => DATA <= x"0053"; + when "01" & x"4ac" => DATA <= x"796e"; + when "01" & x"4ad" => DATA <= x"7461"; + when "01" & x"4ae" => DATA <= x"783a"; + when "01" & x"4af" => DATA <= x"2054"; + when "01" & x"4b0" => DATA <= x"5a41"; + when "01" & x"4b1" => DATA <= x"5020"; + when "01" & x"4b2" => DATA <= x"2861"; + when "01" & x"4b3" => DATA <= x"6464"; + when "01" & x"4b4" => DATA <= x"7229"; + when "01" & x"4b5" => DATA <= x"0a0d"; + when "01" & x"4b6" => DATA <= x"0053"; + when "01" & x"4b7" => DATA <= x"796e"; + when "01" & x"4b8" => DATA <= x"7461"; + when "01" & x"4b9" => DATA <= x"783a"; + when "01" & x"4ba" => DATA <= x"2058"; + when "01" & x"4bb" => DATA <= x"4645"; + when "01" & x"4bc" => DATA <= x"5220"; + when "01" & x"4bd" => DATA <= x"3c69"; + when "01" & x"4be" => DATA <= x"6f20"; + when "01" & x"4bf" => DATA <= x"6164"; + when "01" & x"4c0" => DATA <= x"6472"; + when "01" & x"4c1" => DATA <= x"2e3e"; + when "01" & x"4c2" => DATA <= x"203c"; + when "01" & x"4c3" => DATA <= x"6164"; + when "01" & x"4c4" => DATA <= x"6472"; + when "01" & x"4c5" => DATA <= x"3e20"; + when "01" & x"4c6" => DATA <= x"3c6c"; + when "01" & x"4c7" => DATA <= x"656e"; + when "01" & x"4c8" => DATA <= x"6774"; + when "01" & x"4c9" => DATA <= x"683e"; + when "01" & x"4ca" => DATA <= x"2028"; + when "01" & x"4cb" => DATA <= x"527c"; + when "01" & x"4cc" => DATA <= x"5729"; + when "01" & x"4cd" => DATA <= x"2028"; + when "01" & x"4ce" => DATA <= x"537c"; + when "01" & x"4cf" => DATA <= x"4d29"; + when "01" & x"4d0" => DATA <= x"0a0d"; + when "01" & x"4d1" => DATA <= x"0043"; + when "01" & x"4d2" => DATA <= x"6973"; + when "01" & x"4d3" => DATA <= x"634f"; + when "01" & x"4d4" => DATA <= x"5320"; + when "01" & x"4d5" => DATA <= x"4d6f"; + when "01" & x"4d6" => DATA <= x"6e69"; + when "01" & x"4d7" => DATA <= x"746f"; + when "01" & x"4d8" => DATA <= x"7200"; + when "01" & x"4d9" => DATA <= x"4220"; + when "01" & x"4da" => DATA <= x"2042"; + when "01" & x"4db" => DATA <= x"7974"; + when "01" & x"4dc" => DATA <= x"6520"; + when "01" & x"4dd" => DATA <= x"7365"; + when "01" & x"4de" => DATA <= x"6172"; + when "01" & x"4df" => DATA <= x"6368"; + when "01" & x"4e0" => DATA <= x"203c"; + when "01" & x"4e1" => DATA <= x"7374"; + when "01" & x"4e2" => DATA <= x"6172"; + when "01" & x"4e3" => DATA <= x"743e"; + when "01" & x"4e4" => DATA <= x"203c"; + when "01" & x"4e5" => DATA <= x"656e"; + when "01" & x"4e6" => DATA <= x"643e"; + when "01" & x"4e7" => DATA <= x"203c"; + when "01" & x"4e8" => DATA <= x"6279"; + when "01" & x"4e9" => DATA <= x"7465"; + when "01" & x"4ea" => DATA <= x"3e0a"; + when "01" & x"4eb" => DATA <= x"0d44"; + when "01" & x"4ec" => DATA <= x"2020"; + when "01" & x"4ed" => DATA <= x"4469"; + when "01" & x"4ee" => DATA <= x"7361"; + when "01" & x"4ef" => DATA <= x"7373"; + when "01" & x"4f0" => DATA <= x"656d"; + when "01" & x"4f1" => DATA <= x"626c"; + when "01" & x"4f2" => DATA <= x"6520"; + when "01" & x"4f3" => DATA <= x"3c61"; + when "01" & x"4f4" => DATA <= x"6464"; + when "01" & x"4f5" => DATA <= x"723e"; + when "01" & x"4f6" => DATA <= x"0a0d"; + when "01" & x"4f7" => DATA <= x"4520"; + when "01" & x"4f8" => DATA <= x"2045"; + when "01" & x"4f9" => DATA <= x"6469"; + when "01" & x"4fa" => DATA <= x"7420"; + when "01" & x"4fb" => DATA <= x"6d65"; + when "01" & x"4fc" => DATA <= x"6d6f"; + when "01" & x"4fd" => DATA <= x"7279"; + when "01" & x"4fe" => DATA <= x"203c"; + when "01" & x"4ff" => DATA <= x"6164"; + when "01" & x"500" => DATA <= x"6472"; + when "01" & x"501" => DATA <= x"3e0a"; + when "01" & x"502" => DATA <= x"0d46"; + when "01" & x"503" => DATA <= x"2020"; + when "01" & x"504" => DATA <= x"4669"; + when "01" & x"505" => DATA <= x"6c6c"; + when "01" & x"506" => DATA <= x"203c"; + when "01" & x"507" => DATA <= x"7374"; + when "01" & x"508" => DATA <= x"6172"; + when "01" & x"509" => DATA <= x"743e"; + when "01" & x"50a" => DATA <= x"203c"; + when "01" & x"50b" => DATA <= x"656e"; + when "01" & x"50c" => DATA <= x"643e"; + when "01" & x"50d" => DATA <= x"203c"; + when "01" & x"50e" => DATA <= x"6279"; + when "01" & x"50f" => DATA <= x"7465"; + when "01" & x"510" => DATA <= x"3e0a"; + when "01" & x"511" => DATA <= x"0d47"; + when "01" & x"512" => DATA <= x"2020"; + when "01" & x"513" => DATA <= x"476f"; + when "01" & x"514" => DATA <= x"203c"; + when "01" & x"515" => DATA <= x"6164"; + when "01" & x"516" => DATA <= x"6472"; + when "01" & x"517" => DATA <= x"3e0a"; + when "01" & x"518" => DATA <= x"0d48"; + when "01" & x"519" => DATA <= x"2020"; + when "01" & x"51a" => DATA <= x"4865"; + when "01" & x"51b" => DATA <= x"7820"; + when "01" & x"51c" => DATA <= x"6475"; + when "01" & x"51d" => DATA <= x"6d70"; + when "01" & x"51e" => DATA <= x"207b"; + when "01" & x"51f" => DATA <= x"6164"; + when "01" & x"520" => DATA <= x"6472"; + when "01" & x"521" => DATA <= x"7d0a"; + when "01" & x"522" => DATA <= x"0d4d"; + when "01" & x"523" => DATA <= x"2020"; + when "01" & x"524" => DATA <= x"4d6f"; + when "01" & x"525" => DATA <= x"7665"; + when "01" & x"526" => DATA <= x"206d"; + when "01" & x"527" => DATA <= x"656d"; + when "01" & x"528" => DATA <= x"6f72"; + when "01" & x"529" => DATA <= x"7920"; + when "01" & x"52a" => DATA <= x"3c73"; + when "01" & x"52b" => DATA <= x"6f75"; + when "01" & x"52c" => DATA <= x"7263"; + when "01" & x"52d" => DATA <= x"653e"; + when "01" & x"52e" => DATA <= x"203c"; + when "01" & x"52f" => DATA <= x"6465"; + when "01" & x"530" => DATA <= x"7374"; + when "01" & x"531" => DATA <= x"6e3e"; + when "01" & x"532" => DATA <= x"203c"; + when "01" & x"533" => DATA <= x"6c65"; + when "01" & x"534" => DATA <= x"6e67"; + when "01" & x"535" => DATA <= x"7468"; + when "01" & x"536" => DATA <= x"3e0a"; + when "01" & x"537" => DATA <= x"0d51"; + when "01" & x"538" => DATA <= x"2020"; + when "01" & x"539" => DATA <= x"5175"; + when "01" & x"53a" => DATA <= x"6974"; + when "01" & x"53b" => DATA <= x"0a0d"; + when "01" & x"53c" => DATA <= x"5220"; + when "01" & x"53d" => DATA <= x"2053"; + when "01" & x"53e" => DATA <= x"6574"; + when "01" & x"53f" => DATA <= x"2072"; + when "01" & x"540" => DATA <= x"6567"; + when "01" & x"541" => DATA <= x"6973"; + when "01" & x"542" => DATA <= x"7465"; + when "01" & x"543" => DATA <= x"7220"; + when "01" & x"544" => DATA <= x"636f"; + when "01" & x"545" => DATA <= x"6e74"; + when "01" & x"546" => DATA <= x"656e"; + when "01" & x"547" => DATA <= x"7473"; + when "01" & x"548" => DATA <= x"203c"; + when "01" & x"549" => DATA <= x"7265"; + when "01" & x"54a" => DATA <= x"673e"; + when "01" & x"54b" => DATA <= x"203c"; + when "01" & x"54c" => DATA <= x"7661"; + when "01" & x"54d" => DATA <= x"6c75"; + when "01" & x"54e" => DATA <= x"653e"; + when "01" & x"54f" => DATA <= x"0a0d"; + when "01" & x"550" => DATA <= x"5320"; + when "01" & x"551" => DATA <= x"2053"; + when "01" & x"552" => DATA <= x"7472"; + when "01" & x"553" => DATA <= x"696e"; + when "01" & x"554" => DATA <= x"6720"; + when "01" & x"555" => DATA <= x"7365"; + when "01" & x"556" => DATA <= x"6172"; + when "01" & x"557" => DATA <= x"6368"; + when "01" & x"558" => DATA <= x"203c"; + when "01" & x"559" => DATA <= x"7374"; + when "01" & x"55a" => DATA <= x"6172"; + when "01" & x"55b" => DATA <= x"743e"; + when "01" & x"55c" => DATA <= x"203c"; + when "01" & x"55d" => DATA <= x"656e"; + when "01" & x"55e" => DATA <= x"643e"; + when "01" & x"55f" => DATA <= x"203c"; + when "01" & x"560" => DATA <= x"7374"; + when "01" & x"561" => DATA <= x"7269"; + when "01" & x"562" => DATA <= x"6e67"; + when "01" & x"563" => DATA <= x"3e0a"; + when "01" & x"564" => DATA <= x"0d54"; + when "01" & x"565" => DATA <= x"2020"; + when "01" & x"566" => DATA <= x"5472"; + when "01" & x"567" => DATA <= x"6163"; + when "01" & x"568" => DATA <= x"650a"; + when "01" & x"569" => DATA <= x"0d56"; + when "01" & x"56a" => DATA <= x"2020"; + when "01" & x"56b" => DATA <= x"5669"; + when "01" & x"56c" => DATA <= x"6577"; + when "01" & x"56d" => DATA <= x"2072"; + when "01" & x"56e" => DATA <= x"6567"; + when "01" & x"56f" => DATA <= x"6973"; + when "01" & x"570" => DATA <= x"7465"; + when "01" & x"571" => DATA <= x"7220"; + when "01" & x"572" => DATA <= x"636f"; + when "01" & x"573" => DATA <= x"6e74"; + when "01" & x"574" => DATA <= x"656e"; + when "01" & x"575" => DATA <= x"7473"; + when "01" & x"576" => DATA <= x"0a0d"; + when "01" & x"577" => DATA <= x"2a20"; + when "01" & x"578" => DATA <= x"204f"; + when "01" & x"579" => DATA <= x"5320"; + when "01" & x"57a" => DATA <= x"636f"; + when "01" & x"57b" => DATA <= x"6d6d"; + when "01" & x"57c" => DATA <= x"616e"; + when "01" & x"57d" => DATA <= x"640a"; + when "01" & x"57e" => DATA <= x"0d3f"; + when "01" & x"57f" => DATA <= x"2020"; + when "01" & x"580" => DATA <= x"4865"; + when "01" & x"581" => DATA <= x"6c70"; + when "01" & x"582" => DATA <= x"0a0d"; + when "01" & x"583" => DATA <= x"0055"; + when "01" & x"584" => DATA <= x"6e6b"; + when "01" & x"585" => DATA <= x"6e6f"; + when "01" & x"586" => DATA <= x"776e"; + when "01" & x"587" => DATA <= x"2063"; + when "01" & x"588" => DATA <= x"6f6d"; + when "01" & x"589" => DATA <= x"6d61"; + when "01" & x"58a" => DATA <= x"6e64"; + when "01" & x"58b" => DATA <= x"2c20"; + when "01" & x"58c" => DATA <= x"7573"; + when "01" & x"58d" => DATA <= x"6520"; + when "01" & x"58e" => DATA <= x"3f20"; + when "01" & x"58f" => DATA <= x"666f"; + when "01" & x"590" => DATA <= x"7220"; + when "01" & x"591" => DATA <= x"6865"; + when "01" & x"592" => DATA <= x"6c70"; + when "01" & x"593" => DATA <= x"2e0a"; + when "01" & x"594" => DATA <= x"0d00"; + when "01" & x"595" => DATA <= x"542d"; + when "01" & x"596" => DATA <= x"532d"; + when "01" & x"597" => DATA <= x"2d49"; + when "01" & x"598" => DATA <= x"4e54"; + when "01" & x"599" => DATA <= x"2d2d"; + when "01" & x"59a" => DATA <= x"2d58"; + when "01" & x"59b" => DATA <= x"4e5a"; + when "01" & x"59c" => DATA <= x"5643"; + when "01" & x"59d" => DATA <= x"0046"; + when "01" & x"59e" => DATA <= x"696c"; + when "01" & x"59f" => DATA <= x"6520"; + when "01" & x"5a0" => DATA <= x"6973"; + when "01" & x"5a1" => DATA <= x"206e"; + when "01" & x"5a2" => DATA <= x"6f74"; + when "01" & x"5a3" => DATA <= x"2061"; + when "01" & x"5a4" => DATA <= x"2043"; + when "01" & x"5a5" => DATA <= x"6973"; + when "01" & x"5a6" => DATA <= x"634f"; + when "01" & x"5a7" => DATA <= x"5320"; + when "01" & x"5a8" => DATA <= x"6669"; + when "01" & x"5a9" => DATA <= x"6c65"; + when "01" & x"5aa" => DATA <= x"0a0d"; + when "01" & x"5ab" => DATA <= x"004e"; + when "01" & x"5ac" => DATA <= x"6f20"; + when "01" & x"5ad" => DATA <= x"726f"; + when "01" & x"5ae" => DATA <= x"6f6d"; + when "01" & x"5af" => DATA <= x"0a0d"; + when "01" & x"5b0" => DATA <= x"0057"; + when "01" & x"5b1" => DATA <= x"4152"; + when "01" & x"5b2" => DATA <= x"4e49"; + when "01" & x"5b3" => DATA <= x"4e47"; + when "01" & x"5b4" => DATA <= x"2120"; + when "01" & x"5b5" => DATA <= x"5448"; + when "01" & x"5b6" => DATA <= x"4953"; + when "01" & x"5b7" => DATA <= x"2057"; + when "01" & x"5b8" => DATA <= x"494c"; + when "01" & x"5b9" => DATA <= x"4c20"; + when "01" & x"5ba" => DATA <= x"464c"; + when "01" & x"5bb" => DATA <= x"4153"; + when "01" & x"5bc" => DATA <= x"4820"; + when "01" & x"5bd" => DATA <= x"5448"; + when "01" & x"5be" => DATA <= x"4520"; + when "01" & x"5bf" => DATA <= x"4249"; + when "01" & x"5c0" => DATA <= x"4f53"; + when "01" & x"5c1" => DATA <= x"0a0d"; + when "01" & x"5c2" => DATA <= x"5553"; + when "01" & x"5c3" => DATA <= x"4520"; + when "01" & x"5c4" => DATA <= x"4154"; + when "01" & x"5c5" => DATA <= x"2059"; + when "01" & x"5c6" => DATA <= x"4f55"; + when "01" & x"5c7" => DATA <= x"5220"; + when "01" & x"5c8" => DATA <= x"4f57"; + when "01" & x"5c9" => DATA <= x"4e20"; + when "01" & x"5ca" => DATA <= x"5249"; + when "01" & x"5cb" => DATA <= x"534b"; + when "01" & x"5cc" => DATA <= x"210a"; + when "01" & x"5cd" => DATA <= x"0d0a"; + when "01" & x"5ce" => DATA <= x"0d44"; + when "01" & x"5cf" => DATA <= x"6f20"; + when "01" & x"5d0" => DATA <= x"796f"; + when "01" & x"5d1" => DATA <= x"7520"; + when "01" & x"5d2" => DATA <= x"7761"; + when "01" & x"5d3" => DATA <= x"6e74"; + when "01" & x"5d4" => DATA <= x"2074"; + when "01" & x"5d5" => DATA <= x"6f20"; + when "01" & x"5d6" => DATA <= x"636f"; + when "01" & x"5d7" => DATA <= x"6e74"; + when "01" & x"5d8" => DATA <= x"696e"; + when "01" & x"5d9" => DATA <= x"7565"; + when "01" & x"5da" => DATA <= x"3f20"; + when "01" & x"5db" => DATA <= x"2859"; + when "01" & x"5dc" => DATA <= x"2f4e"; + when "01" & x"5dd" => DATA <= x"2920"; + when "01" & x"5de" => DATA <= x"3a20"; + when "01" & x"5df" => DATA <= x"0046"; + when "01" & x"5e0" => DATA <= x"6c61"; + when "01" & x"5e1" => DATA <= x"7368"; + when "01" & x"5e2" => DATA <= x"2052"; + when "01" & x"5e3" => DATA <= x"4f4d"; + when "01" & x"5e4" => DATA <= x"2049"; + when "01" & x"5e5" => DATA <= x"443d"; + when "01" & x"5e6" => DATA <= x"2400"; + when "01" & x"5e7" => DATA <= x"0a0d"; + when "01" & x"5e8" => DATA <= x"466c"; + when "01" & x"5e9" => DATA <= x"6173"; + when "01" & x"5ea" => DATA <= x"6869"; + when "01" & x"5eb" => DATA <= x"6e67"; + when "01" & x"5ec" => DATA <= x"2073"; + when "01" & x"5ed" => DATA <= x"6563"; + when "01" & x"5ee" => DATA <= x"746f"; + when "01" & x"5ef" => DATA <= x"7220"; + when "01" & x"5f0" => DATA <= x"0a0d"; + when "01" & x"5f1" => DATA <= x"0046"; + when "01" & x"5f2" => DATA <= x"6c61"; + when "01" & x"5f3" => DATA <= x"7368"; + when "01" & x"5f4" => DATA <= x"2063"; + when "01" & x"5f5" => DATA <= x"6f6d"; + when "01" & x"5f6" => DATA <= x"706c"; + when "01" & x"5f7" => DATA <= x"6574"; + when "01" & x"5f8" => DATA <= x"6564"; + when "01" & x"5f9" => DATA <= x"2073"; + when "01" & x"5fa" => DATA <= x"7563"; + when "01" & x"5fb" => DATA <= x"6365"; + when "01" & x"5fc" => DATA <= x"7373"; + when "01" & x"5fd" => DATA <= x"6675"; + when "01" & x"5fe" => DATA <= x"6c6c"; + when "01" & x"5ff" => DATA <= x"790a"; + when "01" & x"600" => DATA <= x"0d00"; + when "01" & x"601" => DATA <= x"466c"; + when "01" & x"602" => DATA <= x"6173"; + when "01" & x"603" => DATA <= x"6820"; + when "01" & x"604" => DATA <= x"6572"; + when "01" & x"605" => DATA <= x"726f"; + when "01" & x"606" => DATA <= x"7220"; + when "01" & x"607" => DATA <= x"6174"; + when "01" & x"608" => DATA <= x"2000"; + when "01" & x"609" => DATA <= x"4d6f"; + when "01" & x"60a" => DATA <= x"6e54"; + when "01" & x"60b" => DATA <= x"7565"; + when "01" & x"60c" => DATA <= x"5765"; + when "01" & x"60d" => DATA <= x"6454"; + when "01" & x"60e" => DATA <= x"6875"; + when "01" & x"60f" => DATA <= x"4672"; + when "01" & x"610" => DATA <= x"6953"; + when "01" & x"611" => DATA <= x"6174"; + when "01" & x"612" => DATA <= x"5375"; + when "01" & x"613" => DATA <= x"6e00"; + when "01" & x"614" => DATA <= x"4a61"; + when "01" & x"615" => DATA <= x"6e46"; + when "01" & x"616" => DATA <= x"6562"; + when "01" & x"617" => DATA <= x"4d61"; + when "01" & x"618" => DATA <= x"7241"; + when "01" & x"619" => DATA <= x"7072"; + when "01" & x"61a" => DATA <= x"4d61"; + when "01" & x"61b" => DATA <= x"794a"; + when "01" & x"61c" => DATA <= x"756e"; + when "01" & x"61d" => DATA <= x"4a75"; + when "01" & x"61e" => DATA <= x"6c41"; + when "01" & x"61f" => DATA <= x"7567"; + when "01" & x"620" => DATA <= x"5365"; + when "01" & x"621" => DATA <= x"704f"; + when "01" & x"622" => DATA <= x"6374"; + when "01" & x"623" => DATA <= x"4e6f"; + when "01" & x"624" => DATA <= x"7644"; + when "01" & x"625" => DATA <= x"6563"; + when "01" & x"626" => DATA <= x"000a"; + when "01" & x"627" => DATA <= x"0d42"; + when "01" & x"628" => DATA <= x"7573"; + when "01" & x"629" => DATA <= x"2065"; + when "01" & x"62a" => DATA <= x"7272"; + when "01" & x"62b" => DATA <= x"6f72"; + when "01" & x"62c" => DATA <= x"2061"; + when "01" & x"62d" => DATA <= x"7420"; + when "01" & x"62e" => DATA <= x"2400"; + when "01" & x"62f" => DATA <= x"0a0d"; + when "01" & x"630" => DATA <= x"4164"; + when "01" & x"631" => DATA <= x"6472"; + when "01" & x"632" => DATA <= x"6573"; + when "01" & x"633" => DATA <= x"7320"; + when "01" & x"634" => DATA <= x"6572"; + when "01" & x"635" => DATA <= x"726f"; + when "01" & x"636" => DATA <= x"7220"; + when "01" & x"637" => DATA <= x"6578"; + when "01" & x"638" => DATA <= x"6365"; + when "01" & x"639" => DATA <= x"7074"; + when "01" & x"63a" => DATA <= x"696f"; + when "01" & x"63b" => DATA <= x"6e20"; + when "01" & x"63c" => DATA <= x"6174"; + when "01" & x"63d" => DATA <= x"2024"; + when "01" & x"63e" => DATA <= x"0020"; + when "01" & x"63f" => DATA <= x"4163"; + when "01" & x"640" => DATA <= x"6365"; + when "01" & x"641" => DATA <= x"7373"; + when "01" & x"642" => DATA <= x"2074"; + when "01" & x"643" => DATA <= x"7970"; + when "01" & x"644" => DATA <= x"6526"; + when "01" & x"645" => DATA <= x"6675"; + when "01" & x"646" => DATA <= x"6e63"; + when "01" & x"647" => DATA <= x"7469"; + when "01" & x"648" => DATA <= x"6f6e"; + when "01" & x"649" => DATA <= x"3a00"; + when "01" & x"64a" => DATA <= x"2041"; + when "01" & x"64b" => DATA <= x"6363"; + when "01" & x"64c" => DATA <= x"6573"; + when "01" & x"64d" => DATA <= x"7320"; + when "01" & x"64e" => DATA <= x"6164"; + when "01" & x"64f" => DATA <= x"6472"; + when "01" & x"650" => DATA <= x"6573"; + when "01" & x"651" => DATA <= x"7320"; + when "01" & x"652" => DATA <= x"2020"; + when "01" & x"653" => DATA <= x"2020"; + when "01" & x"654" => DATA <= x"203a"; + when "01" & x"655" => DATA <= x"0020"; + when "01" & x"656" => DATA <= x"496e"; + when "01" & x"657" => DATA <= x"7374"; + when "01" & x"658" => DATA <= x"7275"; + when "01" & x"659" => DATA <= x"6374"; + when "01" & x"65a" => DATA <= x"696f"; + when "01" & x"65b" => DATA <= x"6e20"; + when "01" & x"65c" => DATA <= x"7265"; + when "01" & x"65d" => DATA <= x"6769"; + when "01" & x"65e" => DATA <= x"7374"; + when "01" & x"65f" => DATA <= x"6572"; + when "01" & x"660" => DATA <= x"3a00"; + when "01" & x"661" => DATA <= x"2053"; + when "01" & x"662" => DATA <= x"7461"; + when "01" & x"663" => DATA <= x"7475"; + when "01" & x"664" => DATA <= x"7320"; + when "01" & x"665" => DATA <= x"7265"; + when "01" & x"666" => DATA <= x"6769"; + when "01" & x"667" => DATA <= x"7374"; + when "01" & x"668" => DATA <= x"6572"; + when "01" & x"669" => DATA <= x"2020"; + when "01" & x"66a" => DATA <= x"2020"; + when "01" & x"66b" => DATA <= x"203a"; + when "01" & x"66c" => DATA <= x"5452"; + when "01" & x"66d" => DATA <= x"534d"; + when "01" & x"66e" => DATA <= x"2d49"; + when "01" & x"66f" => DATA <= x"4e54"; + when "01" & x"670" => DATA <= x"2d2d"; + when "01" & x"671" => DATA <= x"2d58"; + when "01" & x"672" => DATA <= x"4e5a"; + when "01" & x"673" => DATA <= x"5643"; + when "01" & x"674" => DATA <= x"0a0d"; when "01" & x"675" => DATA <= x"2020"; when "01" & x"676" => DATA <= x"2020"; when "01" & x"677" => DATA <= x"2020"; @@ -5785,1192 +5785,1192 @@ begin when "01" & x"67b" => DATA <= x"2020"; when "01" & x"67c" => DATA <= x"2020"; when "01" & x"67d" => DATA <= x"2020"; - when "01" & x"67e" => DATA <= x"0000"; - when "01" & x"67f" => DATA <= x"0100"; - when "01" & x"680" => DATA <= x"8000"; - when "01" & x"681" => DATA <= x"0100"; - when "01" & x"682" => DATA <= x"496c"; - when "01" & x"683" => DATA <= x"6c65"; - when "01" & x"684" => DATA <= x"6761"; - when "01" & x"685" => DATA <= x"6c20"; - when "01" & x"686" => DATA <= x"696e"; - when "01" & x"687" => DATA <= x"7374"; - when "01" & x"688" => DATA <= x"7275"; - when "01" & x"689" => DATA <= x"6374"; - when "01" & x"68a" => DATA <= x"696f"; - when "01" & x"68b" => DATA <= x"6e00"; - when "01" & x"68c" => DATA <= x"8000"; - when "01" & x"68d" => DATA <= x"0104"; - when "01" & x"68e" => DATA <= x"556e"; - when "01" & x"68f" => DATA <= x"6b6e"; - when "01" & x"690" => DATA <= x"6f77"; - when "01" & x"691" => DATA <= x"6e20"; - when "01" & x"692" => DATA <= x"4952"; - when "01" & x"693" => DATA <= x"5120"; - when "01" & x"694" => DATA <= x"6174"; - when "01" & x"695" => DATA <= x"2026"; - when "01" & x"696" => DATA <= x"0000"; - when "01" & x"697" => DATA <= x"0169"; - when "01" & x"698" => DATA <= x"8000"; - when "01" & x"699" => DATA <= x"0169"; - when "01" & x"69a" => DATA <= x"496e"; - when "01" & x"69b" => DATA <= x"7465"; - when "01" & x"69c" => DATA <= x"6765"; - when "01" & x"69d" => DATA <= x"7220"; - when "01" & x"69e" => DATA <= x"6469"; - when "01" & x"69f" => DATA <= x"7669"; - when "01" & x"6a0" => DATA <= x"6465"; - when "01" & x"6a1" => DATA <= x"2062"; - when "01" & x"6a2" => DATA <= x"7920"; - when "01" & x"6a3" => DATA <= x"7a65"; - when "01" & x"6a4" => DATA <= x"726f"; - when "01" & x"6a5" => DATA <= x"0008"; - when "01" & x"6a6" => DATA <= x"8000"; - when "01" & x"6a7" => DATA <= x"0008"; - when "01" & x"6a8" => DATA <= x"5072"; - when "01" & x"6a9" => DATA <= x"6976"; - when "01" & x"6aa" => DATA <= x"696c"; - when "01" & x"6ab" => DATA <= x"6567"; - when "01" & x"6ac" => DATA <= x"6520"; - when "01" & x"6ad" => DATA <= x"7669"; - when "01" & x"6ae" => DATA <= x"6f6c"; - when "01" & x"6af" => DATA <= x"6174"; - when "01" & x"6b0" => DATA <= x"696f"; - when "01" & x"6b1" => DATA <= x"6e00"; - when "01" & x"6b2" => DATA <= x"0000"; - when "01" & x"6b3" => DATA <= x"0001"; - when "01" & x"6b4" => DATA <= x"4f75"; - when "01" & x"6b5" => DATA <= x"7420"; - when "01" & x"6b6" => DATA <= x"6f66"; - when "01" & x"6b7" => DATA <= x"2072"; - when "01" & x"6b8" => DATA <= x"616e"; - when "01" & x"6b9" => DATA <= x"6765"; - when "01" & x"6ba" => DATA <= x"0000"; - when "01" & x"6bb" => DATA <= x"0011"; + when "01" & x"67e" => DATA <= x"2020"; + when "01" & x"67f" => DATA <= x"2020"; + when "01" & x"680" => DATA <= x"0000"; + when "01" & x"681" => DATA <= x"0000"; + when "01" & x"682" => DATA <= x"8000"; + when "01" & x"683" => DATA <= x"0100"; + when "01" & x"684" => DATA <= x"496c"; + when "01" & x"685" => DATA <= x"6c65"; + when "01" & x"686" => DATA <= x"6761"; + when "01" & x"687" => DATA <= x"6c20"; + when "01" & x"688" => DATA <= x"696e"; + when "01" & x"689" => DATA <= x"7374"; + when "01" & x"68a" => DATA <= x"7275"; + when "01" & x"68b" => DATA <= x"6374"; + when "01" & x"68c" => DATA <= x"696f"; + when "01" & x"68d" => DATA <= x"6e00"; + when "01" & x"68e" => DATA <= x"8000"; + when "01" & x"68f" => DATA <= x"0104"; + when "01" & x"690" => DATA <= x"556e"; + when "01" & x"691" => DATA <= x"6b6e"; + when "01" & x"692" => DATA <= x"6f77"; + when "01" & x"693" => DATA <= x"6e20"; + when "01" & x"694" => DATA <= x"4952"; + when "01" & x"695" => DATA <= x"5120"; + when "01" & x"696" => DATA <= x"6174"; + when "01" & x"697" => DATA <= x"2026"; + when "01" & x"698" => DATA <= x"0000"; + when "01" & x"699" => DATA <= x"0000"; + when "01" & x"69a" => DATA <= x"8000"; + when "01" & x"69b" => DATA <= x"0169"; + when "01" & x"69c" => DATA <= x"496e"; + when "01" & x"69d" => DATA <= x"7465"; + when "01" & x"69e" => DATA <= x"6765"; + when "01" & x"69f" => DATA <= x"7220"; + when "01" & x"6a0" => DATA <= x"6469"; + when "01" & x"6a1" => DATA <= x"7669"; + when "01" & x"6a2" => DATA <= x"6465"; + when "01" & x"6a3" => DATA <= x"2062"; + when "01" & x"6a4" => DATA <= x"7920"; + when "01" & x"6a5" => DATA <= x"7a65"; + when "01" & x"6a6" => DATA <= x"726f"; + when "01" & x"6a7" => DATA <= x"0000"; + when "01" & x"6a8" => DATA <= x"8000"; + when "01" & x"6a9" => DATA <= x"0008"; + when "01" & x"6aa" => DATA <= x"5072"; + when "01" & x"6ab" => DATA <= x"6976"; + when "01" & x"6ac" => DATA <= x"696c"; + when "01" & x"6ad" => DATA <= x"6567"; + when "01" & x"6ae" => DATA <= x"6520"; + when "01" & x"6af" => DATA <= x"7669"; + when "01" & x"6b0" => DATA <= x"6f6c"; + when "01" & x"6b1" => DATA <= x"6174"; + when "01" & x"6b2" => DATA <= x"696f"; + when "01" & x"6b3" => DATA <= x"6e00"; + when "01" & x"6b4" => DATA <= x"0000"; + when "01" & x"6b5" => DATA <= x"0001"; + when "01" & x"6b6" => DATA <= x"4f75"; + when "01" & x"6b7" => DATA <= x"7420"; + when "01" & x"6b8" => DATA <= x"6f66"; + when "01" & x"6b9" => DATA <= x"2072"; + when "01" & x"6ba" => DATA <= x"616e"; + when "01" & x"6bb" => DATA <= x"6765"; when "01" & x"6bc" => DATA <= x"0000"; - when "01" & x"6bd" => DATA <= x"0011"; - when "01" & x"6be" => DATA <= x"4573"; - when "01" & x"6bf" => DATA <= x"6361"; - when "01" & x"6c0" => DATA <= x"7065"; - when "01" & x"6c1" => DATA <= x"00ff"; - when "01" & x"6c2" => DATA <= x"0000"; - when "01" & x"6c3" => DATA <= x"00ff"; - when "01" & x"6c4" => DATA <= x"5468"; - when "01" & x"6c5" => DATA <= x"6973"; - when "01" & x"6c6" => DATA <= x"2069"; - when "01" & x"6c7" => DATA <= x"7320"; - when "01" & x"6c8" => DATA <= x"6e6f"; - when "01" & x"6c9" => DATA <= x"7420"; - when "01" & x"6ca" => DATA <= x"6120"; - when "01" & x"6cb" => DATA <= x"6c61"; - when "01" & x"6cc" => DATA <= x"6e67"; - when "01" & x"6cd" => DATA <= x"7561"; - when "01" & x"6ce" => DATA <= x"6765"; - when "01" & x"6cf" => DATA <= x"00ff"; - when "01" & x"6d0" => DATA <= x"0000"; - when "01" & x"6d1" => DATA <= x"00ff"; - when "01" & x"6d2" => DATA <= x"4920"; - when "01" & x"6d3" => DATA <= x"6361"; - when "01" & x"6d4" => DATA <= x"6e6e"; - when "01" & x"6d5" => DATA <= x"6f74"; - when "01" & x"6d6" => DATA <= x"2072"; - when "01" & x"6d7" => DATA <= x"756e"; - when "01" & x"6d8" => DATA <= x"2074"; - when "01" & x"6d9" => DATA <= x"6869"; - when "01" & x"6da" => DATA <= x"7320"; - when "01" & x"6db" => DATA <= x"636f"; - when "01" & x"6dc" => DATA <= x"6465"; - when "01" & x"6dd" => DATA <= x"00ff"; - when "01" & x"6de" => DATA <= x"0000"; - when "01" & x"6df" => DATA <= x"00ff"; - when "01" & x"6e0" => DATA <= x"556e"; - when "01" & x"6e1" => DATA <= x"6b6e"; - when "01" & x"6e2" => DATA <= x"6f77"; - when "01" & x"6e3" => DATA <= x"6e20"; - when "01" & x"6e4" => DATA <= x"6578"; - when "01" & x"6e5" => DATA <= x"6365"; - when "01" & x"6e6" => DATA <= x"7074"; - when "01" & x"6e7" => DATA <= x"696f"; - when "01" & x"6e8" => DATA <= x"6e00"; - when "01" & x"6e9" => DATA <= x"00ff"; - when "01" & x"6ea" => DATA <= x"0000"; - when "01" & x"6eb" => DATA <= x"00ff"; - when "01" & x"6ec" => DATA <= x"4e6f"; - when "01" & x"6ed" => DATA <= x"7420"; - when "01" & x"6ee" => DATA <= x"7375"; - when "01" & x"6ef" => DATA <= x"7070"; - when "01" & x"6f0" => DATA <= x"6f72"; - when "01" & x"6f1" => DATA <= x"7465"; - when "01" & x"6f2" => DATA <= x"6400"; - when "01" & x"6f3" => DATA <= x"016a"; - when "01" & x"6f4" => DATA <= x"0000"; - when "01" & x"6f5" => DATA <= x"016a"; - when "01" & x"6f6" => DATA <= x"4261"; - when "01" & x"6f7" => DATA <= x"6420"; - when "01" & x"6f8" => DATA <= x"6261"; - when "01" & x"6f9" => DATA <= x"7365"; - when "01" & x"6fa" => DATA <= x"0000"; - when "01" & x"6fb" => DATA <= x"016b"; + when "01" & x"6bd" => DATA <= x"0000"; + when "01" & x"6be" => DATA <= x"0000"; + when "01" & x"6bf" => DATA <= x"0011"; + when "01" & x"6c0" => DATA <= x"4573"; + when "01" & x"6c1" => DATA <= x"6361"; + when "01" & x"6c2" => DATA <= x"7065"; + when "01" & x"6c3" => DATA <= x"0000"; + when "01" & x"6c4" => DATA <= x"0000"; + when "01" & x"6c5" => DATA <= x"00ff"; + when "01" & x"6c6" => DATA <= x"5468"; + when "01" & x"6c7" => DATA <= x"6973"; + when "01" & x"6c8" => DATA <= x"2069"; + when "01" & x"6c9" => DATA <= x"7320"; + when "01" & x"6ca" => DATA <= x"6e6f"; + when "01" & x"6cb" => DATA <= x"7420"; + when "01" & x"6cc" => DATA <= x"6120"; + when "01" & x"6cd" => DATA <= x"6c61"; + when "01" & x"6ce" => DATA <= x"6e67"; + when "01" & x"6cf" => DATA <= x"7561"; + when "01" & x"6d0" => DATA <= x"6765"; + when "01" & x"6d1" => DATA <= x"0000"; + when "01" & x"6d2" => DATA <= x"0000"; + when "01" & x"6d3" => DATA <= x"00ff"; + when "01" & x"6d4" => DATA <= x"4920"; + when "01" & x"6d5" => DATA <= x"6361"; + when "01" & x"6d6" => DATA <= x"6e6e"; + when "01" & x"6d7" => DATA <= x"6f74"; + when "01" & x"6d8" => DATA <= x"2072"; + when "01" & x"6d9" => DATA <= x"756e"; + when "01" & x"6da" => DATA <= x"2074"; + when "01" & x"6db" => DATA <= x"6869"; + when "01" & x"6dc" => DATA <= x"7320"; + when "01" & x"6dd" => DATA <= x"636f"; + when "01" & x"6de" => DATA <= x"6465"; + when "01" & x"6df" => DATA <= x"0000"; + when "01" & x"6e0" => DATA <= x"0000"; + when "01" & x"6e1" => DATA <= x"00ff"; + when "01" & x"6e2" => DATA <= x"556e"; + when "01" & x"6e3" => DATA <= x"6b6e"; + when "01" & x"6e4" => DATA <= x"6f77"; + when "01" & x"6e5" => DATA <= x"6e20"; + when "01" & x"6e6" => DATA <= x"6578"; + when "01" & x"6e7" => DATA <= x"6365"; + when "01" & x"6e8" => DATA <= x"7074"; + when "01" & x"6e9" => DATA <= x"696f"; + when "01" & x"6ea" => DATA <= x"6e00"; + when "01" & x"6eb" => DATA <= x"0000"; + when "01" & x"6ec" => DATA <= x"0000"; + when "01" & x"6ed" => DATA <= x"00ff"; + when "01" & x"6ee" => DATA <= x"4e6f"; + when "01" & x"6ef" => DATA <= x"7420"; + when "01" & x"6f0" => DATA <= x"7375"; + when "01" & x"6f1" => DATA <= x"7070"; + when "01" & x"6f2" => DATA <= x"6f72"; + when "01" & x"6f3" => DATA <= x"7465"; + when "01" & x"6f4" => DATA <= x"6400"; + when "01" & x"6f5" => DATA <= x"0000"; + when "01" & x"6f6" => DATA <= x"0000"; + when "01" & x"6f7" => DATA <= x"016a"; + when "01" & x"6f8" => DATA <= x"4261"; + when "01" & x"6f9" => DATA <= x"6420"; + when "01" & x"6fa" => DATA <= x"6261"; + when "01" & x"6fb" => DATA <= x"7365"; when "01" & x"6fc" => DATA <= x"0000"; - when "01" & x"6fd" => DATA <= x"016b"; - when "01" & x"6fe" => DATA <= x"4261"; - when "01" & x"6ff" => DATA <= x"6420"; - when "01" & x"700" => DATA <= x"6e75"; - when "01" & x"701" => DATA <= x"6d62"; - when "01" & x"702" => DATA <= x"6572"; - when "01" & x"703" => DATA <= x"006c"; - when "01" & x"704" => DATA <= x"0000"; - when "01" & x"705" => DATA <= x"016c"; - when "01" & x"706" => DATA <= x"4e75"; - when "01" & x"707" => DATA <= x"6d62"; - when "01" & x"708" => DATA <= x"6572"; - when "01" & x"709" => DATA <= x"2074"; - when "01" & x"70a" => DATA <= x"6f6f"; - when "01" & x"70b" => DATA <= x"2062"; - when "01" & x"70c" => DATA <= x"6967"; - when "01" & x"70d" => DATA <= x"00b0"; - when "01" & x"70e" => DATA <= x"0000"; - when "01" & x"70f" => DATA <= x"01b0"; - when "01" & x"710" => DATA <= x"4261"; - when "01" & x"711" => DATA <= x"6420"; - when "01" & x"712" => DATA <= x"656e"; - when "01" & x"713" => DATA <= x"7669"; - when "01" & x"714" => DATA <= x"726f"; - when "01" & x"715" => DATA <= x"6e6d"; - when "01" & x"716" => DATA <= x"656e"; - when "01" & x"717" => DATA <= x"7420"; - when "01" & x"718" => DATA <= x"6e75"; - when "01" & x"719" => DATA <= x"6d62"; - when "01" & x"71a" => DATA <= x"6572"; - when "01" & x"71b" => DATA <= x"00e6"; - when "01" & x"71c" => DATA <= x"0000"; - when "01" & x"71d" => DATA <= x"01e6"; - when "01" & x"71e" => DATA <= x"4e6f"; - when "01" & x"71f" => DATA <= x"2073"; - when "01" & x"720" => DATA <= x"7563"; - when "01" & x"721" => DATA <= x"6820"; - when "01" & x"722" => DATA <= x"5357"; - when "01" & x"723" => DATA <= x"4900"; - when "01" & x"724" => DATA <= x"0000"; - when "01" & x"725" => DATA <= x"01a0"; - when "01" & x"726" => DATA <= x"4261"; - when "01" & x"727" => DATA <= x"6420"; - when "01" & x"728" => DATA <= x"7665"; - when "01" & x"729" => DATA <= x"6374"; - when "01" & x"72a" => DATA <= x"6f72"; - when "01" & x"72b" => DATA <= x"206e"; - when "01" & x"72c" => DATA <= x"756d"; - when "01" & x"72d" => DATA <= x"6265"; - when "01" & x"72e" => DATA <= x"7200"; - when "01" & x"72f" => DATA <= x"01e2"; - when "01" & x"730" => DATA <= x"0000"; - when "01" & x"731" => DATA <= x"01e2"; - when "01" & x"732" => DATA <= x"5265"; - when "01" & x"733" => DATA <= x"7475"; - when "01" & x"734" => DATA <= x"726e"; - when "01" & x"735" => DATA <= x"2063"; - when "01" & x"736" => DATA <= x"6f64"; - when "01" & x"737" => DATA <= x"6520"; - when "01" & x"738" => DATA <= x"6c69"; - when "01" & x"739" => DATA <= x"6d69"; - when "01" & x"73a" => DATA <= x"7420"; - when "01" & x"73b" => DATA <= x"6578"; - when "01" & x"73c" => DATA <= x"6365"; - when "01" & x"73d" => DATA <= x"6564"; - when "01" & x"73e" => DATA <= x"6564"; - when "01" & x"73f" => DATA <= x"00e4"; - when "01" & x"740" => DATA <= x"0000"; - when "01" & x"741" => DATA <= x"01e4"; - when "01" & x"742" => DATA <= x"4275"; - when "01" & x"743" => DATA <= x"6666"; - when "01" & x"744" => DATA <= x"6572"; - when "01" & x"745" => DATA <= x"206f"; - when "01" & x"746" => DATA <= x"7665"; - when "01" & x"747" => DATA <= x"7266"; - when "01" & x"748" => DATA <= x"6c6f"; - when "01" & x"749" => DATA <= x"7700"; - when "01" & x"74a" => DATA <= x"0000"; - when "01" & x"74b" => DATA <= x"01e6"; - when "01" & x"74c" => DATA <= x"5357"; - when "01" & x"74d" => DATA <= x"4920"; - when "01" & x"74e" => DATA <= x"6e61"; - when "01" & x"74f" => DATA <= x"6d65"; - when "01" & x"750" => DATA <= x"206e"; - when "01" & x"751" => DATA <= x"6f74"; - when "01" & x"752" => DATA <= x"206b"; - when "01" & x"753" => DATA <= x"6e6f"; - when "01" & x"754" => DATA <= x"776e"; - when "01" & x"755" => DATA <= x"00c2"; - when "01" & x"756" => DATA <= x"0000"; - when "01" & x"757" => DATA <= x"02c2"; - when "01" & x"758" => DATA <= x"556e"; - when "01" & x"759" => DATA <= x"6b6e"; - when "01" & x"75a" => DATA <= x"6f77"; - when "01" & x"75b" => DATA <= x"6e20"; - when "01" & x"75c" => DATA <= x"2725"; - when "01" & x"75d" => DATA <= x"2720"; - when "01" & x"75e" => DATA <= x"6669"; - when "01" & x"75f" => DATA <= x"656c"; - when "01" & x"760" => DATA <= x"6400"; - when "01" & x"761" => DATA <= x"0306"; - when "01" & x"762" => DATA <= x"0000"; - when "01" & x"763" => DATA <= x"0306"; - when "01" & x"764" => DATA <= x"4261"; - when "01" & x"765" => DATA <= x"6420"; - when "01" & x"766" => DATA <= x"7374"; - when "01" & x"767" => DATA <= x"6174"; - when "01" & x"768" => DATA <= x"696f"; - when "01" & x"769" => DATA <= x"6e20"; - when "01" & x"76a" => DATA <= x"6e75"; - when "01" & x"76b" => DATA <= x"6d62"; - when "01" & x"76c" => DATA <= x"6572"; - when "01" & x"76d" => DATA <= x"0007"; - when "01" & x"76e" => DATA <= x"0000"; - when "01" & x"76f" => DATA <= x"0307"; - when "01" & x"770" => DATA <= x"4261"; - when "01" & x"771" => DATA <= x"6420"; - when "01" & x"772" => DATA <= x"6e65"; - when "01" & x"773" => DATA <= x"7477"; - when "01" & x"774" => DATA <= x"6f72"; - when "01" & x"775" => DATA <= x"6b20"; - when "01" & x"776" => DATA <= x"6e75"; - when "01" & x"777" => DATA <= x"6d62"; - when "01" & x"778" => DATA <= x"6572"; - when "01" & x"779" => DATA <= x"0001"; - when "01" & x"77a" => DATA <= x"0000"; - when "01" & x"77b" => DATA <= x"0401"; - when "01" & x"77c" => DATA <= x"4261"; - when "01" & x"77d" => DATA <= x"6420"; - when "01" & x"77e" => DATA <= x"4653"; - when "01" & x"77f" => DATA <= x"436f"; - when "01" & x"780" => DATA <= x"6e74"; - when "01" & x"781" => DATA <= x"726f"; - when "01" & x"782" => DATA <= x"6c20"; - when "01" & x"783" => DATA <= x"6361"; - when "01" & x"784" => DATA <= x"6c6c"; - when "01" & x"785" => DATA <= x"0007"; - when "01" & x"786" => DATA <= x"0000"; - when "01" & x"787" => DATA <= x"0807"; - when "01" & x"788" => DATA <= x"556e"; - when "01" & x"789" => DATA <= x"616c"; - when "01" & x"78a" => DATA <= x"6967"; - when "01" & x"78b" => DATA <= x"6e65"; - when "01" & x"78c" => DATA <= x"6420"; - when "01" & x"78d" => DATA <= x"6164"; - when "01" & x"78e" => DATA <= x"6472"; - when "01" & x"78f" => DATA <= x"6573"; - when "01" & x"790" => DATA <= x"7300"; - when "01" & x"791" => DATA <= x"0000"; - when "01" & x"792" => DATA <= x"0000"; + when "01" & x"6fd" => DATA <= x"0000"; + when "01" & x"6fe" => DATA <= x"0000"; + when "01" & x"6ff" => DATA <= x"016b"; + when "01" & x"700" => DATA <= x"4261"; + when "01" & x"701" => DATA <= x"6420"; + when "01" & x"702" => DATA <= x"6e75"; + when "01" & x"703" => DATA <= x"6d62"; + when "01" & x"704" => DATA <= x"6572"; + when "01" & x"705" => DATA <= x"0000"; + when "01" & x"706" => DATA <= x"0000"; + when "01" & x"707" => DATA <= x"016c"; + when "01" & x"708" => DATA <= x"4e75"; + when "01" & x"709" => DATA <= x"6d62"; + when "01" & x"70a" => DATA <= x"6572"; + when "01" & x"70b" => DATA <= x"2074"; + when "01" & x"70c" => DATA <= x"6f6f"; + when "01" & x"70d" => DATA <= x"2062"; + when "01" & x"70e" => DATA <= x"6967"; + when "01" & x"70f" => DATA <= x"0000"; + when "01" & x"710" => DATA <= x"0000"; + when "01" & x"711" => DATA <= x"01b0"; + when "01" & x"712" => DATA <= x"4261"; + when "01" & x"713" => DATA <= x"6420"; + when "01" & x"714" => DATA <= x"656e"; + when "01" & x"715" => DATA <= x"7669"; + when "01" & x"716" => DATA <= x"726f"; + when "01" & x"717" => DATA <= x"6e6d"; + when "01" & x"718" => DATA <= x"656e"; + when "01" & x"719" => DATA <= x"7420"; + when "01" & x"71a" => DATA <= x"6e75"; + when "01" & x"71b" => DATA <= x"6d62"; + when "01" & x"71c" => DATA <= x"6572"; + when "01" & x"71d" => DATA <= x"0000"; + when "01" & x"71e" => DATA <= x"0000"; + when "01" & x"71f" => DATA <= x"01e6"; + when "01" & x"720" => DATA <= x"4e6f"; + when "01" & x"721" => DATA <= x"2073"; + when "01" & x"722" => DATA <= x"7563"; + when "01" & x"723" => DATA <= x"6820"; + when "01" & x"724" => DATA <= x"5357"; + when "01" & x"725" => DATA <= x"4900"; + when "01" & x"726" => DATA <= x"0000"; + when "01" & x"727" => DATA <= x"01a0"; + when "01" & x"728" => DATA <= x"4261"; + when "01" & x"729" => DATA <= x"6420"; + when "01" & x"72a" => DATA <= x"7665"; + when "01" & x"72b" => DATA <= x"6374"; + when "01" & x"72c" => DATA <= x"6f72"; + when "01" & x"72d" => DATA <= x"206e"; + when "01" & x"72e" => DATA <= x"756d"; + when "01" & x"72f" => DATA <= x"6265"; + when "01" & x"730" => DATA <= x"7200"; + when "01" & x"731" => DATA <= x"0000"; + when "01" & x"732" => DATA <= x"0000"; + when "01" & x"733" => DATA <= x"01e2"; + when "01" & x"734" => DATA <= x"5265"; + when "01" & x"735" => DATA <= x"7475"; + when "01" & x"736" => DATA <= x"726e"; + when "01" & x"737" => DATA <= x"2063"; + when "01" & x"738" => DATA <= x"6f64"; + when "01" & x"739" => DATA <= x"6520"; + when "01" & x"73a" => DATA <= x"6c69"; + when "01" & x"73b" => DATA <= x"6d69"; + when "01" & x"73c" => DATA <= x"7420"; + when "01" & x"73d" => DATA <= x"6578"; + when "01" & x"73e" => DATA <= x"6365"; + when "01" & x"73f" => DATA <= x"6564"; + when "01" & x"740" => DATA <= x"6564"; + when "01" & x"741" => DATA <= x"0000"; + when "01" & x"742" => DATA <= x"0000"; + when "01" & x"743" => DATA <= x"01e4"; + when "01" & x"744" => DATA <= x"4275"; + when "01" & x"745" => DATA <= x"6666"; + when "01" & x"746" => DATA <= x"6572"; + when "01" & x"747" => DATA <= x"206f"; + when "01" & x"748" => DATA <= x"7665"; + when "01" & x"749" => DATA <= x"7266"; + when "01" & x"74a" => DATA <= x"6c6f"; + when "01" & x"74b" => DATA <= x"7700"; + when "01" & x"74c" => DATA <= x"0000"; + when "01" & x"74d" => DATA <= x"01e6"; + when "01" & x"74e" => DATA <= x"5357"; + when "01" & x"74f" => DATA <= x"4920"; + when "01" & x"750" => DATA <= x"6e61"; + when "01" & x"751" => DATA <= x"6d65"; + when "01" & x"752" => DATA <= x"206e"; + when "01" & x"753" => DATA <= x"6f74"; + when "01" & x"754" => DATA <= x"206b"; + when "01" & x"755" => DATA <= x"6e6f"; + when "01" & x"756" => DATA <= x"776e"; + when "01" & x"757" => DATA <= x"0000"; + when "01" & x"758" => DATA <= x"0000"; + when "01" & x"759" => DATA <= x"02c2"; + when "01" & x"75a" => DATA <= x"556e"; + when "01" & x"75b" => DATA <= x"6b6e"; + when "01" & x"75c" => DATA <= x"6f77"; + when "01" & x"75d" => DATA <= x"6e20"; + when "01" & x"75e" => DATA <= x"2725"; + when "01" & x"75f" => DATA <= x"2720"; + when "01" & x"760" => DATA <= x"6669"; + when "01" & x"761" => DATA <= x"656c"; + when "01" & x"762" => DATA <= x"6400"; + when "01" & x"763" => DATA <= x"0000"; + when "01" & x"764" => DATA <= x"0000"; + when "01" & x"765" => DATA <= x"0306"; + when "01" & x"766" => DATA <= x"4261"; + when "01" & x"767" => DATA <= x"6420"; + when "01" & x"768" => DATA <= x"7374"; + when "01" & x"769" => DATA <= x"6174"; + when "01" & x"76a" => DATA <= x"696f"; + when "01" & x"76b" => DATA <= x"6e20"; + when "01" & x"76c" => DATA <= x"6e75"; + when "01" & x"76d" => DATA <= x"6d62"; + when "01" & x"76e" => DATA <= x"6572"; + when "01" & x"76f" => DATA <= x"0000"; + when "01" & x"770" => DATA <= x"0000"; + when "01" & x"771" => DATA <= x"0307"; + when "01" & x"772" => DATA <= x"4261"; + when "01" & x"773" => DATA <= x"6420"; + when "01" & x"774" => DATA <= x"6e65"; + when "01" & x"775" => DATA <= x"7477"; + when "01" & x"776" => DATA <= x"6f72"; + when "01" & x"777" => DATA <= x"6b20"; + when "01" & x"778" => DATA <= x"6e75"; + when "01" & x"779" => DATA <= x"6d62"; + when "01" & x"77a" => DATA <= x"6572"; + when "01" & x"77b" => DATA <= x"0000"; + when "01" & x"77c" => DATA <= x"0000"; + when "01" & x"77d" => DATA <= x"0401"; + when "01" & x"77e" => DATA <= x"4261"; + when "01" & x"77f" => DATA <= x"6420"; + when "01" & x"780" => DATA <= x"4653"; + when "01" & x"781" => DATA <= x"436f"; + when "01" & x"782" => DATA <= x"6e74"; + when "01" & x"783" => DATA <= x"726f"; + when "01" & x"784" => DATA <= x"6c20"; + when "01" & x"785" => DATA <= x"6361"; + when "01" & x"786" => DATA <= x"6c6c"; + when "01" & x"787" => DATA <= x"0000"; + when "01" & x"788" => DATA <= x"0000"; + when "01" & x"789" => DATA <= x"0807"; + when "01" & x"78a" => DATA <= x"556e"; + when "01" & x"78b" => DATA <= x"616c"; + when "01" & x"78c" => DATA <= x"6967"; + when "01" & x"78d" => DATA <= x"6e65"; + when "01" & x"78e" => DATA <= x"6420"; + when "01" & x"78f" => DATA <= x"6164"; + when "01" & x"790" => DATA <= x"6472"; + when "01" & x"791" => DATA <= x"6573"; + when "01" & x"792" => DATA <= x"7300"; when "01" & x"793" => DATA <= x"0000"; - when "01" & x"794" => DATA <= x"0005"; - when "01" & x"795" => DATA <= x"0005"; - when "01" & x"796" => DATA <= x"0205"; - when "01" & x"797" => DATA <= x"080e"; - when "01" & x"798" => DATA <= x"0401"; - when "01" & x"799" => DATA <= x"0105"; - when "01" & x"79a" => DATA <= x"0001"; - when "01" & x"79b" => DATA <= x"2010"; - when "01" & x"79c" => DATA <= x"0d00"; - when "01" & x"79d" => DATA <= x"0480"; - when "01" & x"79e" => DATA <= x"0500"; - when "01" & x"79f" => DATA <= x"0500"; + when "01" & x"794" => DATA <= x"0000"; + when "01" & x"795" => DATA <= x"0000"; + when "01" & x"796" => DATA <= x"0005"; + when "01" & x"797" => DATA <= x"0005"; + when "01" & x"798" => DATA <= x"0205"; + when "01" & x"799" => DATA <= x"080e"; + when "01" & x"79a" => DATA <= x"0401"; + when "01" & x"79b" => DATA <= x"0105"; + when "01" & x"79c" => DATA <= x"0001"; + when "01" & x"79d" => DATA <= x"2010"; + when "01" & x"79e" => DATA <= x"0d00"; + when "01" & x"79f" => DATA <= x"0480"; when "01" & x"7a0" => DATA <= x"0500"; - when "01" & x"7a1" => DATA <= x"0000"; - when "01" & x"7a2" => DATA <= x"0509"; - when "01" & x"7a3" => DATA <= x"0500"; - when "01" & x"7a4" => DATA <= x"0818"; - when "01" & x"7a5" => DATA <= x"0001"; - when "01" & x"7a6" => DATA <= x"0d80"; - when "01" & x"7a7" => DATA <= x"0480"; - when "01" & x"7a8" => DATA <= x"0000"; - when "01" & x"7a9" => DATA <= x"0000"; - when "01" & x"7aa" => DATA <= x"003f"; - when "01" & x"7ab" => DATA <= x"09e6"; - when "01" & x"7ac" => DATA <= x"4f53"; - when "01" & x"7ad" => DATA <= x"5f57"; - when "01" & x"7ae" => DATA <= x"7269"; - when "01" & x"7af" => DATA <= x"7465"; - when "01" & x"7b0" => DATA <= x"4300"; - when "01" & x"7b1" => DATA <= x"0000"; - when "01" & x"7b2" => DATA <= x"0000"; - when "01" & x"7b3" => DATA <= x"0001"; - when "01" & x"7b4" => DATA <= x"003f"; - when "01" & x"7b5" => DATA <= x"09ec"; - when "01" & x"7b6" => DATA <= x"4f53"; - when "01" & x"7b7" => DATA <= x"5f57"; - when "01" & x"7b8" => DATA <= x"7269"; - when "01" & x"7b9" => DATA <= x"7465"; - when "01" & x"7ba" => DATA <= x"5300"; - when "01" & x"7bb" => DATA <= x"0000"; - when "01" & x"7bc" => DATA <= x"0000"; - when "01" & x"7bd" => DATA <= x"0002"; - when "01" & x"7be" => DATA <= x"003f"; - when "01" & x"7bf" => DATA <= x"09fe"; - when "01" & x"7c0" => DATA <= x"4f53"; - when "01" & x"7c1" => DATA <= x"5f57"; - when "01" & x"7c2" => DATA <= x"7269"; - when "01" & x"7c3" => DATA <= x"7465"; - when "01" & x"7c4" => DATA <= x"3000"; - when "01" & x"7c5" => DATA <= x"0000"; - when "01" & x"7c6" => DATA <= x"0000"; - when "01" & x"7c7" => DATA <= x"0003"; - when "01" & x"7c8" => DATA <= x"003f"; - when "01" & x"7c9" => DATA <= x"0a12"; - when "01" & x"7ca" => DATA <= x"4f53"; - when "01" & x"7cb" => DATA <= x"5f4e"; - when "01" & x"7cc" => DATA <= x"6577"; - when "01" & x"7cd" => DATA <= x"4c69"; - when "01" & x"7ce" => DATA <= x"6e65"; - when "01" & x"7cf" => DATA <= x"0000"; - when "01" & x"7d0" => DATA <= x"0000"; - when "01" & x"7d1" => DATA <= x"0004"; + when "01" & x"7a1" => DATA <= x"0500"; + when "01" & x"7a2" => DATA <= x"0500"; + when "01" & x"7a3" => DATA <= x"0000"; + when "01" & x"7a4" => DATA <= x"0509"; + when "01" & x"7a5" => DATA <= x"0500"; + when "01" & x"7a6" => DATA <= x"0818"; + when "01" & x"7a7" => DATA <= x"0001"; + when "01" & x"7a8" => DATA <= x"0d80"; + when "01" & x"7a9" => DATA <= x"0480"; + when "01" & x"7aa" => DATA <= x"0000"; + when "01" & x"7ab" => DATA <= x"0000"; + when "01" & x"7ac" => DATA <= x"003f"; + when "01" & x"7ad" => DATA <= x"09ea"; + when "01" & x"7ae" => DATA <= x"4f53"; + when "01" & x"7af" => DATA <= x"5f57"; + when "01" & x"7b0" => DATA <= x"7269"; + when "01" & x"7b1" => DATA <= x"7465"; + when "01" & x"7b2" => DATA <= x"4300"; + when "01" & x"7b3" => DATA <= x"0000"; + when "01" & x"7b4" => DATA <= x"0000"; + when "01" & x"7b5" => DATA <= x"0001"; + when "01" & x"7b6" => DATA <= x"003f"; + when "01" & x"7b7" => DATA <= x"09f0"; + when "01" & x"7b8" => DATA <= x"4f53"; + when "01" & x"7b9" => DATA <= x"5f57"; + when "01" & x"7ba" => DATA <= x"7269"; + when "01" & x"7bb" => DATA <= x"7465"; + when "01" & x"7bc" => DATA <= x"5300"; + when "01" & x"7bd" => DATA <= x"0000"; + when "01" & x"7be" => DATA <= x"0000"; + when "01" & x"7bf" => DATA <= x"0002"; + when "01" & x"7c0" => DATA <= x"003f"; + when "01" & x"7c1" => DATA <= x"0a02"; + when "01" & x"7c2" => DATA <= x"4f53"; + when "01" & x"7c3" => DATA <= x"5f57"; + when "01" & x"7c4" => DATA <= x"7269"; + when "01" & x"7c5" => DATA <= x"7465"; + when "01" & x"7c6" => DATA <= x"3000"; + when "01" & x"7c7" => DATA <= x"0000"; + when "01" & x"7c8" => DATA <= x"0000"; + when "01" & x"7c9" => DATA <= x"0003"; + when "01" & x"7ca" => DATA <= x"003f"; + when "01" & x"7cb" => DATA <= x"0a16"; + when "01" & x"7cc" => DATA <= x"4f53"; + when "01" & x"7cd" => DATA <= x"5f4e"; + when "01" & x"7ce" => DATA <= x"6577"; + when "01" & x"7cf" => DATA <= x"4c69"; + when "01" & x"7d0" => DATA <= x"6e65"; + when "01" & x"7d1" => DATA <= x"0000"; when "01" & x"7d2" => DATA <= x"0000"; - when "01" & x"7d3" => DATA <= x"0410"; - when "01" & x"7d4" => DATA <= x"4f53"; - when "01" & x"7d5" => DATA <= x"5f52"; - when "01" & x"7d6" => DATA <= x"6561"; - when "01" & x"7d7" => DATA <= x"6443"; - when "01" & x"7d8" => DATA <= x"0000"; - when "01" & x"7d9" => DATA <= x"0000"; + when "01" & x"7d3" => DATA <= x"0004"; + when "01" & x"7d4" => DATA <= x"0000"; + when "01" & x"7d5" => DATA <= x"0410"; + when "01" & x"7d6" => DATA <= x"4f53"; + when "01" & x"7d7" => DATA <= x"5f52"; + when "01" & x"7d8" => DATA <= x"6561"; + when "01" & x"7d9" => DATA <= x"6443"; when "01" & x"7da" => DATA <= x"0000"; - when "01" & x"7db" => DATA <= x"0005"; + when "01" & x"7db" => DATA <= x"0000"; when "01" & x"7dc" => DATA <= x"0000"; - when "01" & x"7dd" => DATA <= x"0414"; - when "01" & x"7de" => DATA <= x"4f53"; - when "01" & x"7df" => DATA <= x"5f43"; - when "01" & x"7e0" => DATA <= x"4c49"; - when "01" & x"7e1" => DATA <= x"0000"; - when "01" & x"7e2" => DATA <= x"0000"; - when "01" & x"7e3" => DATA <= x"0006"; + when "01" & x"7dd" => DATA <= x"0005"; + when "01" & x"7de" => DATA <= x"0000"; + when "01" & x"7df" => DATA <= x"0414"; + when "01" & x"7e0" => DATA <= x"4f53"; + when "01" & x"7e1" => DATA <= x"5f43"; + when "01" & x"7e2" => DATA <= x"4c49"; + when "01" & x"7e3" => DATA <= x"0000"; when "01" & x"7e4" => DATA <= x"0000"; - when "01" & x"7e5" => DATA <= x"0418"; - when "01" & x"7e6" => DATA <= x"4f53"; - when "01" & x"7e7" => DATA <= x"5f42"; - when "01" & x"7e8" => DATA <= x"7974"; - when "01" & x"7e9" => DATA <= x"6500"; - when "01" & x"7ea" => DATA <= x"0000"; - when "01" & x"7eb" => DATA <= x"0007"; + when "01" & x"7e5" => DATA <= x"0006"; + when "01" & x"7e6" => DATA <= x"0000"; + when "01" & x"7e7" => DATA <= x"0418"; + when "01" & x"7e8" => DATA <= x"4f53"; + when "01" & x"7e9" => DATA <= x"5f42"; + when "01" & x"7ea" => DATA <= x"7974"; + when "01" & x"7eb" => DATA <= x"6500"; when "01" & x"7ec" => DATA <= x"0000"; - when "01" & x"7ed" => DATA <= x"041c"; - when "01" & x"7ee" => DATA <= x"4f53"; - when "01" & x"7ef" => DATA <= x"5f57"; - when "01" & x"7f0" => DATA <= x"6f72"; - when "01" & x"7f1" => DATA <= x"6400"; - when "01" & x"7f2" => DATA <= x"0000"; - when "01" & x"7f3" => DATA <= x"0008"; + when "01" & x"7ed" => DATA <= x"0007"; + when "01" & x"7ee" => DATA <= x"0000"; + when "01" & x"7ef" => DATA <= x"041c"; + when "01" & x"7f0" => DATA <= x"4f53"; + when "01" & x"7f1" => DATA <= x"5f57"; + when "01" & x"7f2" => DATA <= x"6f72"; + when "01" & x"7f3" => DATA <= x"6400"; when "01" & x"7f4" => DATA <= x"0000"; - when "01" & x"7f5" => DATA <= x"0420"; - when "01" & x"7f6" => DATA <= x"4f53"; - when "01" & x"7f7" => DATA <= x"5f46"; - when "01" & x"7f8" => DATA <= x"696c"; - when "01" & x"7f9" => DATA <= x"6500"; - when "01" & x"7fa" => DATA <= x"0000"; - when "01" & x"7fb" => DATA <= x"0009"; + when "01" & x"7f5" => DATA <= x"0008"; + when "01" & x"7f6" => DATA <= x"0000"; + when "01" & x"7f7" => DATA <= x"0420"; + when "01" & x"7f8" => DATA <= x"4f53"; + when "01" & x"7f9" => DATA <= x"5f46"; + when "01" & x"7fa" => DATA <= x"696c"; + when "01" & x"7fb" => DATA <= x"6500"; when "01" & x"7fc" => DATA <= x"0000"; - when "01" & x"7fd" => DATA <= x"0424"; - when "01" & x"7fe" => DATA <= x"4f53"; - when "01" & x"7ff" => DATA <= x"5f41"; - when "01" & x"800" => DATA <= x"7267"; - when "01" & x"801" => DATA <= x"7300"; - when "01" & x"802" => DATA <= x"0000"; - when "01" & x"803" => DATA <= x"000a"; + when "01" & x"7fd" => DATA <= x"0009"; + when "01" & x"7fe" => DATA <= x"0000"; + when "01" & x"7ff" => DATA <= x"0424"; + when "01" & x"800" => DATA <= x"4f53"; + when "01" & x"801" => DATA <= x"5f41"; + when "01" & x"802" => DATA <= x"7267"; + when "01" & x"803" => DATA <= x"7300"; when "01" & x"804" => DATA <= x"0000"; - when "01" & x"805" => DATA <= x"0428"; - when "01" & x"806" => DATA <= x"4f53"; - when "01" & x"807" => DATA <= x"5f42"; - when "01" & x"808" => DATA <= x"4765"; - when "01" & x"809" => DATA <= x"7400"; - when "01" & x"80a" => DATA <= x"0000"; - when "01" & x"80b" => DATA <= x"000b"; + when "01" & x"805" => DATA <= x"000a"; + when "01" & x"806" => DATA <= x"0000"; + when "01" & x"807" => DATA <= x"0428"; + when "01" & x"808" => DATA <= x"4f53"; + when "01" & x"809" => DATA <= x"5f42"; + when "01" & x"80a" => DATA <= x"4765"; + when "01" & x"80b" => DATA <= x"7400"; when "01" & x"80c" => DATA <= x"0000"; - when "01" & x"80d" => DATA <= x"042c"; - when "01" & x"80e" => DATA <= x"4f53"; - when "01" & x"80f" => DATA <= x"5f42"; - when "01" & x"810" => DATA <= x"5075"; - when "01" & x"811" => DATA <= x"7400"; - when "01" & x"812" => DATA <= x"0000"; - when "01" & x"813" => DATA <= x"000c"; + when "01" & x"80d" => DATA <= x"000b"; + when "01" & x"80e" => DATA <= x"0000"; + when "01" & x"80f" => DATA <= x"042c"; + when "01" & x"810" => DATA <= x"4f53"; + when "01" & x"811" => DATA <= x"5f42"; + when "01" & x"812" => DATA <= x"5075"; + when "01" & x"813" => DATA <= x"7400"; when "01" & x"814" => DATA <= x"0000"; - when "01" & x"815" => DATA <= x"0430"; - when "01" & x"816" => DATA <= x"4f53"; - when "01" & x"817" => DATA <= x"5f47"; - when "01" & x"818" => DATA <= x"4250"; - when "01" & x"819" => DATA <= x"4200"; - when "01" & x"81a" => DATA <= x"0000"; - when "01" & x"81b" => DATA <= x"000d"; + when "01" & x"815" => DATA <= x"000c"; + when "01" & x"816" => DATA <= x"0000"; + when "01" & x"817" => DATA <= x"0430"; + when "01" & x"818" => DATA <= x"4f53"; + when "01" & x"819" => DATA <= x"5f47"; + when "01" & x"81a" => DATA <= x"4250"; + when "01" & x"81b" => DATA <= x"4200"; when "01" & x"81c" => DATA <= x"0000"; - when "01" & x"81d" => DATA <= x"0434"; - when "01" & x"81e" => DATA <= x"4f53"; - when "01" & x"81f" => DATA <= x"5f46"; - when "01" & x"820" => DATA <= x"696e"; - when "01" & x"821" => DATA <= x"6400"; - when "01" & x"822" => DATA <= x"0000"; - when "01" & x"823" => DATA <= x"000e"; + when "01" & x"81d" => DATA <= x"000d"; + when "01" & x"81e" => DATA <= x"0000"; + when "01" & x"81f" => DATA <= x"0434"; + when "01" & x"820" => DATA <= x"4f53"; + when "01" & x"821" => DATA <= x"5f46"; + when "01" & x"822" => DATA <= x"696e"; + when "01" & x"823" => DATA <= x"6400"; when "01" & x"824" => DATA <= x"0000"; - when "01" & x"825" => DATA <= x"0438"; - when "01" & x"826" => DATA <= x"4f53"; - when "01" & x"827" => DATA <= x"5f52"; - when "01" & x"828" => DATA <= x"6561"; - when "01" & x"829" => DATA <= x"644c"; - when "01" & x"82a" => DATA <= x"696e"; - when "01" & x"82b" => DATA <= x"6500"; - when "01" & x"82c" => DATA <= x"0000"; - when "01" & x"82d" => DATA <= x"000f"; - when "01" & x"82e" => DATA <= x"003f"; - when "01" & x"82f" => DATA <= x"0df8"; - when "01" & x"830" => DATA <= x"4f53"; - when "01" & x"831" => DATA <= x"5f43"; - when "01" & x"832" => DATA <= x"6f6e"; - when "01" & x"833" => DATA <= x"7472"; - when "01" & x"834" => DATA <= x"6f6c"; - when "01" & x"835" => DATA <= x"0000"; - when "01" & x"836" => DATA <= x"0000"; - when "01" & x"837" => DATA <= x"0010"; - when "01" & x"838" => DATA <= x"003f"; - when "01" & x"839" => DATA <= x"0e30"; - when "01" & x"83a" => DATA <= x"4f53"; - when "01" & x"83b" => DATA <= x"5f47"; - when "01" & x"83c" => DATA <= x"6574"; - when "01" & x"83d" => DATA <= x"456e"; - when "01" & x"83e" => DATA <= x"7600"; - when "01" & x"83f" => DATA <= x"0000"; - when "01" & x"840" => DATA <= x"0000"; - when "01" & x"841" => DATA <= x"0011"; - when "01" & x"842" => DATA <= x"003f"; - when "01" & x"843" => DATA <= x"0e44"; - when "01" & x"844" => DATA <= x"4f53"; - when "01" & x"845" => DATA <= x"5f45"; - when "01" & x"846" => DATA <= x"7869"; - when "01" & x"847" => DATA <= x"7400"; - when "01" & x"848" => DATA <= x"0000"; - when "01" & x"849" => DATA <= x"0012"; - when "01" & x"84a" => DATA <= x"003f"; - when "01" & x"84b" => DATA <= x"0e4a"; - when "01" & x"84c" => DATA <= x"4f53"; - when "01" & x"84d" => DATA <= x"5f53"; - when "01" & x"84e" => DATA <= x"6574"; - when "01" & x"84f" => DATA <= x"456e"; - when "01" & x"850" => DATA <= x"7600"; - when "01" & x"851" => DATA <= x"0000"; - when "01" & x"852" => DATA <= x"0000"; - when "01" & x"853" => DATA <= x"0013"; - when "01" & x"854" => DATA <= x"003f"; - when "01" & x"855" => DATA <= x"0e9a"; - when "01" & x"856" => DATA <= x"4f53"; - when "01" & x"857" => DATA <= x"5f49"; - when "01" & x"858" => DATA <= x"6e74"; - when "01" & x"859" => DATA <= x"4f6e"; - when "01" & x"85a" => DATA <= x"0000"; - when "01" & x"85b" => DATA <= x"0000"; + when "01" & x"825" => DATA <= x"000e"; + when "01" & x"826" => DATA <= x"0000"; + when "01" & x"827" => DATA <= x"0438"; + when "01" & x"828" => DATA <= x"4f53"; + when "01" & x"829" => DATA <= x"5f52"; + when "01" & x"82a" => DATA <= x"6561"; + when "01" & x"82b" => DATA <= x"644c"; + when "01" & x"82c" => DATA <= x"696e"; + when "01" & x"82d" => DATA <= x"6500"; + when "01" & x"82e" => DATA <= x"0000"; + when "01" & x"82f" => DATA <= x"000f"; + when "01" & x"830" => DATA <= x"003f"; + when "01" & x"831" => DATA <= x"0dfc"; + when "01" & x"832" => DATA <= x"4f53"; + when "01" & x"833" => DATA <= x"5f43"; + when "01" & x"834" => DATA <= x"6f6e"; + when "01" & x"835" => DATA <= x"7472"; + when "01" & x"836" => DATA <= x"6f6c"; + when "01" & x"837" => DATA <= x"0000"; + when "01" & x"838" => DATA <= x"0000"; + when "01" & x"839" => DATA <= x"0010"; + when "01" & x"83a" => DATA <= x"003f"; + when "01" & x"83b" => DATA <= x"0e34"; + when "01" & x"83c" => DATA <= x"4f53"; + when "01" & x"83d" => DATA <= x"5f47"; + when "01" & x"83e" => DATA <= x"6574"; + when "01" & x"83f" => DATA <= x"456e"; + when "01" & x"840" => DATA <= x"7600"; + when "01" & x"841" => DATA <= x"0000"; + when "01" & x"842" => DATA <= x"0000"; + when "01" & x"843" => DATA <= x"0011"; + when "01" & x"844" => DATA <= x"003f"; + when "01" & x"845" => DATA <= x"0e48"; + when "01" & x"846" => DATA <= x"4f53"; + when "01" & x"847" => DATA <= x"5f45"; + when "01" & x"848" => DATA <= x"7869"; + when "01" & x"849" => DATA <= x"7400"; + when "01" & x"84a" => DATA <= x"0000"; + when "01" & x"84b" => DATA <= x"0012"; + when "01" & x"84c" => DATA <= x"003f"; + when "01" & x"84d" => DATA <= x"0e4e"; + when "01" & x"84e" => DATA <= x"4f53"; + when "01" & x"84f" => DATA <= x"5f53"; + when "01" & x"850" => DATA <= x"6574"; + when "01" & x"851" => DATA <= x"456e"; + when "01" & x"852" => DATA <= x"7600"; + when "01" & x"853" => DATA <= x"0000"; + when "01" & x"854" => DATA <= x"0000"; + when "01" & x"855" => DATA <= x"0013"; + when "01" & x"856" => DATA <= x"003f"; + when "01" & x"857" => DATA <= x"0e9e"; + when "01" & x"858" => DATA <= x"4f53"; + when "01" & x"859" => DATA <= x"5f49"; + when "01" & x"85a" => DATA <= x"6e74"; + when "01" & x"85b" => DATA <= x"4f6e"; when "01" & x"85c" => DATA <= x"0000"; - when "01" & x"85d" => DATA <= x"0014"; - when "01" & x"85e" => DATA <= x"003f"; - when "01" & x"85f" => DATA <= x"0ea0"; - when "01" & x"860" => DATA <= x"4f53"; - when "01" & x"861" => DATA <= x"5f49"; - when "01" & x"862" => DATA <= x"6e74"; - when "01" & x"863" => DATA <= x"4f66"; - when "01" & x"864" => DATA <= x"6600"; - when "01" & x"865" => DATA <= x"0000"; - when "01" & x"866" => DATA <= x"0000"; - when "01" & x"867" => DATA <= x"0015"; - when "01" & x"868" => DATA <= x"003f"; - when "01" & x"869" => DATA <= x"0ea6"; - when "01" & x"86a" => DATA <= x"4f53"; - when "01" & x"86b" => DATA <= x"5f43"; - when "01" & x"86c" => DATA <= x"616c"; - when "01" & x"86d" => DATA <= x"6c42"; - when "01" & x"86e" => DATA <= x"6163"; - when "01" & x"86f" => DATA <= x"6b00"; - when "01" & x"870" => DATA <= x"0000"; - when "01" & x"871" => DATA <= x"0016"; - when "01" & x"872" => DATA <= x"003f"; - when "01" & x"873" => DATA <= x"0ec6"; - when "01" & x"874" => DATA <= x"4f53"; - when "01" & x"875" => DATA <= x"5f45"; - when "01" & x"876" => DATA <= x"6e74"; - when "01" & x"877" => DATA <= x"6572"; - when "01" & x"878" => DATA <= x"4f53"; - when "01" & x"879" => DATA <= x"0000"; - when "01" & x"87a" => DATA <= x"0000"; - when "01" & x"87b" => DATA <= x"0018"; - when "01" & x"87c" => DATA <= x"003f"; - when "01" & x"87d" => DATA <= x"0ecc"; - when "01" & x"87e" => DATA <= x"4f53"; - when "01" & x"87f" => DATA <= x"5f42"; - when "01" & x"880" => DATA <= x"7265"; - when "01" & x"881" => DATA <= x"616b"; - when "01" & x"882" => DATA <= x"4374"; - when "01" & x"883" => DATA <= x"726c"; - when "01" & x"884" => DATA <= x"0000"; - when "01" & x"885" => DATA <= x"0000"; + when "01" & x"85d" => DATA <= x"0000"; + when "01" & x"85e" => DATA <= x"0000"; + when "01" & x"85f" => DATA <= x"0014"; + when "01" & x"860" => DATA <= x"003f"; + when "01" & x"861" => DATA <= x"0ea4"; + when "01" & x"862" => DATA <= x"4f53"; + when "01" & x"863" => DATA <= x"5f49"; + when "01" & x"864" => DATA <= x"6e74"; + when "01" & x"865" => DATA <= x"4f66"; + when "01" & x"866" => DATA <= x"6600"; + when "01" & x"867" => DATA <= x"0000"; + when "01" & x"868" => DATA <= x"0000"; + when "01" & x"869" => DATA <= x"0015"; + when "01" & x"86a" => DATA <= x"003f"; + when "01" & x"86b" => DATA <= x"0eaa"; + when "01" & x"86c" => DATA <= x"4f53"; + when "01" & x"86d" => DATA <= x"5f43"; + when "01" & x"86e" => DATA <= x"616c"; + when "01" & x"86f" => DATA <= x"6c42"; + when "01" & x"870" => DATA <= x"6163"; + when "01" & x"871" => DATA <= x"6b00"; + when "01" & x"872" => DATA <= x"0000"; + when "01" & x"873" => DATA <= x"0016"; + when "01" & x"874" => DATA <= x"003f"; + when "01" & x"875" => DATA <= x"0eca"; + when "01" & x"876" => DATA <= x"4f53"; + when "01" & x"877" => DATA <= x"5f45"; + when "01" & x"878" => DATA <= x"6e74"; + when "01" & x"879" => DATA <= x"6572"; + when "01" & x"87a" => DATA <= x"4f53"; + when "01" & x"87b" => DATA <= x"0000"; + when "01" & x"87c" => DATA <= x"0000"; + when "01" & x"87d" => DATA <= x"0018"; + when "01" & x"87e" => DATA <= x"003f"; + when "01" & x"87f" => DATA <= x"0ed0"; + when "01" & x"880" => DATA <= x"4f53"; + when "01" & x"881" => DATA <= x"5f42"; + when "01" & x"882" => DATA <= x"7265"; + when "01" & x"883" => DATA <= x"616b"; + when "01" & x"884" => DATA <= x"4374"; + when "01" & x"885" => DATA <= x"726c"; when "01" & x"886" => DATA <= x"0000"; - when "01" & x"887" => DATA <= x"0019"; - when "01" & x"888" => DATA <= x"003f"; - when "01" & x"889" => DATA <= x"0eec"; - when "01" & x"88a" => DATA <= x"4f53"; - when "01" & x"88b" => DATA <= x"5f55"; - when "01" & x"88c" => DATA <= x"6e75"; - when "01" & x"88d" => DATA <= x"7365"; - when "01" & x"88e" => DATA <= x"6453"; - when "01" & x"88f" => DATA <= x"5749"; - when "01" & x"890" => DATA <= x"0000"; - when "01" & x"891" => DATA <= x"0000"; + when "01" & x"887" => DATA <= x"0000"; + when "01" & x"888" => DATA <= x"0000"; + when "01" & x"889" => DATA <= x"0019"; + when "01" & x"88a" => DATA <= x"003f"; + when "01" & x"88b" => DATA <= x"0ef0"; + when "01" & x"88c" => DATA <= x"4f53"; + when "01" & x"88d" => DATA <= x"5f55"; + when "01" & x"88e" => DATA <= x"6e75"; + when "01" & x"88f" => DATA <= x"7365"; + when "01" & x"890" => DATA <= x"6453"; + when "01" & x"891" => DATA <= x"5749"; when "01" & x"892" => DATA <= x"0000"; - when "01" & x"893" => DATA <= x"001c"; + when "01" & x"893" => DATA <= x"0000"; when "01" & x"894" => DATA <= x"0000"; - when "01" & x"895" => DATA <= x"0468"; - when "01" & x"896" => DATA <= x"4f53"; - when "01" & x"897" => DATA <= x"5f4d"; - when "01" & x"898" => DATA <= x"6f75"; - when "01" & x"899" => DATA <= x"7365"; - when "01" & x"89a" => DATA <= x"0000"; - when "01" & x"89b" => DATA <= x"0000"; + when "01" & x"895" => DATA <= x"001c"; + when "01" & x"896" => DATA <= x"0000"; + when "01" & x"897" => DATA <= x"0468"; + when "01" & x"898" => DATA <= x"4f53"; + when "01" & x"899" => DATA <= x"5f4d"; + when "01" & x"89a" => DATA <= x"6f75"; + when "01" & x"89b" => DATA <= x"7365"; when "01" & x"89c" => DATA <= x"0000"; - when "01" & x"89d" => DATA <= x"0021"; - when "01" & x"89e" => DATA <= x"003f"; - when "01" & x"89f" => DATA <= x"0fcc"; - when "01" & x"8a0" => DATA <= x"4f53"; - when "01" & x"8a1" => DATA <= x"5f52"; - when "01" & x"8a2" => DATA <= x"6561"; - when "01" & x"8a3" => DATA <= x"6455"; - when "01" & x"8a4" => DATA <= x"6e73"; - when "01" & x"8a5" => DATA <= x"6967"; - when "01" & x"8a6" => DATA <= x"6e65"; - when "01" & x"8a7" => DATA <= x"6400"; - when "01" & x"8a8" => DATA <= x"0000"; - when "01" & x"8a9" => DATA <= x"0028"; - when "01" & x"8aa" => DATA <= x"003f"; - when "01" & x"8ab" => DATA <= x"10c6"; - when "01" & x"8ac" => DATA <= x"4f53"; - when "01" & x"8ad" => DATA <= x"5f42"; - when "01" & x"8ae" => DATA <= x"696e"; - when "01" & x"8af" => DATA <= x"6172"; - when "01" & x"8b0" => DATA <= x"7954"; - when "01" & x"8b1" => DATA <= x"6f44"; - when "01" & x"8b2" => DATA <= x"6563"; - when "01" & x"8b3" => DATA <= x"696d"; - when "01" & x"8b4" => DATA <= x"616c"; - when "01" & x"8b5" => DATA <= x"0000"; - when "01" & x"8b6" => DATA <= x"0000"; - when "01" & x"8b7" => DATA <= x"0029"; + when "01" & x"89d" => DATA <= x"0000"; + when "01" & x"89e" => DATA <= x"0000"; + when "01" & x"89f" => DATA <= x"0021"; + when "01" & x"8a0" => DATA <= x"003f"; + when "01" & x"8a1" => DATA <= x"0fd0"; + when "01" & x"8a2" => DATA <= x"4f53"; + when "01" & x"8a3" => DATA <= x"5f52"; + when "01" & x"8a4" => DATA <= x"6561"; + when "01" & x"8a5" => DATA <= x"6455"; + when "01" & x"8a6" => DATA <= x"6e73"; + when "01" & x"8a7" => DATA <= x"6967"; + when "01" & x"8a8" => DATA <= x"6e65"; + when "01" & x"8a9" => DATA <= x"6400"; + when "01" & x"8aa" => DATA <= x"0000"; + when "01" & x"8ab" => DATA <= x"0028"; + when "01" & x"8ac" => DATA <= x"003f"; + when "01" & x"8ad" => DATA <= x"10ca"; + when "01" & x"8ae" => DATA <= x"4f53"; + when "01" & x"8af" => DATA <= x"5f42"; + when "01" & x"8b0" => DATA <= x"696e"; + when "01" & x"8b1" => DATA <= x"6172"; + when "01" & x"8b2" => DATA <= x"7954"; + when "01" & x"8b3" => DATA <= x"6f44"; + when "01" & x"8b4" => DATA <= x"6563"; + when "01" & x"8b5" => DATA <= x"696d"; + when "01" & x"8b6" => DATA <= x"616c"; + when "01" & x"8b7" => DATA <= x"0000"; when "01" & x"8b8" => DATA <= x"0000"; - when "01" & x"8b9" => DATA <= x"043c"; - when "01" & x"8ba" => DATA <= x"4f53"; - when "01" & x"8bb" => DATA <= x"5f46"; - when "01" & x"8bc" => DATA <= x"5343"; - when "01" & x"8bd" => DATA <= x"6f6e"; - when "01" & x"8be" => DATA <= x"7472"; - when "01" & x"8bf" => DATA <= x"6f6c"; - when "01" & x"8c0" => DATA <= x"0000"; - when "01" & x"8c1" => DATA <= x"0000"; + when "01" & x"8b9" => DATA <= x"0029"; + when "01" & x"8ba" => DATA <= x"0000"; + when "01" & x"8bb" => DATA <= x"043c"; + when "01" & x"8bc" => DATA <= x"4f53"; + when "01" & x"8bd" => DATA <= x"5f46"; + when "01" & x"8be" => DATA <= x"5343"; + when "01" & x"8bf" => DATA <= x"6f6e"; + when "01" & x"8c0" => DATA <= x"7472"; + when "01" & x"8c1" => DATA <= x"6f6c"; when "01" & x"8c2" => DATA <= x"0000"; - when "01" & x"8c3" => DATA <= x"002b"; - when "01" & x"8c4" => DATA <= x"003f"; - when "01" & x"8c5" => DATA <= x"1120"; - when "01" & x"8c6" => DATA <= x"4f53"; - when "01" & x"8c7" => DATA <= x"5f47"; - when "01" & x"8c8" => DATA <= x"656e"; - when "01" & x"8c9" => DATA <= x"6572"; - when "01" & x"8ca" => DATA <= x"6174"; - when "01" & x"8cb" => DATA <= x"6545"; - when "01" & x"8cc" => DATA <= x"7272"; - when "01" & x"8cd" => DATA <= x"6f72"; - when "01" & x"8ce" => DATA <= x"0000"; - when "01" & x"8cf" => DATA <= x"0000"; + when "01" & x"8c3" => DATA <= x"0000"; + when "01" & x"8c4" => DATA <= x"0000"; + when "01" & x"8c5" => DATA <= x"002b"; + when "01" & x"8c6" => DATA <= x"003f"; + when "01" & x"8c7" => DATA <= x"1124"; + when "01" & x"8c8" => DATA <= x"4f53"; + when "01" & x"8c9" => DATA <= x"5f47"; + when "01" & x"8ca" => DATA <= x"656e"; + when "01" & x"8cb" => DATA <= x"6572"; + when "01" & x"8cc" => DATA <= x"6174"; + when "01" & x"8cd" => DATA <= x"6545"; + when "01" & x"8ce" => DATA <= x"7272"; + when "01" & x"8cf" => DATA <= x"6f72"; when "01" & x"8d0" => DATA <= x"0000"; - when "01" & x"8d1" => DATA <= x"002c"; - when "01" & x"8d2" => DATA <= x"003f"; - when "01" & x"8d3" => DATA <= x"1126"; - when "01" & x"8d4" => DATA <= x"4f53"; - when "01" & x"8d5" => DATA <= x"5f52"; - when "01" & x"8d6" => DATA <= x"6561"; - when "01" & x"8d7" => DATA <= x"6445"; - when "01" & x"8d8" => DATA <= x"7363"; - when "01" & x"8d9" => DATA <= x"6170"; - when "01" & x"8da" => DATA <= x"6553"; - when "01" & x"8db" => DATA <= x"7461"; - when "01" & x"8dc" => DATA <= x"7465"; - when "01" & x"8dd" => DATA <= x"0000"; - when "01" & x"8de" => DATA <= x"0000"; - when "01" & x"8df" => DATA <= x"002f"; - when "01" & x"8e0" => DATA <= x"003f"; - when "01" & x"8e1" => DATA <= x"113c"; - when "01" & x"8e2" => DATA <= x"4f53"; - when "01" & x"8e3" => DATA <= x"5f52"; - when "01" & x"8e4" => DATA <= x"6561"; - when "01" & x"8e5" => DATA <= x"6450"; - when "01" & x"8e6" => DATA <= x"616c"; - when "01" & x"8e7" => DATA <= x"6574"; - when "01" & x"8e8" => DATA <= x"7465"; - when "01" & x"8e9" => DATA <= x"0000"; - when "01" & x"8ea" => DATA <= x"0000"; - when "01" & x"8eb" => DATA <= x"0032"; - when "01" & x"8ec" => DATA <= x"003f"; - when "01" & x"8ed" => DATA <= x"1152"; - when "01" & x"8ee" => DATA <= x"4f53"; - when "01" & x"8ef" => DATA <= x"5f52"; - when "01" & x"8f0" => DATA <= x"6561"; - when "01" & x"8f1" => DATA <= x"6450"; - when "01" & x"8f2" => DATA <= x"6f69"; - when "01" & x"8f3" => DATA <= x"6e74"; - when "01" & x"8f4" => DATA <= x"0000"; - when "01" & x"8f5" => DATA <= x"0000"; + when "01" & x"8d1" => DATA <= x"0000"; + when "01" & x"8d2" => DATA <= x"0000"; + when "01" & x"8d3" => DATA <= x"002c"; + when "01" & x"8d4" => DATA <= x"003f"; + when "01" & x"8d5" => DATA <= x"112a"; + when "01" & x"8d6" => DATA <= x"4f53"; + when "01" & x"8d7" => DATA <= x"5f52"; + when "01" & x"8d8" => DATA <= x"6561"; + when "01" & x"8d9" => DATA <= x"6445"; + when "01" & x"8da" => DATA <= x"7363"; + when "01" & x"8db" => DATA <= x"6170"; + when "01" & x"8dc" => DATA <= x"6553"; + when "01" & x"8dd" => DATA <= x"7461"; + when "01" & x"8de" => DATA <= x"7465"; + when "01" & x"8df" => DATA <= x"0000"; + when "01" & x"8e0" => DATA <= x"0000"; + when "01" & x"8e1" => DATA <= x"002f"; + when "01" & x"8e2" => DATA <= x"003f"; + when "01" & x"8e3" => DATA <= x"1140"; + when "01" & x"8e4" => DATA <= x"4f53"; + when "01" & x"8e5" => DATA <= x"5f52"; + when "01" & x"8e6" => DATA <= x"6561"; + when "01" & x"8e7" => DATA <= x"6450"; + when "01" & x"8e8" => DATA <= x"616c"; + when "01" & x"8e9" => DATA <= x"6574"; + when "01" & x"8ea" => DATA <= x"7465"; + when "01" & x"8eb" => DATA <= x"0000"; + when "01" & x"8ec" => DATA <= x"0000"; + when "01" & x"8ed" => DATA <= x"0032"; + when "01" & x"8ee" => DATA <= x"003f"; + when "01" & x"8ef" => DATA <= x"1156"; + when "01" & x"8f0" => DATA <= x"4f53"; + when "01" & x"8f1" => DATA <= x"5f52"; + when "01" & x"8f2" => DATA <= x"6561"; + when "01" & x"8f3" => DATA <= x"6450"; + when "01" & x"8f4" => DATA <= x"6f69"; + when "01" & x"8f5" => DATA <= x"6e74"; when "01" & x"8f6" => DATA <= x"0000"; - when "01" & x"8f7" => DATA <= x"0034"; - when "01" & x"8f8" => DATA <= x"003f"; - when "01" & x"8f9" => DATA <= x"11a8"; - when "01" & x"8fa" => DATA <= x"4f53"; - when "01" & x"8fb" => DATA <= x"5f43"; - when "01" & x"8fc" => DATA <= x"616c"; - when "01" & x"8fd" => DATA <= x"6c41"; - when "01" & x"8fe" => DATA <= x"5665"; - when "01" & x"8ff" => DATA <= x"6374"; - when "01" & x"900" => DATA <= x"6f72"; - when "01" & x"901" => DATA <= x"0000"; - when "01" & x"902" => DATA <= x"0000"; - when "01" & x"903" => DATA <= x"0036"; - when "01" & x"904" => DATA <= x"003f"; - when "01" & x"905" => DATA <= x"11d4"; - when "01" & x"906" => DATA <= x"4f53"; - when "01" & x"907" => DATA <= x"5f52"; - when "01" & x"908" => DATA <= x"656d"; - when "01" & x"909" => DATA <= x"6f76"; - when "01" & x"90a" => DATA <= x"6543"; - when "01" & x"90b" => DATA <= x"7572"; - when "01" & x"90c" => DATA <= x"736f"; - when "01" & x"90d" => DATA <= x"7273"; - when "01" & x"90e" => DATA <= x"0000"; - when "01" & x"90f" => DATA <= x"0000"; + when "01" & x"8f7" => DATA <= x"0000"; + when "01" & x"8f8" => DATA <= x"0000"; + when "01" & x"8f9" => DATA <= x"0034"; + when "01" & x"8fa" => DATA <= x"003f"; + when "01" & x"8fb" => DATA <= x"11ac"; + when "01" & x"8fc" => DATA <= x"4f53"; + when "01" & x"8fd" => DATA <= x"5f43"; + when "01" & x"8fe" => DATA <= x"616c"; + when "01" & x"8ff" => DATA <= x"6c41"; + when "01" & x"900" => DATA <= x"5665"; + when "01" & x"901" => DATA <= x"6374"; + when "01" & x"902" => DATA <= x"6f72"; + when "01" & x"903" => DATA <= x"0000"; + when "01" & x"904" => DATA <= x"0000"; + when "01" & x"905" => DATA <= x"0036"; + when "01" & x"906" => DATA <= x"003f"; + when "01" & x"907" => DATA <= x"11d8"; + when "01" & x"908" => DATA <= x"4f53"; + when "01" & x"909" => DATA <= x"5f52"; + when "01" & x"90a" => DATA <= x"656d"; + when "01" & x"90b" => DATA <= x"6f76"; + when "01" & x"90c" => DATA <= x"6543"; + when "01" & x"90d" => DATA <= x"7572"; + when "01" & x"90e" => DATA <= x"736f"; + when "01" & x"90f" => DATA <= x"7273"; when "01" & x"910" => DATA <= x"0000"; - when "01" & x"911" => DATA <= x"0037"; - when "01" & x"912" => DATA <= x"003f"; - when "01" & x"913" => DATA <= x"11ee"; - when "01" & x"914" => DATA <= x"4f53"; - when "01" & x"915" => DATA <= x"5f52"; - when "01" & x"916" => DATA <= x"6573"; - when "01" & x"917" => DATA <= x"746f"; - when "01" & x"918" => DATA <= x"7265"; - when "01" & x"919" => DATA <= x"4375"; - when "01" & x"91a" => DATA <= x"7273"; - when "01" & x"91b" => DATA <= x"6f72"; - when "01" & x"91c" => DATA <= x"7300"; - when "01" & x"91d" => DATA <= x"0000"; - when "01" & x"91e" => DATA <= x"0000"; - when "01" & x"91f" => DATA <= x"0038"; - when "01" & x"920" => DATA <= x"003f"; - when "01" & x"921" => DATA <= x"1208"; - when "01" & x"922" => DATA <= x"4f53"; - when "01" & x"923" => DATA <= x"5f53"; - when "01" & x"924" => DATA <= x"5749"; - when "01" & x"925" => DATA <= x"4e75"; - when "01" & x"926" => DATA <= x"6d62"; - when "01" & x"927" => DATA <= x"6572"; - when "01" & x"928" => DATA <= x"546f"; - when "01" & x"929" => DATA <= x"5374"; - when "01" & x"92a" => DATA <= x"7269"; - when "01" & x"92b" => DATA <= x"6e67"; - when "01" & x"92c" => DATA <= x"0000"; - when "01" & x"92d" => DATA <= x"0000"; + when "01" & x"911" => DATA <= x"0000"; + when "01" & x"912" => DATA <= x"0000"; + when "01" & x"913" => DATA <= x"0037"; + when "01" & x"914" => DATA <= x"003f"; + when "01" & x"915" => DATA <= x"11f2"; + when "01" & x"916" => DATA <= x"4f53"; + when "01" & x"917" => DATA <= x"5f52"; + when "01" & x"918" => DATA <= x"6573"; + when "01" & x"919" => DATA <= x"746f"; + when "01" & x"91a" => DATA <= x"7265"; + when "01" & x"91b" => DATA <= x"4375"; + when "01" & x"91c" => DATA <= x"7273"; + when "01" & x"91d" => DATA <= x"6f72"; + when "01" & x"91e" => DATA <= x"7300"; + when "01" & x"91f" => DATA <= x"0000"; + when "01" & x"920" => DATA <= x"0000"; + when "01" & x"921" => DATA <= x"0038"; + when "01" & x"922" => DATA <= x"003f"; + when "01" & x"923" => DATA <= x"120c"; + when "01" & x"924" => DATA <= x"4f53"; + when "01" & x"925" => DATA <= x"5f53"; + when "01" & x"926" => DATA <= x"5749"; + when "01" & x"927" => DATA <= x"4e75"; + when "01" & x"928" => DATA <= x"6d62"; + when "01" & x"929" => DATA <= x"6572"; + when "01" & x"92a" => DATA <= x"546f"; + when "01" & x"92b" => DATA <= x"5374"; + when "01" & x"92c" => DATA <= x"7269"; + when "01" & x"92d" => DATA <= x"6e67"; when "01" & x"92e" => DATA <= x"0000"; - when "01" & x"92f" => DATA <= x"0039"; - when "01" & x"930" => DATA <= x"003f"; - when "01" & x"931" => DATA <= x"1288"; - when "01" & x"932" => DATA <= x"4f53"; - when "01" & x"933" => DATA <= x"5f53"; - when "01" & x"934" => DATA <= x"5749"; - when "01" & x"935" => DATA <= x"4e75"; - when "01" & x"936" => DATA <= x"6d62"; - when "01" & x"937" => DATA <= x"6572"; - when "01" & x"938" => DATA <= x"4672"; - when "01" & x"939" => DATA <= x"6f6d"; - when "01" & x"93a" => DATA <= x"5374"; - when "01" & x"93b" => DATA <= x"7269"; - when "01" & x"93c" => DATA <= x"6e67"; - when "01" & x"93d" => DATA <= x"0000"; - when "01" & x"93e" => DATA <= x"0000"; - when "01" & x"93f" => DATA <= x"003a"; - when "01" & x"940" => DATA <= x"003f"; - when "01" & x"941" => DATA <= x"12cc"; - when "01" & x"942" => DATA <= x"4f53"; - when "01" & x"943" => DATA <= x"5f56"; - when "01" & x"944" => DATA <= x"616c"; - when "01" & x"945" => DATA <= x"6964"; - when "01" & x"946" => DATA <= x"6174"; - when "01" & x"947" => DATA <= x"6541"; - when "01" & x"948" => DATA <= x"6464"; - when "01" & x"949" => DATA <= x"7265"; - when "01" & x"94a" => DATA <= x"7373"; - when "01" & x"94b" => DATA <= x"0000"; - when "01" & x"94c" => DATA <= x"0000"; - when "01" & x"94d" => DATA <= x"003f"; - when "01" & x"94e" => DATA <= x"003f"; - when "01" & x"94f" => DATA <= x"12e6"; - when "01" & x"950" => DATA <= x"4f53"; - when "01" & x"951" => DATA <= x"5f43"; - when "01" & x"952" => DATA <= x"6865"; - when "01" & x"953" => DATA <= x"636b"; - when "01" & x"954" => DATA <= x"4d6f"; - when "01" & x"955" => DATA <= x"6465"; - when "01" & x"956" => DATA <= x"5661"; - when "01" & x"957" => DATA <= x"6c69"; - when "01" & x"958" => DATA <= x"6400"; - when "01" & x"959" => DATA <= x"0000"; - when "01" & x"95a" => DATA <= x"0000"; - when "01" & x"95b" => DATA <= x"0040"; - when "01" & x"95c" => DATA <= x"003f"; - when "01" & x"95d" => DATA <= x"1300"; - when "01" & x"95e" => DATA <= x"4f53"; - when "01" & x"95f" => DATA <= x"5f43"; - when "01" & x"960" => DATA <= x"6861"; - when "01" & x"961" => DATA <= x"6e67"; - when "01" & x"962" => DATA <= x"6545"; - when "01" & x"963" => DATA <= x"6e76"; - when "01" & x"964" => DATA <= x"6972"; - when "01" & x"965" => DATA <= x"6f6e"; - when "01" & x"966" => DATA <= x"6d65"; - when "01" & x"967" => DATA <= x"6e74"; - when "01" & x"968" => DATA <= x"0000"; - when "01" & x"969" => DATA <= x"0000"; + when "01" & x"92f" => DATA <= x"0000"; + when "01" & x"930" => DATA <= x"0000"; + when "01" & x"931" => DATA <= x"0039"; + when "01" & x"932" => DATA <= x"003f"; + when "01" & x"933" => DATA <= x"128c"; + when "01" & x"934" => DATA <= x"4f53"; + when "01" & x"935" => DATA <= x"5f53"; + when "01" & x"936" => DATA <= x"5749"; + when "01" & x"937" => DATA <= x"4e75"; + when "01" & x"938" => DATA <= x"6d62"; + when "01" & x"939" => DATA <= x"6572"; + when "01" & x"93a" => DATA <= x"4672"; + when "01" & x"93b" => DATA <= x"6f6d"; + when "01" & x"93c" => DATA <= x"5374"; + when "01" & x"93d" => DATA <= x"7269"; + when "01" & x"93e" => DATA <= x"6e67"; + when "01" & x"93f" => DATA <= x"0000"; + when "01" & x"940" => DATA <= x"0000"; + when "01" & x"941" => DATA <= x"003a"; + when "01" & x"942" => DATA <= x"003f"; + when "01" & x"943" => DATA <= x"12d0"; + when "01" & x"944" => DATA <= x"4f53"; + when "01" & x"945" => DATA <= x"5f56"; + when "01" & x"946" => DATA <= x"616c"; + when "01" & x"947" => DATA <= x"6964"; + when "01" & x"948" => DATA <= x"6174"; + when "01" & x"949" => DATA <= x"6541"; + when "01" & x"94a" => DATA <= x"6464"; + when "01" & x"94b" => DATA <= x"7265"; + when "01" & x"94c" => DATA <= x"7373"; + when "01" & x"94d" => DATA <= x"0000"; + when "01" & x"94e" => DATA <= x"0000"; + when "01" & x"94f" => DATA <= x"003f"; + when "01" & x"950" => DATA <= x"003f"; + when "01" & x"951" => DATA <= x"12ea"; + when "01" & x"952" => DATA <= x"4f53"; + when "01" & x"953" => DATA <= x"5f43"; + when "01" & x"954" => DATA <= x"6865"; + when "01" & x"955" => DATA <= x"636b"; + when "01" & x"956" => DATA <= x"4d6f"; + when "01" & x"957" => DATA <= x"6465"; + when "01" & x"958" => DATA <= x"5661"; + when "01" & x"959" => DATA <= x"6c69"; + when "01" & x"95a" => DATA <= x"6400"; + when "01" & x"95b" => DATA <= x"0000"; + when "01" & x"95c" => DATA <= x"0000"; + when "01" & x"95d" => DATA <= x"0040"; + when "01" & x"95e" => DATA <= x"003f"; + when "01" & x"95f" => DATA <= x"1304"; + when "01" & x"960" => DATA <= x"4f53"; + when "01" & x"961" => DATA <= x"5f43"; + when "01" & x"962" => DATA <= x"6861"; + when "01" & x"963" => DATA <= x"6e67"; + when "01" & x"964" => DATA <= x"6545"; + when "01" & x"965" => DATA <= x"6e76"; + when "01" & x"966" => DATA <= x"6972"; + when "01" & x"967" => DATA <= x"6f6e"; + when "01" & x"968" => DATA <= x"6d65"; + when "01" & x"969" => DATA <= x"6e74"; when "01" & x"96a" => DATA <= x"0000"; - when "01" & x"96b" => DATA <= x"0042"; - when "01" & x"96c" => DATA <= x"003f"; - when "01" & x"96d" => DATA <= x"1306"; - when "01" & x"96e" => DATA <= x"4f53"; - when "01" & x"96f" => DATA <= x"5f52"; - when "01" & x"970" => DATA <= x"6561"; - when "01" & x"971" => DATA <= x"644d"; - when "01" & x"972" => DATA <= x"6f6e"; - when "01" & x"973" => DATA <= x"6f74"; + when "01" & x"96b" => DATA <= x"0000"; + when "01" & x"96c" => DATA <= x"0000"; + when "01" & x"96d" => DATA <= x"0042"; + when "01" & x"96e" => DATA <= x"003f"; + when "01" & x"96f" => DATA <= x"130a"; + when "01" & x"970" => DATA <= x"4f53"; + when "01" & x"971" => DATA <= x"5f52"; + when "01" & x"972" => DATA <= x"6561"; + when "01" & x"973" => DATA <= x"644d"; when "01" & x"974" => DATA <= x"6f6e"; - when "01" & x"975" => DATA <= x"6963"; - when "01" & x"976" => DATA <= x"5469"; - when "01" & x"977" => DATA <= x"6d65"; - when "01" & x"978" => DATA <= x"0000"; - when "01" & x"979" => DATA <= x"0000"; + when "01" & x"975" => DATA <= x"6f74"; + when "01" & x"976" => DATA <= x"6f6e"; + when "01" & x"977" => DATA <= x"6963"; + when "01" & x"978" => DATA <= x"5469"; + when "01" & x"979" => DATA <= x"6d65"; when "01" & x"97a" => DATA <= x"0000"; - when "01" & x"97b" => DATA <= x"0045"; - when "01" & x"97c" => DATA <= x"003f"; - when "01" & x"97d" => DATA <= x"1320"; - when "01" & x"97e" => DATA <= x"4f53"; - when "01" & x"97f" => DATA <= x"5f50"; - when "01" & x"980" => DATA <= x"6c6f"; - when "01" & x"981" => DATA <= x"7400"; - when "01" & x"982" => DATA <= x"0000"; - when "01" & x"983" => DATA <= x"0046"; - when "01" & x"984" => DATA <= x"003f"; - when "01" & x"985" => DATA <= x"136e"; - when "01" & x"986" => DATA <= x"4f53"; - when "01" & x"987" => DATA <= x"5f57"; - when "01" & x"988" => DATA <= x"7269"; - when "01" & x"989" => DATA <= x"7465"; - when "01" & x"98a" => DATA <= x"4e00"; - when "01" & x"98b" => DATA <= x"0000"; - when "01" & x"98c" => DATA <= x"0000"; - when "01" & x"98d" => DATA <= x"0048"; - when "01" & x"98e" => DATA <= x"003f"; - when "01" & x"98f" => DATA <= x"1394"; - when "01" & x"990" => DATA <= x"4f53"; - when "01" & x"991" => DATA <= x"5f57"; - when "01" & x"992" => DATA <= x"7269"; - when "01" & x"993" => DATA <= x"7465"; - when "01" & x"994" => DATA <= x"456e"; - when "01" & x"995" => DATA <= x"7600"; - when "01" & x"996" => DATA <= x"0000"; - when "01" & x"997" => DATA <= x"0050"; - when "01" & x"998" => DATA <= x"003f"; - when "01" & x"999" => DATA <= x"13ca"; - when "01" & x"99a" => DATA <= x"4f53"; - when "01" & x"99b" => DATA <= x"5f45"; - when "01" & x"99c" => DATA <= x"7869"; - when "01" & x"99d" => DATA <= x"7441"; - when "01" & x"99e" => DATA <= x"6e64"; - when "01" & x"99f" => DATA <= x"4469"; - when "01" & x"9a0" => DATA <= x"6500"; - when "01" & x"9a1" => DATA <= x"0000"; - when "01" & x"9a2" => DATA <= x"0000"; - when "01" & x"9a3" => DATA <= x"0055"; - when "01" & x"9a4" => DATA <= x"003f"; - when "01" & x"9a5" => DATA <= x"13e2"; - when "01" & x"9a6" => DATA <= x"4f53"; - when "01" & x"9a7" => DATA <= x"5f52"; - when "01" & x"9a8" => DATA <= x"6561"; - when "01" & x"9a9" => DATA <= x"6444"; - when "01" & x"9aa" => DATA <= x"6566"; - when "01" & x"9ab" => DATA <= x"6175"; - when "01" & x"9ac" => DATA <= x"6c74"; - when "01" & x"9ad" => DATA <= x"4861"; - when "01" & x"9ae" => DATA <= x"6e64"; - when "01" & x"9af" => DATA <= x"6c65"; - when "01" & x"9b0" => DATA <= x"7200"; - when "01" & x"9b1" => DATA <= x"0000"; - when "01" & x"9b2" => DATA <= x"0000"; - when "01" & x"9b3" => DATA <= x"0056"; - when "01" & x"9b4" => DATA <= x"003f"; - when "01" & x"9b5" => DATA <= x"142a"; - when "01" & x"9b6" => DATA <= x"4f53"; - when "01" & x"9b7" => DATA <= x"5f53"; - when "01" & x"9b8" => DATA <= x"6574"; - when "01" & x"9b9" => DATA <= x"4543"; - when "01" & x"9ba" => DATA <= x"464f"; - when "01" & x"9bb" => DATA <= x"7269"; - when "01" & x"9bc" => DATA <= x"6769"; - when "01" & x"9bd" => DATA <= x"6e00"; - when "01" & x"9be" => DATA <= x"0000"; - when "01" & x"9bf" => DATA <= x"005d"; - when "01" & x"9c0" => DATA <= x"003f"; - when "01" & x"9c1" => DATA <= x"14da"; - when "01" & x"9c2" => DATA <= x"4f53"; - when "01" & x"9c3" => DATA <= x"5f50"; - when "01" & x"9c4" => DATA <= x"7269"; - when "01" & x"9c5" => DATA <= x"6e74"; - when "01" & x"9c6" => DATA <= x"4368"; - when "01" & x"9c7" => DATA <= x"6172"; - when "01" & x"9c8" => DATA <= x"0000"; - when "01" & x"9c9" => DATA <= x"0000"; + when "01" & x"97b" => DATA <= x"0000"; + when "01" & x"97c" => DATA <= x"0000"; + when "01" & x"97d" => DATA <= x"0045"; + when "01" & x"97e" => DATA <= x"003f"; + when "01" & x"97f" => DATA <= x"1324"; + when "01" & x"980" => DATA <= x"4f53"; + when "01" & x"981" => DATA <= x"5f50"; + when "01" & x"982" => DATA <= x"6c6f"; + when "01" & x"983" => DATA <= x"7400"; + when "01" & x"984" => DATA <= x"0000"; + when "01" & x"985" => DATA <= x"0046"; + when "01" & x"986" => DATA <= x"003f"; + when "01" & x"987" => DATA <= x"1372"; + when "01" & x"988" => DATA <= x"4f53"; + when "01" & x"989" => DATA <= x"5f57"; + when "01" & x"98a" => DATA <= x"7269"; + when "01" & x"98b" => DATA <= x"7465"; + when "01" & x"98c" => DATA <= x"4e00"; + when "01" & x"98d" => DATA <= x"0000"; + when "01" & x"98e" => DATA <= x"0000"; + when "01" & x"98f" => DATA <= x"0048"; + when "01" & x"990" => DATA <= x"003f"; + when "01" & x"991" => DATA <= x"1398"; + when "01" & x"992" => DATA <= x"4f53"; + when "01" & x"993" => DATA <= x"5f57"; + when "01" & x"994" => DATA <= x"7269"; + when "01" & x"995" => DATA <= x"7465"; + when "01" & x"996" => DATA <= x"456e"; + when "01" & x"997" => DATA <= x"7600"; + when "01" & x"998" => DATA <= x"0000"; + when "01" & x"999" => DATA <= x"0050"; + when "01" & x"99a" => DATA <= x"003f"; + when "01" & x"99b" => DATA <= x"13ce"; + when "01" & x"99c" => DATA <= x"4f53"; + when "01" & x"99d" => DATA <= x"5f45"; + when "01" & x"99e" => DATA <= x"7869"; + when "01" & x"99f" => DATA <= x"7441"; + when "01" & x"9a0" => DATA <= x"6e64"; + when "01" & x"9a1" => DATA <= x"4469"; + when "01" & x"9a2" => DATA <= x"6500"; + when "01" & x"9a3" => DATA <= x"0000"; + when "01" & x"9a4" => DATA <= x"0000"; + when "01" & x"9a5" => DATA <= x"0055"; + when "01" & x"9a6" => DATA <= x"003f"; + when "01" & x"9a7" => DATA <= x"13e6"; + when "01" & x"9a8" => DATA <= x"4f53"; + when "01" & x"9a9" => DATA <= x"5f52"; + when "01" & x"9aa" => DATA <= x"6561"; + when "01" & x"9ab" => DATA <= x"6444"; + when "01" & x"9ac" => DATA <= x"6566"; + when "01" & x"9ad" => DATA <= x"6175"; + when "01" & x"9ae" => DATA <= x"6c74"; + when "01" & x"9af" => DATA <= x"4861"; + when "01" & x"9b0" => DATA <= x"6e64"; + when "01" & x"9b1" => DATA <= x"6c65"; + when "01" & x"9b2" => DATA <= x"7200"; + when "01" & x"9b3" => DATA <= x"0000"; + when "01" & x"9b4" => DATA <= x"0000"; + when "01" & x"9b5" => DATA <= x"0056"; + when "01" & x"9b6" => DATA <= x"003f"; + when "01" & x"9b7" => DATA <= x"142e"; + when "01" & x"9b8" => DATA <= x"4f53"; + when "01" & x"9b9" => DATA <= x"5f53"; + when "01" & x"9ba" => DATA <= x"6574"; + when "01" & x"9bb" => DATA <= x"4543"; + when "01" & x"9bc" => DATA <= x"464f"; + when "01" & x"9bd" => DATA <= x"7269"; + when "01" & x"9be" => DATA <= x"6769"; + when "01" & x"9bf" => DATA <= x"6e00"; + when "01" & x"9c0" => DATA <= x"0000"; + when "01" & x"9c1" => DATA <= x"005d"; + when "01" & x"9c2" => DATA <= x"003f"; + when "01" & x"9c3" => DATA <= x"14de"; + when "01" & x"9c4" => DATA <= x"4f53"; + when "01" & x"9c5" => DATA <= x"5f50"; + when "01" & x"9c6" => DATA <= x"7269"; + when "01" & x"9c7" => DATA <= x"6e74"; + when "01" & x"9c8" => DATA <= x"4368"; + when "01" & x"9c9" => DATA <= x"6172"; when "01" & x"9ca" => DATA <= x"0000"; - when "01" & x"9cb" => DATA <= x"005b"; - when "01" & x"9cc" => DATA <= x"003f"; - when "01" & x"9cd" => DATA <= x"14a8"; - when "01" & x"9ce" => DATA <= x"4f53"; - when "01" & x"9cf" => DATA <= x"5f43"; - when "01" & x"9d0" => DATA <= x"5243"; - when "01" & x"9d1" => DATA <= x"0000"; - when "01" & x"9d2" => DATA <= x"0000"; - when "01" & x"9d3" => DATA <= x"0059"; - when "01" & x"9d4" => DATA <= x"003f"; - when "01" & x"9d5" => DATA <= x"149a"; - when "01" & x"9d6" => DATA <= x"4f53"; - when "01" & x"9d7" => DATA <= x"5f43"; - when "01" & x"9d8" => DATA <= x"6f6e"; - when "01" & x"9d9" => DATA <= x"6669"; - when "01" & x"9da" => DATA <= x"726d"; - when "01" & x"9db" => DATA <= x"0000"; - when "01" & x"9dc" => DATA <= x"0000"; - when "01" & x"9dd" => DATA <= x"007c"; - when "01" & x"9de" => DATA <= x"003f"; - when "01" & x"9df" => DATA <= x"14e6"; - when "01" & x"9e0" => DATA <= x"4f53"; - when "01" & x"9e1" => DATA <= x"5f4c"; - when "01" & x"9e2" => DATA <= x"6561"; - when "01" & x"9e3" => DATA <= x"7665"; - when "01" & x"9e4" => DATA <= x"4f53"; - when "01" & x"9e5" => DATA <= x"0000"; - when "01" & x"9e6" => DATA <= x"0000"; - when "01" & x"9e7" => DATA <= x"007d"; - when "01" & x"9e8" => DATA <= x"003f"; - when "01" & x"9e9" => DATA <= x"14ec"; - when "01" & x"9ea" => DATA <= x"4f53"; - when "01" & x"9eb" => DATA <= x"5f52"; - when "01" & x"9ec" => DATA <= x"6561"; - when "01" & x"9ed" => DATA <= x"644c"; - when "01" & x"9ee" => DATA <= x"696e"; - when "01" & x"9ef" => DATA <= x"6533"; - when "01" & x"9f0" => DATA <= x"3200"; - when "01" & x"9f1" => DATA <= x"0000"; - when "01" & x"9f2" => DATA <= x"0000"; - when "01" & x"9f3" => DATA <= x"00d0"; - when "01" & x"9f4" => DATA <= x"003f"; - when "01" & x"9f5" => DATA <= x"1674"; - when "01" & x"9f6" => DATA <= x"4f53"; - when "01" & x"9f7" => DATA <= x"5f43"; - when "01" & x"9f8" => DATA <= x"6f6e"; - when "01" & x"9f9" => DATA <= x"7665"; - when "01" & x"9fa" => DATA <= x"7274"; - when "01" & x"9fb" => DATA <= x"4865"; - when "01" & x"9fc" => DATA <= x"7831"; - when "01" & x"9fd" => DATA <= x"0000"; - when "01" & x"9fe" => DATA <= x"0000"; - when "01" & x"9ff" => DATA <= x"00d1"; - when "01" & x"a00" => DATA <= x"003f"; - when "01" & x"a01" => DATA <= x"1690"; - when "01" & x"a02" => DATA <= x"4f53"; - when "01" & x"a03" => DATA <= x"5f43"; - when "01" & x"a04" => DATA <= x"6f6e"; - when "01" & x"a05" => DATA <= x"7665"; - when "01" & x"a06" => DATA <= x"7274"; - when "01" & x"a07" => DATA <= x"4865"; - when "01" & x"a08" => DATA <= x"7832"; - when "01" & x"a09" => DATA <= x"0000"; - when "01" & x"a0a" => DATA <= x"0000"; - when "01" & x"a0b" => DATA <= x"00d2"; - when "01" & x"a0c" => DATA <= x"003f"; - when "01" & x"a0d" => DATA <= x"16ac"; - when "01" & x"a0e" => DATA <= x"4f53"; - when "01" & x"a0f" => DATA <= x"5f43"; - when "01" & x"a10" => DATA <= x"6f6e"; - when "01" & x"a11" => DATA <= x"7665"; - when "01" & x"a12" => DATA <= x"7274"; - when "01" & x"a13" => DATA <= x"4865"; - when "01" & x"a14" => DATA <= x"7834"; - when "01" & x"a15" => DATA <= x"0000"; - when "01" & x"a16" => DATA <= x"0000"; - when "01" & x"a17" => DATA <= x"00d3"; - when "01" & x"a18" => DATA <= x"003f"; - when "01" & x"a19" => DATA <= x"16ca"; - when "01" & x"a1a" => DATA <= x"4f53"; - when "01" & x"a1b" => DATA <= x"5f43"; - when "01" & x"a1c" => DATA <= x"6f6e"; - when "01" & x"a1d" => DATA <= x"7665"; - when "01" & x"a1e" => DATA <= x"7274"; - when "01" & x"a1f" => DATA <= x"4865"; - when "01" & x"a20" => DATA <= x"7836"; - when "01" & x"a21" => DATA <= x"0000"; - when "01" & x"a22" => DATA <= x"0000"; - when "01" & x"a23" => DATA <= x"00d4"; - when "01" & x"a24" => DATA <= x"003f"; - when "01" & x"a25" => DATA <= x"16e6"; - when "01" & x"a26" => DATA <= x"4f53"; - when "01" & x"a27" => DATA <= x"5f43"; - when "01" & x"a28" => DATA <= x"6f6e"; - when "01" & x"a29" => DATA <= x"7665"; - when "01" & x"a2a" => DATA <= x"7274"; - when "01" & x"a2b" => DATA <= x"4865"; - when "01" & x"a2c" => DATA <= x"7838"; - when "01" & x"a2d" => DATA <= x"0000"; - when "01" & x"a2e" => DATA <= x"0000"; - when "01" & x"a2f" => DATA <= x"00d5"; - when "01" & x"a30" => DATA <= x"003f"; - when "01" & x"a31" => DATA <= x"1740"; - when "01" & x"a32" => DATA <= x"4f53"; - when "01" & x"a33" => DATA <= x"5f43"; - when "01" & x"a34" => DATA <= x"6f6e"; - when "01" & x"a35" => DATA <= x"7665"; - when "01" & x"a36" => DATA <= x"7274"; - when "01" & x"a37" => DATA <= x"4361"; - when "01" & x"a38" => DATA <= x"7264"; - when "01" & x"a39" => DATA <= x"696e"; - when "01" & x"a3a" => DATA <= x"616c"; - when "01" & x"a3b" => DATA <= x"3100"; - when "01" & x"a3c" => DATA <= x"0000"; - when "01" & x"a3d" => DATA <= x"00d6"; - when "01" & x"a3e" => DATA <= x"003f"; - when "01" & x"a3f" => DATA <= x"175a"; - when "01" & x"a40" => DATA <= x"4f53"; - when "01" & x"a41" => DATA <= x"5f43"; - when "01" & x"a42" => DATA <= x"6f6e"; - when "01" & x"a43" => DATA <= x"7665"; - when "01" & x"a44" => DATA <= x"7274"; - when "01" & x"a45" => DATA <= x"4361"; - when "01" & x"a46" => DATA <= x"7264"; - when "01" & x"a47" => DATA <= x"696e"; - when "01" & x"a48" => DATA <= x"616c"; - when "01" & x"a49" => DATA <= x"3200"; - when "01" & x"a4a" => DATA <= x"0000"; - when "01" & x"a4b" => DATA <= x"00d7"; - when "01" & x"a4c" => DATA <= x"003f"; - when "01" & x"a4d" => DATA <= x"1774"; - when "01" & x"a4e" => DATA <= x"4f53"; - when "01" & x"a4f" => DATA <= x"5f43"; - when "01" & x"a50" => DATA <= x"6f6e"; - when "01" & x"a51" => DATA <= x"7665"; - when "01" & x"a52" => DATA <= x"7274"; - when "01" & x"a53" => DATA <= x"4361"; - when "01" & x"a54" => DATA <= x"7264"; - when "01" & x"a55" => DATA <= x"696e"; - when "01" & x"a56" => DATA <= x"616c"; - when "01" & x"a57" => DATA <= x"3300"; - when "01" & x"a58" => DATA <= x"0000"; - when "01" & x"a59" => DATA <= x"00d8"; - when "01" & x"a5a" => DATA <= x"003f"; - when "01" & x"a5b" => DATA <= x"178e"; - when "01" & x"a5c" => DATA <= x"4f53"; - when "01" & x"a5d" => DATA <= x"5f43"; - when "01" & x"a5e" => DATA <= x"6f6e"; - when "01" & x"a5f" => DATA <= x"7665"; - when "01" & x"a60" => DATA <= x"7274"; - when "01" & x"a61" => DATA <= x"4361"; - when "01" & x"a62" => DATA <= x"7264"; - when "01" & x"a63" => DATA <= x"696e"; - when "01" & x"a64" => DATA <= x"616c"; - when "01" & x"a65" => DATA <= x"3400"; - when "01" & x"a66" => DATA <= x"0000"; - when "01" & x"a67" => DATA <= x"00d9"; - when "01" & x"a68" => DATA <= x"003f"; - when "01" & x"a69" => DATA <= x"1810"; - when "01" & x"a6a" => DATA <= x"4f53"; - when "01" & x"a6b" => DATA <= x"5f43"; - when "01" & x"a6c" => DATA <= x"6f6e"; - when "01" & x"a6d" => DATA <= x"7665"; - when "01" & x"a6e" => DATA <= x"7274"; - when "01" & x"a6f" => DATA <= x"496e"; - when "01" & x"a70" => DATA <= x"7465"; - when "01" & x"a71" => DATA <= x"6765"; - when "01" & x"a72" => DATA <= x"7231"; - when "01" & x"a73" => DATA <= x"0000"; - when "01" & x"a74" => DATA <= x"0000"; - when "01" & x"a75" => DATA <= x"00da"; - when "01" & x"a76" => DATA <= x"003f"; - when "01" & x"a77" => DATA <= x"1838"; - when "01" & x"a78" => DATA <= x"4f53"; - when "01" & x"a79" => DATA <= x"5f43"; - when "01" & x"a7a" => DATA <= x"6f6e"; - when "01" & x"a7b" => DATA <= x"7665"; - when "01" & x"a7c" => DATA <= x"7274"; - when "01" & x"a7d" => DATA <= x"496e"; - when "01" & x"a7e" => DATA <= x"7465"; - when "01" & x"a7f" => DATA <= x"6765"; - when "01" & x"a80" => DATA <= x"7232"; - when "01" & x"a81" => DATA <= x"0000"; - when "01" & x"a82" => DATA <= x"0000"; - when "01" & x"a83" => DATA <= x"00db"; - when "01" & x"a84" => DATA <= x"003f"; - when "01" & x"a85" => DATA <= x"1860"; - when "01" & x"a86" => DATA <= x"4f53"; - when "01" & x"a87" => DATA <= x"5f43"; - when "01" & x"a88" => DATA <= x"6f6e"; - when "01" & x"a89" => DATA <= x"7665"; - when "01" & x"a8a" => DATA <= x"7274"; - when "01" & x"a8b" => DATA <= x"496e"; - when "01" & x"a8c" => DATA <= x"7465"; - when "01" & x"a8d" => DATA <= x"6765"; - when "01" & x"a8e" => DATA <= x"7233"; - when "01" & x"a8f" => DATA <= x"0000"; - when "01" & x"a90" => DATA <= x"0000"; - when "01" & x"a91" => DATA <= x"00dc"; - when "01" & x"a92" => DATA <= x"003f"; - when "01" & x"a93" => DATA <= x"1888"; - when "01" & x"a94" => DATA <= x"4f53"; - when "01" & x"a95" => DATA <= x"5f43"; - when "01" & x"a96" => DATA <= x"6f6e"; - when "01" & x"a97" => DATA <= x"7665"; - when "01" & x"a98" => DATA <= x"7274"; - when "01" & x"a99" => DATA <= x"496e"; - when "01" & x"a9a" => DATA <= x"7465"; - when "01" & x"a9b" => DATA <= x"6765"; - when "01" & x"a9c" => DATA <= x"7234"; - when "01" & x"a9d" => DATA <= x"0000"; - when "01" & x"a9e" => DATA <= x"0000"; - when "01" & x"a9f" => DATA <= x"00dd"; - when "01" & x"aa0" => DATA <= x"003f"; - when "01" & x"aa1" => DATA <= x"190a"; - when "01" & x"aa2" => DATA <= x"4f53"; - when "01" & x"aa3" => DATA <= x"5f43"; - when "01" & x"aa4" => DATA <= x"6f6e"; - when "01" & x"aa5" => DATA <= x"7665"; - when "01" & x"aa6" => DATA <= x"7274"; - when "01" & x"aa7" => DATA <= x"4269"; - when "01" & x"aa8" => DATA <= x"6e61"; - when "01" & x"aa9" => DATA <= x"7279"; - when "01" & x"aaa" => DATA <= x"3100"; - when "01" & x"aab" => DATA <= x"0000"; - when "01" & x"aac" => DATA <= x"0000"; - when "01" & x"aad" => DATA <= x"00de"; - when "01" & x"aae" => DATA <= x"003f"; - when "01" & x"aaf" => DATA <= x"1928"; - when "01" & x"ab0" => DATA <= x"4f53"; - when "01" & x"ab1" => DATA <= x"5f43"; - when "01" & x"ab2" => DATA <= x"6f6e"; - when "01" & x"ab3" => DATA <= x"7665"; - when "01" & x"ab4" => DATA <= x"7274"; - when "01" & x"ab5" => DATA <= x"4269"; - when "01" & x"ab6" => DATA <= x"6e61"; - when "01" & x"ab7" => DATA <= x"7279"; - when "01" & x"ab8" => DATA <= x"3200"; - when "01" & x"ab9" => DATA <= x"0000"; - when "01" & x"aba" => DATA <= x"0000"; - when "01" & x"abb" => DATA <= x"00df"; - when "01" & x"abc" => DATA <= x"003f"; - when "01" & x"abd" => DATA <= x"1948"; - when "01" & x"abe" => DATA <= x"4f53"; - when "01" & x"abf" => DATA <= x"5f43"; - when "01" & x"ac0" => DATA <= x"6f6e"; - when "01" & x"ac1" => DATA <= x"7665"; - when "01" & x"ac2" => DATA <= x"7274"; - when "01" & x"ac3" => DATA <= x"4269"; - when "01" & x"ac4" => DATA <= x"6e61"; - when "01" & x"ac5" => DATA <= x"7279"; - when "01" & x"ac6" => DATA <= x"3300"; - when "01" & x"ac7" => DATA <= x"0000"; - when "01" & x"ac8" => DATA <= x"0000"; - when "01" & x"ac9" => DATA <= x"00e0"; - when "01" & x"aca" => DATA <= x"003f"; - when "01" & x"acb" => DATA <= x"1966"; - when "01" & x"acc" => DATA <= x"4f53"; - when "01" & x"acd" => DATA <= x"5f43"; - when "01" & x"ace" => DATA <= x"6f6e"; - when "01" & x"acf" => DATA <= x"7665"; - when "01" & x"ad0" => DATA <= x"7274"; - when "01" & x"ad1" => DATA <= x"4269"; - when "01" & x"ad2" => DATA <= x"6e61"; - when "01" & x"ad3" => DATA <= x"7279"; - when "01" & x"ad4" => DATA <= x"3400"; - when "01" & x"ad5" => DATA <= x"0000"; - when "01" & x"ad6" => DATA <= x"0000"; - when "01" & x"ad7" => DATA <= x"00ea"; - when "01" & x"ad8" => DATA <= x"003f"; - when "01" & x"ad9" => DATA <= x"19e2"; - when "01" & x"ada" => DATA <= x"4f53"; - when "01" & x"adb" => DATA <= x"5f43"; - when "01" & x"adc" => DATA <= x"6f6e"; - when "01" & x"add" => DATA <= x"7665"; - when "01" & x"ade" => DATA <= x"7274"; - when "01" & x"adf" => DATA <= x"4e65"; - when "01" & x"ae0" => DATA <= x"7453"; - when "01" & x"ae1" => DATA <= x"7461"; - when "01" & x"ae2" => DATA <= x"7469"; - when "01" & x"ae3" => DATA <= x"6f6e"; - when "01" & x"ae4" => DATA <= x"0000"; - when "01" & x"ae5" => DATA <= x"00ff"; - when "01" & x"ae6" => DATA <= x"003f"; - when "01" & x"ae7" => DATA <= x"1b52"; - when "01" & x"ae8" => DATA <= x"4552"; - when "01" & x"ae9" => DATA <= x"524f"; - when "01" & x"aea" => DATA <= x"5220"; - when "01" & x"aeb" => DATA <= x"2000"; - when "01" & x"aec" => DATA <= x"003f"; - when "01" & x"aed" => DATA <= x"1bb0"; - when "01" & x"aee" => DATA <= x"464c"; - when "01" & x"aef" => DATA <= x"4153"; - when "01" & x"af0" => DATA <= x"4820"; - when "01" & x"af1" => DATA <= x"2000"; - when "01" & x"af2" => DATA <= x"003f"; - when "01" & x"af3" => DATA <= x"1c88"; - when "01" & x"af4" => DATA <= x"474f"; - when "01" & x"af5" => DATA <= x"2000"; - when "01" & x"af6" => DATA <= x"003f"; - when "01" & x"af7" => DATA <= x"1cb6"; - when "01" & x"af8" => DATA <= x"4845"; - when "01" & x"af9" => DATA <= x"4c50"; - when "01" & x"afa" => DATA <= x"2020"; - when "01" & x"afb" => DATA <= x"2000"; - when "01" & x"afc" => DATA <= x"003f"; - when "01" & x"afd" => DATA <= x"1db2"; - when "01" & x"afe" => DATA <= x"4d4f"; - when "01" & x"aff" => DATA <= x"4e00"; - when "01" & x"b00" => DATA <= x"003f"; - when "01" & x"b01" => DATA <= x"247c"; - when "01" & x"b02" => DATA <= x"5155"; - when "01" & x"b03" => DATA <= x"4954"; - when "01" & x"b04" => DATA <= x"2020"; - when "01" & x"b05" => DATA <= x"2000"; - when "01" & x"b06" => DATA <= x"003f"; - when "01" & x"b07" => DATA <= x"2480"; - when "01" & x"b08" => DATA <= x"545a"; - when "01" & x"b09" => DATA <= x"4150"; - when "01" & x"b0a" => DATA <= x"2020"; - when "01" & x"b0b" => DATA <= x"2000"; - when "01" & x"b0c" => DATA <= x"003f"; - when "01" & x"b0d" => DATA <= x"2484"; - when "01" & x"b0e" => DATA <= x"5846"; - when "01" & x"b0f" => DATA <= x"4552"; - when "01" & x"b10" => DATA <= x"2020"; - when "01" & x"b11" => DATA <= x"2000"; - when "01" & x"b12" => DATA <= x"ffff"; - when "01" & x"b13" => DATA <= x"ffff"; - when "01" & x"b14" => DATA <= x"0000"; - when "01" & x"b15" => DATA <= x"0508"; + when "01" & x"9cb" => DATA <= x"0000"; + when "01" & x"9cc" => DATA <= x"0000"; + when "01" & x"9cd" => DATA <= x"005b"; + when "01" & x"9ce" => DATA <= x"003f"; + when "01" & x"9cf" => DATA <= x"14ac"; + when "01" & x"9d0" => DATA <= x"4f53"; + when "01" & x"9d1" => DATA <= x"5f43"; + when "01" & x"9d2" => DATA <= x"5243"; + when "01" & x"9d3" => DATA <= x"0000"; + when "01" & x"9d4" => DATA <= x"0000"; + when "01" & x"9d5" => DATA <= x"0059"; + when "01" & x"9d6" => DATA <= x"003f"; + when "01" & x"9d7" => DATA <= x"149e"; + when "01" & x"9d8" => DATA <= x"4f53"; + when "01" & x"9d9" => DATA <= x"5f43"; + when "01" & x"9da" => DATA <= x"6f6e"; + when "01" & x"9db" => DATA <= x"6669"; + when "01" & x"9dc" => DATA <= x"726d"; + when "01" & x"9dd" => DATA <= x"0000"; + when "01" & x"9de" => DATA <= x"0000"; + when "01" & x"9df" => DATA <= x"007c"; + when "01" & x"9e0" => DATA <= x"003f"; + when "01" & x"9e1" => DATA <= x"14ea"; + when "01" & x"9e2" => DATA <= x"4f53"; + when "01" & x"9e3" => DATA <= x"5f4c"; + when "01" & x"9e4" => DATA <= x"6561"; + when "01" & x"9e5" => DATA <= x"7665"; + when "01" & x"9e6" => DATA <= x"4f53"; + when "01" & x"9e7" => DATA <= x"0000"; + when "01" & x"9e8" => DATA <= x"0000"; + when "01" & x"9e9" => DATA <= x"007d"; + when "01" & x"9ea" => DATA <= x"003f"; + when "01" & x"9eb" => DATA <= x"14f0"; + when "01" & x"9ec" => DATA <= x"4f53"; + when "01" & x"9ed" => DATA <= x"5f52"; + when "01" & x"9ee" => DATA <= x"6561"; + when "01" & x"9ef" => DATA <= x"644c"; + when "01" & x"9f0" => DATA <= x"696e"; + when "01" & x"9f1" => DATA <= x"6533"; + when "01" & x"9f2" => DATA <= x"3200"; + when "01" & x"9f3" => DATA <= x"0000"; + when "01" & x"9f4" => DATA <= x"0000"; + when "01" & x"9f5" => DATA <= x"00d0"; + when "01" & x"9f6" => DATA <= x"003f"; + when "01" & x"9f7" => DATA <= x"1678"; + when "01" & x"9f8" => DATA <= x"4f53"; + when "01" & x"9f9" => DATA <= x"5f43"; + when "01" & x"9fa" => DATA <= x"6f6e"; + when "01" & x"9fb" => DATA <= x"7665"; + when "01" & x"9fc" => DATA <= x"7274"; + when "01" & x"9fd" => DATA <= x"4865"; + when "01" & x"9fe" => DATA <= x"7831"; + when "01" & x"9ff" => DATA <= x"0000"; + when "01" & x"a00" => DATA <= x"0000"; + when "01" & x"a01" => DATA <= x"00d1"; + when "01" & x"a02" => DATA <= x"003f"; + when "01" & x"a03" => DATA <= x"1694"; + when "01" & x"a04" => DATA <= x"4f53"; + when "01" & x"a05" => DATA <= x"5f43"; + when "01" & x"a06" => DATA <= x"6f6e"; + when "01" & x"a07" => DATA <= x"7665"; + when "01" & x"a08" => DATA <= x"7274"; + when "01" & x"a09" => DATA <= x"4865"; + when "01" & x"a0a" => DATA <= x"7832"; + when "01" & x"a0b" => DATA <= x"0000"; + when "01" & x"a0c" => DATA <= x"0000"; + when "01" & x"a0d" => DATA <= x"00d2"; + when "01" & x"a0e" => DATA <= x"003f"; + when "01" & x"a0f" => DATA <= x"16b0"; + when "01" & x"a10" => DATA <= x"4f53"; + when "01" & x"a11" => DATA <= x"5f43"; + when "01" & x"a12" => DATA <= x"6f6e"; + when "01" & x"a13" => DATA <= x"7665"; + when "01" & x"a14" => DATA <= x"7274"; + when "01" & x"a15" => DATA <= x"4865"; + when "01" & x"a16" => DATA <= x"7834"; + when "01" & x"a17" => DATA <= x"0000"; + when "01" & x"a18" => DATA <= x"0000"; + when "01" & x"a19" => DATA <= x"00d3"; + when "01" & x"a1a" => DATA <= x"003f"; + when "01" & x"a1b" => DATA <= x"16ce"; + when "01" & x"a1c" => DATA <= x"4f53"; + when "01" & x"a1d" => DATA <= x"5f43"; + when "01" & x"a1e" => DATA <= x"6f6e"; + when "01" & x"a1f" => DATA <= x"7665"; + when "01" & x"a20" => DATA <= x"7274"; + when "01" & x"a21" => DATA <= x"4865"; + when "01" & x"a22" => DATA <= x"7836"; + when "01" & x"a23" => DATA <= x"0000"; + when "01" & x"a24" => DATA <= x"0000"; + when "01" & x"a25" => DATA <= x"00d4"; + when "01" & x"a26" => DATA <= x"003f"; + when "01" & x"a27" => DATA <= x"16ea"; + when "01" & x"a28" => DATA <= x"4f53"; + when "01" & x"a29" => DATA <= x"5f43"; + when "01" & x"a2a" => DATA <= x"6f6e"; + when "01" & x"a2b" => DATA <= x"7665"; + when "01" & x"a2c" => DATA <= x"7274"; + when "01" & x"a2d" => DATA <= x"4865"; + when "01" & x"a2e" => DATA <= x"7838"; + when "01" & x"a2f" => DATA <= x"0000"; + when "01" & x"a30" => DATA <= x"0000"; + when "01" & x"a31" => DATA <= x"00d5"; + when "01" & x"a32" => DATA <= x"003f"; + when "01" & x"a33" => DATA <= x"1744"; + when "01" & x"a34" => DATA <= x"4f53"; + when "01" & x"a35" => DATA <= x"5f43"; + when "01" & x"a36" => DATA <= x"6f6e"; + when "01" & x"a37" => DATA <= x"7665"; + when "01" & x"a38" => DATA <= x"7274"; + when "01" & x"a39" => DATA <= x"4361"; + when "01" & x"a3a" => DATA <= x"7264"; + when "01" & x"a3b" => DATA <= x"696e"; + when "01" & x"a3c" => DATA <= x"616c"; + when "01" & x"a3d" => DATA <= x"3100"; + when "01" & x"a3e" => DATA <= x"0000"; + when "01" & x"a3f" => DATA <= x"00d6"; + when "01" & x"a40" => DATA <= x"003f"; + when "01" & x"a41" => DATA <= x"175e"; + when "01" & x"a42" => DATA <= x"4f53"; + when "01" & x"a43" => DATA <= x"5f43"; + when "01" & x"a44" => DATA <= x"6f6e"; + when "01" & x"a45" => DATA <= x"7665"; + when "01" & x"a46" => DATA <= x"7274"; + when "01" & x"a47" => DATA <= x"4361"; + when "01" & x"a48" => DATA <= x"7264"; + when "01" & x"a49" => DATA <= x"696e"; + when "01" & x"a4a" => DATA <= x"616c"; + when "01" & x"a4b" => DATA <= x"3200"; + when "01" & x"a4c" => DATA <= x"0000"; + when "01" & x"a4d" => DATA <= x"00d7"; + when "01" & x"a4e" => DATA <= x"003f"; + when "01" & x"a4f" => DATA <= x"1778"; + when "01" & x"a50" => DATA <= x"4f53"; + when "01" & x"a51" => DATA <= x"5f43"; + when "01" & x"a52" => DATA <= x"6f6e"; + when "01" & x"a53" => DATA <= x"7665"; + when "01" & x"a54" => DATA <= x"7274"; + when "01" & x"a55" => DATA <= x"4361"; + when "01" & x"a56" => DATA <= x"7264"; + when "01" & x"a57" => DATA <= x"696e"; + when "01" & x"a58" => DATA <= x"616c"; + when "01" & x"a59" => DATA <= x"3300"; + when "01" & x"a5a" => DATA <= x"0000"; + when "01" & x"a5b" => DATA <= x"00d8"; + when "01" & x"a5c" => DATA <= x"003f"; + when "01" & x"a5d" => DATA <= x"1792"; + when "01" & x"a5e" => DATA <= x"4f53"; + when "01" & x"a5f" => DATA <= x"5f43"; + when "01" & x"a60" => DATA <= x"6f6e"; + when "01" & x"a61" => DATA <= x"7665"; + when "01" & x"a62" => DATA <= x"7274"; + when "01" & x"a63" => DATA <= x"4361"; + when "01" & x"a64" => DATA <= x"7264"; + when "01" & x"a65" => DATA <= x"696e"; + when "01" & x"a66" => DATA <= x"616c"; + when "01" & x"a67" => DATA <= x"3400"; + when "01" & x"a68" => DATA <= x"0000"; + when "01" & x"a69" => DATA <= x"00d9"; + when "01" & x"a6a" => DATA <= x"003f"; + when "01" & x"a6b" => DATA <= x"1814"; + when "01" & x"a6c" => DATA <= x"4f53"; + when "01" & x"a6d" => DATA <= x"5f43"; + when "01" & x"a6e" => DATA <= x"6f6e"; + when "01" & x"a6f" => DATA <= x"7665"; + when "01" & x"a70" => DATA <= x"7274"; + when "01" & x"a71" => DATA <= x"496e"; + when "01" & x"a72" => DATA <= x"7465"; + when "01" & x"a73" => DATA <= x"6765"; + when "01" & x"a74" => DATA <= x"7231"; + when "01" & x"a75" => DATA <= x"0000"; + when "01" & x"a76" => DATA <= x"0000"; + when "01" & x"a77" => DATA <= x"00da"; + when "01" & x"a78" => DATA <= x"003f"; + when "01" & x"a79" => DATA <= x"183c"; + when "01" & x"a7a" => DATA <= x"4f53"; + when "01" & x"a7b" => DATA <= x"5f43"; + when "01" & x"a7c" => DATA <= x"6f6e"; + when "01" & x"a7d" => DATA <= x"7665"; + when "01" & x"a7e" => DATA <= x"7274"; + when "01" & x"a7f" => DATA <= x"496e"; + when "01" & x"a80" => DATA <= x"7465"; + when "01" & x"a81" => DATA <= x"6765"; + when "01" & x"a82" => DATA <= x"7232"; + when "01" & x"a83" => DATA <= x"0000"; + when "01" & x"a84" => DATA <= x"0000"; + when "01" & x"a85" => DATA <= x"00db"; + when "01" & x"a86" => DATA <= x"003f"; + when "01" & x"a87" => DATA <= x"1864"; + when "01" & x"a88" => DATA <= x"4f53"; + when "01" & x"a89" => DATA <= x"5f43"; + when "01" & x"a8a" => DATA <= x"6f6e"; + when "01" & x"a8b" => DATA <= x"7665"; + when "01" & x"a8c" => DATA <= x"7274"; + when "01" & x"a8d" => DATA <= x"496e"; + when "01" & x"a8e" => DATA <= x"7465"; + when "01" & x"a8f" => DATA <= x"6765"; + when "01" & x"a90" => DATA <= x"7233"; + when "01" & x"a91" => DATA <= x"0000"; + when "01" & x"a92" => DATA <= x"0000"; + when "01" & x"a93" => DATA <= x"00dc"; + when "01" & x"a94" => DATA <= x"003f"; + when "01" & x"a95" => DATA <= x"188c"; + when "01" & x"a96" => DATA <= x"4f53"; + when "01" & x"a97" => DATA <= x"5f43"; + when "01" & x"a98" => DATA <= x"6f6e"; + when "01" & x"a99" => DATA <= x"7665"; + when "01" & x"a9a" => DATA <= x"7274"; + when "01" & x"a9b" => DATA <= x"496e"; + when "01" & x"a9c" => DATA <= x"7465"; + when "01" & x"a9d" => DATA <= x"6765"; + when "01" & x"a9e" => DATA <= x"7234"; + when "01" & x"a9f" => DATA <= x"0000"; + when "01" & x"aa0" => DATA <= x"0000"; + when "01" & x"aa1" => DATA <= x"00dd"; + when "01" & x"aa2" => DATA <= x"003f"; + when "01" & x"aa3" => DATA <= x"190e"; + when "01" & x"aa4" => DATA <= x"4f53"; + when "01" & x"aa5" => DATA <= x"5f43"; + when "01" & x"aa6" => DATA <= x"6f6e"; + when "01" & x"aa7" => DATA <= x"7665"; + when "01" & x"aa8" => DATA <= x"7274"; + when "01" & x"aa9" => DATA <= x"4269"; + when "01" & x"aaa" => DATA <= x"6e61"; + when "01" & x"aab" => DATA <= x"7279"; + when "01" & x"aac" => DATA <= x"3100"; + when "01" & x"aad" => DATA <= x"0000"; + when "01" & x"aae" => DATA <= x"0000"; + when "01" & x"aaf" => DATA <= x"00de"; + when "01" & x"ab0" => DATA <= x"003f"; + when "01" & x"ab1" => DATA <= x"192c"; + when "01" & x"ab2" => DATA <= x"4f53"; + when "01" & x"ab3" => DATA <= x"5f43"; + when "01" & x"ab4" => DATA <= x"6f6e"; + when "01" & x"ab5" => DATA <= x"7665"; + when "01" & x"ab6" => DATA <= x"7274"; + when "01" & x"ab7" => DATA <= x"4269"; + when "01" & x"ab8" => DATA <= x"6e61"; + when "01" & x"ab9" => DATA <= x"7279"; + when "01" & x"aba" => DATA <= x"3200"; + when "01" & x"abb" => DATA <= x"0000"; + when "01" & x"abc" => DATA <= x"0000"; + when "01" & x"abd" => DATA <= x"00df"; + when "01" & x"abe" => DATA <= x"003f"; + when "01" & x"abf" => DATA <= x"194c"; + when "01" & x"ac0" => DATA <= x"4f53"; + when "01" & x"ac1" => DATA <= x"5f43"; + when "01" & x"ac2" => DATA <= x"6f6e"; + when "01" & x"ac3" => DATA <= x"7665"; + when "01" & x"ac4" => DATA <= x"7274"; + when "01" & x"ac5" => DATA <= x"4269"; + when "01" & x"ac6" => DATA <= x"6e61"; + when "01" & x"ac7" => DATA <= x"7279"; + when "01" & x"ac8" => DATA <= x"3300"; + when "01" & x"ac9" => DATA <= x"0000"; + when "01" & x"aca" => DATA <= x"0000"; + when "01" & x"acb" => DATA <= x"00e0"; + when "01" & x"acc" => DATA <= x"003f"; + when "01" & x"acd" => DATA <= x"196a"; + when "01" & x"ace" => DATA <= x"4f53"; + when "01" & x"acf" => DATA <= x"5f43"; + when "01" & x"ad0" => DATA <= x"6f6e"; + when "01" & x"ad1" => DATA <= x"7665"; + when "01" & x"ad2" => DATA <= x"7274"; + when "01" & x"ad3" => DATA <= x"4269"; + when "01" & x"ad4" => DATA <= x"6e61"; + when "01" & x"ad5" => DATA <= x"7279"; + when "01" & x"ad6" => DATA <= x"3400"; + when "01" & x"ad7" => DATA <= x"0000"; + when "01" & x"ad8" => DATA <= x"0000"; + when "01" & x"ad9" => DATA <= x"00ea"; + when "01" & x"ada" => DATA <= x"003f"; + when "01" & x"adb" => DATA <= x"19e6"; + when "01" & x"adc" => DATA <= x"4f53"; + when "01" & x"add" => DATA <= x"5f43"; + when "01" & x"ade" => DATA <= x"6f6e"; + when "01" & x"adf" => DATA <= x"7665"; + when "01" & x"ae0" => DATA <= x"7274"; + when "01" & x"ae1" => DATA <= x"4e65"; + when "01" & x"ae2" => DATA <= x"7453"; + when "01" & x"ae3" => DATA <= x"7461"; + when "01" & x"ae4" => DATA <= x"7469"; + when "01" & x"ae5" => DATA <= x"6f6e"; + when "01" & x"ae6" => DATA <= x"0000"; + when "01" & x"ae7" => DATA <= x"00ff"; + when "01" & x"ae8" => DATA <= x"003f"; + when "01" & x"ae9" => DATA <= x"1b56"; + when "01" & x"aea" => DATA <= x"4552"; + when "01" & x"aeb" => DATA <= x"524f"; + when "01" & x"aec" => DATA <= x"5220"; + when "01" & x"aed" => DATA <= x"2000"; + when "01" & x"aee" => DATA <= x"003f"; + when "01" & x"aef" => DATA <= x"1bb4"; + when "01" & x"af0" => DATA <= x"464c"; + when "01" & x"af1" => DATA <= x"4153"; + when "01" & x"af2" => DATA <= x"4820"; + when "01" & x"af3" => DATA <= x"2000"; + when "01" & x"af4" => DATA <= x"003f"; + when "01" & x"af5" => DATA <= x"1c8c"; + when "01" & x"af6" => DATA <= x"474f"; + when "01" & x"af7" => DATA <= x"2000"; + when "01" & x"af8" => DATA <= x"003f"; + when "01" & x"af9" => DATA <= x"1cba"; + when "01" & x"afa" => DATA <= x"4845"; + when "01" & x"afb" => DATA <= x"4c50"; + when "01" & x"afc" => DATA <= x"2020"; + when "01" & x"afd" => DATA <= x"2000"; + when "01" & x"afe" => DATA <= x"003f"; + when "01" & x"aff" => DATA <= x"1db6"; + when "01" & x"b00" => DATA <= x"4d4f"; + when "01" & x"b01" => DATA <= x"4e00"; + when "01" & x"b02" => DATA <= x"003f"; + when "01" & x"b03" => DATA <= x"2480"; + when "01" & x"b04" => DATA <= x"5155"; + when "01" & x"b05" => DATA <= x"4954"; + when "01" & x"b06" => DATA <= x"2020"; + when "01" & x"b07" => DATA <= x"2000"; + when "01" & x"b08" => DATA <= x"003f"; + when "01" & x"b09" => DATA <= x"2484"; + when "01" & x"b0a" => DATA <= x"545a"; + when "01" & x"b0b" => DATA <= x"4150"; + when "01" & x"b0c" => DATA <= x"2020"; + when "01" & x"b0d" => DATA <= x"2000"; + when "01" & x"b0e" => DATA <= x"003f"; + when "01" & x"b0f" => DATA <= x"2488"; + when "01" & x"b10" => DATA <= x"5846"; + when "01" & x"b11" => DATA <= x"4552"; + when "01" & x"b12" => DATA <= x"2020"; + when "01" & x"b13" => DATA <= x"2000"; + when "01" & x"b14" => DATA <= x"ffff"; + when "01" & x"b15" => DATA <= x"ffff"; when "01" & x"b16" => DATA <= x"0000"; - when "01" & x"b17" => DATA <= x"0508"; + when "01" & x"b17" => DATA <= x"0000"; when "01" & x"b18" => DATA <= x"0000"; - when "01" & x"b19" => DATA <= x"0000"; + when "01" & x"b19" => DATA <= x"0508"; when "01" & x"b1a" => DATA <= x"0000"; when "01" & x"b1b" => DATA <= x"0000"; when "01" & x"b1c" => DATA <= x"0000"; - when "01" & x"b1d" => DATA <= x"0010"; + when "01" & x"b1d" => DATA <= x"0000"; when "01" & x"b1e" => DATA <= x"0000"; - when "01" & x"b1f" => DATA <= x"0000"; + when "01" & x"b1f" => DATA <= x"0010"; when "01" & x"b20" => DATA <= x"0000"; when "01" & x"b21" => DATA <= x"0000"; when "01" & x"b22" => DATA <= x"0000"; @@ -6986,69 +6986,69 @@ begin when "01" & x"b2c" => DATA <= x"0000"; when "01" & x"b2d" => DATA <= x"0000"; when "01" & x"b2e" => DATA <= x"0000"; - when "01" & x"b2f" => DATA <= x"000c"; + when "01" & x"b2f" => DATA <= x"0000"; when "01" & x"b30" => DATA <= x"0000"; - when "01" & x"b31" => DATA <= x"0000"; + when "01" & x"b31" => DATA <= x"000c"; when "01" & x"b32" => DATA <= x"0000"; when "01" & x"b33" => DATA <= x"0000"; when "01" & x"b34" => DATA <= x"0000"; - when "01" & x"b35" => DATA <= x"04c0"; + when "01" & x"b35" => DATA <= x"0000"; when "01" & x"b36" => DATA <= x"0000"; - when "01" & x"b37" => DATA <= x"0000"; + when "01" & x"b37" => DATA <= x"04c0"; when "01" & x"b38" => DATA <= x"0000"; when "01" & x"b39" => DATA <= x"0000"; when "01" & x"b3a" => DATA <= x"0000"; - when "01" & x"b3b" => DATA <= x"0404"; + when "01" & x"b3b" => DATA <= x"0000"; when "01" & x"b3c" => DATA <= x"0000"; - when "01" & x"b3d" => DATA <= x"04d4"; + when "01" & x"b3d" => DATA <= x"0404"; when "01" & x"b3e" => DATA <= x"0000"; - when "01" & x"b3f" => DATA <= x"04f4"; + when "01" & x"b3f" => DATA <= x"04d4"; when "01" & x"b40" => DATA <= x"0000"; - when "01" & x"b41" => DATA <= x"04c4"; + when "01" & x"b41" => DATA <= x"04f4"; when "01" & x"b42" => DATA <= x"0000"; - when "01" & x"b43" => DATA <= x"04d8"; + when "01" & x"b43" => DATA <= x"04c4"; when "01" & x"b44" => DATA <= x"0000"; - when "01" & x"b45" => DATA <= x"04f8"; + when "01" & x"b45" => DATA <= x"04d8"; when "01" & x"b46" => DATA <= x"0000"; - when "01" & x"b47" => DATA <= x"04c8"; + when "01" & x"b47" => DATA <= x"04f8"; when "01" & x"b48" => DATA <= x"0000"; - when "01" & x"b49" => DATA <= x"04dc"; + when "01" & x"b49" => DATA <= x"04c8"; when "01" & x"b4a" => DATA <= x"0000"; - when "01" & x"b4b" => DATA <= x"04fc"; + when "01" & x"b4b" => DATA <= x"04dc"; when "01" & x"b4c" => DATA <= x"0000"; - when "01" & x"b4d" => DATA <= x"04cc"; + when "01" & x"b4d" => DATA <= x"04fc"; when "01" & x"b4e" => DATA <= x"0000"; - when "01" & x"b4f" => DATA <= x"04e0"; + when "01" & x"b4f" => DATA <= x"04cc"; when "01" & x"b50" => DATA <= x"0000"; - when "01" & x"b51" => DATA <= x"0000"; + when "01" & x"b51" => DATA <= x"04e0"; when "01" & x"b52" => DATA <= x"0000"; - when "01" & x"b53" => DATA <= x"0440"; + when "01" & x"b53" => DATA <= x"0000"; when "01" & x"b54" => DATA <= x"0000"; - when "01" & x"b55" => DATA <= x"04e4"; + when "01" & x"b55" => DATA <= x"0440"; when "01" & x"b56" => DATA <= x"0000"; - when "01" & x"b57" => DATA <= x"0000"; + when "01" & x"b57" => DATA <= x"04e4"; when "01" & x"b58" => DATA <= x"0000"; - when "01" & x"b59" => DATA <= x"04d0"; + when "01" & x"b59" => DATA <= x"0000"; when "01" & x"b5a" => DATA <= x"0000"; - when "01" & x"b5b" => DATA <= x"04e8"; + when "01" & x"b5b" => DATA <= x"04d0"; when "01" & x"b5c" => DATA <= x"0000"; - when "01" & x"b5d" => DATA <= x"0000"; + when "01" & x"b5d" => DATA <= x"04e8"; when "01" & x"b5e" => DATA <= x"0000"; - when "01" & x"b5f" => DATA <= x"0460"; + when "01" & x"b5f" => DATA <= x"0000"; when "01" & x"b60" => DATA <= x"0000"; - when "01" & x"b61" => DATA <= x"04ec"; + when "01" & x"b61" => DATA <= x"0460"; when "01" & x"b62" => DATA <= x"0000"; - when "01" & x"b63" => DATA <= x"0000"; + when "01" & x"b63" => DATA <= x"04ec"; when "01" & x"b64" => DATA <= x"0000"; - when "01" & x"b65" => DATA <= x"0538"; + when "01" & x"b65" => DATA <= x"0000"; when "01" & x"b66" => DATA <= x"0000"; - when "01" & x"b67" => DATA <= x"0000"; + when "01" & x"b67" => DATA <= x"0538"; when "01" & x"b68" => DATA <= x"0000"; when "01" & x"b69" => DATA <= x"0000"; when "01" & x"b6a" => DATA <= x"0000"; - when "01" & x"b6b" => DATA <= x"050c"; + when "01" & x"b6b" => DATA <= x"0000"; when "01" & x"b6c" => DATA <= x"0000"; - when "01" & x"b6d" => DATA <= x"0000"; + when "01" & x"b6d" => DATA <= x"050c"; when "01" & x"b6e" => DATA <= x"0000"; when "01" & x"b6f" => DATA <= x"0000"; when "01" & x"b70" => DATA <= x"0000"; @@ -7058,1760 +7058,1760 @@ begin when "01" & x"b74" => DATA <= x"0000"; when "01" & x"b75" => DATA <= x"0000"; when "01" & x"b76" => DATA <= x"0000"; - when "01" & x"b77" => DATA <= x"0474"; + when "01" & x"b77" => DATA <= x"0000"; when "01" & x"b78" => DATA <= x"0000"; - when "01" & x"b79" => DATA <= x"04f0"; + when "01" & x"b79" => DATA <= x"0474"; when "01" & x"b7a" => DATA <= x"0000"; - when "01" & x"b7b" => DATA <= x"0000"; - when "01" & x"b7c" => DATA <= x"003f"; - when "01" & x"b7d" => DATA <= x"0776"; + when "01" & x"b7b" => DATA <= x"04f0"; + when "01" & x"b7c" => DATA <= x"0000"; + when "01" & x"b7d" => DATA <= x"0000"; when "01" & x"b7e" => DATA <= x"003f"; - when "01" & x"b7f" => DATA <= x"0776"; + when "01" & x"b7f" => DATA <= x"077a"; when "01" & x"b80" => DATA <= x"003f"; - when "01" & x"b81" => DATA <= x"0776"; + when "01" & x"b81" => DATA <= x"077a"; when "01" & x"b82" => DATA <= x"003f"; - when "01" & x"b83" => DATA <= x"0776"; + when "01" & x"b83" => DATA <= x"077a"; when "01" & x"b84" => DATA <= x"003f"; - when "01" & x"b85" => DATA <= x"0776"; + when "01" & x"b85" => DATA <= x"077a"; when "01" & x"b86" => DATA <= x"003f"; - when "01" & x"b87" => DATA <= x"0776"; + when "01" & x"b87" => DATA <= x"077a"; when "01" & x"b88" => DATA <= x"003f"; - when "01" & x"b89" => DATA <= x"0776"; + when "01" & x"b89" => DATA <= x"077a"; when "01" & x"b8a" => DATA <= x"003f"; - when "01" & x"b8b" => DATA <= x"0776"; + when "01" & x"b8b" => DATA <= x"077a"; when "01" & x"b8c" => DATA <= x"003f"; - when "01" & x"b8d" => DATA <= x"0776"; + when "01" & x"b8d" => DATA <= x"077a"; when "01" & x"b8e" => DATA <= x"003f"; - when "01" & x"b8f" => DATA <= x"0776"; + when "01" & x"b8f" => DATA <= x"077a"; when "01" & x"b90" => DATA <= x"003f"; - when "01" & x"b91" => DATA <= x"1104"; + when "01" & x"b91" => DATA <= x"077a"; when "01" & x"b92" => DATA <= x"003f"; - when "01" & x"b93" => DATA <= x"0776"; + when "01" & x"b93" => DATA <= x"1108"; when "01" & x"b94" => DATA <= x"003f"; - when "01" & x"b95" => DATA <= x"0776"; + when "01" & x"b95" => DATA <= x"077a"; when "01" & x"b96" => DATA <= x"003f"; - when "01" & x"b97" => DATA <= x"0776"; + when "01" & x"b97" => DATA <= x"077a"; when "01" & x"b98" => DATA <= x"003f"; - when "01" & x"b99" => DATA <= x"0776"; + when "01" & x"b99" => DATA <= x"077a"; when "01" & x"b9a" => DATA <= x"003f"; - when "01" & x"b9b" => DATA <= x"0776"; + when "01" & x"b9b" => DATA <= x"077a"; when "01" & x"b9c" => DATA <= x"003f"; - when "01" & x"b9d" => DATA <= x"0776"; + when "01" & x"b9d" => DATA <= x"077a"; when "01" & x"b9e" => DATA <= x"003f"; - when "01" & x"b9f" => DATA <= x"0776"; + when "01" & x"b9f" => DATA <= x"077a"; when "01" & x"ba0" => DATA <= x"003f"; - when "01" & x"ba1" => DATA <= x"0776"; + when "01" & x"ba1" => DATA <= x"077a"; when "01" & x"ba2" => DATA <= x"003f"; - when "01" & x"ba3" => DATA <= x"0776"; + when "01" & x"ba3" => DATA <= x"077a"; when "01" & x"ba4" => DATA <= x"003f"; - when "01" & x"ba5" => DATA <= x"0776"; + when "01" & x"ba5" => DATA <= x"077a"; when "01" & x"ba6" => DATA <= x"003f"; - when "01" & x"ba7" => DATA <= x"0776"; + when "01" & x"ba7" => DATA <= x"077a"; when "01" & x"ba8" => DATA <= x"003f"; - when "01" & x"ba9" => DATA <= x"1112"; + when "01" & x"ba9" => DATA <= x"077a"; when "01" & x"baa" => DATA <= x"003f"; - when "01" & x"bab" => DATA <= x"0776"; + when "01" & x"bab" => DATA <= x"1116"; when "01" & x"bac" => DATA <= x"003f"; - when "01" & x"bad" => DATA <= x"0776"; + when "01" & x"bad" => DATA <= x"077a"; when "01" & x"bae" => DATA <= x"003f"; - when "01" & x"baf" => DATA <= x"0776"; + when "01" & x"baf" => DATA <= x"077a"; when "01" & x"bb0" => DATA <= x"003f"; - when "01" & x"bb1" => DATA <= x"0776"; + when "01" & x"bb1" => DATA <= x"077a"; when "01" & x"bb2" => DATA <= x"003f"; - when "01" & x"bb3" => DATA <= x"0776"; + when "01" & x"bb3" => DATA <= x"077a"; when "01" & x"bb4" => DATA <= x"003f"; - when "01" & x"bb5" => DATA <= x"0776"; + when "01" & x"bb5" => DATA <= x"077a"; when "01" & x"bb6" => DATA <= x"003f"; - when "01" & x"bb7" => DATA <= x"0776"; + when "01" & x"bb7" => DATA <= x"077a"; when "01" & x"bb8" => DATA <= x"003f"; - when "01" & x"bb9" => DATA <= x"0776"; + when "01" & x"bb9" => DATA <= x"077a"; when "01" & x"bba" => DATA <= x"003f"; - when "01" & x"bbb" => DATA <= x"0776"; + when "01" & x"bbb" => DATA <= x"077a"; when "01" & x"bbc" => DATA <= x"003f"; - when "01" & x"bbd" => DATA <= x"0776"; + when "01" & x"bbd" => DATA <= x"077a"; when "01" & x"bbe" => DATA <= x"003f"; - when "01" & x"bbf" => DATA <= x"0776"; + when "01" & x"bbf" => DATA <= x"077a"; when "01" & x"bc0" => DATA <= x"003f"; - when "01" & x"bc1" => DATA <= x"0776"; + when "01" & x"bc1" => DATA <= x"077a"; when "01" & x"bc2" => DATA <= x"003f"; - when "01" & x"bc3" => DATA <= x"0776"; + when "01" & x"bc3" => DATA <= x"077a"; when "01" & x"bc4" => DATA <= x"003f"; - when "01" & x"bc5" => DATA <= x"0776"; + when "01" & x"bc5" => DATA <= x"077a"; when "01" & x"bc6" => DATA <= x"003f"; - when "01" & x"bc7" => DATA <= x"0776"; + when "01" & x"bc7" => DATA <= x"077a"; when "01" & x"bc8" => DATA <= x"003f"; - when "01" & x"bc9" => DATA <= x"0776"; + when "01" & x"bc9" => DATA <= x"077a"; when "01" & x"bca" => DATA <= x"003f"; - when "01" & x"bcb" => DATA <= x"0776"; + when "01" & x"bcb" => DATA <= x"077a"; when "01" & x"bcc" => DATA <= x"003f"; - when "01" & x"bcd" => DATA <= x"0776"; + when "01" & x"bcd" => DATA <= x"077a"; when "01" & x"bce" => DATA <= x"003f"; - when "01" & x"bcf" => DATA <= x"0776"; + when "01" & x"bcf" => DATA <= x"077a"; when "01" & x"bd0" => DATA <= x"003f"; - when "01" & x"bd1" => DATA <= x"0776"; + when "01" & x"bd1" => DATA <= x"077a"; when "01" & x"bd2" => DATA <= x"003f"; - when "01" & x"bd3" => DATA <= x"0776"; + when "01" & x"bd3" => DATA <= x"077a"; when "01" & x"bd4" => DATA <= x"003f"; - when "01" & x"bd5" => DATA <= x"0776"; + when "01" & x"bd5" => DATA <= x"077a"; when "01" & x"bd6" => DATA <= x"003f"; - when "01" & x"bd7" => DATA <= x"0776"; + when "01" & x"bd7" => DATA <= x"077a"; when "01" & x"bd8" => DATA <= x"003f"; - when "01" & x"bd9" => DATA <= x"0776"; + when "01" & x"bd9" => DATA <= x"077a"; when "01" & x"bda" => DATA <= x"003f"; - when "01" & x"bdb" => DATA <= x"0776"; + when "01" & x"bdb" => DATA <= x"077a"; when "01" & x"bdc" => DATA <= x"003f"; - when "01" & x"bdd" => DATA <= x"0776"; + when "01" & x"bdd" => DATA <= x"077a"; when "01" & x"bde" => DATA <= x"003f"; - when "01" & x"bdf" => DATA <= x"0776"; + when "01" & x"bdf" => DATA <= x"077a"; when "01" & x"be0" => DATA <= x"003f"; - when "01" & x"be1" => DATA <= x"0776"; + when "01" & x"be1" => DATA <= x"077a"; when "01" & x"be2" => DATA <= x"003f"; - when "01" & x"be3" => DATA <= x"0776"; + when "01" & x"be3" => DATA <= x"077a"; when "01" & x"be4" => DATA <= x"003f"; - when "01" & x"be5" => DATA <= x"0776"; + when "01" & x"be5" => DATA <= x"077a"; when "01" & x"be6" => DATA <= x"003f"; - when "01" & x"be7" => DATA <= x"0776"; + when "01" & x"be7" => DATA <= x"077a"; when "01" & x"be8" => DATA <= x"003f"; - when "01" & x"be9" => DATA <= x"0776"; + when "01" & x"be9" => DATA <= x"077a"; when "01" & x"bea" => DATA <= x"003f"; - when "01" & x"beb" => DATA <= x"0776"; + when "01" & x"beb" => DATA <= x"077a"; when "01" & x"bec" => DATA <= x"003f"; - when "01" & x"bed" => DATA <= x"0776"; + when "01" & x"bed" => DATA <= x"077a"; when "01" & x"bee" => DATA <= x"003f"; - when "01" & x"bef" => DATA <= x"0776"; + when "01" & x"bef" => DATA <= x"077a"; when "01" & x"bf0" => DATA <= x"003f"; - when "01" & x"bf1" => DATA <= x"0776"; - when "01" & x"bf2" => DATA <= x"1890"; - when "01" & x"bf3" => DATA <= x"0210"; - when "01" & x"bf4" => DATA <= x"e3c9"; - when "01" & x"bf5" => DATA <= x"faf0"; - when "01" & x"bf6" => DATA <= x"036c"; - when "01" & x"bf7" => DATA <= x"0325"; - when "01" & x"bf8" => DATA <= x"8670"; - when "01" & x"bf9" => DATA <= x"8471"; - when "01" & x"bfa" => DATA <= x"48a9"; - when "01" & x"bfb" => DATA <= x"fba2"; - when "01" & x"bfc" => DATA <= x"00a0"; - when "01" & x"bfd" => DATA <= x"ff20"; - when "01" & x"bfe" => DATA <= x"f4ff"; - when "01" & x"bff" => DATA <= x"8673"; - when "01" & x"c00" => DATA <= x"ad34"; - when "01" & x"c01" => DATA <= x"fe48"; - when "01" & x"c02" => DATA <= x"a9c7"; - when "01" & x"c03" => DATA <= x"2006"; - when "01" & x"c04" => DATA <= x"0490"; - when "01" & x"c05" => DATA <= x"f9a0"; - when "01" & x"c06" => DATA <= x"00b1"; - when "01" & x"c07" => DATA <= x"70c9"; - when "01" & x"c08" => DATA <= x"0d08"; - when "01" & x"c09" => DATA <= x"a5f4"; - when "01" & x"c0a" => DATA <= x"8572"; - when "01" & x"c0b" => DATA <= x"a00d"; - when "01" & x"c0c" => DATA <= x"b170"; - when "01" & x"c0d" => DATA <= x"aaa0"; - when "01" & x"c0e" => DATA <= x"02b1"; - when "01" & x"c0f" => DATA <= x"7085"; - when "01" & x"c10" => DATA <= x"74c8"; - when "01" & x"c11" => DATA <= x"b170"; - when "01" & x"c12" => DATA <= x"8575"; - when "01" & x"c13" => DATA <= x"28f0"; - when "01" & x"c14" => DATA <= x"408a"; - when "01" & x"c15" => DATA <= x"4829"; - when "01" & x"c16" => DATA <= x"40d0"; - when "01" & x"c17" => DATA <= x"138a"; - when "01" & x"c18" => DATA <= x"2920"; - when "01" & x"c19" => DATA <= x"d004"; - when "01" & x"c1a" => DATA <= x"a200"; - when "01" & x"c1b" => DATA <= x"f002"; - when "01" & x"c1c" => DATA <= x"a201"; - when "01" & x"c1d" => DATA <= x"a96c"; - when "01" & x"c1e" => DATA <= x"20f4"; - when "01" & x"c1f" => DATA <= x"ff4c"; - when "01" & x"c20" => DATA <= x"7725"; - when "01" & x"c21" => DATA <= x"a984"; - when "01" & x"c22" => DATA <= x"20f4"; - when "01" & x"c23" => DATA <= x"ffc0"; - when "01" & x"c24" => DATA <= x"80d0"; - when "01" & x"c25" => DATA <= x"08a9"; - when "01" & x"c26" => DATA <= x"01c5"; - when "01" & x"c27" => DATA <= x"73d0"; - when "01" & x"c28" => DATA <= x"e7f0"; - when "01" & x"c29" => DATA <= x"e1a9"; - when "01" & x"c2a" => DATA <= x"02c5"; - when "01" & x"c2b" => DATA <= x"73d0"; - when "01" & x"c2c" => DATA <= x"dbf0"; - when "01" & x"c2d" => DATA <= x"dd68"; - when "01" & x"c2e" => DATA <= x"aa29"; - when "01" & x"c2f" => DATA <= x"10d0"; - when "01" & x"c30" => DATA <= x"088a"; - when "01" & x"c31" => DATA <= x"290f"; - when "01" & x"c32" => DATA <= x"85f4"; - when "01" & x"c33" => DATA <= x"8d30"; - when "01" & x"c34" => DATA <= x"fea0"; - when "01" & x"c35" => DATA <= x"0ab1"; - when "01" & x"c36" => DATA <= x"7085"; - when "01" & x"c37" => DATA <= x"77c8"; - when "01" & x"c38" => DATA <= x"b170"; - when "01" & x"c39" => DATA <= x"8576"; - when "01" & x"c3a" => DATA <= x"0577"; - when "01" & x"c3b" => DATA <= x"d002"; - when "01" & x"c3c" => DATA <= x"f06e"; - when "01" & x"c3d" => DATA <= x"a577"; - when "01" & x"c3e" => DATA <= x"f002"; - when "01" & x"c3f" => DATA <= x"e676"; - when "01" & x"c40" => DATA <= x"c8b1"; - when "01" & x"c41" => DATA <= x"7048"; - when "01" & x"c42" => DATA <= x"a577"; - when "01" & x"c43" => DATA <= x"f011"; - when "01" & x"c44" => DATA <= x"a576"; - when "01" & x"c45" => DATA <= x"c901"; - when "01" & x"c46" => DATA <= x"d00b"; - when "01" & x"c47" => DATA <= x"6848"; - when "01" & x"c48" => DATA <= x"c906"; - when "01" & x"c49" => DATA <= x"9005"; - when "01" & x"c4a" => DATA <= x"6838"; - when "01" & x"c4b" => DATA <= x"e906"; - when "01" & x"c4c" => DATA <= x"48a5"; - when "01" & x"c4d" => DATA <= x"7018"; - when "01" & x"c4e" => DATA <= x"6906"; - when "01" & x"c4f" => DATA <= x"aaa9"; - when "01" & x"c50" => DATA <= x"0065"; - when "01" & x"c51" => DATA <= x"71a8"; - when "01" & x"c52" => DATA <= x"6848"; - when "01" & x"c53" => DATA <= x"2006"; - when "01" & x"c54" => DATA <= x"04a6"; - when "01" & x"c55" => DATA <= x"7768"; - when "01" & x"c56" => DATA <= x"a000"; - when "01" & x"c57" => DATA <= x"c900"; - when "01" & x"c58" => DATA <= x"f01e"; - when "01" & x"c59" => DATA <= x"c901"; - when "01" & x"c5a" => DATA <= x"f035"; - when "01" & x"c5b" => DATA <= x"c902"; - when "01" & x"c5c" => DATA <= x"f049"; - when "01" & x"c5d" => DATA <= x"c903"; - when "01" & x"c5e" => DATA <= x"f070"; - when "01" & x"c5f" => DATA <= x"c906"; - when "01" & x"c60" => DATA <= x"f008"; - when "01" & x"c61" => DATA <= x"c907"; - when "01" & x"c62" => DATA <= x"f007"; - when "01" & x"c63" => DATA <= x"a900"; - when "01" & x"c64" => DATA <= x"f01e"; - when "01" & x"c65" => DATA <= x"4c75"; - when "01" & x"c66" => DATA <= x"264c"; - when "01" & x"c67" => DATA <= x"a326"; - when "01" & x"c68" => DATA <= x"20f4"; - when "01" & x"c69" => DATA <= x"26ad"; - when "01" & x"c6a" => DATA <= x"e5fe"; - when "01" & x"c6b" => DATA <= x"9174"; - when "01" & x"c6c" => DATA <= x"20f4"; - when "01" & x"c6d" => DATA <= x"26e6"; - when "01" & x"c6e" => DATA <= x"74d0"; - when "01" & x"c6f" => DATA <= x"02e6"; - when "01" & x"c70" => DATA <= x"75ca"; - when "01" & x"c71" => DATA <= x"d0ef"; - when "01" & x"c72" => DATA <= x"c676"; - when "01" & x"c73" => DATA <= x"d0eb"; - when "01" & x"c74" => DATA <= x"4cda"; - when "01" & x"c75" => DATA <= x"26b1"; - when "01" & x"c76" => DATA <= x"748d"; - when "01" & x"c77" => DATA <= x"e5fe"; - when "01" & x"c78" => DATA <= x"20f4"; - when "01" & x"c79" => DATA <= x"26e6"; - when "01" & x"c7a" => DATA <= x"74d0"; - when "01" & x"c7b" => DATA <= x"02e6"; - when "01" & x"c7c" => DATA <= x"75ca"; - when "01" & x"c7d" => DATA <= x"d0ef"; - when "01" & x"c7e" => DATA <= x"c676"; - when "01" & x"c7f" => DATA <= x"d0eb"; - when "01" & x"c80" => DATA <= x"4cda"; - when "01" & x"c81" => DATA <= x"2620"; - when "01" & x"c82" => DATA <= x"f426"; - when "01" & x"c83" => DATA <= x"ade5"; - when "01" & x"c84" => DATA <= x"fe91"; - when "01" & x"c85" => DATA <= x"74e6"; - when "01" & x"c86" => DATA <= x"74d0"; - when "01" & x"c87" => DATA <= x"02e6"; - when "01" & x"c88" => DATA <= x"75ea"; - when "01" & x"c89" => DATA <= x"eaad"; - when "01" & x"c8a" => DATA <= x"e5fe"; - when "01" & x"c8b" => DATA <= x"9174"; - when "01" & x"c8c" => DATA <= x"e674"; - when "01" & x"c8d" => DATA <= x"d002"; - when "01" & x"c8e" => DATA <= x"e675"; - when "01" & x"c8f" => DATA <= x"20f3"; - when "01" & x"c90" => DATA <= x"26ea"; - when "01" & x"c91" => DATA <= x"eaca"; - when "01" & x"c92" => DATA <= x"cad0"; - when "01" & x"c93" => DATA <= x"dfc6"; - when "01" & x"c94" => DATA <= x"76d0"; - when "01" & x"c95" => DATA <= x"db4c"; - when "01" & x"c96" => DATA <= x"da26"; - when "01" & x"c97" => DATA <= x"b174"; - when "01" & x"c98" => DATA <= x"8de5"; - when "01" & x"c99" => DATA <= x"fee6"; - when "01" & x"c9a" => DATA <= x"74f0"; - when "01" & x"c9b" => DATA <= x"03ea"; - when "01" & x"c9c" => DATA <= x"d002"; - when "01" & x"c9d" => DATA <= x"e675"; - when "01" & x"c9e" => DATA <= x"a573"; - when "01" & x"c9f" => DATA <= x"b174"; - when "01" & x"ca0" => DATA <= x"8de5"; - when "01" & x"ca1" => DATA <= x"fee6"; - when "01" & x"ca2" => DATA <= x"74f0"; - when "01" & x"ca3" => DATA <= x"03ea"; - when "01" & x"ca4" => DATA <= x"d002"; - when "01" & x"ca5" => DATA <= x"e675"; - when "01" & x"ca6" => DATA <= x"20f3"; - when "01" & x"ca7" => DATA <= x"26ca"; - when "01" & x"ca8" => DATA <= x"cad0"; - when "01" & x"ca9" => DATA <= x"dbc6"; - when "01" & x"caa" => DATA <= x"76d0"; - when "01" & x"cab" => DATA <= x"d7f0"; - when "01" & x"cac" => DATA <= x"6520"; - when "01" & x"cad" => DATA <= x"f426"; - when "01" & x"cae" => DATA <= x"ade5"; - when "01" & x"caf" => DATA <= x"fe91"; - when "01" & x"cb0" => DATA <= x"74ea"; - when "01" & x"cb1" => DATA <= x"eaea"; - when "01" & x"cb2" => DATA <= x"c8d0"; - when "01" & x"cb3" => DATA <= x"f5e0"; - when "01" & x"cb4" => DATA <= x"00d0"; - when "01" & x"cb5" => DATA <= x"0cc6"; - when "01" & x"cb6" => DATA <= x"76f0"; - when "01" & x"cb7" => DATA <= x"4f20"; - when "01" & x"cb8" => DATA <= x"ce26"; - when "01" & x"cb9" => DATA <= x"a906"; - when "01" & x"cba" => DATA <= x"4c9f"; - when "01" & x"cbb" => DATA <= x"25c6"; - when "01" & x"cbc" => DATA <= x"76a5"; - when "01" & x"cbd" => DATA <= x"76c9"; - when "01" & x"cbe" => DATA <= x"01d0"; - when "01" & x"cbf" => DATA <= x"f020"; - when "01" & x"cc0" => DATA <= x"ce26"; - when "01" & x"cc1" => DATA <= x"a900"; - when "01" & x"cc2" => DATA <= x"4c9f"; - when "01" & x"cc3" => DATA <= x"25b1"; - when "01" & x"cc4" => DATA <= x"748d"; - when "01" & x"cc5" => DATA <= x"e5fe"; - when "01" & x"cc6" => DATA <= x"eaea"; - when "01" & x"cc7" => DATA <= x"eac8"; - when "01" & x"cc8" => DATA <= x"d0f5"; - when "01" & x"cc9" => DATA <= x"e000"; - when "01" & x"cca" => DATA <= x"d00c"; - when "01" & x"ccb" => DATA <= x"c676"; - when "01" & x"ccc" => DATA <= x"f024"; - when "01" & x"ccd" => DATA <= x"20ce"; - when "01" & x"cce" => DATA <= x"26a9"; - when "01" & x"ccf" => DATA <= x"074c"; - when "01" & x"cd0" => DATA <= x"9f25"; - when "01" & x"cd1" => DATA <= x"c676"; - when "01" & x"cd2" => DATA <= x"a576"; - when "01" & x"cd3" => DATA <= x"c901"; - when "01" & x"cd4" => DATA <= x"d0f0"; - when "01" & x"cd5" => DATA <= x"20ce"; - when "01" & x"cd6" => DATA <= x"26a9"; - when "01" & x"cd7" => DATA <= x"014c"; - when "01" & x"cd8" => DATA <= x"9f25"; - when "01" & x"cd9" => DATA <= x"e675"; - when "01" & x"cda" => DATA <= x"a007"; - when "01" & x"cdb" => DATA <= x"b170"; - when "01" & x"cdc" => DATA <= x"1869"; - when "01" & x"cdd" => DATA <= x"0191"; - when "01" & x"cde" => DATA <= x"7060"; - when "01" & x"cdf" => DATA <= x"a987"; - when "01" & x"ce0" => DATA <= x"2006"; - when "01" & x"ce1" => DATA <= x"04a5"; - when "01" & x"ce2" => DATA <= x"72c5"; - when "01" & x"ce3" => DATA <= x"f4f0"; - when "01" & x"ce4" => DATA <= x"0585"; - when "01" & x"ce5" => DATA <= x"f48d"; - when "01" & x"ce6" => DATA <= x"30fe"; - when "01" & x"ce7" => DATA <= x"688d"; - when "01" & x"ce8" => DATA <= x"34fe"; - when "01" & x"ce9" => DATA <= x"a670"; - when "01" & x"cea" => DATA <= x"a471"; - when "01" & x"ceb" => DATA <= x"6860"; - when "01" & x"cec" => DATA <= x"20f3"; - when "01" & x"ced" => DATA <= x"2620"; - when "01" & x"cee" => DATA <= x"f326"; - when "01" & x"cef" => DATA <= x"60ff"; - when "01" & x"cf0" => DATA <= x"003c"; - when "01" & x"cf1" => DATA <= x"ffff"; - when "01" & x"cf2" => DATA <= x"4f52"; - when "01" & x"cf3" => DATA <= x"4920"; - when "01" & x"cf4" => DATA <= x"2000"; - when "01" & x"cf5" => DATA <= x"003f"; - when "01" & x"cf6" => DATA <= x"39e0"; - when "01" & x"cf7" => DATA <= x"007c"; - when "01" & x"cf8" => DATA <= x"ffff"; - when "01" & x"cf9" => DATA <= x"4f52"; - when "01" & x"cfa" => DATA <= x"4920"; - when "01" & x"cfb" => DATA <= x"2000"; - when "01" & x"cfc" => DATA <= x"003f"; - when "01" & x"cfd" => DATA <= x"39e0"; - when "01" & x"cfe" => DATA <= x"023c"; - when "01" & x"cff" => DATA <= x"ffff"; - when "01" & x"d00" => DATA <= x"414e"; - when "01" & x"d01" => DATA <= x"4449"; - when "01" & x"d02" => DATA <= x"2000"; - when "01" & x"d03" => DATA <= x"003f"; - when "01" & x"d04" => DATA <= x"39e0"; - when "01" & x"d05" => DATA <= x"027c"; - when "01" & x"d06" => DATA <= x"ffff"; - when "01" & x"d07" => DATA <= x"414e"; - when "01" & x"d08" => DATA <= x"4449"; - when "01" & x"d09" => DATA <= x"2000"; - when "01" & x"d0a" => DATA <= x"003f"; - when "01" & x"d0b" => DATA <= x"39e0"; - when "01" & x"d0c" => DATA <= x"0a3c"; - when "01" & x"d0d" => DATA <= x"ffff"; - when "01" & x"d0e" => DATA <= x"454f"; - when "01" & x"d0f" => DATA <= x"5249"; - when "01" & x"d10" => DATA <= x"2000"; - when "01" & x"d11" => DATA <= x"003f"; - when "01" & x"d12" => DATA <= x"39e0"; - when "01" & x"d13" => DATA <= x"0a7c"; - when "01" & x"d14" => DATA <= x"ffff"; - when "01" & x"d15" => DATA <= x"454f"; - when "01" & x"d16" => DATA <= x"5249"; - when "01" & x"d17" => DATA <= x"2000"; - when "01" & x"d18" => DATA <= x"003f"; - when "01" & x"d19" => DATA <= x"39e0"; - when "01" & x"d1a" => DATA <= x"0800"; - when "01" & x"d1b" => DATA <= x"ffc0"; - when "01" & x"d1c" => DATA <= x"4254"; - when "01" & x"d1d" => DATA <= x"5354"; - when "01" & x"d1e" => DATA <= x"2000"; - when "01" & x"d1f" => DATA <= x"003f"; - when "01" & x"d20" => DATA <= x"39e0"; - when "01" & x"d21" => DATA <= x"0840"; - when "01" & x"d22" => DATA <= x"ffc0"; - when "01" & x"d23" => DATA <= x"4243"; - when "01" & x"d24" => DATA <= x"4847"; - when "01" & x"d25" => DATA <= x"2000"; - when "01" & x"d26" => DATA <= x"003f"; - when "01" & x"d27" => DATA <= x"39e0"; - when "01" & x"d28" => DATA <= x"0880"; - when "01" & x"d29" => DATA <= x"ffc0"; - when "01" & x"d2a" => DATA <= x"4243"; - when "01" & x"d2b" => DATA <= x"4c52"; - when "01" & x"d2c" => DATA <= x"2000"; - when "01" & x"d2d" => DATA <= x"003f"; - when "01" & x"d2e" => DATA <= x"39e0"; - when "01" & x"d2f" => DATA <= x"08c0"; - when "01" & x"d30" => DATA <= x"ffc0"; - when "01" & x"d31" => DATA <= x"4253"; - when "01" & x"d32" => DATA <= x"4554"; - when "01" & x"d33" => DATA <= x"2000"; - when "01" & x"d34" => DATA <= x"003f"; - when "01" & x"d35" => DATA <= x"39e0"; - when "01" & x"d36" => DATA <= x"0000"; - when "01" & x"d37" => DATA <= x"ff00"; - when "01" & x"d38" => DATA <= x"4f52"; - when "01" & x"d39" => DATA <= x"4920"; - when "01" & x"d3a" => DATA <= x"2000"; - when "01" & x"d3b" => DATA <= x"003f"; - when "01" & x"d3c" => DATA <= x"39e0"; - when "01" & x"d3d" => DATA <= x"0200"; - when "01" & x"d3e" => DATA <= x"ff00"; - when "01" & x"d3f" => DATA <= x"414e"; - when "01" & x"d40" => DATA <= x"4449"; - when "01" & x"d41" => DATA <= x"2000"; - when "01" & x"d42" => DATA <= x"003f"; - when "01" & x"d43" => DATA <= x"39e0"; - when "01" & x"d44" => DATA <= x"0400"; - when "01" & x"d45" => DATA <= x"ff00"; - when "01" & x"d46" => DATA <= x"5355"; - when "01" & x"d47" => DATA <= x"4249"; - when "01" & x"d48" => DATA <= x"2000"; - when "01" & x"d49" => DATA <= x"003f"; - when "01" & x"d4a" => DATA <= x"39e0"; - when "01" & x"d4b" => DATA <= x"0600"; - when "01" & x"d4c" => DATA <= x"ff00"; - when "01" & x"d4d" => DATA <= x"4144"; - when "01" & x"d4e" => DATA <= x"4449"; - when "01" & x"d4f" => DATA <= x"2000"; - when "01" & x"d50" => DATA <= x"003f"; - when "01" & x"d51" => DATA <= x"39e0"; - when "01" & x"d52" => DATA <= x"0a00"; - when "01" & x"d53" => DATA <= x"ff00"; - when "01" & x"d54" => DATA <= x"454f"; - when "01" & x"d55" => DATA <= x"5249"; - when "01" & x"d56" => DATA <= x"2000"; - when "01" & x"d57" => DATA <= x"003f"; - when "01" & x"d58" => DATA <= x"39e0"; - when "01" & x"d59" => DATA <= x"0c00"; - when "01" & x"d5a" => DATA <= x"ff00"; - when "01" & x"d5b" => DATA <= x"434d"; - when "01" & x"d5c" => DATA <= x"5049"; - when "01" & x"d5d" => DATA <= x"2000"; - when "01" & x"d5e" => DATA <= x"003f"; - when "01" & x"d5f" => DATA <= x"39e0"; - when "01" & x"d60" => DATA <= x"0108"; - when "01" & x"d61" => DATA <= x"f138"; - when "01" & x"d62" => DATA <= x"4d4f"; - when "01" & x"d63" => DATA <= x"5645"; - when "01" & x"d64" => DATA <= x"5000"; - when "01" & x"d65" => DATA <= x"003f"; - when "01" & x"d66" => DATA <= x"39e0"; - when "01" & x"d67" => DATA <= x"0100"; - when "01" & x"d68" => DATA <= x"f1c0"; - when "01" & x"d69" => DATA <= x"4254"; - when "01" & x"d6a" => DATA <= x"5354"; - when "01" & x"d6b" => DATA <= x"2000"; - when "01" & x"d6c" => DATA <= x"003f"; - when "01" & x"d6d" => DATA <= x"39e0"; - when "01" & x"d6e" => DATA <= x"0140"; - when "01" & x"d6f" => DATA <= x"f1c0"; - when "01" & x"d70" => DATA <= x"4243"; - when "01" & x"d71" => DATA <= x"4847"; - when "01" & x"d72" => DATA <= x"2000"; - when "01" & x"d73" => DATA <= x"003f"; - when "01" & x"d74" => DATA <= x"39e0"; - when "01" & x"d75" => DATA <= x"0180"; - when "01" & x"d76" => DATA <= x"f1c0"; - when "01" & x"d77" => DATA <= x"4243"; - when "01" & x"d78" => DATA <= x"4c52"; - when "01" & x"d79" => DATA <= x"2000"; - when "01" & x"d7a" => DATA <= x"003f"; - when "01" & x"d7b" => DATA <= x"39e0"; - when "01" & x"d7c" => DATA <= x"01c0"; - when "01" & x"d7d" => DATA <= x"f1c0"; - when "01" & x"d7e" => DATA <= x"4253"; - when "01" & x"d7f" => DATA <= x"4554"; - when "01" & x"d80" => DATA <= x"2000"; - when "01" & x"d81" => DATA <= x"003f"; - when "01" & x"d82" => DATA <= x"39e0"; - when "01" & x"d83" => DATA <= x"0040"; - when "01" & x"d84" => DATA <= x"c1c0"; - when "01" & x"d85" => DATA <= x"4d4f"; - when "01" & x"d86" => DATA <= x"5645"; - when "01" & x"d87" => DATA <= x"4100"; - when "01" & x"d88" => DATA <= x"003f"; - when "01" & x"d89" => DATA <= x"39e0"; - when "01" & x"d8a" => DATA <= x"0000"; - when "01" & x"d8b" => DATA <= x"c000"; - when "01" & x"d8c" => DATA <= x"4d4f"; - when "01" & x"d8d" => DATA <= x"5645"; - when "01" & x"d8e" => DATA <= x"2000"; - when "01" & x"d8f" => DATA <= x"003f"; - when "01" & x"d90" => DATA <= x"39e0"; - when "01" & x"d91" => DATA <= x"4afc"; - when "01" & x"d92" => DATA <= x"ffff"; - when "01" & x"d93" => DATA <= x"494c"; - when "01" & x"d94" => DATA <= x"4c45"; - when "01" & x"d95" => DATA <= x"4700"; - when "01" & x"d96" => DATA <= x"003f"; - when "01" & x"d97" => DATA <= x"39e0"; - when "01" & x"d98" => DATA <= x"4e70"; - when "01" & x"d99" => DATA <= x"ffff"; - when "01" & x"d9a" => DATA <= x"5245"; - when "01" & x"d9b" => DATA <= x"5345"; - when "01" & x"d9c" => DATA <= x"5400"; - when "01" & x"d9d" => DATA <= x"003f"; - when "01" & x"d9e" => DATA <= x"39e0"; - when "01" & x"d9f" => DATA <= x"4e71"; - when "01" & x"da0" => DATA <= x"ffff"; - when "01" & x"da1" => DATA <= x"4e4f"; - when "01" & x"da2" => DATA <= x"5020"; - when "01" & x"da3" => DATA <= x"2000"; - when "01" & x"da4" => DATA <= x"003f"; - when "01" & x"da5" => DATA <= x"39e0"; - when "01" & x"da6" => DATA <= x"4e72"; - when "01" & x"da7" => DATA <= x"ffff"; - when "01" & x"da8" => DATA <= x"5354"; - when "01" & x"da9" => DATA <= x"4f50"; - when "01" & x"daa" => DATA <= x"2000"; - when "01" & x"dab" => DATA <= x"003f"; - when "01" & x"dac" => DATA <= x"39e0"; - when "01" & x"dad" => DATA <= x"4e73"; - when "01" & x"dae" => DATA <= x"ffff"; - when "01" & x"daf" => DATA <= x"5254"; - when "01" & x"db0" => DATA <= x"4520"; - when "01" & x"db1" => DATA <= x"2000"; - when "01" & x"db2" => DATA <= x"003f"; - when "01" & x"db3" => DATA <= x"39e0"; - when "01" & x"db4" => DATA <= x"4e75"; - when "01" & x"db5" => DATA <= x"ffff"; - when "01" & x"db6" => DATA <= x"5254"; - when "01" & x"db7" => DATA <= x"5320"; - when "01" & x"db8" => DATA <= x"2000"; - when "01" & x"db9" => DATA <= x"003f"; - when "01" & x"dba" => DATA <= x"39e0"; - when "01" & x"dbb" => DATA <= x"4e76"; - when "01" & x"dbc" => DATA <= x"ffff"; - when "01" & x"dbd" => DATA <= x"5452"; - when "01" & x"dbe" => DATA <= x"4150"; - when "01" & x"dbf" => DATA <= x"5600"; - when "01" & x"dc0" => DATA <= x"003f"; - when "01" & x"dc1" => DATA <= x"39e0"; - when "01" & x"dc2" => DATA <= x"4e77"; - when "01" & x"dc3" => DATA <= x"ffff"; - when "01" & x"dc4" => DATA <= x"5254"; - when "01" & x"dc5" => DATA <= x"5220"; - when "01" & x"dc6" => DATA <= x"2000"; - when "01" & x"dc7" => DATA <= x"003f"; - when "01" & x"dc8" => DATA <= x"39e0"; - when "01" & x"dc9" => DATA <= x"4840"; - when "01" & x"dca" => DATA <= x"fff8"; - when "01" & x"dcb" => DATA <= x"5357"; - when "01" & x"dcc" => DATA <= x"4150"; - when "01" & x"dcd" => DATA <= x"2000"; - when "01" & x"dce" => DATA <= x"003f"; - when "01" & x"dcf" => DATA <= x"39e0"; - when "01" & x"dd0" => DATA <= x"4e50"; - when "01" & x"dd1" => DATA <= x"fff8"; - when "01" & x"dd2" => DATA <= x"4c49"; - when "01" & x"dd3" => DATA <= x"4e4b"; - when "01" & x"dd4" => DATA <= x"2000"; - when "01" & x"dd5" => DATA <= x"003f"; - when "01" & x"dd6" => DATA <= x"39e0"; - when "01" & x"dd7" => DATA <= x"4e58"; - when "01" & x"dd8" => DATA <= x"fff8"; - when "01" & x"dd9" => DATA <= x"554e"; - when "01" & x"dda" => DATA <= x"4c4b"; - when "01" & x"ddb" => DATA <= x"2000"; - when "01" & x"ddc" => DATA <= x"003f"; - when "01" & x"ddd" => DATA <= x"39e0"; - when "01" & x"dde" => DATA <= x"4e60"; - when "01" & x"ddf" => DATA <= x"fff0"; - when "01" & x"de0" => DATA <= x"4d4f"; - when "01" & x"de1" => DATA <= x"5645"; - when "01" & x"de2" => DATA <= x"2000"; - when "01" & x"de3" => DATA <= x"003f"; - when "01" & x"de4" => DATA <= x"39e0"; - when "01" & x"de5" => DATA <= x"4e40"; - when "01" & x"de6" => DATA <= x"fff0"; - when "01" & x"de7" => DATA <= x"5452"; - when "01" & x"de8" => DATA <= x"4150"; - when "01" & x"de9" => DATA <= x"2000"; - when "01" & x"dea" => DATA <= x"003f"; - when "01" & x"deb" => DATA <= x"39e0"; - when "01" & x"dec" => DATA <= x"4e80"; - when "01" & x"ded" => DATA <= x"ffc0"; - when "01" & x"dee" => DATA <= x"4a53"; - when "01" & x"def" => DATA <= x"5220"; - when "01" & x"df0" => DATA <= x"2000"; - when "01" & x"df1" => DATA <= x"003f"; - when "01" & x"df2" => DATA <= x"39e0"; - when "01" & x"df3" => DATA <= x"4ec0"; - when "01" & x"df4" => DATA <= x"ffc0"; - when "01" & x"df5" => DATA <= x"4a4d"; - when "01" & x"df6" => DATA <= x"5020"; - when "01" & x"df7" => DATA <= x"2000"; - when "01" & x"df8" => DATA <= x"003f"; - when "01" & x"df9" => DATA <= x"39e0"; - when "01" & x"dfa" => DATA <= x"4880"; - when "01" & x"dfb" => DATA <= x"feb8"; - when "01" & x"dfc" => DATA <= x"4558"; - when "01" & x"dfd" => DATA <= x"5420"; - when "01" & x"dfe" => DATA <= x"2000"; - when "01" & x"dff" => DATA <= x"003f"; - when "01" & x"e00" => DATA <= x"39e0"; - when "01" & x"e01" => DATA <= x"40c0"; - when "01" & x"e02" => DATA <= x"ffc0"; - when "01" & x"e03" => DATA <= x"4d4f"; - when "01" & x"e04" => DATA <= x"5645"; - when "01" & x"e05" => DATA <= x"2000"; - when "01" & x"e06" => DATA <= x"003f"; - when "01" & x"e07" => DATA <= x"39e0"; - when "01" & x"e08" => DATA <= x"44c0"; - when "01" & x"e09" => DATA <= x"ffc0"; - when "01" & x"e0a" => DATA <= x"4d4f"; - when "01" & x"e0b" => DATA <= x"5645"; - when "01" & x"e0c" => DATA <= x"2000"; - when "01" & x"e0d" => DATA <= x"003f"; - when "01" & x"e0e" => DATA <= x"39e0"; - when "01" & x"e0f" => DATA <= x"46c0"; - when "01" & x"e10" => DATA <= x"ffc0"; - when "01" & x"e11" => DATA <= x"4d4f"; - when "01" & x"e12" => DATA <= x"5645"; - when "01" & x"e13" => DATA <= x"2000"; - when "01" & x"e14" => DATA <= x"003f"; - when "01" & x"e15" => DATA <= x"39e0"; - when "01" & x"e16" => DATA <= x"4800"; - when "01" & x"e17" => DATA <= x"ffc0"; - when "01" & x"e18" => DATA <= x"4e42"; - when "01" & x"e19" => DATA <= x"4344"; - when "01" & x"e1a" => DATA <= x"2000"; - when "01" & x"e1b" => DATA <= x"003f"; - when "01" & x"e1c" => DATA <= x"39e0"; - when "01" & x"e1d" => DATA <= x"4840"; - when "01" & x"e1e" => DATA <= x"ffc0"; - when "01" & x"e1f" => DATA <= x"5045"; - when "01" & x"e20" => DATA <= x"4120"; - when "01" & x"e21" => DATA <= x"2000"; - when "01" & x"e22" => DATA <= x"003f"; - when "01" & x"e23" => DATA <= x"39e0"; - when "01" & x"e24" => DATA <= x"4ac0"; - when "01" & x"e25" => DATA <= x"ffc0"; - when "01" & x"e26" => DATA <= x"5441"; - when "01" & x"e27" => DATA <= x"5320"; - when "01" & x"e28" => DATA <= x"2000"; - when "01" & x"e29" => DATA <= x"003f"; - when "01" & x"e2a" => DATA <= x"39e0"; - when "01" & x"e2b" => DATA <= x"4000"; - when "01" & x"e2c" => DATA <= x"ff00"; - when "01" & x"e2d" => DATA <= x"4e45"; - when "01" & x"e2e" => DATA <= x"4758"; - when "01" & x"e2f" => DATA <= x"2000"; - when "01" & x"e30" => DATA <= x"003f"; - when "01" & x"e31" => DATA <= x"39e0"; - when "01" & x"e32" => DATA <= x"4200"; - when "01" & x"e33" => DATA <= x"ff00"; - when "01" & x"e34" => DATA <= x"434c"; - when "01" & x"e35" => DATA <= x"5220"; - when "01" & x"e36" => DATA <= x"2000"; - when "01" & x"e37" => DATA <= x"003f"; - when "01" & x"e38" => DATA <= x"39e0"; - when "01" & x"e39" => DATA <= x"4400"; - when "01" & x"e3a" => DATA <= x"ff00"; - when "01" & x"e3b" => DATA <= x"4e45"; - when "01" & x"e3c" => DATA <= x"4720"; - when "01" & x"e3d" => DATA <= x"2000"; - when "01" & x"e3e" => DATA <= x"003f"; - when "01" & x"e3f" => DATA <= x"39e0"; - when "01" & x"e40" => DATA <= x"4600"; - when "01" & x"e41" => DATA <= x"ff00"; - when "01" & x"e42" => DATA <= x"4e4f"; - when "01" & x"e43" => DATA <= x"5420"; - when "01" & x"e44" => DATA <= x"2000"; - when "01" & x"e45" => DATA <= x"003f"; - when "01" & x"e46" => DATA <= x"39e0"; - when "01" & x"e47" => DATA <= x"4a00"; - when "01" & x"e48" => DATA <= x"ff00"; - when "01" & x"e49" => DATA <= x"5453"; - when "01" & x"e4a" => DATA <= x"5420"; - when "01" & x"e4b" => DATA <= x"2000"; - when "01" & x"e4c" => DATA <= x"003f"; - when "01" & x"e4d" => DATA <= x"39e0"; - when "01" & x"e4e" => DATA <= x"4880"; - when "01" & x"e4f" => DATA <= x"fb80"; - when "01" & x"e50" => DATA <= x"4d4f"; - when "01" & x"e51" => DATA <= x"5645"; - when "01" & x"e52" => DATA <= x"4d00"; - when "01" & x"e53" => DATA <= x"003f"; - when "01" & x"e54" => DATA <= x"39e0"; - when "01" & x"e55" => DATA <= x"41c0"; - when "01" & x"e56" => DATA <= x"f1c0"; - when "01" & x"e57" => DATA <= x"4c45"; - when "01" & x"e58" => DATA <= x"4120"; - when "01" & x"e59" => DATA <= x"2000"; - when "01" & x"e5a" => DATA <= x"003f"; - when "01" & x"e5b" => DATA <= x"39e0"; - when "01" & x"e5c" => DATA <= x"4000"; - when "01" & x"e5d" => DATA <= x"f040"; - when "01" & x"e5e" => DATA <= x"4348"; - when "01" & x"e5f" => DATA <= x"4b20"; - when "01" & x"e60" => DATA <= x"2000"; - when "01" & x"e61" => DATA <= x"003f"; - when "01" & x"e62" => DATA <= x"39e0"; - when "01" & x"e63" => DATA <= x"50c8"; - when "01" & x"e64" => DATA <= x"f0f8"; - when "01" & x"e65" => DATA <= x"4442"; - when "01" & x"e66" => DATA <= x"2020"; - when "01" & x"e67" => DATA <= x"2000"; - when "01" & x"e68" => DATA <= x"003f"; - when "01" & x"e69" => DATA <= x"39e0"; - when "01" & x"e6a" => DATA <= x"50c0"; - when "01" & x"e6b" => DATA <= x"f0c0"; - when "01" & x"e6c" => DATA <= x"5320"; - when "01" & x"e6d" => DATA <= x"2020"; - when "01" & x"e6e" => DATA <= x"2000"; - when "01" & x"e6f" => DATA <= x"003f"; - when "01" & x"e70" => DATA <= x"39e0"; - when "01" & x"e71" => DATA <= x"5000"; - when "01" & x"e72" => DATA <= x"f100"; - when "01" & x"e73" => DATA <= x"4144"; - when "01" & x"e74" => DATA <= x"4451"; - when "01" & x"e75" => DATA <= x"2000"; - when "01" & x"e76" => DATA <= x"003f"; - when "01" & x"e77" => DATA <= x"39e0"; - when "01" & x"e78" => DATA <= x"5100"; - when "01" & x"e79" => DATA <= x"f100"; - when "01" & x"e7a" => DATA <= x"5355"; - when "01" & x"e7b" => DATA <= x"4251"; - when "01" & x"e7c" => DATA <= x"2000"; - when "01" & x"e7d" => DATA <= x"003f"; - when "01" & x"e7e" => DATA <= x"39e0"; - when "01" & x"e7f" => DATA <= x"6000"; - when "01" & x"e80" => DATA <= x"ff00"; - when "01" & x"e81" => DATA <= x"4252"; - when "01" & x"e82" => DATA <= x"4120"; - when "01" & x"e83" => DATA <= x"2000"; - when "01" & x"e84" => DATA <= x"003f"; - when "01" & x"e85" => DATA <= x"39e0"; - when "01" & x"e86" => DATA <= x"6100"; - when "01" & x"e87" => DATA <= x"ff00"; - when "01" & x"e88" => DATA <= x"4253"; - when "01" & x"e89" => DATA <= x"5220"; - when "01" & x"e8a" => DATA <= x"2000"; - when "01" & x"e8b" => DATA <= x"003f"; - when "01" & x"e8c" => DATA <= x"39e0"; - when "01" & x"e8d" => DATA <= x"6000"; - when "01" & x"e8e" => DATA <= x"f000"; - when "01" & x"e8f" => DATA <= x"4200"; - when "01" & x"e90" => DATA <= x"0000"; - when "01" & x"e91" => DATA <= x"0000"; - when "01" & x"e92" => DATA <= x"003f"; - when "01" & x"e93" => DATA <= x"39e0"; - when "01" & x"e94" => DATA <= x"7000"; - when "01" & x"e95" => DATA <= x"f100"; - when "01" & x"e96" => DATA <= x"4d4f"; - when "01" & x"e97" => DATA <= x"5645"; - when "01" & x"e98" => DATA <= x"5100"; - when "01" & x"e99" => DATA <= x"003f"; - when "01" & x"e9a" => DATA <= x"39e0"; - when "01" & x"e9b" => DATA <= x"8100"; - when "01" & x"e9c" => DATA <= x"f1f0"; - when "01" & x"e9d" => DATA <= x"5342"; - when "01" & x"e9e" => DATA <= x"4344"; - when "01" & x"e9f" => DATA <= x"2000"; - when "01" & x"ea0" => DATA <= x"003f"; - when "01" & x"ea1" => DATA <= x"39e0"; - when "01" & x"ea2" => DATA <= x"80c0"; - when "01" & x"ea3" => DATA <= x"f1c0"; - when "01" & x"ea4" => DATA <= x"4449"; - when "01" & x"ea5" => DATA <= x"5655"; - when "01" & x"ea6" => DATA <= x"2000"; - when "01" & x"ea7" => DATA <= x"003f"; - when "01" & x"ea8" => DATA <= x"39e0"; - when "01" & x"ea9" => DATA <= x"81c0"; - when "01" & x"eaa" => DATA <= x"f1c0"; - when "01" & x"eab" => DATA <= x"4449"; - when "01" & x"eac" => DATA <= x"5653"; - when "01" & x"ead" => DATA <= x"2000"; - when "01" & x"eae" => DATA <= x"003f"; - when "01" & x"eaf" => DATA <= x"39e0"; - when "01" & x"eb0" => DATA <= x"8000"; - when "01" & x"eb1" => DATA <= x"f000"; - when "01" & x"eb2" => DATA <= x"4f52"; - when "01" & x"eb3" => DATA <= x"2020"; - when "01" & x"eb4" => DATA <= x"2000"; - when "01" & x"eb5" => DATA <= x"003f"; - when "01" & x"eb6" => DATA <= x"39e0"; - when "01" & x"eb7" => DATA <= x"9100"; - when "01" & x"eb8" => DATA <= x"f130"; - when "01" & x"eb9" => DATA <= x"5355"; - when "01" & x"eba" => DATA <= x"4258"; - when "01" & x"ebb" => DATA <= x"2000"; - when "01" & x"ebc" => DATA <= x"003f"; - when "01" & x"ebd" => DATA <= x"39e0"; - when "01" & x"ebe" => DATA <= x"90c0"; - when "01" & x"ebf" => DATA <= x"f0c0"; - when "01" & x"ec0" => DATA <= x"5355"; - when "01" & x"ec1" => DATA <= x"4241"; - when "01" & x"ec2" => DATA <= x"2000"; - when "01" & x"ec3" => DATA <= x"003f"; - when "01" & x"ec4" => DATA <= x"39e0"; - when "01" & x"ec5" => DATA <= x"9000"; - when "01" & x"ec6" => DATA <= x"f000"; - when "01" & x"ec7" => DATA <= x"5355"; - when "01" & x"ec8" => DATA <= x"4220"; - when "01" & x"ec9" => DATA <= x"2000"; - when "01" & x"eca" => DATA <= x"003f"; - when "01" & x"ecb" => DATA <= x"39e0"; - when "01" & x"ecc" => DATA <= x"b108"; - when "01" & x"ecd" => DATA <= x"f138"; - when "01" & x"ece" => DATA <= x"434d"; - when "01" & x"ecf" => DATA <= x"504d"; - when "01" & x"ed0" => DATA <= x"2000"; - when "01" & x"ed1" => DATA <= x"003f"; - when "01" & x"ed2" => DATA <= x"39e0"; - when "01" & x"ed3" => DATA <= x"b0c0"; - when "01" & x"ed4" => DATA <= x"f0c0"; - when "01" & x"ed5" => DATA <= x"434d"; - when "01" & x"ed6" => DATA <= x"5041"; - when "01" & x"ed7" => DATA <= x"2000"; - when "01" & x"ed8" => DATA <= x"003f"; - when "01" & x"ed9" => DATA <= x"39e0"; - when "01" & x"eda" => DATA <= x"b100"; - when "01" & x"edb" => DATA <= x"f100"; - when "01" & x"edc" => DATA <= x"454f"; - when "01" & x"edd" => DATA <= x"5220"; - when "01" & x"ede" => DATA <= x"2000"; - when "01" & x"edf" => DATA <= x"003f"; - when "01" & x"ee0" => DATA <= x"39e0"; - when "01" & x"ee1" => DATA <= x"b000"; - when "01" & x"ee2" => DATA <= x"f000"; - when "01" & x"ee3" => DATA <= x"434d"; - when "01" & x"ee4" => DATA <= x"5020"; - when "01" & x"ee5" => DATA <= x"2000"; - when "01" & x"ee6" => DATA <= x"003f"; - when "01" & x"ee7" => DATA <= x"39e0"; - when "01" & x"ee8" => DATA <= x"c140"; - when "01" & x"ee9" => DATA <= x"f1f8"; - when "01" & x"eea" => DATA <= x"4558"; - when "01" & x"eeb" => DATA <= x"4720"; - when "01" & x"eec" => DATA <= x"2000"; - when "01" & x"eed" => DATA <= x"003f"; - when "01" & x"eee" => DATA <= x"39e0"; - when "01" & x"eef" => DATA <= x"c148"; - when "01" & x"ef0" => DATA <= x"f1f8"; - when "01" & x"ef1" => DATA <= x"4558"; - when "01" & x"ef2" => DATA <= x"4720"; - when "01" & x"ef3" => DATA <= x"2000"; - when "01" & x"ef4" => DATA <= x"003f"; - when "01" & x"ef5" => DATA <= x"39e0"; - when "01" & x"ef6" => DATA <= x"c188"; - when "01" & x"ef7" => DATA <= x"f1f8"; - when "01" & x"ef8" => DATA <= x"4558"; - when "01" & x"ef9" => DATA <= x"4720"; - when "01" & x"efa" => DATA <= x"2000"; - when "01" & x"efb" => DATA <= x"003f"; - when "01" & x"efc" => DATA <= x"39e0"; - when "01" & x"efd" => DATA <= x"c100"; - when "01" & x"efe" => DATA <= x"f1f0"; - when "01" & x"eff" => DATA <= x"4142"; - when "01" & x"f00" => DATA <= x"4344"; - when "01" & x"f01" => DATA <= x"2000"; - when "01" & x"f02" => DATA <= x"003f"; - when "01" & x"f03" => DATA <= x"39e0"; - when "01" & x"f04" => DATA <= x"c1c0"; - when "01" & x"f05" => DATA <= x"f1c0"; - when "01" & x"f06" => DATA <= x"4d55"; - when "01" & x"f07" => DATA <= x"4c53"; - when "01" & x"f08" => DATA <= x"2000"; - when "01" & x"f09" => DATA <= x"003f"; - when "01" & x"f0a" => DATA <= x"39e0"; - when "01" & x"f0b" => DATA <= x"c0c0"; - when "01" & x"f0c" => DATA <= x"f1c0"; - when "01" & x"f0d" => DATA <= x"4d55"; - when "01" & x"f0e" => DATA <= x"4c55"; - when "01" & x"f0f" => DATA <= x"2000"; - when "01" & x"f10" => DATA <= x"003f"; - when "01" & x"f11" => DATA <= x"39e0"; - when "01" & x"f12" => DATA <= x"c000"; - when "01" & x"f13" => DATA <= x"f000"; - when "01" & x"f14" => DATA <= x"414e"; - when "01" & x"f15" => DATA <= x"4420"; - when "01" & x"f16" => DATA <= x"2000"; - when "01" & x"f17" => DATA <= x"003f"; - when "01" & x"f18" => DATA <= x"39e0"; - when "01" & x"f19" => DATA <= x"d100"; - when "01" & x"f1a" => DATA <= x"f130"; - when "01" & x"f1b" => DATA <= x"4144"; - when "01" & x"f1c" => DATA <= x"4458"; - when "01" & x"f1d" => DATA <= x"2000"; - when "01" & x"f1e" => DATA <= x"003f"; - when "01" & x"f1f" => DATA <= x"39e0"; - when "01" & x"f20" => DATA <= x"d0c0"; - when "01" & x"f21" => DATA <= x"f0c0"; - when "01" & x"f22" => DATA <= x"4144"; - when "01" & x"f23" => DATA <= x"4441"; - when "01" & x"f24" => DATA <= x"2000"; - when "01" & x"f25" => DATA <= x"003f"; - when "01" & x"f26" => DATA <= x"39e0"; - when "01" & x"f27" => DATA <= x"d000"; - when "01" & x"f28" => DATA <= x"f000"; - when "01" & x"f29" => DATA <= x"4144"; - when "01" & x"f2a" => DATA <= x"4420"; - when "01" & x"f2b" => DATA <= x"2000"; - when "01" & x"f2c" => DATA <= x"003f"; - when "01" & x"f2d" => DATA <= x"39e0"; - when "01" & x"f2e" => DATA <= x"e0c0"; - when "01" & x"f2f" => DATA <= x"fec0"; - when "01" & x"f30" => DATA <= x"4153"; - when "01" & x"f31" => DATA <= x"2020"; - when "01" & x"f32" => DATA <= x"2000"; - when "01" & x"f33" => DATA <= x"003f"; - when "01" & x"f34" => DATA <= x"39e0"; - when "01" & x"f35" => DATA <= x"e2c0"; - when "01" & x"f36" => DATA <= x"fec0"; - when "01" & x"f37" => DATA <= x"4c53"; - when "01" & x"f38" => DATA <= x"2020"; - when "01" & x"f39" => DATA <= x"2000"; - when "01" & x"f3a" => DATA <= x"003f"; - when "01" & x"f3b" => DATA <= x"39e0"; - when "01" & x"f3c" => DATA <= x"e4c0"; - when "01" & x"f3d" => DATA <= x"fec0"; - when "01" & x"f3e" => DATA <= x"524f"; - when "01" & x"f3f" => DATA <= x"5820"; - when "01" & x"f40" => DATA <= x"2000"; - when "01" & x"f41" => DATA <= x"003f"; - when "01" & x"f42" => DATA <= x"39e0"; - when "01" & x"f43" => DATA <= x"e6c0"; - when "01" & x"f44" => DATA <= x"fec0"; - when "01" & x"f45" => DATA <= x"524f"; - when "01" & x"f46" => DATA <= x"2020"; - when "01" & x"f47" => DATA <= x"2000"; - when "01" & x"f48" => DATA <= x"003f"; - when "01" & x"f49" => DATA <= x"39e0"; - when "01" & x"f4a" => DATA <= x"e000"; - when "01" & x"f4b" => DATA <= x"f018"; - when "01" & x"f4c" => DATA <= x"4153"; - when "01" & x"f4d" => DATA <= x"2020"; - when "01" & x"f4e" => DATA <= x"2000"; - when "01" & x"f4f" => DATA <= x"003f"; - when "01" & x"f50" => DATA <= x"39e0"; - when "01" & x"f51" => DATA <= x"e008"; - when "01" & x"f52" => DATA <= x"f018"; - when "01" & x"f53" => DATA <= x"4c53"; - when "01" & x"f54" => DATA <= x"2020"; - when "01" & x"f55" => DATA <= x"2000"; - when "01" & x"f56" => DATA <= x"003f"; - when "01" & x"f57" => DATA <= x"39e0"; - when "01" & x"f58" => DATA <= x"e010"; - when "01" & x"f59" => DATA <= x"f018"; - when "01" & x"f5a" => DATA <= x"524f"; - when "01" & x"f5b" => DATA <= x"5820"; - when "01" & x"f5c" => DATA <= x"2000"; - when "01" & x"f5d" => DATA <= x"003f"; - when "01" & x"f5e" => DATA <= x"39e0"; - when "01" & x"f5f" => DATA <= x"e018"; - when "01" & x"f60" => DATA <= x"f018"; - when "01" & x"f61" => DATA <= x"524f"; - when "01" & x"f62" => DATA <= x"2020"; - when "01" & x"f63" => DATA <= x"2000"; - when "01" & x"f64" => DATA <= x"003f"; - when "01" & x"f65" => DATA <= x"39e0"; - when "01" & x"f66" => DATA <= x"0000"; - when "01" & x"f67" => DATA <= x"0000"; - when "01" & x"f68" => DATA <= x"3f3f"; - when "01" & x"f69" => DATA <= x"3f3f"; - when "01" & x"f6a" => DATA <= x"3f00"; - when "01" & x"f6b" => DATA <= x"003f"; - when "01" & x"f6c" => DATA <= x"39e0"; - when "01" & x"f6d" => DATA <= x"2532"; - when "01" & x"f6e" => DATA <= x"343a"; - when "01" & x"f6f" => DATA <= x"256d"; - when "01" & x"f70" => DATA <= x"693a"; - when "01" & x"f71" => DATA <= x"2573"; - when "01" & x"f72" => DATA <= x"6520"; - when "01" & x"f73" => DATA <= x"2564"; - when "01" & x"f74" => DATA <= x"792d"; - when "01" & x"f75" => DATA <= x"256d"; - when "01" & x"f76" => DATA <= x"332d"; - when "01" & x"f77" => DATA <= x"2563"; - when "01" & x"f78" => DATA <= x"6525"; - when "01" & x"f79" => DATA <= x"7972"; - when "01" & x"f7a" => DATA <= x"0006"; - when "01" & x"f7b" => DATA <= x"7c00"; - when "01" & x"f7c" => DATA <= x"5206"; - when "01" & x"f7d" => DATA <= x"bcbc"; - when "01" & x"f7e" => DATA <= x"0010"; - when "01" & x"f7f" => DATA <= x"0000"; - when "01" & x"f80" => DATA <= x"66f6"; - when "01" & x"f81" => DATA <= x"103c"; - when "01" & x"f82" => DATA <= x"002a"; - when "01" & x"f83" => DATA <= x"6100"; - when "01" & x"f84" => DATA <= x"cade"; - when "01" & x"f85" => DATA <= x"60e9"; - when "01" & x"f86" => DATA <= x"002a"; - when "01" & x"f87" => DATA <= x"6100"; - when "01" & x"f88" => DATA <= x"cae0"; - when "01" & x"f89" => DATA <= x"60e9"; - when "01" & x"f8a" => DATA <= x"cade"; - when "01" & x"f8b" => DATA <= x"60e9"; - when "01" & x"f8c" => DATA <= x"ffff"; - when "01" & x"f8d" => DATA <= x"ffff"; - when "01" & x"f8e" => DATA <= x"ffff"; - when "01" & x"f8f" => DATA <= x"ffff"; - when "01" & x"f90" => DATA <= x"ffff"; - when "01" & x"f91" => DATA <= x"ffff"; - when "01" & x"f92" => DATA <= x"ffff"; - when "01" & x"f93" => DATA <= x"ffff"; - when "01" & x"f94" => DATA <= x"ffff"; - when "01" & x"f95" => DATA <= x"ffff"; - when "01" & x"f96" => DATA <= x"ffff"; - when "01" & x"f97" => DATA <= x"ffff"; - when "01" & x"f98" => DATA <= x"ffff"; - when "01" & x"f99" => DATA <= x"ffff"; - when "01" & x"f9a" => DATA <= x"ffff"; - when "01" & x"f9b" => DATA <= x"ffff"; - when "01" & x"f9c" => DATA <= x"ffff"; - when "01" & x"f9d" => DATA <= x"ffff"; - when "01" & x"f9e" => DATA <= x"ffff"; - when "01" & x"f9f" => DATA <= x"ffff"; - when "01" & x"fa0" => DATA <= x"ffff"; - when "01" & x"fa1" => DATA <= x"ffff"; - when "01" & x"fa2" => DATA <= x"ffff"; - when "01" & x"fa3" => DATA <= x"ffff"; - when "01" & x"fa4" => DATA <= x"ffff"; - when "01" & x"fa5" => DATA <= x"ffff"; - when "01" & x"fa6" => DATA <= x"ffff"; - when "01" & x"fa7" => DATA <= x"ffff"; - when "01" & x"fa8" => DATA <= x"ffff"; - when "01" & x"fa9" => DATA <= x"ffff"; - when "01" & x"faa" => DATA <= x"ffff"; - when "01" & x"fab" => DATA <= x"ffff"; - when "01" & x"fac" => DATA <= x"ffff"; - when "01" & x"fad" => DATA <= x"ffff"; - when "01" & x"fae" => DATA <= x"ffff"; - when "01" & x"faf" => DATA <= x"ffff"; - when "01" & x"fb0" => DATA <= x"ffff"; - when "01" & x"fb1" => DATA <= x"ffff"; - when "01" & x"fb2" => DATA <= x"ffff"; - when "01" & x"fb3" => DATA <= x"ffff"; - when "01" & x"fb4" => DATA <= x"ffff"; - when "01" & x"fb5" => DATA <= x"ffff"; - when "01" & x"fb6" => DATA <= x"ffff"; - when "01" & x"fb7" => DATA <= x"ffff"; - when "01" & x"fb8" => DATA <= x"ffff"; - when "01" & x"fb9" => DATA <= x"ffff"; - when "01" & x"fba" => DATA <= x"ffff"; - when "01" & x"fbb" => DATA <= x"ffff"; - when "01" & x"fbc" => DATA <= x"ffff"; - when "01" & x"fbd" => DATA <= x"ffff"; - when "01" & x"fbe" => DATA <= x"ffff"; - when "01" & x"fbf" => DATA <= x"ffff"; - when "01" & x"fc0" => DATA <= x"ffff"; - when "01" & x"fc1" => DATA <= x"ffff"; - when "01" & x"fc2" => DATA <= x"ffff"; - when "01" & x"fc3" => DATA <= x"ffff"; - when "01" & x"fc4" => DATA <= x"ffff"; - when "01" & x"fc5" => DATA <= x"ffff"; - when "01" & x"fc6" => DATA <= x"ffff"; - when "01" & x"fc7" => DATA <= x"ffff"; - when "01" & x"fc8" => DATA <= x"ffff"; - when "01" & x"fc9" => DATA <= x"ffff"; - when "01" & x"fca" => DATA <= x"ffff"; - when "01" & x"fcb" => DATA <= x"ffff"; - when "01" & x"fcc" => DATA <= x"ffff"; - when "01" & x"fcd" => DATA <= x"ffff"; - when "01" & x"fce" => DATA <= x"ffff"; - when "01" & x"fcf" => DATA <= x"ffff"; - when "01" & x"fd0" => DATA <= x"ffff"; - when "01" & x"fd1" => DATA <= x"ffff"; - when "01" & x"fd2" => DATA <= x"ffff"; - when "01" & x"fd3" => DATA <= x"ffff"; - when "01" & x"fd4" => DATA <= x"ffff"; - when "01" & x"fd5" => DATA <= x"ffff"; - when "01" & x"fd6" => DATA <= x"ffff"; - when "01" & x"fd7" => DATA <= x"ffff"; - when "01" & x"fd8" => DATA <= x"ffff"; - when "01" & x"fd9" => DATA <= x"ffff"; - when "01" & x"fda" => DATA <= x"ffff"; - when "01" & x"fdb" => DATA <= x"ffff"; - when "01" & x"fdc" => DATA <= x"ffff"; - when "01" & x"fdd" => DATA <= x"ffff"; - when "01" & x"fde" => DATA <= x"ffff"; - when "01" & x"fdf" => DATA <= x"ffff"; - when "01" & x"fe0" => DATA <= x"ffff"; - when "01" & x"fe1" => DATA <= x"ffff"; - when "01" & x"fe2" => DATA <= x"ffff"; - when "01" & x"fe3" => DATA <= x"ffff"; - when "01" & x"fe4" => DATA <= x"ffff"; - when "01" & x"fe5" => DATA <= x"ffff"; - when "01" & x"fe6" => DATA <= x"ffff"; - when "01" & x"fe7" => DATA <= x"ffff"; - when "01" & x"fe8" => DATA <= x"ffff"; - when "01" & x"fe9" => DATA <= x"ffff"; - when "01" & x"fea" => DATA <= x"ffff"; - when "01" & x"feb" => DATA <= x"ffff"; - when "01" & x"fec" => DATA <= x"ffff"; - when "01" & x"fed" => DATA <= x"ffff"; - when "01" & x"fee" => DATA <= x"ffff"; - when "01" & x"fef" => DATA <= x"ffff"; - when "01" & x"ff0" => DATA <= x"ffff"; - when "01" & x"ff1" => DATA <= x"ffff"; - when "01" & x"ff2" => DATA <= x"ffff"; - when "01" & x"ff3" => DATA <= x"ffff"; - when "01" & x"ff4" => DATA <= x"ffff"; - when "01" & x"ff5" => DATA <= x"ffff"; - when "01" & x"ff6" => DATA <= x"ffff"; - when "01" & x"ff7" => DATA <= x"ffff"; - when "01" & x"ff8" => DATA <= x"ffff"; - when "01" & x"ff9" => DATA <= x"ffff"; - when "01" & x"ffa" => DATA <= x"ffff"; - when "01" & x"ffb" => DATA <= x"ffff"; - when "01" & x"ffc" => DATA <= x"ffff"; - when "01" & x"ffd" => DATA <= x"ffff"; - when "01" & x"ffe" => DATA <= x"ffff"; - when "01" & x"fff" => DATA <= x"ffff"; - when "10" & x"000" => DATA <= x"ffff"; - when "10" & x"001" => DATA <= x"ffff"; - when "10" & x"002" => DATA <= x"ffff"; - when "10" & x"003" => DATA <= x"ffff"; - when "10" & x"004" => DATA <= x"ffff"; - when "10" & x"005" => DATA <= x"ffff"; - when "10" & x"006" => DATA <= x"ffff"; - when "10" & x"007" => DATA <= x"ffff"; - when "10" & x"008" => DATA <= x"ffff"; - when "10" & x"009" => DATA <= x"ffff"; - when "10" & x"00a" => DATA <= x"ffff"; - when "10" & x"00b" => DATA <= x"ffff"; - when "10" & x"00c" => DATA <= x"ffff"; - when "10" & x"00d" => DATA <= x"ffff"; - when "10" & x"00e" => DATA <= x"ffff"; - when "10" & x"00f" => DATA <= x"ffff"; - when "10" & x"010" => DATA <= x"ffff"; - when "10" & x"011" => DATA <= x"ffff"; - when "10" & x"012" => DATA <= x"ffff"; - when "10" & x"013" => DATA <= x"ffff"; - when "10" & x"014" => DATA <= x"ffff"; - when "10" & x"015" => DATA <= x"ffff"; - when "10" & x"016" => DATA <= x"ffff"; - when "10" & x"017" => DATA <= x"ffff"; - when "10" & x"018" => DATA <= x"ffff"; - when "10" & x"019" => DATA <= x"ffff"; - when "10" & x"01a" => DATA <= x"ffff"; - when "10" & x"01b" => DATA <= x"ffff"; - when "10" & x"01c" => DATA <= x"ffff"; - when "10" & x"01d" => DATA <= x"ffff"; - when "10" & x"01e" => DATA <= x"ffff"; - when "10" & x"01f" => DATA <= x"ffff"; - when "10" & x"020" => DATA <= x"ffff"; - when "10" & x"021" => DATA <= x"ffff"; - when "10" & x"022" => DATA <= x"ffff"; - when "10" & x"023" => DATA <= x"ffff"; - when "10" & x"024" => DATA <= x"ffff"; - when "10" & x"025" => DATA <= x"ffff"; - when "10" & x"026" => DATA <= x"ffff"; - when "10" & x"027" => DATA <= x"ffff"; - when "10" & x"028" => DATA <= x"ffff"; - when "10" & x"029" => DATA <= x"ffff"; - when "10" & x"02a" => DATA <= x"ffff"; - when "10" & x"02b" => DATA <= x"ffff"; - when "10" & x"02c" => DATA <= x"ffff"; - when "10" & x"02d" => DATA <= x"ffff"; - when "10" & x"02e" => DATA <= x"ffff"; - when "10" & x"02f" => DATA <= x"ffff"; - when "10" & x"030" => DATA <= x"ffff"; - when "10" & x"031" => DATA <= x"ffff"; - when "10" & x"032" => DATA <= x"ffff"; - when "10" & x"033" => DATA <= x"ffff"; - when "10" & x"034" => DATA <= x"ffff"; - when "10" & x"035" => DATA <= x"ffff"; - when "10" & x"036" => DATA <= x"ffff"; - when "10" & x"037" => DATA <= x"ffff"; - when "10" & x"038" => DATA <= x"ffff"; - when "10" & x"039" => DATA <= x"ffff"; - when "10" & x"03a" => DATA <= x"ffff"; - when "10" & x"03b" => DATA <= x"ffff"; - when "10" & x"03c" => DATA <= x"ffff"; - when "10" & x"03d" => DATA <= x"ffff"; - when "10" & x"03e" => DATA <= x"ffff"; - when "10" & x"03f" => DATA <= x"ffff"; - when "10" & x"040" => DATA <= x"ffff"; - when "10" & x"041" => DATA <= x"ffff"; - when "10" & x"042" => DATA <= x"ffff"; - when "10" & x"043" => DATA <= x"ffff"; - when "10" & x"044" => DATA <= x"ffff"; - when "10" & x"045" => DATA <= x"ffff"; - when "10" & x"046" => DATA <= x"ffff"; - when "10" & x"047" => DATA <= x"ffff"; - when "10" & x"048" => DATA <= x"ffff"; - when "10" & x"049" => DATA <= x"ffff"; - when "10" & x"04a" => DATA <= x"ffff"; - when "10" & x"04b" => DATA <= x"ffff"; - when "10" & x"04c" => DATA <= x"ffff"; - when "10" & x"04d" => DATA <= x"ffff"; - when "10" & x"04e" => DATA <= x"ffff"; - when "10" & x"04f" => DATA <= x"ffff"; - when "10" & x"050" => DATA <= x"ffff"; - when "10" & x"051" => DATA <= x"ffff"; - when "10" & x"052" => DATA <= x"ffff"; - when "10" & x"053" => DATA <= x"ffff"; - when "10" & x"054" => DATA <= x"ffff"; - when "10" & x"055" => DATA <= x"ffff"; - when "10" & x"056" => DATA <= x"ffff"; - when "10" & x"057" => DATA <= x"ffff"; - when "10" & x"058" => DATA <= x"ffff"; - when "10" & x"059" => DATA <= x"ffff"; - when "10" & x"05a" => DATA <= x"ffff"; - when "10" & x"05b" => DATA <= x"ffff"; - when "10" & x"05c" => DATA <= x"ffff"; - when "10" & x"05d" => DATA <= x"ffff"; - when "10" & x"05e" => DATA <= x"ffff"; - when "10" & x"05f" => DATA <= x"ffff"; - when "10" & x"060" => DATA <= x"ffff"; - when "10" & x"061" => DATA <= x"ffff"; - when "10" & x"062" => DATA <= x"ffff"; - when "10" & x"063" => DATA <= x"ffff"; - when "10" & x"064" => DATA <= x"ffff"; - when "10" & x"065" => DATA <= x"ffff"; - when "10" & x"066" => DATA <= x"ffff"; - when "10" & x"067" => DATA <= x"ffff"; - when "10" & x"068" => DATA <= x"ffff"; - when "10" & x"069" => DATA <= x"ffff"; - when "10" & x"06a" => DATA <= x"ffff"; - when "10" & x"06b" => DATA <= x"ffff"; - when "10" & x"06c" => DATA <= x"ffff"; - when "10" & x"06d" => DATA <= x"ffff"; - when "10" & x"06e" => DATA <= x"ffff"; - when "10" & x"06f" => DATA <= x"ffff"; - when "10" & x"070" => DATA <= x"ffff"; - when "10" & x"071" => DATA <= x"ffff"; - when "10" & x"072" => DATA <= x"ffff"; - when "10" & x"073" => DATA <= x"ffff"; - when "10" & x"074" => DATA <= x"ffff"; - when "10" & x"075" => DATA <= x"ffff"; - when "10" & x"076" => DATA <= x"ffff"; - when "10" & x"077" => DATA <= x"ffff"; - when "10" & x"078" => DATA <= x"ffff"; - when "10" & x"079" => DATA <= x"ffff"; - when "10" & x"07a" => DATA <= x"ffff"; - when "10" & x"07b" => DATA <= x"ffff"; - when "10" & x"07c" => DATA <= x"ffff"; - when "10" & x"07d" => DATA <= x"ffff"; - when "10" & x"07e" => DATA <= x"ffff"; - when "10" & x"07f" => DATA <= x"ffff"; - when "10" & x"080" => DATA <= x"ffff"; - when "10" & x"081" => DATA <= x"ffff"; - when "10" & x"082" => DATA <= x"ffff"; - when "10" & x"083" => DATA <= x"ffff"; - when "10" & x"084" => DATA <= x"ffff"; - when "10" & x"085" => DATA <= x"ffff"; - when "10" & x"086" => DATA <= x"ffff"; - when "10" & x"087" => DATA <= x"ffff"; - when "10" & x"088" => DATA <= x"ffff"; - when "10" & x"089" => DATA <= x"ffff"; - when "10" & x"08a" => DATA <= x"ffff"; - when "10" & x"08b" => DATA <= x"ffff"; - when "10" & x"08c" => DATA <= x"ffff"; - when "10" & x"08d" => DATA <= x"ffff"; - when "10" & x"08e" => DATA <= x"ffff"; - when "10" & x"08f" => DATA <= x"ffff"; - when "10" & x"090" => DATA <= x"ffff"; - when "10" & x"091" => DATA <= x"ffff"; - when "10" & x"092" => DATA <= x"ffff"; - when "10" & x"093" => DATA <= x"ffff"; - when "10" & x"094" => DATA <= x"ffff"; - when "10" & x"095" => DATA <= x"ffff"; - when "10" & x"096" => DATA <= x"ffff"; - when "10" & x"097" => DATA <= x"ffff"; - when "10" & x"098" => DATA <= x"ffff"; - when "10" & x"099" => DATA <= x"ffff"; - when "10" & x"09a" => DATA <= x"ffff"; - when "10" & x"09b" => DATA <= x"ffff"; - when "10" & x"09c" => DATA <= x"ffff"; - when "10" & x"09d" => DATA <= x"ffff"; - when "10" & x"09e" => DATA <= x"ffff"; - when "10" & x"09f" => DATA <= x"ffff"; - when "10" & x"0a0" => DATA <= x"ffff"; - when "10" & x"0a1" => DATA <= x"ffff"; - when "10" & x"0a2" => DATA <= x"ffff"; - when "10" & x"0a3" => DATA <= x"ffff"; - when "10" & x"0a4" => DATA <= x"ffff"; - when "10" & x"0a5" => DATA <= x"ffff"; - when "10" & x"0a6" => DATA <= x"ffff"; - when "10" & x"0a7" => DATA <= x"ffff"; - when "10" & x"0a8" => DATA <= x"ffff"; - when "10" & x"0a9" => DATA <= x"ffff"; - when "10" & x"0aa" => DATA <= x"ffff"; - when "10" & x"0ab" => DATA <= x"ffff"; - when "10" & x"0ac" => DATA <= x"ffff"; - when "10" & x"0ad" => DATA <= x"ffff"; - when "10" & x"0ae" => DATA <= x"ffff"; - when "10" & x"0af" => DATA <= x"ffff"; - when "10" & x"0b0" => DATA <= x"ffff"; - when "10" & x"0b1" => DATA <= x"ffff"; - when "10" & x"0b2" => DATA <= x"ffff"; - when "10" & x"0b3" => DATA <= x"ffff"; - when "10" & x"0b4" => DATA <= x"ffff"; - when "10" & x"0b5" => DATA <= x"ffff"; - when "10" & x"0b6" => DATA <= x"ffff"; - when "10" & x"0b7" => DATA <= x"ffff"; - when "10" & x"0b8" => DATA <= x"ffff"; - when "10" & x"0b9" => DATA <= x"ffff"; - when "10" & x"0ba" => DATA <= x"ffff"; - when "10" & x"0bb" => DATA <= x"ffff"; - when "10" & x"0bc" => DATA <= x"ffff"; - when "10" & x"0bd" => DATA <= x"ffff"; - when "10" & x"0be" => DATA <= x"ffff"; - when "10" & x"0bf" => DATA <= x"ffff"; - when "10" & x"0c0" => DATA <= x"ffff"; - when "10" & x"0c1" => DATA <= x"ffff"; - when "10" & x"0c2" => DATA <= x"ffff"; - when "10" & x"0c3" => DATA <= x"ffff"; - when "10" & x"0c4" => DATA <= x"ffff"; - when "10" & x"0c5" => DATA <= x"ffff"; - when "10" & x"0c6" => DATA <= x"ffff"; - when "10" & x"0c7" => DATA <= x"ffff"; - when "10" & x"0c8" => DATA <= x"ffff"; - when "10" & x"0c9" => DATA <= x"ffff"; - when "10" & x"0ca" => DATA <= x"ffff"; - when "10" & x"0cb" => DATA <= x"ffff"; - when "10" & x"0cc" => DATA <= x"ffff"; - when "10" & x"0cd" => DATA <= x"ffff"; - when "10" & x"0ce" => DATA <= x"ffff"; - when "10" & x"0cf" => DATA <= x"ffff"; - when "10" & x"0d0" => DATA <= x"ffff"; - when "10" & x"0d1" => DATA <= x"ffff"; - when "10" & x"0d2" => DATA <= x"ffff"; - when "10" & x"0d3" => DATA <= x"ffff"; - when "10" & x"0d4" => DATA <= x"ffff"; - when "10" & x"0d5" => DATA <= x"ffff"; - when "10" & x"0d6" => DATA <= x"ffff"; - when "10" & x"0d7" => DATA <= x"ffff"; - when "10" & x"0d8" => DATA <= x"ffff"; - when "10" & x"0d9" => DATA <= x"ffff"; - when "10" & x"0da" => DATA <= x"ffff"; - when "10" & x"0db" => DATA <= x"ffff"; - when "10" & x"0dc" => DATA <= x"ffff"; - when "10" & x"0dd" => DATA <= x"ffff"; - when "10" & x"0de" => DATA <= x"ffff"; - when "10" & x"0df" => DATA <= x"ffff"; - when "10" & x"0e0" => DATA <= x"ffff"; - when "10" & x"0e1" => DATA <= x"ffff"; - when "10" & x"0e2" => DATA <= x"ffff"; - when "10" & x"0e3" => DATA <= x"ffff"; - when "10" & x"0e4" => DATA <= x"ffff"; - when "10" & x"0e5" => DATA <= x"ffff"; - when "10" & x"0e6" => DATA <= x"ffff"; - when "10" & x"0e7" => DATA <= x"ffff"; - when "10" & x"0e8" => DATA <= x"ffff"; - when "10" & x"0e9" => DATA <= x"ffff"; - when "10" & x"0ea" => DATA <= x"ffff"; - when "10" & x"0eb" => DATA <= x"ffff"; - when "10" & x"0ec" => DATA <= x"ffff"; - when "10" & x"0ed" => DATA <= x"ffff"; - when "10" & x"0ee" => DATA <= x"ffff"; - when "10" & x"0ef" => DATA <= x"ffff"; - when "10" & x"0f0" => DATA <= x"ffff"; - when "10" & x"0f1" => DATA <= x"ffff"; - when "10" & x"0f2" => DATA <= x"ffff"; - when "10" & x"0f3" => DATA <= x"ffff"; - when "10" & x"0f4" => DATA <= x"ffff"; - when "10" & x"0f5" => DATA <= x"ffff"; - when "10" & x"0f6" => DATA <= x"ffff"; - when "10" & x"0f7" => DATA <= x"ffff"; - when "10" & x"0f8" => DATA <= x"ffff"; - when "10" & x"0f9" => DATA <= x"ffff"; - when "10" & x"0fa" => DATA <= x"ffff"; - when "10" & x"0fb" => DATA <= x"ffff"; - when "10" & x"0fc" => DATA <= x"ffff"; - when "10" & x"0fd" => DATA <= x"ffff"; - when "10" & x"0fe" => DATA <= x"ffff"; - when "10" & x"0ff" => DATA <= x"ffff"; - when "10" & x"100" => DATA <= x"ffff"; - when "10" & x"101" => DATA <= x"ffff"; - when "10" & x"102" => DATA <= x"ffff"; - when "10" & x"103" => DATA <= x"ffff"; - when "10" & x"104" => DATA <= x"ffff"; - when "10" & x"105" => DATA <= x"ffff"; - when "10" & x"106" => DATA <= x"ffff"; - when "10" & x"107" => DATA <= x"ffff"; - when "10" & x"108" => DATA <= x"ffff"; - when "10" & x"109" => DATA <= x"ffff"; - when "10" & x"10a" => DATA <= x"ffff"; - when "10" & x"10b" => DATA <= x"ffff"; - when "10" & x"10c" => DATA <= x"ffff"; - when "10" & x"10d" => DATA <= x"ffff"; - when "10" & x"10e" => DATA <= x"ffff"; - when "10" & x"10f" => DATA <= x"ffff"; - when "10" & x"110" => DATA <= x"ffff"; - when "10" & x"111" => DATA <= x"ffff"; - when "10" & x"112" => DATA <= x"ffff"; - when "10" & x"113" => DATA <= x"ffff"; - when "10" & x"114" => DATA <= x"ffff"; - when "10" & x"115" => DATA <= x"ffff"; - when "10" & x"116" => DATA <= x"ffff"; - when "10" & x"117" => DATA <= x"ffff"; - when "10" & x"118" => DATA <= x"ffff"; - when "10" & x"119" => DATA <= x"ffff"; - when "10" & x"11a" => DATA <= x"ffff"; - when "10" & x"11b" => DATA <= x"ffff"; - when "10" & x"11c" => DATA <= x"ffff"; - when "10" & x"11d" => DATA <= x"ffff"; - when "10" & x"11e" => DATA <= x"ffff"; - when "10" & x"11f" => DATA <= x"ffff"; - when "10" & x"120" => DATA <= x"ffff"; - when "10" & x"121" => DATA <= x"ffff"; - when "10" & x"122" => DATA <= x"ffff"; - when "10" & x"123" => DATA <= x"ffff"; - when "10" & x"124" => DATA <= x"ffff"; - when "10" & x"125" => DATA <= x"ffff"; - when "10" & x"126" => DATA <= x"ffff"; - when "10" & x"127" => DATA <= x"ffff"; - when "10" & x"128" => DATA <= x"ffff"; - when "10" & x"129" => DATA <= x"ffff"; - when "10" & x"12a" => DATA <= x"ffff"; - when "10" & x"12b" => DATA <= x"ffff"; - when "10" & x"12c" => DATA <= x"ffff"; - when "10" & x"12d" => DATA <= x"ffff"; - when "10" & x"12e" => DATA <= x"ffff"; - when "10" & x"12f" => DATA <= x"ffff"; - when "10" & x"130" => DATA <= x"ffff"; - when "10" & x"131" => DATA <= x"ffff"; - when "10" & x"132" => DATA <= x"ffff"; - when "10" & x"133" => DATA <= x"ffff"; - when "10" & x"134" => DATA <= x"ffff"; - when "10" & x"135" => DATA <= x"ffff"; - when "10" & x"136" => DATA <= x"ffff"; - when "10" & x"137" => DATA <= x"ffff"; - when "10" & x"138" => DATA <= x"ffff"; - when "10" & x"139" => DATA <= x"ffff"; - when "10" & x"13a" => DATA <= x"ffff"; - when "10" & x"13b" => DATA <= x"ffff"; - when "10" & x"13c" => DATA <= x"ffff"; - when "10" & x"13d" => DATA <= x"ffff"; - when "10" & x"13e" => DATA <= x"ffff"; - when "10" & x"13f" => DATA <= x"ffff"; - when "10" & x"140" => DATA <= x"ffff"; - when "10" & x"141" => DATA <= x"ffff"; - when "10" & x"142" => DATA <= x"ffff"; - when "10" & x"143" => DATA <= x"ffff"; - when "10" & x"144" => DATA <= x"ffff"; - when "10" & x"145" => DATA <= x"ffff"; - when "10" & x"146" => DATA <= x"ffff"; - when "10" & x"147" => DATA <= x"ffff"; - when "10" & x"148" => DATA <= x"ffff"; - when "10" & x"149" => DATA <= x"ffff"; - when "10" & x"14a" => DATA <= x"ffff"; - when "10" & x"14b" => DATA <= x"ffff"; - when "10" & x"14c" => DATA <= x"ffff"; - when "10" & x"14d" => DATA <= x"ffff"; - when "10" & x"14e" => DATA <= x"ffff"; - when "10" & x"14f" => DATA <= x"ffff"; - when "10" & x"150" => DATA <= x"ffff"; - when "10" & x"151" => DATA <= x"ffff"; - when "10" & x"152" => DATA <= x"ffff"; - when "10" & x"153" => DATA <= x"ffff"; - when "10" & x"154" => DATA <= x"ffff"; - when "10" & x"155" => DATA <= x"ffff"; - when "10" & x"156" => DATA <= x"ffff"; - when "10" & x"157" => DATA <= x"ffff"; - when "10" & x"158" => DATA <= x"ffff"; - when "10" & x"159" => DATA <= x"ffff"; - when "10" & x"15a" => DATA <= x"ffff"; - when "10" & x"15b" => DATA <= x"ffff"; - when "10" & x"15c" => DATA <= x"ffff"; - when "10" & x"15d" => DATA <= x"ffff"; - when "10" & x"15e" => DATA <= x"ffff"; - when "10" & x"15f" => DATA <= x"ffff"; - when "10" & x"160" => DATA <= x"ffff"; - when "10" & x"161" => DATA <= x"ffff"; - when "10" & x"162" => DATA <= x"ffff"; - when "10" & x"163" => DATA <= x"ffff"; - when "10" & x"164" => DATA <= x"ffff"; - when "10" & x"165" => DATA <= x"ffff"; - when "10" & x"166" => DATA <= x"ffff"; - when "10" & x"167" => DATA <= x"ffff"; - when "10" & x"168" => DATA <= x"ffff"; - when "10" & x"169" => DATA <= x"ffff"; - when "10" & x"16a" => DATA <= x"ffff"; - when "10" & x"16b" => DATA <= x"ffff"; - when "10" & x"16c" => DATA <= x"ffff"; - when "10" & x"16d" => DATA <= x"ffff"; - when "10" & x"16e" => DATA <= x"ffff"; - when "10" & x"16f" => DATA <= x"ffff"; - when "10" & x"170" => DATA <= x"ffff"; - when "10" & x"171" => DATA <= x"ffff"; - when "10" & x"172" => DATA <= x"ffff"; - when "10" & x"173" => DATA <= x"ffff"; - when "10" & x"174" => DATA <= x"ffff"; - when "10" & x"175" => DATA <= x"ffff"; - when "10" & x"176" => DATA <= x"ffff"; - when "10" & x"177" => DATA <= x"ffff"; - when "10" & x"178" => DATA <= x"ffff"; - when "10" & x"179" => DATA <= x"ffff"; - when "10" & x"17a" => DATA <= x"ffff"; - when "10" & x"17b" => DATA <= x"ffff"; - when "10" & x"17c" => DATA <= x"ffff"; - when "10" & x"17d" => DATA <= x"ffff"; - when "10" & x"17e" => DATA <= x"ffff"; - when "10" & x"17f" => DATA <= x"ffff"; - when "10" & x"180" => DATA <= x"ffff"; - when "10" & x"181" => DATA <= x"ffff"; - when "10" & x"182" => DATA <= x"ffff"; - when "10" & x"183" => DATA <= x"ffff"; - when "10" & x"184" => DATA <= x"ffff"; - when "10" & x"185" => DATA <= x"ffff"; - when "10" & x"186" => DATA <= x"ffff"; - when "10" & x"187" => DATA <= x"ffff"; - when "10" & x"188" => DATA <= x"ffff"; - when "10" & x"189" => DATA <= x"ffff"; - when "10" & x"18a" => DATA <= x"ffff"; - when "10" & x"18b" => DATA <= x"ffff"; - when "10" & x"18c" => DATA <= x"ffff"; - when "10" & x"18d" => DATA <= x"ffff"; - when "10" & x"18e" => DATA <= x"ffff"; - when "10" & x"18f" => DATA <= x"ffff"; - when "10" & x"190" => DATA <= x"ffff"; - when "10" & x"191" => DATA <= x"ffff"; - when "10" & x"192" => DATA <= x"ffff"; - when "10" & x"193" => DATA <= x"ffff"; - when "10" & x"194" => DATA <= x"ffff"; - when "10" & x"195" => DATA <= x"ffff"; - when "10" & x"196" => DATA <= x"ffff"; - when "10" & x"197" => DATA <= x"ffff"; - when "10" & x"198" => DATA <= x"ffff"; - when "10" & x"199" => DATA <= x"ffff"; - when "10" & x"19a" => DATA <= x"ffff"; - when "10" & x"19b" => DATA <= x"ffff"; - when "10" & x"19c" => DATA <= x"ffff"; - when "10" & x"19d" => DATA <= x"ffff"; - when "10" & x"19e" => DATA <= x"ffff"; - when "10" & x"19f" => DATA <= x"ffff"; - when "10" & x"1a0" => DATA <= x"ffff"; - when "10" & x"1a1" => DATA <= x"ffff"; - when "10" & x"1a2" => DATA <= x"ffff"; - when "10" & x"1a3" => DATA <= x"ffff"; - when "10" & x"1a4" => DATA <= x"ffff"; - when "10" & x"1a5" => DATA <= x"ffff"; - when "10" & x"1a6" => DATA <= x"ffff"; - when "10" & x"1a7" => DATA <= x"ffff"; - when "10" & x"1a8" => DATA <= x"ffff"; - when "10" & x"1a9" => DATA <= x"ffff"; - when "10" & x"1aa" => DATA <= x"ffff"; - when "10" & x"1ab" => DATA <= x"ffff"; - when "10" & x"1ac" => DATA <= x"ffff"; - when "10" & x"1ad" => DATA <= x"ffff"; - when "10" & x"1ae" => DATA <= x"ffff"; - when "10" & x"1af" => DATA <= x"ffff"; - when "10" & x"1b0" => DATA <= x"ffff"; - when "10" & x"1b1" => DATA <= x"ffff"; - when "10" & x"1b2" => DATA <= x"ffff"; - when "10" & x"1b3" => DATA <= x"ffff"; - when "10" & x"1b4" => DATA <= x"ffff"; - when "10" & x"1b5" => DATA <= x"ffff"; - when "10" & x"1b6" => DATA <= x"ffff"; - when "10" & x"1b7" => DATA <= x"ffff"; - when "10" & x"1b8" => DATA <= x"ffff"; - when "10" & x"1b9" => DATA <= x"ffff"; - when "10" & x"1ba" => DATA <= x"ffff"; - when "10" & x"1bb" => DATA <= x"ffff"; - when "10" & x"1bc" => DATA <= x"ffff"; - when "10" & x"1bd" => DATA <= x"ffff"; - when "10" & x"1be" => DATA <= x"ffff"; - when "10" & x"1bf" => DATA <= x"ffff"; - when "10" & x"1c0" => DATA <= x"ffff"; - when "10" & x"1c1" => DATA <= x"ffff"; - when "10" & x"1c2" => DATA <= x"ffff"; - when "10" & x"1c3" => DATA <= x"ffff"; - when "10" & x"1c4" => DATA <= x"ffff"; - when "10" & x"1c5" => DATA <= x"ffff"; - when "10" & x"1c6" => DATA <= x"ffff"; - when "10" & x"1c7" => DATA <= x"ffff"; - when "10" & x"1c8" => DATA <= x"ffff"; - when "10" & x"1c9" => DATA <= x"ffff"; - when "10" & x"1ca" => DATA <= x"ffff"; - when "10" & x"1cb" => DATA <= x"ffff"; - when "10" & x"1cc" => DATA <= x"ffff"; - when "10" & x"1cd" => DATA <= x"ffff"; - when "10" & x"1ce" => DATA <= x"ffff"; - when "10" & x"1cf" => DATA <= x"ffff"; - when "10" & x"1d0" => DATA <= x"ffff"; - when "10" & x"1d1" => DATA <= x"ffff"; - when "10" & x"1d2" => DATA <= x"ffff"; - when "10" & x"1d3" => DATA <= x"ffff"; - when "10" & x"1d4" => DATA <= x"ffff"; - when "10" & x"1d5" => DATA <= x"ffff"; - when "10" & x"1d6" => DATA <= x"ffff"; - when "10" & x"1d7" => DATA <= x"ffff"; - when "10" & x"1d8" => DATA <= x"ffff"; - when "10" & x"1d9" => DATA <= x"ffff"; - when "10" & x"1da" => DATA <= x"ffff"; - when "10" & x"1db" => DATA <= x"ffff"; - when "10" & x"1dc" => DATA <= x"ffff"; - when "10" & x"1dd" => DATA <= x"ffff"; - when "10" & x"1de" => DATA <= x"ffff"; - when "10" & x"1df" => DATA <= x"ffff"; - when "10" & x"1e0" => DATA <= x"ffff"; - when "10" & x"1e1" => DATA <= x"ffff"; - when "10" & x"1e2" => DATA <= x"ffff"; - when "10" & x"1e3" => DATA <= x"ffff"; - when "10" & x"1e4" => DATA <= x"ffff"; - when "10" & x"1e5" => DATA <= x"ffff"; - when "10" & x"1e6" => DATA <= x"ffff"; - when "10" & x"1e7" => DATA <= x"ffff"; - when "10" & x"1e8" => DATA <= x"ffff"; - when "10" & x"1e9" => DATA <= x"ffff"; - when "10" & x"1ea" => DATA <= x"ffff"; - when "10" & x"1eb" => DATA <= x"ffff"; - when "10" & x"1ec" => DATA <= x"ffff"; - when "10" & x"1ed" => DATA <= x"ffff"; - when "10" & x"1ee" => DATA <= x"ffff"; - when "10" & x"1ef" => DATA <= x"ffff"; - when "10" & x"1f0" => DATA <= x"ffff"; - when "10" & x"1f1" => DATA <= x"ffff"; - when "10" & x"1f2" => DATA <= x"ffff"; - when "10" & x"1f3" => DATA <= x"ffff"; - when "10" & x"1f4" => DATA <= x"ffff"; - when "10" & x"1f5" => DATA <= x"ffff"; - when "10" & x"1f6" => DATA <= x"ffff"; - when "10" & x"1f7" => DATA <= x"ffff"; - when "10" & x"1f8" => DATA <= x"ffff"; - when "10" & x"1f9" => DATA <= x"ffff"; - when "10" & x"1fa" => DATA <= x"ffff"; - when "10" & x"1fb" => DATA <= x"ffff"; - when "10" & x"1fc" => DATA <= x"ffff"; - when "10" & x"1fd" => DATA <= x"ffff"; - when "10" & x"1fe" => DATA <= x"ffff"; - when "10" & x"1ff" => DATA <= x"ffff"; - when "10" & x"200" => DATA <= x"ffff"; - when "10" & x"201" => DATA <= x"ffff"; - when "10" & x"202" => DATA <= x"ffff"; - when "10" & x"203" => DATA <= x"ffff"; - when "10" & x"204" => DATA <= x"ffff"; - when "10" & x"205" => DATA <= x"ffff"; - when "10" & x"206" => DATA <= x"ffff"; - when "10" & x"207" => DATA <= x"ffff"; - when "10" & x"208" => DATA <= x"ffff"; - when "10" & x"209" => DATA <= x"ffff"; - when "10" & x"20a" => DATA <= x"ffff"; - when "10" & x"20b" => DATA <= x"ffff"; - when "10" & x"20c" => DATA <= x"ffff"; - when "10" & x"20d" => DATA <= x"ffff"; - when "10" & x"20e" => DATA <= x"ffff"; - when "10" & x"20f" => DATA <= x"ffff"; - when "10" & x"210" => DATA <= x"ffff"; - when "10" & x"211" => DATA <= x"ffff"; - when "10" & x"212" => DATA <= x"ffff"; - when "10" & x"213" => DATA <= x"ffff"; - when "10" & x"214" => DATA <= x"ffff"; - when "10" & x"215" => DATA <= x"ffff"; - when "10" & x"216" => DATA <= x"ffff"; - when "10" & x"217" => DATA <= x"ffff"; - when "10" & x"218" => DATA <= x"ffff"; - when "10" & x"219" => DATA <= x"ffff"; - when "10" & x"21a" => DATA <= x"ffff"; - when "10" & x"21b" => DATA <= x"ffff"; - when "10" & x"21c" => DATA <= x"ffff"; - when "10" & x"21d" => DATA <= x"ffff"; - when "10" & x"21e" => DATA <= x"ffff"; - when "10" & x"21f" => DATA <= x"ffff"; - when "10" & x"220" => DATA <= x"ffff"; - when "10" & x"221" => DATA <= x"ffff"; - when "10" & x"222" => DATA <= x"ffff"; - when "10" & x"223" => DATA <= x"ffff"; - when "10" & x"224" => DATA <= x"ffff"; - when "10" & x"225" => DATA <= x"ffff"; - when "10" & x"226" => DATA <= x"ffff"; - when "10" & x"227" => DATA <= x"ffff"; - when "10" & x"228" => DATA <= x"ffff"; - when "10" & x"229" => DATA <= x"ffff"; - when "10" & x"22a" => DATA <= x"ffff"; - when "10" & x"22b" => DATA <= x"ffff"; - when "10" & x"22c" => DATA <= x"ffff"; - when "10" & x"22d" => DATA <= x"ffff"; - when "10" & x"22e" => DATA <= x"ffff"; - when "10" & x"22f" => DATA <= x"ffff"; - when "10" & x"230" => DATA <= x"ffff"; - when "10" & x"231" => DATA <= x"ffff"; - when "10" & x"232" => DATA <= x"ffff"; - when "10" & x"233" => DATA <= x"ffff"; - when "10" & x"234" => DATA <= x"ffff"; - when "10" & x"235" => DATA <= x"ffff"; - when "10" & x"236" => DATA <= x"ffff"; - when "10" & x"237" => DATA <= x"ffff"; - when "10" & x"238" => DATA <= x"ffff"; - when "10" & x"239" => DATA <= x"ffff"; - when "10" & x"23a" => DATA <= x"ffff"; - when "10" & x"23b" => DATA <= x"ffff"; - when "10" & x"23c" => DATA <= x"ffff"; - when "10" & x"23d" => DATA <= x"ffff"; - when "10" & x"23e" => DATA <= x"ffff"; - when "10" & x"23f" => DATA <= x"ffff"; - when "10" & x"240" => DATA <= x"ffff"; - when "10" & x"241" => DATA <= x"ffff"; - when "10" & x"242" => DATA <= x"ffff"; - when "10" & x"243" => DATA <= x"ffff"; - when "10" & x"244" => DATA <= x"ffff"; - when "10" & x"245" => DATA <= x"ffff"; - when "10" & x"246" => DATA <= x"ffff"; - when "10" & x"247" => DATA <= x"ffff"; - when "10" & x"248" => DATA <= x"ffff"; - when "10" & x"249" => DATA <= x"ffff"; - when "10" & x"24a" => DATA <= x"ffff"; - when "10" & x"24b" => DATA <= x"ffff"; - when "10" & x"24c" => DATA <= x"ffff"; - when "10" & x"24d" => DATA <= x"ffff"; - when "10" & x"24e" => DATA <= x"ffff"; - when "10" & x"24f" => DATA <= x"ffff"; - when "10" & x"250" => DATA <= x"ffff"; + when "01" & x"bf1" => DATA <= x"077a"; + when "01" & x"bf2" => DATA <= x"003f"; + when "01" & x"bf3" => DATA <= x"077a"; + when "01" & x"bf4" => DATA <= x"1890"; + when "01" & x"bf5" => DATA <= x"0210"; + when "01" & x"bf6" => DATA <= x"e3c9"; + when "01" & x"bf7" => DATA <= x"faf0"; + when "01" & x"bf8" => DATA <= x"036c"; + when "01" & x"bf9" => DATA <= x"0325"; + when "01" & x"bfa" => DATA <= x"8670"; + when "01" & x"bfb" => DATA <= x"8471"; + when "01" & x"bfc" => DATA <= x"48a9"; + when "01" & x"bfd" => DATA <= x"fba2"; + when "01" & x"bfe" => DATA <= x"00a0"; + when "01" & x"bff" => DATA <= x"ff20"; + when "01" & x"c00" => DATA <= x"f4ff"; + when "01" & x"c01" => DATA <= x"8673"; + when "01" & x"c02" => DATA <= x"ad34"; + when "01" & x"c03" => DATA <= x"fe48"; + when "01" & x"c04" => DATA <= x"a9c7"; + when "01" & x"c05" => DATA <= x"2006"; + when "01" & x"c06" => DATA <= x"0490"; + when "01" & x"c07" => DATA <= x"f9a0"; + when "01" & x"c08" => DATA <= x"00b1"; + when "01" & x"c09" => DATA <= x"70c9"; + when "01" & x"c0a" => DATA <= x"0d08"; + when "01" & x"c0b" => DATA <= x"a5f4"; + when "01" & x"c0c" => DATA <= x"8572"; + when "01" & x"c0d" => DATA <= x"a00d"; + when "01" & x"c0e" => DATA <= x"b170"; + when "01" & x"c0f" => DATA <= x"aaa0"; + when "01" & x"c10" => DATA <= x"02b1"; + when "01" & x"c11" => DATA <= x"7085"; + when "01" & x"c12" => DATA <= x"74c8"; + when "01" & x"c13" => DATA <= x"b170"; + when "01" & x"c14" => DATA <= x"8575"; + when "01" & x"c15" => DATA <= x"28f0"; + when "01" & x"c16" => DATA <= x"408a"; + when "01" & x"c17" => DATA <= x"4829"; + when "01" & x"c18" => DATA <= x"40d0"; + when "01" & x"c19" => DATA <= x"138a"; + when "01" & x"c1a" => DATA <= x"2920"; + when "01" & x"c1b" => DATA <= x"d004"; + when "01" & x"c1c" => DATA <= x"a200"; + when "01" & x"c1d" => DATA <= x"f002"; + when "01" & x"c1e" => DATA <= x"a201"; + when "01" & x"c1f" => DATA <= x"a96c"; + when "01" & x"c20" => DATA <= x"20f4"; + when "01" & x"c21" => DATA <= x"ff4c"; + when "01" & x"c22" => DATA <= x"7725"; + when "01" & x"c23" => DATA <= x"a984"; + when "01" & x"c24" => DATA <= x"20f4"; + when "01" & x"c25" => DATA <= x"ffc0"; + when "01" & x"c26" => DATA <= x"80d0"; + when "01" & x"c27" => DATA <= x"08a9"; + when "01" & x"c28" => DATA <= x"01c5"; + when "01" & x"c29" => DATA <= x"73d0"; + when "01" & x"c2a" => DATA <= x"e7f0"; + when "01" & x"c2b" => DATA <= x"e1a9"; + when "01" & x"c2c" => DATA <= x"02c5"; + when "01" & x"c2d" => DATA <= x"73d0"; + when "01" & x"c2e" => DATA <= x"dbf0"; + when "01" & x"c2f" => DATA <= x"dd68"; + when "01" & x"c30" => DATA <= x"aa29"; + when "01" & x"c31" => DATA <= x"10d0"; + when "01" & x"c32" => DATA <= x"088a"; + when "01" & x"c33" => DATA <= x"290f"; + when "01" & x"c34" => DATA <= x"85f4"; + when "01" & x"c35" => DATA <= x"8d30"; + when "01" & x"c36" => DATA <= x"fea0"; + when "01" & x"c37" => DATA <= x"0ab1"; + when "01" & x"c38" => DATA <= x"7085"; + when "01" & x"c39" => DATA <= x"77c8"; + when "01" & x"c3a" => DATA <= x"b170"; + when "01" & x"c3b" => DATA <= x"8576"; + when "01" & x"c3c" => DATA <= x"0577"; + when "01" & x"c3d" => DATA <= x"d002"; + when "01" & x"c3e" => DATA <= x"f06e"; + when "01" & x"c3f" => DATA <= x"a577"; + when "01" & x"c40" => DATA <= x"f002"; + when "01" & x"c41" => DATA <= x"e676"; + when "01" & x"c42" => DATA <= x"c8b1"; + when "01" & x"c43" => DATA <= x"7048"; + when "01" & x"c44" => DATA <= x"a577"; + when "01" & x"c45" => DATA <= x"f011"; + when "01" & x"c46" => DATA <= x"a576"; + when "01" & x"c47" => DATA <= x"c901"; + when "01" & x"c48" => DATA <= x"d00b"; + when "01" & x"c49" => DATA <= x"6848"; + when "01" & x"c4a" => DATA <= x"c906"; + when "01" & x"c4b" => DATA <= x"9005"; + when "01" & x"c4c" => DATA <= x"6838"; + when "01" & x"c4d" => DATA <= x"e906"; + when "01" & x"c4e" => DATA <= x"48a5"; + when "01" & x"c4f" => DATA <= x"7018"; + when "01" & x"c50" => DATA <= x"6906"; + when "01" & x"c51" => DATA <= x"aaa9"; + when "01" & x"c52" => DATA <= x"0065"; + when "01" & x"c53" => DATA <= x"71a8"; + when "01" & x"c54" => DATA <= x"6848"; + when "01" & x"c55" => DATA <= x"2006"; + when "01" & x"c56" => DATA <= x"04a6"; + when "01" & x"c57" => DATA <= x"7768"; + when "01" & x"c58" => DATA <= x"a000"; + when "01" & x"c59" => DATA <= x"c900"; + when "01" & x"c5a" => DATA <= x"f01e"; + when "01" & x"c5b" => DATA <= x"c901"; + when "01" & x"c5c" => DATA <= x"f035"; + when "01" & x"c5d" => DATA <= x"c902"; + when "01" & x"c5e" => DATA <= x"f049"; + when "01" & x"c5f" => DATA <= x"c903"; + when "01" & x"c60" => DATA <= x"f070"; + when "01" & x"c61" => DATA <= x"c906"; + when "01" & x"c62" => DATA <= x"f008"; + when "01" & x"c63" => DATA <= x"c907"; + when "01" & x"c64" => DATA <= x"f007"; + when "01" & x"c65" => DATA <= x"a900"; + when "01" & x"c66" => DATA <= x"f01e"; + when "01" & x"c67" => DATA <= x"4c75"; + when "01" & x"c68" => DATA <= x"264c"; + when "01" & x"c69" => DATA <= x"a326"; + when "01" & x"c6a" => DATA <= x"20f4"; + when "01" & x"c6b" => DATA <= x"26ad"; + when "01" & x"c6c" => DATA <= x"e5fe"; + when "01" & x"c6d" => DATA <= x"9174"; + when "01" & x"c6e" => DATA <= x"20f4"; + when "01" & x"c6f" => DATA <= x"26e6"; + when "01" & x"c70" => DATA <= x"74d0"; + when "01" & x"c71" => DATA <= x"02e6"; + when "01" & x"c72" => DATA <= x"75ca"; + when "01" & x"c73" => DATA <= x"d0ef"; + when "01" & x"c74" => DATA <= x"c676"; + when "01" & x"c75" => DATA <= x"d0eb"; + when "01" & x"c76" => DATA <= x"4cda"; + when "01" & x"c77" => DATA <= x"26b1"; + when "01" & x"c78" => DATA <= x"748d"; + when "01" & x"c79" => DATA <= x"e5fe"; + when "01" & x"c7a" => DATA <= x"20f4"; + when "01" & x"c7b" => DATA <= x"26e6"; + when "01" & x"c7c" => DATA <= x"74d0"; + when "01" & x"c7d" => DATA <= x"02e6"; + when "01" & x"c7e" => DATA <= x"75ca"; + when "01" & x"c7f" => DATA <= x"d0ef"; + when "01" & x"c80" => DATA <= x"c676"; + when "01" & x"c81" => DATA <= x"d0eb"; + when "01" & x"c82" => DATA <= x"4cda"; + when "01" & x"c83" => DATA <= x"2620"; + when "01" & x"c84" => DATA <= x"f426"; + when "01" & x"c85" => DATA <= x"ade5"; + when "01" & x"c86" => DATA <= x"fe91"; + when "01" & x"c87" => DATA <= x"74e6"; + when "01" & x"c88" => DATA <= x"74d0"; + when "01" & x"c89" => DATA <= x"02e6"; + when "01" & x"c8a" => DATA <= x"75ea"; + when "01" & x"c8b" => DATA <= x"eaad"; + when "01" & x"c8c" => DATA <= x"e5fe"; + when "01" & x"c8d" => DATA <= x"9174"; + when "01" & x"c8e" => DATA <= x"e674"; + when "01" & x"c8f" => DATA <= x"d002"; + when "01" & x"c90" => DATA <= x"e675"; + when "01" & x"c91" => DATA <= x"20f3"; + when "01" & x"c92" => DATA <= x"26ea"; + when "01" & x"c93" => DATA <= x"eaca"; + when "01" & x"c94" => DATA <= x"cad0"; + when "01" & x"c95" => DATA <= x"dfc6"; + when "01" & x"c96" => DATA <= x"76d0"; + when "01" & x"c97" => DATA <= x"db4c"; + when "01" & x"c98" => DATA <= x"da26"; + when "01" & x"c99" => DATA <= x"b174"; + when "01" & x"c9a" => DATA <= x"8de5"; + when "01" & x"c9b" => DATA <= x"fee6"; + when "01" & x"c9c" => DATA <= x"74f0"; + when "01" & x"c9d" => DATA <= x"03ea"; + when "01" & x"c9e" => DATA <= x"d002"; + when "01" & x"c9f" => DATA <= x"e675"; + when "01" & x"ca0" => DATA <= x"a573"; + when "01" & x"ca1" => DATA <= x"b174"; + when "01" & x"ca2" => DATA <= x"8de5"; + when "01" & x"ca3" => DATA <= x"fee6"; + when "01" & x"ca4" => DATA <= x"74f0"; + when "01" & x"ca5" => DATA <= x"03ea"; + when "01" & x"ca6" => DATA <= x"d002"; + when "01" & x"ca7" => DATA <= x"e675"; + when "01" & x"ca8" => DATA <= x"20f3"; + when "01" & x"ca9" => DATA <= x"26ca"; + when "01" & x"caa" => DATA <= x"cad0"; + when "01" & x"cab" => DATA <= x"dbc6"; + when "01" & x"cac" => DATA <= x"76d0"; + when "01" & x"cad" => DATA <= x"d7f0"; + when "01" & x"cae" => DATA <= x"6520"; + when "01" & x"caf" => DATA <= x"f426"; + when "01" & x"cb0" => DATA <= x"ade5"; + when "01" & x"cb1" => DATA <= x"fe91"; + when "01" & x"cb2" => DATA <= x"74ea"; + when "01" & x"cb3" => DATA <= x"eaea"; + when "01" & x"cb4" => DATA <= x"c8d0"; + when "01" & x"cb5" => DATA <= x"f5e0"; + when "01" & x"cb6" => DATA <= x"00d0"; + when "01" & x"cb7" => DATA <= x"0cc6"; + when "01" & x"cb8" => DATA <= x"76f0"; + when "01" & x"cb9" => DATA <= x"4f20"; + when "01" & x"cba" => DATA <= x"ce26"; + when "01" & x"cbb" => DATA <= x"a906"; + when "01" & x"cbc" => DATA <= x"4c9f"; + when "01" & x"cbd" => DATA <= x"25c6"; + when "01" & x"cbe" => DATA <= x"76a5"; + when "01" & x"cbf" => DATA <= x"76c9"; + when "01" & x"cc0" => DATA <= x"01d0"; + when "01" & x"cc1" => DATA <= x"f020"; + when "01" & x"cc2" => DATA <= x"ce26"; + when "01" & x"cc3" => DATA <= x"a900"; + when "01" & x"cc4" => DATA <= x"4c9f"; + when "01" & x"cc5" => DATA <= x"25b1"; + when "01" & x"cc6" => DATA <= x"748d"; + when "01" & x"cc7" => DATA <= x"e5fe"; + when "01" & x"cc8" => DATA <= x"eaea"; + when "01" & x"cc9" => DATA <= x"eac8"; + when "01" & x"cca" => DATA <= x"d0f5"; + when "01" & x"ccb" => DATA <= x"e000"; + when "01" & x"ccc" => DATA <= x"d00c"; + when "01" & x"ccd" => DATA <= x"c676"; + when "01" & x"cce" => DATA <= x"f024"; + when "01" & x"ccf" => DATA <= x"20ce"; + when "01" & x"cd0" => DATA <= x"26a9"; + when "01" & x"cd1" => DATA <= x"074c"; + when "01" & x"cd2" => DATA <= x"9f25"; + when "01" & x"cd3" => DATA <= x"c676"; + when "01" & x"cd4" => DATA <= x"a576"; + when "01" & x"cd5" => DATA <= x"c901"; + when "01" & x"cd6" => DATA <= x"d0f0"; + when "01" & x"cd7" => DATA <= x"20ce"; + when "01" & x"cd8" => DATA <= x"26a9"; + when "01" & x"cd9" => DATA <= x"014c"; + when "01" & x"cda" => DATA <= x"9f25"; + when "01" & x"cdb" => DATA <= x"e675"; + when "01" & x"cdc" => DATA <= x"a007"; + when "01" & x"cdd" => DATA <= x"b170"; + when "01" & x"cde" => DATA <= x"1869"; + when "01" & x"cdf" => DATA <= x"0191"; + when "01" & x"ce0" => DATA <= x"7060"; + when "01" & x"ce1" => DATA <= x"a987"; + when "01" & x"ce2" => DATA <= x"2006"; + when "01" & x"ce3" => DATA <= x"04a5"; + when "01" & x"ce4" => DATA <= x"72c5"; + when "01" & x"ce5" => DATA <= x"f4f0"; + when "01" & x"ce6" => DATA <= x"0585"; + when "01" & x"ce7" => DATA <= x"f48d"; + when "01" & x"ce8" => DATA <= x"30fe"; + when "01" & x"ce9" => DATA <= x"688d"; + when "01" & x"cea" => DATA <= x"34fe"; + when "01" & x"ceb" => DATA <= x"a670"; + when "01" & x"cec" => DATA <= x"a471"; + when "01" & x"ced" => DATA <= x"6860"; + when "01" & x"cee" => DATA <= x"20f3"; + when "01" & x"cef" => DATA <= x"2620"; + when "01" & x"cf0" => DATA <= x"f326"; + when "01" & x"cf1" => DATA <= x"6000"; + when "01" & x"cf2" => DATA <= x"003c"; + when "01" & x"cf3" => DATA <= x"ffff"; + when "01" & x"cf4" => DATA <= x"4f52"; + when "01" & x"cf5" => DATA <= x"4920"; + when "01" & x"cf6" => DATA <= x"2000"; + when "01" & x"cf7" => DATA <= x"003f"; + when "01" & x"cf8" => DATA <= x"39e4"; + when "01" & x"cf9" => DATA <= x"007c"; + when "01" & x"cfa" => DATA <= x"ffff"; + when "01" & x"cfb" => DATA <= x"4f52"; + when "01" & x"cfc" => DATA <= x"4920"; + when "01" & x"cfd" => DATA <= x"2000"; + when "01" & x"cfe" => DATA <= x"003f"; + when "01" & x"cff" => DATA <= x"39e4"; + when "01" & x"d00" => DATA <= x"023c"; + when "01" & x"d01" => DATA <= x"ffff"; + when "01" & x"d02" => DATA <= x"414e"; + when "01" & x"d03" => DATA <= x"4449"; + when "01" & x"d04" => DATA <= x"2000"; + when "01" & x"d05" => DATA <= x"003f"; + when "01" & x"d06" => DATA <= x"39e4"; + when "01" & x"d07" => DATA <= x"027c"; + when "01" & x"d08" => DATA <= x"ffff"; + when "01" & x"d09" => DATA <= x"414e"; + when "01" & x"d0a" => DATA <= x"4449"; + when "01" & x"d0b" => DATA <= x"2000"; + when "01" & x"d0c" => DATA <= x"003f"; + when "01" & x"d0d" => DATA <= x"39e4"; + when "01" & x"d0e" => DATA <= x"0a3c"; + when "01" & x"d0f" => DATA <= x"ffff"; + when "01" & x"d10" => DATA <= x"454f"; + when "01" & x"d11" => DATA <= x"5249"; + when "01" & x"d12" => DATA <= x"2000"; + when "01" & x"d13" => DATA <= x"003f"; + when "01" & x"d14" => DATA <= x"39e4"; + when "01" & x"d15" => DATA <= x"0a7c"; + when "01" & x"d16" => DATA <= x"ffff"; + when "01" & x"d17" => DATA <= x"454f"; + when "01" & x"d18" => DATA <= x"5249"; + when "01" & x"d19" => DATA <= x"2000"; + when "01" & x"d1a" => DATA <= x"003f"; + when "01" & x"d1b" => DATA <= x"39e4"; + when "01" & x"d1c" => DATA <= x"0800"; + when "01" & x"d1d" => DATA <= x"ffc0"; + when "01" & x"d1e" => DATA <= x"4254"; + when "01" & x"d1f" => DATA <= x"5354"; + when "01" & x"d20" => DATA <= x"2000"; + when "01" & x"d21" => DATA <= x"003f"; + when "01" & x"d22" => DATA <= x"39e4"; + when "01" & x"d23" => DATA <= x"0840"; + when "01" & x"d24" => DATA <= x"ffc0"; + when "01" & x"d25" => DATA <= x"4243"; + when "01" & x"d26" => DATA <= x"4847"; + when "01" & x"d27" => DATA <= x"2000"; + when "01" & x"d28" => DATA <= x"003f"; + when "01" & x"d29" => DATA <= x"39e4"; + when "01" & x"d2a" => DATA <= x"0880"; + when "01" & x"d2b" => DATA <= x"ffc0"; + when "01" & x"d2c" => DATA <= x"4243"; + when "01" & x"d2d" => DATA <= x"4c52"; + when "01" & x"d2e" => DATA <= x"2000"; + when "01" & x"d2f" => DATA <= x"003f"; + when "01" & x"d30" => DATA <= x"39e4"; + when "01" & x"d31" => DATA <= x"08c0"; + when "01" & x"d32" => DATA <= x"ffc0"; + when "01" & x"d33" => DATA <= x"4253"; + when "01" & x"d34" => DATA <= x"4554"; + when "01" & x"d35" => DATA <= x"2000"; + when "01" & x"d36" => DATA <= x"003f"; + when "01" & x"d37" => DATA <= x"39e4"; + when "01" & x"d38" => DATA <= x"0000"; + when "01" & x"d39" => DATA <= x"ff00"; + when "01" & x"d3a" => DATA <= x"4f52"; + when "01" & x"d3b" => DATA <= x"4920"; + when "01" & x"d3c" => DATA <= x"2000"; + when "01" & x"d3d" => DATA <= x"003f"; + when "01" & x"d3e" => DATA <= x"39e4"; + when "01" & x"d3f" => DATA <= x"0200"; + when "01" & x"d40" => DATA <= x"ff00"; + when "01" & x"d41" => DATA <= x"414e"; + when "01" & x"d42" => DATA <= x"4449"; + when "01" & x"d43" => DATA <= x"2000"; + when "01" & x"d44" => DATA <= x"003f"; + when "01" & x"d45" => DATA <= x"39e4"; + when "01" & x"d46" => DATA <= x"0400"; + when "01" & x"d47" => DATA <= x"ff00"; + when "01" & x"d48" => DATA <= x"5355"; + when "01" & x"d49" => DATA <= x"4249"; + when "01" & x"d4a" => DATA <= x"2000"; + when "01" & x"d4b" => DATA <= x"003f"; + when "01" & x"d4c" => DATA <= x"39e4"; + when "01" & x"d4d" => DATA <= x"0600"; + when "01" & x"d4e" => DATA <= x"ff00"; + when "01" & x"d4f" => DATA <= x"4144"; + when "01" & x"d50" => DATA <= x"4449"; + when "01" & x"d51" => DATA <= x"2000"; + when "01" & x"d52" => DATA <= x"003f"; + when "01" & x"d53" => DATA <= x"39e4"; + when "01" & x"d54" => DATA <= x"0a00"; + when "01" & x"d55" => DATA <= x"ff00"; + when "01" & x"d56" => DATA <= x"454f"; + when "01" & x"d57" => DATA <= x"5249"; + when "01" & x"d58" => DATA <= x"2000"; + when "01" & x"d59" => DATA <= x"003f"; + when "01" & x"d5a" => DATA <= x"39e4"; + when "01" & x"d5b" => DATA <= x"0c00"; + when "01" & x"d5c" => DATA <= x"ff00"; + when "01" & x"d5d" => DATA <= x"434d"; + when "01" & x"d5e" => DATA <= x"5049"; + when "01" & x"d5f" => DATA <= x"2000"; + when "01" & x"d60" => DATA <= x"003f"; + when "01" & x"d61" => DATA <= x"39e4"; + when "01" & x"d62" => DATA <= x"0108"; + when "01" & x"d63" => DATA <= x"f138"; + when "01" & x"d64" => DATA <= x"4d4f"; + when "01" & x"d65" => DATA <= x"5645"; + when "01" & x"d66" => DATA <= x"5000"; + when "01" & x"d67" => DATA <= x"003f"; + when "01" & x"d68" => DATA <= x"39e4"; + when "01" & x"d69" => DATA <= x"0100"; + when "01" & x"d6a" => DATA <= x"f1c0"; + when "01" & x"d6b" => DATA <= x"4254"; + when "01" & x"d6c" => DATA <= x"5354"; + when "01" & x"d6d" => DATA <= x"2000"; + when "01" & x"d6e" => DATA <= x"003f"; + when "01" & x"d6f" => DATA <= x"39e4"; + when "01" & x"d70" => DATA <= x"0140"; + when "01" & x"d71" => DATA <= x"f1c0"; + when "01" & x"d72" => DATA <= x"4243"; + when "01" & x"d73" => DATA <= x"4847"; + when "01" & x"d74" => DATA <= x"2000"; + when "01" & x"d75" => DATA <= x"003f"; + when "01" & x"d76" => DATA <= x"39e4"; + when "01" & x"d77" => DATA <= x"0180"; + when "01" & x"d78" => DATA <= x"f1c0"; + when "01" & x"d79" => DATA <= x"4243"; + when "01" & x"d7a" => DATA <= x"4c52"; + when "01" & x"d7b" => DATA <= x"2000"; + when "01" & x"d7c" => DATA <= x"003f"; + when "01" & x"d7d" => DATA <= x"39e4"; + when "01" & x"d7e" => DATA <= x"01c0"; + when "01" & x"d7f" => DATA <= x"f1c0"; + when "01" & x"d80" => DATA <= x"4253"; + when "01" & x"d81" => DATA <= x"4554"; + when "01" & x"d82" => DATA <= x"2000"; + when "01" & x"d83" => DATA <= x"003f"; + when "01" & x"d84" => DATA <= x"39e4"; + when "01" & x"d85" => DATA <= x"0040"; + when "01" & x"d86" => DATA <= x"c1c0"; + when "01" & x"d87" => DATA <= x"4d4f"; + when "01" & x"d88" => DATA <= x"5645"; + when "01" & x"d89" => DATA <= x"4100"; + when "01" & x"d8a" => DATA <= x"003f"; + when "01" & x"d8b" => DATA <= x"39e4"; + when "01" & x"d8c" => DATA <= x"0000"; + when "01" & x"d8d" => DATA <= x"c000"; + when "01" & x"d8e" => DATA <= x"4d4f"; + when "01" & x"d8f" => DATA <= x"5645"; + when "01" & x"d90" => DATA <= x"2000"; + when "01" & x"d91" => DATA <= x"003f"; + when "01" & x"d92" => DATA <= x"39e4"; + when "01" & x"d93" => DATA <= x"4afc"; + when "01" & x"d94" => DATA <= x"ffff"; + when "01" & x"d95" => DATA <= x"494c"; + when "01" & x"d96" => DATA <= x"4c45"; + when "01" & x"d97" => DATA <= x"4700"; + when "01" & x"d98" => DATA <= x"003f"; + when "01" & x"d99" => DATA <= x"39e4"; + when "01" & x"d9a" => DATA <= x"4e70"; + when "01" & x"d9b" => DATA <= x"ffff"; + when "01" & x"d9c" => DATA <= x"5245"; + when "01" & x"d9d" => DATA <= x"5345"; + when "01" & x"d9e" => DATA <= x"5400"; + when "01" & x"d9f" => DATA <= x"003f"; + when "01" & x"da0" => DATA <= x"39e4"; + when "01" & x"da1" => DATA <= x"4e71"; + when "01" & x"da2" => DATA <= x"ffff"; + when "01" & x"da3" => DATA <= x"4e4f"; + when "01" & x"da4" => DATA <= x"5020"; + when "01" & x"da5" => DATA <= x"2000"; + when "01" & x"da6" => DATA <= x"003f"; + when "01" & x"da7" => DATA <= x"39e4"; + when "01" & x"da8" => DATA <= x"4e72"; + when "01" & x"da9" => DATA <= x"ffff"; + when "01" & x"daa" => DATA <= x"5354"; + when "01" & x"dab" => DATA <= x"4f50"; + when "01" & x"dac" => DATA <= x"2000"; + when "01" & x"dad" => DATA <= x"003f"; + when "01" & x"dae" => DATA <= x"39e4"; + when "01" & x"daf" => DATA <= x"4e73"; + when "01" & x"db0" => DATA <= x"ffff"; + when "01" & x"db1" => DATA <= x"5254"; + when "01" & x"db2" => DATA <= x"4520"; + when "01" & x"db3" => DATA <= x"2000"; + when "01" & x"db4" => DATA <= x"003f"; + when "01" & x"db5" => DATA <= x"39e4"; + when "01" & x"db6" => DATA <= x"4e75"; + when "01" & x"db7" => DATA <= x"ffff"; + when "01" & x"db8" => DATA <= x"5254"; + when "01" & x"db9" => DATA <= x"5320"; + when "01" & x"dba" => DATA <= x"2000"; + when "01" & x"dbb" => DATA <= x"003f"; + when "01" & x"dbc" => DATA <= x"39e4"; + when "01" & x"dbd" => DATA <= x"4e76"; + when "01" & x"dbe" => DATA <= x"ffff"; + when "01" & x"dbf" => DATA <= x"5452"; + when "01" & x"dc0" => DATA <= x"4150"; + when "01" & x"dc1" => DATA <= x"5600"; + when "01" & x"dc2" => DATA <= x"003f"; + when "01" & x"dc3" => DATA <= x"39e4"; + when "01" & x"dc4" => DATA <= x"4e77"; + when "01" & x"dc5" => DATA <= x"ffff"; + when "01" & x"dc6" => DATA <= x"5254"; + when "01" & x"dc7" => DATA <= x"5220"; + when "01" & x"dc8" => DATA <= x"2000"; + when "01" & x"dc9" => DATA <= x"003f"; + when "01" & x"dca" => DATA <= x"39e4"; + when "01" & x"dcb" => DATA <= x"4840"; + when "01" & x"dcc" => DATA <= x"fff8"; + when "01" & x"dcd" => DATA <= x"5357"; + when "01" & x"dce" => DATA <= x"4150"; + when "01" & x"dcf" => DATA <= x"2000"; + when "01" & x"dd0" => DATA <= x"003f"; + when "01" & x"dd1" => DATA <= x"39e4"; + when "01" & x"dd2" => DATA <= x"4e50"; + when "01" & x"dd3" => DATA <= x"fff8"; + when "01" & x"dd4" => DATA <= x"4c49"; + when "01" & x"dd5" => DATA <= x"4e4b"; + when "01" & x"dd6" => DATA <= x"2000"; + when "01" & x"dd7" => DATA <= x"003f"; + when "01" & x"dd8" => DATA <= x"39e4"; + when "01" & x"dd9" => DATA <= x"4e58"; + when "01" & x"dda" => DATA <= x"fff8"; + when "01" & x"ddb" => DATA <= x"554e"; + when "01" & x"ddc" => DATA <= x"4c4b"; + when "01" & x"ddd" => DATA <= x"2000"; + when "01" & x"dde" => DATA <= x"003f"; + when "01" & x"ddf" => DATA <= x"39e4"; + when "01" & x"de0" => DATA <= x"4e60"; + when "01" & x"de1" => DATA <= x"fff0"; + when "01" & x"de2" => DATA <= x"4d4f"; + when "01" & x"de3" => DATA <= x"5645"; + when "01" & x"de4" => DATA <= x"2000"; + when "01" & x"de5" => DATA <= x"003f"; + when "01" & x"de6" => DATA <= x"39e4"; + when "01" & x"de7" => DATA <= x"4e40"; + when "01" & x"de8" => DATA <= x"fff0"; + when "01" & x"de9" => DATA <= x"5452"; + when "01" & x"dea" => DATA <= x"4150"; + when "01" & x"deb" => DATA <= x"2000"; + when "01" & x"dec" => DATA <= x"003f"; + when "01" & x"ded" => DATA <= x"39e4"; + when "01" & x"dee" => DATA <= x"4e80"; + when "01" & x"def" => DATA <= x"ffc0"; + when "01" & x"df0" => DATA <= x"4a53"; + when "01" & x"df1" => DATA <= x"5220"; + when "01" & x"df2" => DATA <= x"2000"; + when "01" & x"df3" => DATA <= x"003f"; + when "01" & x"df4" => DATA <= x"39e4"; + when "01" & x"df5" => DATA <= x"4ec0"; + when "01" & x"df6" => DATA <= x"ffc0"; + when "01" & x"df7" => DATA <= x"4a4d"; + when "01" & x"df8" => DATA <= x"5020"; + when "01" & x"df9" => DATA <= x"2000"; + when "01" & x"dfa" => DATA <= x"003f"; + when "01" & x"dfb" => DATA <= x"39e4"; + when "01" & x"dfc" => DATA <= x"4880"; + when "01" & x"dfd" => DATA <= x"feb8"; + when "01" & x"dfe" => DATA <= x"4558"; + when "01" & x"dff" => DATA <= x"5420"; + when "01" & x"e00" => DATA <= x"2000"; + when "01" & x"e01" => DATA <= x"003f"; + when "01" & x"e02" => DATA <= x"39e4"; + when "01" & x"e03" => DATA <= x"40c0"; + when "01" & x"e04" => DATA <= x"ffc0"; + when "01" & x"e05" => DATA <= x"4d4f"; + when "01" & x"e06" => DATA <= x"5645"; + when "01" & x"e07" => DATA <= x"2000"; + when "01" & x"e08" => DATA <= x"003f"; + when "01" & x"e09" => DATA <= x"39e4"; + when "01" & x"e0a" => DATA <= x"44c0"; + when "01" & x"e0b" => DATA <= x"ffc0"; + when "01" & x"e0c" => DATA <= x"4d4f"; + when "01" & x"e0d" => DATA <= x"5645"; + when "01" & x"e0e" => DATA <= x"2000"; + when "01" & x"e0f" => DATA <= x"003f"; + when "01" & x"e10" => DATA <= x"39e4"; + when "01" & x"e11" => DATA <= x"46c0"; + when "01" & x"e12" => DATA <= x"ffc0"; + when "01" & x"e13" => DATA <= x"4d4f"; + when "01" & x"e14" => DATA <= x"5645"; + when "01" & x"e15" => DATA <= x"2000"; + when "01" & x"e16" => DATA <= x"003f"; + when "01" & x"e17" => DATA <= x"39e4"; + when "01" & x"e18" => DATA <= x"4800"; + when "01" & x"e19" => DATA <= x"ffc0"; + when "01" & x"e1a" => DATA <= x"4e42"; + when "01" & x"e1b" => DATA <= x"4344"; + when "01" & x"e1c" => DATA <= x"2000"; + when "01" & x"e1d" => DATA <= x"003f"; + when "01" & x"e1e" => DATA <= x"39e4"; + when "01" & x"e1f" => DATA <= x"4840"; + when "01" & x"e20" => DATA <= x"ffc0"; + when "01" & x"e21" => DATA <= x"5045"; + when "01" & x"e22" => DATA <= x"4120"; + when "01" & x"e23" => DATA <= x"2000"; + when "01" & x"e24" => DATA <= x"003f"; + when "01" & x"e25" => DATA <= x"39e4"; + when "01" & x"e26" => DATA <= x"4ac0"; + when "01" & x"e27" => DATA <= x"ffc0"; + when "01" & x"e28" => DATA <= x"5441"; + when "01" & x"e29" => DATA <= x"5320"; + when "01" & x"e2a" => DATA <= x"2000"; + when "01" & x"e2b" => DATA <= x"003f"; + when "01" & x"e2c" => DATA <= x"39e4"; + when "01" & x"e2d" => DATA <= x"4000"; + when "01" & x"e2e" => DATA <= x"ff00"; + when "01" & x"e2f" => DATA <= x"4e45"; + when "01" & x"e30" => DATA <= x"4758"; + when "01" & x"e31" => DATA <= x"2000"; + when "01" & x"e32" => DATA <= x"003f"; + when "01" & x"e33" => DATA <= x"39e4"; + when "01" & x"e34" => DATA <= x"4200"; + when "01" & x"e35" => DATA <= x"ff00"; + when "01" & x"e36" => DATA <= x"434c"; + when "01" & x"e37" => DATA <= x"5220"; + when "01" & x"e38" => DATA <= x"2000"; + when "01" & x"e39" => DATA <= x"003f"; + when "01" & x"e3a" => DATA <= x"39e4"; + when "01" & x"e3b" => DATA <= x"4400"; + when "01" & x"e3c" => DATA <= x"ff00"; + when "01" & x"e3d" => DATA <= x"4e45"; + when "01" & x"e3e" => DATA <= x"4720"; + when "01" & x"e3f" => DATA <= x"2000"; + when "01" & x"e40" => DATA <= x"003f"; + when "01" & x"e41" => DATA <= x"39e4"; + when "01" & x"e42" => DATA <= x"4600"; + when "01" & x"e43" => DATA <= x"ff00"; + when "01" & x"e44" => DATA <= x"4e4f"; + when "01" & x"e45" => DATA <= x"5420"; + when "01" & x"e46" => DATA <= x"2000"; + when "01" & x"e47" => DATA <= x"003f"; + when "01" & x"e48" => DATA <= x"39e4"; + when "01" & x"e49" => DATA <= x"4a00"; + when "01" & x"e4a" => DATA <= x"ff00"; + when "01" & x"e4b" => DATA <= x"5453"; + when "01" & x"e4c" => DATA <= x"5420"; + when "01" & x"e4d" => DATA <= x"2000"; + when "01" & x"e4e" => DATA <= x"003f"; + when "01" & x"e4f" => DATA <= x"39e4"; + when "01" & x"e50" => DATA <= x"4880"; + when "01" & x"e51" => DATA <= x"fb80"; + when "01" & x"e52" => DATA <= x"4d4f"; + when "01" & x"e53" => DATA <= x"5645"; + when "01" & x"e54" => DATA <= x"4d00"; + when "01" & x"e55" => DATA <= x"003f"; + when "01" & x"e56" => DATA <= x"39e4"; + when "01" & x"e57" => DATA <= x"41c0"; + when "01" & x"e58" => DATA <= x"f1c0"; + when "01" & x"e59" => DATA <= x"4c45"; + when "01" & x"e5a" => DATA <= x"4120"; + when "01" & x"e5b" => DATA <= x"2000"; + when "01" & x"e5c" => DATA <= x"003f"; + when "01" & x"e5d" => DATA <= x"39e4"; + when "01" & x"e5e" => DATA <= x"4000"; + when "01" & x"e5f" => DATA <= x"f040"; + when "01" & x"e60" => DATA <= x"4348"; + when "01" & x"e61" => DATA <= x"4b20"; + when "01" & x"e62" => DATA <= x"2000"; + when "01" & x"e63" => DATA <= x"003f"; + when "01" & x"e64" => DATA <= x"39e4"; + when "01" & x"e65" => DATA <= x"50c8"; + when "01" & x"e66" => DATA <= x"f0f8"; + when "01" & x"e67" => DATA <= x"4442"; + when "01" & x"e68" => DATA <= x"2020"; + when "01" & x"e69" => DATA <= x"2000"; + when "01" & x"e6a" => DATA <= x"003f"; + when "01" & x"e6b" => DATA <= x"39e4"; + when "01" & x"e6c" => DATA <= x"50c0"; + when "01" & x"e6d" => DATA <= x"f0c0"; + when "01" & x"e6e" => DATA <= x"5320"; + when "01" & x"e6f" => DATA <= x"2020"; + when "01" & x"e70" => DATA <= x"2000"; + when "01" & x"e71" => DATA <= x"003f"; + when "01" & x"e72" => DATA <= x"39e4"; + when "01" & x"e73" => DATA <= x"5000"; + when "01" & x"e74" => DATA <= x"f100"; + when "01" & x"e75" => DATA <= x"4144"; + when "01" & x"e76" => DATA <= x"4451"; + when "01" & x"e77" => DATA <= x"2000"; + when "01" & x"e78" => DATA <= x"003f"; + when "01" & x"e79" => DATA <= x"39e4"; + when "01" & x"e7a" => DATA <= x"5100"; + when "01" & x"e7b" => DATA <= x"f100"; + when "01" & x"e7c" => DATA <= x"5355"; + when "01" & x"e7d" => DATA <= x"4251"; + when "01" & x"e7e" => DATA <= x"2000"; + when "01" & x"e7f" => DATA <= x"003f"; + when "01" & x"e80" => DATA <= x"39e4"; + when "01" & x"e81" => DATA <= x"6000"; + when "01" & x"e82" => DATA <= x"ff00"; + when "01" & x"e83" => DATA <= x"4252"; + when "01" & x"e84" => DATA <= x"4120"; + when "01" & x"e85" => DATA <= x"2000"; + when "01" & x"e86" => DATA <= x"003f"; + when "01" & x"e87" => DATA <= x"39e4"; + when "01" & x"e88" => DATA <= x"6100"; + when "01" & x"e89" => DATA <= x"ff00"; + when "01" & x"e8a" => DATA <= x"4253"; + when "01" & x"e8b" => DATA <= x"5220"; + when "01" & x"e8c" => DATA <= x"2000"; + when "01" & x"e8d" => DATA <= x"003f"; + when "01" & x"e8e" => DATA <= x"39e4"; + when "01" & x"e8f" => DATA <= x"6000"; + when "01" & x"e90" => DATA <= x"f000"; + when "01" & x"e91" => DATA <= x"4200"; + when "01" & x"e92" => DATA <= x"0000"; + when "01" & x"e93" => DATA <= x"0000"; + when "01" & x"e94" => DATA <= x"003f"; + when "01" & x"e95" => DATA <= x"39e4"; + when "01" & x"e96" => DATA <= x"7000"; + when "01" & x"e97" => DATA <= x"f100"; + when "01" & x"e98" => DATA <= x"4d4f"; + when "01" & x"e99" => DATA <= x"5645"; + when "01" & x"e9a" => DATA <= x"5100"; + when "01" & x"e9b" => DATA <= x"003f"; + when "01" & x"e9c" => DATA <= x"39e4"; + when "01" & x"e9d" => DATA <= x"8100"; + when "01" & x"e9e" => DATA <= x"f1f0"; + when "01" & x"e9f" => DATA <= x"5342"; + when "01" & x"ea0" => DATA <= x"4344"; + when "01" & x"ea1" => DATA <= x"2000"; + when "01" & x"ea2" => DATA <= x"003f"; + when "01" & x"ea3" => DATA <= x"39e4"; + when "01" & x"ea4" => DATA <= x"80c0"; + when "01" & x"ea5" => DATA <= x"f1c0"; + when "01" & x"ea6" => DATA <= x"4449"; + when "01" & x"ea7" => DATA <= x"5655"; + when "01" & x"ea8" => DATA <= x"2000"; + when "01" & x"ea9" => DATA <= x"003f"; + when "01" & x"eaa" => DATA <= x"39e4"; + when "01" & x"eab" => DATA <= x"81c0"; + when "01" & x"eac" => DATA <= x"f1c0"; + when "01" & x"ead" => DATA <= x"4449"; + when "01" & x"eae" => DATA <= x"5653"; + when "01" & x"eaf" => DATA <= x"2000"; + when "01" & x"eb0" => DATA <= x"003f"; + when "01" & x"eb1" => DATA <= x"39e4"; + when "01" & x"eb2" => DATA <= x"8000"; + when "01" & x"eb3" => DATA <= x"f000"; + when "01" & x"eb4" => DATA <= x"4f52"; + when "01" & x"eb5" => DATA <= x"2020"; + when "01" & x"eb6" => DATA <= x"2000"; + when "01" & x"eb7" => DATA <= x"003f"; + when "01" & x"eb8" => DATA <= x"39e4"; + when "01" & x"eb9" => DATA <= x"9100"; + when "01" & x"eba" => DATA <= x"f130"; + when "01" & x"ebb" => DATA <= x"5355"; + when "01" & x"ebc" => DATA <= x"4258"; + when "01" & x"ebd" => DATA <= x"2000"; + when "01" & x"ebe" => DATA <= x"003f"; + when "01" & x"ebf" => DATA <= x"39e4"; + when "01" & x"ec0" => DATA <= x"90c0"; + when "01" & x"ec1" => DATA <= x"f0c0"; + when "01" & x"ec2" => DATA <= x"5355"; + when "01" & x"ec3" => DATA <= x"4241"; + when "01" & x"ec4" => DATA <= x"2000"; + when "01" & x"ec5" => DATA <= x"003f"; + when "01" & x"ec6" => DATA <= x"39e4"; + when "01" & x"ec7" => DATA <= x"9000"; + when "01" & x"ec8" => DATA <= x"f000"; + when "01" & x"ec9" => DATA <= x"5355"; + when "01" & x"eca" => DATA <= x"4220"; + when "01" & x"ecb" => DATA <= x"2000"; + when "01" & x"ecc" => DATA <= x"003f"; + when "01" & x"ecd" => DATA <= x"39e4"; + when "01" & x"ece" => DATA <= x"b108"; + when "01" & x"ecf" => DATA <= x"f138"; + when "01" & x"ed0" => DATA <= x"434d"; + when "01" & x"ed1" => DATA <= x"504d"; + when "01" & x"ed2" => DATA <= x"2000"; + when "01" & x"ed3" => DATA <= x"003f"; + when "01" & x"ed4" => DATA <= x"39e4"; + when "01" & x"ed5" => DATA <= x"b0c0"; + when "01" & x"ed6" => DATA <= x"f0c0"; + when "01" & x"ed7" => DATA <= x"434d"; + when "01" & x"ed8" => DATA <= x"5041"; + when "01" & x"ed9" => DATA <= x"2000"; + when "01" & x"eda" => DATA <= x"003f"; + when "01" & x"edb" => DATA <= x"39e4"; + when "01" & x"edc" => DATA <= x"b100"; + when "01" & x"edd" => DATA <= x"f100"; + when "01" & x"ede" => DATA <= x"454f"; + when "01" & x"edf" => DATA <= x"5220"; + when "01" & x"ee0" => DATA <= x"2000"; + when "01" & x"ee1" => DATA <= x"003f"; + when "01" & x"ee2" => DATA <= x"39e4"; + when "01" & x"ee3" => DATA <= x"b000"; + when "01" & x"ee4" => DATA <= x"f000"; + when "01" & x"ee5" => DATA <= x"434d"; + when "01" & x"ee6" => DATA <= x"5020"; + when "01" & x"ee7" => DATA <= x"2000"; + when "01" & x"ee8" => DATA <= x"003f"; + when "01" & x"ee9" => DATA <= x"39e4"; + when "01" & x"eea" => DATA <= x"c140"; + when "01" & x"eeb" => DATA <= x"f1f8"; + when "01" & x"eec" => DATA <= x"4558"; + when "01" & x"eed" => DATA <= x"4720"; + when "01" & x"eee" => DATA <= x"2000"; + when "01" & x"eef" => DATA <= x"003f"; + when "01" & x"ef0" => DATA <= x"39e4"; + when "01" & x"ef1" => DATA <= x"c148"; + when "01" & x"ef2" => DATA <= x"f1f8"; + when "01" & x"ef3" => DATA <= x"4558"; + when "01" & x"ef4" => DATA <= x"4720"; + when "01" & x"ef5" => DATA <= x"2000"; + when "01" & x"ef6" => DATA <= x"003f"; + when "01" & x"ef7" => DATA <= x"39e4"; + when "01" & x"ef8" => DATA <= x"c188"; + when "01" & x"ef9" => DATA <= x"f1f8"; + when "01" & x"efa" => DATA <= x"4558"; + when "01" & x"efb" => DATA <= x"4720"; + when "01" & x"efc" => DATA <= x"2000"; + when "01" & x"efd" => DATA <= x"003f"; + when "01" & x"efe" => DATA <= x"39e4"; + when "01" & x"eff" => DATA <= x"c100"; + when "01" & x"f00" => DATA <= x"f1f0"; + when "01" & x"f01" => DATA <= x"4142"; + when "01" & x"f02" => DATA <= x"4344"; + when "01" & x"f03" => DATA <= x"2000"; + when "01" & x"f04" => DATA <= x"003f"; + when "01" & x"f05" => DATA <= x"39e4"; + when "01" & x"f06" => DATA <= x"c1c0"; + when "01" & x"f07" => DATA <= x"f1c0"; + when "01" & x"f08" => DATA <= x"4d55"; + when "01" & x"f09" => DATA <= x"4c53"; + when "01" & x"f0a" => DATA <= x"2000"; + when "01" & x"f0b" => DATA <= x"003f"; + when "01" & x"f0c" => DATA <= x"39e4"; + when "01" & x"f0d" => DATA <= x"c0c0"; + when "01" & x"f0e" => DATA <= x"f1c0"; + when "01" & x"f0f" => DATA <= x"4d55"; + when "01" & x"f10" => DATA <= x"4c55"; + when "01" & x"f11" => DATA <= x"2000"; + when "01" & x"f12" => DATA <= x"003f"; + when "01" & x"f13" => DATA <= x"39e4"; + when "01" & x"f14" => DATA <= x"c000"; + when "01" & x"f15" => DATA <= x"f000"; + when "01" & x"f16" => DATA <= x"414e"; + when "01" & x"f17" => DATA <= x"4420"; + when "01" & x"f18" => DATA <= x"2000"; + when "01" & x"f19" => DATA <= x"003f"; + when "01" & x"f1a" => DATA <= x"39e4"; + when "01" & x"f1b" => DATA <= x"d100"; + when "01" & x"f1c" => DATA <= x"f130"; + when "01" & x"f1d" => DATA <= x"4144"; + when "01" & x"f1e" => DATA <= x"4458"; + when "01" & x"f1f" => DATA <= x"2000"; + when "01" & x"f20" => DATA <= x"003f"; + when "01" & x"f21" => DATA <= x"39e4"; + when "01" & x"f22" => DATA <= x"d0c0"; + when "01" & x"f23" => DATA <= x"f0c0"; + when "01" & x"f24" => DATA <= x"4144"; + when "01" & x"f25" => DATA <= x"4441"; + when "01" & x"f26" => DATA <= x"2000"; + when "01" & x"f27" => DATA <= x"003f"; + when "01" & x"f28" => DATA <= x"39e4"; + when "01" & x"f29" => DATA <= x"d000"; + when "01" & x"f2a" => DATA <= x"f000"; + when "01" & x"f2b" => DATA <= x"4144"; + when "01" & x"f2c" => DATA <= x"4420"; + when "01" & x"f2d" => DATA <= x"2000"; + when "01" & x"f2e" => DATA <= x"003f"; + when "01" & x"f2f" => DATA <= x"39e4"; + when "01" & x"f30" => DATA <= x"e0c0"; + when "01" & x"f31" => DATA <= x"fec0"; + when "01" & x"f32" => DATA <= x"4153"; + when "01" & x"f33" => DATA <= x"2020"; + when "01" & x"f34" => DATA <= x"2000"; + when "01" & x"f35" => DATA <= x"003f"; + when "01" & x"f36" => DATA <= x"39e4"; + when "01" & x"f37" => DATA <= x"e2c0"; + when "01" & x"f38" => DATA <= x"fec0"; + when "01" & x"f39" => DATA <= x"4c53"; + when "01" & x"f3a" => DATA <= x"2020"; + when "01" & x"f3b" => DATA <= x"2000"; + when "01" & x"f3c" => DATA <= x"003f"; + when "01" & x"f3d" => DATA <= x"39e4"; + when "01" & x"f3e" => DATA <= x"e4c0"; + when "01" & x"f3f" => DATA <= x"fec0"; + when "01" & x"f40" => DATA <= x"524f"; + when "01" & x"f41" => DATA <= x"5820"; + when "01" & x"f42" => DATA <= x"2000"; + when "01" & x"f43" => DATA <= x"003f"; + when "01" & x"f44" => DATA <= x"39e4"; + when "01" & x"f45" => DATA <= x"e6c0"; + when "01" & x"f46" => DATA <= x"fec0"; + when "01" & x"f47" => DATA <= x"524f"; + when "01" & x"f48" => DATA <= x"2020"; + when "01" & x"f49" => DATA <= x"2000"; + when "01" & x"f4a" => DATA <= x"003f"; + when "01" & x"f4b" => DATA <= x"39e4"; + when "01" & x"f4c" => DATA <= x"e000"; + when "01" & x"f4d" => DATA <= x"f018"; + when "01" & x"f4e" => DATA <= x"4153"; + when "01" & x"f4f" => DATA <= x"2020"; + when "01" & x"f50" => DATA <= x"2000"; + when "01" & x"f51" => DATA <= x"003f"; + when "01" & x"f52" => DATA <= x"39e4"; + when "01" & x"f53" => DATA <= x"e008"; + when "01" & x"f54" => DATA <= x"f018"; + when "01" & x"f55" => DATA <= x"4c53"; + when "01" & x"f56" => DATA <= x"2020"; + when "01" & x"f57" => DATA <= x"2000"; + when "01" & x"f58" => DATA <= x"003f"; + when "01" & x"f59" => DATA <= x"39e4"; + when "01" & x"f5a" => DATA <= x"e010"; + when "01" & x"f5b" => DATA <= x"f018"; + when "01" & x"f5c" => DATA <= x"524f"; + when "01" & x"f5d" => DATA <= x"5820"; + when "01" & x"f5e" => DATA <= x"2000"; + when "01" & x"f5f" => DATA <= x"003f"; + when "01" & x"f60" => DATA <= x"39e4"; + when "01" & x"f61" => DATA <= x"e018"; + when "01" & x"f62" => DATA <= x"f018"; + when "01" & x"f63" => DATA <= x"524f"; + when "01" & x"f64" => DATA <= x"2020"; + when "01" & x"f65" => DATA <= x"2000"; + when "01" & x"f66" => DATA <= x"003f"; + when "01" & x"f67" => DATA <= x"39e4"; + when "01" & x"f68" => DATA <= x"0000"; + when "01" & x"f69" => DATA <= x"0000"; + when "01" & x"f6a" => DATA <= x"3f3f"; + when "01" & x"f6b" => DATA <= x"3f3f"; + when "01" & x"f6c" => DATA <= x"3f00"; + when "01" & x"f6d" => DATA <= x"003f"; + when "01" & x"f6e" => DATA <= x"39e4"; + when "01" & x"f6f" => DATA <= x"2532"; + when "01" & x"f70" => DATA <= x"343a"; + when "01" & x"f71" => DATA <= x"256d"; + when "01" & x"f72" => DATA <= x"693a"; + when "01" & x"f73" => DATA <= x"2573"; + when "01" & x"f74" => DATA <= x"6520"; + when "01" & x"f75" => DATA <= x"2564"; + when "01" & x"f76" => DATA <= x"792d"; + when "01" & x"f77" => DATA <= x"256d"; + when "01" & x"f78" => DATA <= x"332d"; + when "01" & x"f79" => DATA <= x"2563"; + when "01" & x"f7a" => DATA <= x"6525"; + when "01" & x"f7b" => DATA <= x"7972"; + when "01" & x"f7c" => DATA <= x"0000"; + when "01" & x"f7d" => DATA <= x"7c00"; + when "01" & x"f7e" => DATA <= x"5206"; + when "01" & x"f7f" => DATA <= x"bcbc"; + when "01" & x"f80" => DATA <= x"0010"; + when "01" & x"f81" => DATA <= x"0000"; + when "01" & x"f82" => DATA <= x"66f6"; + when "01" & x"f83" => DATA <= x"103c"; + when "01" & x"f84" => DATA <= x"002a"; + when "01" & x"f85" => DATA <= x"6100"; + when "01" & x"f86" => DATA <= x"cade"; + when "01" & x"f87" => DATA <= x"60e9"; + when "01" & x"f88" => DATA <= x"0000"; + when "01" & x"f89" => DATA <= x"0000"; + when "01" & x"f8a" => DATA <= x"0000"; + when "01" & x"f8b" => DATA <= x"0000"; + when "01" & x"f8c" => DATA <= x"0000"; + when "01" & x"f8d" => DATA <= x"0000"; + when "01" & x"f8e" => DATA <= x"0000"; + when "01" & x"f8f" => DATA <= x"0000"; + when "01" & x"f90" => DATA <= x"0000"; + when "01" & x"f91" => DATA <= x"0000"; + when "01" & x"f92" => DATA <= x"0000"; + when "01" & x"f93" => DATA <= x"0000"; + when "01" & x"f94" => DATA <= x"0000"; + when "01" & x"f95" => DATA <= x"0000"; + when "01" & x"f96" => DATA <= x"0000"; + when "01" & x"f97" => DATA <= x"0000"; + when "01" & x"f98" => DATA <= x"0000"; + when "01" & x"f99" => DATA <= x"0000"; + when "01" & x"f9a" => DATA <= x"0000"; + when "01" & x"f9b" => DATA <= x"0000"; + when "01" & x"f9c" => DATA <= x"0000"; + when "01" & x"f9d" => DATA <= x"0000"; + when "01" & x"f9e" => DATA <= x"0000"; + when "01" & x"f9f" => DATA <= x"0000"; + when "01" & x"fa0" => DATA <= x"0000"; + when "01" & x"fa1" => DATA <= x"0000"; + when "01" & x"fa2" => DATA <= x"0000"; + when "01" & x"fa3" => DATA <= x"0000"; + when "01" & x"fa4" => DATA <= x"0000"; + when "01" & x"fa5" => DATA <= x"0000"; + when "01" & x"fa6" => DATA <= x"0000"; + when "01" & x"fa7" => DATA <= x"0000"; + when "01" & x"fa8" => DATA <= x"0000"; + when "01" & x"fa9" => DATA <= x"0000"; + when "01" & x"faa" => DATA <= x"0000"; + when "01" & x"fab" => DATA <= x"0000"; + when "01" & x"fac" => DATA <= x"0000"; + when "01" & x"fad" => DATA <= x"0000"; + when "01" & x"fae" => DATA <= x"0000"; + when "01" & x"faf" => DATA <= x"0000"; + when "01" & x"fb0" => DATA <= x"0000"; + when "01" & x"fb1" => DATA <= x"0000"; + when "01" & x"fb2" => DATA <= x"0000"; + when "01" & x"fb3" => DATA <= x"0000"; + when "01" & x"fb4" => DATA <= x"0000"; + when "01" & x"fb5" => DATA <= x"0000"; + when "01" & x"fb6" => DATA <= x"0000"; + when "01" & x"fb7" => DATA <= x"0000"; + when "01" & x"fb8" => DATA <= x"0000"; + when "01" & x"fb9" => DATA <= x"0000"; + when "01" & x"fba" => DATA <= x"0000"; + when "01" & x"fbb" => DATA <= x"0000"; + when "01" & x"fbc" => DATA <= x"0000"; + when "01" & x"fbd" => DATA <= x"0000"; + when "01" & x"fbe" => DATA <= x"0000"; + when "01" & x"fbf" => DATA <= x"0000"; + when "01" & x"fc0" => DATA <= x"0000"; + when "01" & x"fc1" => DATA <= x"0000"; + when "01" & x"fc2" => DATA <= x"0000"; + when "01" & x"fc3" => DATA <= x"0000"; + when "01" & x"fc4" => DATA <= x"0000"; + when "01" & x"fc5" => DATA <= x"0000"; + when "01" & x"fc6" => DATA <= x"0000"; + when "01" & x"fc7" => DATA <= x"0000"; + when "01" & x"fc8" => DATA <= x"0000"; + when "01" & x"fc9" => DATA <= x"0000"; + when "01" & x"fca" => DATA <= x"0000"; + when "01" & x"fcb" => DATA <= x"0000"; + when "01" & x"fcc" => DATA <= x"0000"; + when "01" & x"fcd" => DATA <= x"0000"; + when "01" & x"fce" => DATA <= x"0000"; + when "01" & x"fcf" => DATA <= x"0000"; + when "01" & x"fd0" => DATA <= x"0000"; + when "01" & x"fd1" => DATA <= x"0000"; + when "01" & x"fd2" => DATA <= x"0000"; + when "01" & x"fd3" => DATA <= x"0000"; + when "01" & x"fd4" => DATA <= x"0000"; + when "01" & x"fd5" => DATA <= x"0000"; + when "01" & x"fd6" => DATA <= x"0000"; + when "01" & x"fd7" => DATA <= x"0000"; + when "01" & x"fd8" => DATA <= x"0000"; + when "01" & x"fd9" => DATA <= x"0000"; + when "01" & x"fda" => DATA <= x"0000"; + when "01" & x"fdb" => DATA <= x"0000"; + when "01" & x"fdc" => DATA <= x"0000"; + when "01" & x"fdd" => DATA <= x"0000"; + when "01" & x"fde" => DATA <= x"0000"; + when "01" & x"fdf" => DATA <= x"0000"; + when "01" & x"fe0" => DATA <= x"0000"; + when "01" & x"fe1" => DATA <= x"0000"; + when "01" & x"fe2" => DATA <= x"0000"; + when "01" & x"fe3" => DATA <= x"0000"; + when "01" & x"fe4" => DATA <= x"0000"; + when "01" & x"fe5" => DATA <= x"0000"; + when "01" & x"fe6" => DATA <= x"0000"; + when "01" & x"fe7" => DATA <= x"0000"; + when "01" & x"fe8" => DATA <= x"0000"; + when "01" & x"fe9" => DATA <= x"0000"; + when "01" & x"fea" => DATA <= x"0000"; + when "01" & x"feb" => DATA <= x"0000"; + when "01" & x"fec" => DATA <= x"0000"; + when "01" & x"fed" => DATA <= x"0000"; + when "01" & x"fee" => DATA <= x"0000"; + when "01" & x"fef" => DATA <= x"0000"; + when "01" & x"ff0" => DATA <= x"0000"; + when "01" & x"ff1" => DATA <= x"0000"; + when "01" & x"ff2" => DATA <= x"0000"; + when "01" & x"ff3" => DATA <= x"0000"; + when "01" & x"ff4" => DATA <= x"0000"; + when "01" & x"ff5" => DATA <= x"0000"; + when "01" & x"ff6" => DATA <= x"0000"; + when "01" & x"ff7" => DATA <= x"0000"; + when "01" & x"ff8" => DATA <= x"0000"; + when "01" & x"ff9" => DATA <= x"0000"; + when "01" & x"ffa" => DATA <= x"0000"; + when "01" & x"ffb" => DATA <= x"0000"; + when "01" & x"ffc" => DATA <= x"0000"; + when "01" & x"ffd" => DATA <= x"0000"; + when "01" & x"ffe" => DATA <= x"0000"; + when "01" & x"fff" => DATA <= x"0000"; + when "10" & x"000" => DATA <= x"0000"; + when "10" & x"001" => DATA <= x"0000"; + when "10" & x"002" => DATA <= x"0000"; + when "10" & x"003" => DATA <= x"0000"; + when "10" & x"004" => DATA <= x"0000"; + when "10" & x"005" => DATA <= x"0000"; + when "10" & x"006" => DATA <= x"0000"; + when "10" & x"007" => DATA <= x"0000"; + when "10" & x"008" => DATA <= x"0000"; + when "10" & x"009" => DATA <= x"0000"; + when "10" & x"00a" => DATA <= x"0000"; + when "10" & x"00b" => DATA <= x"0000"; + when "10" & x"00c" => DATA <= x"0000"; + when "10" & x"00d" => DATA <= x"0000"; + when "10" & x"00e" => DATA <= x"0000"; + when "10" & x"00f" => DATA <= x"0000"; + when "10" & x"010" => DATA <= x"0000"; + when "10" & x"011" => DATA <= x"0000"; + when "10" & x"012" => DATA <= x"0000"; + when "10" & x"013" => DATA <= x"0000"; + when "10" & x"014" => DATA <= x"0000"; + when "10" & x"015" => DATA <= x"0000"; + when "10" & x"016" => DATA <= x"0000"; + when "10" & x"017" => DATA <= x"0000"; + when "10" & x"018" => DATA <= x"0000"; + when "10" & x"019" => DATA <= x"0000"; + when "10" & x"01a" => DATA <= x"0000"; + when "10" & x"01b" => DATA <= x"0000"; + when "10" & x"01c" => DATA <= x"0000"; + when "10" & x"01d" => DATA <= x"0000"; + when "10" & x"01e" => DATA <= x"0000"; + when "10" & x"01f" => DATA <= x"0000"; + when "10" & x"020" => DATA <= x"0000"; + when "10" & x"021" => DATA <= x"0000"; + when "10" & x"022" => DATA <= x"0000"; + when "10" & x"023" => DATA <= x"0000"; + when "10" & x"024" => DATA <= x"0000"; + when "10" & x"025" => DATA <= x"0000"; + when "10" & x"026" => DATA <= x"0000"; + when "10" & x"027" => DATA <= x"0000"; + when "10" & x"028" => DATA <= x"0000"; + when "10" & x"029" => DATA <= x"0000"; + when "10" & x"02a" => DATA <= x"0000"; + when "10" & x"02b" => DATA <= x"0000"; + when "10" & x"02c" => DATA <= x"0000"; + when "10" & x"02d" => DATA <= x"0000"; + when "10" & x"02e" => DATA <= x"0000"; + when "10" & x"02f" => DATA <= x"0000"; + when "10" & x"030" => DATA <= x"0000"; + when "10" & x"031" => DATA <= x"0000"; + when "10" & x"032" => DATA <= x"0000"; + when "10" & x"033" => DATA <= x"0000"; + when "10" & x"034" => DATA <= x"0000"; + when "10" & x"035" => DATA <= x"0000"; + when "10" & x"036" => DATA <= x"0000"; + when "10" & x"037" => DATA <= x"0000"; + when "10" & x"038" => DATA <= x"0000"; + when "10" & x"039" => DATA <= x"0000"; + when "10" & x"03a" => DATA <= x"0000"; + when "10" & x"03b" => DATA <= x"0000"; + when "10" & x"03c" => DATA <= x"0000"; + when "10" & x"03d" => DATA <= x"0000"; + when "10" & x"03e" => DATA <= x"0000"; + when "10" & x"03f" => DATA <= x"0000"; + when "10" & x"040" => DATA <= x"0000"; + when "10" & x"041" => DATA <= x"0000"; + when "10" & x"042" => DATA <= x"0000"; + when "10" & x"043" => DATA <= x"0000"; + when "10" & x"044" => DATA <= x"0000"; + when "10" & x"045" => DATA <= x"0000"; + when "10" & x"046" => DATA <= x"0000"; + when "10" & x"047" => DATA <= x"0000"; + when "10" & x"048" => DATA <= x"0000"; + when "10" & x"049" => DATA <= x"0000"; + when "10" & x"04a" => DATA <= x"0000"; + when "10" & x"04b" => DATA <= x"0000"; + when "10" & x"04c" => DATA <= x"0000"; + when "10" & x"04d" => DATA <= x"0000"; + when "10" & x"04e" => DATA <= x"0000"; + when "10" & x"04f" => DATA <= x"0000"; + when "10" & x"050" => DATA <= x"0000"; + when "10" & x"051" => DATA <= x"0000"; + when "10" & x"052" => DATA <= x"0000"; + when "10" & x"053" => DATA <= x"0000"; + when "10" & x"054" => DATA <= x"0000"; + when "10" & x"055" => DATA <= x"0000"; + when "10" & x"056" => DATA <= x"0000"; + when "10" & x"057" => DATA <= x"0000"; + when "10" & x"058" => DATA <= x"0000"; + when "10" & x"059" => DATA <= x"0000"; + when "10" & x"05a" => DATA <= x"0000"; + when "10" & x"05b" => DATA <= x"0000"; + when "10" & x"05c" => DATA <= x"0000"; + when "10" & x"05d" => DATA <= x"0000"; + when "10" & x"05e" => DATA <= x"0000"; + when "10" & x"05f" => DATA <= x"0000"; + when "10" & x"060" => DATA <= x"0000"; + when "10" & x"061" => DATA <= x"0000"; + when "10" & x"062" => DATA <= x"0000"; + when "10" & x"063" => DATA <= x"0000"; + when "10" & x"064" => DATA <= x"0000"; + when "10" & x"065" => DATA <= x"0000"; + when "10" & x"066" => DATA <= x"0000"; + when "10" & x"067" => DATA <= x"0000"; + when "10" & x"068" => DATA <= x"0000"; + when "10" & x"069" => DATA <= x"0000"; + when "10" & x"06a" => DATA <= x"0000"; + when "10" & x"06b" => DATA <= x"0000"; + when "10" & x"06c" => DATA <= x"0000"; + when "10" & x"06d" => DATA <= x"0000"; + when "10" & x"06e" => DATA <= x"0000"; + when "10" & x"06f" => DATA <= x"0000"; + when "10" & x"070" => DATA <= x"0000"; + when "10" & x"071" => DATA <= x"0000"; + when "10" & x"072" => DATA <= x"0000"; + when "10" & x"073" => DATA <= x"0000"; + when "10" & x"074" => DATA <= x"0000"; + when "10" & x"075" => DATA <= x"0000"; + when "10" & x"076" => DATA <= x"0000"; + when "10" & x"077" => DATA <= x"0000"; + when "10" & x"078" => DATA <= x"0000"; + when "10" & x"079" => DATA <= x"0000"; + when "10" & x"07a" => DATA <= x"0000"; + when "10" & x"07b" => DATA <= x"0000"; + when "10" & x"07c" => DATA <= x"0000"; + when "10" & x"07d" => DATA <= x"0000"; + when "10" & x"07e" => DATA <= x"0000"; + when "10" & x"07f" => DATA <= x"0000"; + when "10" & x"080" => DATA <= x"0000"; + when "10" & x"081" => DATA <= x"0000"; + when "10" & x"082" => DATA <= x"0000"; + when "10" & x"083" => DATA <= x"0000"; + when "10" & x"084" => DATA <= x"0000"; + when "10" & x"085" => DATA <= x"0000"; + when "10" & x"086" => DATA <= x"0000"; + when "10" & x"087" => DATA <= x"0000"; + when "10" & x"088" => DATA <= x"0000"; + when "10" & x"089" => DATA <= x"0000"; + when "10" & x"08a" => DATA <= x"0000"; + when "10" & x"08b" => DATA <= x"0000"; + when "10" & x"08c" => DATA <= x"0000"; + when "10" & x"08d" => DATA <= x"0000"; + when "10" & x"08e" => DATA <= x"0000"; + when "10" & x"08f" => DATA <= x"0000"; + when "10" & x"090" => DATA <= x"0000"; + when "10" & x"091" => DATA <= x"0000"; + when "10" & x"092" => DATA <= x"0000"; + when "10" & x"093" => DATA <= x"0000"; + when "10" & x"094" => DATA <= x"0000"; + when "10" & x"095" => DATA <= x"0000"; + when "10" & x"096" => DATA <= x"0000"; + when "10" & x"097" => DATA <= x"0000"; + when "10" & x"098" => DATA <= x"0000"; + when "10" & x"099" => DATA <= x"0000"; + when "10" & x"09a" => DATA <= x"0000"; + when "10" & x"09b" => DATA <= x"0000"; + when "10" & x"09c" => DATA <= x"0000"; + when "10" & x"09d" => DATA <= x"0000"; + when "10" & x"09e" => DATA <= x"0000"; + when "10" & x"09f" => DATA <= x"0000"; + when "10" & x"0a0" => DATA <= x"0000"; + when "10" & x"0a1" => DATA <= x"0000"; + when "10" & x"0a2" => DATA <= x"0000"; + when "10" & x"0a3" => DATA <= x"0000"; + when "10" & x"0a4" => DATA <= x"0000"; + when "10" & x"0a5" => DATA <= x"0000"; + when "10" & x"0a6" => DATA <= x"0000"; + when "10" & x"0a7" => DATA <= x"0000"; + when "10" & x"0a8" => DATA <= x"0000"; + when "10" & x"0a9" => DATA <= x"0000"; + when "10" & x"0aa" => DATA <= x"0000"; + when "10" & x"0ab" => DATA <= x"0000"; + when "10" & x"0ac" => DATA <= x"0000"; + when "10" & x"0ad" => DATA <= x"0000"; + when "10" & x"0ae" => DATA <= x"0000"; + when "10" & x"0af" => DATA <= x"0000"; + when "10" & x"0b0" => DATA <= x"0000"; + when "10" & x"0b1" => DATA <= x"0000"; + when "10" & x"0b2" => DATA <= x"0000"; + when "10" & x"0b3" => DATA <= x"0000"; + when "10" & x"0b4" => DATA <= x"0000"; + when "10" & x"0b5" => DATA <= x"0000"; + when "10" & x"0b6" => DATA <= x"0000"; + when "10" & x"0b7" => DATA <= x"0000"; + when "10" & x"0b8" => DATA <= x"0000"; + when "10" & x"0b9" => DATA <= x"0000"; + when "10" & x"0ba" => DATA <= x"0000"; + when "10" & x"0bb" => DATA <= x"0000"; + when "10" & x"0bc" => DATA <= x"0000"; + when "10" & x"0bd" => DATA <= x"0000"; + when "10" & x"0be" => DATA <= x"0000"; + when "10" & x"0bf" => DATA <= x"0000"; + when "10" & x"0c0" => DATA <= x"0000"; + when "10" & x"0c1" => DATA <= x"0000"; + when "10" & x"0c2" => DATA <= x"0000"; + when "10" & x"0c3" => DATA <= x"0000"; + when "10" & x"0c4" => DATA <= x"0000"; + when "10" & x"0c5" => DATA <= x"0000"; + when "10" & x"0c6" => DATA <= x"0000"; + when "10" & x"0c7" => DATA <= x"0000"; + when "10" & x"0c8" => DATA <= x"0000"; + when "10" & x"0c9" => DATA <= x"0000"; + when "10" & x"0ca" => DATA <= x"0000"; + when "10" & x"0cb" => DATA <= x"0000"; + when "10" & x"0cc" => DATA <= x"0000"; + when "10" & x"0cd" => DATA <= x"0000"; + when "10" & x"0ce" => DATA <= x"0000"; + when "10" & x"0cf" => DATA <= x"0000"; + when "10" & x"0d0" => DATA <= x"0000"; + when "10" & x"0d1" => DATA <= x"0000"; + when "10" & x"0d2" => DATA <= x"0000"; + when "10" & x"0d3" => DATA <= x"0000"; + when "10" & x"0d4" => DATA <= x"0000"; + when "10" & x"0d5" => DATA <= x"0000"; + when "10" & x"0d6" => DATA <= x"0000"; + when "10" & x"0d7" => DATA <= x"0000"; + when "10" & x"0d8" => DATA <= x"0000"; + when "10" & x"0d9" => DATA <= x"0000"; + when "10" & x"0da" => DATA <= x"0000"; + when "10" & x"0db" => DATA <= x"0000"; + when "10" & x"0dc" => DATA <= x"0000"; + when "10" & x"0dd" => DATA <= x"0000"; + when "10" & x"0de" => DATA <= x"0000"; + when "10" & x"0df" => DATA <= x"0000"; + when "10" & x"0e0" => DATA <= x"0000"; + when "10" & x"0e1" => DATA <= x"0000"; + when "10" & x"0e2" => DATA <= x"0000"; + when "10" & x"0e3" => DATA <= x"0000"; + when "10" & x"0e4" => DATA <= x"0000"; + when "10" & x"0e5" => DATA <= x"0000"; + when "10" & x"0e6" => DATA <= x"0000"; + when "10" & x"0e7" => DATA <= x"0000"; + when "10" & x"0e8" => DATA <= x"0000"; + when "10" & x"0e9" => DATA <= x"0000"; + when "10" & x"0ea" => DATA <= x"0000"; + when "10" & x"0eb" => DATA <= x"0000"; + when "10" & x"0ec" => DATA <= x"0000"; + when "10" & x"0ed" => DATA <= x"0000"; + when "10" & x"0ee" => DATA <= x"0000"; + when "10" & x"0ef" => DATA <= x"0000"; + when "10" & x"0f0" => DATA <= x"0000"; + when "10" & x"0f1" => DATA <= x"0000"; + when "10" & x"0f2" => DATA <= x"0000"; + when "10" & x"0f3" => DATA <= x"0000"; + when "10" & x"0f4" => DATA <= x"0000"; + when "10" & x"0f5" => DATA <= x"0000"; + when "10" & x"0f6" => DATA <= x"0000"; + when "10" & x"0f7" => DATA <= x"0000"; + when "10" & x"0f8" => DATA <= x"0000"; + when "10" & x"0f9" => DATA <= x"0000"; + when "10" & x"0fa" => DATA <= x"0000"; + when "10" & x"0fb" => DATA <= x"0000"; + when "10" & x"0fc" => DATA <= x"0000"; + when "10" & x"0fd" => DATA <= x"0000"; + when "10" & x"0fe" => DATA <= x"0000"; + when "10" & x"0ff" => DATA <= x"0000"; + when "10" & x"100" => DATA <= x"0000"; + when "10" & x"101" => DATA <= x"0000"; + when "10" & x"102" => DATA <= x"0000"; + when "10" & x"103" => DATA <= x"0000"; + when "10" & x"104" => DATA <= x"0000"; + when "10" & x"105" => DATA <= x"0000"; + when "10" & x"106" => DATA <= x"0000"; + when "10" & x"107" => DATA <= x"0000"; + when "10" & x"108" => DATA <= x"0000"; + when "10" & x"109" => DATA <= x"0000"; + when "10" & x"10a" => DATA <= x"0000"; + when "10" & x"10b" => DATA <= x"0000"; + when "10" & x"10c" => DATA <= x"0000"; + when "10" & x"10d" => DATA <= x"0000"; + when "10" & x"10e" => DATA <= x"0000"; + when "10" & x"10f" => DATA <= x"0000"; + when "10" & x"110" => DATA <= x"0000"; + when "10" & x"111" => DATA <= x"0000"; + when "10" & x"112" => DATA <= x"0000"; + when "10" & x"113" => DATA <= x"0000"; + when "10" & x"114" => DATA <= x"0000"; + when "10" & x"115" => DATA <= x"0000"; + when "10" & x"116" => DATA <= x"0000"; + when "10" & x"117" => DATA <= x"0000"; + when "10" & x"118" => DATA <= x"0000"; + when "10" & x"119" => DATA <= x"0000"; + when "10" & x"11a" => DATA <= x"0000"; + when "10" & x"11b" => DATA <= x"0000"; + when "10" & x"11c" => DATA <= x"0000"; + when "10" & x"11d" => DATA <= x"0000"; + when "10" & x"11e" => DATA <= x"0000"; + when "10" & x"11f" => DATA <= x"0000"; + when "10" & x"120" => DATA <= x"0000"; + when "10" & x"121" => DATA <= x"0000"; + when "10" & x"122" => DATA <= x"0000"; + when "10" & x"123" => DATA <= x"0000"; + when "10" & x"124" => DATA <= x"0000"; + when "10" & x"125" => DATA <= x"0000"; + when "10" & x"126" => DATA <= x"0000"; + when "10" & x"127" => DATA <= x"0000"; + when "10" & x"128" => DATA <= x"0000"; + when "10" & x"129" => DATA <= x"0000"; + when "10" & x"12a" => DATA <= x"0000"; + when "10" & x"12b" => DATA <= x"0000"; + when "10" & x"12c" => DATA <= x"0000"; + when "10" & x"12d" => DATA <= x"0000"; + when "10" & x"12e" => DATA <= x"0000"; + when "10" & x"12f" => DATA <= x"0000"; + when "10" & x"130" => DATA <= x"0000"; + when "10" & x"131" => DATA <= x"0000"; + when "10" & x"132" => DATA <= x"0000"; + when "10" & x"133" => DATA <= x"0000"; + when "10" & x"134" => DATA <= x"0000"; + when "10" & x"135" => DATA <= x"0000"; + when "10" & x"136" => DATA <= x"0000"; + when "10" & x"137" => DATA <= x"0000"; + when "10" & x"138" => DATA <= x"0000"; + when "10" & x"139" => DATA <= x"0000"; + when "10" & x"13a" => DATA <= x"0000"; + when "10" & x"13b" => DATA <= x"0000"; + when "10" & x"13c" => DATA <= x"0000"; + when "10" & x"13d" => DATA <= x"0000"; + when "10" & x"13e" => DATA <= x"0000"; + when "10" & x"13f" => DATA <= x"0000"; + when "10" & x"140" => DATA <= x"0000"; + when "10" & x"141" => DATA <= x"0000"; + when "10" & x"142" => DATA <= x"0000"; + when "10" & x"143" => DATA <= x"0000"; + when "10" & x"144" => DATA <= x"0000"; + when "10" & x"145" => DATA <= x"0000"; + when "10" & x"146" => DATA <= x"0000"; + when "10" & x"147" => DATA <= x"0000"; + when "10" & x"148" => DATA <= x"0000"; + when "10" & x"149" => DATA <= x"0000"; + when "10" & x"14a" => DATA <= x"0000"; + when "10" & x"14b" => DATA <= x"0000"; + when "10" & x"14c" => DATA <= x"0000"; + when "10" & x"14d" => DATA <= x"0000"; + when "10" & x"14e" => DATA <= x"0000"; + when "10" & x"14f" => DATA <= x"0000"; + when "10" & x"150" => DATA <= x"0000"; + when "10" & x"151" => DATA <= x"0000"; + when "10" & x"152" => DATA <= x"0000"; + when "10" & x"153" => DATA <= x"0000"; + when "10" & x"154" => DATA <= x"0000"; + when "10" & x"155" => DATA <= x"0000"; + when "10" & x"156" => DATA <= x"0000"; + when "10" & x"157" => DATA <= x"0000"; + when "10" & x"158" => DATA <= x"0000"; + when "10" & x"159" => DATA <= x"0000"; + when "10" & x"15a" => DATA <= x"0000"; + when "10" & x"15b" => DATA <= x"0000"; + when "10" & x"15c" => DATA <= x"0000"; + when "10" & x"15d" => DATA <= x"0000"; + when "10" & x"15e" => DATA <= x"0000"; + when "10" & x"15f" => DATA <= x"0000"; + when "10" & x"160" => DATA <= x"0000"; + when "10" & x"161" => DATA <= x"0000"; + when "10" & x"162" => DATA <= x"0000"; + when "10" & x"163" => DATA <= x"0000"; + when "10" & x"164" => DATA <= x"0000"; + when "10" & x"165" => DATA <= x"0000"; + when "10" & x"166" => DATA <= x"0000"; + when "10" & x"167" => DATA <= x"0000"; + when "10" & x"168" => DATA <= x"0000"; + when "10" & x"169" => DATA <= x"0000"; + when "10" & x"16a" => DATA <= x"0000"; + when "10" & x"16b" => DATA <= x"0000"; + when "10" & x"16c" => DATA <= x"0000"; + when "10" & x"16d" => DATA <= x"0000"; + when "10" & x"16e" => DATA <= x"0000"; + when "10" & x"16f" => DATA <= x"0000"; + when "10" & x"170" => DATA <= x"0000"; + when "10" & x"171" => DATA <= x"0000"; + when "10" & x"172" => DATA <= x"0000"; + when "10" & x"173" => DATA <= x"0000"; + when "10" & x"174" => DATA <= x"0000"; + when "10" & x"175" => DATA <= x"0000"; + when "10" & x"176" => DATA <= x"0000"; + when "10" & x"177" => DATA <= x"0000"; + when "10" & x"178" => DATA <= x"0000"; + when "10" & x"179" => DATA <= x"0000"; + when "10" & x"17a" => DATA <= x"0000"; + when "10" & x"17b" => DATA <= x"0000"; + when "10" & x"17c" => DATA <= x"0000"; + when "10" & x"17d" => DATA <= x"0000"; + when "10" & x"17e" => DATA <= x"0000"; + when "10" & x"17f" => DATA <= x"0000"; + when "10" & x"180" => DATA <= x"0000"; + when "10" & x"181" => DATA <= x"0000"; + when "10" & x"182" => DATA <= x"0000"; + when "10" & x"183" => DATA <= x"0000"; + when "10" & x"184" => DATA <= x"0000"; + when "10" & x"185" => DATA <= x"0000"; + when "10" & x"186" => DATA <= x"0000"; + when "10" & x"187" => DATA <= x"0000"; + when "10" & x"188" => DATA <= x"0000"; + when "10" & x"189" => DATA <= x"0000"; + when "10" & x"18a" => DATA <= x"0000"; + when "10" & x"18b" => DATA <= x"0000"; + when "10" & x"18c" => DATA <= x"0000"; + when "10" & x"18d" => DATA <= x"0000"; + when "10" & x"18e" => DATA <= x"0000"; + when "10" & x"18f" => DATA <= x"0000"; + when "10" & x"190" => DATA <= x"0000"; + when "10" & x"191" => DATA <= x"0000"; + when "10" & x"192" => DATA <= x"0000"; + when "10" & x"193" => DATA <= x"0000"; + when "10" & x"194" => DATA <= x"0000"; + when "10" & x"195" => DATA <= x"0000"; + when "10" & x"196" => DATA <= x"0000"; + when "10" & x"197" => DATA <= x"0000"; + when "10" & x"198" => DATA <= x"0000"; + when "10" & x"199" => DATA <= x"0000"; + when "10" & x"19a" => DATA <= x"0000"; + when "10" & x"19b" => DATA <= x"0000"; + when "10" & x"19c" => DATA <= x"0000"; + when "10" & x"19d" => DATA <= x"0000"; + when "10" & x"19e" => DATA <= x"0000"; + when "10" & x"19f" => DATA <= x"0000"; + when "10" & x"1a0" => DATA <= x"0000"; + when "10" & x"1a1" => DATA <= x"0000"; + when "10" & x"1a2" => DATA <= x"0000"; + when "10" & x"1a3" => DATA <= x"0000"; + when "10" & x"1a4" => DATA <= x"0000"; + when "10" & x"1a5" => DATA <= x"0000"; + when "10" & x"1a6" => DATA <= x"0000"; + when "10" & x"1a7" => DATA <= x"0000"; + when "10" & x"1a8" => DATA <= x"0000"; + when "10" & x"1a9" => DATA <= x"0000"; + when "10" & x"1aa" => DATA <= x"0000"; + when "10" & x"1ab" => DATA <= x"0000"; + when "10" & x"1ac" => DATA <= x"0000"; + when "10" & x"1ad" => DATA <= x"0000"; + when "10" & x"1ae" => DATA <= x"0000"; + when "10" & x"1af" => DATA <= x"0000"; + when "10" & x"1b0" => DATA <= x"0000"; + when "10" & x"1b1" => DATA <= x"0000"; + when "10" & x"1b2" => DATA <= x"0000"; + when "10" & x"1b3" => DATA <= x"0000"; + when "10" & x"1b4" => DATA <= x"0000"; + when "10" & x"1b5" => DATA <= x"0000"; + when "10" & x"1b6" => DATA <= x"0000"; + when "10" & x"1b7" => DATA <= x"0000"; + when "10" & x"1b8" => DATA <= x"0000"; + when "10" & x"1b9" => DATA <= x"0000"; + when "10" & x"1ba" => DATA <= x"0000"; + when "10" & x"1bb" => DATA <= x"0000"; + when "10" & x"1bc" => DATA <= x"0000"; + when "10" & x"1bd" => DATA <= x"0000"; + when "10" & x"1be" => DATA <= x"0000"; + when "10" & x"1bf" => DATA <= x"0000"; + when "10" & x"1c0" => DATA <= x"0000"; + when "10" & x"1c1" => DATA <= x"0000"; + when "10" & x"1c2" => DATA <= x"0000"; + when "10" & x"1c3" => DATA <= x"0000"; + when "10" & x"1c4" => DATA <= x"0000"; + when "10" & x"1c5" => DATA <= x"0000"; + when "10" & x"1c6" => DATA <= x"0000"; + when "10" & x"1c7" => DATA <= x"0000"; + when "10" & x"1c8" => DATA <= x"0000"; + when "10" & x"1c9" => DATA <= x"0000"; + when "10" & x"1ca" => DATA <= x"0000"; + when "10" & x"1cb" => DATA <= x"0000"; + when "10" & x"1cc" => DATA <= x"0000"; + when "10" & x"1cd" => DATA <= x"0000"; + when "10" & x"1ce" => DATA <= x"0000"; + when "10" & x"1cf" => DATA <= x"0000"; + when "10" & x"1d0" => DATA <= x"0000"; + when "10" & x"1d1" => DATA <= x"0000"; + when "10" & x"1d2" => DATA <= x"0000"; + when "10" & x"1d3" => DATA <= x"0000"; + when "10" & x"1d4" => DATA <= x"0000"; + when "10" & x"1d5" => DATA <= x"0000"; + when "10" & x"1d6" => DATA <= x"0000"; + when "10" & x"1d7" => DATA <= x"0000"; + when "10" & x"1d8" => DATA <= x"0000"; + when "10" & x"1d9" => DATA <= x"0000"; + when "10" & x"1da" => DATA <= x"0000"; + when "10" & x"1db" => DATA <= x"0000"; + when "10" & x"1dc" => DATA <= x"0000"; + when "10" & x"1dd" => DATA <= x"0000"; + when "10" & x"1de" => DATA <= x"0000"; + when "10" & x"1df" => DATA <= x"0000"; + when "10" & x"1e0" => DATA <= x"0000"; + when "10" & x"1e1" => DATA <= x"0000"; + when "10" & x"1e2" => DATA <= x"0000"; + when "10" & x"1e3" => DATA <= x"0000"; + when "10" & x"1e4" => DATA <= x"0000"; + when "10" & x"1e5" => DATA <= x"0000"; + when "10" & x"1e6" => DATA <= x"0000"; + when "10" & x"1e7" => DATA <= x"0000"; + when "10" & x"1e8" => DATA <= x"0000"; + when "10" & x"1e9" => DATA <= x"0000"; + when "10" & x"1ea" => DATA <= x"0000"; + when "10" & x"1eb" => DATA <= x"0000"; + when "10" & x"1ec" => DATA <= x"0000"; + when "10" & x"1ed" => DATA <= x"0000"; + when "10" & x"1ee" => DATA <= x"0000"; + when "10" & x"1ef" => DATA <= x"0000"; + when "10" & x"1f0" => DATA <= x"0000"; + when "10" & x"1f1" => DATA <= x"0000"; + when "10" & x"1f2" => DATA <= x"0000"; + when "10" & x"1f3" => DATA <= x"0000"; + when "10" & x"1f4" => DATA <= x"0000"; + when "10" & x"1f5" => DATA <= x"0000"; + when "10" & x"1f6" => DATA <= x"0000"; + when "10" & x"1f7" => DATA <= x"0000"; + when "10" & x"1f8" => DATA <= x"0000"; + when "10" & x"1f9" => DATA <= x"0000"; + when "10" & x"1fa" => DATA <= x"0000"; + when "10" & x"1fb" => DATA <= x"0000"; + when "10" & x"1fc" => DATA <= x"0000"; + when "10" & x"1fd" => DATA <= x"0000"; + when "10" & x"1fe" => DATA <= x"0000"; + when "10" & x"1ff" => DATA <= x"0000"; + when "10" & x"200" => DATA <= x"0000"; + when "10" & x"201" => DATA <= x"0000"; + when "10" & x"202" => DATA <= x"0000"; + when "10" & x"203" => DATA <= x"0000"; + when "10" & x"204" => DATA <= x"0000"; + when "10" & x"205" => DATA <= x"0000"; + when "10" & x"206" => DATA <= x"0000"; + when "10" & x"207" => DATA <= x"0000"; + when "10" & x"208" => DATA <= x"0000"; + when "10" & x"209" => DATA <= x"0000"; + when "10" & x"20a" => DATA <= x"0000"; + when "10" & x"20b" => DATA <= x"0000"; + when "10" & x"20c" => DATA <= x"0000"; + when "10" & x"20d" => DATA <= x"0000"; + when "10" & x"20e" => DATA <= x"0000"; + when "10" & x"20f" => DATA <= x"0000"; + when "10" & x"210" => DATA <= x"0000"; + when "10" & x"211" => DATA <= x"0000"; + when "10" & x"212" => DATA <= x"0000"; + when "10" & x"213" => DATA <= x"0000"; + when "10" & x"214" => DATA <= x"0000"; + when "10" & x"215" => DATA <= x"0000"; + when "10" & x"216" => DATA <= x"0000"; + when "10" & x"217" => DATA <= x"0000"; + when "10" & x"218" => DATA <= x"0000"; + when "10" & x"219" => DATA <= x"0000"; + when "10" & x"21a" => DATA <= x"0000"; + when "10" & x"21b" => DATA <= x"0000"; + when "10" & x"21c" => DATA <= x"0000"; + when "10" & x"21d" => DATA <= x"0000"; + when "10" & x"21e" => DATA <= x"0000"; + when "10" & x"21f" => DATA <= x"0000"; + when "10" & x"220" => DATA <= x"0000"; + when "10" & x"221" => DATA <= x"0000"; + when "10" & x"222" => DATA <= x"0000"; + when "10" & x"223" => DATA <= x"0000"; + when "10" & x"224" => DATA <= x"0000"; + when "10" & x"225" => DATA <= x"0000"; + when "10" & x"226" => DATA <= x"0000"; + when "10" & x"227" => DATA <= x"0000"; + when "10" & x"228" => DATA <= x"0000"; + when "10" & x"229" => DATA <= x"0000"; + when "10" & x"22a" => DATA <= x"0000"; + when "10" & x"22b" => DATA <= x"0000"; + when "10" & x"22c" => DATA <= x"0000"; + when "10" & x"22d" => DATA <= x"0000"; + when "10" & x"22e" => DATA <= x"0000"; + when "10" & x"22f" => DATA <= x"0000"; + when "10" & x"230" => DATA <= x"0000"; + when "10" & x"231" => DATA <= x"0000"; + when "10" & x"232" => DATA <= x"0000"; + when "10" & x"233" => DATA <= x"0000"; + when "10" & x"234" => DATA <= x"0000"; + when "10" & x"235" => DATA <= x"0000"; + when "10" & x"236" => DATA <= x"0000"; + when "10" & x"237" => DATA <= x"0000"; + when "10" & x"238" => DATA <= x"0000"; + when "10" & x"239" => DATA <= x"0000"; + when "10" & x"23a" => DATA <= x"0000"; + when "10" & x"23b" => DATA <= x"0000"; + when "10" & x"23c" => DATA <= x"0000"; + when "10" & x"23d" => DATA <= x"0000"; + when "10" & x"23e" => DATA <= x"0000"; + when "10" & x"23f" => DATA <= x"0000"; + when "10" & x"240" => DATA <= x"0000"; + when "10" & x"241" => DATA <= x"0000"; + when "10" & x"242" => DATA <= x"0000"; + when "10" & x"243" => DATA <= x"0000"; + when "10" & x"244" => DATA <= x"0000"; + when "10" & x"245" => DATA <= x"0000"; + when "10" & x"246" => DATA <= x"0000"; + when "10" & x"247" => DATA <= x"0000"; + when "10" & x"248" => DATA <= x"0000"; + when "10" & x"249" => DATA <= x"0000"; + when "10" & x"24a" => DATA <= x"0000"; + when "10" & x"24b" => DATA <= x"0000"; + when "10" & x"24c" => DATA <= x"0000"; + when "10" & x"24d" => DATA <= x"0000"; + when "10" & x"24e" => DATA <= x"0000"; + when "10" & x"24f" => DATA <= x"0000"; + when "10" & x"250" => DATA <= x"0000"; when "10" & x"251" => DATA <= x"1000"; when "10" & x"252" => DATA <= x"e0e0"; when "10" & x"253" => DATA <= x"e0e0"; From 83e052940d9b7474af870a9e9b97ea660173eed4 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 12 Sep 2015 15:55:22 +0100 Subject: [PATCH 35/61] 68000 Co Pro: Escape, SAVE, LOAD and Lang XFER now working Change-Id: I2b20848fb1b64c428202f0cb77fc1a7a5e7431dd --- src/LX9Co_CoPro68000.vhd | 50 ++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/src/LX9Co_CoPro68000.vhd b/src/LX9Co_CoPro68000.vhd index 7893acc..75a6e34 100644 --- a/src/LX9Co_CoPro68000.vhd +++ b/src/LX9Co_CoPro68000.vhd @@ -48,9 +48,11 @@ architecture BEHAVIORAL of LX9CoPro68000 is ------------------------------------------------- signal p_cs_b : std_logic; + signal p_cs_b_old : std_logic; signal tube_cs_b : std_logic; signal p_data_in : std_logic_vector (7 downto 0); signal p_data_out : std_logic_vector (7 downto 0); + signal p_data_out_r : std_logic_vector (7 downto 0); ------------------------------------------------- -- ram/rom signals @@ -165,10 +167,26 @@ begin ram_cs_b <= '0' when cpu_as = '0' and p_cs_b = '1' and rom_cs_b = '1' else '1'; + -- This is a bit of a cludge, but the 68000 asserts UDS/LDS for multiple cycles + -- which causes problems reading R3 data (address 101) because of an anomaly/bug + -- in the Tube implementation of R3. To get around this, we latch the data beging read + + tube_data_latch : process(cpu_clk) + begin + if rising_edge(cpu_clk) then + if (cpu_clken = '1') then + p_cs_b_old <= p_cs_b; + if (p_cs_b_old = '1' and p_cs_b = '0') then + p_data_out_r <= p_data_out; + end if; + end if; + end if; + end process; + cpu_din <= - p_data_out & p_data_out when p_cs_b = '0' else - rom_data_out when rom_cs_b = '0' else - ram_data when ram_cs_b = '0' else + p_data_out_r & p_data_out_r when p_cs_b = '0' else + rom_data_out when rom_cs_b = '0' else + ram_data when ram_cs_b = '0' else x"f1f1"; ram_ub_b <= cpu_uds; @@ -185,15 +203,23 @@ begin -- test signals -------------------------------------------------------- - test(8) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f0074" else '0'; -- nmi vector - test(7) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f0602" else '0'; -- default nmi - test(6) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f05a6" else '0'; -- type 00 nmi - test(5) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f05ba" else '0'; -- type 01 nmi - - test(4) <= cpu_R_W_n; - test(3) <= tube_cs_b; - test(2) <= cpu_irq_n_sync; - test(1) <= cpu_nmi_n_sync; + test(8) <= cpu_clken; + test(7) <= tube_cs_b; + test(6) <= '1' when p_cs_b = '0' and cpu_addr(2 downto 1) & cpu_uds = "101" and cpu_R_W_n = '1' else '0'; + test(5) <= cpu_NMI_n; + test(4) <= cpu_as; + test(3) <= cpu_uds; + test(2) <= cpu_lds; + test(1) <= cpu_R_W_n; + +-- test(8) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f0074" else '0'; -- nmi vector +-- test(7) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f0602" else '0'; -- default nmi +-- test(6) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f05a6" else '0'; -- type 00 nmi +-- test(5) <= '1' when cpu_addr(23 downto 1) & '0' = x"3f05ba" else '0'; -- type 01 nmi +-- test(4) <= cpu_R_W_n; +-- test(3) <= tube_cs_b; +-- test(2) <= cpu_irq_n_sync; +-- test(1) <= cpu_nmi_n_sync; -- test <= cpu_as & cpu_R_W_n & tube_cs_b & cpu_irq_n_sync & cpu_nmi_n_sync & trig2 & trig1 & trig0; From 5deedba895a6628ad792468cd2edb5ce918fd6d5 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 12 Sep 2015 19:19:26 +0100 Subject: [PATCH 36/61] Co Pro 68000: Final touches to an initial release Change-Id: I8953696f493addb3567976f8a6325d4049c9b025 --- LX9Co-68000.xise | 14 +- gen_mcs.sh | 5 +- ise_build_all.tcl | 3 + ise_clean_all.tcl | 3 + src/ICAP_core.v | 2 + src/LX9Co_CoPro68000.vhd | 24 +-- src/ROM/tuberom_68000.vhd | 442 +++++++++++++++++++------------------- 7 files changed, 251 insertions(+), 242 deletions(-) diff --git a/LX9Co-68000.xise b/LX9Co-68000.xise index 5c7fae0..914430c 100644 --- a/LX9Co-68000.xise +++ b/LX9Co-68000.xise @@ -16,7 +16,7 @@ - + @@ -40,13 +40,13 @@ - + - + - + @@ -65,11 +65,11 @@ - + - + @@ -77,7 +77,7 @@ - + diff --git a/gen_mcs.sh b/gen_mcs.sh index df79ce8..c90a211 100755 --- a/gen_mcs.sh +++ b/gen_mcs.sh @@ -12,8 +12,8 @@ # design 10xx - 0x1f8000 - working/LX9CoPro6502fast.bit (32/16/8/4MHz) # design 11xx - 0x24c000 - working/LX9CoProZ80fast.bit(36/24/12/8Mhz) # design 0111 - 0x2a0000 - working/LX9CoProPDP11.bit -# design 0110 - 0x2f4000 - spare -# design 0101 - 0x348000 - spare +# design 0110 - 0x2f4000 - working/LX9CoProNull.bit +# design 0101 - 0x348000 - working/LX9CoPro68000.bit # design ???? - 0x39c000 - spare NAME=multiboot/LX9CoProCombined_$(date +"%Y%m%d_%H%M")_$USER @@ -31,6 +31,7 @@ promgen \ -u 24C000 working/LX9CoProZ80fast.bit \ -u 2A0000 working/LX9CoProPDP11.bit \ -u 2F4000 working/LX9CoProNull.bit \ +-u 348000 working/LX9CoPro68000.bit \ -o $NAME.mcs -p mcs -w -spi -s 8192 rm -f $NAME.cfi $NAME.prm diff --git a/ise_build_all.tcl b/ise_build_all.tcl index af6cf4e..cec55ed 100755 --- a/ise_build_all.tcl +++ b/ise_build_all.tcl @@ -26,6 +26,9 @@ project close project open LX9Co-PDP11.xise process run "Generate Programming File" project close +project open LX9Co-68000.xise +process run "Generate Programming File" +project close project open LX9Co-Null.xise process run "Generate Programming File" project close diff --git a/ise_clean_all.tcl b/ise_clean_all.tcl index 09c1e4c..eb386b2 100755 --- a/ise_clean_all.tcl +++ b/ise_clean_all.tcl @@ -26,6 +26,9 @@ project close project open LX9Co-PDP11.xise project clean project close +project open LX9Co-68000.xise +project clean +project close project open LX9Co-Null.xise project clean project close diff --git a/src/ICAP_core.v b/src/ICAP_core.v index 1bdb4b4..8339f99 100644 --- a/src/ICAP_core.v +++ b/src/ICAP_core.v @@ -334,6 +334,7 @@ module ICAP_core 5'b00010: icap_din = 16'hC000; 5'b00011: icap_din = 16'h0000; 5'b00100: icap_din = 16'h4000; + 5'b00101: icap_din = 16'h8000; 5'b00111: icap_din = 16'h0000; 5'b01000: icap_din = 16'h8000; 5'b01001: icap_din = 16'h8000; @@ -369,6 +370,7 @@ module ICAP_core 5'b00010: icap_din = 16'h030f; 5'b00011: icap_din = 16'h0315; 5'b00100: icap_din = 16'h031a; + 5'b00101: icap_din = 16'h0334; 5'b00111: icap_din = 16'h032a; 5'b01000: icap_din = 16'h031f; 5'b01001: icap_din = 16'h031f; diff --git a/src/LX9Co_CoPro68000.vhd b/src/LX9Co_CoPro68000.vhd index 75a6e34..80e8987 100644 --- a/src/LX9Co_CoPro68000.vhd +++ b/src/LX9Co_CoPro68000.vhd @@ -87,17 +87,17 @@ begin -- instantiated components --------------------------------------------------------------------- --- inst_ICAP_config : entity work.ICAP_config port map ( --- fastclk => fastclk, --- sw_in => sw, --- sw_out => open, --- h_addr => h_addr, --- h_cs_b => h_cs_b, --- h_data => h_data, --- h_phi2 => h_phi2, --- h_rdnw => h_rdnw, --- h_rst_b => h_rst_b --- ); + inst_icap_config : entity work.icap_config port map ( + fastclk => fastclk, + sw_in => sw, + sw_out => open, + h_addr => h_addr, + h_cs_b => h_cs_b, + h_data => h_data, + h_phi2 => h_phi2, + h_rdnw => h_rdnw, + h_rst_b => h_rst_b + ); inst_dcm_32_16 : entity work.dcm_32_16 port map ( CLKIN_IN => fastclk, @@ -117,7 +117,7 @@ begin clkena_in => cpu_clken, data_in => cpu_din, IPL => CPU_NMI_n_sync & CPU_IRQ_n_sync & CPU_NMI_n_sync, - dtack => '0', -- TODO FIXME + dtack => '0', addr => cpu_addr, data_out => cpu_dout, as => cpu_as, diff --git a/src/ROM/tuberom_68000.vhd b/src/ROM/tuberom_68000.vhd index dcaa199..f67fa4e 100644 --- a/src/ROM/tuberom_68000.vhd +++ b/src/ROM/tuberom_68000.vhd @@ -3848,223 +3848,223 @@ begin when "00" & x"eea" => DATA <= x"203c"; when "00" & x"eeb" => DATA <= x"0000"; when "00" & x"eec" => DATA <= x"0600"; - when "00" & x"eed" => DATA <= x"123c"; - when "00" & x"eee" => DATA <= x"00ff"; - when "00" & x"eef" => DATA <= x"143c"; - when "00" & x"ef0" => DATA <= x"0020"; - when "00" & x"ef1" => DATA <= x"163c"; - when "00" & x"ef2" => DATA <= x"00ff"; - when "00" & x"ef3" => DATA <= x"207c"; - when "00" & x"ef4" => DATA <= x"0000"; - when "00" & x"ef5" => DATA <= x"007d"; - when "00" & x"ef6" => DATA <= x"4e4c"; - when "00" & x"ef7" => DATA <= x"6500"; - when "00" & x"ef8" => DATA <= x"00b8"; - when "00" & x"ef9" => DATA <= x"2c7c"; - when "00" & x"efa" => DATA <= x"0000"; - when "00" & x"efb" => DATA <= x"0600"; - when "00" & x"efc" => DATA <= x"101e"; - when "00" & x"efd" => DATA <= x"b03c"; - when "00" & x"efe" => DATA <= x"003f"; - when "00" & x"eff" => DATA <= x"6700"; - when "00" & x"f00" => DATA <= x"02c8"; - when "00" & x"f01" => DATA <= x"b03c"; - when "00" & x"f02" => DATA <= x"002a"; - when "00" & x"f03" => DATA <= x"6700"; - when "00" & x"f04" => DATA <= x"03b2"; - when "00" & x"f05" => DATA <= x"0200"; - when "00" & x"f06" => DATA <= x"00df"; - when "00" & x"f07" => DATA <= x"b03c"; - when "00" & x"f08" => DATA <= x"0042"; - when "00" & x"f09" => DATA <= x"6700"; - when "00" & x"f0a" => DATA <= x"009e"; - when "00" & x"f0b" => DATA <= x"b03c"; - when "00" & x"f0c" => DATA <= x"0044"; - when "00" & x"f0d" => DATA <= x"6700"; - when "00" & x"f0e" => DATA <= x"0060"; - when "00" & x"f0f" => DATA <= x"b03c"; - when "00" & x"f10" => DATA <= x"0045"; - when "00" & x"f11" => DATA <= x"6700"; - when "00" & x"f12" => DATA <= x"00f2"; - when "00" & x"f13" => DATA <= x"b03c"; - when "00" & x"f14" => DATA <= x"0046"; - when "00" & x"f15" => DATA <= x"6700"; - when "00" & x"f16" => DATA <= x"01a0"; - when "00" & x"f17" => DATA <= x"b03c"; - when "00" & x"f18" => DATA <= x"0047"; - when "00" & x"f19" => DATA <= x"6700"; - when "00" & x"f1a" => DATA <= x"01d2"; - when "00" & x"f1b" => DATA <= x"b03c"; - when "00" & x"f1c" => DATA <= x"0048"; - when "00" & x"f1d" => DATA <= x"6700"; - when "00" & x"f1e" => DATA <= x"01e6"; - when "00" & x"f1f" => DATA <= x"b03c"; - when "00" & x"f20" => DATA <= x"004d"; - when "00" & x"f21" => DATA <= x"6700"; - when "00" & x"f22" => DATA <= x"0292"; - when "00" & x"f23" => DATA <= x"b03c"; - when "00" & x"f24" => DATA <= x"0051"; - when "00" & x"f25" => DATA <= x"6700"; - when "00" & x"f26" => DATA <= x"02c0"; - when "00" & x"f27" => DATA <= x"b03c"; - when "00" & x"f28" => DATA <= x"0052"; - when "00" & x"f29" => DATA <= x"6700"; - when "00" & x"f2a" => DATA <= x"02be"; - when "00" & x"f2b" => DATA <= x"b03c"; - when "00" & x"f2c" => DATA <= x"0053"; - when "00" & x"f2d" => DATA <= x"6700"; - when "00" & x"f2e" => DATA <= x"0012"; - when "00" & x"f2f" => DATA <= x"b03c"; - when "00" & x"f30" => DATA <= x"0054"; - when "00" & x"f31" => DATA <= x"6700"; - when "00" & x"f32" => DATA <= x"000a"; - when "00" & x"f33" => DATA <= x"b03c"; - when "00" & x"f34" => DATA <= x"0056"; - when "00" & x"f35" => DATA <= x"6700"; - when "00" & x"f36" => DATA <= x"0358"; - when "00" & x"f37" => DATA <= x"203c"; - when "00" & x"f38" => DATA <= x"003f"; - when "00" & x"f39" => DATA <= x"2b07"; - when "00" & x"f3a" => DATA <= x"6100"; - when "00" & x"f3b" => DATA <= x"eb8c"; - when "00" & x"f3c" => DATA <= x"6000"; - when "00" & x"f3d" => DATA <= x"ff4e"; - when "00" & x"f3e" => DATA <= x"6100"; - when "00" & x"f3f" => DATA <= x"08a6"; - when "00" & x"f40" => DATA <= x"7010"; - when "00" & x"f41" => DATA <= x"220e"; - when "00" & x"f42" => DATA <= x"6100"; - when "00" & x"f43" => DATA <= x"f14a"; - when "00" & x"f44" => DATA <= x"6900"; - when "00" & x"f45" => DATA <= x"023e"; - when "00" & x"f46" => DATA <= x"2c41"; - when "00" & x"f47" => DATA <= x"2002"; - when "00" & x"f48" => DATA <= x"223c"; - when "00" & x"f49" => DATA <= x"0000"; - when "00" & x"f4a" => DATA <= x"0600"; - when "00" & x"f4b" => DATA <= x"6100"; - when "00" & x"f4c" => DATA <= x"fc78"; - when "00" & x"f4d" => DATA <= x"2001"; - when "00" & x"f4e" => DATA <= x"6100"; - when "00" & x"f4f" => DATA <= x"eb64"; - when "00" & x"f50" => DATA <= x"6100"; - when "00" & x"f51" => DATA <= x"eb74"; - when "00" & x"f52" => DATA <= x"6000"; - when "00" & x"f53" => DATA <= x"ff22"; - when "00" & x"f54" => DATA <= x"707e"; - when "00" & x"f55" => DATA <= x"6100"; - when "00" & x"f56" => DATA <= x"ec2a"; - when "00" & x"f57" => DATA <= x"6000"; - when "00" & x"f58" => DATA <= x"ff18"; - when "00" & x"f59" => DATA <= x"6100"; - when "00" & x"f5a" => DATA <= x"0870"; - when "00" & x"f5b" => DATA <= x"7010"; - when "00" & x"f5c" => DATA <= x"220e"; - when "00" & x"f5d" => DATA <= x"6100"; - when "00" & x"f5e" => DATA <= x"f114"; - when "00" & x"f5f" => DATA <= x"6900"; - when "00" & x"f60" => DATA <= x"0208"; - when "00" & x"f61" => DATA <= x"2842"; - when "00" & x"f62" => DATA <= x"6100"; - when "00" & x"f63" => DATA <= x"086c"; - when "00" & x"f64" => DATA <= x"7010"; - when "00" & x"f65" => DATA <= x"6100"; - when "00" & x"f66" => DATA <= x"f104"; - when "00" & x"f67" => DATA <= x"6900"; - when "00" & x"f68" => DATA <= x"01f8"; - when "00" & x"f69" => DATA <= x"2a42"; - when "00" & x"f6a" => DATA <= x"6100"; - when "00" & x"f6b" => DATA <= x"085c"; - when "00" & x"f6c" => DATA <= x"7010"; - when "00" & x"f6d" => DATA <= x"6100"; - when "00" & x"f6e" => DATA <= x"f0f4"; - when "00" & x"f6f" => DATA <= x"6900"; - when "00" & x"f70" => DATA <= x"01e8"; - when "00" & x"f71" => DATA <= x"2c41"; - when "00" & x"f72" => DATA <= x"1e02"; - when "00" & x"f73" => DATA <= x"be1c"; - when "00" & x"f74" => DATA <= x"6600"; - when "00" & x"f75" => DATA <= x"0024"; - when "00" & x"f76" => DATA <= x"200c"; - when "00" & x"f77" => DATA <= x"223c"; - when "00" & x"f78" => DATA <= x"0000"; - when "00" & x"f79" => DATA <= x"0600"; - when "00" & x"f7a" => DATA <= x"243c"; - when "00" & x"f7b" => DATA <= x"0000"; - when "00" & x"f7c" => DATA <= x"00ff"; - when "00" & x"f7d" => DATA <= x"6100"; - when "00" & x"f7e" => DATA <= x"f7ee"; - when "00" & x"f7f" => DATA <= x"21fc"; - when "00" & x"f80" => DATA <= x"2020"; - when "00" & x"f81" => DATA <= x"0000"; - when "00" & x"f82" => DATA <= x"0608"; - when "00" & x"f83" => DATA <= x"303c"; - when "00" & x"f84" => DATA <= x"0600"; - when "00" & x"f85" => DATA <= x"6100"; - when "00" & x"f86" => DATA <= x"eaf6"; - when "00" & x"f87" => DATA <= x"bbcc"; - when "00" & x"f88" => DATA <= x"64d4"; - when "00" & x"f89" => DATA <= x"6000"; - when "00" & x"f8a" => DATA <= x"feb4"; - when "00" & x"f8b" => DATA <= x"6100"; - when "00" & x"f8c" => DATA <= x"080c"; - when "00" & x"f8d" => DATA <= x"7010"; - when "00" & x"f8e" => DATA <= x"220e"; - when "00" & x"f8f" => DATA <= x"6100"; - when "00" & x"f90" => DATA <= x"f0b0"; - when "00" & x"f91" => DATA <= x"6900"; - when "00" & x"f92" => DATA <= x"01a4"; - when "00" & x"f93" => DATA <= x"2842"; - when "00" & x"f94" => DATA <= x"11fc"; - when "00" & x"f95" => DATA <= x"0020"; - when "00" & x"f96" => DATA <= x"0609"; - when "00" & x"f97" => DATA <= x"11fc"; - when "00" & x"f98" => DATA <= x"0020"; - when "00" & x"f99" => DATA <= x"060d"; - when "00" & x"f9a" => DATA <= x"11fc"; - when "00" & x"f9b" => DATA <= x"0028"; - when "00" & x"f9c" => DATA <= x"060e"; - when "00" & x"f9d" => DATA <= x"21fc"; - when "00" & x"f9e" => DATA <= x"2920"; - when "00" & x"f9f" => DATA <= x"2000"; - when "00" & x"fa0" => DATA <= x"0610"; - when "00" & x"fa1" => DATA <= x"200c"; - when "00" & x"fa2" => DATA <= x"223c"; - when "00" & x"fa3" => DATA <= x"0000"; - when "00" & x"fa4" => DATA <= x"0600"; - when "00" & x"fa5" => DATA <= x"243c"; - when "00" & x"fa6" => DATA <= x"0000"; - when "00" & x"fa7" => DATA <= x"00ff"; - when "00" & x"fa8" => DATA <= x"6100"; - when "00" & x"fa9" => DATA <= x"f798"; - when "00" & x"faa" => DATA <= x"11fc"; - when "00" & x"fab" => DATA <= x"0020"; - when "00" & x"fac" => DATA <= x"0608"; - when "00" & x"fad" => DATA <= x"5441"; - when "00" & x"fae" => DATA <= x"1014"; - when "00" & x"faf" => DATA <= x"243c"; - when "00" & x"fb0" => DATA <= x"0000"; - when "00" & x"fb1" => DATA <= x"00ff"; - when "00" & x"fb2" => DATA <= x"6100"; - when "00" & x"fb3" => DATA <= x"f72e"; - when "00" & x"fb4" => DATA <= x"2a41"; - when "00" & x"fb5" => DATA <= x"1afc"; - when "00" & x"fb6" => DATA <= x"0020"; - when "00" & x"fb7" => DATA <= x"2c4c"; - when "00" & x"fb8" => DATA <= x"6100"; - when "00" & x"fb9" => DATA <= x"084c"; - when "00" & x"fba" => DATA <= x"11c0"; - when "00" & x"fbb" => DATA <= x"060f"; - when "00" & x"fbc" => DATA <= x"203c"; - when "00" & x"fbd" => DATA <= x"0000"; - when "00" & x"fbe" => DATA <= x"0600"; - when "00" & x"fbf" => DATA <= x"6100"; - when "00" & x"fc0" => DATA <= x"ea82"; - when "00" & x"fc1" => DATA <= x"203c"; - when "00" & x"fc2" => DATA <= x"0000"; - when "00" & x"fc3" => DATA <= x"0680"; - when "00" & x"fc4" => DATA <= x"123c"; - when "00" & x"fc5" => DATA <= x"0002"; + when "00" & x"eed" => DATA <= x"223c"; + when "00" & x"eee" => DATA <= x"0000"; + when "00" & x"eef" => DATA <= x"00ff"; + when "00" & x"ef0" => DATA <= x"143c"; + when "00" & x"ef1" => DATA <= x"0020"; + when "00" & x"ef2" => DATA <= x"163c"; + when "00" & x"ef3" => DATA <= x"00ff"; + when "00" & x"ef4" => DATA <= x"207c"; + when "00" & x"ef5" => DATA <= x"0000"; + when "00" & x"ef6" => DATA <= x"007d"; + when "00" & x"ef7" => DATA <= x"4e4c"; + when "00" & x"ef8" => DATA <= x"6500"; + when "00" & x"ef9" => DATA <= x"00b8"; + when "00" & x"efa" => DATA <= x"2c7c"; + when "00" & x"efb" => DATA <= x"0000"; + when "00" & x"efc" => DATA <= x"0600"; + when "00" & x"efd" => DATA <= x"101e"; + when "00" & x"efe" => DATA <= x"b03c"; + when "00" & x"eff" => DATA <= x"003f"; + when "00" & x"f00" => DATA <= x"6700"; + when "00" & x"f01" => DATA <= x"02c6"; + when "00" & x"f02" => DATA <= x"b03c"; + when "00" & x"f03" => DATA <= x"002a"; + when "00" & x"f04" => DATA <= x"6700"; + when "00" & x"f05" => DATA <= x"03b0"; + when "00" & x"f06" => DATA <= x"0200"; + when "00" & x"f07" => DATA <= x"00df"; + when "00" & x"f08" => DATA <= x"b03c"; + when "00" & x"f09" => DATA <= x"0042"; + when "00" & x"f0a" => DATA <= x"6700"; + when "00" & x"f0b" => DATA <= x"009e"; + when "00" & x"f0c" => DATA <= x"b03c"; + when "00" & x"f0d" => DATA <= x"0044"; + when "00" & x"f0e" => DATA <= x"6700"; + when "00" & x"f0f" => DATA <= x"0060"; + when "00" & x"f10" => DATA <= x"b03c"; + when "00" & x"f11" => DATA <= x"0045"; + when "00" & x"f12" => DATA <= x"6700"; + when "00" & x"f13" => DATA <= x"00f2"; + when "00" & x"f14" => DATA <= x"b03c"; + when "00" & x"f15" => DATA <= x"0046"; + when "00" & x"f16" => DATA <= x"6700"; + when "00" & x"f17" => DATA <= x"019e"; + when "00" & x"f18" => DATA <= x"b03c"; + when "00" & x"f19" => DATA <= x"0047"; + when "00" & x"f1a" => DATA <= x"6700"; + when "00" & x"f1b" => DATA <= x"01d0"; + when "00" & x"f1c" => DATA <= x"b03c"; + when "00" & x"f1d" => DATA <= x"0048"; + when "00" & x"f1e" => DATA <= x"6700"; + when "00" & x"f1f" => DATA <= x"01e4"; + when "00" & x"f20" => DATA <= x"b03c"; + when "00" & x"f21" => DATA <= x"004d"; + when "00" & x"f22" => DATA <= x"6700"; + when "00" & x"f23" => DATA <= x"0290"; + when "00" & x"f24" => DATA <= x"b03c"; + when "00" & x"f25" => DATA <= x"0051"; + when "00" & x"f26" => DATA <= x"6700"; + when "00" & x"f27" => DATA <= x"02be"; + when "00" & x"f28" => DATA <= x"b03c"; + when "00" & x"f29" => DATA <= x"0052"; + when "00" & x"f2a" => DATA <= x"6700"; + when "00" & x"f2b" => DATA <= x"02bc"; + when "00" & x"f2c" => DATA <= x"b03c"; + when "00" & x"f2d" => DATA <= x"0053"; + when "00" & x"f2e" => DATA <= x"6700"; + when "00" & x"f2f" => DATA <= x"0012"; + when "00" & x"f30" => DATA <= x"b03c"; + when "00" & x"f31" => DATA <= x"0054"; + when "00" & x"f32" => DATA <= x"6700"; + when "00" & x"f33" => DATA <= x"000a"; + when "00" & x"f34" => DATA <= x"b03c"; + when "00" & x"f35" => DATA <= x"0056"; + when "00" & x"f36" => DATA <= x"6700"; + when "00" & x"f37" => DATA <= x"0356"; + when "00" & x"f38" => DATA <= x"203c"; + when "00" & x"f39" => DATA <= x"003f"; + when "00" & x"f3a" => DATA <= x"2b07"; + when "00" & x"f3b" => DATA <= x"6100"; + when "00" & x"f3c" => DATA <= x"eb8a"; + when "00" & x"f3d" => DATA <= x"6000"; + when "00" & x"f3e" => DATA <= x"ff4c"; + when "00" & x"f3f" => DATA <= x"6100"; + when "00" & x"f40" => DATA <= x"08a4"; + when "00" & x"f41" => DATA <= x"7010"; + when "00" & x"f42" => DATA <= x"220e"; + when "00" & x"f43" => DATA <= x"6100"; + when "00" & x"f44" => DATA <= x"f148"; + when "00" & x"f45" => DATA <= x"6900"; + when "00" & x"f46" => DATA <= x"023c"; + when "00" & x"f47" => DATA <= x"2c41"; + when "00" & x"f48" => DATA <= x"2002"; + when "00" & x"f49" => DATA <= x"223c"; + when "00" & x"f4a" => DATA <= x"0000"; + when "00" & x"f4b" => DATA <= x"0600"; + when "00" & x"f4c" => DATA <= x"6100"; + when "00" & x"f4d" => DATA <= x"fc76"; + when "00" & x"f4e" => DATA <= x"2001"; + when "00" & x"f4f" => DATA <= x"6100"; + when "00" & x"f50" => DATA <= x"eb62"; + when "00" & x"f51" => DATA <= x"6100"; + when "00" & x"f52" => DATA <= x"eb72"; + when "00" & x"f53" => DATA <= x"6000"; + when "00" & x"f54" => DATA <= x"ff20"; + when "00" & x"f55" => DATA <= x"707e"; + when "00" & x"f56" => DATA <= x"6100"; + when "00" & x"f57" => DATA <= x"ec28"; + when "00" & x"f58" => DATA <= x"6000"; + when "00" & x"f59" => DATA <= x"ff16"; + when "00" & x"f5a" => DATA <= x"6100"; + when "00" & x"f5b" => DATA <= x"086e"; + when "00" & x"f5c" => DATA <= x"7010"; + when "00" & x"f5d" => DATA <= x"220e"; + when "00" & x"f5e" => DATA <= x"6100"; + when "00" & x"f5f" => DATA <= x"f112"; + when "00" & x"f60" => DATA <= x"6900"; + when "00" & x"f61" => DATA <= x"0206"; + when "00" & x"f62" => DATA <= x"2842"; + when "00" & x"f63" => DATA <= x"6100"; + when "00" & x"f64" => DATA <= x"086a"; + when "00" & x"f65" => DATA <= x"7010"; + when "00" & x"f66" => DATA <= x"6100"; + when "00" & x"f67" => DATA <= x"f102"; + when "00" & x"f68" => DATA <= x"6900"; + when "00" & x"f69" => DATA <= x"01f6"; + when "00" & x"f6a" => DATA <= x"2a42"; + when "00" & x"f6b" => DATA <= x"6100"; + when "00" & x"f6c" => DATA <= x"085a"; + when "00" & x"f6d" => DATA <= x"7010"; + when "00" & x"f6e" => DATA <= x"6100"; + when "00" & x"f6f" => DATA <= x"f0f2"; + when "00" & x"f70" => DATA <= x"6900"; + when "00" & x"f71" => DATA <= x"01e6"; + when "00" & x"f72" => DATA <= x"2c41"; + when "00" & x"f73" => DATA <= x"1e02"; + when "00" & x"f74" => DATA <= x"be1c"; + when "00" & x"f75" => DATA <= x"6600"; + when "00" & x"f76" => DATA <= x"0024"; + when "00" & x"f77" => DATA <= x"200c"; + when "00" & x"f78" => DATA <= x"223c"; + when "00" & x"f79" => DATA <= x"0000"; + when "00" & x"f7a" => DATA <= x"0600"; + when "00" & x"f7b" => DATA <= x"243c"; + when "00" & x"f7c" => DATA <= x"0000"; + when "00" & x"f7d" => DATA <= x"00ff"; + when "00" & x"f7e" => DATA <= x"6100"; + when "00" & x"f7f" => DATA <= x"f7ec"; + when "00" & x"f80" => DATA <= x"21fc"; + when "00" & x"f81" => DATA <= x"2020"; + when "00" & x"f82" => DATA <= x"0000"; + when "00" & x"f83" => DATA <= x"0608"; + when "00" & x"f84" => DATA <= x"303c"; + when "00" & x"f85" => DATA <= x"0600"; + when "00" & x"f86" => DATA <= x"6100"; + when "00" & x"f87" => DATA <= x"eaf4"; + when "00" & x"f88" => DATA <= x"bbcc"; + when "00" & x"f89" => DATA <= x"64d4"; + when "00" & x"f8a" => DATA <= x"6000"; + when "00" & x"f8b" => DATA <= x"feb2"; + when "00" & x"f8c" => DATA <= x"6100"; + when "00" & x"f8d" => DATA <= x"080a"; + when "00" & x"f8e" => DATA <= x"7010"; + when "00" & x"f8f" => DATA <= x"220e"; + when "00" & x"f90" => DATA <= x"6100"; + when "00" & x"f91" => DATA <= x"f0ae"; + when "00" & x"f92" => DATA <= x"6900"; + when "00" & x"f93" => DATA <= x"01a2"; + when "00" & x"f94" => DATA <= x"2842"; + when "00" & x"f95" => DATA <= x"11fc"; + when "00" & x"f96" => DATA <= x"0020"; + when "00" & x"f97" => DATA <= x"0609"; + when "00" & x"f98" => DATA <= x"11fc"; + when "00" & x"f99" => DATA <= x"0020"; + when "00" & x"f9a" => DATA <= x"060d"; + when "00" & x"f9b" => DATA <= x"11fc"; + when "00" & x"f9c" => DATA <= x"0028"; + when "00" & x"f9d" => DATA <= x"060e"; + when "00" & x"f9e" => DATA <= x"21fc"; + when "00" & x"f9f" => DATA <= x"2920"; + when "00" & x"fa0" => DATA <= x"2000"; + when "00" & x"fa1" => DATA <= x"0610"; + when "00" & x"fa2" => DATA <= x"200c"; + when "00" & x"fa3" => DATA <= x"223c"; + when "00" & x"fa4" => DATA <= x"0000"; + when "00" & x"fa5" => DATA <= x"0600"; + when "00" & x"fa6" => DATA <= x"243c"; + when "00" & x"fa7" => DATA <= x"0000"; + when "00" & x"fa8" => DATA <= x"00ff"; + when "00" & x"fa9" => DATA <= x"6100"; + when "00" & x"faa" => DATA <= x"f796"; + when "00" & x"fab" => DATA <= x"11fc"; + when "00" & x"fac" => DATA <= x"0020"; + when "00" & x"fad" => DATA <= x"0608"; + when "00" & x"fae" => DATA <= x"5441"; + when "00" & x"faf" => DATA <= x"1014"; + when "00" & x"fb0" => DATA <= x"243c"; + when "00" & x"fb1" => DATA <= x"0000"; + when "00" & x"fb2" => DATA <= x"00ff"; + when "00" & x"fb3" => DATA <= x"6100"; + when "00" & x"fb4" => DATA <= x"f72c"; + when "00" & x"fb5" => DATA <= x"2a41"; + when "00" & x"fb6" => DATA <= x"1afc"; + when "00" & x"fb7" => DATA <= x"0020"; + when "00" & x"fb8" => DATA <= x"2c4c"; + when "00" & x"fb9" => DATA <= x"6100"; + when "00" & x"fba" => DATA <= x"084a"; + when "00" & x"fbb" => DATA <= x"11c0"; + when "00" & x"fbc" => DATA <= x"060f"; + when "00" & x"fbd" => DATA <= x"203c"; + when "00" & x"fbe" => DATA <= x"0000"; + when "00" & x"fbf" => DATA <= x"0600"; + when "00" & x"fc0" => DATA <= x"6100"; + when "00" & x"fc1" => DATA <= x"ea80"; + when "00" & x"fc2" => DATA <= x"203c"; + when "00" & x"fc3" => DATA <= x"0000"; + when "00" & x"fc4" => DATA <= x"0680"; + when "00" & x"fc5" => DATA <= x"7202"; when "00" & x"fc6" => DATA <= x"143c"; when "00" & x"fc7" => DATA <= x"0020"; when "00" & x"fc8" => DATA <= x"163c"; @@ -4081,7 +4081,7 @@ begin when "00" & x"fd3" => DATA <= x"6600"; when "00" & x"fd4" => DATA <= x"0006"; when "00" & x"fd5" => DATA <= x"524c"; - when "00" & x"fd6" => DATA <= x"6094"; + when "00" & x"fd6" => DATA <= x"6096"; when "00" & x"fd7" => DATA <= x"2c7c"; when "00" & x"fd8" => DATA <= x"0000"; when "00" & x"fd9" => DATA <= x"0680"; @@ -4089,9 +4089,9 @@ begin when "00" & x"fdb" => DATA <= x"220e"; when "00" & x"fdc" => DATA <= x"6100"; when "00" & x"fdd" => DATA <= x"f016"; - when "00" & x"fde" => DATA <= x"6984"; + when "00" & x"fde" => DATA <= x"6986"; when "00" & x"fdf" => DATA <= x"18c2"; - when "00" & x"fe0" => DATA <= x"6080"; + when "00" & x"fe0" => DATA <= x"6082"; when "00" & x"fe1" => DATA <= x"707e"; when "00" & x"fe2" => DATA <= x"6100"; when "00" & x"fe3" => DATA <= x"eb10"; @@ -4942,7 +4942,7 @@ begin when "01" & x"330" => DATA <= x"e11a"; when "01" & x"331" => DATA <= x"0200"; when "01" & x"332" => DATA <= x"0040"; - when "01" & x"333" => DATA <= x"8138"; + when "01" & x"333" => DATA <= x"11c0"; when "01" & x"334" => DATA <= x"0535"; when "01" & x"335" => DATA <= x"4e75"; when "01" & x"336" => DATA <= x"21fc"; From 21e731ea770229c274215c97cb0924dc7df50b8d Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 14 Sep 2015 12:47:07 +0100 Subject: [PATCH 37/61] Added initial version of AtomHost code Change-Id: I17828c5e50cc591c8b25f27f172211c375247ed5 --- host/atom/AtomHost.asm | 577 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 577 insertions(+) create mode 100644 host/atom/AtomHost.asm diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm new file mode 100644 index 0000000..34aeeee --- /dev/null +++ b/host/atom/AtomHost.asm @@ -0,0 +1,577 @@ +;;; AtomHost/src +;;; Source for Atom Tube Host +;;; J.G.Harston and D.M.Banks + + load = $4000 ; Load address of the host code + + atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) + debug = 0 ; Whether to include debugging of R2 commands + +;;; MOS entry addresses +;;; ------------------- + osshut = $FFCB + osfind = $FFCE + osbput = $FFD1 + osbget = $FFD4 + osstar = $FFD7 + osrdar = $FFDA + ossave = $FFDD + osload = $FFE0 + osrdch = $FFE3 + osecho = $FFE6 + osasci = $FFE9 + osnewl = $FFED + oswrcr = $FFF2 + oswrch = $FFF4 + oscli = $FFF7 + + oshex = $F802 + +;;; Vectors +;;; ------- + nmiv = $200 + brkv = $202 + irq1v = $204 + cliv = $206 + wrchv = $208 + rdchv = $20A + loadv = $20C + savev = $20E + rdarv = $210 + starv = $212 + bgetv = $214 + bputv = $216 + findv = $218 + shutv = $21A + +;;; System: $0E21 - keypress, b7=1 if nothing pressed +;;; Atom: $B001 - b5=0 if Escape pressed + +;;;I/O addresses +;;;------------- + TubeIO = $BC00 + + TubeS1=TubeIO+0 ; VDU + TubeR1=TubeIO+1 + TubeS2=TubeIO+2 ; Command + TubeR2=TubeIO+3 + TubeS3=TubeIO+4 ; DATA + TubeR3=TubeIO+5 + TubeS4=TubeIO+6 ; Interrupts + TubeR4=TubeIO+7 + +;;; Workspace in zero page +;;; ---------------------- + + TubeCtrl = $80 ; Control block for MOS calls + TubeSrc = $92 ; Pointer to Tube transfer block + TubeStatus = $94 ; Tube status + TubeOwner = $95 ; Tube owner + R2Cmd = $96 ; Computed address of R2 Command Handler + +;;; Optional 22-byte ATM Header +;;; -------------------------- + + org load - 22 + +.AtmHeader + +IF (atmhdr = 1) + EQUS "TUBE" + org AtmHeader + 16 + EQUW StartAddr + EQUW StartAddr + EQUW EndAddr - StartAddr +ENDIF + +;;; Main Entry Point +;;; ---------------- + +.StartAddr + JMP TubeStartup ; Start Tube system + JMP TubeEscape ; Copy Escape state across Tube + RTS ; Data transfer + NOP + NOP + +;;; pointers to R2 commands +;;; ----------------------- + +.R2CmdHandlers + EQUW rdch ; A=00 + EQUW cli ; A=02 + EQUW bytelo ; A=04 + EQUW bytehi ; A=06 + EQUW word ; A=08 + EQUW rdline ; A=0A + EQUW args ; A=0C + EQUW bget ; A=0E + EQUW bput ; A=10 + EQUW find ; A=12 + EQUW file ; A=14 + EQUW gbpb ; A=16 + +;;; UNUSED +;;; Tube data transfer flags +;;; ------------------------ + EQUB $86 ; CoPro->I/O bytes + EQUB $88 ; I/O->CoPro bytes + EQUB $96 ; CoPro->I/O words + EQUB $98 ; I/O->CoPro words + EQUB $18 ; Set Execute Address in CoPro + EQUB $18 ; Release Tube + EQUB $82 ; CoPro->I/O 256 bytes + EQUB $18 ; I/O->CoPro 256 bytes + +;;; BRK handler +;;; ----------- + +.TubeBRK + LDA #$FF + JSR TubeSendR4 + LDA TubeR2 ; Get ACK byte from CoPro + LDA #$00 + JSR TubeSendR2 ; Send $00 to R2 to specify ERROR + TAY + LDA TubeError,Y + JSR TubeSendR2 ; Send via R2 +.TubeBRKlp + INY + LDA TubeError,Y + JSR TubeSendR2 ; Send via R2 + TAX + BNE TubeBRKlp ; Loop until terminating $00 sent + +;;; Tube Idle startup +;;; ----------------- + + ;; Clear stack, enable IRQs + LDX #$FF + TXS + CLI + +;;; Tube idle loop +;;; -------------- + +.TubeIdle + LDA $B001 ; Read keyboard hardware + AND #$20 ; was escape pressed? + BNE TubeIdle1 + JSR TubeEscape ; Escape pressed, pass to Client +.TubeIdle1 + BIT TubeS1 + BPL TubeIdle2 ; Nothing in VDU port, jump to check Command port +.TubeWRCH + LDA TubeR1 + JSR oswrch ; Get character and send to OSWRCH +.TubeIdle2 + BIT TubeS2 + BPL TubeIdle ; Nothing in Command port, loop back + BIT TubeS1 + BMI TubeWRCH ; Check VDU port again + LDX TubeR2 ; Get command +IF (debug = 1) + JSR DebugNewline + TXA + JSR DebugHexOut +ENDIF + LDA R2CmdHandlers, X ; Read command handler + STA R2Cmd + LDA R2CmdHandlers + 1, X + STA R2Cmd + 1 + JMP (R2Cmd) ; index into jump table + +.TubeAddr + EQUD $00800000 + + ;;; Start up Tube system + ;;; -------------------- +.TubeStartup + LDA #12 + JSR oswrch ; Clear screen, ready for startup banner + LDA #$C0 + STA TubeS1 ; Clear all Tube Regs + LDA #$40 + STA TubeS1 + LDA #$A0 + STA TubeS1 ; Reset client + LDA #$20 + STA TubeS1 +.StartupLp1 + BIT TubeS1 + BPL StartupLp1 ; Loop until VDU data present + LDA TubeR1 + BEQ Startup2 ; Get it, if CHR$0, finished + JSR oswrch + JMP StartupLp1 ; Print character, loop for more +.Startup2 + LDA #(TubeBRK AND 255) + STA brkv+0 ; Claim BRKV + LDA #(TubeBRK DIV 256) + STA brkv+1 + LDA #$8E + STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 + JSR TubeFree ; Set Tube 'free' and no owner + JMP TubeSendAck ; Send $7F ack and enter idle loop + +;;; Clear Tube status and owner +;;; --------------------------- +.TubeFree + LDA #$80 + STA TubeStatus ; Set Tube ID to 'unclaimed' + STA TubeOwner ; Set Tube status to 'free' +.TubeEscape + RTS + +.TubeError + EQUB 255 + EQUS "HOST ERROR" + BRK + +;;; UNUSED +.AtomCtrl + EQUW 0,0,0,0,0,0,0,0 ; Atom control block + + +;;; ***************** +;;; TUBE MOS ROUTINES +;;; ***************** + +;;; CHARACTER I/O CALLS +;;; =================== + +;;; OSRDCH +;;; ------ +.rdch + JSR AtomRDCH ; Wait for a character +.SendCarryA + ROR A + JSR TubeSendR2 ; Move Carry into b7 and send it + ROL A + JMP TubeSendIdle ; Restore A and send it, return to idle loop + +;;; WORD0 - Read a line +;;; ------------------- +.rdline + LDX #$05 + JSR TubeWaitBlock ; Fetch 5-byte control block + ;; + ;; We have to do a RDLINE manually, as Atom doesn't provide it + ;; + LDY #0 +.RdLineLp1 + JSR AtomRDCH + BCS RdLineEsc ; Escape pressed, exit + CMP #127 + BNE RdLineChar + CPY #0 + BEQ RdLineLp1 ; Nothing to delete + JSR oswrch + DEY + JMP RdLineLp1 ; Delete one character +.RdLineChar + STA $100,Y ; Store in string buffer + CMP #13 + BEQ RdLineCR ; Repeat until + JSR oswrch + INY + BNE RdLineLp1 ; Echo character, loop for more +.RdLineCR + JSR osnewl ; Print + LDA #$7F + JSR TubeSendR2 ; Send $7F via R2 to indicate no Escape + LDY #0 ; Point to start of string buffer +.RdLineLp2 + LDA $0100,Y + JSR TubeSendR2 ; Send byte via R2 + INY + CMP #13 + BNE RdLineLp2 ; Loop until sent + JMP TubeIdle +.RdLineEsc + LDA #$FF + BNE TubeSendIdle ; Return $FF for Escape, return to Tube idle loop + + +.bytelo + LDX #$02 + JSR TubeWaitBlock ; Fetch 2-byte control block + LDA #0 + JMP TubeSendIdle + +.bytehi + LDX #$03 + JSR TubeWaitBlock ; Fetch 3-byte control block + LDA #0 + JSR TubeSendR2 + JSR TubeSendR2 + JMP TubeSendIdle + +.word + JSR TubeWaitR2 ; Get A +IF (debug = 1) + JSR DebugHexOut +ENDIF + JSR TubeWaitR2 ; Get in-length +IF (debug = 1) + JSR DebugHexOut +ENDIF + TAX + BEQ wordNoRequest + JSR TubeWaitBlock +.wordNoRequest + JSR TubeWaitR2 ; Get out-length +IF (debug = 1) + JSR DebugHexOut +ENDIF + TAX + BEQ wordNoResponse + JSR TubeSendBlock +.wordNoResponse + JMP TubeIdle + + +;;; OSCLI +;;; ===== +.cli + + JSR ReadString ; Read string to $0100 + + LDA $100 ; Test for a zero-length string + CMP #$0d + BEQ TubeSendAck ; Skip it + + JSR oscli ; Execute it + + ;; If the command returns here, the CoPro will get $7F as an acknowledgement. + ;; The CoPro also gets sent a $7F byte if there is no language available on + ;; Break. If calling OSCLI results in code being run in the CoPro or a language + ;; being copied over and entered, the CoPro will get an $80 acknowledgement + ;; elsewhere. + + ;; Will have to hook into Atom's OSLOAD and OSSAVE to intercept *DELETEACS and *DELETEBGET + ;; commands to redirect to manual implementations. + +;;; Send $7F acknowledgement byte via R2 and return to idle loop +;;; ------------------------------------------------------------ +.TubeSendAck + LDA #$7F ; Send $7F to CoPro + +;;; Send byte in A via R2 and return to Tube idle loop +;;; -------------------------------------------------- +.TubeSendIdle + BIT TubeS2 + BVC TubeSendIdle ; Loop until Command port free + STA TubeR2 + JMP TubeIdle ; Send byte and jump to Tube idle loop + + +;;; FILING LOADATNTEM CALLS +;;; =================== + +;;; OSBPUT +;;; ------ +.bput + JSR TubeWaitR2 + TAY ; Wait for a handle + JSR TubeWaitR2 ; Wait for a data byte + JSR osbput ; Write to file + JMP TubeSendAck ; Send $7F ack, return to idle loop + +;;; OSBGET +;;; ------ +.bget + JSR TubeWaitR2 + TAY ; Wait for a handle + JSR osbget ; Read from file + JMP SendCarryA ; Send Carry and A, return to idle loop + +;;; OSFIND +;;; ------ +.find + JSR TubeWaitR2 + BEQ close ; Zero - jump to do CLOSE + PHA + JSR ReadString + PLA + ;; Get filename string via R2 + ;; + ;; Atom OSFIND needs + + ;; X=>zero page, (X+0,1)=>filename + ;; CS=OPENIN, CC=OPENOUT + ;; + STX TubeCtrl+0 ; Store address of filename + STY TubeCtrl+1 + LDX #TubeCtrl ; X=>address of filename + ASL A + ASL A ; Move b6 into Cy, CS=OPENIN, CC=OPENOUT + JSR osfind ; Do the OPEN + JMP TubeSendIdle ; Send handle back, return to idle loop + +;;; CLOSE +;;; ----- +.close + JSR TubeWaitR2 + TAY ; Wait for a handle + JSR osshut ; Do the CLOSE + JMP TubeSendAck ; Send $7F ack and jump to idle loop + +;;; OSARGS +;;; ------ +.args + JSR TubeWaitR2 + TAY ; Wait for a handle + LDX #$04 + JSR TubeWaitBlock ; Fetch 4-byte data block + JSR TubeWaitR2 ; Wait for action; ;;; Atom needs +;;; +;;;OSRDAR #FFDA Read file's arguments +;;;On entry, X=>zero page location +;;; Y=handle +;;; A=0 - read PTR +;;; A=1 - read EXT +;;; A=2 - read allocation +;;;On exit, X+0-X+3 = returned argument +;;; A,X,Y preserved +;;; +;;; +;;;OSSTAR #FFD7 Set file's arguments +;;;On entry, X=>zero page location +;;; Y=handle +;;; A=0 - write PTR +;;; X+0-X+3 = argument +;;;On exit, A,X,Y preserved; JSR TubeSendR2 ; Send result back + LDX #4 + JSR TubeSendBlock ; Send 4-byte data black + JMP TubeIdle + + +;;; OSGBPB +;;; ------ +.gbpb + RTS + +;;; OSFILE +;;; ------ +.file + RTS + +;;; Atom OSLOAD and OSSAVE can't be used, as will have to pass data across Tube +;;; manually. Not sure how to set load/exec addresses without doing a DELETEBGET. +;;; Maybe do a zero-length DELETEBGET, then OPENOUT it. + + +;;; TUBE COMMAND TRANSFERS +;;; ********************** + +;;; Read a string via R2 into string buffer at $0100 +;;; ------------------------------------------------ +.ReadString + LDY #$00 +.ReadStrLp + JSR TubeWaitR2 + STA $0100,Y ; Wait for byte and store in string buffer + INY + BEQ ReadStrFull ; Buffer full, end loop + CMP #$0D + BNE ReadStrLp ; Loop until received +.ReadStrFull + LDX #0 + LDY #1 + RTS ; Return XY pointing to $0100 + +;;; Get control block to 0,X +;;; ------------------------ +.TubeWaitBlock + JSR TubeWaitR2 + STA $FF,X +IF (debug = 1) + JSR DebugHexOut +ENDIF + DEX + BNE TubeWaitBlock + RTS + +;;; Get X and A from Tube R2 +;;; ------------------------ +.TubeWaitXA + JSR TubeWaitR2 + TAX + +;;; Wait for data from Tube R2 +;;; -------------------------- +.TubeWaitR2 + BIT TubeS2 + BPL TubeWaitR2 ; Loop until data present + LDA TubeR2 + RTS ; Get byte + + +;;; Send control block from 0,X +;;; --------------------------- +.TubeSendBlock + LDA $FF,X + JSR TubeSendR2 + DEX + BNE TubeSendBlock + RTS + +;;; Send byte in A via Tube R2 +;;; -------------------------- +.TubeSendR2 + BIT TubeS2 + BVC TubeSendR2 ; Loop until port free + STA TubeR2 + RTS +;;; Send byte + +;;; Send byte in A via Tube R4 +;;; -------------------------- +.TubeSendR4 + BIT TubeS4 + BVC TubeSendR4 ; Loop until port free + STA TubeR4 + RTS ; Send byte + + +;;; *************************** +;;; INTERFACE TO ATOM MOS CALLS +;;; *************************** + +;;; Interface to Atom OSRDCH +;;; ------------------------ +.AtomRDCH + JSR osrdch + PHA + CLC ; Wait for a character + LDA $B001 + AND #$20 ; Read keyboard hardware + BNE AtomRDCHok + SEC ; SEC as Escape key pressed +.AtomRDCHok + PLA + RTS + +;;; Debugging output, avoid trashing A +;;; + +.DebugNewline + PHA + JSR osnewl + PLA + RTS + +.DebugHexOut + PHA + JSR oshex + PLA + RTS + +.EndAddr + +IF (atmhdr = 1) + SAVE "TUBE",AtmHeader,EndAddr +ELSE + SAVE "TUBE",StartAddr,EndAddr +ENDIF From 6e27c078dff482f4e6896494a9355a3685c7190b Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 14 Sep 2015 16:33:58 +0100 Subject: [PATCH 38/61] Language transfer working Change-Id: I1a5e78c53b55c43b3051d6bb669a848ad9a96b8b --- host/atom/AtomHost.asm | 362 +++++++++++++++++++++++++++++++++-------- host/atom/BASIC2 | Bin 0 -> 16406 bytes host/atom/basic2.rom | Bin 0 -> 16384 bytes host/atom/langheader | Bin 0 -> 22 bytes 4 files changed, 297 insertions(+), 65 deletions(-) create mode 100644 host/atom/BASIC2 create mode 100644 host/atom/basic2.rom create mode 100644 host/atom/langheader diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index 34aeeee..ad88d28 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -2,11 +2,14 @@ ;;; Source for Atom Tube Host ;;; J.G.Harston and D.M.Banks - load = $4000 ; Load address of the host code + load = $3000 ; Load address of the host code atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) debug = 0 ; Whether to include debugging of R2 commands + LangStart = $4000 ; start of the language in host memory + LangEnd = $8000 ; end of the language in host memory + ;;; MOS entry addresses ;;; ------------------- osshut = $FFCB @@ -69,6 +72,7 @@ TubeOwner = $95 ; Tube owner R2Cmd = $96 ; Computed address of R2 Command Handler + ;;; Optional 22-byte ATM Header ;;; -------------------------- @@ -84,15 +88,284 @@ IF (atmhdr = 1) EQUW EndAddr - StartAddr ENDIF -;;; Main Entry Point -;;; ---------------- - .StartAddr - JMP TubeStartup ; Start Tube system + + ;;; Start up the Atom Tube system + ;;; ---------------------------- + +.TubeStartup +;;; LDA #12 +;;; JSR oswrch ; Clear screen, ready for startup banner + LDA #$C0 + STA TubeS1 ; Clear all Tube Regs + LDA #$40 + STA TubeS1 + LDA #$A0 + STA TubeS1 ; Reset client + LDA #$20 + STA TubeS1 +.StartupLp1 + BIT TubeS1 + BPL StartupLp1 ; Loop until VDU data present + LDA TubeR1 + BEQ Startup2 ; Get it, if CHR$0, finished + CMP #$60 + BCC UpperCase + AND #$DF +.UpperCase + JSR oswrch + JMP StartupLp1 ; Print character, loop for more +.Startup2 + LDA #(TubeBRK AND 255) + STA brkv+0 ; Claim BRKV + LDA #(TubeBRK DIV 256) + STA brkv+1 + LDA #$8E + STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 + JSR TubeFree ; Set Tube 'free' and no owner + + SEC ; Transfer the langue + JSR L0400 + + LDA #$80 ; Send $80 ack and enter idle loop + JMP TubeSendIdle ; + + +;;; Main Entry Point Block +;;; ---------------------- + +.L0400 + JMP LanguageStartup ; Copy Language and Start Tube system + +.L0403 JMP TubeEscape ; Copy Escape state across Tube - RTS ; Data transfer + + +;;; Tube Transfer/Claim/Release +;;; --------------------------- + +.L0406 + CMP #&80 ; Claim/Release/Action via Tube + BCC TubeTransfer ; If <&80, data transfer action + CMP #&C0 ; Is it claim or release? + BCS TubeClaim ; &C0-&FF - jump to claim Tube + ORA #&40 ; Ensure release ID same as claim ID + CMP TubeOwner ; Is the the same as the claim ID? + BNE TubeExit ; No, exit. + +.TubeRelease + PHP ; Save IRQ state + SEI ; Disable IRQs + LDA #&05 ; Send &05 to R4 to interupt CoPro + JSR TubeSendR4 + LDA TubeOwner ; Send Tube ID to notify a Tube release + JSR TubeSendR4 + PLP ; Get IRQ state back + + ;; Clear Tube status and owner +.TubeFree + LDA #&80 + STA TubeOwner ; Set Tube ID to 'unclaimed' + STA TubeStatus ; Set Tube status to 'free' + RTS + +;;; Claim Tube +;;; ---------- + +.TubeClaim + ASL TubeStatus ; Is Tube free? + BCS TubeClaim1 ; Yes, jump to claim it + CMP TubeOwner ; Is Tube ID same as claimer? + BEQ TubeExit ; Yes, exit as we already own it + CLC ; Signal 'can't claim Tube' + RTS ; And exit + +.TubeClaim1 + STA TubeOwner ; Store Tube ID + +.TubeExit + RTS + +;;; Tube data transfer +;;; ------------------ + +.TubeTransfer + PHP ; Save IRQ status + SEI ; Disable IRQs + STY TubeSrc + 1 ; Store pointer to control block + STX TubeSrc ; Send action code to R4 to + JSR TubeSendR4 ; interrupt CoPro + TAX ; Save action code in X + LDY #&03 ; Prepare to send 4 byte control block + LDA TubeOwner ; Send Tube ID via R4, interupting + JSR TubeSendR4 ; CoPro + +.TubeTransfer1 + LDA (TubeSrc),Y ; Get byte from Tube control block + JSR TubeSendR4 ; Send via R4 + DEY + BPL TubeTransfer1 ; Loop for whole block + LDY #&18 + STY TubeS1 ; Disable FIFO on R3, and NMI on R3 by default + LDA TransferFlags,X ; Get Tube I/O setting according to + STA TubeS1 ; action code and set Tube + LSR A + LSR A ; Move b1 to Carry (b1 set = Copro->I/O) + BCC TubeTransfer2 ; If no pre-delay needed, jump past + BIT TubeR3 ; Read R3 twice to delay & empty FIFO + BIT TubeR3 + +.TubeTransfer2 + JSR TubeSendR4 ; Send flag via R4 to synchronise + +.TubeTransfer3 + BIT TubeS4 ; Check R4 status + BVC TubeTransfer3 ; Loop until data has left R4 + BCS TubeTransfer5 ; Carry still indicates direction + CPX #&04 ; Is action 'execute code'? + BNE TubeTransfer6 ; No, jump to finish + +.TubeTransfer4 + JSR TubeRelease ; Release Tube + JSR TubeSendR2 ; Send &80 via R2 + JMP TubeIdleStartup ; Jump to Tube Idle loop + +.TubeTransfer5 + LSR A ; Move Tube I/O setting b2 into Carry (b2 set = NMI required) + BCC TubeTransfer6 ; It was clear, jump to exit + LDY #&88 ; Set Tube I/O to NMI on R3 + STY TubeS1 + +.TubeTransfer6 + PLP ; Restore IRQ status + RTS ; And exit + +;;; Copy language across Tube +;;; ------------------------- +;;; On entry, A=1 - enter language, CLC=Break, SEC=OSBYTE 142 +;;; A=0 - no language found at Break + +.LanguageStartup + + CLI ; Enable IRQs + BCS LanguageEnter ; Branch if selected with *fx142 + BNE TestLastBreak ; A<>0, jump to enter language + JMP TubeSendAck ; A=0, jump to enter Tube Idle loop + +;;; Language entered at BREAK +;;; ------------------------- + +.TestLastBreak + +;;; The Atom does not have different break types +;;; So always handles a for hard bread + +;;; LDX &028D ; Get last break type +;;; BEQ TubeTransfer4 ; If Soft Break, release Tube, send &80 + ; via R2 and enter Idle loop + +;;; The current language is not copied across the Tube on soft Break, only on +;;; Power-On Break and Hard Break, or when entered explicitly with OSBYTE 142. + +;;; Language entered with OSBYTE 142, or on Hard Break +;;; -------------------------------------------------- + +.LanguageEnter + LDA #&FF + JSR L0406 ; Claim Tube with ID=&3F + BCC LanguageEnter ; Loop until Tube available + JSR FindLanguageAddr ; Find address to copy language to + +;;; Send language ROM via Tube 256 bytes at a time +;;; ---------------------------------------------- + +.TransferLanguage + PHP ; Save IRQ status + SEI ; Disable IRQs + LDA #&07 ; Start I/O->CoPro transfer 256 bytes + JSR StartTransfer ; Use Tube address at .TubeAddr + LDY #&00 + STY TubeCtrl ; Start copying from &8000 + +.TransferBlock + LDA (TubeCtrl),Y ; Get byte from ROM + STA TubeR3 ; Send to CoPro via R3 + NOP ; Delay for a while NOP NOP + INY + BNE TransferBlock ; Loop for 256 bytes + PLP ; Restore IRQs + INC TubeAddr + 1 ; Update Tube address + BNE TransferIncSrc + INC TubeAddr + 2 + BNE TransferIncSrc + INC TubeAddr + 3 + +.TransferIncSrc + INC TubeCtrl + 1 ; Update source address + LDA TubeCtrl + 1 ; Check b6 of source high byte + CMP #>LangEnd + BCC TransferLanguage ; Loop until end of language + JSR FindLanguageAddr ; Find start address language copied to + LDA #&04 ; Execute code in CoPro, finished by + ; sending &80 to Copro in R2 + +;;; Start a Tube transfer with address block at &0053 +;;; ------------------------------------------------- + +.StartTransfer + LDY #>TubeAddr + LDX #LangStart + STA TubeCtrl + 1 ; Set source address to language + LDA #&20 + AND LangStart + 6 ; Check relocation bit in ROM type + TAY ; If no relocation address, A=0, Y=0 + STY TubeAddr ; Set Tube address to &xxxx8000 + BEQ FindLanguageAddr2 ; Jump forward with no relocation + + LDX LangStart + 7 ; Get offset to ROM copyright +.FindLanguageAddr1 + INX + LDA LangStart, X ; Skip past copyright message + BNE FindLanguageAddr1 ; Loop until terminating zero byte + LDA LangStart + 1, X ; Get relocation address from after + STA TubeAddr ; copyright message + LDA LangStart + 2, X + STA TubeAddr + 1 + LDY LangStart + 3, X ; Get two high bytes to Y and A + LDA LangStart + 4, X + +;;; Set Tube address high bytes +;;; --------------------------- + +.FindLanguageAddr2 + STA TubeAddr + 3 ; Set Tube address high bytes + STY TubeAddr + 2 + RTS + +;;; Tube data transfer flags +;;; ------------------------ + +.TransferFlags + EQUB $86 ; CoPro->I/O bytes + EQUB $88 ; I/O->CoPro bytes + EQUB $96 ; CoPro->I/O words + EQUB $98 ; I/O->CoPro words + EQUB $18 ; Set Execute Address in CoPro + EQUB $18 ; Release Tube + EQUB $82 ; CoPro->I/O 256 bytes + EQUB $18 ; I/O->CoPro 256 bytes ;;; pointers to R2 commands ;;; ----------------------- @@ -111,17 +384,6 @@ ENDIF EQUW file ; A=14 EQUW gbpb ; A=16 -;;; UNUSED -;;; Tube data transfer flags -;;; ------------------------ - EQUB $86 ; CoPro->I/O bytes - EQUB $88 ; I/O->CoPro bytes - EQUB $96 ; CoPro->I/O words - EQUB $98 ; I/O->CoPro words - EQUB $18 ; Set Execute Address in CoPro - EQUB $18 ; Release Tube - EQUB $82 ; CoPro->I/O 256 bytes - EQUB $18 ; I/O->CoPro 256 bytes ;;; BRK handler ;;; ----------- @@ -143,8 +405,9 @@ ENDIF BNE TubeBRKlp ; Loop until terminating $00 sent ;;; Tube Idle startup -;;; ----------------- +;;; ----------------- +.TubeIdleStartup ;; Clear stack, enable IRQs LDX #$FF TXS @@ -184,53 +447,6 @@ ENDIF .TubeAddr EQUD $00800000 - ;;; Start up Tube system - ;;; -------------------- -.TubeStartup - LDA #12 - JSR oswrch ; Clear screen, ready for startup banner - LDA #$C0 - STA TubeS1 ; Clear all Tube Regs - LDA #$40 - STA TubeS1 - LDA #$A0 - STA TubeS1 ; Reset client - LDA #$20 - STA TubeS1 -.StartupLp1 - BIT TubeS1 - BPL StartupLp1 ; Loop until VDU data present - LDA TubeR1 - BEQ Startup2 ; Get it, if CHR$0, finished - JSR oswrch - JMP StartupLp1 ; Print character, loop for more -.Startup2 - LDA #(TubeBRK AND 255) - STA brkv+0 ; Claim BRKV - LDA #(TubeBRK DIV 256) - STA brkv+1 - LDA #$8E - STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 - JSR TubeFree ; Set Tube 'free' and no owner - JMP TubeSendAck ; Send $7F ack and enter idle loop - -;;; Clear Tube status and owner -;;; --------------------------- -.TubeFree - LDA #$80 - STA TubeStatus ; Set Tube ID to 'unclaimed' - STA TubeOwner ; Set Tube status to 'free' -.TubeEscape - RTS - -.TubeError - EQUB 255 - EQUS "HOST ERROR" - BRK - -;;; UNUSED -.AtomCtrl - EQUW 0,0,0,0,0,0,0,0 ; Atom control block ;;; ***************** @@ -532,9 +748,24 @@ ENDIF BIT TubeS4 BVC TubeSendR4 ; Loop until port free STA TubeR4 +IF (debug = 1) + JSR DebugHexOut +ENDIF RTS ; Send byte +;;; Copy Escape state across Tube +;;; ----------------------------- +;;; TODO + +.TubeEscape + RTS + +.TubeError + EQUB 255 + EQUS "HOST ERROR" + BRK + ;;; *************************** ;;; INTERFACE TO ATOM MOS CALLS ;;; *************************** @@ -553,6 +784,7 @@ ENDIF PLA RTS + ;;; Debugging output, avoid trashing A ;;; diff --git a/host/atom/BASIC2 b/host/atom/BASIC2 new file mode 100644 index 0000000000000000000000000000000000000000..a74e0b7329a863e789d5f9b209102d13fb815566 GIT binary patch literal 16406 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 literal 0 HcmV?d00001 diff --git a/host/atom/langheader b/host/atom/langheader new file mode 100644 index 0000000000000000000000000000000000000000..5a176668ca9aafdc11c92cb145aa0b6cc8d4d056 GIT binary patch literal 22 TcmZ>A4EA(3Vn6@~1|S3gAw~jK literal 0 HcmV?d00001 From b0bd285e6c52f56e068df7471118370c242fbde2 Mon Sep 17 00:00:00 2001 From: David Banks Date: Tue, 15 Sep 2015 11:18:07 +0100 Subject: [PATCH 39/61] PDP11 Co Pro: Updated Client ROM from 0.21 to 0.22 Change-Id: Ib673060782c7d91c2933bba0353b82feb82b39b8 --- src/ROM/tuberom_pdp11.vhd | 1942 ++++++++++++++++++------------------- 1 file changed, 971 insertions(+), 971 deletions(-) diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 0d9c688..4de0346 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -38,1009 +38,1009 @@ begin when x"008" => DATA <= x"3436"; when x"009" => DATA <= x"204b"; when x"00a" => DATA <= x"2e30"; - when x"00b" => DATA <= x"3132"; + when x"00b" => DATA <= x"3232"; when x"00c" => DATA <= x"0d0d"; when x"00d" => DATA <= x"0000"; when x"00e" => DATA <= x"15c6"; when x"00f" => DATA <= x"f530"; - when x"010" => DATA <= x"09f7"; - when x"011" => DATA <= x"0588"; - when x"012" => DATA <= x"17df"; - when x"013" => DATA <= x"f5fc"; - when x"014" => DATA <= x"f5f8"; - when x"015" => DATA <= x"15c1"; - when x"016" => DATA <= x"f804"; - when x"017" => DATA <= x"09f7"; - when x"018" => DATA <= x"0086"; - when x"019" => DATA <= x"09f7"; - when x"01a" => DATA <= x"0498"; - when x"01b" => DATA <= x"00a1"; - when x"01c" => DATA <= x"09f7"; - when x"01d" => DATA <= x"00c6"; - when x"01e" => DATA <= x"17c6"; - when x"01f" => DATA <= x"f5f6"; - when x"020" => DATA <= x"15c0"; - when x"021" => DATA <= x"0003"; - when x"022" => DATA <= x"09f7"; - when x"023" => DATA <= x"057e"; - when x"024" => DATA <= x"15c1"; - when x"025" => DATA <= x"f860"; - when x"026" => DATA <= x"09f7"; - when x"027" => DATA <= x"0068"; - when x"028" => DATA <= x"09f7"; - when x"029" => DATA <= x"0220"; - when x"02a" => DATA <= x"870c"; - when x"02b" => DATA <= x"17c0"; - when x"02c" => DATA <= x"f868"; - when x"02d" => DATA <= x"09f7"; - when x"02e" => DATA <= x"0060"; - when x"02f" => DATA <= x"01f4"; - when x"030" => DATA <= x"4450"; - when x"031" => DATA <= x"3150"; - when x"032" => DATA <= x"3e31"; - when x"033" => DATA <= x"002a"; - when x"034" => DATA <= x"f530"; - when x"035" => DATA <= x"20a8"; - when x"036" => DATA <= x"ffff"; - when x"037" => DATA <= x"15c0"; - when x"038" => DATA <= x"007e"; - when x"039" => DATA <= x"09f7"; - when x"03a" => DATA <= x"017a"; - when x"03b" => DATA <= x"880f"; - when x"03c" => DATA <= x"4511"; - when x"03d" => DATA <= x"6373"; - when x"03e" => DATA <= x"7061"; - when x"03f" => DATA <= x"0065"; - when x"040" => DATA <= x"17c6"; - when x"041" => DATA <= x"f5f6"; - when x"042" => DATA <= x"1001"; - when x"043" => DATA <= x"0a81"; - when x"044" => DATA <= x"09f7"; - when x"045" => DATA <= x"0436"; - when x"046" => DATA <= x"09f7"; - when x"047" => DATA <= x"0028"; - when x"048" => DATA <= x"09f7"; - when x"049" => DATA <= x"042e"; - when x"04a" => DATA <= x"01d3"; - when x"04b" => DATA <= x"6000"; - when x"04c" => DATA <= x"903f"; - when x"04d" => DATA <= x"fd42"; - when x"04e" => DATA <= x"0087"; - when x"04f" => DATA <= x"e5c1"; - when x"050" => DATA <= x"0002"; - when x"051" => DATA <= x"9440"; - when x"052" => DATA <= x"45c0"; + when x"010" => DATA <= x"17e6"; + when x"011" => DATA <= x"f5fc"; + when x"012" => DATA <= x"09f7"; + when x"013" => DATA <= x"057c"; + when x"014" => DATA <= x"159f"; + when x"015" => DATA <= x"f5f8"; + when x"016" => DATA <= x"15c1"; + when x"017" => DATA <= x"f804"; + when x"018" => DATA <= x"09f7"; + when x"019" => DATA <= x"007e"; + when x"01a" => DATA <= x"09f7"; + when x"01b" => DATA <= x"0494"; + when x"01c" => DATA <= x"00a1"; + when x"01d" => DATA <= x"09f7"; + when x"01e" => DATA <= x"00be"; + when x"01f" => DATA <= x"17c6"; + when x"020" => DATA <= x"f5f6"; + when x"021" => DATA <= x"15c1"; + when x"022" => DATA <= x"f85a"; + when x"023" => DATA <= x"09f7"; + when x"024" => DATA <= x"0068"; + when x"025" => DATA <= x"09f7"; + when x"026" => DATA <= x"0224"; + when x"027" => DATA <= x"870c"; + when x"028" => DATA <= x"17c0"; + when x"029" => DATA <= x"f862"; + when x"02a" => DATA <= x"09f7"; + when x"02b" => DATA <= x"0060"; + when x"02c" => DATA <= x"01f4"; + when x"02d" => DATA <= x"4450"; + when x"02e" => DATA <= x"3150"; + when x"02f" => DATA <= x"3e31"; + when x"030" => DATA <= x"002a"; + when x"031" => DATA <= x"f530"; + when x"032" => DATA <= x"20a8"; + when x"033" => DATA <= x"ffff"; + when x"034" => DATA <= x"15c0"; + when x"035" => DATA <= x"007e"; + when x"036" => DATA <= x"09f7"; + when x"037" => DATA <= x"017e"; + when x"038" => DATA <= x"880f"; + when x"039" => DATA <= x"4511"; + when x"03a" => DATA <= x"6373"; + when x"03b" => DATA <= x"7061"; + when x"03c" => DATA <= x"0065"; + when x"03d" => DATA <= x"17c6"; + when x"03e" => DATA <= x"f5f6"; + when x"03f" => DATA <= x"1001"; + when x"040" => DATA <= x"0a81"; + when x"041" => DATA <= x"09f7"; + when x"042" => DATA <= x"043a"; + when x"043" => DATA <= x"09f7"; + when x"044" => DATA <= x"0028"; + when x"045" => DATA <= x"09f7"; + when x"046" => DATA <= x"0432"; + when x"047" => DATA <= x"01d7"; + when x"048" => DATA <= x"6000"; + when x"049" => DATA <= x"903f"; + when x"04a" => DATA <= x"fd48"; + when x"04b" => DATA <= x"0087"; + when x"04c" => DATA <= x"e5c1"; + when x"04d" => DATA <= x"0002"; + when x"04e" => DATA <= x"9440"; + when x"04f" => DATA <= x"45c0"; + when x"050" => DATA <= x"ff00"; + when x"051" => DATA <= x"9241"; + when x"052" => DATA <= x"45c1"; when x"053" => DATA <= x"ff00"; - when x"054" => DATA <= x"9241"; - when x"055" => DATA <= x"45c1"; - when x"056" => DATA <= x"ff00"; - when x"057" => DATA <= x"00c1"; - when x"058" => DATA <= x"5001"; - when x"059" => DATA <= x"0087"; - when x"05a" => DATA <= x"09f7"; - when x"05b" => DATA <= x"0404"; - when x"05c" => DATA <= x"9440"; - when x"05d" => DATA <= x"02fc"; - when x"05e" => DATA <= x"0087"; - when x"05f" => DATA <= x"1066"; - when x"060" => DATA <= x"10a6"; - when x"061" => DATA <= x"10e6"; - when x"062" => DATA <= x"1126"; - when x"063" => DATA <= x"1166"; - when x"064" => DATA <= x"1185"; - when x"065" => DATA <= x"2157"; - when x"066" => DATA <= x"f500"; - when x"067" => DATA <= x"8602"; - when x"068" => DATA <= x"15c6"; - when x"069" => DATA <= x"f530"; - when x"06a" => DATA <= x"1166"; - when x"06b" => DATA <= x"17e6"; - when x"06c" => DATA <= x"f5fc"; - when x"06d" => DATA <= x"09f7"; - when x"06e" => DATA <= x"0014"; - when x"06f" => DATA <= x"159f"; - when x"070" => DATA <= x"f5fc"; - when x"071" => DATA <= x"1386"; - when x"072" => DATA <= x"1585"; - when x"073" => DATA <= x"1584"; - when x"074" => DATA <= x"1583"; - when x"075" => DATA <= x"1582"; - when x"076" => DATA <= x"1581"; - when x"077" => DATA <= x"0a00"; - when x"078" => DATA <= x"0087"; - when x"079" => DATA <= x"1001"; - when x"07a" => DATA <= x"15c0"; - when x"07b" => DATA <= x"0002"; - when x"07c" => DATA <= x"09f7"; - when x"07d" => DATA <= x"0582"; + when x"054" => DATA <= x"00c1"; + when x"055" => DATA <= x"5001"; + when x"056" => DATA <= x"0087"; + when x"057" => DATA <= x"09f7"; + when x"058" => DATA <= x"0408"; + when x"059" => DATA <= x"9440"; + when x"05a" => DATA <= x"02fc"; + when x"05b" => DATA <= x"0087"; + when x"05c" => DATA <= x"1066"; + when x"05d" => DATA <= x"10a6"; + when x"05e" => DATA <= x"10e6"; + when x"05f" => DATA <= x"1126"; + when x"060" => DATA <= x"1166"; + when x"061" => DATA <= x"1185"; + when x"062" => DATA <= x"2157"; + when x"063" => DATA <= x"f500"; + when x"064" => DATA <= x"8602"; + when x"065" => DATA <= x"15c6"; + when x"066" => DATA <= x"f530"; + when x"067" => DATA <= x"1166"; + when x"068" => DATA <= x"17e6"; + when x"069" => DATA <= x"f5fc"; + when x"06a" => DATA <= x"09f7"; + when x"06b" => DATA <= x"0014"; + when x"06c" => DATA <= x"159f"; + when x"06d" => DATA <= x"f5fc"; + when x"06e" => DATA <= x"1386"; + when x"06f" => DATA <= x"1585"; + when x"070" => DATA <= x"1584"; + when x"071" => DATA <= x"1583"; + when x"072" => DATA <= x"1582"; + when x"073" => DATA <= x"1581"; + when x"074" => DATA <= x"0a00"; + when x"075" => DATA <= x"0087"; + when x"076" => DATA <= x"1001"; + when x"077" => DATA <= x"15c0"; + when x"078" => DATA <= x"0002"; + when x"079" => DATA <= x"09f7"; + when x"07a" => DATA <= x"0582"; + when x"07b" => DATA <= x"09f7"; + when x"07c" => DATA <= x"054e"; + when x"07d" => DATA <= x"00b1"; when x"07e" => DATA <= x"09f7"; - when x"07f" => DATA <= x"054e"; - when x"080" => DATA <= x"00b1"; - when x"081" => DATA <= x"09f7"; - when x"082" => DATA <= x"038e"; - when x"083" => DATA <= x"80f4"; - when x"084" => DATA <= x"15c0"; - when x"085" => DATA <= x"0000"; - when x"086" => DATA <= x"0c40"; - when x"087" => DATA <= x"17c1"; - when x"088" => DATA <= x"f5f8"; - when x"089" => DATA <= x"1066"; - when x"08a" => DATA <= x"9c42"; - when x"08b" => DATA <= x"0007"; - when x"08c" => DATA <= x"45c2"; - when x"08d" => DATA <= x"ff00"; - when x"08e" => DATA <= x"6081"; - when x"08f" => DATA <= x"8bd1"; - when x"090" => DATA <= x"0229"; + when x"07f" => DATA <= x"0392"; + when x"080" => DATA <= x"80f4"; + when x"081" => DATA <= x"15c0"; + when x"082" => DATA <= x"0000"; + when x"083" => DATA <= x"0c40"; + when x"084" => DATA <= x"17c1"; + when x"085" => DATA <= x"f5f8"; + when x"086" => DATA <= x"1066"; + when x"087" => DATA <= x"9c42"; + when x"088" => DATA <= x"0007"; + when x"089" => DATA <= x"45c2"; + when x"08a" => DATA <= x"ff00"; + when x"08b" => DATA <= x"6081"; + when x"08c" => DATA <= x"8bd1"; + when x"08d" => DATA <= x"0226"; + when x"08e" => DATA <= x"a457"; + when x"08f" => DATA <= x"0028"; + when x"090" => DATA <= x"0223"; when x"091" => DATA <= x"a457"; - when x"092" => DATA <= x"0028"; - when x"093" => DATA <= x"0226"; + when x"092" => DATA <= x"0043"; + when x"093" => DATA <= x"0220"; when x"094" => DATA <= x"a457"; - when x"095" => DATA <= x"0043"; - when x"096" => DATA <= x"0223"; - when x"097" => DATA <= x"a457"; - when x"098" => DATA <= x"0029"; - when x"099" => DATA <= x"0220"; - when x"09a" => DATA <= x"1381"; - when x"09b" => DATA <= x"9c42"; - when x"09c" => DATA <= x"0006"; - when x"09d" => DATA <= x"35c2"; - when x"09e" => DATA <= x"0040"; - when x"09f" => DATA <= x"0346"; - when x"0a0" => DATA <= x"45c2"; - when x"0a1" => DATA <= x"fff0"; - when x"0a2" => DATA <= x"2097"; - when x"0a3" => DATA <= x"0007"; - when x"0a4" => DATA <= x"0241"; - when x"0a5" => DATA <= x"9c42"; - when x"0a6" => DATA <= x"0006"; - when x"0a7" => DATA <= x"35c2"; - when x"0a8" => DATA <= x"0020"; - when x"0a9" => DATA <= x"030e"; - when x"0aa" => DATA <= x"9c42"; - when x"0ab" => DATA <= x"0007"; - when x"0ac" => DATA <= x"45c2"; - when x"0ad" => DATA <= x"ff00"; - when x"0ae" => DATA <= x"6081"; - when x"0af" => DATA <= x"0a81"; - when x"0b0" => DATA <= x"8bd1"; - when x"0b1" => DATA <= x"02fe"; - when x"0b2" => DATA <= x"65c1"; - when x"0b3" => DATA <= x"0004"; - when x"0b4" => DATA <= x"09f7"; - when x"0b5" => DATA <= x"ff36"; - when x"0b6" => DATA <= x"6581"; - when x"0b7" => DATA <= x"1066"; - when x"0b8" => DATA <= x"55c0"; - when x"0b9" => DATA <= x"0002"; - when x"0ba" => DATA <= x"1581"; - when x"0bb" => DATA <= x"45c1"; - when x"0bc" => DATA <= x"0001"; - when x"0bd" => DATA <= x"1242"; - when x"0be" => DATA <= x"2097"; - when x"0bf" => DATA <= x"0105"; - when x"0c0" => DATA <= x"871c"; - when x"0c1" => DATA <= x"2097"; - when x"0c2" => DATA <= x"0109"; - when x"0c3" => DATA <= x"8619"; - when x"0c4" => DATA <= x"0bd1"; - when x"0c5" => DATA <= x"1443"; - when x"0c6" => DATA <= x"1444"; - when x"0c7" => DATA <= x"6103"; - when x"0c8" => DATA <= x"1444"; - when x"0c9" => DATA <= x"17c2"; - when x"0ca" => DATA <= x"f5f4"; - when x"0cb" => DATA <= x"65c1"; - when x"0cc" => DATA <= x"0008"; - when x"0cd" => DATA <= x"0c83"; - when x"0ce" => DATA <= x"1452"; - when x"0cf" => DATA <= x"0ac3"; - when x"0d0" => DATA <= x"02fd"; - when x"0d1" => DATA <= x"0c84"; - when x"0d2" => DATA <= x"0303"; - when x"0d3" => DATA <= x"0a12"; - when x"0d4" => DATA <= x"0ac4"; - when x"0d5" => DATA <= x"02fd"; - when x"0d6" => DATA <= x"45c0"; - when x"0d7" => DATA <= x"fffe"; - when x"0d8" => DATA <= x"17c1"; - when x"0d9" => DATA <= x"f5f4"; - when x"0da" => DATA <= x"0a26"; - when x"0db" => DATA <= x"0a26"; - when x"0dc" => DATA <= x"0a26"; + when x"095" => DATA <= x"0029"; + when x"096" => DATA <= x"021d"; + when x"097" => DATA <= x"1381"; + when x"098" => DATA <= x"9c42"; + when x"099" => DATA <= x"0006"; + when x"09a" => DATA <= x"45c2"; + when x"09b" => DATA <= x"ffb0"; + when x"09c" => DATA <= x"2097"; + when x"09d" => DATA <= x"0047"; + when x"09e" => DATA <= x"0247"; + when x"09f" => DATA <= x"9c42"; + when x"0a0" => DATA <= x"0006"; + when x"0a1" => DATA <= x"35c2"; + when x"0a2" => DATA <= x"0020"; + when x"0a3" => DATA <= x"030e"; + when x"0a4" => DATA <= x"9c42"; + when x"0a5" => DATA <= x"0007"; + when x"0a6" => DATA <= x"45c2"; + when x"0a7" => DATA <= x"ff00"; + when x"0a8" => DATA <= x"6081"; + when x"0a9" => DATA <= x"0a81"; + when x"0aa" => DATA <= x"8bd1"; + when x"0ab" => DATA <= x"02fe"; + when x"0ac" => DATA <= x"65c1"; + when x"0ad" => DATA <= x"0004"; + when x"0ae" => DATA <= x"09f7"; + when x"0af" => DATA <= x"ff3c"; + when x"0b0" => DATA <= x"6581"; + when x"0b1" => DATA <= x"1066"; + when x"0b2" => DATA <= x"55c0"; + when x"0b3" => DATA <= x"0002"; + when x"0b4" => DATA <= x"1581"; + when x"0b5" => DATA <= x"45c1"; + when x"0b6" => DATA <= x"0001"; + when x"0b7" => DATA <= x"1242"; + when x"0b8" => DATA <= x"2097"; + when x"0b9" => DATA <= x"0105"; + when x"0ba" => DATA <= x"871a"; + when x"0bb" => DATA <= x"2097"; + when x"0bc" => DATA <= x"0109"; + when x"0bd" => DATA <= x"8617"; + when x"0be" => DATA <= x"0bd1"; + when x"0bf" => DATA <= x"1443"; + when x"0c0" => DATA <= x"1444"; + when x"0c1" => DATA <= x"6103"; + when x"0c2" => DATA <= x"1444"; + when x"0c3" => DATA <= x"17c2"; + when x"0c4" => DATA <= x"f5f4"; + when x"0c5" => DATA <= x"65c1"; + when x"0c6" => DATA <= x"0008"; + when x"0c7" => DATA <= x"0c83"; + when x"0c8" => DATA <= x"1452"; + when x"0c9" => DATA <= x"0ac3"; + when x"0ca" => DATA <= x"02fd"; + when x"0cb" => DATA <= x"0c84"; + when x"0cc" => DATA <= x"0303"; + when x"0cd" => DATA <= x"0a12"; + when x"0ce" => DATA <= x"0ac4"; + when x"0cf" => DATA <= x"02fd"; + when x"0d0" => DATA <= x"17c1"; + when x"0d1" => DATA <= x"f5f4"; + when x"0d2" => DATA <= x"0a26"; + when x"0d3" => DATA <= x"0a26"; + when x"0d4" => DATA <= x"0a26"; + when x"0d5" => DATA <= x"1066"; + when x"0d6" => DATA <= x"1026"; + when x"0d7" => DATA <= x"00b1"; + when x"0d8" => DATA <= x"09f7"; + when x"0d9" => DATA <= x"0424"; + when x"0da" => DATA <= x"1580"; + when x"0db" => DATA <= x"139f"; + when x"0dc" => DATA <= x"f5fc"; when x"0dd" => DATA <= x"15c5"; when x"0de" => DATA <= x"0bbc"; - when x"0df" => DATA <= x"0c80"; - when x"0e0" => DATA <= x"105f"; - when x"0e1" => DATA <= x"f5fc"; - when x"0e2" => DATA <= x"1066"; - when x"0e3" => DATA <= x"15c1"; - when x"0e4" => DATA <= x"f804"; + when x"0df" => DATA <= x"0a04"; + when x"0e0" => DATA <= x"0a03"; + when x"0e1" => DATA <= x"0a02"; + when x"0e2" => DATA <= x"15c1"; + when x"0e3" => DATA <= x"f804"; + when x"0e4" => DATA <= x"0c80"; when x"0e5" => DATA <= x"0087"; when x"0e6" => DATA <= x"0c80"; - when x"0e7" => DATA <= x"860d"; - when x"0e8" => DATA <= x"15c0"; - when x"0e9" => DATA <= x"0003"; - when x"0ea" => DATA <= x"09f7"; - when x"0eb" => DATA <= x"0406"; - when x"0ec" => DATA <= x"880f"; - when x"0ed" => DATA <= x"4ef9"; - when x"0ee" => DATA <= x"746f"; - when x"0ef" => DATA <= x"5020"; - when x"0f0" => DATA <= x"5044"; - when x"0f1" => DATA <= x"3131"; - when x"0f2" => DATA <= x"6320"; - when x"0f3" => DATA <= x"646f"; - when x"0f4" => DATA <= x"0065"; - when x"0f5" => DATA <= x"0077"; - when x"0f6" => DATA <= x"fe4e"; - when x"0f7" => DATA <= x"0188"; - when x"0f8" => DATA <= x"1026"; - when x"0f9" => DATA <= x"8bc0"; - when x"0fa" => DATA <= x"810b"; - when x"0fb" => DATA <= x"15c0"; - when x"0fc" => DATA <= x"0004"; - when x"0fd" => DATA <= x"09f7"; - when x"0fe" => DATA <= x"047a"; - when x"0ff" => DATA <= x"1380"; - when x"100" => DATA <= x"09f7"; - when x"101" => DATA <= x"047a"; - when x"102" => DATA <= x"09f7"; - when x"103" => DATA <= x"028c"; - when x"104" => DATA <= x"1001"; - when x"105" => DATA <= x"0132"; - when x"106" => DATA <= x"2017"; - when x"107" => DATA <= x"0082"; - when x"108" => DATA <= x"8704"; - when x"109" => DATA <= x"0325"; - when x"10a" => DATA <= x"2017"; - when x"10b" => DATA <= x"0085"; - when x"10c" => DATA <= x"8724"; - when x"10d" => DATA <= x"15c0"; - when x"10e" => DATA <= x"0006"; - when x"10f" => DATA <= x"09f7"; - when x"110" => DATA <= x"0456"; - when x"111" => DATA <= x"1080"; - when x"112" => DATA <= x"09f7"; - when x"113" => DATA <= x"0456"; - when x"114" => DATA <= x"1580"; - when x"115" => DATA <= x"09f7"; - when x"116" => DATA <= x"0450"; - when x"117" => DATA <= x"2017"; - when x"118" => DATA <= x"009d"; - when x"119" => DATA <= x"031f"; - when x"11a" => DATA <= x"2017"; - when x"11b" => DATA <= x"008e"; - when x"11c" => DATA <= x"03da"; - when x"11d" => DATA <= x"1026"; - when x"11e" => DATA <= x"09f7"; - when x"11f" => DATA <= x"0254"; - when x"120" => DATA <= x"65c0"; - when x"121" => DATA <= x"ff80"; - when x"122" => DATA <= x"09f7"; - when x"123" => DATA <= x"024c"; - when x"124" => DATA <= x"45c0"; - when x"125" => DATA <= x"ff00"; - when x"126" => DATA <= x"1002"; - when x"127" => DATA <= x"00c0"; - when x"128" => DATA <= x"1001"; - when x"129" => DATA <= x"09f7"; - when x"12a" => DATA <= x"023e"; - when x"12b" => DATA <= x"45c0"; - when x"12c" => DATA <= x"ff00"; - when x"12d" => DATA <= x"5001"; - when x"12e" => DATA <= x"0109"; - when x"12f" => DATA <= x"15c0"; - when x"130" => DATA <= x"0086"; - when x"131" => DATA <= x"0cc0"; - when x"132" => DATA <= x"1c01"; - when x"133" => DATA <= x"f4ee"; - when x"134" => DATA <= x"1042"; - when x"135" => DATA <= x"00c2"; - when x"136" => DATA <= x"45c2"; - when x"137" => DATA <= x"ff00"; - when x"138" => DATA <= x"1580"; - when x"139" => DATA <= x"0087"; - when x"13a" => DATA <= x"0bc0"; - when x"13b" => DATA <= x"034d"; - when x"13c" => DATA <= x"10e6"; - when x"13d" => DATA <= x"10a6"; - when x"13e" => DATA <= x"1026"; - when x"13f" => DATA <= x"15c0"; - when x"140" => DATA <= x"0008"; - when x"141" => DATA <= x"09f7"; - when x"142" => DATA <= x"03f8"; - when x"143" => DATA <= x"1380"; - when x"144" => DATA <= x"09f7"; - when x"145" => DATA <= x"03f2"; - when x"146" => DATA <= x"8bc0"; - when x"147" => DATA <= x"8003"; - when x"148" => DATA <= x"9442"; - when x"149" => DATA <= x"9243"; - when x"14a" => DATA <= x"010c"; - when x"14b" => DATA <= x"15c2"; - when x"14c" => DATA <= x"0010"; - when x"14d" => DATA <= x"15c3"; - when x"14e" => DATA <= x"0010"; - when x"14f" => DATA <= x"2017"; - when x"150" => DATA <= x"0015"; - when x"151" => DATA <= x"8605"; - when x"152" => DATA <= x"6000"; - when x"153" => DATA <= x"65c0"; - when x"154" => DATA <= x"fae8"; - when x"155" => DATA <= x"9402"; - when x"156" => DATA <= x"9203"; - when x"157" => DATA <= x"1080"; - when x"158" => DATA <= x"09f7"; - when x"159" => DATA <= x"03ca"; - when x"15a" => DATA <= x"6081"; - when x"15b" => DATA <= x"0ac2"; - when x"15c" => DATA <= x"2097"; - when x"15d" => DATA <= x"0080"; - when x"15e" => DATA <= x"8605"; - when x"15f" => DATA <= x"9840"; - when x"160" => DATA <= x"09f7"; - when x"161" => DATA <= x"03ba"; - when x"162" => DATA <= x"0ac2"; - when x"163" => DATA <= x"80fb"; - when x"164" => DATA <= x"10c0"; - when x"165" => DATA <= x"09f7"; - when x"166" => DATA <= x"03b0"; - when x"167" => DATA <= x"60c1"; - when x"168" => DATA <= x"0ac3"; - when x"169" => DATA <= x"20d7"; - when x"16a" => DATA <= x"0080"; - when x"16b" => DATA <= x"8605"; - when x"16c" => DATA <= x"09f7"; - when x"16d" => DATA <= x"01b8"; - when x"16e" => DATA <= x"9021"; - when x"16f" => DATA <= x"0ac3"; - when x"170" => DATA <= x"80fb"; - when x"171" => DATA <= x"1580"; - when x"172" => DATA <= x"1582"; - when x"173" => DATA <= x"1583"; - when x"174" => DATA <= x"0087"; - when x"175" => DATA <= x"0500"; - when x"176" => DATA <= x"0005"; - when x"177" => DATA <= x"0500"; - when x"178" => DATA <= x"0005"; - when x"179" => DATA <= x"0504"; - when x"17a" => DATA <= x"0005"; - when x"17b" => DATA <= x"0008"; - when x"17c" => DATA <= x"000e"; - when x"17d" => DATA <= x"0504"; - when x"17e" => DATA <= x"0901"; - when x"17f" => DATA <= x"0501"; - when x"180" => DATA <= x"0005"; - when x"181" => DATA <= x"0800"; - when x"182" => DATA <= x"1910"; - when x"183" => DATA <= x"0020"; - when x"184" => DATA <= x"0110"; - when x"185" => DATA <= x"0d0d"; - when x"186" => DATA <= x"8000"; - when x"187" => DATA <= x"0808"; - when x"188" => DATA <= x"8080"; - when x"189" => DATA <= x"15c0"; - when x"18a" => DATA <= x"000a"; - when x"18b" => DATA <= x"09f7"; - when x"18c" => DATA <= x"0364"; - when x"18d" => DATA <= x"65c1"; - when x"18e" => DATA <= x"0002"; - when x"18f" => DATA <= x"15c2"; - when x"190" => DATA <= x"0003"; - when x"191" => DATA <= x"09f7"; - when x"192" => DATA <= x"0336"; - when x"193" => DATA <= x"15c0"; - when x"194" => DATA <= x"0007"; - when x"195" => DATA <= x"09f7"; - when x"196" => DATA <= x"0350"; - when x"197" => DATA <= x"0a00"; - when x"198" => DATA <= x"09f7"; - when x"199" => DATA <= x"034a"; - when x"19a" => DATA <= x"09f7"; - when x"19b" => DATA <= x"015c"; - when x"19c" => DATA <= x"65c0"; - when x"19d" => DATA <= x"ff80"; - when x"19e" => DATA <= x"870b"; - when x"19f" => DATA <= x"09f7"; - when x"1a0" => DATA <= x"fd5c"; - when x"1a1" => DATA <= x"0a02"; - when x"1a2" => DATA <= x"09f7"; - when x"1a3" => DATA <= x"014c"; - when x"1a4" => DATA <= x"9011"; - when x"1a5" => DATA <= x"0a82"; - when x"1a6" => DATA <= x"2017"; - when x"1a7" => DATA <= x"000d"; - when x"1a8" => DATA <= x"02f9"; - when x"1a9" => DATA <= x"0ac2"; - when x"1aa" => DATA <= x"0087"; - when x"1ab" => DATA <= x"10a6"; - when x"1ac" => DATA <= x"1066"; - when x"1ad" => DATA <= x"1026"; - when x"1ae" => DATA <= x"15c0"; - when x"1af" => DATA <= x"000c"; - when x"1b0" => DATA <= x"09f7"; - when x"1b1" => DATA <= x"0314"; - when x"1b2" => DATA <= x"1081"; - when x"1b3" => DATA <= x"15c2"; - when x"1b4" => DATA <= x"0004"; - when x"1b5" => DATA <= x"09f7"; - when x"1b6" => DATA <= x"02ee"; - when x"1b7" => DATA <= x"1580"; - when x"1b8" => DATA <= x"09f7"; - when x"1b9" => DATA <= x"030a"; - when x"1ba" => DATA <= x"09f7"; - when x"1bb" => DATA <= x"011c"; - when x"1bc" => DATA <= x"1026"; - when x"1bd" => DATA <= x"15c2"; - when x"1be" => DATA <= x"0004"; - when x"1bf" => DATA <= x"0133"; - when x"1c0" => DATA <= x"1026"; - when x"1c1" => DATA <= x"15c0"; - when x"1c2" => DATA <= x"0012"; - when x"1c3" => DATA <= x"09f7"; - when x"1c4" => DATA <= x"02f4"; - when x"1c5" => DATA <= x"1580"; - when x"1c6" => DATA <= x"09f7"; - when x"1c7" => DATA <= x"02ee"; - when x"1c8" => DATA <= x"0bc0"; - when x"1c9" => DATA <= x"0206"; - when x"1ca" => DATA <= x"09f7"; - when x"1cb" => DATA <= x"02e4"; - when x"1cc" => DATA <= x"09f7"; - when x"1cd" => DATA <= x"00f8"; - when x"1ce" => DATA <= x"0a00"; - when x"1cf" => DATA <= x"0087"; - when x"1d0" => DATA <= x"1066"; - when x"1d1" => DATA <= x"09f7"; - when x"1d2" => DATA <= x"02a8"; - when x"1d3" => DATA <= x"09f7"; - when x"1d4" => DATA <= x"00ea"; - when x"1d5" => DATA <= x"1581"; - when x"1d6" => DATA <= x"0087"; - when x"1d7" => DATA <= x"10a6"; - when x"1d8" => DATA <= x"1066"; - when x"1d9" => DATA <= x"1026"; - when x"1da" => DATA <= x"15c0"; - when x"1db" => DATA <= x"0014"; - when x"1dc" => DATA <= x"09f7"; - when x"1dd" => DATA <= x"02c2"; - when x"1de" => DATA <= x"65c1"; - when x"1df" => DATA <= x"0002"; - when x"1e0" => DATA <= x"15c2"; - when x"1e1" => DATA <= x"0010"; - when x"1e2" => DATA <= x"09f7"; - when x"1e3" => DATA <= x"0294"; - when x"1e4" => DATA <= x"09f7"; - when x"1e5" => DATA <= x"fcd2"; - when x"1e6" => DATA <= x"09f7"; - when x"1e7" => DATA <= x"027e"; - when x"1e8" => DATA <= x"1580"; - when x"1e9" => DATA <= x"09f7"; - when x"1ea" => DATA <= x"02a8"; - when x"1eb" => DATA <= x"09f7"; - when x"1ec" => DATA <= x"00ba"; - when x"1ed" => DATA <= x"1381"; - when x"1ee" => DATA <= x"1026"; - when x"1ef" => DATA <= x"65c1"; - when x"1f0" => DATA <= x"0002"; - when x"1f1" => DATA <= x"15c2"; - when x"1f2" => DATA <= x"0010"; - when x"1f3" => DATA <= x"09f7"; - when x"1f4" => DATA <= x"0280"; - when x"1f5" => DATA <= x"1580"; - when x"1f6" => DATA <= x"1581"; - when x"1f7" => DATA <= x"1582"; - when x"1f8" => DATA <= x"0087"; - when x"1f9" => DATA <= x"8bc9"; - when x"1fa" => DATA <= x"0205"; - when x"1fb" => DATA <= x"0bc0"; - when x"1fc" => DATA <= x"0303"; - when x"1fd" => DATA <= x"2017"; - when x"1fe" => DATA <= x"0005"; - when x"1ff" => DATA <= x"8713"; - when x"200" => DATA <= x"10a6"; - when x"201" => DATA <= x"1026"; - when x"202" => DATA <= x"15c0"; - when x"203" => DATA <= x"0016"; - when x"204" => DATA <= x"09f7"; - when x"205" => DATA <= x"0272"; - when x"206" => DATA <= x"15c2"; - when x"207" => DATA <= x"000d"; - when x"208" => DATA <= x"09f7"; - when x"209" => DATA <= x"0248"; - when x"20a" => DATA <= x"1580"; - when x"20b" => DATA <= x"09f7"; - when x"20c" => DATA <= x"0264"; - when x"20d" => DATA <= x"15c2"; - when x"20e" => DATA <= x"000d"; - when x"20f" => DATA <= x"09f7"; - when x"210" => DATA <= x"0248"; - when x"211" => DATA <= x"1582"; - when x"212" => DATA <= x"0133"; - when x"213" => DATA <= x"10a6"; - when x"214" => DATA <= x"1026"; - when x"215" => DATA <= x"1066"; - when x"216" => DATA <= x"0a81"; - when x"217" => DATA <= x"09f7"; - when x"218" => DATA <= x"fc70"; - when x"219" => DATA <= x"1042"; - when x"21a" => DATA <= x"1581"; - when x"21b" => DATA <= x"2397"; - when x"21c" => DATA <= x"0003"; - when x"21d" => DATA <= x"8604"; - when x"21e" => DATA <= x"9480"; - when x"21f" => DATA <= x"09f7"; - when x"220" => DATA <= x"008c"; - when x"221" => DATA <= x"0104"; - when x"222" => DATA <= x"09f7"; - when x"223" => DATA <= x"003e"; - when x"224" => DATA <= x"870d"; - when x"225" => DATA <= x"9012"; - when x"226" => DATA <= x"8bf1"; - when x"227" => DATA <= x"0005"; - when x"228" => DATA <= x"0202"; - when x"229" => DATA <= x"8af1"; - when x"22a" => DATA <= x"0006"; - when x"22b" => DATA <= x"8af1"; - when x"22c" => DATA <= x"0005"; - when x"22d" => DATA <= x"02ed"; - when x"22e" => DATA <= x"8bf1"; - when x"22f" => DATA <= x"0006"; - when x"230" => DATA <= x"02ea"; - when x"231" => DATA <= x"00a1"; - when x"232" => DATA <= x"90b1"; - when x"233" => DATA <= x"0001"; - when x"234" => DATA <= x"00c2"; - when x"235" => DATA <= x"90b1"; - when x"236" => DATA <= x"0002"; - when x"237" => DATA <= x"0bd6"; - when x"238" => DATA <= x"1582"; - when x"239" => DATA <= x"15c0"; - when x"23a" => DATA <= x"0000"; - when x"23b" => DATA <= x"0087"; - when x"23c" => DATA <= x"0bc1"; - when x"23d" => DATA <= x"0305"; - when x"23e" => DATA <= x"15c0"; - when x"23f" => DATA <= x"000e"; - when x"240" => DATA <= x"09f7"; - when x"241" => DATA <= x"01f4"; - when x"242" => DATA <= x"0103"; - when x"243" => DATA <= x"0a00"; - when x"244" => DATA <= x"09f7"; - when x"245" => DATA <= x"01f2"; - when x"246" => DATA <= x"09f7"; - when x"247" => DATA <= x"0004"; - when x"248" => DATA <= x"65c0"; - when x"249" => DATA <= x"ff80"; - when x"24a" => DATA <= x"97c0"; - when x"24b" => DATA <= x"fff4"; - when x"24c" => DATA <= x"80fd"; - when x"24d" => DATA <= x"97c0"; - when x"24e" => DATA <= x"fff6"; - when x"24f" => DATA <= x"0087"; - when x"250" => DATA <= x"0bc1"; - when x"251" => DATA <= x"0315"; - when x"252" => DATA <= x"1026"; - when x"253" => DATA <= x"15c0"; - when x"254" => DATA <= x"0010"; - when x"255" => DATA <= x"09f7"; - when x"256" => DATA <= x"01ca"; - when x"257" => DATA <= x"1380"; - when x"258" => DATA <= x"09f7"; - when x"259" => DATA <= x"01ca"; - when x"25a" => DATA <= x"09f7"; - when x"25b" => DATA <= x"ffdc"; - when x"25c" => DATA <= x"1580"; - when x"25d" => DATA <= x"0087"; - when x"25e" => DATA <= x"25c0"; - when x"25f" => DATA <= x"000d"; - when x"260" => DATA <= x"0206"; - when x"261" => DATA <= x"15c0"; - when x"262" => DATA <= x"000a"; - when x"263" => DATA <= x"09f7"; - when x"264" => DATA <= x"0004"; - when x"265" => DATA <= x"15c0"; - when x"266" => DATA <= x"000d"; - when x"267" => DATA <= x"1026"; - when x"268" => DATA <= x"97c0"; - when x"269" => DATA <= x"fff0"; - when x"26a" => DATA <= x"45c0"; - when x"26b" => DATA <= x"00bf"; - when x"26c" => DATA <= x"03fb"; - when x"26d" => DATA <= x"1580"; - when x"26e" => DATA <= x"901f"; - when x"26f" => DATA <= x"fff2"; - when x"270" => DATA <= x"0087"; - when x"271" => DATA <= x"880f"; - when x"272" => DATA <= x"42ff"; - when x"273" => DATA <= x"6461"; - when x"274" => DATA <= x"0000"; - when x"275" => DATA <= x"45f6"; - when x"276" => DATA <= x"fff0"; - when x"277" => DATA <= x"0002"; - when x"278" => DATA <= x"17e6"; - when x"279" => DATA <= x"f5e0"; - when x"27a" => DATA <= x"17e6"; - when x"27b" => DATA <= x"f5ec"; - when x"27c" => DATA <= x"119f"; - when x"27d" => DATA <= x"f5ec"; - when x"27e" => DATA <= x"15df"; - when x"27f" => DATA <= x"fd20"; - when x"280" => DATA <= x"f5e0"; - when x"281" => DATA <= x"0be6"; - when x"282" => DATA <= x"1026"; - when x"283" => DATA <= x"1d80"; - when x"284" => DATA <= x"0008"; - when x"285" => DATA <= x"1800"; - when x"286" => DATA <= x"45c0"; - when x"287" => DATA <= x"ff00"; - when x"288" => DATA <= x"6000"; - when x"289" => DATA <= x"67c0"; - when x"28a" => DATA <= x"f5ee"; - when x"28b" => DATA <= x"1236"; - when x"28c" => DATA <= x"0002"; - when x"28d" => DATA <= x"1580"; - when x"28e" => DATA <= x"09de"; - when x"28f" => DATA <= x"8405"; - when x"290" => DATA <= x"17c6"; - when x"291" => DATA <= x"f5ec"; + when x"0e7" => DATA <= x"860c"; + when x"0e8" => DATA <= x"00b1"; + when x"0e9" => DATA <= x"09f7"; + when x"0ea" => DATA <= x"0402"; + when x"0eb" => DATA <= x"880f"; + when x"0ec" => DATA <= x"4ef9"; + when x"0ed" => DATA <= x"746f"; + when x"0ee" => DATA <= x"5020"; + when x"0ef" => DATA <= x"5044"; + when x"0f0" => DATA <= x"3131"; + when x"0f1" => DATA <= x"6320"; + when x"0f2" => DATA <= x"646f"; + when x"0f3" => DATA <= x"0065"; + when x"0f4" => DATA <= x"0077"; + when x"0f5" => DATA <= x"fe52"; + when x"0f6" => DATA <= x"0186"; + when x"0f7" => DATA <= x"1026"; + when x"0f8" => DATA <= x"8bc0"; + when x"0f9" => DATA <= x"810b"; + when x"0fa" => DATA <= x"15c0"; + when x"0fb" => DATA <= x"0004"; + when x"0fc" => DATA <= x"09f7"; + when x"0fd" => DATA <= x"0476"; + when x"0fe" => DATA <= x"1380"; + when x"0ff" => DATA <= x"09f7"; + when x"100" => DATA <= x"0476"; + when x"101" => DATA <= x"09f7"; + when x"102" => DATA <= x"028c"; + when x"103" => DATA <= x"1001"; + when x"104" => DATA <= x"0132"; + when x"105" => DATA <= x"2017"; + when x"106" => DATA <= x"0082"; + when x"107" => DATA <= x"8704"; + when x"108" => DATA <= x"0325"; + when x"109" => DATA <= x"2017"; + when x"10a" => DATA <= x"0085"; + when x"10b" => DATA <= x"8724"; + when x"10c" => DATA <= x"15c0"; + when x"10d" => DATA <= x"0006"; + when x"10e" => DATA <= x"09f7"; + when x"10f" => DATA <= x"0452"; + when x"110" => DATA <= x"1080"; + when x"111" => DATA <= x"09f7"; + when x"112" => DATA <= x"0452"; + when x"113" => DATA <= x"1580"; + when x"114" => DATA <= x"09f7"; + when x"115" => DATA <= x"044c"; + when x"116" => DATA <= x"2017"; + when x"117" => DATA <= x"009d"; + when x"118" => DATA <= x"031f"; + when x"119" => DATA <= x"2017"; + when x"11a" => DATA <= x"008e"; + when x"11b" => DATA <= x"03da"; + when x"11c" => DATA <= x"1026"; + when x"11d" => DATA <= x"09f7"; + when x"11e" => DATA <= x"0254"; + when x"11f" => DATA <= x"65c0"; + when x"120" => DATA <= x"ff80"; + when x"121" => DATA <= x"09f7"; + when x"122" => DATA <= x"024c"; + when x"123" => DATA <= x"45c0"; + when x"124" => DATA <= x"ff00"; + when x"125" => DATA <= x"1002"; + when x"126" => DATA <= x"00c0"; + when x"127" => DATA <= x"1001"; + when x"128" => DATA <= x"09f7"; + when x"129" => DATA <= x"023e"; + when x"12a" => DATA <= x"45c0"; + when x"12b" => DATA <= x"ff00"; + when x"12c" => DATA <= x"5001"; + when x"12d" => DATA <= x"0109"; + when x"12e" => DATA <= x"15c0"; + when x"12f" => DATA <= x"0086"; + when x"130" => DATA <= x"0cc0"; + when x"131" => DATA <= x"1c01"; + when x"132" => DATA <= x"f4ee"; + when x"133" => DATA <= x"1042"; + when x"134" => DATA <= x"00c2"; + when x"135" => DATA <= x"45c2"; + when x"136" => DATA <= x"ff00"; + when x"137" => DATA <= x"1580"; + when x"138" => DATA <= x"0087"; + when x"139" => DATA <= x"0bc0"; + when x"13a" => DATA <= x"034d"; + when x"13b" => DATA <= x"10e6"; + when x"13c" => DATA <= x"10a6"; + when x"13d" => DATA <= x"1026"; + when x"13e" => DATA <= x"15c0"; + when x"13f" => DATA <= x"0008"; + when x"140" => DATA <= x"09f7"; + when x"141" => DATA <= x"03f4"; + when x"142" => DATA <= x"1380"; + when x"143" => DATA <= x"09f7"; + when x"144" => DATA <= x"03ee"; + when x"145" => DATA <= x"8bc0"; + when x"146" => DATA <= x"8003"; + when x"147" => DATA <= x"9442"; + when x"148" => DATA <= x"9243"; + when x"149" => DATA <= x"010c"; + when x"14a" => DATA <= x"15c2"; + when x"14b" => DATA <= x"0010"; + when x"14c" => DATA <= x"15c3"; + when x"14d" => DATA <= x"0010"; + when x"14e" => DATA <= x"2017"; + when x"14f" => DATA <= x"0015"; + when x"150" => DATA <= x"8605"; + when x"151" => DATA <= x"6000"; + when x"152" => DATA <= x"65c0"; + when x"153" => DATA <= x"fae6"; + when x"154" => DATA <= x"9402"; + when x"155" => DATA <= x"9203"; + when x"156" => DATA <= x"1080"; + when x"157" => DATA <= x"09f7"; + when x"158" => DATA <= x"03c6"; + when x"159" => DATA <= x"6081"; + when x"15a" => DATA <= x"0ac2"; + when x"15b" => DATA <= x"2097"; + when x"15c" => DATA <= x"0080"; + when x"15d" => DATA <= x"8605"; + when x"15e" => DATA <= x"9840"; + when x"15f" => DATA <= x"09f7"; + when x"160" => DATA <= x"03b6"; + when x"161" => DATA <= x"0ac2"; + when x"162" => DATA <= x"80fb"; + when x"163" => DATA <= x"10c0"; + when x"164" => DATA <= x"09f7"; + when x"165" => DATA <= x"03ac"; + when x"166" => DATA <= x"60c1"; + when x"167" => DATA <= x"0ac3"; + when x"168" => DATA <= x"20d7"; + when x"169" => DATA <= x"0080"; + when x"16a" => DATA <= x"8605"; + when x"16b" => DATA <= x"09f7"; + when x"16c" => DATA <= x"01b8"; + when x"16d" => DATA <= x"9021"; + when x"16e" => DATA <= x"0ac3"; + when x"16f" => DATA <= x"80fb"; + when x"170" => DATA <= x"1580"; + when x"171" => DATA <= x"1582"; + when x"172" => DATA <= x"1583"; + when x"173" => DATA <= x"0087"; + when x"174" => DATA <= x"0500"; + when x"175" => DATA <= x"0005"; + when x"176" => DATA <= x"0500"; + when x"177" => DATA <= x"0005"; + when x"178" => DATA <= x"0504"; + when x"179" => DATA <= x"0005"; + when x"17a" => DATA <= x"0008"; + when x"17b" => DATA <= x"000e"; + when x"17c" => DATA <= x"0504"; + when x"17d" => DATA <= x"0901"; + when x"17e" => DATA <= x"0501"; + when x"17f" => DATA <= x"0005"; + when x"180" => DATA <= x"0800"; + when x"181" => DATA <= x"1910"; + when x"182" => DATA <= x"0020"; + when x"183" => DATA <= x"0110"; + when x"184" => DATA <= x"0d0d"; + when x"185" => DATA <= x"8000"; + when x"186" => DATA <= x"0808"; + when x"187" => DATA <= x"8080"; + when x"188" => DATA <= x"15c0"; + when x"189" => DATA <= x"000a"; + when x"18a" => DATA <= x"09f7"; + when x"18b" => DATA <= x"0360"; + when x"18c" => DATA <= x"65c1"; + when x"18d" => DATA <= x"0002"; + when x"18e" => DATA <= x"15c2"; + when x"18f" => DATA <= x"0003"; + when x"190" => DATA <= x"09f7"; + when x"191" => DATA <= x"0332"; + when x"192" => DATA <= x"15c0"; + when x"193" => DATA <= x"0007"; + when x"194" => DATA <= x"09f7"; + when x"195" => DATA <= x"034c"; + when x"196" => DATA <= x"0a00"; + when x"197" => DATA <= x"09f7"; + when x"198" => DATA <= x"0346"; + when x"199" => DATA <= x"09f7"; + when x"19a" => DATA <= x"015c"; + when x"19b" => DATA <= x"65c0"; + when x"19c" => DATA <= x"ff80"; + when x"19d" => DATA <= x"870b"; + when x"19e" => DATA <= x"09f7"; + when x"19f" => DATA <= x"fd58"; + when x"1a0" => DATA <= x"0a02"; + when x"1a1" => DATA <= x"09f7"; + when x"1a2" => DATA <= x"014c"; + when x"1a3" => DATA <= x"9011"; + when x"1a4" => DATA <= x"0a82"; + when x"1a5" => DATA <= x"2017"; + when x"1a6" => DATA <= x"000d"; + when x"1a7" => DATA <= x"02f9"; + when x"1a8" => DATA <= x"0ac2"; + when x"1a9" => DATA <= x"0087"; + when x"1aa" => DATA <= x"10a6"; + when x"1ab" => DATA <= x"1066"; + when x"1ac" => DATA <= x"1026"; + when x"1ad" => DATA <= x"15c0"; + when x"1ae" => DATA <= x"000c"; + when x"1af" => DATA <= x"09f7"; + when x"1b0" => DATA <= x"0310"; + when x"1b1" => DATA <= x"1081"; + when x"1b2" => DATA <= x"15c2"; + when x"1b3" => DATA <= x"0004"; + when x"1b4" => DATA <= x"09f7"; + when x"1b5" => DATA <= x"02ea"; + when x"1b6" => DATA <= x"1580"; + when x"1b7" => DATA <= x"09f7"; + when x"1b8" => DATA <= x"0306"; + when x"1b9" => DATA <= x"09f7"; + when x"1ba" => DATA <= x"011c"; + when x"1bb" => DATA <= x"1026"; + when x"1bc" => DATA <= x"15c2"; + when x"1bd" => DATA <= x"0004"; + when x"1be" => DATA <= x"0133"; + when x"1bf" => DATA <= x"1026"; + when x"1c0" => DATA <= x"15c0"; + when x"1c1" => DATA <= x"0012"; + when x"1c2" => DATA <= x"09f7"; + when x"1c3" => DATA <= x"02f0"; + when x"1c4" => DATA <= x"1580"; + when x"1c5" => DATA <= x"09f7"; + when x"1c6" => DATA <= x"02ea"; + when x"1c7" => DATA <= x"0bc0"; + when x"1c8" => DATA <= x"0206"; + when x"1c9" => DATA <= x"09f7"; + when x"1ca" => DATA <= x"02e0"; + when x"1cb" => DATA <= x"09f7"; + when x"1cc" => DATA <= x"00f8"; + when x"1cd" => DATA <= x"0a00"; + when x"1ce" => DATA <= x"0087"; + when x"1cf" => DATA <= x"1066"; + when x"1d0" => DATA <= x"09f7"; + when x"1d1" => DATA <= x"02a4"; + when x"1d2" => DATA <= x"09f7"; + when x"1d3" => DATA <= x"00ea"; + when x"1d4" => DATA <= x"1581"; + when x"1d5" => DATA <= x"0087"; + when x"1d6" => DATA <= x"10a6"; + when x"1d7" => DATA <= x"1066"; + when x"1d8" => DATA <= x"1026"; + when x"1d9" => DATA <= x"15c0"; + when x"1da" => DATA <= x"0014"; + when x"1db" => DATA <= x"09f7"; + when x"1dc" => DATA <= x"02be"; + when x"1dd" => DATA <= x"65c1"; + when x"1de" => DATA <= x"0002"; + when x"1df" => DATA <= x"15c2"; + when x"1e0" => DATA <= x"0010"; + when x"1e1" => DATA <= x"09f7"; + when x"1e2" => DATA <= x"0290"; + when x"1e3" => DATA <= x"09f7"; + when x"1e4" => DATA <= x"fcce"; + when x"1e5" => DATA <= x"09f7"; + when x"1e6" => DATA <= x"027a"; + when x"1e7" => DATA <= x"1580"; + when x"1e8" => DATA <= x"09f7"; + when x"1e9" => DATA <= x"02a4"; + when x"1ea" => DATA <= x"09f7"; + when x"1eb" => DATA <= x"00ba"; + when x"1ec" => DATA <= x"1381"; + when x"1ed" => DATA <= x"1026"; + when x"1ee" => DATA <= x"65c1"; + when x"1ef" => DATA <= x"0002"; + when x"1f0" => DATA <= x"15c2"; + when x"1f1" => DATA <= x"0010"; + when x"1f2" => DATA <= x"09f7"; + when x"1f3" => DATA <= x"027c"; + when x"1f4" => DATA <= x"1580"; + when x"1f5" => DATA <= x"1581"; + when x"1f6" => DATA <= x"1582"; + when x"1f7" => DATA <= x"0087"; + when x"1f8" => DATA <= x"8bc9"; + when x"1f9" => DATA <= x"0205"; + when x"1fa" => DATA <= x"0bc0"; + when x"1fb" => DATA <= x"0303"; + when x"1fc" => DATA <= x"2017"; + when x"1fd" => DATA <= x"0005"; + when x"1fe" => DATA <= x"8713"; + when x"1ff" => DATA <= x"10a6"; + when x"200" => DATA <= x"1026"; + when x"201" => DATA <= x"15c0"; + when x"202" => DATA <= x"0016"; + when x"203" => DATA <= x"09f7"; + when x"204" => DATA <= x"026e"; + when x"205" => DATA <= x"15c2"; + when x"206" => DATA <= x"000d"; + when x"207" => DATA <= x"09f7"; + when x"208" => DATA <= x"0244"; + when x"209" => DATA <= x"1580"; + when x"20a" => DATA <= x"09f7"; + when x"20b" => DATA <= x"0260"; + when x"20c" => DATA <= x"15c2"; + when x"20d" => DATA <= x"000d"; + when x"20e" => DATA <= x"09f7"; + when x"20f" => DATA <= x"0244"; + when x"210" => DATA <= x"1582"; + when x"211" => DATA <= x"0133"; + when x"212" => DATA <= x"10a6"; + when x"213" => DATA <= x"1026"; + when x"214" => DATA <= x"1066"; + when x"215" => DATA <= x"0a81"; + when x"216" => DATA <= x"09f7"; + when x"217" => DATA <= x"fc6c"; + when x"218" => DATA <= x"1042"; + when x"219" => DATA <= x"1581"; + when x"21a" => DATA <= x"2397"; + when x"21b" => DATA <= x"0003"; + when x"21c" => DATA <= x"8604"; + when x"21d" => DATA <= x"9480"; + when x"21e" => DATA <= x"09f7"; + when x"21f" => DATA <= x"008c"; + when x"220" => DATA <= x"0104"; + when x"221" => DATA <= x"09f7"; + when x"222" => DATA <= x"003e"; + when x"223" => DATA <= x"870d"; + when x"224" => DATA <= x"9012"; + when x"225" => DATA <= x"8bf1"; + when x"226" => DATA <= x"0005"; + when x"227" => DATA <= x"0202"; + when x"228" => DATA <= x"8af1"; + when x"229" => DATA <= x"0006"; + when x"22a" => DATA <= x"8af1"; + when x"22b" => DATA <= x"0005"; + when x"22c" => DATA <= x"02ed"; + when x"22d" => DATA <= x"8bf1"; + when x"22e" => DATA <= x"0006"; + when x"22f" => DATA <= x"02ea"; + when x"230" => DATA <= x"00a1"; + when x"231" => DATA <= x"90b1"; + when x"232" => DATA <= x"0001"; + when x"233" => DATA <= x"00c2"; + when x"234" => DATA <= x"90b1"; + when x"235" => DATA <= x"0002"; + when x"236" => DATA <= x"0bd6"; + when x"237" => DATA <= x"1582"; + when x"238" => DATA <= x"15c0"; + when x"239" => DATA <= x"0000"; + when x"23a" => DATA <= x"0087"; + when x"23b" => DATA <= x"0bc1"; + when x"23c" => DATA <= x"0305"; + when x"23d" => DATA <= x"15c0"; + when x"23e" => DATA <= x"000e"; + when x"23f" => DATA <= x"09f7"; + when x"240" => DATA <= x"01f0"; + when x"241" => DATA <= x"0103"; + when x"242" => DATA <= x"0a00"; + when x"243" => DATA <= x"09f7"; + when x"244" => DATA <= x"01ee"; + when x"245" => DATA <= x"09f7"; + when x"246" => DATA <= x"0004"; + when x"247" => DATA <= x"65c0"; + when x"248" => DATA <= x"ff80"; + when x"249" => DATA <= x"97c0"; + when x"24a" => DATA <= x"fff4"; + when x"24b" => DATA <= x"80fd"; + when x"24c" => DATA <= x"97c0"; + when x"24d" => DATA <= x"fff6"; + when x"24e" => DATA <= x"0087"; + when x"24f" => DATA <= x"0bc1"; + when x"250" => DATA <= x"0315"; + when x"251" => DATA <= x"1026"; + when x"252" => DATA <= x"15c0"; + when x"253" => DATA <= x"0010"; + when x"254" => DATA <= x"09f7"; + when x"255" => DATA <= x"01c6"; + when x"256" => DATA <= x"1380"; + when x"257" => DATA <= x"09f7"; + when x"258" => DATA <= x"01c6"; + when x"259" => DATA <= x"09f7"; + when x"25a" => DATA <= x"ffdc"; + when x"25b" => DATA <= x"1580"; + when x"25c" => DATA <= x"0087"; + when x"25d" => DATA <= x"25c0"; + when x"25e" => DATA <= x"000d"; + when x"25f" => DATA <= x"0206"; + when x"260" => DATA <= x"15c0"; + when x"261" => DATA <= x"000a"; + when x"262" => DATA <= x"09f7"; + when x"263" => DATA <= x"0004"; + when x"264" => DATA <= x"15c0"; + when x"265" => DATA <= x"000d"; + when x"266" => DATA <= x"35df"; + when x"267" => DATA <= x"0040"; + when x"268" => DATA <= x"fff0"; + when x"269" => DATA <= x"03fc"; + when x"26a" => DATA <= x"901f"; + when x"26b" => DATA <= x"fff2"; + when x"26c" => DATA <= x"0087"; + when x"26d" => DATA <= x"880f"; + when x"26e" => DATA <= x"42ff"; + when x"26f" => DATA <= x"6461"; + when x"270" => DATA <= x"ff00"; + when x"271" => DATA <= x"45f6"; + when x"272" => DATA <= x"fff0"; + when x"273" => DATA <= x"0002"; + when x"274" => DATA <= x"17e6"; + when x"275" => DATA <= x"f5e0"; + when x"276" => DATA <= x"17e6"; + when x"277" => DATA <= x"f5ec"; + when x"278" => DATA <= x"119f"; + when x"279" => DATA <= x"f5ec"; + when x"27a" => DATA <= x"15df"; + when x"27b" => DATA <= x"fd18"; + when x"27c" => DATA <= x"f5e0"; + when x"27d" => DATA <= x"0be6"; + when x"27e" => DATA <= x"1026"; + when x"27f" => DATA <= x"1d80"; + when x"280" => DATA <= x"0008"; + when x"281" => DATA <= x"1800"; + when x"282" => DATA <= x"45c0"; + when x"283" => DATA <= x"ff00"; + when x"284" => DATA <= x"6000"; + when x"285" => DATA <= x"67c0"; + when x"286" => DATA <= x"f5ee"; + when x"287" => DATA <= x"1236"; + when x"288" => DATA <= x"0002"; + when x"289" => DATA <= x"1580"; + when x"28a" => DATA <= x"09de"; + when x"28b" => DATA <= x"8405"; + when x"28c" => DATA <= x"17c6"; + when x"28d" => DATA <= x"f5ec"; + when x"28e" => DATA <= x"55f6"; + when x"28f" => DATA <= x"0002"; + when x"290" => DATA <= x"0006"; + when x"291" => DATA <= x"8603"; when x"292" => DATA <= x"55f6"; - when x"293" => DATA <= x"0002"; + when x"293" => DATA <= x"0001"; when x"294" => DATA <= x"0006"; - when x"295" => DATA <= x"8603"; - when x"296" => DATA <= x"55f6"; - when x"297" => DATA <= x"0001"; - when x"298" => DATA <= x"0006"; - when x"299" => DATA <= x"159f"; - when x"29a" => DATA <= x"f5ec"; - when x"29b" => DATA <= x"159f"; - when x"29c" => DATA <= x"f5e0"; - when x"29d" => DATA <= x"0002"; - when x"29e" => DATA <= x"1d80"; - when x"29f" => DATA <= x"0006"; - when x"2a0" => DATA <= x"1db6"; -- was 17f6 - when x"2a1" => DATA <= x"0004"; -- was f5e0 - when x"2a2" => DATA <= x"0006"; - when x"2a3" => DATA <= x"0087"; - when x"2a4" => DATA <= x"0bd6"; - when x"2a5" => DATA <= x"159f"; - when x"2a6" => DATA <= x"f5ec"; - when x"2a7" => DATA <= x"159f"; - when x"2a8" => DATA <= x"f5e0"; - when x"2a9" => DATA <= x"1026"; - when x"2aa" => DATA <= x"810b"; - when x"2ab" => DATA <= x"2017"; - when x"2ac" => DATA <= x"0100"; - when x"2ad" => DATA <= x"861b"; - when x"2ae" => DATA <= x"6000"; - when x"2af" => DATA <= x"67c0"; - when x"2b0" => DATA <= x"f5ee"; - when x"2b1" => DATA <= x"1226"; - when x"2b2" => DATA <= x"0bc1"; - when x"2b3" => DATA <= x"0314"; - when x"2b4" => DATA <= x"1048"; - when x"2b5" => DATA <= x"0112"; - when x"2b6" => DATA <= x"0a40"; - when x"2b7" => DATA <= x"2017"; - when x"2b8" => DATA <= x"0006"; - when x"2b9" => DATA <= x"860f"; - when x"2ba" => DATA <= x"6000"; - when x"2bb" => DATA <= x"6000"; - when x"2bc" => DATA <= x"65c0"; - when x"2bd" => DATA <= x"f5d8"; - when x"2be" => DATA <= x"1226"; - when x"2bf" => DATA <= x"0bc1"; - when x"2c0" => DATA <= x"0301"; - when x"2c1" => DATA <= x"1048"; - when x"2c2" => DATA <= x"0bd0"; - when x"2c3" => DATA <= x"1226"; - when x"2c4" => DATA <= x"0bc2"; - when x"2c5" => DATA <= x"0301"; - when x"2c6" => DATA <= x"1088"; - when x"2c7" => DATA <= x"1582"; - when x"2c8" => DATA <= x"1581"; - when x"2c9" => DATA <= x"1580"; - when x"2ca" => DATA <= x"0002"; - when x"2cb" => DATA <= x"0bc0"; - when x"2cc" => DATA <= x"0306"; - when x"2cd" => DATA <= x"2017"; - when x"2ce" => DATA <= x"0001"; - when x"2cf" => DATA <= x"0306"; - when x"2d0" => DATA <= x"2017"; - when x"2d1" => DATA <= x"0004"; - when x"2d2" => DATA <= x"871c"; - when x"2d3" => DATA <= x"0087"; - when x"2d4" => DATA <= x"007f"; - when x"2d5" => DATA <= x"f82c"; - when x"2d6" => DATA <= x"0a00"; - when x"2d7" => DATA <= x"15d0"; - when x"2d8" => DATA <= x"ffda"; - when x"2d9" => DATA <= x"0a10"; - when x"2da" => DATA <= x"2017"; - when x"2db" => DATA <= x"0100"; - when x"2dc" => DATA <= x"02fa"; - when x"2dd" => DATA <= x"15df"; - when x"2de" => DATA <= x"fce2"; - when x"2df" => DATA <= x"001c"; - when x"2e0" => DATA <= x"15df"; - when x"2e1" => DATA <= x"fcea"; - when x"2e2" => DATA <= x"0018"; - when x"2e3" => DATA <= x"15df"; - when x"2e4" => DATA <= x"ffd6"; - when x"2e5" => DATA <= x"0080"; - when x"2e6" => DATA <= x"15df"; - when x"2e7" => DATA <= x"00e0"; - when x"2e8" => DATA <= x"0082"; - when x"2e9" => DATA <= x"15df"; - when x"2ea" => DATA <= x"feaa"; - when x"2eb" => DATA <= x"0084"; - when x"2ec" => DATA <= x"15df"; - when x"2ed" => DATA <= x"00c0"; - when x"2ee" => DATA <= x"0086"; - when x"2ef" => DATA <= x"15c2"; - when x"2f0" => DATA <= x"f5d8"; - when x"2f1" => DATA <= x"15c1"; - when x"2f2" => DATA <= x"fe04"; - when x"2f3" => DATA <= x"15c0"; - when x"2f4" => DATA <= x"0024"; - when x"2f5" => DATA <= x"17e6"; - when x"2f6" => DATA <= x"f5fc"; - when x"2f7" => DATA <= x"1452"; - when x"2f8" => DATA <= x"0ac0"; - when x"2f9" => DATA <= x"02fd"; - when x"2fa" => DATA <= x"159f"; - when x"2fb" => DATA <= x"f5fc"; - when x"2fc" => DATA <= x"15c0"; - when x"2fd" => DATA <= x"00f0"; - when x"2fe" => DATA <= x"1252"; - when x"2ff" => DATA <= x"0ac0"; - when x"300" => DATA <= x"02fd"; - when x"301" => DATA <= x"0087"; - when x"302" => DATA <= x"f83c"; - when x"303" => DATA <= x"0000"; - when x"304" => DATA <= x"f896"; - when x"305" => DATA <= x"f5ff"; - when x"306" => DATA <= x"f880"; - when x"307" => DATA <= x"f500"; - when x"308" => DATA <= x"fda6"; + when x"295" => DATA <= x"159f"; + when x"296" => DATA <= x"f5ec"; + when x"297" => DATA <= x"159f"; + when x"298" => DATA <= x"f5e0"; + when x"299" => DATA <= x"0002"; + when x"29a" => DATA <= x"1d80"; + when x"29b" => DATA <= x"0006"; + when x"29c" => DATA <= x"1db6"; + when x"29d" => DATA <= x"0004"; + when x"29e" => DATA <= x"0006"; + when x"29f" => DATA <= x"0087"; + when x"2a0" => DATA <= x"0bd6"; -- was 17f6 + when x"2a1" => DATA <= x"159f"; -- was f5e0 + when x"2a2" => DATA <= x"f5ec"; + when x"2a3" => DATA <= x"159f"; + when x"2a4" => DATA <= x"f5e0"; + when x"2a5" => DATA <= x"1026"; + when x"2a6" => DATA <= x"810b"; + when x"2a7" => DATA <= x"2017"; + when x"2a8" => DATA <= x"0100"; + when x"2a9" => DATA <= x"861b"; + when x"2aa" => DATA <= x"6000"; + when x"2ab" => DATA <= x"67c0"; + when x"2ac" => DATA <= x"f5ee"; + when x"2ad" => DATA <= x"1226"; + when x"2ae" => DATA <= x"0bc1"; + when x"2af" => DATA <= x"0314"; + when x"2b0" => DATA <= x"1048"; + when x"2b1" => DATA <= x"0112"; + when x"2b2" => DATA <= x"0a40"; + when x"2b3" => DATA <= x"2017"; + when x"2b4" => DATA <= x"0006"; + when x"2b5" => DATA <= x"860f"; + when x"2b6" => DATA <= x"6000"; + when x"2b7" => DATA <= x"6000"; + when x"2b8" => DATA <= x"65c0"; + when x"2b9" => DATA <= x"f5d8"; + when x"2ba" => DATA <= x"1226"; + when x"2bb" => DATA <= x"0bc1"; + when x"2bc" => DATA <= x"0301"; + when x"2bd" => DATA <= x"1048"; + when x"2be" => DATA <= x"0bd0"; + when x"2bf" => DATA <= x"1226"; + when x"2c0" => DATA <= x"0bc2"; + when x"2c1" => DATA <= x"0301"; + when x"2c2" => DATA <= x"1088"; + when x"2c3" => DATA <= x"1582"; + when x"2c4" => DATA <= x"1581"; + when x"2c5" => DATA <= x"1580"; + when x"2c6" => DATA <= x"0002"; + when x"2c7" => DATA <= x"0bc0"; + when x"2c8" => DATA <= x"0306"; + when x"2c9" => DATA <= x"2017"; + when x"2ca" => DATA <= x"0001"; + when x"2cb" => DATA <= x"0306"; + when x"2cc" => DATA <= x"2017"; + when x"2cd" => DATA <= x"0004"; + when x"2ce" => DATA <= x"871c"; + when x"2cf" => DATA <= x"0087"; + when x"2d0" => DATA <= x"007f"; + when x"2d1" => DATA <= x"f834"; + when x"2d2" => DATA <= x"0a00"; + when x"2d3" => DATA <= x"15d0"; + when x"2d4" => DATA <= x"ffce"; + when x"2d5" => DATA <= x"0a10"; + when x"2d6" => DATA <= x"2017"; + when x"2d7" => DATA <= x"0100"; + when x"2d8" => DATA <= x"02fa"; + when x"2d9" => DATA <= x"15df"; + when x"2da" => DATA <= x"fcda"; + when x"2db" => DATA <= x"001c"; + when x"2dc" => DATA <= x"15df"; + when x"2dd" => DATA <= x"fce2"; + when x"2de" => DATA <= x"0018"; + when x"2df" => DATA <= x"15df"; + when x"2e0" => DATA <= x"ffca"; + when x"2e1" => DATA <= x"0080"; + when x"2e2" => DATA <= x"15df"; + when x"2e3" => DATA <= x"00e0"; + when x"2e4" => DATA <= x"0082"; + when x"2e5" => DATA <= x"15df"; + when x"2e6" => DATA <= x"fe9e"; + when x"2e7" => DATA <= x"0084"; + when x"2e8" => DATA <= x"15df"; + when x"2e9" => DATA <= x"00c0"; + when x"2ea" => DATA <= x"0086"; + when x"2eb" => DATA <= x"0c00"; + when x"2ec" => DATA <= x"15c2"; + when x"2ed" => DATA <= x"f5d8"; + when x"2ee" => DATA <= x"15c1"; + when x"2ef" => DATA <= x"fdfe"; + when x"2f0" => DATA <= x"15c0"; + when x"2f1" => DATA <= x"0014"; + when x"2f2" => DATA <= x"8702"; + when x"2f3" => DATA <= x"65c0"; + when x"2f4" => DATA <= x"0010"; + when x"2f5" => DATA <= x"1452"; + when x"2f6" => DATA <= x"0ac0"; + when x"2f7" => DATA <= x"02fd"; + when x"2f8" => DATA <= x"8705"; + when x"2f9" => DATA <= x"15c0"; + when x"2fa" => DATA <= x"00f0"; + when x"2fb" => DATA <= x"1252"; + when x"2fc" => DATA <= x"0ac0"; + when x"2fd" => DATA <= x"02fd"; + when x"2fe" => DATA <= x"0087"; + when x"2ff" => DATA <= x"f83e"; + when x"300" => DATA <= x"0000"; + when x"301" => DATA <= x"f890"; + when x"302" => DATA <= x"f5ff"; + when x"303" => DATA <= x"f87a"; + when x"304" => DATA <= x"f500"; + when x"305" => DATA <= x"fd9e"; + when x"306" => DATA <= x"0000"; + when x"307" => DATA <= x"ffce"; + when x"308" => DATA <= x"0000"; when x"309" => DATA <= x"0000"; - when x"30a" => DATA <= x"ffda"; + when x"30a" => DATA <= x"f600"; when x"30b" => DATA <= x"0000"; - when x"30c" => DATA <= x"0000"; - when x"30d" => DATA <= x"f600"; - when x"30e" => DATA <= x"0000"; - when x"30f" => DATA <= x"f804"; - when x"310" => DATA <= x"0100"; - when x"311" => DATA <= x"f500"; + when x"30c" => DATA <= x"f804"; + when x"30d" => DATA <= x"0100"; + when x"30e" => DATA <= x"f500"; + when x"30f" => DATA <= x"f83e"; + when x"310" => DATA <= x"0000"; + when x"311" => DATA <= x"f83e"; when x"312" => DATA <= x"0000"; - when x"313" => DATA <= x"0000"; - when x"314" => DATA <= x"f81c"; - when x"315" => DATA <= x"0000"; - when x"316" => DATA <= x"fda8"; - when x"317" => DATA <= x"f8be"; - when x"318" => DATA <= x"f9f0"; - when x"319" => DATA <= x"fa74"; - when x"31a" => DATA <= x"fcce"; - when x"31b" => DATA <= x"fcc2"; - when x"31c" => DATA <= x"fc86"; - when x"31d" => DATA <= x"fbae"; - when x"31e" => DATA <= x"fb56"; - when x"31f" => DATA <= x"fc78"; - when x"320" => DATA <= x"fca0"; - when x"321" => DATA <= x"fbf2"; - when x"322" => DATA <= x"fb80"; - when x"323" => DATA <= x"fd96"; - when x"324" => DATA <= x"fd48"; - when x"325" => DATA <= x"fd3c"; - when x"326" => DATA <= x"fda6"; - when x"327" => DATA <= x"9440"; - when x"328" => DATA <= x"09f7"; - when x"329" => DATA <= x"002a"; - when x"32a" => DATA <= x"2017"; - when x"32b" => DATA <= x"000d"; - when x"32c" => DATA <= x"02fa"; - when x"32d" => DATA <= x"0087"; - when x"32e" => DATA <= x"6081"; - when x"32f" => DATA <= x"9840"; - when x"330" => DATA <= x"09f7"; - when x"331" => DATA <= x"001a"; - when x"332" => DATA <= x"0ac2"; - when x"333" => DATA <= x"02fb"; - when x"334" => DATA <= x"0087"; - when x"335" => DATA <= x"6081"; - when x"336" => DATA <= x"09f7"; - when x"337" => DATA <= x"fe24"; - when x"338" => DATA <= x"9021"; - when x"339" => DATA <= x"0ac2"; - when x"33a" => DATA <= x"02fb"; - when x"33b" => DATA <= x"0087"; - when x"33c" => DATA <= x"09f7"; - when x"33d" => DATA <= x"0002"; - when x"33e" => DATA <= x"1040"; - when x"33f" => DATA <= x"1026"; - when x"340" => DATA <= x"97c0"; - when x"341" => DATA <= x"fff4"; - when x"342" => DATA <= x"45c0"; - when x"343" => DATA <= x"00bf"; - when x"344" => DATA <= x"03fb"; - when x"345" => DATA <= x"1580"; - when x"346" => DATA <= x"901f"; - when x"347" => DATA <= x"fff6"; + when x"313" => DATA <= x"fda0"; + when x"314" => DATA <= x"f8b8"; + when x"315" => DATA <= x"f9ee"; + when x"316" => DATA <= x"fa72"; + when x"317" => DATA <= x"fccc"; + when x"318" => DATA <= x"fcc0"; + when x"319" => DATA <= x"fc84"; + when x"31a" => DATA <= x"fbac"; + when x"31b" => DATA <= x"fb54"; + when x"31c" => DATA <= x"fc76"; + when x"31d" => DATA <= x"fc9e"; + when x"31e" => DATA <= x"fbf0"; + when x"31f" => DATA <= x"fb7e"; + when x"320" => DATA <= x"fd8e"; + when x"321" => DATA <= x"fd40"; + when x"322" => DATA <= x"fd34"; + when x"323" => DATA <= x"fd9e"; + when x"324" => DATA <= x"9440"; + when x"325" => DATA <= x"09f7"; + when x"326" => DATA <= x"002a"; + when x"327" => DATA <= x"2017"; + when x"328" => DATA <= x"000d"; + when x"329" => DATA <= x"02fa"; + when x"32a" => DATA <= x"0087"; + when x"32b" => DATA <= x"6081"; + when x"32c" => DATA <= x"9840"; + when x"32d" => DATA <= x"09f7"; + when x"32e" => DATA <= x"001a"; + when x"32f" => DATA <= x"0ac2"; + when x"330" => DATA <= x"02fb"; + when x"331" => DATA <= x"0087"; + when x"332" => DATA <= x"6081"; + when x"333" => DATA <= x"09f7"; + when x"334" => DATA <= x"fe28"; + when x"335" => DATA <= x"9021"; + when x"336" => DATA <= x"0ac2"; + when x"337" => DATA <= x"02fb"; + when x"338" => DATA <= x"0087"; + when x"339" => DATA <= x"09f7"; + when x"33a" => DATA <= x"0002"; + when x"33b" => DATA <= x"1040"; + when x"33c" => DATA <= x"35df"; + when x"33d" => DATA <= x"0040"; + when x"33e" => DATA <= x"fff4"; + when x"33f" => DATA <= x"03fc"; + when x"340" => DATA <= x"901f"; + when x"341" => DATA <= x"fff6"; + when x"342" => DATA <= x"0087"; + when x"343" => DATA <= x"97c0"; + when x"344" => DATA <= x"fff0"; + when x"345" => DATA <= x"80fd"; + when x"346" => DATA <= x"97c0"; + when x"347" => DATA <= x"fff2"; when x"348" => DATA <= x"0087"; when x"349" => DATA <= x"97c0"; - when x"34a" => DATA <= x"fff0"; + when x"34a" => DATA <= x"fffc"; when x"34b" => DATA <= x"80fd"; when x"34c" => DATA <= x"97c0"; - when x"34d" => DATA <= x"fff2"; + when x"34d" => DATA <= x"fffe"; when x"34e" => DATA <= x"0087"; - when x"34f" => DATA <= x"97c0"; - when x"350" => DATA <= x"fffc"; - when x"351" => DATA <= x"80fd"; - when x"352" => DATA <= x"97c0"; - when x"353" => DATA <= x"fffe"; - when x"354" => DATA <= x"0087"; - when x"355" => DATA <= x"1026"; - when x"356" => DATA <= x"97c0"; - when x"357" => DATA <= x"fffc"; - when x"358" => DATA <= x"811c"; + when x"34f" => DATA <= x"1026"; + when x"350" => DATA <= x"97c0"; + when x"351" => DATA <= x"fffc"; + when x"352" => DATA <= x"811c"; + when x"353" => DATA <= x"97c0"; + when x"354" => DATA <= x"fff0"; + when x"355" => DATA <= x"8103"; + when x"356" => DATA <= x"1580"; + when x"357" => DATA <= x"007f"; + when x"358" => DATA <= x"f736"; when x"359" => DATA <= x"97c0"; - when x"35a" => DATA <= x"fff0"; - when x"35b" => DATA <= x"8103"; - when x"35c" => DATA <= x"1580"; - when x"35d" => DATA <= x"007f"; - when x"35e" => DATA <= x"f72a"; - when x"35f" => DATA <= x"97c0"; - when x"360" => DATA <= x"fff2"; - when x"361" => DATA <= x"8110"; - when x"362" => DATA <= x"1066"; - when x"363" => DATA <= x"10a6"; + when x"35a" => DATA <= x"fff2"; + when x"35b" => DATA <= x"8110"; + when x"35c" => DATA <= x"1066"; + when x"35d" => DATA <= x"10a6"; + when x"35e" => DATA <= x"09f7"; + when x"35f" => DATA <= x"ffc6"; + when x"360" => DATA <= x"1002"; + when x"361" => DATA <= x"09f7"; + when x"362" => DATA <= x"ffc0"; + when x"363" => DATA <= x"1001"; when x"364" => DATA <= x"09f7"; - when x"365" => DATA <= x"ffc6"; - when x"366" => DATA <= x"1002"; - when x"367" => DATA <= x"09f7"; - when x"368" => DATA <= x"ffc0"; - when x"369" => DATA <= x"1001"; - when x"36a" => DATA <= x"09f7"; - when x"36b" => DATA <= x"ffba"; + when x"365" => DATA <= x"ffba"; + when x"366" => DATA <= x"09ff"; + when x"367" => DATA <= x"f714"; + when x"368" => DATA <= x"1582"; + when x"369" => DATA <= x"1581"; + when x"36a" => DATA <= x"1580"; + when x"36b" => DATA <= x"0002"; when x"36c" => DATA <= x"09ff"; - when x"36d" => DATA <= x"f708"; - when x"36e" => DATA <= x"1582"; - when x"36f" => DATA <= x"1581"; - when x"370" => DATA <= x"1580"; - when x"371" => DATA <= x"0002"; - when x"372" => DATA <= x"09ff"; - when x"373" => DATA <= x"f6f4"; - when x"374" => DATA <= x"0156"; - when x"375" => DATA <= x"97c0"; - when x"376" => DATA <= x"fffe"; - when x"377" => DATA <= x"8013"; - when x"378" => DATA <= x"1066"; - when x"379" => DATA <= x"09f7"; - when x"37a" => DATA <= x"fd9e"; - when x"37b" => DATA <= x"17c1"; - when x"37c" => DATA <= x"f5e2"; - when x"37d" => DATA <= x"09f7"; - when x"37e" => DATA <= x"fd96"; - when x"37f" => DATA <= x"9011"; - when x"380" => DATA <= x"09f7"; - when x"381" => DATA <= x"fd90"; - when x"382" => DATA <= x"9011"; - when x"383" => DATA <= x"02fc"; - when x"384" => DATA <= x"1581"; - when x"385" => DATA <= x"1580"; - when x"386" => DATA <= x"17c0"; - when x"387" => DATA <= x"f5e2"; - when x"388" => DATA <= x"17ce"; - when x"389" => DATA <= x"f5e0"; - when x"38a" => DATA <= x"0002"; - when x"38b" => DATA <= x"1066"; - when x"38c" => DATA <= x"1001"; - when x"38d" => DATA <= x"09f7"; - when x"38e" => DATA <= x"ff80"; - when x"38f" => DATA <= x"2057"; - when x"390" => DATA <= x"0005"; - when x"391" => DATA <= x"03dd"; - when x"392" => DATA <= x"09f7"; - when x"393" => DATA <= x"ff76"; - when x"394" => DATA <= x"901f"; - when x"395" => DATA <= x"f5fb"; - when x"396" => DATA <= x"09f7"; - when x"397" => DATA <= x"ff6e"; - when x"398" => DATA <= x"901f"; - when x"399" => DATA <= x"f5fa"; - when x"39a" => DATA <= x"09f7"; - when x"39b" => DATA <= x"ff66"; - when x"39c" => DATA <= x"901f"; - when x"39d" => DATA <= x"f5f9"; - when x"39e" => DATA <= x"09f7"; - when x"39f" => DATA <= x"ff5e"; - when x"3a0" => DATA <= x"901f"; - when x"3a1" => DATA <= x"f5f8"; - when x"3a2" => DATA <= x"97c0"; - when x"3a3" => DATA <= x"fffa"; - when x"3a4" => DATA <= x"97c0"; - when x"3a5" => DATA <= x"fffa"; - when x"3a6" => DATA <= x"09f7"; - when x"3a7" => DATA <= x"ff4e"; - when x"3a8" => DATA <= x"6041"; - when x"3a9" => DATA <= x"1c5f"; - when x"3aa" => DATA <= x"ffdc"; - when x"3ab" => DATA <= x"0080"; - when x"3ac" => DATA <= x"17c0"; - when x"3ad" => DATA <= x"f5f8"; - when x"3ae" => DATA <= x"2057"; - when x"3af" => DATA <= x"000c"; - when x"3b0" => DATA <= x"87be"; - when x"3b1" => DATA <= x"030a"; - when x"3b2" => DATA <= x"15c1"; - when x"3b3" => DATA <= x"0100"; - when x"3b4" => DATA <= x"8bdf"; - when x"3b5" => DATA <= x"fff8"; - when x"3b6" => DATA <= x"80fd"; - when x"3b7" => DATA <= x"97d0"; - when x"3b8" => DATA <= x"fffa"; - when x"3b9" => DATA <= x"0ac1"; - when x"3ba" => DATA <= x"02f9"; - when x"3bb" => DATA <= x"010e"; - when x"3bc" => DATA <= x"15c1"; - when x"3bd" => DATA <= x"0100"; - when x"3be" => DATA <= x"8bdf"; - when x"3bf" => DATA <= x"fff8"; - when x"3c0" => DATA <= x"80fd"; - when x"3c1" => DATA <= x"941f"; - when x"3c2" => DATA <= x"fffa"; - when x"3c3" => DATA <= x"0ac1"; - when x"3c4" => DATA <= x"02f9"; - when x"3c5" => DATA <= x"8bdf"; - when x"3c6" => DATA <= x"fff8"; - when x"3c7" => DATA <= x"80fd"; - when x"3c8" => DATA <= x"8a1f"; - when x"3c9" => DATA <= x"fffa"; - when x"3ca" => DATA <= x"1581"; - when x"3cb" => DATA <= x"101f"; - when x"3cc" => DATA <= x"f5f8"; - when x"3cd" => DATA <= x"1580"; - when x"3ce" => DATA <= x"0002"; - when x"3cf" => DATA <= x"1026"; - when x"3d0" => DATA <= x"17c0"; - when x"3d1" => DATA <= x"f5f8"; - when x"3d2" => DATA <= x"97d0"; - when x"3d3" => DATA <= x"fffa"; - when x"3d4" => DATA <= x"97d0"; + when x"36d" => DATA <= x"f700"; + when x"36e" => DATA <= x"0156"; + when x"36f" => DATA <= x"97c0"; + when x"370" => DATA <= x"fffe"; + when x"371" => DATA <= x"8013"; + when x"372" => DATA <= x"1066"; + when x"373" => DATA <= x"09f7"; + when x"374" => DATA <= x"fda8"; + when x"375" => DATA <= x"17c1"; + when x"376" => DATA <= x"f5e2"; + when x"377" => DATA <= x"09f7"; + when x"378" => DATA <= x"fda0"; + when x"379" => DATA <= x"9011"; + when x"37a" => DATA <= x"09f7"; + when x"37b" => DATA <= x"fd9a"; + when x"37c" => DATA <= x"9011"; + when x"37d" => DATA <= x"02fc"; + when x"37e" => DATA <= x"1581"; + when x"37f" => DATA <= x"1580"; + when x"380" => DATA <= x"17c0"; + when x"381" => DATA <= x"f5e2"; + when x"382" => DATA <= x"17ce"; + when x"383" => DATA <= x"f5e0"; + when x"384" => DATA <= x"0002"; + when x"385" => DATA <= x"1066"; + when x"386" => DATA <= x"1001"; + when x"387" => DATA <= x"09f7"; + when x"388" => DATA <= x"ff80"; + when x"389" => DATA <= x"2057"; + when x"38a" => DATA <= x"0005"; + when x"38b" => DATA <= x"03dd"; + when x"38c" => DATA <= x"09f7"; + when x"38d" => DATA <= x"ff76"; + when x"38e" => DATA <= x"901f"; + when x"38f" => DATA <= x"f5fb"; + when x"390" => DATA <= x"09f7"; + when x"391" => DATA <= x"ff6e"; + when x"392" => DATA <= x"901f"; + when x"393" => DATA <= x"f5fa"; + when x"394" => DATA <= x"09f7"; + when x"395" => DATA <= x"ff66"; + when x"396" => DATA <= x"901f"; + when x"397" => DATA <= x"f5f9"; + when x"398" => DATA <= x"09f7"; + when x"399" => DATA <= x"ff5e"; + when x"39a" => DATA <= x"901f"; + when x"39b" => DATA <= x"f5f8"; + when x"39c" => DATA <= x"97c0"; + when x"39d" => DATA <= x"fffa"; + when x"39e" => DATA <= x"97c0"; + when x"39f" => DATA <= x"fffa"; + when x"3a0" => DATA <= x"09f7"; + when x"3a1" => DATA <= x"ff4e"; + when x"3a2" => DATA <= x"6041"; + when x"3a3" => DATA <= x"1c5f"; + when x"3a4" => DATA <= x"ffd0"; + when x"3a5" => DATA <= x"0080"; + when x"3a6" => DATA <= x"17c0"; + when x"3a7" => DATA <= x"f5f8"; + when x"3a8" => DATA <= x"2057"; + when x"3a9" => DATA <= x"000c"; + when x"3aa" => DATA <= x"87be"; + when x"3ab" => DATA <= x"030a"; + when x"3ac" => DATA <= x"15c1"; + when x"3ad" => DATA <= x"0100"; + when x"3ae" => DATA <= x"8bdf"; + when x"3af" => DATA <= x"fff8"; + when x"3b0" => DATA <= x"80fd"; + when x"3b1" => DATA <= x"97d0"; + when x"3b2" => DATA <= x"fffa"; + when x"3b3" => DATA <= x"0ac1"; + when x"3b4" => DATA <= x"02f9"; + when x"3b5" => DATA <= x"010e"; + when x"3b6" => DATA <= x"15c1"; + when x"3b7" => DATA <= x"0100"; + when x"3b8" => DATA <= x"8bdf"; + when x"3b9" => DATA <= x"fff8"; + when x"3ba" => DATA <= x"80fd"; + when x"3bb" => DATA <= x"941f"; + when x"3bc" => DATA <= x"fffa"; + when x"3bd" => DATA <= x"0ac1"; + when x"3be" => DATA <= x"02f9"; + when x"3bf" => DATA <= x"8bdf"; + when x"3c0" => DATA <= x"fff8"; + when x"3c1" => DATA <= x"80fd"; + when x"3c2" => DATA <= x"8a1f"; + when x"3c3" => DATA <= x"fffa"; + when x"3c4" => DATA <= x"1581"; + when x"3c5" => DATA <= x"101f"; + when x"3c6" => DATA <= x"f5f8"; + when x"3c7" => DATA <= x"1580"; + when x"3c8" => DATA <= x"0002"; + when x"3c9" => DATA <= x"1026"; + when x"3ca" => DATA <= x"17c0"; + when x"3cb" => DATA <= x"f5f8"; + when x"3cc" => DATA <= x"97d0"; + when x"3cd" => DATA <= x"fffa"; + when x"3ce" => DATA <= x"97d0"; + when x"3cf" => DATA <= x"fffa"; + when x"3d0" => DATA <= x"01f4"; + when x"3d1" => DATA <= x"1026"; + when x"3d2" => DATA <= x"17c0"; + when x"3d3" => DATA <= x"f5f8"; + when x"3d4" => DATA <= x"941f"; when x"3d5" => DATA <= x"fffa"; - when x"3d6" => DATA <= x"01f4"; - when x"3d7" => DATA <= x"1026"; - when x"3d8" => DATA <= x"17c0"; - when x"3d9" => DATA <= x"f5f8"; - when x"3da" => DATA <= x"941f"; - when x"3db" => DATA <= x"fffa"; - when x"3dc" => DATA <= x"941f"; + when x"3d6" => DATA <= x"941f"; + when x"3d7" => DATA <= x"fffa"; + when x"3d8" => DATA <= x"01ec"; + when x"3d9" => DATA <= x"1026"; + when x"3da" => DATA <= x"17c0"; + when x"3db" => DATA <= x"f5f8"; + when x"3dc" => DATA <= x"97d0"; when x"3dd" => DATA <= x"fffa"; - when x"3de" => DATA <= x"01ec"; + when x"3de" => DATA <= x"01e6"; when x"3df" => DATA <= x"1026"; when x"3e0" => DATA <= x"17c0"; when x"3e1" => DATA <= x"f5f8"; - when x"3e2" => DATA <= x"97d0"; + when x"3e2" => DATA <= x"941f"; when x"3e3" => DATA <= x"fffa"; - when x"3e4" => DATA <= x"01e6"; - when x"3e5" => DATA <= x"1026"; - when x"3e6" => DATA <= x"17c0"; - when x"3e7" => DATA <= x"f5f8"; - when x"3e8" => DATA <= x"941f"; - when x"3e9" => DATA <= x"fffa"; - when x"3ea" => DATA <= x"01e0"; - when x"3eb" => DATA <= x"8a1f"; - when x"3ec" => DATA <= x"fffa"; - when x"3ed" => DATA <= x"0002"; + when x"3e4" => DATA <= x"01e0"; + when x"3e5" => DATA <= x"8a1f"; + when x"3e6" => DATA <= x"fffa"; + when x"3e7" => DATA <= x"0002"; + when x"3e8" => DATA <= x"ffbe"; + when x"3e9" => DATA <= x"ffb2"; + when x"3ea" => DATA <= x"ffa2"; + when x"3eb" => DATA <= x"ff92"; + when x"3ec" => DATA <= x"ffca"; + when x"3ed" => DATA <= x"ffca"; when x"3ee" => DATA <= x"ffca"; - when x"3ef" => DATA <= x"ffbe"; - when x"3f0" => DATA <= x"ffae"; - when x"3f1" => DATA <= x"ff9e"; - when x"3f2" => DATA <= x"ffd6"; - when x"3f3" => DATA <= x"ffd6"; - when x"3f4" => DATA <= x"ffd6"; - when x"3f5" => DATA <= x"ffd6"; + when x"3ef" => DATA <= x"ffca"; + when x"3f0" => DATA <= x"0000"; + when x"3f1" => DATA <= x"0000"; + when x"3f2" => DATA <= x"0000"; + when x"3f3" => DATA <= x"0000"; + when x"3f4" => DATA <= x"0000"; + when x"3f5" => DATA <= x"0000"; when x"3f6" => DATA <= x"0000"; when x"3f7" => DATA <= x"0000"; when x"3f8" => DATA <= x"0000"; From 34c6971abafa52c1fdc52bde6874884f934cfe82 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 16 Sep 2015 11:36:06 +0100 Subject: [PATCH 40/61] PDP11 Co Pro: Implemented remapping of Page 0 between user and kernel modes Change-Id: Ifa9673ef5b263194326830a6e561ed4b529160b3 --- src/LX9Co_CoProPDP11.vhd | 77 +++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index c11e13d..1101403 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -9,7 +9,7 @@ entity LX9CoProPDP11 is fastclk : in std_logic; test : out std_logic_vector(8 downto 1); sw : in std_logic_vector(3 downto 0); - + -- Tube signals h_phi2 : in std_logic; h_addr : in std_logic_vector(2 downto 0); @@ -43,11 +43,11 @@ architecture BEHAVIORAL of LX9CoProPDP11 is signal RST_sync : std_logic; signal clken_counter : std_logic_vector (3 downto 0); signal reset_counter : std_logic_vector (8 downto 0); - + ------------------------------------------------- -- parasite signals ------------------------------------------------- - + signal p_cs_b : std_logic; signal p_data_out : std_logic_vector (7 downto 0); @@ -66,24 +66,26 @@ architecture BEHAVIORAL of LX9CoProPDP11 is -- cpu signals ------------------------------------------------- - signal cpu_rd : std_logic; - signal cpu_wr : std_logic; - signal cpu_dw8 : std_logic; - signal cpu_addr : std_logic_vector (15 downto 0); - signal cpu_din : std_logic_vector (15 downto 0); - signal cpu_dout : std_logic_vector (15 downto 0); - signal cpu_IRQ_n : std_logic; - signal cpu_NMI_n : std_logic; - signal cpu_IRQ_n1 : std_logic; - signal cpu_NMI_n1 : std_logic; - signal cpu_IRQ_n2 : std_logic; - signal cpu_NMI_n2 : std_logic; - signal cpu_IRQ_req : std_logic; - signal cpu_NMI_req : std_logic; - signal cpu_IRQ_ack : std_logic; - signal cpu_NMI_ack : std_logic; - signal ifetch : std_logic; - signal bg6 : std_logic; + signal cpu_rd : std_logic; + signal cpu_wr : std_logic; + signal cpu_dw8 : std_logic; + signal cpu_addr : std_logic_vector (15 downto 0); + signal cpu_addr2 : std_logic_vector (15 downto 0); + signal cpu_din : std_logic_vector (15 downto 0); + signal cpu_dout : std_logic_vector (15 downto 0); + signal cpu_IRQ_n : std_logic; + signal cpu_NMI_n : std_logic; + signal cpu_IRQ_n1 : std_logic; + signal cpu_NMI_n1 : std_logic; + signal cpu_IRQ_n2 : std_logic; + signal cpu_NMI_n2 : std_logic; + signal cpu_IRQ_req : std_logic; + signal cpu_NMI_req : std_logic; + signal cpu_IRQ_ack : std_logic; + signal cpu_NMI_ack : std_logic; + signal cpu_PSW : std_logic_vector (15 downto 0); + signal ifetch : std_logic; + signal bg6 : std_logic; begin @@ -100,7 +102,7 @@ begin h_data => h_data, h_phi2 => h_phi2, h_rdnw => h_rdnw, - h_rst_b => h_rst_b + h_rst_b => h_rst_b ); inst_tuberom : entity work.tuberom_pdp11 port map ( @@ -156,7 +158,7 @@ begin psw_in => x"0000", -- psw input from the control register address @ 177776 psw_in_we_even => '0', -- psw input from the control register address @ 177776, write enable for the even address part psw_in_we_odd => '0', -- psw input from the control register address @ 177776, write enable for the odd address part - psw_out => open, -- psw output, current psw that the cpu uses + psw_out => cpu_PSW, -- psw output, current psw that the cpu uses pir_in => x"0000", -- pirq value input from the control register modelcode => 40, -- cpu model code init_r7 => x"f800", -- start address after reset = o'173000' = m9312 hi rom @@ -186,7 +188,7 @@ begin clk => clk_ram, we_uP => ram_wr_lo, ce => '1', - addr_uP => cpu_addr(15 downto 1), + addr_uP => cpu_addr2(15 downto 1), D_uP => ram_data_in(7 downto 0), Q_uP => ram_data_out(7 downto 0) ); @@ -195,22 +197,25 @@ begin clk => clk_ram, we_uP => ram_wr_hi, ce => '1', - addr_uP => cpu_addr(15 downto 1), + addr_uP => cpu_addr2(15 downto 1), D_uP => ram_data_in(15 downto 8), Q_uP => ram_data_out(15 downto 8) ); - + + -- provide a seperare page 0 for Kernel mode ("00") vs user mode ("11") + cpu_addr2 <= cpu_addr when cpu_PSW(15 downto 14) = "00" or cpu_addr >= x"0100" else + "11111" & cpu_addr(10 downto 0); + p_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and cpu_addr(15 downto 4) = x"FFF" else '1'; rom_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and p_cs_b = '1' and cpu_addr(15 downto 11) = "11111" else '1'; ram_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and p_cs_b = '1' and rom_cs_b = '1' else '1'; - -- TODO implement fault for non-aligned word access ram_wr_lo <= '1' when ram_cs_b = '0' and cpu_wr = '1' and (cpu_dw8 = '0' or cpu_addr(0) = '0') else '0'; ram_wr_hi <= '1' when ram_cs_b = '0' and cpu_wr = '1' and (cpu_dw8 = '0' or cpu_addr(0) = '1') else '0'; cpu_din <= - x"ff" & p_data_out when p_cs_b = '0' else + x"ff" & p_data_out when p_cs_b = '0' else rom_data_out when rom_cs_b = '0' and cpu_dw8 = '0' else x"ff" & rom_data_out(7 downto 0) when rom_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '0' else x"ff" & rom_data_out(15 downto 8) when rom_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '1' else @@ -218,19 +223,19 @@ begin x"ff" & ram_data_out(7 downto 0) when ram_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '0' else x"ff" & ram_data_out(15 downto 8) when ram_cs_b = '0' and cpu_dw8 = '1' and cpu_addr(0) = '1' else x"f1f1"; - + ram_data_in <= x"ff" & cpu_dout(7 downto 0) when cpu_dw8 = '1' and cpu_addr(0) = '0' else cpu_dout(7 downto 0) & x"ff" when cpu_dw8 = '1' and cpu_addr(0) = '1' else cpu_dout; - + -------------------------------------------------------- -- external Ram unused -------------------------------------------------------- - ram_ub_b <= '1'; - ram_lb_b <= '1'; - ram_cs <= '1'; - ram_oe <= '1'; - ram_wr <= '1'; + ram_ub_b <= '1'; + ram_lb_b <= '1'; + ram_cs <= '1'; + ram_oe <= '1'; + ram_wr <= '1'; ram_addr <= (others => '1'); ram_data <= (others => '1'); @@ -305,7 +310,7 @@ begin end if; end if; end process; - + end BEHAVIORAL; From 8fefe18bd01f4510a26aa9599ca1717cc3e6c241 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 16 Sep 2015 12:42:30 +0100 Subject: [PATCH 41/61] Atom Host: Implemented OSWORD 1,2 (System Clock) Change-Id: I7bd0f6d39cef8c00ee0b1fe32064cfb83465f5b4 --- host/atom/AtomHost.asm | 176 +++++++++++++++++++++++++++++++---------- 1 file changed, 133 insertions(+), 43 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index ad88d28..8a97635 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -63,6 +63,13 @@ TubeS4=TubeIO+6 ; Interrupts TubeR4=TubeIO+7 +;;; VIA Addresses + ViaBase = $B800 + ViaT1CounterL = ViaBase + 4 + ViaT1CounterH = ViaBase + 5 + ViaACR = ViaBase + 11 + ViaIER = ViaBase + 14 + ;;; Workspace in zero page ;;; ---------------------- @@ -71,13 +78,13 @@ TubeStatus = $94 ; Tube status TubeOwner = $95 ; Tube owner R2Cmd = $96 ; Computed address of R2 Command Handler + LangFlag = $98 - ;;; Optional 22-byte ATM Header ;;; -------------------------- org load - 22 - + .AtmHeader IF (atmhdr = 1) @@ -94,8 +101,11 @@ ENDIF ;;; ---------------------------- .TubeStartup -;;; LDA #12 -;;; JSR oswrch ; Clear screen, ready for startup banner + LDA #$01 + STA LangFlag + LDA #12 + JSR oswrch ; Clear screen, ready for startup banner + JSR ViaInit ; Initialize 50Hz interrupts LDA #$C0 STA TubeS1 ; Clear all Tube Regs LDA #$40 @@ -109,9 +119,9 @@ ENDIF BPL StartupLp1 ; Loop until VDU data present LDA TubeR1 BEQ Startup2 ; Get it, if CHR$0, finished - CMP #$60 - BCC UpperCase - AND #$DF + CMP #$60 + BCC UpperCase + AND #$DF .UpperCase JSR oswrch JMP StartupLp1 ; Print character, loop for more @@ -124,13 +134,18 @@ ENDIF STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 JSR TubeFree ; Set Tube 'free' and no owner - SEC ; Transfer the langue - JSR L0400 + LDA LangFlag ; Skip language transfer if flag 0 + BEQ Startup3 + + SEC ; Transfer the language + JSR L0400 - LDA #$80 ; Send $80 ack and enter idle loop + LDA #$80 JMP TubeSendIdle ; - +.Startup3 + JMP TubeSendAck ; Send $7f ack and enter idle loop + ;;; Main Entry Point Block ;;; ---------------------- @@ -286,7 +301,7 @@ ENDIF JSR StartTransfer ; Use Tube address at .TubeAddr LDY #&00 STY TubeCtrl ; Start copying from &8000 - + .TransferBlock LDA (TubeCtrl),Y ; Get byte from ROM STA TubeR3 ; Send to CoPro via R3 @@ -304,8 +319,8 @@ ENDIF .TransferIncSrc INC TubeCtrl + 1 ; Update source address - LDA TubeCtrl + 1 ; Check b6 of source high byte - CMP #>LangEnd + LDA TubeCtrl + 1 ; Check b6 of source high byte + CMP #>LangEnd BCC TransferLanguage ; Loop until end of language JSR FindLanguageAddr ; Find start address language copied to LDA #&04 ; Execute code in CoPro, finished by @@ -326,7 +341,7 @@ ENDIF .FindLanguageAddr LDA #&80 STA TubeAddr + 1 ; Set Tube address to &xxxx80xx - LDA #>LangStart + LDA #>LangStart STA TubeCtrl + 1 ; Set source address to language LDA #&20 AND LangStart + 6 ; Check relocation bit in ROM type @@ -353,7 +368,7 @@ ENDIF STA TubeAddr + 3 ; Set Tube address high bytes STY TubeAddr + 2 RTS - + ;;; Tube data transfer flags ;;; ------------------------ @@ -470,7 +485,7 @@ ENDIF ;;; ------------------- .rdline LDX #$05 - JSR TubeWaitBlock ; Fetch 5-byte control block + JSR TubeWaitBlock ; Fetch 5-byte control block ;; ;; We have to do a RDLINE manually, as Atom doesn't provide it ;; @@ -525,27 +540,52 @@ ENDIF .word JSR TubeWaitR2 ; Get A -IF (debug = 1) +IF (debug = 1) JSR DebugHexOut ENDIF - JSR TubeWaitR2 ; Get in-length -IF (debug = 1) + PHA ; Stack the osword number + JSR TubeWaitR2 ; Get in-length +IF (debug = 1) JSR DebugHexOut ENDIF TAX - BEQ wordNoRequest JSR TubeWaitBlock -.wordNoRequest JSR TubeWaitR2 ; Get out-length -IF (debug = 1) +IF (debug = 1) JSR DebugHexOut ENDIF TAX - BEQ wordNoResponse - JSR TubeSendBlock -.wordNoResponse + PLA ; Restore osword number + CMP #$01 ; Read System Clock + BEQ word01ReadSys + CMP #$02 ; Write System Clock + BEQ word02WriteSys + +;;; Default OSWORD HANDLER +.wordSendBlock + JSR TubeSendBlock ; length of block in X JMP TubeIdle +;;; OSWORD A=1 Read System Clock +.word01ReadSys + LDY #4 ; Copy the 5 byte time value +.word01ReadSysLoop ; to the Tube Control block + LDA ViaTime, Y + STA TubeCtrl, Y + DEY + BPL word01ReadSysLoop + BMI wordSendBlock + +;;; OSWORD A=2 Write System Clock +.word02WriteSys + LDY #4 ; Copy the 5 byte time value +.word02WriteSysLoop ; to the Via Time + LDA TubeCtrl, Y + STA ViaTime, Y + DEY + BPL word02WriteSysLoop + BMI wordSendBlock + ;;; OSCLI ;;; ===== @@ -556,7 +596,7 @@ ENDIF LDA $100 ; Test for a zero-length string CMP #$0d BEQ TubeSendAck ; Skip it - + JSR oscli ; Execute it ;; If the command returns here, the CoPro will get $7F as an acknowledgement. @@ -697,16 +737,18 @@ ENDIF LDY #1 RTS ; Return XY pointing to $0100 -;;; Get control block to 0,X -;;; ------------------------ +;;; Get control block to TubeCtrl, X +;;; -------------------------------- .TubeWaitBlock - JSR TubeWaitR2 - STA $FF,X -IF (debug = 1) + DEX + BMI TubeWaitBlockExit + JSR TubeWaitR2 +IF (debug = 1) JSR DebugHexOut ENDIF - DEX - BNE TubeWaitBlock + STA TubeCtrl, X + JMP TubeWaitBlock +.TubeWaitBlockExit RTS ;;; Get X and A from Tube R2 @@ -724,13 +766,15 @@ ENDIF RTS ; Get byte -;;; Send control block from 0,X -;;; --------------------------- +;;; Send control block from TubeCtrl, X +;;; ----------------------------------- .TubeSendBlock - LDA $FF,X + DEX + BMI TubeSendBlockExit + LDA TubeCtrl, X JSR TubeSendR2 - DEX - BNE TubeSendBlock + JMP TubeSendBlock +.TubeSendBlockExit RTS ;;; Send byte in A via Tube R2 @@ -748,7 +792,7 @@ ENDIF BIT TubeS4 BVC TubeSendR4 ; Loop until port free STA TubeR4 -IF (debug = 1) +IF (debug = 1) JSR DebugHexOut ENDIF RTS ; Send byte @@ -758,14 +802,14 @@ ENDIF ;;; TODO -.TubeEscape +.TubeEscape RTS .TubeError EQUB 255 EQUS "HOST ERROR" BRK - + ;;; *************************** ;;; INTERFACE TO ATOM MOS CALLS ;;; *************************** @@ -784,24 +828,70 @@ ENDIF PLA RTS + +.ViaInit + LDA #ViaISR + STA irq1v+1 + LDA #$00 ; Clear the timer + STA ViaTime + STA ViaTime + 1 + STA ViaTime + 2 + STA ViaTime + 3 + STA ViaTime + 4 + LDA #<9999 ; 10ms timer interrupts + STA ViaT1CounterL + LDA #>9999 + STA ViaT1CounterH + LDA #$40 ; Enable T1 continuous interrupts + STA ViaACR ; Disable everything else + LDA #$7F ; Disable all interrupts + STA ViaIER + LDA #$C0 ; Enable T1 interrupts + STA ViaIER + RTS + +.ViaISR + LDA ViaT1CounterL ; Clear the interrupts flag + INC ViaTime + BNE ViaExit + INC ViaTime + 1 + BNE ViaExit + INC ViaTime + 2 + BNE ViaExit + INC ViaTime + 3 + BNE ViaExit + INC ViaTime + 4 +.ViaExit + PLA ; the Atom stacks A for us + RTI + +.ViaTime + EQUB 0,0,0,0,0 ;;; Debugging output, avoid trashing A ;;; .DebugNewline + PHP PHA JSR osnewl PLA + PLP RTS - + .DebugHexOut + PHP PHA JSR oshex PLA + PLP RTS .EndAddr + IF (atmhdr = 1) SAVE "TUBE",AtmHeader,EndAddr ELSE From 27c6834db0f035888241434a7740918f873aa032 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 16 Sep 2015 13:42:53 +0100 Subject: [PATCH 42/61] Atom Host: Ported to cc65 so we could include the AtoMMC2 code Change-Id: I89e6307076663af22343670bdedc1330c56e526c --- host/atom/AtomHost.asm | 470 ++++++++++++++++++++-------------------- host/atom/AtomHost.lkr | 9 + host/atom/atmmc2def.asm | 101 +++++++++ host/atom/build.sh | 12 + host/atom/file.asm | 264 ++++++++++++++++++++++ host/atom/load.asm | 24 ++ host/atom/macros.asm | 72 ++++++ host/atom/run.asm | 58 +++++ host/atom/save.asm | 109 ++++++++++ host/atom/util.asm | 453 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 1343 insertions(+), 229 deletions(-) create mode 100644 host/atom/AtomHost.lkr create mode 100644 host/atom/atmmc2def.asm create mode 100755 host/atom/build.sh create mode 100644 host/atom/file.asm create mode 100644 host/atom/load.asm create mode 100644 host/atom/macros.asm create mode 100644 host/atom/run.asm create mode 100644 host/atom/save.asm create mode 100644 host/atom/util.asm diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index 8a97635..a6d06e9 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -1,7 +1,7 @@ ;;; AtomHost/src ;;; Source for Atom Tube Host ;;; J.G.Harston and D.M.Banks - + load = $3000 ; Load address of the host code atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) @@ -12,40 +12,56 @@ ;;; MOS entry addresses ;;; ------------------- - osshut = $FFCB - osfind = $FFCE - osbput = $FFD1 - osbget = $FFD4 - osstar = $FFD7 - osrdar = $FFDA - ossave = $FFDD - osload = $FFE0 - osrdch = $FFE3 - osecho = $FFE6 - osasci = $FFE9 - osnewl = $FFED - oswrcr = $FFF2 - oswrch = $FFF4 - oscli = $FFF7 - - oshex = $F802 + OSSHUT = $FFCB + OSFIND = $FFCE + OSBPUT = $FFD1 + OSBGET = $FFD4 + OSSTAR = $FFD7 + OSRDAR = $FFDA + OSSAVE = $FFDD + OSLOAD = $FFE0 + OSRDCH = $FFE3 + OSECHO = $FFE6 + OSASCI = $FFE9 + OSCRLF = $FFED + OSWRCR = $FFF2 + OSWRCH = $FFF4 + OSCLI = $FFF7 + +;;; Atom OS addresses + RWPTR = $AC + LLOAD = $CB + SLOAD = $CB + LEXEC = $CD + LLENGTH = $CF + SEXEC = $CD + SSTART = $CF + SEND = $D1 + MONFLAG = $EA + NAME = $140 + STROUT = $F7D1 + HEXOUTS = $F7FA + HEXOUT = $F802 + CHKNAME = $F84F + SKIPSPC = $F876 + COSSYN = $FA7D ;;; Vectors ;;; ------- - nmiv = $200 - brkv = $202 - irq1v = $204 - cliv = $206 - wrchv = $208 - rdchv = $20A - loadv = $20C - savev = $20E - rdarv = $210 - starv = $212 - bgetv = $214 - bputv = $216 - findv = $218 - shutv = $21A + NMIV = $200 + BRKV = $202 + IRQ1V = $204 + CLIV = $206 + WRCHV = $208 + RDCHV = $20A + LOADV = $20C + SAVEV = $20E + RDARV = $210 + STARV = $212 + BGETV = $214 + BPUTV = $216 + FINDV = $218 + SHUTV = $21A ;;; System: $0E21 - keypress, b7=1 if nothing pressed ;;; Atom: $B001 - b5=0 if Escape pressed @@ -83,28 +99,24 @@ ;;; Optional 22-byte ATM Header ;;; -------------------------- - org load - 22 - -.AtmHeader +AtmHeader: -IF (atmhdr = 1) - EQUS "TUBE" - org AtmHeader + 16 - EQUW StartAddr - EQUW StartAddr - EQUW EndAddr - StartAddr -ENDIF + .byte "TUBE" + .word 0,0,0,0,0,0 + .word StartAddr + .word StartAddr + .word EndAddr - StartAddr -.StartAddr +StartAddr: ;;; Start up the Atom Tube system ;;; ---------------------------- -.TubeStartup +TubeStartup: LDA #$01 STA LangFlag LDA #12 - JSR oswrch ; Clear screen, ready for startup banner + JSR OSWRCH ; Clear screen, ready for startup banner JSR ViaInit ; Initialize 50Hz interrupts LDA #$C0 STA TubeS1 ; Clear all Tube Regs @@ -114,7 +126,7 @@ ENDIF STA TubeS1 ; Reset client LDA #$20 STA TubeS1 -.StartupLp1 +StartupLp1: BIT TubeS1 BPL StartupLp1 ; Loop until VDU data present LDA TubeR1 @@ -122,14 +134,14 @@ ENDIF CMP #$60 BCC UpperCase AND #$DF -.UpperCase - JSR oswrch +UpperCase: + JSR OSWRCH JMP StartupLp1 ; Print character, loop for more -.Startup2 - LDA #(TubeBRK AND 255) - STA brkv+0 ; Claim BRKV - LDA #(TubeBRK DIV 256) - STA brkv+1 +Startup2: + LDA #TubeBRK + STA BRKV+1 LDA #$8E STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 JSR TubeFree ; Set Tube 'free' and no owner @@ -143,43 +155,43 @@ ENDIF LDA #$80 JMP TubeSendIdle ; -.Startup3 +Startup3: JMP TubeSendAck ; Send $7f ack and enter idle loop ;;; Main Entry Point Block ;;; ---------------------- -.L0400 +L0400: JMP LanguageStartup ; Copy Language and Start Tube system -.L0403 +L0403: JMP TubeEscape ; Copy Escape state across Tube ;;; Tube Transfer/Claim/Release ;;; --------------------------- -.L0406 - CMP #&80 ; Claim/Release/Action via Tube - BCC TubeTransfer ; If <&80, data transfer action - CMP #&C0 ; Is it claim or release? - BCS TubeClaim ; &C0-&FF - jump to claim Tube - ORA #&40 ; Ensure release ID same as claim ID +L0406: + CMP #$80 ; Claim/Release/Action via Tube + BCC TubeTransfer ; If <$80, data transfer action + CMP #$C0 ; Is it claim or release? + BCS TubeClaim ; $C0-$FF - jump to claim Tube + ORA #$40 ; Ensure release ID same as claim ID CMP TubeOwner ; Is the the same as the claim ID? - BNE TubeExit ; No, exit. + BNE TubeExit ; No, exit -.TubeRelease +TubeRelease: PHP ; Save IRQ state SEI ; Disable IRQs - LDA #&05 ; Send &05 to R4 to interupt CoPro + LDA #$05 ; Send $05 to R4 to interupt CoPro JSR TubeSendR4 LDA TubeOwner ; Send Tube ID to notify a Tube release JSR TubeSendR4 PLP ; Get IRQ state back ;; Clear Tube status and owner -.TubeFree - LDA #&80 +TubeFree: + LDA #$80 STA TubeOwner ; Set Tube ID to 'unclaimed' STA TubeStatus ; Set Tube status to 'free' RTS @@ -187,7 +199,7 @@ ENDIF ;;; Claim Tube ;;; ---------- -.TubeClaim +TubeClaim: ASL TubeStatus ; Is Tube free? BCS TubeClaim1 ; Yes, jump to claim it CMP TubeOwner ; Is Tube ID same as claimer? @@ -195,32 +207,32 @@ ENDIF CLC ; Signal 'can't claim Tube' RTS ; And exit -.TubeClaim1 +TubeClaim1: STA TubeOwner ; Store Tube ID -.TubeExit +TubeExit: RTS ;;; Tube data transfer ;;; ------------------ -.TubeTransfer +TubeTransfer: PHP ; Save IRQ status SEI ; Disable IRQs STY TubeSrc + 1 ; Store pointer to control block STX TubeSrc ; Send action code to R4 to JSR TubeSendR4 ; interrupt CoPro TAX ; Save action code in X - LDY #&03 ; Prepare to send 4 byte control block + LDY #$03 ; Prepare to send 4 byte control block LDA TubeOwner ; Send Tube ID via R4, interupting JSR TubeSendR4 ; CoPro -.TubeTransfer1 +TubeTransfer1: LDA (TubeSrc),Y ; Get byte from Tube control block JSR TubeSendR4 ; Send via R4 DEY BPL TubeTransfer1 ; Loop for whole block - LDY #&18 + LDY #$18 STY TubeS1 ; Disable FIFO on R3, and NMI on R3 by default LDA TransferFlags,X ; Get Tube I/O setting according to STA TubeS1 ; action code and set Tube @@ -230,28 +242,28 @@ ENDIF BIT TubeR3 ; Read R3 twice to delay & empty FIFO BIT TubeR3 -.TubeTransfer2 +TubeTransfer2: JSR TubeSendR4 ; Send flag via R4 to synchronise -.TubeTransfer3 +TubeTransfer3: BIT TubeS4 ; Check R4 status BVC TubeTransfer3 ; Loop until data has left R4 BCS TubeTransfer5 ; Carry still indicates direction - CPX #&04 ; Is action 'execute code'? + CPX #$04 ; Is action 'execute code'? BNE TubeTransfer6 ; No, jump to finish -.TubeTransfer4 +TubeTransfer4: JSR TubeRelease ; Release Tube - JSR TubeSendR2 ; Send &80 via R2 + JSR TubeSendR2 ; Send $80 via R2 JMP TubeIdleStartup ; Jump to Tube Idle loop -.TubeTransfer5 +TubeTransfer5: LSR A ; Move Tube I/O setting b2 into Carry (b2 set = NMI required) BCC TubeTransfer6 ; It was clear, jump to exit - LDY #&88 ; Set Tube I/O to NMI on R3 + LDY #$88 ; Set Tube I/O to NMI on R3 STY TubeS1 -.TubeTransfer6 +TubeTransfer6: PLP ; Restore IRQ status RTS ; And exit @@ -260,7 +272,7 @@ ENDIF ;;; On entry, A=1 - enter language, CLC=Break, SEC=OSBYTE 142 ;;; A=0 - no language found at Break -.LanguageStartup +LanguageStartup: CLI ; Enable IRQs BCS LanguageEnter ; Branch if selected with *fx142 @@ -270,39 +282,39 @@ ENDIF ;;; Language entered at BREAK ;;; ------------------------- -.TestLastBreak +TestLastBreak: ;;; The Atom does not have different break types ;;; So always handles a for hard bread -;;; LDX &028D ; Get last break type -;;; BEQ TubeTransfer4 ; If Soft Break, release Tube, send &80 +;;; LDX $028D ; Get last break type +;;; BEQ TubeTransfer4 ; If Soft Break, release Tube, send $80 ; via R2 and enter Idle loop ;;; The current language is not copied across the Tube on soft Break, only on -;;; Power-On Break and Hard Break, or when entered explicitly with OSBYTE 142. +;;; Power-On Break and Hard Break, or when entered explicitly with OSBYTE 142 ;;; Language entered with OSBYTE 142, or on Hard Break ;;; -------------------------------------------------- -.LanguageEnter - LDA #&FF - JSR L0406 ; Claim Tube with ID=&3F +LanguageEnter: + LDA #$FF + JSR L0406 ; Claim Tube with ID=$3F BCC LanguageEnter ; Loop until Tube available JSR FindLanguageAddr ; Find address to copy language to ;;; Send language ROM via Tube 256 bytes at a time ;;; ---------------------------------------------- -.TransferLanguage +TransferLanguage: PHP ; Save IRQ status SEI ; Disable IRQs - LDA #&07 ; Start I/O->CoPro transfer 256 bytes - JSR StartTransfer ; Use Tube address at .TubeAddr - LDY #&00 - STY TubeCtrl ; Start copying from &8000 + LDA #$07 ; Start I/O->CoPro transfer 256 bytes + JSR StartTransfer ; Use Tube address at TubeAddr + LDY #$00 + STY TubeCtrl ; Start copying from $8000 -.TransferBlock +TransferBlock: LDA (TubeCtrl),Y ; Get byte from ROM STA TubeR3 ; Send to CoPro via R3 NOP ; Delay for a while @@ -317,40 +329,40 @@ ENDIF BNE TransferIncSrc INC TubeAddr + 3 -.TransferIncSrc +TransferIncSrc: INC TubeCtrl + 1 ; Update source address LDA TubeCtrl + 1 ; Check b6 of source high byte CMP #>LangEnd BCC TransferLanguage ; Loop until end of language JSR FindLanguageAddr ; Find start address language copied to - LDA #&04 ; Execute code in CoPro, finished by - ; sending &80 to Copro in R2 + LDA #$04 ; Execute code in CoPro, finished by + ; sending $80 to Copro in R2 -;;; Start a Tube transfer with address block at &0053 +;;; Start a Tube transfer with address block at $0053 ;;; ------------------------------------------------- -.StartTransfer +StartTransfer: LDY #>TubeAddr LDX #LangStart STA TubeCtrl + 1 ; Set source address to language - LDA #&20 + LDA #$20 AND LangStart + 6 ; Check relocation bit in ROM type TAY ; If no relocation address, A=0, Y=0 - STY TubeAddr ; Set Tube address to &xxxx8000 + STY TubeAddr ; Set Tube address to $xxxx8000 BEQ FindLanguageAddr2 ; Jump forward with no relocation LDX LangStart + 7 ; Get offset to ROM copyright -.FindLanguageAddr1 +FindLanguageAddr1: INX LDA LangStart, X ; Skip past copyright message BNE FindLanguageAddr1 ; Loop until terminating zero byte @@ -364,7 +376,7 @@ ENDIF ;;; Set Tube address high bytes ;;; --------------------------- -.FindLanguageAddr2 +FindLanguageAddr2: STA TubeAddr + 3 ; Set Tube address high bytes STY TubeAddr + 2 RTS @@ -372,38 +384,38 @@ ENDIF ;;; Tube data transfer flags ;;; ------------------------ -.TransferFlags - EQUB $86 ; CoPro->I/O bytes - EQUB $88 ; I/O->CoPro bytes - EQUB $96 ; CoPro->I/O words - EQUB $98 ; I/O->CoPro words - EQUB $18 ; Set Execute Address in CoPro - EQUB $18 ; Release Tube - EQUB $82 ; CoPro->I/O 256 bytes - EQUB $18 ; I/O->CoPro 256 bytes +TransferFlags: + .byte $86 ; CoPro->I/O bytes + .byte $88 ; I/O->CoPro bytes + .byte $96 ; CoPro->I/O words + .byte $98 ; I/O->CoPro words + .byte $18 ; Set Execute Address in CoPro + .byte $18 ; Release Tube + .byte $82 ; CoPro->I/O 256 bytes + .byte $18 ; I/O->CoPro 256 bytes ;;; pointers to R2 commands ;;; ----------------------- -.R2CmdHandlers - EQUW rdch ; A=00 - EQUW cli ; A=02 - EQUW bytelo ; A=04 - EQUW bytehi ; A=06 - EQUW word ; A=08 - EQUW rdline ; A=0A - EQUW args ; A=0C - EQUW bget ; A=0E - EQUW bput ; A=10 - EQUW find ; A=12 - EQUW file ; A=14 - EQUW gbpb ; A=16 +R2CmdHandlers: + .word rdch ; A=00 + .word clii ; A=02 + .word bytelo ; A=04 + .word bytehi ; A=06 + .word word ; A=08 + .word rdline ; A=0A + .word args ; A=0C + .word bget ; A=0E + .word bput ; A=10 + .word find ; A=12 + .word file ; A=14 + .word gbpb ; A=16 ;;; BRK handler ;;; ----------- -.TubeBRK +TubeBRK: LDA #$FF JSR TubeSendR4 LDA TubeR2 ; Get ACK byte from CoPro @@ -412,7 +424,7 @@ ENDIF TAY LDA TubeError,Y JSR TubeSendR2 ; Send via R2 -.TubeBRKlp +TubeBRKlp: INY LDA TubeError,Y JSR TubeSendR2 ; Send via R2 @@ -422,7 +434,7 @@ ENDIF ;;; Tube Idle startup ;;; ----------------- -.TubeIdleStartup +TubeIdleStartup: ;; Clear stack, enable IRQs LDX #$FF TXS @@ -431,36 +443,36 @@ ENDIF ;;; Tube idle loop ;;; -------------- -.TubeIdle +TubeIdle: LDA $B001 ; Read keyboard hardware AND #$20 ; was escape pressed? BNE TubeIdle1 JSR TubeEscape ; Escape pressed, pass to Client -.TubeIdle1 +TubeIdle1: BIT TubeS1 BPL TubeIdle2 ; Nothing in VDU port, jump to check Command port -.TubeWRCH +TubeWRCH: LDA TubeR1 - JSR oswrch ; Get character and send to OSWRCH -.TubeIdle2 + JSR OSWRCH ; Get character and send to OSWRCH +TubeIdle2: BIT TubeS2 BPL TubeIdle ; Nothing in Command port, loop back BIT TubeS1 BMI TubeWRCH ; Check VDU port again LDX TubeR2 ; Get command -IF (debug = 1) +.if (debug = 1) JSR DebugNewline TXA JSR DebugHexOut -ENDIF +.endif LDA R2CmdHandlers, X ; Read command handler STA R2Cmd LDA R2CmdHandlers + 1, X STA R2Cmd + 1 JMP (R2Cmd) ; index into jump table -.TubeAddr - EQUD $00800000 +TubeAddr: + .dword $00800000 @@ -473,9 +485,9 @@ ENDIF ;;; OSRDCH ;;; ------ -.rdch +rdch: JSR AtomRDCH ; Wait for a character -.SendCarryA +SendCarryA: ROR A JSR TubeSendR2 ; Move Carry into b7 and send it ROL A @@ -483,54 +495,54 @@ ENDIF ;;; WORD0 - Read a line ;;; ------------------- -.rdline +rdline: LDX #$05 JSR TubeWaitBlock ; Fetch 5-byte control block ;; ;; We have to do a RDLINE manually, as Atom doesn't provide it ;; LDY #0 -.RdLineLp1 +RdLineLp1: JSR AtomRDCH BCS RdLineEsc ; Escape pressed, exit CMP #127 BNE RdLineChar CPY #0 BEQ RdLineLp1 ; Nothing to delete - JSR oswrch + JSR OSWRCH DEY JMP RdLineLp1 ; Delete one character -.RdLineChar +RdLineChar: STA $100,Y ; Store in string buffer CMP #13 BEQ RdLineCR ; Repeat until - JSR oswrch + JSR OSWRCH INY BNE RdLineLp1 ; Echo character, loop for more -.RdLineCR - JSR osnewl ; Print +RdLineCR: + JSR OSCRLF ; Print LDA #$7F JSR TubeSendR2 ; Send $7F via R2 to indicate no Escape LDY #0 ; Point to start of string buffer -.RdLineLp2 +RdLineLp2: LDA $0100,Y JSR TubeSendR2 ; Send byte via R2 INY CMP #13 BNE RdLineLp2 ; Loop until sent JMP TubeIdle -.RdLineEsc +RdLineEsc: LDA #$FF BNE TubeSendIdle ; Return $FF for Escape, return to Tube idle loop -.bytelo +bytelo: LDX #$02 JSR TubeWaitBlock ; Fetch 2-byte control block LDA #0 JMP TubeSendIdle -.bytehi +bytehi: LDX #$03 JSR TubeWaitBlock ; Fetch 3-byte control block LDA #0 @@ -538,22 +550,22 @@ ENDIF JSR TubeSendR2 JMP TubeSendIdle -.word +word: JSR TubeWaitR2 ; Get A -IF (debug = 1) +.if (debug = 1) JSR DebugHexOut -ENDIF +.endif PHA ; Stack the osword number JSR TubeWaitR2 ; Get in-length -IF (debug = 1) +.if (debug = 1) JSR DebugHexOut -ENDIF +.endif TAX JSR TubeWaitBlock JSR TubeWaitR2 ; Get out-length -IF (debug = 1) +.if (debug = 1) JSR DebugHexOut -ENDIF +.endif TAX PLA ; Restore osword number CMP #$01 ; Read System Clock @@ -562,14 +574,14 @@ ENDIF BEQ word02WriteSys ;;; Default OSWORD HANDLER -.wordSendBlock +wordSendBlock: JSR TubeSendBlock ; length of block in X JMP TubeIdle ;;; OSWORD A=1 Read System Clock -.word01ReadSys +word01ReadSys: LDY #4 ; Copy the 5 byte time value -.word01ReadSysLoop ; to the Tube Control block +word01ReadSysLoop: ; to the Tube Control block LDA ViaTime, Y STA TubeCtrl, Y DEY @@ -577,9 +589,9 @@ ENDIF BMI wordSendBlock ;;; OSWORD A=2 Write System Clock -.word02WriteSys +word02WriteSys: LDY #4 ; Copy the 5 byte time value -.word02WriteSysLoop ; to the Via Time +word02WriteSysLoop: ; to the Via Time LDA TubeCtrl, Y STA ViaTime, Y DEY @@ -589,7 +601,7 @@ ENDIF ;;; OSCLI ;;; ===== -.cli +clii: JSR ReadString ; Read string to $0100 @@ -597,25 +609,25 @@ ENDIF CMP #$0d BEQ TubeSendAck ; Skip it - JSR oscli ; Execute it + JSR OSCLI ; Execute it - ;; If the command returns here, the CoPro will get $7F as an acknowledgement. + ;; If the command returns here, the CoPro will get $7F as an acknowledgement ;; The CoPro also gets sent a $7F byte if there is no language available on - ;; Break. If calling OSCLI results in code being run in the CoPro or a language + ;; Break If calling OSCLI results in code being run in the CoPro or a language ;; being copied over and entered, the CoPro will get an $80 acknowledgement - ;; elsewhere. + ;; elsewhere ;; Will have to hook into Atom's OSLOAD and OSSAVE to intercept *DELETEACS and *DELETEBGET - ;; commands to redirect to manual implementations. + ;; commands to redirect to manual implementations ;;; Send $7F acknowledgement byte via R2 and return to idle loop ;;; ------------------------------------------------------------ -.TubeSendAck +TubeSendAck: LDA #$7F ; Send $7F to CoPro ;;; Send byte in A via R2 and return to Tube idle loop ;;; -------------------------------------------------- -.TubeSendIdle +TubeSendIdle: BIT TubeS2 BVC TubeSendIdle ; Loop until Command port free STA TubeR2 @@ -627,24 +639,24 @@ ENDIF ;;; OSBPUT ;;; ------ -.bput +bput: JSR TubeWaitR2 TAY ; Wait for a handle JSR TubeWaitR2 ; Wait for a data byte - JSR osbput ; Write to file + JSR OSBPUT ; Write to file JMP TubeSendAck ; Send $7F ack, return to idle loop ;;; OSBGET ;;; ------ -.bget +bget: JSR TubeWaitR2 TAY ; Wait for a handle - JSR osbget ; Read from file + JSR OSBGET ; Read from file JMP SendCarryA ; Send Carry and A, return to idle loop ;;; OSFIND ;;; ------ -.find +find: JSR TubeWaitR2 BEQ close ; Zero - jump to do CLOSE PHA @@ -662,20 +674,20 @@ ENDIF LDX #TubeCtrl ; X=>address of filename ASL A ASL A ; Move b6 into Cy, CS=OPENIN, CC=OPENOUT - JSR osfind ; Do the OPEN + JSR OSFIND ; Do the OPEN JMP TubeSendIdle ; Send handle back, return to idle loop ;;; CLOSE ;;; ----- -.close +close: JSR TubeWaitR2 TAY ; Wait for a handle - JSR osshut ; Do the CLOSE + JSR OSSHUT ; Do the CLOSE JMP TubeSendAck ; Send $7F ack and jump to idle loop ;;; OSARGS ;;; ------ -.args +args: JSR TubeWaitR2 TAY ; Wait for a handle LDX #$04 @@ -705,17 +717,17 @@ ENDIF ;;; OSGBPB ;;; ------ -.gbpb +gbpb: RTS ;;; OSFILE ;;; ------ -.file +file: RTS ;;; Atom OSLOAD and OSSAVE can't be used, as will have to pass data across Tube -;;; manually. Not sure how to set load/exec addresses without doing a DELETEBGET. -;;; Maybe do a zero-length DELETEBGET, then OPENOUT it. +;;; manually Not sure how to set load/exec addresses without doing a DELETEBGET. +;;; Maybe do a zero-length DELETEBGET, then OPENOUT it ;;; TUBE COMMAND TRANSFERS @@ -723,43 +735,43 @@ ENDIF ;;; Read a string via R2 into string buffer at $0100 ;;; ------------------------------------------------ -.ReadString +ReadString: LDY #$00 -.ReadStrLp +ReadStrLp: JSR TubeWaitR2 STA $0100,Y ; Wait for byte and store in string buffer INY BEQ ReadStrFull ; Buffer full, end loop CMP #$0D BNE ReadStrLp ; Loop until received -.ReadStrFull +ReadStrFull: LDX #0 LDY #1 RTS ; Return XY pointing to $0100 ;;; Get control block to TubeCtrl, X ;;; -------------------------------- -.TubeWaitBlock +TubeWaitBlock: DEX BMI TubeWaitBlockExit JSR TubeWaitR2 -IF (debug = 1) +.if (debug = 1) JSR DebugHexOut -ENDIF +.endif STA TubeCtrl, X JMP TubeWaitBlock -.TubeWaitBlockExit +TubeWaitBlockExit: RTS ;;; Get X and A from Tube R2 ;;; ------------------------ -.TubeWaitXA +TubeWaitXA: JSR TubeWaitR2 TAX ;;; Wait for data from Tube R2 ;;; -------------------------- -.TubeWaitR2 +TubeWaitR2: BIT TubeS2 BPL TubeWaitR2 ; Loop until data present LDA TubeR2 @@ -768,18 +780,18 @@ ENDIF ;;; Send control block from TubeCtrl, X ;;; ----------------------------------- -.TubeSendBlock +TubeSendBlock: DEX BMI TubeSendBlockExit LDA TubeCtrl, X JSR TubeSendR2 JMP TubeSendBlock -.TubeSendBlockExit +TubeSendBlockExit: RTS ;;; Send byte in A via Tube R2 ;;; -------------------------- -.TubeSendR2 +TubeSendR2: BIT TubeS2 BVC TubeSendR2 ; Loop until port free STA TubeR2 @@ -788,13 +800,13 @@ ENDIF ;;; Send byte in A via Tube R4 ;;; -------------------------- -.TubeSendR4 +TubeSendR4: BIT TubeS4 BVC TubeSendR4 ; Loop until port free STA TubeR4 -IF (debug = 1) +.if (debug = 1) JSR DebugHexOut -ENDIF +.endif RTS ; Send byte ;;; Copy Escape state across Tube @@ -802,12 +814,12 @@ ENDIF ;;; TODO -.TubeEscape +TubeEscape: RTS -.TubeError - EQUB 255 - EQUS "HOST ERROR" +TubeError: + .byte 255 + .byte "HOST ERROR" BRK ;;; *************************** @@ -816,24 +828,24 @@ ENDIF ;;; Interface to Atom OSRDCH ;;; ------------------------ -.AtomRDCH - JSR osrdch +AtomRDCH: + JSR OSRDCH PHA CLC ; Wait for a character LDA $B001 AND #$20 ; Read keyboard hardware BNE AtomRDCHok SEC ; SEC as Escape key pressed -.AtomRDCHok +AtomRDCHok: PLA RTS -.ViaInit +ViaInit: LDA #ViaISR - STA irq1v+1 + STA IRQ1V+1 LDA #$00 ; Clear the timer STA ViaTime STA ViaTime + 1 @@ -852,7 +864,7 @@ ENDIF STA ViaIER RTS -.ViaISR +ViaISR: LDA ViaT1CounterL ; Clear the interrupts flag INC ViaTime BNE ViaExit @@ -863,37 +875,37 @@ ENDIF INC ViaTime + 3 BNE ViaExit INC ViaTime + 4 -.ViaExit +ViaExit: PLA ; the Atom stacks A for us RTI -.ViaTime - EQUB 0,0,0,0,0 +ViaTime: + .byte 0,0,0,0,0 ;;; Debugging output, avoid trashing A ;;; -.DebugNewline +DebugNewline: PHP PHA - JSR osnewl + JSR OSCRLF PLA PLP RTS -.DebugHexOut +DebugHexOut: PHP PHA - JSR oshex + JSR HEXOUT PLA PLP RTS -.EndAddr +.include "atmmc2def.asm" +.include "macros.asm" +.include "file.asm" +.include "load.asm" +.include "save.asm" +.include "util.asm" - -IF (atmhdr = 1) - SAVE "TUBE",AtmHeader,EndAddr -ELSE - SAVE "TUBE",StartAddr,EndAddr -ENDIF +EndAddr: diff --git a/host/atom/AtomHost.lkr b/host/atom/AtomHost.lkr new file mode 100644 index 0000000..ebe197c --- /dev/null +++ b/host/atom/AtomHost.lkr @@ -0,0 +1,9 @@ +MEMORY +{ + RAM1: start = $2fea, size = $1016, fill = no; +} + +SEGMENTS +{ + CODE: load = RAM1, type = ro; +} diff --git a/host/atom/atmmc2def.asm b/host/atom/atmmc2def.asm new file mode 100644 index 0000000..c734b9b --- /dev/null +++ b/host/atom/atmmc2def.asm @@ -0,0 +1,101 @@ +; /* +; atmmmc2def.h Symbolic defines for AtoMMC2 + +; 2011-05-25, Phill Harvey-Smith. + +; // Register definitions, these are offsets from 0xB400 on the Atom side. + +CMD_REG = $00 +LATCH_REG = $01 +READ_DATA_REG = $02 +WRITE_DATA_REG = $03 +STATUS_REG = $04 + +; // DIR_CMD_REG commands +CMD_DIR_OPEN = $00 +CMD_DIR_READ = $01 +CMD_DIR_CWD = $02 +CMD_DIR_GETCWD = $03 +CMD_DIR_MKDIR = $04 +CMD_DIR_RMDIR = $05 + +; // CMD_REG_COMMANDS +CMD_FILE_CLOSE = $10 +CMD_FILE_OPEN_READ = $11 +CMD_FILE_OPEN_IMG = $12 +CMD_FILE_OPEN_WRITE = $13 +CMD_FILE_DELETE = $14 +CMD_FILE_GETINFO = $15 + +CMD_INIT_READ = $20 +CMD_INIT_WRITE = $21 +CMD_READ_BYTES = $22 +CMD_WRITE_BYTES = $23 + +; // READ_DATA_REG "commands" + +; // EXEC_PACKET_REG "commands" +CMD_EXEC_PACKET = $3F + +; // SDOS_LBA_REG commands +CMD_LOAD_PARAM = $40 +CMD_GET_IMG_STATUS = $41 +CMD_GET_IMG_NAME = $42 +CMD_READ_IMG_SEC = $43 +CMD_WRITE_IMG_SEC = $44 +CMD_SER_IMG_INFO = $45 +CMD_VALID_IMG_NAMES = $46 +CMD_IMG_UNMOUNT = $47 + +; // UTIL_CMD_REG commands +CMD_GET_CARD_TYPE = $80 +CMD_GET_PORT_DDR = $A0 +CMD_SET_PORT_DDR = $A1 +CMD_READ_PORT = $A2 +CMD_WRITE_PORT = $A3 +CMD_GET_FW_VER = $E0 +CMD_GET_BL_VER = $E1 +CMD_GET_CFG_BYTE = $F0 +CMD_SET_CFG_BYTE = $F1 +CMD_READ_AUX = $FD +CMD_GET_HEARTBEAT = $FE + + +; // Status codes +STATUS_OK = $3F +STATUS_COMPLETE = $40 +STATUS_BUSY = $80 + +ERROR_MASK = $3F + +; // To be or'd with STATUS_COMPLETE +ERROR_NO_DATA = $08 +ERROR_INVALID_DRIVE = $09 +ERROR_READ_ONLY = $0A +ERROR_ALREADY_MOUNT = $0A + +; // STATUS_REG bit masks +; // +; // MMC_MCU_BUSY set by a write to CMD_REG by the Atom, cleared by a write by the MCU +; // MMC_MCU_READ set by a write by the Atom (to any reg), cleared by a read by the MCU +; // MCU_MMC_WROTE set by a write by the MCU cleared by a read by the Atom (any reg except status). +; // +MMC_MCU_BUSY = $01 +MMC_MCU_READ = $02 +MMC_MCU_WROTE = $04 + +; I/O register base +; + +.ifdef ALTADDR +AREG_BASE = $b408 +.else +AREG_BASE = $b400 +.endif + +ACMD_REG = AREG_BASE+CMD_REG +ALATCH_REG = AREG_BASE+LATCH_REG +AREAD_DATA_REG = AREG_BASE+READ_DATA_REG +AWRITE_DATA_REG = AREG_BASE+WRITE_DATA_REG +ASTATUS_REG = AREG_BASE+STATUS_REG + diff --git a/host/atom/build.sh b/host/atom/build.sh new file mode 100755 index 0000000..b484762 --- /dev/null +++ b/host/atom/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +rm -f TUBE + +echo Assembling +ca65 -l AtomHost.lst -o AtomHost.o AtomHost.asm + +echo Linking +ld65 AtomHost.o -o TUBE -C AtomHost.lkr + +echo Cleaning +rm -f *.o diff --git a/host/atom/file.asm b/host/atom/file.asm new file mode 100644 index 0000000..33fd7c1 --- /dev/null +++ b/host/atom/file.asm @@ -0,0 +1,264 @@ +open_file_read: + lda #CMD_FILE_OPEN_READ + jsr open_file + jmp expect64orless + +open_file_write: + lda #CMD_FILE_OPEN_WRITE + +; Falls through to + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Open file +; +; $140 = name +; a = read/write $01 = read, $11 = write +; +open_file: + pha + + jsr send_name + pla + SLOWCMD + rts + +send_name: + jsr prepare_write_data + + ldx #0 + beq @pumpname + +@nextchar: + writeportFAST AWRITE_DATA_REG ; $b407 + inx + +@pumpname: + lda NAME,x ; write filename to filename buffer + cmp #$0d + bne @nextchar + + lda #0 ; terminate the string + writeportFAST AWRITE_DATA_REG ; $b407 + jmp interwritedelay + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Get 1st 22 bytes of file to $140 +; +; leave the LOAD address in RAM alone if LEXEC is FF. +; +read_info: + ; read the file header to $140 + + SETRWPTR NAME + + lda #22 + jsr read_block + + ldy #5 ; index of msb of length + ldx #3 ; set up to copy 4 bytes - exec & length + + bit LEXEC ; if bit 7 is set on entry we don't overwrite + bmi @copyfileinfo ; the load address + + ldx #5 ; otherwise copy 6 bytes including load + +@copyfileinfo: + lda $150,y + sta LLOAD,y + dey + dex + bpl @copyfileinfo + + rts + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Read file +; +; (LLOAD) = memory target +; LLENGTH = bytes to read +; + +read_file_read: + lda #0 + jsr read_file_adapter + + inc LLOAD+1 + dec LLENGTH+1 + +read_file: + lda LLENGTH+1 ; any pages left? + bne read_file_read + + lda LLENGTH ; any stragglers? + beq @alldone + + jsr read_file_adapter + + lda LLOAD ; final adjustment to write pointer + clc + adc LLENGTH + sta LLOAD + bcc @zerolen + + inc LLOAD+1 + +@zerolen: + stx LLENGTH ; zero out the length + +@alldone: + jmp closefile +; lda #CMD_FILE_CLOSE ; close file +; SLOWCMD +; jmp expect64orless + + + + +read_file_adapter: + ; enter with a = bytes to read (0=256) + + pha + + lda LLOAD + sta RWPTR + lda LLOAD+1 + sta RWPTR+1 + + pla + + ; falls through to + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Read data to memory +; +; a = number of bytes to read (0 = 256) +; (RWPTR) points to target +; +read_block: + tax + + ; ask PIC for (A) bytes of data (0=256) + writeportFAST ALATCH_REG ; set ammount to read + jsr interwritedelay + SLOWCMDI CMD_READ_BYTES ; set command + + jsr expect64orless + + jsr prepare_read_data ; tell pic to release the data we just read + + ldy #0 + +@loop: + readportFAST AREAD_DATA_REG ; then read it + sta (RWPTR),y + iny + dex + bne @loop + + rts + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; put 1st 22 bytes of data to open file +; +; file needs to be open at this point +; +write_info: + SETRWPTR NAME + lda #22 + jmp write_block + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Write data to open file +; +; SSTART = address to write from +; SEND = final address + 1 +; +write_file_fullpageloop: + lda #0 ; 1 page + jsr write_file_adapter + + inc SSTART+1 + +write_file: + lda SSTART+1 + cmp SEND+1 + bne write_file_fullpageloop + + lda SEND ; any stragglers to write? + cmp SSTART + beq closefile + + sec ; calc remaining bytes + sbc SSTART + jsr write_file_adapter + +closefile: + SLOWCMDI CMD_FILE_CLOSE ; close the file + jmp expect64orless + + +; adapter - falls through to write_block +; +write_file_adapter: + ldy SSTART + sty RWPTR + ldy SSTART+1 + sty RWPTR+1 + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; write a block of data +; +; a = block length (0=256) +; (RWPTR) = source +; +write_block: + tax ; save away the block size + pha + + jsr prepare_write_data ; take it + + ldy #0 + +@loop: + lda (RWPTR),y ; upload data + writeportFAST AWRITE_DATA_REG + iny + dex + bne @loop + + pla ; write block command + writeportFAST ALATCH_REG ; ammount to write + jsr interwritedelay + SLOWCMDI CMD_WRITE_BYTES ; give command to write + jmp expect64orless + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; delete a file +; +; file to be deleted must be opened with open_read +; +delete_file: + SLOWCMDI CMD_FILE_DELETE + jmp expect64orless diff --git a/host/atom/load.asm b/host/atom/load.asm new file mode 100644 index 0000000..2407fe6 --- /dev/null +++ b/host/atom/load.asm @@ -0,0 +1,24 @@ +; LODVEC entry point +; +; 0,x = file parameter block +; +; 0,x = file name string address +; 2,x = data dump start address +; 4,x if bit 7 is clear, then the file's own start address is to be used +; +osloadcode: + ; transfer control block to $c9 (LFNPTR) onward and check name + ; + jsr CHKNAME + + jsr open_file_read + jsr read_info + + bit MONFLAG ; 0 = mon, ff = nomon + bmi @noprint + + jsr print_fileinfo + jsr OSCRLF + +@noprint: + jmp read_file diff --git a/host/atom/macros.asm b/host/atom/macros.asm new file mode 100644 index 0000000..067f9f3 --- /dev/null +++ b/host/atom/macros.asm @@ -0,0 +1,72 @@ +;================================================================= +; macro definitions for AtoMMC +; Collected macros from all files into a single file +;================================================================= +; +; 2013-10-09 converted some of the macro calls to jsr calls where +; appropriate. -- PHS +; + +.macro FNADDR addr + .byte >addr, addr + sta RWPTR+1 +.endmacro + + +; Subroutines for macros in util.asm + diff --git a/host/atom/run.asm b/host/atom/run.asm new file mode 100644 index 0000000..2227719 --- /dev/null +++ b/host/atom/run.asm @@ -0,0 +1,58 @@ +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; *[file name] +; +; Synonymous with *RUN. +; +STARARBITRARY: + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; *RUN [filename] +; +; Try to execute the program with the specified name. If it's a BASIC program +; with an execution address of C2B2 then execute a 'RUN' command at return. +; +STARRUN: + jsr read_filename ; copy filename into $140 + jsr SKIPSPC + ldx #0 + +copyparams: + lda $100,y + sta $100,x + inx + iny + cmp #$0d + bne copyparams + dey + + lda MONFLAG + pha + lda #$ff + sta MONFLAG + jsr $f844 ; set $c9\a = $140, set x = $c9 + jsr $f95b + pla + sta MONFLAG + +checkbasic: + lda LEXEC ; if this is a non-auto-running basic program + cmp #$b2 + bne @runit + lda LEXEC+1 + cmp #$c2 + bne @runit + + lda #<@runcmd + sta $5 + lda #>@runcmd + sta $6 + jmp $c2f2 + +@runit: + jmp (LEXEC) + + +@runcmd: + .byte "RUN",$0d diff --git a/host/atom/save.asm b/host/atom/save.asm new file mode 100644 index 0000000..a126ec2 --- /dev/null +++ b/host/atom/save.asm @@ -0,0 +1,109 @@ +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; SAVVEC +; +; 0,x = file parameter block +; +; 0,x = file name string address +; 2,x = data reload address +; 4,x = data execution address +; 6,x = data start address +; 8,x = data end address + 1 +; +ossavecode: + jsr $f84f ; copy data block at $00,x to COS workspace at $c9 + + jsr open_file_write ; returns with any error in A + + and #$3f + beq @continue + + cmp #$08 ; FILE EXISTS + beq @askover + + jmp expect64orless ; other kind of error + +@askover: + jsr overwrite + + pha + jsr OSCRLF + pla + cmp #'Y' + beq @preparetocont + + rts + +@preparetocont: + jsr delete_file + + jsr open_file_write + jsr expect64orless + +@continue: + lda SLOAD ; tag the file info onto the end of the filename data + sta $150 + lda SLOAD+1 + sta $151 + lda SEXEC + sta $152 + lda SEXEC+1 + sta $153 + sec + lda SEND+1 + sbc SSTART+1 + sta $155 + lda SEND + sbc SSTART + sta $154 + + ldx #$ff ; zero out any data after the name at $140 + +@mungename: + inx + lda NAME,x + cmp #$0d + bne @mungename + + lda #0 + +@munge2: + sta NAME,x + inx + cpx #16 + bne @munge2 + + jsr write_info ; write the ATM header + + jsr write_file ; save the main body of data + +; Don't need to call CLOSE_FILE here as write_file calls it. +; CLOSE_FILE + + bit MONFLAG ; 0 = mon, ff = nomon + bmi @noprint + + ldx #5 + +@cpydata: + lda $150,x + sta LLOAD,x + dex + bpl @cpydata + + jsr print_fileinfo + +@noprint: + jmp OSCRLF + + + + + +overwrite: + jsr STROUT + .byte "OVERWRITE (Y):" + nop + + jsr OSRDCH + jmp OSWRCH diff --git a/host/atom/util.asm b/host/atom/util.asm new file mode 100644 index 0000000..6e08f00 --- /dev/null +++ b/host/atom/util.asm @@ -0,0 +1,453 @@ +; +; renamed some subs as follows : +; PREPGETFRB406_SUB to prepare_read_data +; PREPPUTTOB407_SUB to prepare_write_data +; -- PHS 2013-10-09 + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Short delay +; +; Enough to intersperse 2 writes to the FATPIC. +; +interwritedelay: +.ifndef AVR +; lda #4 + lda #8 + sec + +@loop: + sbc #1 + bne @loop +.endif + rts + +; subroutines for macros in macro.inc +SLOWCMD_SUB: + writeportFAST ACMD_REG +.ifndef AVR +SlowLoop: + + lda #0 + sec +SLOWCMD_DELAY_LOOP: + sbc #1 + bne SLOWCMD_DELAY_LOOP + + lda ACMD_REG + bmi SlowLoop +.else + jsr WaitWhileBusy ; Keep waiting until not busy + lda ACMD_REG ; get status for client +.endif + rts + +prepare_read_data: + lda #CMD_INIT_READ + writeportFAST ACMD_REG + jmp interwritedelay + +prepare_write_data: + lda #CMD_INIT_WRITE + writeportFAST ACMD_REG + jmp interwritedelay + + +.ifdef AVR +WaitUntilRead: + lda ASTATUS_REG ; Read status reg + and #MMC_MCU_READ ; Been read yet ? + bne WaitUntilRead ; nope keep waiting + rts + +WaitUntilWritten: + lda ASTATUS_REG ; Read status reg + and #MMC_MCU_WROTE ; Been written yet ? + beq WaitUntilWritten ; nope keep waiting + rts + +WaitWhileBusy: + lda ASTATUS_REG ; Read status reg + and #MMC_MCU_BUSY ; MCU still busy ? + bne WaitWhileBusy ; yes keep waiting + rts +.endif + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Read an asciiz string to name buffer at $140 +; +; on exit y = character count not including terminating 0 +; +; bug: this will keep reading until it hits a 0, if there is not one, it will +; keep going forever...... +getasciizstringto140: + jsr prepare_read_data + + ldy #$ff + +@loop: + iny + readportFAST AREAD_DATA_REG ; $b406 + sta NAME,y + bne @loop + + rts + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Read data to memory from the pic's buffer +; +; data may be from another source other than file, ie getfileinfo +; x = number of bytes to read (0 = 256) +; (RWPTR) points to store +; +read_data_buffer: + jsr prepare_read_data + + ldy #0 + +@loop: + readportFAST AREAD_DATA_REG ; $b406 + sta (RWPTR),y + iny + dex + bne @loop + + rts + + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Perform slow command initialisation and expect a return code <= 64 +; +expect64orless: + cmp #STATUS_COMPLETE+1 + bcs reportDiskFailure + rts + + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Disable/Enable interface IRQ +; +ifdi: + jsr getcb + and #$DF ; remove bit 6 + jmp putcb + +ifen: + jsr getcb + ora #$20 ; set bit 6 + jmp putcb + + + + +getcb: + FASTCMDI CMD_GET_CFG_BYTE ; retreive config byte + rts + + +putcb: + writeportFAST ALATCH_REG ; $b40e ; latch the value + jsr interwritedelay + + lda #CMD_SET_CFG_BYTE ; write latched val as config byte. irqs are now off + writeportFAST ACMD_REG + rts + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; report a file system error +; +reportDiskFailure: + and #ERROR_MASK + tax ; error code into x + ldy #$ff ; string indexer + +@findstring: + iny ; do this here because we need the z flag below + lda diskerrortab,y + cmp #$0d + bne @findstring ; zip along the string till we find a zero + + dex ; when this bottoms we've found our error + bne @findstring + + iny ; store index for basic BRK-alike hander + tya + clc + adc #diskerrortab + adc #0 + sta $d6 + + ; fall into ... + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Display the filename at $140 +; +; renders 16 chars, pads with spaces +; +print_filename: + ldx #0 + beq @test + +@showit: + jsr OSWRCH + inx + +@test: + lda NAME,x + cmp #32 ; end string print if we find char < 32 + bcc @test2 + + cpx #16 ; or x == 16 + bne @showit + + rts + +@showit2: + lda #32 + jsr OSWRCH + inx + +@test2: + cpx #16 + bne @showit2 + + rts + + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Display file info +; +; Shows load, exec, length +; +print_fileinfo: + lda LLOAD+1 + jsr HEXOUT + lda LLOAD + jsr HEXOUTS + + lda LEXEC+1 + jsr HEXOUT + lda LEXEC + jsr HEXOUTS + + lda LLENGTH+1 + jsr HEXOUT + lda LLENGTH + jmp HEXOUTS + + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Read filename from $100 to $140 +; +; Input $9A = pointer just after command +; +; Output $140 contains filename +; +read_filename: + ldx #0 + ldy $9a + +@filename1: + jsr SKIPSPC + cmp #$22 + beq @filename5 + +@filename2: + cmp #$0d + beq @filename3 + + sta NAME,x + inx + iny + lda $100,y + cmp #$20 + bne @filename2 + +@filename3: + lda #$0d + sta NAME,x + + cpx #0 + beq @filename6 + + rts + +@filename5: + iny + lda $100,y + cmp #$0d + beq @filename6 + + sta NAME,x + inx + cmp #$22 + bne @filename5 + + dex + iny + lda $100,y + cmp #$22 + bne @filename3 + + inx + bcs @filename5 + +@filename6: + jmp COSSYN + + + + + + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; getnexthexval +; +; parse a 1 or 2 digit hex value from $100,y leaving result in A and $cb. +; C set if error +; +getnexthexval: + jsr $f876 ; get next non-space char from input buffer + jsr $f87e ; convert to hex nybble + bcs @error + + sta $cb + + iny + lda $100,y + + jsr $f87e ; convert to hex nybble + bcs @nomore + + iny + asl $cb + asl $cb + asl $cb + asl $cb + ora $cb + sta $cb + +@nomore: + lda $cb + clc + +@error: + rts + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; more +; +; prompt for a key, return it in A +; +more: + jsr STROUT + .byte "" + nop + jsr OSRDCH + pha + + lda #0 ; cheesy x-pos reset + sta $e0 + jsr STROUT + .byte " " + nop + lda #0 + sta $e0 + + pla + rts + + + + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; tab_space +; +; tabs across until horizontal cursor pos is = to val in x +; +tab_loop: + lda #$20 + jsr OSWRCH + +tab_space: + cpx $e0 + bcs tab_loop + rts + +tab_space10: + ldx #10 + jmp tab_space + +tab_space16: + ldx #16 + jmp tab_space + +diskerrortab: + .byte $0d + .byte "DISK FAULT",$0d + .byte "INTERNAL ERROR",$0d + .byte "NOT READY",$0d + .byte "NOT FOUND",$0d + .byte "NO PATH",$0d + .byte "INVALID NAME",$0d + .byte "ACCESS DENIED",$0d + .byte "EXISTS",$0d + .byte "INVALID OBJECT",$0d + .byte "WRITE PROTECTED",$0d + .byte "INVALID DRIVE",$0d + .byte "NOT ENABLED",$0d + .byte "NO FILESYSTEM",$0d + .byte $0d ; mkfs error + .byte "TIMEOUT",$0d + .byte "EEPROM ERROR",$0d + .byte "FAILED",$0d + .byte "TOO MANY",$0d + .byte "SILLY",$0d + + From f7afb53b8826593c095d16f5494078410cd110d0 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 16 Sep 2015 19:19:14 +0100 Subject: [PATCH 43/61] Atom Host: AtomMMC2 now integrated for osload/ossave; osfile still needed Change-Id: Id38d6318e50040733f9e395b3b88d382567ae2d2 --- host/atom/AtomHost.asm | 260 ++++++++++++++++++++++++++++++----------- host/atom/CLOCKSP | Bin 0 -> 2635 bytes host/atom/file.asm | 62 +++++++++- host/atom/load.asm | 63 ++++++---- host/atom/save.asm | 24 +++- host/atom/util.asm | 57 +++++---- 6 files changed, 354 insertions(+), 112 deletions(-) create mode 100644 host/atom/CLOCKSP diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index a6d06e9..a14d301 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -5,7 +5,12 @@ load = $3000 ; Load address of the host code atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) - debug = 0 ; Whether to include debugging of R2 commands + + debug = 0 + + debug_r1 = debug ; Whether to include debugging of R1 commands + debug_r2 = debug ; Whether to include debugging of R2 commands + debug_r4 = debug ; Whether to include debugging of R4 commands LangStart = $4000 ; start of the language in host memory LangEnd = $8000 ; end of the language in host memory @@ -37,6 +42,7 @@ SEXEC = $CD SSTART = $CF SEND = $D1 + ERRPTR = $D5 MONFLAG = $EA NAME = $140 STROUT = $F7D1 @@ -95,7 +101,8 @@ TubeOwner = $95 ; Tube owner R2Cmd = $96 ; Computed address of R2 Command Handler LangFlag = $98 - + EscapeFlag = $99 + ;;; Optional 22-byte ATM Header ;;; -------------------------- @@ -113,10 +120,12 @@ StartAddr: ;;; ---------------------------- TubeStartup: - LDA #$01 + LDA #$00 STA LangFlag + LDA #$00 + STA EscapeFlag LDA #12 - JSR OSWRCH ; Clear screen, ready for startup banner + JSR AtomWRCH ; Clear screen, ready for startup banner JSR ViaInit ; Initialize 50Hz interrupts LDA #$C0 STA TubeS1 ; Clear all Tube Regs @@ -131,17 +140,24 @@ StartupLp1: BPL StartupLp1 ; Loop until VDU data present LDA TubeR1 BEQ Startup2 ; Get it, if CHR$0, finished - CMP #$60 - BCC UpperCase - AND #$DF -UpperCase: - JSR OSWRCH + JSR AtomWRCH JMP StartupLp1 ; Print character, loop for more Startup2: LDA #TubeBRK STA BRKV+1 + + LDA #osloadtube + STA LOADV+1 + + LDA #ossavetube + STA SAVEV+1 + LDA #$8E STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 JSR TubeFree ; Set Tube 'free' and no owner @@ -162,10 +178,10 @@ Startup3: ;;; ---------------------- L0400: - JMP LanguageStartup ; Copy Language and Start Tube system + JMP LanguageStartup ; Copy Language and Start Tube system L0403: - JMP TubeEscape ; Copy Escape state across Tube + JMP EscapeCopy ; Copy Escape state across Tube ;;; Tube Transfer/Claim/Release @@ -416,20 +432,30 @@ R2CmdHandlers: ;;; ----------- TubeBRK: + LDA #TubeHostError + STA ERRPTR+1 + LDX #$FF ; Error number 255 + +TubeError: LDA #$FF JSR TubeSendR4 LDA TubeR2 ; Get ACK byte from CoPro +.if (debug_r2 = 1) + JSR DebugHexOut +.endif LDA #$00 JSR TubeSendR2 ; Send $00 to R2 to specify ERROR TAY - LDA TubeError,Y - JSR TubeSendR2 ; Send via R2 -TubeBRKlp: - INY - LDA TubeError,Y + TXA ; Get the error number JSR TubeSendR2 ; Send via R2 - TAX - BNE TubeBRKlp ; Loop until terminating $00 sent +TubeErrorLp: + LDA (ERRPTR),Y + JSR TubeSendR2 ; Send via R2 + INY + TAX + BNE TubeErrorLp ; Loop until terminating $00 sent ;;; Tube Idle startup ;;; ----------------- @@ -439,32 +465,33 @@ TubeIdleStartup: LDX #$FF TXS CLI - + BNE TubeIdleLoop + ;;; Tube idle loop ;;; -------------- TubeIdle: - LDA $B001 ; Read keyboard hardware - AND #$20 ; was escape pressed? - BNE TubeIdle1 - JSR TubeEscape ; Escape pressed, pass to Client -TubeIdle1: +.if (debug_r2 = 1) + JSR DebugNewline +.endif +TubeIdleLoop: + JSR EscapeCheck BIT TubeS1 BPL TubeIdle2 ; Nothing in VDU port, jump to check Command port TubeWRCH: LDA TubeR1 - JSR OSWRCH ; Get character and send to OSWRCH + JSR AtomWRCH ; Get character and send to OSWRCH TubeIdle2: BIT TubeS2 - BPL TubeIdle ; Nothing in Command port, loop back + BPL TubeIdleLoop ; Nothing in Command port, loop back BIT TubeS1 BMI TubeWRCH ; Check VDU port again LDX TubeR2 ; Get command -.if (debug = 1) - JSR DebugNewline - TXA - JSR DebugHexOut -.endif +.if (debug_r2 = 1) + JSR DebugNewline + TXA + JSR DebugHexOut +.endif LDA R2CmdHandlers, X ; Read command handler STA R2Cmd LDA R2CmdHandlers + 1, X @@ -533,15 +560,24 @@ RdLineLp2: JMP TubeIdle RdLineEsc: LDA #$FF - BNE TubeSendIdle ; Return $FF for Escape, return to Tube idle loop + JMP TubeSendIdle ; Return $FF for Escape, return to Tube idle loop bytelo: - LDX #$02 - JSR TubeWaitBlock ; Fetch 2-byte control block + JSR TubeWaitR2 + TAX + JSR TubeWaitR2 + + CMP #$7E + BEQ osbyte7e + LDA #0 JMP TubeSendIdle +osbyte7e: ; OSBYTE 7e = Ack detection of escape condition + JSR EscapeClear + LDA #$ff + JMP TubeSendIdle ; ff = escape condition cleared bytehi: LDX #$03 JSR TubeWaitBlock ; Fetch 3-byte control block @@ -552,20 +588,11 @@ bytehi: word: JSR TubeWaitR2 ; Get A -.if (debug = 1) - JSR DebugHexOut -.endif PHA ; Stack the osword number JSR TubeWaitR2 ; Get in-length -.if (debug = 1) - JSR DebugHexOut -.endif TAX JSR TubeWaitBlock JSR TubeWaitR2 ; Get out-length -.if (debug = 1) - JSR DebugHexOut -.endif TAX PLA ; Restore osword number CMP #$01 ; Read System Clock @@ -605,10 +632,27 @@ clii: JSR ReadString ; Read string to $0100 - LDA $100 ; Test for a zero-length string - CMP #$0d + LDX #$FF +cliskip: + INX + LDA $100, X ; Skip leading spaces or stars + CMP #$20 + BEQ cliskip + CMP #$2A + BEQ cliskip + + CMP #$0D ; Test for a zero-length string BEQ TubeSendAck ; Skip it + LDY #0 +clicopy: + LDA $100, X + STA $100, Y + INX + INY + CMP #$0D + BNE clicopy + JSR OSCLI ; Execute it ;; If the command returns here, the CoPro will get $7F as an acknowledgement @@ -631,6 +675,9 @@ TubeSendIdle: BIT TubeS2 BVC TubeSendIdle ; Loop until Command port free STA TubeR2 +.if (debug_r2 = 1) + JSR DebugHexOut +.endif JMP TubeIdle ; Send byte and jump to Tube idle loop @@ -717,14 +764,42 @@ args: ;;; OSGBPB ;;; ------ +;;; OSGBPB R2 <== &16 block A +;;; R2 ==> block Cy A + gbpb: - RTS + LDX #$0D ; Block length + JSR TubeWaitBlock + JSR TubeWaitR2 ; Get A + PHA + LDX #$0D ; Block length + JSR TubeSendBlock ; Send block + LDA #$00 + JSR TubeSendR2 ; Send Cy + PLA + JSR TubeSendR2 ; Send A + JMP TubeIdle + ;;; OSFILE ;;; ------ -file: - RTS +;;; OSFILE R2 <== &14 block string &0D A +;;; R2 ==> A block +file: + LDX #$10 ; Block length + JSR TubeWaitBlock +file1: + JSR TubeWaitR2 ; Get String + CMP #$0D + BNE file1 + JSR TubeWaitR2 ; Get A + LDA #$01 ; Send object type 01 "File Found" + JSR TubeSendR2 + LDX #$10 ; Block length + JSR TubeSendBlock ; Send block + JMP TubeIdle + ;;; Atom OSLOAD and OSSAVE can't be used, as will have to pass data across Tube ;;; manually Not sure how to set load/exec addresses without doing a DELETEBGET. ;;; Maybe do a zero-length DELETEBGET, then OPENOUT it @@ -755,9 +830,6 @@ TubeWaitBlock: DEX BMI TubeWaitBlockExit JSR TubeWaitR2 -.if (debug = 1) - JSR DebugHexOut -.endif STA TubeCtrl, X JMP TubeWaitBlock TubeWaitBlockExit: @@ -775,6 +847,9 @@ TubeWaitR2: BIT TubeS2 BPL TubeWaitR2 ; Loop until data present LDA TubeR2 +.if (debug_r2 = 1) + JSR DebugHexOut +.endif RTS ; Get byte @@ -789,14 +864,28 @@ TubeSendBlock: TubeSendBlockExit: RTS +;;; Send byte in A via Tube R1 +;;; -------------------------- +TubeSendR1: + BIT TubeS1 + BVC TubeSendR1 ; Loop until port free + STA TubeR1 +.if (debug_r1 = 1) + JSR DebugHexOut +.endif + RTS + ;;; Send byte in A via Tube R2 ;;; -------------------------- TubeSendR2: BIT TubeS2 BVC TubeSendR2 ; Loop until port free STA TubeR2 +.if (debug_r2 = 1) + JSR DebugHexOut +.endif RTS -;;; Send byte + ;;; Send byte in A via Tube R4 ;;; -------------------------- @@ -804,7 +893,7 @@ TubeSendR4: BIT TubeS4 BVC TubeSendR4 ; Loop until port free STA TubeR4 -.if (debug = 1) +.if (debug_r4 = 1) JSR DebugHexOut .endif RTS ; Send byte @@ -812,16 +901,48 @@ TubeSendR4: ;;; Copy Escape state across Tube ;;; ----------------------------- -;;; TODO +EscapeSet: + LDA EscapeFlag + ORA #$40 + BNE EscapeUpdate + +EscapeClear: + LDA EscapeFlag + AND #$BF + +EscapeUpdate: + STA EscapeFlag -TubeEscape: - RTS +EscapeCopy: + LDA EscapeFlag + AND #$40 ; Bit 6 is the escape state + ORA #$80 ; Bit 7 must be set + JMP TubeSendR1 -TubeError: - .byte 255 - .byte "HOST ERROR" - BRK +EscapeCheck: + LDA $B001 ; Read keyboard hardware + EOR EscapeFlag + AND #$20 + BNE EscapeReturn ; No Change + + LDA EscapeFlag ; Update the escape key state in B5 + EOR #$20 + STA EscapeFlag + + SEC + AND #$20 ; Is the change the key being pressed? + BNE EscapeSet ; If so, set the escape condition + +EscapeReturn: + CLC + RTS + + +TubeHostError: + .byte "HOST ERROR" + BRK + ;;; *************************** ;;; INTERFACE TO ATOM MOS CALLS ;;; *************************** @@ -829,17 +950,24 @@ TubeError: ;;; Interface to Atom OSRDCH ;;; ------------------------ AtomRDCH: + LDA EscapeFlag + AND #$DF + STA EscapeFlag JSR OSRDCH PHA - CLC ; Wait for a character - LDA $B001 - AND #$20 ; Read keyboard hardware - BNE AtomRDCHok - SEC ; SEC as Escape key pressed -AtomRDCHok: + JSR EscapeCheck PLA RTS +;;; Interface to Atom OSRDCH +;;; ------------------------ +AtomWRCH: + CMP #$60 + BCC AtomWRCH1 + AND #$DF +AtomWRCH1: + JMP OSWRCH + ViaInit: LDA #IVwdw6|aT)U~ACTr`~1;>fEY-^GwZrA024J8uTx15xrGyPQ9{gt!#>u`Mzzy0 z+ZNV}%eYGCvDdP!8e*P4(q+?W4X4#|P79`udb4hC;G*knxMq_@Ozf~q6j3&aa#6kw zLzVE7eCOh#LHLx2n8bVqW-C-Btw?g3z(ZH0DM^$yMH1l&5_n~l6o@h;ck_XdhiCjtjvg~1(_EKvLUi7s2R%myxHi&@pc4aaF= zxY+rg%c@cVw-uF7!;(cU5KbCIzSWB96G`w)oH7W9m|~&J=Ipk$VY$1Y1~^2ikZ=Ri zgxX)!$ZojA^jrv6Io@|mFO&v84Y_q4{K8jp2ET#R@~^vLQc@y>sh!&KY8WZ>>N@O4 zg-{?uk;o{NG&37Q+3_x`HypDK>76V(b-RrX%WKn(y78U}>Fd6kWEX75wiY4lFXlnG zum~Ft`3!P@{Ujt3Ea?PfpT{o6K8SrB`z)qTs2shZC`Q6KHaoEW8tda?DVH}`wR*vF zo2G5!l2z@vUfr?51H`;l^6?T>1+``5ma;NLo2Lei0-mPjrRQO3Y>5bY!pZsUsu60^ zWEM*Wjpj3vN+rX1-#yf2%WanyGuW%Q=m`j|y?;3fNgY$zvH^Y_UsChA;__+L$QANN zwrsF6-C6M})Lv2swXLt!G2tV1Y$_2vlf1<7TYXWI<9B8g9RJnb^5kF@9dM&NHItZ0 z^~><%(_I$MUe&5~TnkstMuQgfPB{-HT)x$Y{EcGGim7l1J_W4fh4ONG2 z)KM&`<`C=4qg_^Wnrn62s$q50a?K5^j|C^`Nc4VW~ja^E-+hqoe0eY=gsaT52rYz>{(UEuA#{JXMEhE`Sv`=6|mc}ZCbHCKF;M(#699;)2{Uv znvJGIaiJ>U{910O)%H;2mB)SD?zl8F&iXp;cz^)Ty}sYa&yMTaWL6oU)=}i0C;HBA z)Hf|J%u5_aF4Iu1jQO~1Zql@dEP;D0L92|qfFhrO&b_d_1{ix|7n} z+_Zq#Opm%{V|6@@PntHK6T#vZwfG&hrWLD40klZ4YYp}gqWS@*>ut|!tmAdZ#p|XA z0b}nacr{`A+M_;}Qh_C4%LIztq?o?8-K$0UCRT;Cpa~g47b=2EgftN}B4mi56X6UI zN<=6VVVMXkL^w-?RU(`tLWQ8npAYPJ(Y^A$`kfe;{;AzXANvp5UGz}A$6WX6YRf>B zgRX|6~%6cvSF(N2dNZct~bZrGquR2KWXLv3hR7h0wIVHZNtO!*v9 zRtfDm|GK#Vf<6&87ZlB3>c#l~b9tFM7IHa?t|mtJ<}SuA(G?+Mqv+b*D@J+w3|$fO zGKw~c@?k7?hVUiAmkGa2_!YvRCHyMk&k=5FCO*rd=;o6?bX&?0Uhs<-kTv{FiRiDt E0lTubeCtrl + JSR L0406 + + BIT MONFLAG ; 0 = mon, ff = nomon + BMI @noprint - bit MONFLAG ; 0 = mon, ff = nomon - bmi @noprint - - jsr print_fileinfo - jsr OSCRLF + JSR print_fileinfo + JSR OSCRLF @noprint: - jmp read_file + ;; This writes the data to the Tube R3 + JSR read_file + + ;; Release the Tube + LDA #$9D + JMP L0406 + diff --git a/host/atom/save.asm b/host/atom/save.asm index a126ec2..c34a974 100644 --- a/host/atom/save.asm +++ b/host/atom/save.asm @@ -10,7 +10,7 @@ ; 6,x = data start address ; 8,x = data end address + 1 ; -ossavecode: +ossavetube: jsr $f84f ; copy data block at $00,x to COS workspace at $c9 jsr open_file_write ; returns with any error in A @@ -41,6 +41,24 @@ ossavecode: jsr expect64orless @continue: + + ;; Claim the Tube + LDA #$DD + JSR L0406 + + ;; Setup Type 0 Tube Transfer + LDA SLOAD + STA TubeCtrl + LDA SLOAD + 1 + STA TubeCtrl + 1 + LDA #$00 + STA TubeCtrl + 2 + STA TubeCtrl + 3 + LDA #$00 + LDX #TubeCtrl + JSR L0406 + lda SLOAD ; tag the file info onto the end of the filename data sta $150 lda SLOAD+1 @@ -77,6 +95,10 @@ ossavecode: jsr write_file ; save the main body of data + ;; Release the Tube + LDA #$9D + JMP L0406 + ; Don't need to call CLOSE_FILE here as write_file calls it. ; CLOSE_FILE diff --git a/host/atom/util.asm b/host/atom/util.asm index 6e08f00..a806dd4 100644 --- a/host/atom/util.asm +++ b/host/atom/util.asm @@ -174,6 +174,7 @@ putcb: ; report a file system error ; reportDiskFailure: + PHA ; stack the error code and #ERROR_MASK tax ; error code into x ldy #$ff ; string indexer @@ -181,12 +182,14 @@ reportDiskFailure: @findstring: iny ; do this here because we need the z flag below lda diskerrortab,y - cmp #$0d bne @findstring ; zip along the string till we find a zero dex ; when this bottoms we've found our error bne @findstring + PLA ; unstack the error number + TAX + iny ; store index for basic BRK-alike hander tya clc @@ -199,6 +202,37 @@ reportDiskFailure: ; fall into ... +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Error printer +; +; Enter with $d5,6 -> Error string. +; + +reportFailure: + JMP TubeError ; Pass error's back over the Tube + +diskerrortab: + .byte $00 + .byte "DISK FAULT",$00 + .byte "INTERNAL ERROR",$00 + .byte "NOT READY",$00 + .byte "NOT FOUND",$00 + .byte "NO PATH",$00 + .byte "INVALID NAME",$00 + .byte "ACCESS DENIED",$00 + .byte "EXISTS",$00 + .byte "INVALID OBJECT",$00 + .byte "WRITE PROTECTED",$00 + .byte "INVALID DRIVE",$00 + .byte "NOT ENABLED",$00 + .byte "NO FILESYSTEM",$00 + .byte $00 ; mkfs error + .byte "TIMEOUT",$00 + .byte "EEPROM ERROR",$00 + .byte "FAILED",$00 + .byte "TOO MANY",$00 + .byte "SILLY",$00 ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ ; @@ -428,26 +462,5 @@ tab_space16: ldx #16 jmp tab_space -diskerrortab: - .byte $0d - .byte "DISK FAULT",$0d - .byte "INTERNAL ERROR",$0d - .byte "NOT READY",$0d - .byte "NOT FOUND",$0d - .byte "NO PATH",$0d - .byte "INVALID NAME",$0d - .byte "ACCESS DENIED",$0d - .byte "EXISTS",$0d - .byte "INVALID OBJECT",$0d - .byte "WRITE PROTECTED",$0d - .byte "INVALID DRIVE",$0d - .byte "NOT ENABLED",$0d - .byte "NO FILESYSTEM",$0d - .byte $0d ; mkfs error - .byte "TIMEOUT",$0d - .byte "EEPROM ERROR",$0d - .byte "FAILED",$0d - .byte "TOO MANY",$0d - .byte "SILLY",$0d From 39cf1112fb2882a7804a6a1f7917b5305b18bf3f Mon Sep 17 00:00:00 2001 From: David Banks Date: Thu, 17 Sep 2015 10:35:08 +0100 Subject: [PATCH 44/61] Atom Host: Implemented OSFILE to OSLOAD/OSSAVE mapping Change-Id: Idd4344e8a394c6eda1d370a9c3ac82be9988d9be --- host/atom/AtomHost.asm | 94 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 4 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index a14d301..9a6dba3 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -74,7 +74,7 @@ ;;;I/O addresses ;;;------------- - TubeIO = $BC00 + TubeIO = $BEE0 TubeS1=TubeIO+0 ; VDU TubeR1=TubeIO+1 @@ -102,7 +102,10 @@ R2Cmd = $96 ; Computed address of R2 Command Handler LangFlag = $98 EscapeFlag = $99 - + + AtomCmd = $c9 ; used by osfile; this could be anywhere + AtomStr = $140 ; used by osfile; atommc assumes 140 + ;;; Optional 22-byte ATM Header ;;; -------------------------- @@ -786,19 +789,102 @@ gbpb: ;;; OSFILE R2 <== &14 block string &0D A ;;; R2 ==> A block +;;; Block +;;; 0..3 Load Address +;;; 4..7 Exec Address +;;; 8..B Start Address +;;; C..F End Address + file: LDX #$10 ; Block length JSR TubeWaitBlock -file1: + LDX #$00 +fileString: JSR TubeWaitR2 ; Get String + STA AtomStr, X + INX CMP #$0D - BNE file1 + BNE fileString JSR TubeWaitR2 ; Get A + CMP #$00 + BEQ filesave + CMP #$FF + BEQ fileload + +fileResponse: LDA #$01 ; Send object type 01 "File Found" JSR TubeSendR2 LDX #$10 ; Block length JSR TubeSendBlock ; Send block JMP TubeIdle + + ;; Map to OSLOAD + ;; + ;; Entry: 0,X = LSB File name string address + ;; 1,X = MSB File name string address + ;; 2,X = LSB Data dump start address + ;; 3,X = MSB Data dump start address + ;; 4,X : If bit 7 is clear, then the file's own start address is to be used + +fileload: + JSR fileinit + LDA #$80 ; use block's load address + LDX TubeCtrl + 4 ; if zero, use block's load address + BEQ fileload1 + LDA #$00 ; use file's load address +fileload1: + STA AtomCmd + 4 + JSR DebugHexOut + LDX #AtomCmd + JSR osloadtube + JMP fileResponse + + ;; Map to OSSAVE + ;; + ;; Entry: 0,X = LSB File name string address + ;; 1,X = MSB File name string address + ;; 2,X = LSB Data Reload address + ;; 3,X = MSB Data Reload address + ;; 4,X = LSB Data Execution address + ;; 5,X = MSB Data Execution address + ;; 6,X = LSB Data start address + ;; 7,X = MSB Data start address + ;; 8,X = LSB Data end address + 1 + ;; 9,X = MSB Data end address + 1 + +filesave: + JSR fileinit + LDX #AtomCmd + JSR ossavetube + JMP fileResponse + +fileinit: + JSR DebugNewline + LDA #AtomStr + STA AtomCmd + 1 + JSR DebugHexOut + LDX #$00 + LDY #$02 +fileinitlp: + LDA TubeCtrl, X ; Copy bits 0..7 of address + STA AtomCmd, Y + JSR DebugHexOut + INX + INY + LDA TubeCtrl, X ; Copy bits 8..15 of address + STA AtomCmd, Y + JSR DebugHexOut + INX + INY + INX ; Skip bits 16..23 of address + INX ; Skip bits 24..31 of address + CPX #$10 + BNE fileinitlp + JSR DebugNewline + RTS ;;; Atom OSLOAD and OSSAVE can't be used, as will have to pass data across Tube ;;; manually Not sure how to set load/exec addresses without doing a DELETEBGET. From 7cef79eec8e9b7a09c663afdfb74af3562b57a94 Mon Sep 17 00:00:00 2001 From: David Banks Date: Thu, 17 Sep 2015 15:38:28 +0100 Subject: [PATCH 45/61] Atom Host: Refactored to minimise changes to AtoMMC2; tested against AtoMMC2 2.99 Change-Id: I543ec2a6c36b8463da0d51d1bf49aa816b20ed27 --- host/atom/AtomHost.asm | 136 ++++++++++++++-------------- host/atom/atmmc2def.asm | 103 ++++++++++++++++++--- host/atom/file.asm | 87 ++++-------------- host/atom/load.asm | 192 +++++++++++++++++++++++++++++++--------- host/atom/run.asm | 58 ------------ host/atom/save.asm | 44 ++++----- host/atom/tube.asm | 100 +++++++++++++++++++++ host/atom/util.asm | 40 ++++----- 8 files changed, 462 insertions(+), 298 deletions(-) delete mode 100644 host/atom/run.asm create mode 100644 host/atom/tube.asm diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index 9a6dba3..0f0ee9d 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -6,15 +6,25 @@ atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) - debug = 0 - - debug_r1 = debug ; Whether to include debugging of R1 commands - debug_r2 = debug ; Whether to include debugging of R2 commands - debug_r4 = debug ; Whether to include debugging of R4 commands + atommc = 0 ; Whether to include a local copy of AtomMMC2 load/save + + debug_r1 = 0 ; Whether to include debugging of R1 commands + debug_r2 = 0 ; Whether to include debugging of R2 commands + debug_r4 = 0 ; Whether to include debugging of R4 commands LangStart = $4000 ; start of the language in host memory LangEnd = $8000 ; end of the language in host memory + +.if (atommc = 1) +.include "atmmc2def.asm" +.else + ;; These are already defined in atmmc2def.asm + OSRDCH = $FFE3 + OSWRCH = $FFF4 + HEXOUT = $F802 +.endif + ;;; MOS entry addresses ;;; ------------------- OSSHUT = $FFCB @@ -25,32 +35,15 @@ OSRDAR = $FFDA OSSAVE = $FFDD OSLOAD = $FFE0 - OSRDCH = $FFE3 OSECHO = $FFE6 OSASCI = $FFE9 - OSCRLF = $FFED + OSNEWL = $FFED OSWRCR = $FFF2 - OSWRCH = $FFF4 OSCLI = $FFF7 ;;; Atom OS addresses - RWPTR = $AC - LLOAD = $CB - SLOAD = $CB - LEXEC = $CD - LLENGTH = $CF - SEXEC = $CD - SSTART = $CF - SEND = $D1 ERRPTR = $D5 - MONFLAG = $EA - NAME = $140 - STROUT = $F7D1 - HEXOUTS = $F7FA - HEXOUT = $F802 - CHKNAME = $F84F - SKIPSPC = $F876 - COSSYN = $FA7D + ;;; Vectors ;;; ------- @@ -95,16 +88,19 @@ ;;; Workspace in zero page ;;; ---------------------- - TubeCtrl = $80 ; Control block for MOS calls - TubeSrc = $92 ; Pointer to Tube transfer block - TubeStatus = $94 ; Tube status - TubeOwner = $95 ; Tube owner - R2Cmd = $96 ; Computed address of R2 Command Handler - LangFlag = $98 - EscapeFlag = $99 + TubeCtrl = $60 ; Control block for MOS calls + TubeSrc = $72 ; Pointer to Tube transfer block + TubeStatus = $74 ; Tube status + TubeOwner = $75 ; Tube owner + R2Cmd = $76 ; Computed address of R2 Command Handler + LangFlag = $78 + EscapeFlag = $79 + + AtomCmd = $c9 ; used by osfile; this could be anywhere + AtomStr = $140 ; used by osfile; atommc assumes 140 - AtomCmd = $c9 ; used by osfile; this could be anywhere - AtomStr = $140 ; used by osfile; atommc assumes 140 + TubeFlag = $3CF ; tube enabled flag, set by atom tube host + TubeEna = $5A ; tube enable magic value ;;; Optional 22-byte ATM Header ;;; -------------------------- @@ -119,14 +115,28 @@ AtmHeader: StartAddr: - ;;; Start up the Atom Tube system - ;;; ---------------------------- +;;; Main Entry Point Block +;;; ---------------------- + +L0400: + JMP TubeStartup ; Copy Language and Start Tube system +L0403: + JMP EscapeCopy ; Copy Escape state across Tube +L0406: + JMP TubeClaimTransferRelease +L0409: + JMP TubeError + +;;; Start up the Atom Tube system +;;; ---------------------------- TubeStartup: - LDA #$00 + LDA #$00 ; non zero means transfer language STA LangFlag - LDA #$00 + LDA #$00 ; B5 tracks escape key, B6 tracks escape state STA EscapeFlag + LDA #TubeEna ; Enable tube transfers in AtoMMC + STA TubeFlag LDA #12 JSR AtomWRCH ; Clear screen, ready for startup banner JSR ViaInit ; Initialize 50Hz interrupts @@ -151,16 +161,16 @@ Startup2: LDA #>TubeBRK STA BRKV+1 - LDA #osloadtube + LDA #>osloadcode STA LOADV+1 - - LDA #ossavetube + LDA #>ossavecode STA SAVEV+1 - +.endif LDA #$8E STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 JSR TubeFree ; Set Tube 'free' and no owner @@ -177,20 +187,11 @@ Startup2: Startup3: JMP TubeSendAck ; Send $7f ack and enter idle loop -;;; Main Entry Point Block -;;; ---------------------- - -L0400: - JMP LanguageStartup ; Copy Language and Start Tube system - -L0403: - JMP EscapeCopy ; Copy Escape state across Tube - ;;; Tube Transfer/Claim/Release ;;; --------------------------- -L0406: +TubeClaimTransferRelease: CMP #$80 ; Claim/Release/Action via Tube BCC TubeTransfer ; If <$80, data transfer action CMP #$C0 ; Is it claim or release? @@ -550,7 +551,7 @@ RdLineChar: INY BNE RdLineLp1 ; Echo character, loop for more RdLineCR: - JSR OSCRLF ; Print + JSR OSNEWL ; Print LDA #$7F JSR TubeSendR2 ; Send $7F via R2 to indicate no Escape LDY #0 ; Point to start of string buffer @@ -834,9 +835,8 @@ fileload: LDA #$00 ; use file's load address fileload1: STA AtomCmd + 4 - JSR DebugHexOut LDX #AtomCmd - JSR osloadtube + JSR OSLOAD JMP fileResponse ;; Map to OSSAVE @@ -855,41 +855,30 @@ fileload1: filesave: JSR fileinit LDX #AtomCmd - JSR ossavetube + JSR OSSAVE JMP fileResponse - + fileinit: - JSR DebugNewline LDA #AtomStr STA AtomCmd + 1 - JSR DebugHexOut LDX #$00 LDY #$02 fileinitlp: LDA TubeCtrl, X ; Copy bits 0..7 of address STA AtomCmd, Y - JSR DebugHexOut INX INY LDA TubeCtrl, X ; Copy bits 8..15 of address STA AtomCmd, Y - JSR DebugHexOut INX INY INX ; Skip bits 16..23 of address INX ; Skip bits 24..31 of address CPX #$10 BNE fileinitlp - JSR DebugNewline RTS - -;;; Atom OSLOAD and OSSAVE can't be used, as will have to pass data across Tube -;;; manually Not sure how to set load/exec addresses without doing a DELETEBGET. -;;; Maybe do a zero-length DELETEBGET, then OPENOUT it - ;;; TUBE COMMAND TRANSFERS ;;; ********************** @@ -1102,7 +1091,7 @@ ViaTime: DebugNewline: PHP PHA - JSR OSCRLF + JSR OSNEWL PLA PLP RTS @@ -1115,11 +1104,14 @@ DebugHexOut: PLP RTS -.include "atmmc2def.asm" + +.if (atommc = 1) .include "macros.asm" +.include "tube.asm" .include "file.asm" .include "load.asm" .include "save.asm" .include "util.asm" - +.endif + EndAddr: diff --git a/host/atom/atmmc2def.asm b/host/atom/atmmc2def.asm index c734b9b..fcb2028 100644 --- a/host/atom/atmmc2def.asm +++ b/host/atom/atmmc2def.asm @@ -3,6 +3,87 @@ ; 2011-05-25, Phill Harvey-Smith. +; OS overrides +; +TOP =$0d +PAGE =$12 +ARITHWK =$23 + +; these need to be in ZP +; +RWPTR =$ac ; W - data target vector +ZPTW =$ae ; [3] - general use temp vector, used by vechexs, RS, WS + +LFNPTR =$c9 ; W -pointer to filename (usually $140) +LLOAD =$cb ; W - load address +LEXEC =$cd ; W - execution address +LLENGTH =$cf ; W - byte length + +SFNPTR =$c9 ; W -pointer to filename (usually $140) +SLOAD =$cb ; W - reload address +SEXEC =$cd ; W - execute +SSTART =$cf ; W - data start +SEND =$d1 ; W - data end + 1 + +CRC =$c9 ; 3 bytes in ZP - should be ok as this addr only used for load/save?? + +RDCCNT =$c9 ; B - bytes in pool - ie ready to be read from file +RDCLEN =$ca ; W - length of file supplying characters + +tmp_ptr3 =$D5 +tmp_ptr5 =$D6 +tmp_ptr6 =$D7 + +MONFLAG =$ea ; 0 = messages on, ff = off + +NAME =$140 ; sits astride the BASIC input buffer and string processing area. + +IRQVEC =$204 ; we patch these (maybe more ;l) +COMVEC =$206 +RDCVEC =$20a +LODVEC =$20c +SAVVEC =$20e + +; DOS scratch RAM 3CA-3FC. As the AtoMMC interface effectively precludes the use of DOS.. +; +FKIDX =$3ca ; B - fake key index +RWLEN =$3cb ; W - count of bytes to write +FILTER =$3cd ; B - dir walk filter + + +; FN ADDR +; +OSWRCH =$fff4 +OSRDCH =$ffe3 +OSCRLF =$ffed +COSSYN =$fa7d +COSPOST =$fa76 +RDADDR =$fa65 +CHKNAME =$f84f +SKIPSPC =$f876 +RDOPTAD =$f893 +BADNAME =$f86c +WSXFER2 =$f85C +COPYNAME =$f818 +HEXOUT =$f802 +HEXOUTS =$f7fa +STROUT =$f7d1 + +; I/O register base +; + +.ifdef ALTADDR +AREG_BASE = $b408 +.else +AREG_BASE = $b400 +.endif + +ACMD_REG = AREG_BASE+CMD_REG +ALATCH_REG = AREG_BASE+LATCH_REG +AREAD_DATA_REG = AREG_BASE+READ_DATA_REG +AWRITE_DATA_REG = AREG_BASE+WRITE_DATA_REG +ASTATUS_REG = AREG_BASE+STATUS_REG + ; // Register definitions, these are offsets from 0xB400 on the Atom side. CMD_REG = $00 @@ -84,18 +165,16 @@ MMC_MCU_BUSY = $01 MMC_MCU_READ = $02 MMC_MCU_WROTE = $04 -; I/O register base -; -.ifdef ALTADDR -AREG_BASE = $b408 -.else -AREG_BASE = $b400 -.endif -ACMD_REG = AREG_BASE+CMD_REG -ALATCH_REG = AREG_BASE+LATCH_REG -AREAD_DATA_REG = AREG_BASE+READ_DATA_REG -AWRITE_DATA_REG = AREG_BASE+WRITE_DATA_REG -ASTATUS_REG = AREG_BASE+STATUS_REG + + + + + + + + + + diff --git a/host/atom/file.asm b/host/atom/file.asm index f3415a3..607e07e 100644 --- a/host/atom/file.asm +++ b/host/atom/file.asm @@ -135,7 +135,8 @@ read_file_adapter: pla - ; falls through to + ; @@TUBE@@ + JMP tube_read_block ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ @@ -143,61 +144,32 @@ read_file_adapter: ; Read data to memory ; ; a = number of bytes to read (0 = 256) -; TubeR3 points to target +; (RWPTR) points to target ; -read_block_tube: - tax - - ; ask PIC for (A) bytes of data (0=256) - writeportFAST ALATCH_REG ; set ammount to read - jsr interwritedelay - SLOWCMDI CMD_READ_BYTES ; set command - - jsr expect64orless - - jsr prepare_read_data ; tell pic to release the data we just read - - -@looptube: +; @@TUBE@@ Refactored to allow code sharing with tube_read_block +read_block: + jsr read_block_shared + ldy #0 +@loop: readportFAST AREAD_DATA_REG ; then read it - - ;; Send to tube R3 - STA TubeR3 - + sta (RWPTR),y + iny dex - bne @looptube - + bne @loop rts -;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ -; -; Read data to memory -; -; a = number of bytes to read (0 = 256) -; (RWPTR) points to target -; -read_block: +read_block_shared: tax - ; ask PIC for (A) bytes of data (0=256) writeportFAST ALATCH_REG ; set ammount to read jsr interwritedelay SLOWCMDI CMD_READ_BYTES ; set command - jsr expect64orless + jmp prepare_read_data ; tell pic to release the data we just read - jsr prepare_read_data ; tell pic to release the data we just read - ldy #0 -@loop: - readportFAST AREAD_DATA_REG ; then read it - sta (RWPTR),y - iny - dex - bne @loop - rts @@ -253,40 +225,17 @@ write_file_adapter: ldy SSTART+1 sty RWPTR+1 + ; @@TUBE@@ + JMP tube_write_block + ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ ; ; write a block of data ; ; a = block length (0=256) -; Tube R3 = source -; -write_block_tube: - tax ; save away the block size - pha - - jsr prepare_write_data ; take it - -@looptube: - ;; Read from tube R3 - LDA TubeR3 - writeportFAST AWRITE_DATA_REG - dex - bne @looptube - - pla ; write block command - writeportFAST ALATCH_REG ; ammount to write - jsr interwritedelay - SLOWCMDI CMD_WRITE_BYTES ; give command to write - jmp expect64orless - - - ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ -; -; write a block of data -; -; a = block length (0=256) ; (RWPTR) = source ; +; @@TUBE@@ Refactored to allow code sharing with tube_write_block write_block: tax ; save away the block size pha @@ -302,13 +251,13 @@ write_block: dex bne @loop +write_block_shared: pla ; write block command writeportFAST ALATCH_REG ; ammount to write jsr interwritedelay SLOWCMDI CMD_WRITE_BYTES ; give command to write jmp expect64orless - ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ ; ; delete a file diff --git a/host/atom/load.asm b/host/atom/load.asm index 1dcb8dc..72e0ba0 100644 --- a/host/atom/load.asm +++ b/host/atom/load.asm @@ -1,47 +1,151 @@ -;;; LODVEC entry point -;;; -;;; 0,x = file parameter block -;;; -;;; 0,x = file name string address -;;; 2,x = data dump start address -;;; 4,x if bit 7 is clear, then the file's own start address is to be used -;;; -osloadtube: - ;; transfer control block to $c9 (LFNPTR) onward and check name - ;; - JSR CHKNAME - - JSR open_file_read - JSR read_info - - ;; Claim the Tube - LDA #$DD - JSR L0406 - - ;; Setup Type 1 Tube Transfer - LDA LLOAD - STA TubeCtrl - LDA LLOAD + 1 - STA TubeCtrl + 1 - LDA #$00 - STA TubeCtrl + 2 - STA TubeCtrl + 3 - LDA #$01 - LDX #TubeCtrl - JSR L0406 - - BIT MONFLAG ; 0 = mon, ff = nomon - BMI @noprint - - JSR print_fileinfo - JSR OSCRLF +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; *LOAD [filename] ([address]) +; +; Loads specified file to memory. If reload address is specified then this will be +; used in preference to the reload address stored in the file's metadata. +; +STARLOAD: + jsr read_filename ; copy filename into $140 + jsr $f844 ; set $c9\a = $140, set x = $c9 + jmp $f95b ; *LOAD+3 + + + + + +; LODVEC entry point +; +; 0,x = file parameter block +; +; 0,x = file name string address +; 2,x = data dump start address +; 4,x if bit 7 is clear, then the file's own start address is to be used +; +osloadcode: + ; transfer control block to $c9 (LFNPTR) onward and check name + ; + jsr CHKNAME + + jsr open_file_read + jsr read_info + + ; @@TUBE@@ + ; Test if the tube is enabled, then claim and initiate transfer + ldx #LLOAD ; block containing transfer address + ldy #1 ; transfer type + jsr tube_claim_wrapper + + bit MONFLAG ; 0 = mon, ff = nomon + bmi @noprint + + jsr print_fileinfo + jsr OSCRLF @noprint: - ;; This writes the data to the Tube R3 - JSR read_file + jsr read_file + + ; @@TUBE@@ + ; Test if the tube is enabled, then release + jmp tube_release_wrapper + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; *RLOAD [filename] [address] +; +; Load specified file to memory starting at the specified address. The file's FAT +; file system length is used, and any ATM metadata is read as part of the file. +; +;STARRLOAD: +; jsr read_filename ; copy filename into $140 +; jsr $f844 ; set $c9\a = $140, set x = $c9 +; +; ldx #$cb ; Point to the vector at #CB, #CC +; jsr RDOPTAD ; ..and interpret the load address to store it here +; beq rlerr ; ..can't interpret load address - error +; +; jsr COSPOST ; Do COS interpreter post test +; ldx #$c9 ; File data starts at #C9 +; +; jsr CHKNAME +; jsr open_file_read +; +; SETRWPTR NAME ; get the FAT file size - ignore any ATM headers +; +; SLOWCMDI CMD_FILE_GETINFO +; +; ldx #13 +; jsr read_data_buffer +; +; lda NAME ; fat file length +; sta LLENGTH +; lda NAME+1 +; sta LLENGTH+1 +; +; jmp read_file +; +;rlerr: +; jmp COSSYN +; +; +;nomemerr: +; REPERROR noramstr +; +; +;noramstr: +; .byte "NO RAM" +; nop + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; *ROMLOAD [filename] +; +; Requires RAMOTH RamRom board with firmware giving read access to the option latch. +; Ensures 4k bank at $7000 is present in memory map then loads the specified file +; there. Sets utility ROM to bank 0 (redundant, possibly) pages $70 to $a0 and +; waits for break. +; +STARROMLOAD: +; lda $bffd ; map $7000-$7fff to $7000 - needs ramrom with latest CPLD code +; and #$fe - ;; Release the Tube - LDA #$9D - JMP L0406 - +; lda #0 +; +; sta $bffe ; ensure there's RAM at 7000 + ; ora #1 ; for 'selectrom' code later + ; sta $cc +; +; lda #$55 +; sta $7000 +; cmp $7000 +; bne nomemerr +; asl a +; sta $7000 +; cmp $7000 +; bne nomemerr +; +; jsr read_filename ; copy filename into $140 +; jsr $f844 ; set $c9\a = $140, set x = $c9 +; +; jsr CHKNAME +; jsr open_file_read +; +; lda #0 +; sta LLOAD +; sta LLENGTH +; +; sta $cb +; +; lda #$10 +; sta LLENGTH+1 +; lda #$70 +; sta LLOAD+1 +; +; jsr read_file +; + ; cb = rom num for bfff + ; cc = option latch at bffe + ; +; jmp selectrom diff --git a/host/atom/run.asm b/host/atom/run.asm deleted file mode 100644 index 2227719..0000000 --- a/host/atom/run.asm +++ /dev/null @@ -1,58 +0,0 @@ -;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ -; -; *[file name] -; -; Synonymous with *RUN. -; -STARARBITRARY: - -;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ -; -; *RUN [filename] -; -; Try to execute the program with the specified name. If it's a BASIC program -; with an execution address of C2B2 then execute a 'RUN' command at return. -; -STARRUN: - jsr read_filename ; copy filename into $140 - jsr SKIPSPC - ldx #0 - -copyparams: - lda $100,y - sta $100,x - inx - iny - cmp #$0d - bne copyparams - dey - - lda MONFLAG - pha - lda #$ff - sta MONFLAG - jsr $f844 ; set $c9\a = $140, set x = $c9 - jsr $f95b - pla - sta MONFLAG - -checkbasic: - lda LEXEC ; if this is a non-auto-running basic program - cmp #$b2 - bne @runit - lda LEXEC+1 - cmp #$c2 - bne @runit - - lda #<@runcmd - sta $5 - lda #>@runcmd - sta $6 - jmp $c2f2 - -@runit: - jmp (LEXEC) - - -@runcmd: - .byte "RUN",$0d diff --git a/host/atom/save.asm b/host/atom/save.asm index c34a974..5736e1b 100644 --- a/host/atom/save.asm +++ b/host/atom/save.asm @@ -1,3 +1,16 @@ +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; STARSAVE +; +; Parses filename then resumes execution of the BIOS' save routine. +; +STARSAVE: + jsr read_filename ; copy filename into $140 + jsr $f844 ; set $c9\a = $140, set x = $c9 + jmp $fabe ; scan parameters and jmp through SAVVEC + + + ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ ; ; SAVVEC @@ -10,7 +23,7 @@ ; 6,x = data start address ; 8,x = data end address + 1 ; -ossavetube: +ossavecode: jsr $f84f ; copy data block at $00,x to COS workspace at $c9 jsr open_file_write ; returns with any error in A @@ -42,22 +55,11 @@ ossavetube: @continue: - ;; Claim the Tube - LDA #$DD - JSR L0406 - - ;; Setup Type 0 Tube Transfer - LDA SLOAD - STA TubeCtrl - LDA SLOAD + 1 - STA TubeCtrl + 1 - LDA #$00 - STA TubeCtrl + 2 - STA TubeCtrl + 3 - LDA #$00 - LDX #TubeCtrl - JSR L0406 + ; @@TUBE@@ + ; Test if the tube is enabled, then claim and initiate transfer + ldx #SLOAD ; block containing transfer address + ldy #0 ; transfer type + jsr tube_claim_wrapper lda SLOAD ; tag the file info onto the end of the filename data sta $150 @@ -95,10 +97,10 @@ ossavetube: jsr write_file ; save the main body of data - ;; Release the Tube - LDA #$9D - JMP L0406 - + ; @@TUBE@@ + ; Test if the tube is enabled, then release + jsr tube_release_wrapper + ; Don't need to call CLOSE_FILE here as write_file calls it. ; CLOSE_FILE diff --git a/host/atom/tube.asm b/host/atom/tube.asm new file mode 100644 index 0000000..c3d97cc --- /dev/null +++ b/host/atom/tube.asm @@ -0,0 +1,100 @@ +;;; TubeR3 = $BEE6 +;;; TubeCtrl = $60 +;;; L0406 = $4006 ; Tube claim/transfer/release +;;; L0409 = $4009 ; Tube error + +;;; TubeFlag = $3CF ; tube enabled flag, set by atom tube host +;;; TubeEna = $5A ; tube enable magic value + TubeClientId = $DD ; client ID for AtoMMC2 used in tube protocol + +;;; Tube Handling + +;;; tube_claim_wrapper +;;; +;;; Check if tube enabled, and if so claim and setup data transfer +;;; X = where to read transfer address, in zero page +;;; Y = transfer type +;;; 00 = parasite to host (i.e. save) +;;; 01 = host to parasite (i.e. load) +;;; +tube_claim_wrapper: + + ;; Check if the Tube has been enabled + LDA TubeFlag + CMP #TubeEna + BNE tube_disabled + + ;; Claim Tube + LDA #TubeClientId + JSR L0406 + + ;; Setup Data Transfer + LDA 0, X + STA TubeCtrl + LDA 1, X + STA TubeCtrl + 1 + LDA #$00 + STA TubeCtrl + 2 + STA TubeCtrl + 3 + TYA + LDX #TubeCtrl + JMP L0406 + +tube_release_wrapper: + ;; Check if the Tube has been enabled + LDA TubeFlag + CMP #TubeEna + BNE tube_disabled + + ;; Release Tube + LDA #TubeClientId - $40 + JMP L0406 + +tube_disabled: + RTS + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; Read a block of data from file to the Tube +; +; a = number of bytes to read (0 = 256) +; +tube_read_block: + LDX TubeFlag + CPX #TubeEna + BEQ @tube_enabled + JMP read_block ; Fall back to old code if tube is disabled + +@tube_enabled: + JSR read_block_shared +@loop: + readportFAST AREAD_DATA_REG ; then read it + STA TubeR3 ; write to the tube data transfer register + DEX + BNE @loop + RTS + + +;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ +; +; write a block of data from the Tube to a file +; +; a = block length (0=256) +; +tube_write_block: + LDX TubeFlag + CPX #TubeEna + BEQ @tube_enabled + JMP write_block ; Fall back to old code if tube is disabled + +@tube_enabled: + TAX ; save away the block size + PHA + JSR prepare_write_data ; take it +@loop: + LDA TubeR3 ; read data from the tube data transfer register + writeportFAST AWRITE_DATA_REG + DEX + BNE @loop + JMP write_block_shared diff --git a/host/atom/util.asm b/host/atom/util.asm index a806dd4..170db15 100644 --- a/host/atom/util.asm +++ b/host/atom/util.asm @@ -169,12 +169,13 @@ putcb: rts + + ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ ; ; report a file system error ; reportDiskFailure: - PHA ; stack the error code and #ERROR_MASK tax ; error code into x ldy #$ff ; string indexer @@ -187,9 +188,19 @@ reportDiskFailure: dex ; when this bottoms we've found our error bne @findstring - PLA ; unstack the error number - TAX - + + lda TubeFlag + cmp #TubeEna + beq @tubeError + +@printstring: + iny + lda diskerrortab,y + jsr OSWRCH + bne @printstring + brk + +@tubeError: iny ; store index for basic BRK-alike hander tya clc @@ -198,19 +209,7 @@ reportDiskFailure: lda #>diskerrortab adc #0 sta $d6 - - ; fall into ... - - -;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ -; -; Error printer -; -; Enter with $d5,6 -> Error string. -; - -reportFailure: - JMP TubeError ; Pass error's back over the Tube + jmp L0409 diskerrortab: .byte $00 @@ -232,8 +231,8 @@ diskerrortab: .byte "EEPROM ERROR",$00 .byte "FAILED",$00 .byte "TOO MANY",$00 - .byte "SILLY",$00 - + .byte "SILLY",$0d + ;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~;~~ ; ; Display the filename at $140 @@ -461,6 +460,3 @@ tab_space10: tab_space16: ldx #16 jmp tab_space - - - From 83ff803e957559907313150f7080c884d714a020 Mon Sep 17 00:00:00 2001 From: David Banks Date: Thu, 17 Sep 2015 16:09:33 +0100 Subject: [PATCH 46/61] Atom Host: Updated ROM images with correct load/exec addresses Change-Id: I35c3a86d19b8055e36161b8a8807e563badd64d8 --- host/atom/BASIC2 | Bin 16406 -> 16406 bytes host/atom/CLOCKSP | Bin 2635 -> 2635 bytes host/atom/PDPRM21 | Bin 0 -> 16406 bytes host/atom/PDPRM22 | Bin 0 -> 13070 bytes host/atom/PDPRM23 | Bin 0 -> 13080 bytes host/atom/langheader | Bin 22 -> 22 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 host/atom/PDPRM21 create mode 100644 host/atom/PDPRM22 create mode 100644 host/atom/PDPRM23 diff --git a/host/atom/BASIC2 b/host/atom/BASIC2 index a74e0b7329a863e789d5f9b209102d13fb815566..a89852765ec91c452fae02750e58992ba67aebc4 100644 GIT binary patch delta 31 ecmbQ%z&NdeQN+nH*wfjF0Rb8q8a9eBIRF4`xCPz- delta 31 ecmbQ%z&NdeQN+nH*wfjF0RbEs95#wDIRF4@xCLGS diff --git a/host/atom/CLOCKSP b/host/atom/CLOCKSP index b0397acc1d86cd1b5bf719fe58abb839f30f6211..56eaa410f646873bf35648d8e6864408d53646cf 100644 GIT binary patch delta 29 dcmX>ta#}>h*~j16J2-#=4mgw>Hj0>Y0RUvZ1(N^( delta 29 dcmX>ta#}>h*~j16J2-#=4mcP%Hj0>Y0RUl>1o!{| diff --git a/host/atom/PDPRM21 b/host/atom/PDPRM21 new file mode 100644 index 0000000000000000000000000000000000000000..0b1d054844746f5a2cfce22d5b889d50b4b6b8ab GIT binary patch literal 16406 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 CW2uz@ literal 0 HcmV?d00001 diff --git a/host/atom/PDPRM22 b/host/atom/PDPRM22 new file mode 100644 index 0000000000000000000000000000000000000000..867243f303af650f905865163c25711d2374cb98 GIT binary patch literal 13070 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 Yq>OehWwuMwsCKC>N}Hh@&mAWEf6I2c@c;k- literal 0 HcmV?d00001 diff --git a/host/atom/langheader b/host/atom/langheader index 5a176668ca9aafdc11c92cb145aa0b6cc8d4d056..757edc20b40de22d51b369df2aec4579d84346e4 100644 GIT binary patch literal 22 UcmZ>A4EA(3VnBcfh6V-)03${M)c^nh literal 22 TcmZ>A4EA(3Vn6@~1|S3gAw~jK From 915afe8ee5beabae5300dc536f3c98107a069634 Mon Sep 17 00:00:00 2001 From: David Banks Date: Thu, 24 Sep 2015 11:17:52 +0100 Subject: [PATCH 47/61] Added Osword 7F and FF; CPM now boots and can run programs Change-Id: I1b8a2002e3bf939dfaa4aea7cf3b87a2a5d718cd --- host/atom/AtomHost.asm | 597 ++++++++++++++++++++++------------------- host/atom/COLOSS | Bin 0 -> 28213 bytes host/atom/CPM1.dsd | Bin 0 -> 409600 bytes host/atom/HIBASIC | Bin 0 -> 16406 bytes host/atom/INFOCOM.dsd | Bin 0 -> 409600 bytes host/atom/Z80BAS | Bin 0 -> 13311 bytes host/atom/osword7f.asm | 200 ++++++++++++++ host/atom/oswordff.asm | 114 ++++++++ 8 files changed, 631 insertions(+), 280 deletions(-) create mode 100644 host/atom/COLOSS create mode 100644 host/atom/CPM1.dsd create mode 100644 host/atom/HIBASIC create mode 100644 host/atom/INFOCOM.dsd create mode 100644 host/atom/Z80BAS create mode 100644 host/atom/osword7f.asm create mode 100644 host/atom/oswordff.asm diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index 0f0ee9d..ee8bf50 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -1,29 +1,26 @@ ;;; AtomHost/src ;;; Source for Atom Tube Host ;;; J.G.Harston and D.M.Banks - + load = $3000 ; Load address of the host code atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) - atommc = 0 ; Whether to include a local copy of AtomMMC2 load/save - + atommc = 0 ; Whether to include a local copy of AtomMMC2 load/save + debug_r1 = 0 ; Whether to include debugging of R1 commands debug_r2 = 0 ; Whether to include debugging of R2 commands debug_r4 = 0 ; Whether to include debugging of R4 commands + debug_osw_7f = 0 ; Whether to include debugging of OSWORD 7F commands + debug_osw_ff = 0 ; Whether to include debugging of OSWORD FF commands + LangStart = $4000 ; start of the language in host memory LangEnd = $8000 ; end of the language in host memory - -.if (atommc = 1) +.include "macros.asm" .include "atmmc2def.asm" -.else - ;; These are already defined in atmmc2def.asm - OSRDCH = $FFE3 - OSWRCH = $FFF4 - HEXOUT = $F802 -.endif + ;;; MOS entry addresses ;;; ------------------- @@ -41,8 +38,13 @@ OSWRCR = $FFF2 OSCLI = $FFF7 + ;; These are already defined in atmmc2def.asm + ;; OSRDCH = $FFE3 + ;; OSWRCH = $FFF4 + ;; HEXOUT = $F802 + ;;; Atom OS addresses - ERRPTR = $D5 + ERRPTR = $D5 ;;; Vectors @@ -79,12 +81,12 @@ TubeR4=TubeIO+7 ;;; VIA Addresses - ViaBase = $B800 - ViaT1CounterL = ViaBase + 4 - ViaT1CounterH = ViaBase + 5 - ViaACR = ViaBase + 11 - ViaIER = ViaBase + 14 - + ViaBase = $B800 + ViaT1CounterL = ViaBase + 4 + ViaT1CounterH = ViaBase + 5 + ViaACR = ViaBase + 11 + ViaIER = ViaBase + 14 + ;;; Workspace in zero page ;;; ---------------------- @@ -94,13 +96,13 @@ TubeOwner = $75 ; Tube owner R2Cmd = $76 ; Computed address of R2 Command Handler LangFlag = $78 - EscapeFlag = $79 + EscapeFlag = $79 - AtomCmd = $c9 ; used by osfile; this could be anywhere - AtomStr = $140 ; used by osfile; atommc assumes 140 + AtomCmd = $c9 ; used by osfile; this could be anywhere + AtomStr = $140 ; used by osfile; atommc assumes 140 - TubeFlag = $3CF ; tube enabled flag, set by atom tube host - TubeEna = $5A ; tube enable magic value + TubeFlag = $3CF ; tube enabled flag, set by atom tube host + TubeEna = $5A ; tube enable magic value ;;; Optional 22-byte ATM Header ;;; -------------------------- @@ -108,7 +110,7 @@ AtmHeader: .byte "TUBE" - .word 0,0,0,0,0,0 + .word 0,0,0,0,0,0 .word StartAddr .word StartAddr .word EndAddr - StartAddr @@ -123,23 +125,23 @@ L0400: L0403: JMP EscapeCopy ; Copy Escape state across Tube L0406: - JMP TubeClaimTransferRelease + JMP TubeClaimTransferRelease L0409: - JMP TubeError - + JMP TubeError + ;;; Start up the Atom Tube system ;;; ---------------------------- TubeStartup: - LDA #$00 ; non zero means transfer language + LDA #$00 ; non zero means transfer language STA LangFlag - LDA #$00 ; B5 tracks escape key, B6 tracks escape state - STA EscapeFlag - LDA #TubeEna ; Enable tube transfers in AtoMMC - STA TubeFlag + LDA #$00 ; B5 tracks escape key, B6 tracks escape state + STA EscapeFlag + LDA #TubeEna ; Enable tube transfers in AtoMMC + STA TubeFlag LDA #12 JSR AtomWRCH ; Clear screen, ready for startup banner - JSR ViaInit ; Initialize 50Hz interrupts + JSR ViaInit ; Initialize 50Hz interrupts LDA #$C0 STA TubeS1 ; Clear all Tube Regs LDA #$40 @@ -162,15 +164,15 @@ Startup2: STA BRKV+1 .if (atommc = 1) - LDA #osloadcode - STA LOADV+1 - LDA #ossavecode - STA SAVEV+1 -.endif + LDA #osloadcode + STA LOADV+1 + LDA #ossavecode + STA SAVEV+1 +.endif LDA #$8E STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 JSR TubeFree ; Set Tube 'free' and no owner @@ -436,12 +438,12 @@ R2CmdHandlers: ;;; ----------- TubeBRK: - LDA #TubeHostError - STA ERRPTR+1 - LDX #$FF ; Error number 255 - + LDA #TubeHostError + STA ERRPTR+1 + LDX #$FF ; Error number 255 + TubeError: LDA #$FF JSR TubeSendR4 @@ -452,14 +454,14 @@ TubeError: LDA #$00 JSR TubeSendR2 ; Send $00 to R2 to specify ERROR TAY - TXA ; Get the error number + TXA ; Get the error number JSR TubeSendR2 ; Send via R2 TubeErrorLp: LDA (ERRPTR),Y JSR TubeSendR2 ; Send via R2 INY - TAX - BNE TubeErrorLp ; Loop until terminating $00 sent + TAX + BNE TubeErrorLp ; Loop until terminating $00 sent ;;; Tube Idle startup ;;; ----------------- @@ -469,17 +471,17 @@ TubeIdleStartup: LDX #$FF TXS CLI - BNE TubeIdleLoop - + BNE TubeIdleLoop + ;;; Tube idle loop ;;; -------------- TubeIdle: .if (debug_r2 = 1) - JSR DebugNewline -.endif + JSR DebugNewline +.endif TubeIdleLoop: - JSR EscapeCheck + JSR EscapeCheck BIT TubeS1 BPL TubeIdle2 ; Nothing in VDU port, jump to check Command port TubeWRCH: @@ -492,10 +494,10 @@ TubeIdle2: BMI TubeWRCH ; Check VDU port again LDX TubeR2 ; Get command .if (debug_r2 = 1) - JSR DebugNewline - TXA - JSR DebugHexOut -.endif + JSR DebugNewline + TXA + JSR DebugHexOut +.endif LDA R2CmdHandlers, X ; Read command handler STA R2Cmd LDA R2CmdHandlers + 1, X @@ -568,94 +570,127 @@ RdLineEsc: bytelo: - JSR TubeWaitR2 - TAX - JSR TubeWaitR2 + JSR TubeWaitR2 + TAX + JSR TubeWaitR2 - CMP #$7E - BEQ osbyte7e - + CMP #$7E + BEQ osbyte7e + LDA #0 JMP TubeSendIdle -osbyte7e: ; OSBYTE 7e = Ack detection of escape condition - JSR EscapeClear - LDA #$ff - JMP TubeSendIdle ; ff = escape condition cleared +osbyte7e: ; OSBYTE 7e = Ack detection of escape condition + JSR EscapeClear + LDA #$ff + JMP TubeSendIdle ; ff = escape condition cleared + bytehi: - LDX #$03 - JSR TubeWaitBlock ; Fetch 3-byte control block - LDA #0 + JSR TubeWaitR2 ; Fetch 3-byte control block X Y A + TAX + JSR TubeWaitR2 + TAY + JSR TubeWaitR2 + + CMP #$98 + BEQ osbyte98 + + LDA #0 ; Return Cy Y X JSR TubeSendR2 JSR TubeSendR2 JMP TubeSendIdle +osbyte98: + LDA #$ff ; Cy = 1 (empty) + JSR TubeSendR2 + TYA ; Y preserved + JSR TubeSendR2 + TXA ; X preserved + JMP TubeSendIdle + word: JSR TubeWaitR2 ; Get A - PHA ; Stack the osword number - JSR TubeWaitR2 ; Get in-length + PHA ; Stack the osword number + JSR TubeWaitR2 ; Get in-length TAX JSR TubeWaitBlock JSR TubeWaitR2 ; Get out-length TAX - PLA ; Restore osword number - CMP #$01 ; Read System Clock - BEQ word01ReadSys - CMP #$02 ; Write System Clock - BEQ word02WriteSys - + PLA ; Restore osword number + CMP #$01 ; Read System Clock + BEQ word01ReadSys + CMP #$02 ; Write System Clock + BEQ word02WriteSys + CMP #$7F + BEQ word7Fdisk ; 8271 command level disk access + CMP #$FF + BEQ wordFFtransfer ; host/parasite data transfer + ;;; Default OSWORD HANDLER wordSendBlock: - JSR TubeSendBlock ; length of block in X + JSR TubeSendBlock ; length of block in X JMP TubeIdle ;;; OSWORD A=1 Read System Clock word01ReadSys: - LDY #4 ; Copy the 5 byte time value -word01ReadSysLoop: ; to the Tube Control block - LDA ViaTime, Y - STA TubeCtrl, Y - DEY - BPL word01ReadSysLoop - BMI wordSendBlock - + LDY #4 ; Copy the 5 byte time value +word01ReadSysLoop: ; to the Tube Control block + LDA ViaTime, Y + STA TubeCtrl, Y + DEY + BPL word01ReadSysLoop + BMI wordSendBlock + ;;; OSWORD A=2 Write System Clock word02WriteSys: - LDY #4 ; Copy the 5 byte time value -word02WriteSysLoop: ; to the Via Time - LDA TubeCtrl, Y - STA ViaTime, Y - DEY - BPL word02WriteSysLoop - BMI wordSendBlock + LDY #4 ; Copy the 5 byte time value +word02WriteSysLoop: ; to the Via Time + LDA TubeCtrl, Y + STA ViaTime, Y + DEY + BPL word02WriteSysLoop + BMI wordSendBlock + +;;; OSWORD A=7F 8271 Command based disk access +word7Fdisk: + JSR osword7f + LDX #$10 + BNE wordSendBlock + +;;; OSWORD A=FF Host/Parasite data transfer +wordFFtransfer: + LDX #TubeCtrl + JSR oswordff + LDX #$01 + BNE wordSendBlock - ;;; OSCLI ;;; ===== clii: JSR ReadString ; Read string to $0100 - LDX #$FF + LDX #$FF cliskip: - INX - LDA $100, X ; Skip leading spaces or stars - CMP #$20 - BEQ cliskip - CMP #$2A - BEQ cliskip - - CMP #$0D ; Test for a zero-length string + INX + LDA $100, X ; Skip leading spaces or stars + CMP #$20 + BEQ cliskip + CMP #$2A + BEQ cliskip + + CMP #$0D ; Test for a zero-length string BEQ TubeSendAck ; Skip it - LDY #0 + LDY #0 clicopy: - LDA $100, X - STA $100, Y - INX - INY - CMP #$0D - BNE clicopy + LDA $100, X + STA $100, Y + INX + INY + CMP #$0D + BNE clicopy JSR OSCLI ; Execute it @@ -772,113 +807,113 @@ args: ;;; R2 ==> block Cy A gbpb: - LDX #$0D ; Block length + LDX #$0D ; Block length JSR TubeWaitBlock - JSR TubeWaitR2 ; Get A - PHA - LDX #$0D ; Block length - JSR TubeSendBlock ; Send block - LDA #$00 - JSR TubeSendR2 ; Send Cy - PLA - JSR TubeSendR2 ; Send A + JSR TubeWaitR2 ; Get A + PHA + LDX #$0D ; Block length + JSR TubeSendBlock ; Send block + LDA #$00 + JSR TubeSendR2 ; Send Cy + PLA + JSR TubeSendR2 ; Send A JMP TubeIdle - + ;;; OSFILE ;;; ------ ;;; OSFILE R2 <== &14 block string &0D A ;;; R2 ==> A block ;;; Block -;;; 0..3 Load Address -;;; 4..7 Exec Address -;;; 8..B Start Address -;;; C..F End Address - +;;; 0..3 Load Address +;;; 4..7 Exec Address +;;; 8..B Start Address +;;; C..F End Address + file: - LDX #$10 ; Block length + LDX #$10 ; Block length JSR TubeWaitBlock - LDX #$00 -fileString: + LDX #$00 +fileString: JSR TubeWaitR2 ; Get String - STA AtomStr, X - INX - CMP #$0D - BNE fileString - JSR TubeWaitR2 ; Get A - CMP #$00 - BEQ filesave - CMP #$FF - BEQ fileload - + STA AtomStr, X + INX + CMP #$0D + BNE fileString + JSR TubeWaitR2 ; Get A + CMP #$00 + BEQ filesave + CMP #$FF + BEQ fileload + fileResponse: - LDA #$01 ; Send object type 01 "File Found" - JSR TubeSendR2 - LDX #$10 ; Block length - JSR TubeSendBlock ; Send block + LDA #$01 ; Send object type 01 "File Found" + JSR TubeSendR2 + LDX #$10 ; Block length + JSR TubeSendBlock ; Send block JMP TubeIdle - ;; Map to OSLOAD - ;; - ;; Entry: 0,X = LSB File name string address - ;; 1,X = MSB File name string address - ;; 2,X = LSB Data dump start address - ;; 3,X = MSB Data dump start address - ;; 4,X : If bit 7 is clear, then the file's own start address is to be used - + ;; Map to OSLOAD + ;; + ;; Entry: 0,X = LSB File name string address + ;; 1,X = MSB File name string address + ;; 2,X = LSB Data dump start address + ;; 3,X = MSB Data dump start address + ;; 4,X : If bit 7 is clear, then the file's own start address is to be used + fileload: - JSR fileinit - LDA #$80 ; use block's load address - LDX TubeCtrl + 4 ; if zero, use block's load address - BEQ fileload1 - LDA #$00 ; use file's load address + JSR fileinit + LDA #$80 ; use block's load address + LDX TubeCtrl + 4 ; if zero, use block's load address + BEQ fileload1 + LDA #$00 ; use file's load address fileload1: - STA AtomCmd + 4 - LDX #AtomCmd - JSR OSLOAD - JMP fileResponse - - ;; Map to OSSAVE - ;; - ;; Entry: 0,X = LSB File name string address - ;; 1,X = MSB File name string address - ;; 2,X = LSB Data Reload address - ;; 3,X = MSB Data Reload address - ;; 4,X = LSB Data Execution address - ;; 5,X = MSB Data Execution address - ;; 6,X = LSB Data start address - ;; 7,X = MSB Data start address - ;; 8,X = LSB Data end address + 1 - ;; 9,X = MSB Data end address + 1 - + STA AtomCmd + 4 + LDX #AtomCmd + JSR OSLOAD + JMP fileResponse + + ;; Map to OSSAVE + ;; + ;; Entry: 0,X = LSB File name string address + ;; 1,X = MSB File name string address + ;; 2,X = LSB Data Reload address + ;; 3,X = MSB Data Reload address + ;; 4,X = LSB Data Execution address + ;; 5,X = MSB Data Execution address + ;; 6,X = LSB Data start address + ;; 7,X = MSB Data start address + ;; 8,X = LSB Data end address + 1 + ;; 9,X = MSB Data end address + 1 + filesave: - JSR fileinit - LDX #AtomCmd - JSR OSSAVE - JMP fileResponse - + JSR fileinit + LDX #AtomCmd + JSR OSSAVE + JMP fileResponse + fileinit: - LDA #AtomStr - STA AtomCmd + 1 - LDX #$00 - LDY #$02 + LDA #AtomStr + STA AtomCmd + 1 + LDX #$00 + LDY #$02 fileinitlp: - LDA TubeCtrl, X ; Copy bits 0..7 of address - STA AtomCmd, Y - INX - INY - LDA TubeCtrl, X ; Copy bits 8..15 of address - STA AtomCmd, Y - INX - INY - INX ; Skip bits 16..23 of address - INX ; Skip bits 24..31 of address - CPX #$10 - BNE fileinitlp - RTS + LDA TubeCtrl, X ; Copy bits 0..7 of address + STA AtomCmd, Y + INX + INY + LDA TubeCtrl, X ; Copy bits 8..15 of address + STA AtomCmd, Y + INX + INY + INX ; Skip bits 16..23 of address + INX ; Skip bits 24..31 of address + CPX #$10 + BNE fileinitlp + RTS ;;; TUBE COMMAND TRANSFERS ;;; ********************** @@ -902,8 +937,8 @@ ReadStrFull: ;;; Get control block to TubeCtrl, X ;;; -------------------------------- TubeWaitBlock: - DEX - BMI TubeWaitBlockExit + DEX + BMI TubeWaitBlockExit JSR TubeWaitR2 STA TubeCtrl, X JMP TubeWaitBlock @@ -931,8 +966,8 @@ TubeWaitR2: ;;; Send control block from TubeCtrl, X ;;; ----------------------------------- TubeSendBlock: - DEX - BMI TubeSendBlockExit + DEX + BMI TubeSendBlockExit LDA TubeCtrl, X JSR TubeSendR2 JMP TubeSendBlock @@ -977,47 +1012,47 @@ TubeSendR4: ;;; ----------------------------- EscapeSet: - LDA EscapeFlag - ORA #$40 - BNE EscapeUpdate - + LDA EscapeFlag + ORA #$40 + BNE EscapeUpdate + EscapeClear: - LDA EscapeFlag - AND #$BF - + LDA EscapeFlag + AND #$BF + EscapeUpdate: - STA EscapeFlag + STA EscapeFlag EscapeCopy: - LDA EscapeFlag - AND #$40 ; Bit 6 is the escape state - ORA #$80 ; Bit 7 must be set - JMP TubeSendR1 + LDA EscapeFlag + AND #$40 ; Bit 6 is the escape state + ORA #$80 ; Bit 7 must be set + JMP TubeSendR1 EscapeCheck: - LDA $B001 ; Read keyboard hardware - EOR EscapeFlag + LDA $B001 ; Read keyboard hardware + EOR EscapeFlag AND #$20 - BNE EscapeReturn ; No Change + BNE EscapeReturn ; No Change - LDA EscapeFlag ; Update the escape key state in B5 - EOR #$20 - STA EscapeFlag + LDA EscapeFlag ; Update the escape key state in B5 + EOR #$20 + STA EscapeFlag - SEC - AND #$20 ; Is the change the key being pressed? - BNE EscapeSet ; If so, set the escape condition - + SEC + AND #$20 ; Is the change the key being pressed? + BNE EscapeSet ; If so, set the escape condition + EscapeReturn: - CLC - RTS - + CLC + RTS + TubeHostError: .byte "HOST ERROR" - BRK - + BRK + ;;; *************************** ;;; INTERFACE TO ATOM MOS CALLS ;;; *************************** @@ -1025,16 +1060,16 @@ TubeHostError: ;;; Interface to Atom OSRDCH ;;; ------------------------ AtomRDCH: - LDA EscapeFlag - AND #$DF - STA EscapeFlag - JSR OSRDCH + LDA EscapeFlag + AND #$DF + STA EscapeFlag + JSR OSRDCH PHA - JSR EscapeCheck + JSR EscapeCheck PLA RTS -;;; Interface to Atom OSRDCH +;;; Interface to Atom OSWRCH ;;; ------------------------ AtomWRCH: CMP #$60 @@ -1045,73 +1080,75 @@ AtomWRCH1: ViaInit: - LDA #ViaISR - STA IRQ1V+1 - LDA #$00 ; Clear the timer - STA ViaTime - STA ViaTime + 1 - STA ViaTime + 2 - STA ViaTime + 3 - STA ViaTime + 4 - LDA #<9999 ; 10ms timer interrupts - STA ViaT1CounterL - LDA #>9999 - STA ViaT1CounterH - LDA #$40 ; Enable T1 continuous interrupts - STA ViaACR ; Disable everything else - LDA #$7F ; Disable all interrupts - STA ViaIER - LDA #$C0 ; Enable T1 interrupts - STA ViaIER - RTS + LDA #ViaISR + STA IRQ1V+1 + LDA #$00 ; Clear the timer + STA ViaTime + STA ViaTime + 1 + STA ViaTime + 2 + STA ViaTime + 3 + STA ViaTime + 4 + LDA #<9999 ; 10ms timer interrupts + STA ViaT1CounterL + LDA #>9999 + STA ViaT1CounterH + LDA #$40 ; Enable T1 continuous interrupts + STA ViaACR ; Disable everything else + LDA #$7F ; Disable all interrupts + STA ViaIER + LDA #$C0 ; Enable T1 interrupts + STA ViaIER + RTS ViaISR: - LDA ViaT1CounterL ; Clear the interrupts flag - INC ViaTime - BNE ViaExit - INC ViaTime + 1 - BNE ViaExit - INC ViaTime + 2 - BNE ViaExit - INC ViaTime + 3 - BNE ViaExit - INC ViaTime + 4 + LDA ViaT1CounterL ; Clear the interrupts flag + INC ViaTime + BNE ViaExit + INC ViaTime + 1 + BNE ViaExit + INC ViaTime + 2 + BNE ViaExit + INC ViaTime + 3 + BNE ViaExit + INC ViaTime + 4 ViaExit: - PLA ; the Atom stacks A for us - RTI + PLA ; the Atom stacks A for us + RTI ViaTime: - .byte 0,0,0,0,0 - + .byte 0,0,0,0,0 + ;;; Debugging output, avoid trashing A ;;; DebugNewline: - PHP + PHP PHA JSR OSNEWL PLA - PLP + PLP RTS DebugHexOut: - PHP + PHP PHA JSR HEXOUT PLA - PLP + PLP RTS .if (atommc = 1) -.include "macros.asm" .include "tube.asm" .include "file.asm" -.include "load.asm" +.include "load.asm" .include "save.asm" -.include "util.asm" .endif + +.include "util.asm" +.include "osword7f.asm" +.include "oswordff.asm" EndAddr: diff --git a/host/atom/COLOSS b/host/atom/COLOSS new file mode 100644 index 0000000000000000000000000000000000000000..31f721a975f7c35a8437c0974a4fd3e45912f390 GIT binary patch literal 28213 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 H+x-6roSEvJ literal 0 HcmV?d00001 diff --git a/host/atom/CPM1.dsd b/host/atom/CPM1.dsd new file mode 100644 index 0000000000000000000000000000000000000000..cee625f7340d60ff3175ebd1689ecaebc2a8259f GIT binary patch literal 409600 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
  • =YD3*;3F2+3C{pes)Yc}B7A2_GEl6>wj| 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 literal 0 HcmV?d00001 diff --git a/host/atom/HIBASIC b/host/atom/HIBASIC new file mode 100644 index 0000000000000000000000000000000000000000..dcc8e8ea5598a6dfcf57acab7310639b38374715 GIT binary patch literal 16406 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 F{|7r=GnW7W literal 0 HcmV?d00001 diff --git a/host/atom/INFOCOM.dsd b/host/atom/INFOCOM.dsd new file mode 100644 index 0000000000000000000000000000000000000000..8cf64d7b01058fcbf6223669d131fe39a165f016 GIT binary patch literal 409600 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

    p5UuaE;(sj&ivS3d zxCj>NCtwi(1%|htvQG-Om@;AGZdYRnonpmCgn!G`JPPW6!tBt0^C^1|+;g$(a3`0f zxVf1Yw0i<}_6ZP1$If1b5m@vDBg_eGX9r=@X;@e?wz&G>m4R9H{@qkMytWha250UwIQ-^DMI>{9 zvgjuZjNwn_W8+cif^SCZtp?>Ummh@5Q_DTqYOb#^7ik|;9*BcBu+?qDesZzv0Ig~C zf?jOZS84MU%dgzFywIoo&;gx#*5P8_f7*gdBdn_`z7^V&x#%uMSYqEi6+UgCQlF`( zZy!ZS2G%c}#_x(0fWAjqOgc1EtO5Pm+`#?BIJkq`OvATvXknl5_}1i@$F~YkY>kb1 zVr%j!dqWZ=^4M0`uj!dK$$5PeQipIFCMLx`*XiV(I2D8wPXl$Y9a~8=>H^v5W~@vH z)FQ`%+34Lh$%iw9-V+NaL*0*`FeaJ^Wl21lPXa!OYR0>{jq!^1| z(q2Sk6pRUj(_F@{c^<$R_hwFJsj1KrDFpD>jgx(32_TpN9<^Dl#ThwyblD!rOY+LA z?R|an?P|I_)cf{iI6c9|k1mC{IGvMq{gYV^)@0pv>4BQ8`&@i*elpql5Gtv*Z3u*o zu|O`+*t+33eXQ$`$pAeW#_L=at5X9qSQf`rm05!OVu6Yh z9>Ja-k98GJasE8kwL8j_Yy^mljZrnazMd~JhN9r24?K4@Rs;br#|jA5mBfj9ht6-M z@S9?Ir4;U(xxkgQ0EGB$tn1zsR((%SoDfN^j*Me+mU|jS7LyHyFqUHC<6NZ)Vxom& zqDOrb(Ri`p@{W;qS$tzHJ|PGUm&7PNILWx2d3uIMw$l>Q*`dmW+W% z6{L$fY8eDmwLx?db)xCclbG~^>7NJlMMlaCnMD^2q={>lOe}gIM#!4BF&5!lTd)>| zE0_&2EPgE`&5xpq=Fu|TP~j3deKHz^(ysMEq!(y`NaG^!&DP!y?Jd$eZCVd3-LCaC z5gFjn7JJJIZ;%tQ4{OD>`=P;JL+PnTO&(6?VSCIKYrrAs$61c$S zi!-#g_U4V+=Cu;Sv1T*Nw|uE5wRO!JhI(KZ@RA@TM>7@Ydj6#)d0eF~Q+2LKrlWgC zB|cKG&gl3N#OY)l#zvyHf!RckMCMFO`Rn;KQ;@eCc10{07RC``j(wa6&KB=k^bDNG z;+L>PY~Z5Q8^-ph@xml5Bsx)IfFkWU(h(C#9hM4kPDD4a%?CBJ6-H0r%^wz`7&t%B z9ZxAfh^M0!tSSl6^`=DoyoeTAkOeq@+mIK>3+aj}kN~LK-75C_zGj&2-qXZEqpjqM!I~VJOL{G5b8?4)_ zV;~v&4l}1abVMT}G0nRTiD|!lL^q?`*m1fEYApyE!KI;@eZH~&Ovbg zngJu2qBT=UKCWv6ZiZtVJwx*7{mh1*)-(Go@O&}|T8xm#Lx^7tf^~O9GlA3^7VG07 zMAE(<8>0(}kq)m$`}^3i8Hn9lZKHLgb%hm6lop{jadAec6xvf7 zqgyMMfoG=nE$rNb*Z=Am-F8peK88OfI|XD2R5JSM>8xZ%*<;B-Owr7&xF$*i(P&#^ z1CS`1YLpHPpfs-gbAU)-BTy=%0iq~ILA01fGZkLixQjU%&9(e6b26HNVO)r?Ipbz_ z7kKmTyj{h7&^6fVV_Hhm=efuaT_S!+{%4&};1i23I06@s3fkQ85o3?WS|9agr}D2} zBGw1lJ1s-RGmW(>;u1OnAE|%{7|ayKD!-|@C%pq-!Tb4B>v{Fw#t3Fwn{)UZ*T)7` zM@76gy5f%L4|;u(>;2)Q_);3E8etd z<9cdGQ!O}p;DOZ*#e}Fxz6_p=I1#v6k>i+Y`j7Y%2cA3u-uCbTD8K@P#Th@4(FY8H zp~|k{(C9It%An8*WJD{r{GuVU4BD0lLLFRJ)6K;3tLK2>)!y5maF8EwN~jF1Pf$H9 zY~)p|RZGHz1lyG&b%uRx^{lGIh_;U8mZCXNX9XToW)CggGzqe8_+s2Ya7FZ|du+g+ zq~?<56i&Wjtm^1GKChG8FC57j8u!iQXJuzhbL8b*VYpvLAU7Q-lr}W-o?nGjr=4g0 z8f;^h?n&O#ay-!iCmVjGL#6)I@7Sl%qbh)GQLf%kbA0^S6Yvs~2Qie_4j-R+_5{MY zUB;*6+*Zdp{fu|(@0oRNN%&li&|0v&T^2M2FrrQowERGU79dU)2mAe#N)z2_{G^s- zogyxAc~n{sgeyrCT3HoyBj@WRodVd1$kPWr!ab<8&VkWBIb`jc9tQvamwbk-knkmR zuO!`H$1lzw&tPL-OL7$u9pxTzge=-pmX*^28(4}zlw|VTS8|mlS-I2zRp6K_usT1^ zBE*&e>r8>m#oYMP>@I+7;b2B@#BfbJlK~(^Y*Q_oR1y_2msiA*l{1Adtt??rOS` z(ejFtrgz8Ok~oF1CZk387HEM^-p`$YSxR^Y&ViELPA&k>2(rj?r{A3NzHBaNBTVkc z!9ZN#nyZ!@Hpb*{$sZbPjdd@h)O7c0FNlf<{?QSCoOkeUYsu88$Wyh~0nr_SfUJ(& z8JQ5P*D4}6&-v9j{Ys%mQSnXcjf)P-GZbxI6u_iv7#dV?F;SQPEDvIT1v;6Xq!~}A z1rIEP8{^90fM~Ua>n!ZBnZoQLvn_8CA`F?vR(*g5LV|f}3l9<37a_iA`KZ$qk3cDh z=rjRXW!l`C+&oVcS zl5rMu(Ht%bvZI2{fcfiB4hJe(5_QCOe=gH6)YlKWsvG%QZr9~Qx@qjahxOP~n5Qh+C*4rNn*Fgq#I)|N+H z<5h6c@vbBvhmqK}h@Xv?@u}E%xQ|EmPF>6g`^jm~l{@4K#wy;eh-~H|3FW>CD%nIq`KQ7!4xwd}`C)@c@ zbtE8s?%COvdjgUtSegl@41d?pn%HH2LeNf#pZfenTcbKLJnFjQeB+){ZLaD6X7AnO zn!3{U@x7CsKmv(`Yc52xAz-p2sEAyGB2l@@MG_HgK|z8_@P^U~YFj&PZEIVnR;?Co zi!;^fIHRq>)>?ZyNNmSgGgF`{V5diCMrVq1dfKU;X?teu_gQNPFLSUi)2Z<$c!kzHg;T-nbZh5wc11u4uPZeoBJnCJ!a-jg{M@*S3ky1SLjOw zDrTcgkJTrZRh zW*vGsC2DCs$fF44lFjrxSFpnkvZYZi5e2nzCfV=4IdI!3z~ddCR-rE6+}01Tf@$Sx zCb+YOOV@*Z?X>fl>J2&S@?jF~Cd6yL*b92+DYt9cPNqCz;nE!qJV@Fmr$>@vBrCxQ zjWm2~`L^=Xx)Y398(v>p2HN+WUkV^i#+j!L^M~z9@|Gxr+{#=*i6}{>M0`IJXtV5Fb!u z7}#}qMWSf|p{74k>lX2uwNZi=HT?Xp8qVEYT;JX({#W-VoxS)EYe)=rgV-`ISi>h# zM9twpxvPe;*5N_qW3A$^2Q!dF0v{0GBI9arT-#3Kmo&l;KN0}lU|W73NR80R=_k2J zyzL|C#RH8iKrbK!GlF}qUTSJ?Y!X>!gn zpryH;aWc-9Wy|qRK2h@8WgsrBZ*jLTAB(j?*#qlv2kZuEg z_i`zM(F)KP_STAMNS_kmqeU0^B|Lx;`Qd*Ibbx|5z8~C4B^j^sXT~n|^WWic z)p%mnxnIZsJ5E3a%nJeC56z-)iGYpdQD}#v+wY1!13=SMId`T>>|K(HL@HUmrlolu zc{~5;4vd&o)4JA{HEZbmg<_YcB#226^o|}=-m~=gDDR08ZeM|3h=z_Q!fi;v2nuTY z_vw+E80q#c*OOs2mL<}SAs}Wsdqn>qfV?AmbPBwG0mvgg2RK~|kYlEVlFja@${X|n z9vA>cEI-y$#BvMRiZ4;Lj{*yWdh}V4yQ={h2uLQ;Ky`PKT^9J)^uQ0|1?q%NZxE#J zhgPp4l1xH_teZfdew0ENXoQ{u5Y%_t+cEUGiuh3j-a&u~5(Sh5y&zc7hPZ*o$wZzmi0(blhLC=iT@6IV(byzmvA#30K$n0~=wbuC ziNK%u5IU_ZJ?4?l|aeGrTBDPrZn zh{g3_neWB=4wF;Z^83)@f6?E;6N?*H(9uE>1|r%R2e$!4Oee~FG92&I8%Pk9z!hUZ z*%QH;8Bjci;25*^lwa)K^=kn_kmAIUB_a~yZduoATKd3>6(SaK8-N{yaA~yI)>fgl z6^7L74Cu&Ua1p)+G+HWM=*pF?cog(0g>=QduZnqv)vefe5ux7Tz@$a}f?W3H#^ZWY z;_6mmCHPV+$9Pof@dWmHBti@f+tzv&Mcxw__6|ORR;l7KB*fCt?X)rY(lB2V+izPu zNz=5o>N55CyiV$(O+wwbA^#7=COhN#h4I*qsR3{6lpnYdZD}(}!l)sCv>g`ZZ{D>BcIWQk zhSyhU3wG-8npq=h5B9=>0&*KOhJbv)AEc82&G9_D=xU(MfKd`RFeeU`ErQEltvIbC z1HilxEtwGJY7v_&+$~CKU0g$pZ*iQU!VEZmcE32^ydOvAo8x`&2TQTQy@J^0RP9xs zo(Tzqscis zI;&AqxQ z7?!6A-0>j0aBO`YTRQHV-an(fzNfY1Hxm6}bbB&4Tqn>u%p_pMfKk8jP8PHuL8ai7 zAeJr$7)e3&RH6%(e0vtS^7nTIOT1l+ujk$zHXA9K3^w}QDxJ>+{GzMn@Lc>ZrMgqT zW0=c_=Je5+?)GLlT;LGB1NukzJf>3Ao|wh=S3L5C308GskCLCYUd9}@WMO^vMXO1% z((+EBNjaF(!Qv0 z4gvxaC5y3*AJsD{`^r)x2F>iE9hP?*;w)#Tl`tlug|U*Tq^bG(hu3_@olaQDY>U&( zkrdyjnyttnKi*HCq>VM!x}}ySDVu}3k|dizOc#G@!eid0!aapBilzlON`@@b6;P+P zAEHmhKp}SGM|v^33yz|8z&}t3qn2J$OD+-jJk7m9e{}O0RTcBIDqtW|64C)41+NfO zyj@ke_YCdtqbD8nSf)lbk9ZKrZ~dUIx!hS@uuveKw8!e;vSbd){NySom6K&AFgIK} z;VS7QV#TdJp*dDvWdo1VExn)UrqX1DI7$Da6fuY$^CZk8v{*A+oCUK~b|Ufmc5QL* znjvPMHl}Vc-y40Ik*#?T45UQZf{wH>Yr9&YkuBM5c*bLrN#~oQZ7>~D$cxbAcsPp_be%eF%Nbypy$eQD zYqVck5+`;Xt-bCl$$)v%igH=bSPtOu-;vAi2txC4Zh(2;2AX( z*PZELBaiAm?)R1yHXbQ|l$*pwx^z<40>L1!G}WDfwW3M0WzKIp0NUAl*LD?5g&VJ> z%eI02laqO)4J|z*b+{o+Us3R3owEE!$1e-=t*usF1Fz4X zrxK<$gtn@(D>!ZDQ~A+9KXBMiZ1P6@8@$|4Y&yxc@{CeX6EnpnTwA&u%J0Ah;c$8n zcUu22d(0hf0NbVDLW>{vX5r4KrO}>0!jyJofcY5j5zrnxnD|2VLVymv3vNs(wlUiH z904V6g<+Z}brp{dORlS8wBW<>0()f2fpr4kT?}hJ!7GYYIFAwaT-c-Iwp8+5Qe!E{ z3&f1wR9?rtkpD)UmOG8OsqobgY&BJIXm_@nWZ6rf%GcSaFt6&rEFR)cFWJ5L194#FT}JXTgp5 zU&8b^A_s=_#Be!0b;%2OG-Z(zKJf`w(-UV(|E~Be8-sU>d1&x8ab{wHXcC56;;s&$ zk%y<l1PG|13dFuG)gB4oF7R8yKiqlHI zYd&hzN(vV#K~hrWu4??GjFUyqRK(Ji%{d%>DjE_p?Oeut&BYm!I+Y#F zY=V}Jjk>tg4NqxgO-%7c$3lQcX)A}aD-a!;0u?0ElAD!2Htsp0fs3=X7cI=LAdcA1 z{K7FZ!lq!m!2WGVqK(tsQPY5#k(p{cSbEgLXAsU} zZ&OC`nG87s44akD8CHQnsa^VlPQ{#=mLK-0R9=$bJYeC+rLe~e^4o?p+?>Kymbt-A z?`7djqNq5Zjkspkv_weNbF18N>aZk_%c#>@D^Lwf~S)|Dxix2ha>CkMY1ST8e$r1voA zbc28nb<zIypk&P0&9dXi0HL=6>&!5v zZ7(F`I@i)$yRmpXM%cxq3PBs6xxJ{j-l_i*i%ZO+r(1Ne?9Cu3+sKJyJ@C&sBA30h z)EkKnivDKD$cak%iFZGOh5X8Qv8xgG;}OISK};1AUc@o7U}KNwBPL09DwPZ+Q*a>V zWB@vz+#s(NzHrq_Rr*8R>BJpPRc^VYH2DlW*d*x4?!?G!W**p!Xi&_YL7RyzVNEp? zu`mhqo2GQc8-%(P>@xIDyyU9M6{ImPliV%ZnrHX3Lh>05>NCP<>5db%hbQ)E){`je zj*%?4mmCtwopW(Yty`mSDIRKoLk41ajV_)|Tm30hL8h-?F4^8H6!lhYZYs{u&Oc+r z#^7G2>r=dz@EJO(1W z=vGJc$F)L160Q;;P}H`3uPgZeFjCWa{z?RW+%Y|)&oYkx{k=(N=Zq6!zU*=Q7q~>w0VuGs?!;)f4<#ry_m7ZVzyORwsC-gQzya>e+J<~TcLVVzv|4GL6$ViY)fY4IX5R@W@ z-5?!7o%C^61G_Y$1fwCMWm_l#2Ie$B`1c^O2xvm}E@R4?m$uW7e~bxN6ocVe4D)5^ z?>GW-JqD6e2z$ABg`me3<+xr>@#S?mGKsQ4@n2L0TeP*nN+*J9)09SdWPpj+0R*=z z73BrxmGev@NmlT2 zOw;kvw0Z?HwBwjS-?#+fZdt{A5IB;+fBroYxC9m1EMU?lZXW0kC+-{Iz3EA!lz_|# zC8QD|%|w%%fIi_g(RO#@h%5ZR#wEHxoX^FLkRsw}jZXw%aXXMY8Xz)*5;5Vheb0sq zNx&|G)_*?_Czr_|O}#245?q5{DHcW~34}2OJHDqtLVqMoD;`%sOuefrJiO9Px=u43?mSRInFsL@H$A98Vf%xCLuBLQ?oEyg7qYnko8znf z4t`GG)_e?Bj|D^f<-ge@Gn?j#! zfX`m#C3kHKX>m;F{@}(|WF)V@H|cCrB%l!@HYQvk^Az^O%Kk3T%E*7z3Us?TcX%Qx zTvdg;$y7l~^88&%k42KyHTS0W{WOwadvDU&qmhtUiJRo^xc5@u#Yld`y-8=I{^8yk zU6dgWw3S5u76)mW5OC2u1oae=XmkU`Y+Ai)Y0I)S5a5_b`&}m{Q}E?dsEllP{THZm zcX)GTTWX9wj{UY|H=Hzx;d@puTidvDEJF1$cP=ous>7rf5fQ4+oOCxpsD}=F>HSA-z|Yl)c;H_%f~V_?olc>}Y8rp7Jh`3A+sXV;-?<0Bv5zp1dn3*y?k4x8 z!MTx{k1R~T)_h1CZ(ziq@-lhxP-6)&m(gS(JZ*(Vsmv`&VdY$%&htfJbC(k~fw8!8 z0t475Qs{)@3nNIWl6c_}dG!x7Lrb2@9=4hmY$MdB%pESc$s(Fw=~MZv zG^4GGvFh7Fn&Z_+CQ3{$^#k@b@cm}Dgca@+zF{hIL1_c#pqR%t*p|FtxiO(v$Ob&9 zb8Vf&nvzsMaBZnHH6JQwQ!^M_cvb^Ja`~JFZkh8haQ8=ZnZbY%u5d|_bC&OkGSx5i ze9aUa=R(p1qI|2~bAI)j7x*C;!u;CHy(S1rS=5QUI}5E~b7!e~UT405qNKisbuYxXGGpA`fp=C&`GV-AL!d%qnjb zkWWCs(-ysC9pthR+jR&LOTc!kF05S0@iXL$zOb4Sdc!-2X3iqA(6o=?Lhkf}8_kZ= zj3%Zk)bq`wg8*I|*oY*>AFQyxPQNkb6{!os!&&v{f)qYqp)M^={;;{~8zMoq{md?J zMDMcmWM@L^s;|oa|v}+Zb4tc^*aX*(mkCp6d{-mrQ zB&&CuYk=HPz`)X*zSB(PlTF>pwtwoyvZI!jmGr1l_X_Z%gQl8&-EKbW} z?3XNL20K{u%G99@$xNZp6iy+K#l(R30N`?>Kd@AX2BPYCCn}9s>K8Yg2M?KzrjKnu??``=T1+9 zcoS1;eRV;;4B}3l5HiKNvUW*Qs(noZ%M%>u2PHsmOcRx}IdAmufijH(zw4@#PF_p= zLI^FEi@=jUVv5%cmA&KEF4$HCS(4vClw`PKY?qh>y2Y@{DO3W5(tn-XzNo7qw7zf| z0d|9%4H1{B{9MYaZD!ukPQrFLMs~9jh*0yfMO{;lcIYdPT88wUl2UyKV_kY}Wfi)e ztsY#pePyjw(0_pibLsqxZnkuXB?c1+8>P`ZfxIOFKi5@l#gxhx)2UDUe&jQ3wC5WO zul%JgN4VU4u#A;#Pp*-aHXk$dYwFpwh9N-Ff|)uEP(4PbtCC^BrmfY-%JT~b!CKt1 z=!=#4oXNAqWKF86cO~^IPD$oF(JGD`Z?A99F*OY}J2^hWRQzk_<-{BF0rt)rDbMQA zdfqBH+dvR4o_li6(6U-)o91*jdJ|)KkZd#*lnE_#>S6hI&*kc~d@W;5v!^x`oRx;+ zmjh_Y;bLDM3~8{O$p~{|F@`h6_wFxTEYzWv#?lnBPNqn+togEo#s7?}$DM~3!|I09XjXN%m$7#o@2J-hr^Tl71-j~-N8nfqMpkYXxej5 zfuzCJ!ieuIJoha?2n}bK55OK5>iG+%wdr&=TMajf5xpgY=J&=wo1O+jyP7P>*l>xn z40}eo({LoPx`&%S%_TXiQ<}*uey2f+)ug|0Uqdu}$Ws5192^-luGdj3*BL9gk zr2dwWH}mWanLhBeY$R8|#&%9-;QCRcVm`Q($EH$Pewr6)O;$!<+L`-*CRuobQCpS0MBKRpyJA`{qi0^-^C8H~CH9H{pTw zae=o~zAM065#%C_v?AE6Y^82lRKi6X~C^mvFKe~Dw{G58-k*}Lgo|Md;;^=|wp|MgAp z_C9nHUx)tuCw9Z}FSF?3*X$;8xZ!5tKFM|ZXO(<){L4*~mOV6Sb&{W9HobM`{8dDB z=tuaXU~0e4|3-R~Ja`Av?M?E8kH>C7dE(7TosMkqzTbvO%hYhOm4k^+zk9iGICrZJ-=a6&BjTKqjddm zY)Gitn6UV(8E0;G##MI275NTI?rO_*G}Kov+4SxZebjj4nKw2iEPE(nweOnbI?k-V z8^MS8Z!6gUT^{TM{#PO!?=&_T0NVsEh9P7Pn*@Rw_QQhPS(zdab>N#&J`#Iu$i`;` zzZVC;p9y}yjc)=@V|$F0lH?D{6!GbrLpGQEz`1-XDIiYrsidFb^ixegBgm&_uAJom zK(2l`lB^33DP=k4B(}*hqiD|kMfa^w$_j1rZ~a#io8^2{C=9pR#Km&{kJ7|OIsfUx z#M$z^OX&;cd4uV7@;ra~{qpoh@<1N@M*2#5`YL%|0#=VaY5E#D&zwulmBSxx;!HVQ z&L+-43YX}RtHUr)A7{?`rD_&O{ANb;+mOPfj^llwN-^wxc1~>Cr_whf`QL^hiER#j zBi${3I0>uC*V5x>?cA-zJ_Uy)pOUjZB#~~CNTVK3A{Ra=vb*KSJ5HTVBY89&xzDy9 zH{#fq$t3x{mY$a@_~8&7%lh&;Jlu6mbcApX4)G$+V0$Cd=frI-@^rggXqJD@Ur9=w z%dWOTwguNo}%2zW8L74L?*nm<>E5K#jy;Uq`;SimE9Y))49wtz?t=y zs$+9_?r|vI73c87c^9+eo*ek?EN@M9UX~@h_Y@42)PRmdc`g(8S{Sr@l z+7$SCG7spsHn1f}nn31&BIzZ8HVX(|*A^UtBGaon=d{9+5rP*3EvWi& zWe?&;OzBYR|6EW@;F_lk4_BUivvfqlz(Dv=^04!AeeHrBjQ|bhp31D8TIxkFYg!?o zMoHPI&=CG;n!Q{F%g<03(PHyJV3AA|Y;Re0RugnUt#b#LxMmt)Hxs;!z|2#B#H_DQ zX|Cl?dphA6;!qhM8UqRu?`eaT;RM28$*z#qSV;H-u*Zw)Q&f&t$44j!t^LGVHxwTzwn ztA5HDiHK{ow@cwaQQqOXSwCcv%rS|fAgshrSxq94K09=I=Gy6qe&S^&WWE4*_b&Qu zQ#usF`~uR+1Wb;H)$LM=XHCe4gG~s=Ap3@3IYqtp)gAy%#UNeswG9YPl09L~XCPXs zTrs&Rr-|j&V&lyKBR%U8M8(1{y(P6TT1Bdrz}6V%$ySxA3jmnr8 zqBC*pfJ27CW1757zT`+@0t-H(9^FYuU}BXD&y^#G zdb_)up$lGtvHKKwo$7j+KLi*2GqW~>M-qbXoebrT!KMxNjafHf*}3b|w60m`?-}`` zH+fbHE8d@2vz#vwe1xzy<8wePD>s%b+F8tI^iBlYZn{{#kTE;0(k+G4^oQyQGy|Sy z#TVWs%x1^ zj%qhBV0#N#!9bbv;KDv^3k*NuQpHGM~0jnx!6VgsPskfLd?lS|S_ zBo_%toDDo>=}@)#buWHd;l)i2Mml0)oG1oPZDjxMCDI_>K?_rIkFyn4!G)%h{LFof zEoHMz_wfP37#b#wA%>J1^~rK@purj1>Xt@WAD6+JnS?M6Uge5G9p<%p%E#mgZt=~5 z!)y;`KeO_D{Uw7C%oEZ#uQ%+R^J#$ih`YjDhhIEEOJ?fy4fg6qPg2$z+>DV46uemz zY_FTU7wiMqs@V*qze>~v?*efbh52L>123qDwqW;F`plEx+x-Ly{5s6G7Z;GZN9$Uc z0g558A;1od^0l}DFZWX?NT}gg5qMVh>(`EUcmD+so~va{)MH^thnx`CFjosggMIn5 zTJBWbW2zfXQvfWjH>3)e7ncYi8lOC>JSeZjjd~?RMr*6Aky*W9H*raJ5~DHB%hj~1 zm{v~f{?%eeUQJ~1Wi(H1T^h% z3j8IExi)ZIibPzbq{J^^ruhUOgW-QNEY4^9Z_j7@F`wZLIaroihYB_zZ1IDI!~6d{ zW)a>3iAWy>bFWy=GNZ3~ySvYOnPh7#g2wch?r}%hr!+_(_kv0W6YXVHj^S5nbec^+ zLUfu}N#X>O_}ZPs*I?xOQ@BbHBkQpFj!To7^6u`bAl-`Bdx;XFkQQwAF*aL{mbn2+m<{+OiQ&Z*y}B3IGvZs%IWf>yGFN zb*#fq1YyO8B(}5DdsFMA(TG%{(ziHj_#@U1E`_<_WVp`Et|=#&#yEu}qlxEw6EP3N zccs14x*M?dMK?Bw?uy?Wl*Pzn_D(=fwUNhNTH(s$kVr3cBH}wYn^<^G*1i9nR~b?9 z)TxqZ8I^a<;4-krE1rTatz;2Kl(JP9=fFMKoqjD;*LG9n>jNFz!1gw#?5 z^y%Ke`Dx;l^zp;_UIc{S3jQ{B(Yk)tL-5B%dD1l4HT10&3_7Ma%at-}9*@;Ix`5Yi zDT?O!@JSgXm4X?&qEbNQCeSbyr_2+A+&)2n%uNC(X)}hKF+0(XQAMi`vweoFuqc`_ z6(gOohBq2Du2dVEhJ_+NCZ!%L@2=e?BzTVo#_fZmcH-tw}GV#fLr=$IRma)wqVN4i^ zixIMn<$)I>{PrxPpIxojn2mvd(T&(*0(&Fiay#_b(D5kv84V8`lSZ6ooIeToOxK9%$B}hzt4) z?5j7CenCYK!i|$o74JV)d~}jOAdO8JsEQ@`g!kpg^1Lxq6>!pTB}ruZ=EnMdD?yUa z9P1Z2V+zB*8n3{m^>)rUJ)JY&a*wQvMI-#Y-MG%yMxHs>$mgLG?0LpXnp`9L`X<`? zDymEv_(QCaYfM6~Ad@}Em_EZO%m|iwRj|;<=-0o9R-&|<_8CTUn2vJj&A*RD%5-v% zg_hwv80*^{i)s=EzKKPeP3&zXK;tuJ{*MMf|M%gqG68cegfv}h^b1nsbu|-M9Xlyu zAU@7_QR1f~sx#uIeW!kU`cD0fN;$)?(<@FDxA}$0`0GMMybgXcbsB%*cqAW=v1vCM z!E0-dgI<~#8IK{CIMe8Bg;OGOAj~w{#M#4Pyr86mY`NhA^WpcR)c-Ip@ULNFP7Q>7 zCY^bPjov;RV{o>yZ>E;cbu5|dNcF)9 z@_8-WrWdEDk*&1M=TJhluMOGh>@plfzLkMt%$4KNvGh$eMx@U%(xVq5Fk{*07$@-& z#83o2R{9ytjQ^QUBR>K7r2bdpj+Cz*N81dN87aH6CcL@B??g60? zi{^Q4!a%l;3_o)ASEZ(#RV#oq1-@2R20A0s3yrvDFEqkG?KGWFFU@29d5j<8bzyRP zv9U5wvHjIa1g3|G2Xb{-|8*F3*lD>+zD_Bw3dLByPASOc54FB|I=?0&p2f+(=mz%a z=on-p;x#nkx(!rm-%n{OgFMKIY-H?E;2fZt_4;n>_2;&)-n3^~)PPT?Fnl$m@2Jj? zt%vJYRbN0n+H{=4-KxHeIzLdcjk{KF*tg8z(om69sNcRiO222BAF!K#7Y>n5a=f^B zL((fX*ZuPFVpU(XenwxE9;pBSlYge*zp|29|4I3^X7QhxL;wHqUl$>Rr0uqzD+{d} z1S{y##;V4A`TogkCsh^oCf6o@VTA3P7WRxqy|7#36^(14J1}RK6@m@3r81e&a!Alg z$MAlD8f#u6*a%gP^1~0xsrS117k@A7dezG$DINPiI2`LGV1(*3VaniUAV`d$%hfNp zuh?ACb(rYRp~0nAnfKbFl+S{LKCCdM_3w+DSaP+ zMYs!k8M^8i?7;{GG2x!1JOezARb#mb>?>UVXV?i&Q+8Ng48e31R(Ud1R<}zVQx#z| z$@jm00KibG*Lmn1yaCC)&tC0*;v!`?WeiS%0^Qr&wH6A>vkW*+cmTyw=Pr;9Lv+wx zI1=se>X`%GuMR>}Tq4*!2>6(0HBrqOKe;zCGx=ABH+FY_6aGp}_$vnWD+xW3_Cz(D z*k{RR=eUR+Raug3h0T$*m`1}xpb3Nr)2z>5R`=ahwFTtyqh$&2RHJ@cn zq#hAcK$pGta{lEBfbCv}a!VqVyux%dP#V@e{4(_=wyC|8UVcRkFZyz;YWS7QGv{qW zE(bR~bF-|9kp2+bGX=`dLAbbD0f%Q5n{!}Cl|{Vh56)937cx_z{(^xtm60dSQToqiNaz2w1(uhLI?)DUWhy@HKT|KLZzUbXiTAbOK=mj;8IluxdCYB3-zSs2~Kx z$|{5Bx}QDE@PHuadDRGYn%UKue^N%=zjLz{E@(u+2wy+o1;`iW{5B&cqIdpqhQ{J= zkc1b@8YS(EQ!PVoHWJ@$wXp8l0zypZVz4IwE3P6CtE^EP-I@ybhr0}$XF8tRxG`*( z0lt}l%xFNc+ra&cvy?G&s+O%JyyTYz(qu*n1xK|cyI5Apde)5Bf8M~R-1izli8mdr zJfC2t%8iEn@QsF}O!v})?)|?eR^97g7OlFEhHaPadS&)2T+Q97hi3vhT7R18XYdpc zF4Vyu3AH#~lCd_AsU@v|=$`~=dB|Ft~W<=L9HS4&cw(+Da5sQ|SxD zV3rdB1=igC>MzCc)~^C)dZ(Zi>hq+EebS)(LbjH@mf!vAIn}FxC?I&Rc>%B_rCF0d zKESB1D(*GkW%eKl4>7V%QZLj4?JeDHQCAA}pzoI4FLX9QqSx*&Foia8Z!!BwjMe6y zZnc{@XnYI!02#d;)K%T(K>mVx>C2e z7~IJlP7OlF{?tC2lm@od)aHY3jCsJ&aTc)Exa}?-Q(U^E`5orm$6f>t;+PCXS-%`+ z+w;J$8PQ1qBpKnC-YcB-J1L^CMCjhA>LsIoAI5Y3WyF--mq3o-UaXhKp|LO@;xUe5 zQgvdEtDtEP=0o+qSB|Rpi5@o_XS%@8W>cd}VWJrRR&HtstAWb{3p-a`;NlAiSa;j= z-L98U?S7e+FzdbCJZm-MmgP(v;u5C_FC{x(W@|w#);H*jJj4e2V*MooWjy;mm{MlC zfwUGzwyveunz7lDLnxs~fDXf$on5sE(QKTTOLsR9!LoT$%|h5q%ZtC8GYHH4X(uZ@tV3;&! z&pSjyH+n-rc$DR2?m_9;Q!$>SGiC#8S|Y}nPW-O1+eLh{9qeh~5mvh2=^-c>c7h^y zT?VGJWbLZ~eCeH=5S0D(3UM}ImJ?UCz-uVfsXs`78a=ZCubFwEdq3i6Wz5qU;BW6s zZ}-yMSWfre^F0)h1E)A;8|ZRu8QO{{-DFI5ek&10#miOY zv!#J0G2D%1_728o>Mxc~G#ee+>G}re=b*Jm>emTZw6C~oq{5;vKz=)mmDO{UkCrj93_od8ySoTy>~aog(b`h{B)5&`82b)`*|SCPqs58+YgsY$9l8| zoJCfuZqAn_wr;sBLye_ayncse3%?t(yzH?Ohc-v%a&5*Y+0PKXrfWOgn=~F0jx-+a z(AAHW9@ckq;5Oz&V1c3R%8lK#2?Gy>Aw#B#UyTCos|@&lf21o+Sc#%h!fHcC-w(q4{2G+8hBV_)7&HzX2BA3| z5cmKZ`Aw2Y>cFv|Z!@$BZ75=ISi;C3!qkfbHDUHP!-x6lZ3dcNgT|_W6R4H=@bl{o zYXHTqHC(50z4m5Rx=wNt)e+=g_^n43Fe*)*RV?{hglb%FU9L@5y zA#*ePv>^~5PRLJ`43RK!DV!V=I)tdAkux35u8MCHRPp2$tLgc;c=GV-_&9>v#2P=G zOaK&Lj0P_f-|t5Fd4mx-?9uT+gDe`qpf{pZej1^+lMW=A?BReEOM*94Xw(AI{D6c+ zL7n;@7GWrl_1tC0$@k-Dw3VxN{|XZI{sk7026r! z$^H%)5d*}^_csk1=95LzW(VF0=fmSO87df5%K5DZdw4trR!O;2BZY8u9{Y?zk*UIk z>FMF|v@uAajS<|CyFY}p@J0WZa6j;}TboDLMFxr@*>(EB1L5e3RgrmmKfhCt*4>4s zZDz##iP0f+T=WIBU=eT%D%5`9;&=teBB4v$kVky61W$^LCvY3n_s`@~5-t(EO(2fF z64Q`%qS5zNBte=5qp(_!By!J0BR`eA@u_&IjZthG5I;SU2YVK#foK)GOCM+s4=|Vm zVyS?{kk_dU$EXN|sQl~w6@! z`J}F~-o>Sf;-$WeDijjf6+HV$6-ZUF3qYJ9P4#`NvNtm!2?N(v?Bcu9mXfq@RqT3F zCcBdj*j40-n#0E$5w9L=1Wjgl-^oHU?h5DY$%IAP)|aP7m844};<15(WPU&1E&mqz z$i%6CtkG}liAV$n)xiW_2T8MM8}R-9$gkBxgW_%hco6bX~mf12xPwk*Y&a+jWpgU3}kqHL9U<(_rwkIR;IG0pQ8V=jy=n z+x0x0u8+rd2|Et=CM7m#1d4V7giTL33KNaj1px@^WQwcaeE5QL44s`CB}^uw42+$b(O<2%`Sj6W;qSbr=eIgixQ;Z-kLmYplpjDkK7osq?JDs}cSn=a zi0v%wM2XJpM3a$hp&8=ws_>LJ zyR+3bG8m0bCTxjS2Dq5?Ol*twU5h4LcPNek<@QW*^9xs$eGJ{UGuZX<{-D&WL--|z zz@QHCb>rg^hW-0Kew;tBbR2IW5*r_n@ApTRj1!hXVi%1`EXKtXWPYm{2Pq{YxdbA) z#9%i-Bn|O>)^R9+isTZkmd5xtB9^EHV!0WM=_Dln&(6`40 z?o*RViB@rxR6z%qkcnR_?Av;UeSG|SWSyR#iQ7ss>`=x-*B(K8M#tGpkzQ)R1cyz* zk4a_X{3VXxTcj|yi;VC9Bjmm82noXTcn z$y8$>m9BdWBm9CIP%8PEp+Ta?c%kvtNjLL0;Oxa$$wr-@k2JOkk;u~+kub0=!X9b7 zw%CtPKOcn~#zDpoL3du2KJ?0}OBx;R3R&54rg;rcQwHhHB(txu=x{c|v z#ye+;(MBX+2a6MzuH#ND^>oJtCA^(55TW7gxWJB3C!m7F8%+p$u(%ewAzYu= z7ZwZw;6tE<=@eOFtOOjImfw`JIGeG#`|~Ah8aZF>{W6xiPlqX>O$VyVl8wYC;M}k| zrB}313!RetnoOi57=>A;6*Ms!e#udxvxA)gf|_hC2q|z-SKKdw6-<*U>`}7CU#ElJ zvl%vk@CPT;R=YrqiF9^mG2`|xH|gJ6w5$HZ=KQMG9JSuWAFS{cv9eW#X(Y5QOcrk} z_yQ^#SWa-=)4r${AR%H=+?y_WcYK;jMWD+DIPW3RTfs`Oj@w@_3}@YWc;4A{f`PDT`cEIFKg$NIkEhg@1TTHGJ=ETu(9Y2l4gauSZqPDckFw2GH|Q;1fD_`xE!)A^cLyzupfzJEEwh@_;Eut0zpijHUOpZwkJV(Eo?7)iwDbV007#W%HWHLh5sud z>{H7{m;n;3hesrgPMwZG$p8RH^_S(ag|_b?uT~N7ghZ(qF6tVOE}S+1-MzbT2TZn4 z*H^XZ^sr0@X{x<2V;#dS1Ik*feuB6{Q(mj~7xgCYNVF&Cb0Mwj^4f-!kfXrz(z(bM zUfa%1ux%?4>Pxt(HV>j@04s)=kuWA^>Iw`9O9z{ZQrEEIaL`s$L_#ktKgAI7(qY+IkwDVK6DK4Ywb~= z63~J6YQW$nV&md?CFEariZ~xLxZG0fLHO7@;TV3#quR;#gq$Geyy0+ijE6^i-XywY z=eJ|JSO5@s_p(j;uR)?_!zRl;vTSvU_$z+8G{6n&^%?iJ%37V^BGSHz#|X}ivR~X_DLb^W0EYo(%igt>>1Lw zAtLBAqN97A@R#hbEaCNo7}0F zupz1zD=de3jT25o+aEx*fux&RX=t~|t))WdEa@kULutmS{m zRo#2vbD-hgsp&=RBGb|3cWSs!>#W8ZKDjSHg@F`%Om<}Lh?U4WS z?k)<0y$%?xC-l+UA;92D%rJu;ah4(H((!`i&|*pUiZz37Hg)UoVWNG>sV(VV`r+YO z1h+*rTMQXyHpcJF9?l7Wdeuym%BEl55vIem4R^9BA&u~yHsp@Pdx8^7Lt5j~Bv4wz zD{XHHUl5OgW$O`9M=Td1Rkk63-|Z+FezS zk?rNHh9d|xrQJ@6R#-hZi~{q&R9d0jDW|Yq=}vMbmZ@-z#4{y5A#Zu6Gz3vc2zm?X z-DEQgo;V{Hv0F;=iL*imYaF{%Z<3YSaxiUXg>{oHl3DGEO0&YXgZQjPft8Mt=jRfC zy>Z)rNNR}7cZ~cHF=^i+fkCj~KJSG$&F2hJaXRVFMKC zM0}dCN5c`c2}m+8ML2T=wBff8O1{Rl$9ORB*)rzE)X(Sj)o0CY<|vPN(JNgb8Lr6n zFcXN2KP-tVxVcm(*I;ID)IKPy@sOGNnTc!^**cI*HUNF6QrE!F5nZ{aYgIYVN!xRj zx98Hok9)J7#J$;$zPuCnW_vK@NVQ`)z6t?uNRP*Ej~`1ebPWISg5%QeQpfOkaKnFi z)^X`gWc}e-R`PPhGVhcSOG+3Plb_ngJ^~CFQNj-vbbpE{$~AMb7!3>9Wct`~>0uTD zk2kW;?)_{<_ul><%^^^RGs$al*T49LYA;JB@E6r%lV4BBPYN)>%L|(_%7-#bDz z(=y0SoX1Aur$RA?Jd>`PHs_45mo?37E%&Vt$VE1e5Xh1F$c=E9OP_^_xgam{y4G!-}>TkLMiG+QfA_MTbjB8ZMvQb4<&GI=!38E+D8j1!1A=f~T zbBW@TxX2*TS`|>^TyHi63eXB$4(ZUe`cq2qj|@9^=zy zUtBNhrJ}Y84c7MsB|6UTvxfwlqwgfl>6=RvYR7WS?W+qRO7HE2vOZ4;=vKi3=Jj=j zP@d6R`ppz?V)0scax(M29iV3?!Xdlu>N4Z zH_?1b1-njr#L?FoN(n5Y!hXBM=tDM!23Be5ldTFR?5;+d74TNH?~nBE!oHoMfxpJm zEZai^VR634LxYz}`}7KONo42Aj5wg#;uOecml|iJhZ@oD>GLR_P=42dHWe^L^B6D55=m)(I~?|v8Q1nE5@4b*A??54LEC?EHE84+3L>~rM% zLJS>XIM9ll0hGuaDIO;bOymd_8Bghc3_zdAJ_$!4O-PoN6UCJj7SpGr$+a3J+gku# z0)0blkx91OOAPy`t< zL$Gy^^eJV&3=VAphTM0B!iG~q6bH`69KK=3SXfDSJFd_ zCM(5(M8{96QXD^!Vj}(DiSs;|&=^eb4+zS8Mp1Bpk-;Qa z`mT=^S<{!N3_KVUtf029M+uaQj`%ty=4BB?_r0kEs17*vF_K0QVphCBKF4rtTuW6! z0154Nu947Q=Th41n@V9WMeHg9JI4`P>s%mxbBzPfDub2Y*Y_JGtudg)1_*GzfRc0* z?L{S-LUAt6G0fRNDnU-iAS0g>r2qcl*cOqWUuI~Fh^JBn`Jp3!Zx~u^mSOL#ECO=! zVSc4}0OEVPEU;Zm1q_e6BVyLWL5OZ_R0z1hz%GzaboQu zPnp_xM2?x4NidP9@QA^r{HvVOEkBh9N_FIty>D1fI<_qEpbi(sBxL$fiwsB; z5%IsugZo89fXL5u1svBiRjS#04s<==V`F4rTZV~df&KNpR{$ZwJ9mCbzCNQI@i&+m zZAVJsgS})(xHca4UBtt_U{FeRLbpMk3@VPw1p_@Omg9xZHnKgRDCjS5xe5~+%HTNR zoz?y$hG2`>DJN0)nh*Z|K+l++(3um2|JShzO8uI5K7qjt(PX>#4EKawv802+^fern zMLE&n!mbq5O%!W^s4XaPTP?pWXzMlpwyoEA=1qRvAUhM9#N5N#LDa-C@^e5YKVRaF z<2&YS$#yue{1AKg1u!ax|De}@F_!Pri}>|Ep8k3#Khw7njbPh78o{<;$`SnJk1sqt zg(#qJ)XaKG;({()=@>pd*ZV`+<(ZHCmZ*Vm5NPSghv#>1?H|(}w*8nE(7lz}GV29t ziz8x7Gy1dfUAG=_9Em~l1Y>DkO6X(lw(?Rlm{JHp`7BfJ9mjIt{jS&XlEmqC_XCJw zC+=Fb=SmGRziO0MtbzwAt*;k_Rd_=j(rx7#UqWXKL-t>Ka1=*=V{6)$j?p2a3OtW(xvBSqi5Ho?ldWhiG@4uZmxslpFe;OWSS61I6AdK_JH$SJaR;*WSeq@jBVSs z+X3FnvnPAFpD({?juS8#8`yAj$d!oEDT586o#-t&n!Q+5&!PERIuKw8AObP6mVuzDv#Lm7<1x|Nwo-s z((0Vz+8pvb=$nHCi6%s|9oyi3AD%NYXnrCs$IaCIEsBhxf^x@CWb_o)ZkQ^5@RK?+ zJw(DaXPqR0x~`nG#gWe`EPevZ#FheR369HHrrj~}V`gWdk}42yW*HND#dHximT|4k?%K=o;U%znX`M(uc@Xl6?+@cM6jJ_@=xu4iD4-bYSS|yLWS>?6H&hXDpfB@ zKsmy0$rLLek}5PzttiUleD~}0-!`z5k^n%c(j+!ayW6HFh%6(tD&f8n!Gtl-{BYbQG)cM>2afXdz^B1r@h zQ6VZ41q9@N5w(CI7X|N^R=gp$R_nFayY@14PPMH)tu5HG)gBKJQG(r_L2DHqdt@wh zDr4U|)lS=)iSM&^K%F_~kKg;p?~nI0reeZRYDHubphfvKIPO+mwUe~O{8_9kaXq59U==Fk3JuXT z8=7!sOj%a-euS`z6H(pv%3UMD#15{Pc%9jK_0ikpy|D;371$Q>j`4+c;Xe2Bx6L8i z3Ar5+%*d8y@6UxgK%hCXprUZbA<$k|)3_W}?}Gwd!NMP%3bfLZnb;#QPtXz$g#IB| zPb>S1#9^6-@ej)Tm_6t1)W;^O-WZuD0(xYOD5{I4F*dGxf0?QBDuqE|Mj{!UJydyh zo(yX}D_Tv|dhfQ@Zr&D>?x&WNkhogu@q00^Z>$o_^; z0}(hjXl$ueWlJ2MJ|lt2kHMK1rsL?5eWDiv#nK)xB-{%9XbiQ|=eF-Z;5@*PN~|nk zu;3TYQS|Tw3cx}!)K8_xAXWMMU+@U9f!>u45d7GK`MWY3>~Bwi!tU3wx%Y-2IggHi zS)#0M%KHFugA0O|H+Xe_|BKQTzx*PQG$Xdl0SQT^15((Yh=2?bNfBBF@VmU6Y$3>8;DmOU09siSfmx@U&G~-vwle(RgKrX_^E#GftlnD&Es1z3ZN@g$@Me|(emF&$PM^GMo;cvBgMD8<`%bXb2w4|Z4qFgWyLwYWEL{kY-&R$+yY z>$a~jQsz?Wun_;TQMeQEQQJ&Cb6P4~VqL}lj?b*%Pwe#rGJu1)x=I6`wzgQog=?`6 zBmev?Ne*mX)8@X{SWE% zcA0@!SYUYa?%dWVUSoYsr!~7P_>)T$#Ihfi;r_qqTl9ZYwA$zi{_Jbxd_-Xsj1F0} zhi&_JqeB_(v2-3Y3SS%Xba23y7mZIrK15IsX=^biliEfFV3TkobbJ39t;9)By;x4@xpq$ipG{9Z&qit&r z81#4h5AW6^f42((|KI%G+C-D0rq(-XTes0xduR(Cu)$tin^g>{V{5URslmeH)UI@c zqtnW}t!FQ#8^n~sUgEr-0v6}2L9pseFX~;(^p2s%&`T=~j9Yw&s|-RT%lu9%d?=!F zEmr1ZqXA9gX27MLeyHM~>>HV*^u4fta14vd0LSnH5LYNZP7D6lKv{GDCUa~cXstI4 zOdl=U)n~A+CpbqxLSTG^ciF+d12^}NX=vDw(sT=i-RxjyZ?9$eqtsh~E)U0aqwv8f z39d(34>n<%A3%xStSie;SL8iah?AXn(ljt-krh8q#H{E}@C^KP5j0neKe`sc1AaOy zb_X7->v@9^u0_{DJA@~nO0mE2H5+>A13$q};YMa}e}LzLa%`VjGXb~-`YXk*;@g2s zOKA8Ft#*|w)PFE#!?8yx-fQya`PcS-{olLy+Q@)KJhqYF`t|tz;3xC{?@iC{FE%~l z85#2@+R!l2ZP`LW-@}X&D=i;BGUvmf9iD{~u+?h#Ejoiwt!~F60s*~M{_q`+Vhyv5 z%;EtW@CJW$zhCByVDoIFxLPJ^S-j=X4>e+R^SFnx%saHxjlr-=+Wy0z*+u&jaG`m@ zJNyaw1;Yf`1o0OPezqiRI2QA{6+(Z1@plMTkFxE1e_a%9Y@b^*@rAUBF@m+N{a?NR zM`XhnX>dLY6Bv#_uzqw3!f}iUs#$R{!CM@*J4B5UWsUr&q-fyjTDoF8UZVwUuW z8C#NXAg%{9azyq0`S&9DxsX4fO9IVhyxN%p0im>H091$;Jbvit%yV&Tzb`lC38E06V(zbJtWc>)j{l$FPfZ(r6fO8Em(;w?>WGxNrFq2i}BVM5-Tm%U8TS1k%lWl|e6+``5 z>62kex>LWEB&#;d8WOdKW&d2RZrA2BKnn1KU!Jlzn%BJmoat$w@6wM|bwZV%XSdPf zyzDl>FWo4nkj_||eeQ}Ea1nk{@Du~$2(Rr8mcghT6fh}DRBcy?u)^-;gF0FAxsxDou0pka3^;wrPb#FhaSF>e4~N~1iq>%FI_{M-zaA-{H7 zi-oE%4GE5B&zX#nA+!a>k*Qvfq>*vuB&?nr9EKP*KE z1j&lXkl`IifeSks3G=JQS3ro!R;`v@)V_`=)gZEc3@n&x9MMbMvXb%oY<=k5BP{^x zob!*VI4@DPHKb+lPSW$rc0%_0&~Jw9#c8i>myo^N>9>^ZT|>WR1Yxn$dk$`A8HB`E zZwSeOu6PINm%bv`?F%ue0*od5!KYxiqk+@;&~j;?;Qy56X+57C16@w8|fFI9&R zI*~aioh}6q3VKotVycd>GX&Q{K}}!B*q~GhoWcfO_~|T|Va&_aL7o&Vnb<2c?u^YZ zZ;Q)imu9^R3Z-PSHt*+YExK6{u%~{r9`Z`=a}%_VkMYDKSS_T=82|CsnRv!?C+36} zWdK&z-^*`+-z$(S?a9JKgzQWOj21tp#rc;F8O|Ge?EN$*o`T1TstqA6bjnDl;jE9f z2rzJP$+j{nPz}B^du;9(Xp_rg>136n^rAm^SvP+?Npk3CKO9@%fe}a%ckWazwO4sk5Vd=rf$E}7-WDewKi3rbd^f0B z)4M~acN?4hc89coCT8mvvw@qaqfvR3AWBwgZLlriZcCfkkG;IQFKnuv{~!whc9gZ+ zaj(v&Hu@(785VB|j*E%%ox8xe`iTNt6k%moveDK;^cI$8ic(B(5ib=874>o?ud22i z$wBlPWKUyt!!FHsqi%aBAZ+apM*EhG8tJ1>i^l}jn%_Y?B$+^po8lC9w; zQLdAMD0)!?6@G$N!~vpYTQ#Ea$QDhAh?Pse8=h#o4?K+XUm2YhWkcYH>9W4;_w#3x zT-CK4L*7EE4ltZ~Sy2S@$97T5&Fe5v(p6hok__`7h%1X2I>*9al^m-8)dk3 zo13>=S_tdc27#FSHU!<8*jDA5R5&E#O~F<3iy=Uhy`4;sTk=ab*$k)4M@vZ5^%6@+ zX-?Lw62Pk&>Ee{|(TRSihwxAU*j9m;ivB`BLo#*$iYY6!Db5>5Th3skq?vs;IlWTh zh5lrVYJW~ntjJ$_b%YFR4!fUIW0(=0^2;wlB%`B}3D;$gfvRe;h;VVTktI`>ADbptuvJ@YVVKxxz9i2!&DLA+pLp0lB@j#~>4*)qZ!U@3)c#&PK%)FOAdoxA zS^2RU$Af<&c0@Xom&uu3(U+?_Bn8@<9b5DBE&@@NIwRN%}7>V3k6lF zeBoy{58%a<%gd5)*csE|v890Gmv&9X=!QDBVjxF%Fn1l944&{>j0LM;nwss3TOoxB z+x0}V-K5zbsM#LkyfHVi87--mosrc*S=$Ww;b_iWc%P$6lmvNge3kS1obqP&cx0`a zlciY$iV>?zLV^0A*vp{yzFUj8g34YSPu_-bE*}Q3)$K}>)U9BDdm<;hc{$p?+k-h+mq%E_5!zYnfK z&=V$2S7LZq=G4zEggZP9J4RgqXc!NWk;~EbHIZeQ5htsvrv)(bnw^y<2n{e6GeTvT zo1j@C@6US~&v>e8IiwI$!;cJ0AeUo2#4AGoS!yGg5a@tC4!PW(UNKfb7&rG0Bc3 zxJrsilsMq`#C8z2-F%doFB18JX;Cy&2)G&IhG}qP$lxKW^ykJzUN>woB@`)P!;Egj zLjo=hEpe1_nQfGj`l^CkgZ^W<18_AjoAszCzsa9ZF6yb{c_g^Ic}~W1@Uu@@Cbsd-N*svQvH{XM_aZ>TTzd; z5*}?$e6%&myA^urzaCdQj&a@gURHtl<>o8!c*+Ov$WdWjg^P_fI^Hq%c|t>D-Z27E z;NQaSwW(Yw8pm5kkG$=DHPa-)M2qPVKYtNFjdbe8Sm`J7i%;$?Jh^w(C;+E)XJg(rURt1by{X2dz?6)hx@8OUY^Kx6Spx;Q zR;k6SnyMbSDxbFhR0}~0yn=xQMVp`&ZYsTdlVZHZpzJ|Zuk-&=GZO};i%7G*Ej|KT z{4f?%%1Ouys5U^uqz%p~-!YE+8!m^I1uxV%4W1FAnY?4fRd3mX?5-f1#7oIBT!MiV$j&Nwa}E^f+M#mu|1MhbyT*EtqjRgq_O3CDPDkH0n#0~Tx|V1} zxX8`FFB&AgygoGYAJB(J3?GW%a_8SPw)c$vHtcN(SQ~S~NcV(|0b%bMb7oNouMGkH zI0>%PmjkGH9nSuZ{XzZSLBi?J8d@IXIANr|-hiwcH5Bav3COtIzQRtM!F)Q`CWdNn zean4pm8cJU8v^(m;|jV*>#KaCzUqPcPzlaHW=4IYB|^lqoPutyB|fxN;;0#{Rqq3B zfWaDV3yp>Xw8z;2UVL$(v7aHV@P~lwzwyDbfgO>FYpXQ^rIXr$OS*QTjK#)f6en9^ z3|nSgAM=b6%LHL7j05Wd{mcp@@Wksng<~-g!h1fp6-HnaH)P1@c*YodolzK;85xL@ zuAp%Na5M-fU;5m~w#4XWK4D;FtZV@Q?Euh1gXN{iT&YcR!v&Ozq zYVNcMhOQ@+D4wjL?QsqDp_k6kJ>Y%b>p{NQwnGXxb6dR9f5aXC$WSQeiEc9N;Na7t z&(U@eFS9Wq>@bT)>lSilVVv<1a>>-vHcK5@Px;`ny`*t7i>M_FGOZAzbqlj)Va-Ni zp)3rFtf#y-ihV4AP%rLggEzR~3O|R2>;nMY55iVsm(L*Q` z{ArYcPMWH}VdtYqJLXtdl9pa0xYB@kKcSrIN!cjbjV>N&JOzjd|Cx2%Lt&wR=%uf< zbm4`xUDvv?F$r*y>w7I2*yy9b*8*M@JyAb~#S|0jm_C_0rcb8$@!-pvs(<{l&Noo2 zI&I}IVwH?q+gYpQqIDF-tIt{ylO@2*@;s!&^30RVFuQb*mtme*f@xKq?Od(%qUW1* zfXlyBqp`$Xv<@QYnK}SwX4K*ur9(v^zR?6bO(^rl0ueUMVOUKn@i!0&T~_)j;8zAc z1(*@iNRB8m*oSW^*yVS1%u)Krycdme(tDbSfs0W8Sudi`pMRpmIB29Ld?a=lXu!jj z%tLBeu1KZrFl|09O2$Wm_XXEx(Jrvh(S628T!f=$Mf1dqX=*V|6y*bQPtyy;bXH8S zpNJ>x9k{&*m(YVSO7GqVac>xH@$}4H;+fjPT4>U1G>Mu8|0?Y;v1NM&Cwq~7u`5OI zBUim$WRm#b`VqATdPHPYV=|28nn(%%g=VrIg>X^ce&;Z!+} zqDxw@avZ}CmSbqakt+JT;y8-JC^ERXL`NRd_O{A#+$j3%(hRY5OqR8o)D9`ZV1%J( z96>A+TmT(@jq3kC_P$4-5*^^t`TX;^N=IOQ%-f_IZb#q_SiX|(w3SsIuS2j?VlT-J zY0R&MW>vsZ4pR>Vznf{BU}xmptMW;4MSl4#LQ$lau_<#BnDDwGdEe8SKC6z;9YJVu zsjnn`Y&c!=T%5%_Nr`J^EyGg*F51ONt(KB$HC-0z*pqO-i=nFAh`f-BDa)Vp>VbUh zE2NG*RhWT(jhMUBYr$Z#w;*ojEm=+Jeqx3T+V7i47K<1W5K9Z!ix)ENJ8Rif!@0LX z3{!DIC0D2#w_TCkmZk2Pat>{UPU0+aQ2gdbPdAq0T2ldE``7s zoO2bB{Da3V7*HZbBo}hp@!~WTzv_WYkeaA1dO9tKG7ubSsh)mOZ5c$00O5#_WhL9H zI#xjrVGj9Cvs6`*AEC_MXxbiPW8@hHu~$>I4yWumfpf8ytKLdwt(r4*rQbniDKUJ9 zbZ5@6;Ezc$_2UcQqHkCW>QKY86b@WQYZXDQ0o<*Los!Cl5_<4tJWj*jPKdMF$t47a z<-%fXIN1nD#X)17jFnB*M3m%FPu4e<8aZ2cONl%Bz%SD5=ONn;r1PHSEi(CWppe zj$ni9q1y(op{NtaldFIl;heQ4NFRt$mur$Q~r8Py^Mp!VhmMp^kjiXFFAS2LR#nu_+~ZZj^=@;pLE4 zQawt(;WAn9&kkMNl)UzZGKFQbsAF#0392xGa8e-W|%X zbEX%O87~8C!^1`-;#;;F8iR()KvIg9_uRz6bE(3XJ${TEU+aFg{b?X;MWULc#fL`j z3@s(ABCk@A!g<4<*6bHMPewP_Wj7msso*I5HUVmTFgykxWy26edP9g?bhCf+q-H}% z_*y-AzlkjyVxMb^wB3wO1ovrIDK{EYYE z3|K8Gfb%Nj9|?L{ZV{=SpEo`4XVbl(nka|&$P@+-aXk}{%dU@FuZKWqZiCF3+A_o~ zDahs6!zhRu`CV_~5eu-MeSkNbCBWF})1?7kN;i)HnRvv^ubWUk9E#t`-N=pwAt?&s zcQ9w>;9flZ^6<}Sgby#96*K7d055dwZ)kTzX@FLiW-Xl7lKu(;IKMg}l7`tu;LIU# zv}J~OmjwlNkyJ+w!eGt>j2Z|T%eaQ|=;z2agvLP!5pxH<%=#uEBzqmTRN>B6Rya%Y zYGzTHB0m=)6+W_+g|?_SmLe_!Q!?XDg)XxJB&}1{+7g5uLLX|RMhZF1@ql?2&OKdP zHtaC?MtQ`dsTd!X&6p-YTrxJADacQo#dMeXnPSQ=kJtt6y7-9hTSwm;0R!%?$GSjy zL`(P%HZ12dlWT)$7)9tO6*TV7ZDyPD7MA3aIdtkz1BKsMp7$$2@VM>j@4(-lH^J60 z!g(Vvy(wxRb=dT2ioN{iQ9K_}_b%Lsm;sx`KmzDjV#%2^&H8J^EaJStQY(#))mYj| z&xTX%Nc@o1jFQWls7Tyer8ng3bfq6$f~A?4=#9hSa)KC`7fN|-SdzKwB!CNv86te5 zIzc>*Sj;U%WcfQ49Ayonm9x_pv}nec=Z>WIiOR}&`5Rh!a&Qs?R%^1sbf(c%D74%} z@SLPk1q{}iC{v1QIV!F-iHLRL{yi}L^Y3NhVeMhazLkcT4ceEM=lH3A=%&>ota}P_>sNN~{@As=& zkenu2IRSBNMRihe9~oOZIvVgHEo@Lo5H(M*!cF<;G*d^UAE`P@IkOb++1ribX^)g- z|08=%`v#+Zg)~#W)#2AFFIOsxuf;M2lkFcReV$EZ&OvhRoko%X zzK_+GnT>l3(VTN>@%s-9GO4NR9NFH?zKK;rn|I-deUYMtoGXlA>iB#snQE02J z7QG#)Mq#PAJ~rujsy~SKn5cd}q{(kDD5=Mj%Z6q;Y6v&vDmd%G6)8#b(mn`b+@CiZ z-s3Nan4nmCD0fF4)>2Z@%o|^-Qr8Dzg{W~?XA>JPfV(PdI#AU_RuyzOXF+xLc<`EU zWR1JZ)a!%P>y21<(6`K>1Zqd-^!uxvh#lQ&Pi} zykDAuo1&Dk-0l}&)Juq7Z(v!AWj73BqkcE9kSL}|ND{ATAcQ4)C8w~kJiB|(lr$wP zk+4ZDqhS3Kw;ICq4ZLM{n#Gd3RlhL|znCyD*~p-{7oSUG^jlH+rafsEy?!J6qO7p6 z(6UEQc3Tuqy`N?GZVuW1Z~pgO5{p_ky{t&Z=cXi!g-cbi3I*dCXLY$BH3n+$sW z9%q zkyDuE$jC2nBqh&q%y4En3iIa;Ql!LQd~|mOr2l8yu4y%)$*DZD{CrNka1(jjv43R z$mp0jZp!MFRk+)VCCe+hsn9vEs9Cw1Os`qEWG+46J^%56F)^I?jHH_7RTV3jEMLtf zFJ8I4rfLP5I=`x70j`Vt?}xm_uNcK8*R8BtyplZHpR#aC#R8HqmW0CvxXJ}Miu-vM zC5gK$2v@U$BL!89mf}fdqx2OE99*Si5`9$pRV%r)#g#P`<+v1@T8*1uT)wC(YUS#s zoQ3AcM-gYC&(A_1C_SCa|6c~wzxESYS-$d_6&&Z_Xq$!E&@Uo3qx?sQXp<&s-e%xj zv7%<)Vl=8rWJ-A@msGW|W>F2=6G>bAZ27{PO3s^M5jF0A%z#!#Ti6OTu|?%Ii)$9o zEO};eC8l9D zYpT%B(V}oa-kNAD|a4XPARxY7+W}|fP^@`2liHj~;z64h`HD^>NH=}C# zikc;hxrn@~WzV3Mui#>$qOAm=T6|cHkuNa*EZk*1+@)-mF|ZUV+si8 z3`#$UWVYq3Fh+|kULdo96(j-J6Sk<}af|QMT3d|qXEz^)MVc^*BteT8i(L?`1(j5V z54X5V;^r;lI)WMN2&A)%wVA!^2xhD!n2oMeK*Yia5wYPEP6Lojm*muRWsPoV#3i-} z)Dl5!`Pa7o|GoRA_T>lXw3zNM;Mp=2GZflo1al6Ff3Dujh12*NdnDvttRLI%K!8rN z=EI05dU9$d1K&}^1%Ri{^Qjd>+!TjIY}-*4sj-+xR}>)> zLRKYJ)|#A_U-bp%EDThPtirQi1rFH^lH^RA)?=^x)Iuc`{&;ph;~XZGHhsu+!=*A1eW;W zO(#xt!D?J~JcFsnoEp+`q86cCPBLeNXHuQ}ka%5YH|7aj?6%}>3sjizM;nef5R=6s zFVjX~9swC}L(nBal+;@+RqhN8Dse~f?4gjBKud1p>X|G*wqnys>N8DBoj2Hst5uE4+iBiOCP#GDrs48eU$1C_-`T58 z%=o;IsV3Ag8ux|qyAQE?Zx8@tYGMHe1M_(mL<(hK9#piJent5c@iM1`MrX9Lf6D{c z5}^p{aiB^J>9AA6bi)1cOh^z7_OaA7_DWgM`268TWF2do+UjF0p;QZ1(_j^tNsx*X<*jO)q=w*`I7Q@evQgQ(iYO|*?^Oqciy#~<4fIh)DZeNI z3sVLf7P%4Bh2RR3rJ|_TjBx6q4G~EdiP3iz9wRT>R)-YDF`0`;B}h9#2ePQT^BO1? zG79dRk`(xN%b7J5L>?9f{r@wKJDg|en|q)7PWp(xlQZQ$p~Y0G&!?#&26!5wj=#*P zosL=>Yz5D%2r*z2@ko7|NHqHs<+agg^>X}91kK1DMrJj>1UxY<9w4LkB}P{ts;M_> z>JjG#IF0T>#N`EXXdvZ*h9pXnv6mDkA&_tB;fR=&LuJg=$hVJz?gcsf{|?hYsy|bN zFe8csRUIPc5l506w>3B$i#*yQ@`xYV#7?*7N`p$lBZAHwSD2DLs|+6JK`OEeQF|fJ zDR=5(D>(VAkCNYWV7?1GC-VVOkcwu*$z||qoSquXXc6a!jHo)5)6Gr{fif6qY>P9u z74vzwmVFjuBO~mc!|tzOSWM1SFH4TCC0PxK5CknsHY^fBL+wQQd&m1g@m7MM1UKG6 zFc&~g+`2?ny^%s9iSJoJU!=A7H|`?e=+=i~YOYyt)T|HD?gHv40>qrh}da>_36}491-9Rt0Orv@H`(-f@UWxm()UU_L+G6_Ni?g7}OCP*gts4r-oUvE&i%(+0uQ1n^L>u zW$Sno;zpsJuWM#b&q35{Sanw&GoPC~j6H|g^9%%NTiMd`lXG~}q3VOv$*?=YWY7qy z0kS+bvt{oW!O2-;Nrh6QQW?J>K6n}@tE;?h31>5kFEA&QIT=EQSYaVvAya=eXUUKj zDwph=l$=I>W&6k$mGNQkDZ~K{8Sk;_D#2K>s1qREjHzP*;=?@b@s%4hN z&qPG{yXccF!7K9Vql;jDg}ut_S|7ea9tNR1qb4CzxS$q(145M=@=YH3mrfA7Ji(XV zRl|poAMXi`rgM@;=8`@`z40|BtcR$WunnP~EsaSW49x75G?|O;URjHtr@74@tq?wa4yLx`; zd_!^lB}LdL;+4Ol5SkQ|kTfd?8>3J7cD3H?`Pue~Z?El??_b>y+WBnX`q)#Qg2G&H zPBEWp6BKo)@lo$bb+ydFs}dgiwcc~n3zIy)u&!QI9pt^)o)i0*B#>9LGu|H^?n8TKbCJ^)Q4wkL;3NEBv4lepI_3Buqlmy|zhO{-iH`UT(opivrzz zvsSd7_Ff@a+tbRL>pbd9)mo42dWIIy&n12eFX$dzX{YZMTGn3PtQ<75ibAG)4w_iMrk3uTLq&zIs z*Zo7-Dc>GD9^?aFLgMd@KIPl{p#2Ih+Vk*1FMV+1$f-_NH))y~H)*c-t8@LJ?YY+( zp)=#8e*SGa<(%MsMd*YMtu5WRKjFDk<6SQ({%XtgUH4IEmd=i9sQF~+92vf++ER76 zF&r0?wDhw>n_$C3LWT5B=jy0IM``fhU`{Y=gO>24eCr#{XU&}(bpb=$R_bOyg-{Wn z_@eXP5sqkm_0f7Y?S;rQQ-|AX)y;46HtquTo2I+xYg@wWU- zi{l;nX?JT6y{q1K*EyZ-BVTO0k+1WvuC+Zu;7-?Tef9lm=II zB4!-{Aqq`ir{qiE+OO?|(V_#0>I_#xt;=7j?Tl8AC8G{?ryT{Yv(J&2;zMwxDILJJRnKHY$G? zw#C=oi+71_^bWf<*zEjw_&tlgL$9#F2Yfng*D5=ElsyK*1ocubaR9oLo>OfpDo~1a z4Z;4nq_)dSVY|}Rq7+u5`@%V2Iof)ZMLoSjxM~jm9^kJvTeUtnKq`?*NOH}ozI%li! z{>`o|6`C7v&D-FpJ-~)Na;*w(7X=)bGnL@(2JQU&}2Fnw`ru69+z!N{_UH(@Rn2F`&n<%O6 zgp&UW`f4x?!tExBM8WI#=y|^>sYI!lBock1LgAE<=cc48mE07b;S^zhSm}6iN-EZ$ zurg(tlE!VaY|>+?WKU|ElKWR*|6#Rle^t4>&0Py)Z>IxPFzvRf3GUXMg6$2MR4W|~ zW~sgA=aJBX`?hADGr=R|tKW3aTaT}key}cChmR{?-BvS@6NAMnr1oN5>7u%i*u2v2 zc$)NW=-j7%ip=2~NKieR=rJ|_G>JXsdP}Vf@cu$L)pksc9}KPy>ha=_1^hahjK+l$ zbSguYFKu%3e8Vby-3c6uoCCnr`>VpUp~F*t4dFC;`D)+#QwiG6`|7c_3g3D&G7Dd* zd)yw?C89YW?Yf{oKOP?sLh)apF9x}LeZH%uATqcqrZly+fTdYes@3Z z*=A{|PxMDi(0>X!nzm({em5Pqd-)l@vFP(|s&!%H;G@D28CL%4Oi%6Yq#PS=y+2nFaQ6FNEpwFv$fPN9)#)>M7R&L0ZH z@BT7SF@E1fbpol|DY4ASCn*TnAWk=S5DRjoH?hzEPNbr+&)+)QB%xsvXO+93l&jfF zA*mGI+N~eJrIyaK<5S*C6z3RVtY~}HbRGY~4+G@4W~%a|KKccSQj1aZEjljQ8YpMxQ%*#ra|zInbmCn*mQl_EpNh%QYJ zj>{1vF4UREx5Jfg30V@Atf!N+#{%V0=TfaM>9mM27ksVuHQ`;@;VWWZ^ zqnTrK0cFG-uF9wH1w_N#lozP$qN+MWm31)vNEu&S7r(PQf!x+uqa2ZCO4sndFcoB$ zKd3@&^%!RguINrAP9g^3wvQ1K1h@RhR4tvPZq5*Nzcd9}ntW70m=SM@~( zqR`aVga8?`aQ^udYUik!zz`ZU7i2iN^4Bi)!ZX}5%~l!O+KX#v@@xM`{miwO$u@9M zQ=y-^10hLoBrky5D&isxt3Uu!y!xVD6tI%jXJ7_$N%=1YJ{ z=TON@&{M{20LOCe2RIMGCyIkWVBZVu=Y4e-we##Lsbva%^c7TbTg0Zed<6S>Uv~F z)7Mff3Pt3FaxwBkXmL4Bm?9Yo&q>J$JR?b1<6g-y?Oq1(w*8~z4%59lUJ(!GoPUl# zjsF4PSD@n3o$*>WCTMT`V#LKwptNPL0-eZ{wj%9H@@B&5+See*E^bjKCtBz-!Oiq+V zl%$};Q-!F?RAABCWt|VMojG&nG-8SWLzATs{Da0N4H;+9-CqZY(yXvUz7Yz0ioOh0 z(6(Y@?MERR%6NMQXM&BA0v1$u>56<8sIVk{vnAYmi zL!4<=Obm{uG*tc5Vr$>XLM(!c?JH}4A{?cVz9EuFo0W?qbToJ|(=BGu z)Q*MK2c)f>6HX<2DL*%M3@K{X_gQqqP1XC^bF`D6vJ&w4Y?fVjHIcC%XAtyNLSs^u zV1>%BhLcZC*iJcd)aFw5CCW>WP>N*M;dm96VU9J?;8}1beykMOs#;mq5kVgrRoESf zX%Bwo_i6cT>r=gnnZdoI>ycr)jSKZ_7uqh%EXi%=*yGChf+Tzh8Ns!-`u#j)KO zg|SNb=0~?C@85=ztgp#GGI%LCr-(Kk9|dL3bh@}mX0r>dxsoU+2B;mx+T^#A4L3Wm zaLETo4gaF@6Dj4TLMl*O970m|VQEF3*GuV>qB?0w>J-F_62qgLV;TlLjQxTTZj16n zWsDB0sKgGAr-Y3J;w=VS7kQ(jSzY?cIaG(zI(il$Z8;q&v95p!9g@D(dw7Uh@^Elb z6~TyZDg04798V#Oo!vV~P2(H=x*a#P`p@gS;19%^LBHCp81az)u1!b)NYX2OM|bYIZ}OSrZ$3kAu4HbGlRUgR zPRiXJ$39HBPJg`Ke|Q2%g?kULuNZg2o!E+5*#E!(8z+|v4dYt%?LxlNbe1}o>4N_D z?AY^8_mo-fN5)Of5sr*YO1pGsY*Jp@jP|&(G{i}JB)(cB$7W)K-rc_X;fPsnb@{WIuTGU^1BX7h1cb682t1ESjqF! zv7L!BqziAzQQ%-H0=#wqO;W@s%NPSW+xd4EaLyZ29o*->rJMgQ)ydCxeoi+}N&8wn ziJd1|PebQXc1_=fFWJrm?4-`!_*;klmd9C6-x{sAyBma435c zA1_x5KS*$sxW!+w{5U!GT)6lcx`AZeA9i(9aesnJ>gq;wf4rGDu!;P^a#|HF)pt_o zV%8(QUe10ggU_c}yhVyaXn_`~ZX`}ZIs8+DHQ>pLY47|UoPX>T_~GhzVkR^EryPug8Hj9lS~r0&DcDn?!J z=Wlk+WV%{==OSSXqh8zR)3%1WU2ndzG57VZNz9yKB6Gt-vY6P|JhW!b|ddZV%VtQHs-f zOzJmuT4a=s1^WlIN8G{=Ip*OenJ|QO#uFXOuaN^G)wX32oebNnaGV~hC4fgwGS^Jv zSR?;OSODi90=8n3^#gNWErYw_dV)Q7U|?Wh9Q_RJiv~QpM&7^nY}*N9UURm?ZntaO zjuNd~&R#LBkq4h`>m+7>S=)b*F1J~R9m7u#gS!0DFp#HRh$pC8r{K%vLL)6&ySnvJ zs*GPQ7fz9Eey-Q7V8G8(qg&%O4cZ(h<34Tv`6Q{N!idx4-TG;pe}e|NQcoH@@oo?nh6UEym#zlG8XYKPNRK3EwlPrcTS5 znwl}QAT=W|xqwT}DBz}MPUZ3orsCVlB{`j3o-+@Bh(47!mCMVR%4KEefRdMn_)}@z zO#C^s(ztved1+ZFw-D)t1qdL8bW||anURs6nZsoyIZ>vQ%RsgH_{+?mf#XT|LtTYa zaQ+mO<3xE*lx^&VgcMm#%qW@uSyn$682lFP1C31IcDN1`^Q~8jv0e=ykoP z9DQQIDujE)!@^kHbVG^_58E=y4LdfhmFpzItIV*e;Y={xs7 zlz9N-z4v2_I~bO+$_zUhXdsC)z}JZ~VWMb?2L71LkSv4Uwbe7O97d-?Z$>#dO24Oe)#I)mL+Ik}7GIcbaq5U56o@ay`1l3N{C1T^l59l!kucFr6_IpOVT0GR? zI?L!J=uK(reMY0vcu)G!TM~L+r0XT##2@9T<5BHV;<0g()gJb`S#n-BP4Hoa!{h_x z>HDpRX>m2uYr*J%5^^Ot&7-)4w!D}8c!3r!;S!Md#3Qf$(c(Sw%?A0}Z#GER6c`i+ z?QiQrQ2PtmQ8Niguc5(uWKA;}OJfBiD!>rxe?-Y7><{@WsOQ^2Kr>T+I8h0!g(_ir zgF#@Xw+ls>y<{oylNfofYBiflMc*jb;zu9@3?%ZXKi}Nz!BG|f4b0*cn}r#BaQ-)S zej)Kx{+xAWZ!SM>p}*L9|NMAcc2wkfNVR_lVoF?E?zEQRC|en>=5G;Kp`M2sCH0r2 z!64ulbeVi!8XHEE;Zq6H*f%*>-)w4p;j1R{dVUeJZ+V$4Gk75;A<-u7rQHw*Y6mQf zuSJb7bb>y|$Ml5~RxL*G49JekPN%X+;41iA^%8LZ)O4b`w22h6J|Wa6ZAkFwP3?`F zo^EDO<=n3fb$kqVjWM`33I5a8eWIe_rk#I;7~sG`$S1uiYP)SBkO7>}6^3zMd}1DqB4 zO&M}F%xVI4DX58q{#==OIv6jF&)?2^{zenKd0GJV1H{9c9};nLurTfOK#PK!0$U4g znsTvV-`b@lRWsdDbFdeeYABfyhd25BfkfSb8wCc9LAM0L{}E5W_6#PUmnc^7+8xTm zO;C=5QdjX6D@R@bnenC=Wh=8R?;w1EH{Eq^+WBo0IrvD^ujL7=$g7n;zw_FyQH6^( zQ3*e)@kf!PL-t2ZoXw3z5Ye*#`jB0GEJVARe0Zky;AZ%rgJ)>nm}-wqKPPi;mLxZw zu4*2RK&$4_b(+#0W7;vb-7GC?9?X;^S$$bNjM=MKn~nNn%2RA5ySTuJ4zOPAGwxS8 z(_<@0)cp?1O)T@V20&+^g}Yv!$md4}&U8FBV5^qcGwtW{IRn`qk)465cu`!Vs=e4X(nZx)%@?SbW zq&A7M-GShx$ToJSXXvtRB?yO|{<1|~`@;lBNn**&>Vp)G^-C#LRceC2wE-tL?aE+E zYnSp*XW1c6K_*!Y~=viZn*oeHfwx1EEIAxx#SQ3I@2je+*3(X_vC3nDHZUhZ3 zzv^lPi&DtPx!q5ZDMU6qtNTW?k3ATok@LB6FC!d8HJDp7sa{yv@VT6W)#lkmdAM=o z=fZ$WTlaSl<17fJ6ehyzyH}78ZUx!3Y28o`MOSVMK>(x`)5WCgNJ9MUNBOAGXyfl& zC?HHv6a6UHH@GFrKO z*eeloX;gO0xR>9iBggo(#K9QA-LI2G)$2-Fcg{NUf%XL^>UF*P^$_*zM$PMi2$Pe) zmqw&!yj3vF$vmj!iRyJNRhR3$H@Uw%jI($z7nh#i9aNd#ZOnQvg7!pIHu69+1SOk& z;*zgWaYsCv-BjLkQX*9wplX%n=wD~SWxlvI)h73T6P4$g_eUS6(!Q`4 z_;^P!!%HRvAzleZ`*!AUTU5l3!P{}XQ2e^FPHrzB_464L6PcYi* z@XKLV@MtzHqa}1!WtRFmZE3`($xqX6UtLwX#dIf$jl35737FMg5I^{dQnV5DrD6EB z!u;|yvQPtlED%#u%3%UxS!R0R%l6uH(Aiuz4QR3R#<&FtqQ!+(X{)ht=}cI;)PNyD zIx><)Z23%(F)?&J(=0XQqjwlIG6d-z7xs+T%9g`Ox8lj^PXTG-Zkaz`8}rWm;!ER8ReH2I_;(~2f^7#I=R zu&E%DV-agPETd^`H+}MUc-Ug_EjJCv?V6I^R6rPm(yy*HIqD#Uauy+ig66dPpmCo3 zPuc^|wY^*0gaK9q^R$fYng%GF_Pv{i}P+F+{!Z4Si9JY?*Dt*0b*b;`ct zmV^LTtIxWRx=()8?H1x96G->GCHR-^7Dh&z?ydf~oH!r!;ObSq?=C+vz_=cTo4;+3xOB zck@t|o2I`Ic}@JAA9=0Y+I_dyt+_by;?VAkL-65t7L;`3pIbN>DO5z<>}l`q?(M$$ z?aiLe zpK->~Na37Ws2d@?A4#|SN7CK7bl3H}5jQbux*31-w(uJcRT^aEW)L=S-ezUL;0*ku zJEpHED(I!q6Z=P=P)v&8{+t%|NnG$m#l(w$6G|haWeR$`ir-%ysrd!u0ESj`@pN}j zcaOq->h6?o{EL<;yYHrVPrm4X(XU(lnE3tOT0Da8=&uH{jCZYzI@NtK_+p6oF>uDj z@4b(QJ|owwQQp!t(LP$SJnh8qFY*`l-4_k`&|EYR7Va(jpZ70)8b#~Mm~%zAGv;33 zhKuzPk{=sZUBSH3KEqzxkApp39p+Pi+cbtIL23w~OOHt^Y#JlvkFj4oYhTqd?xES- zenQ?rVa8Us@Y)z5cFaV#@P{!8ys%^pCpqOtWR@>|L}$9><;#~WC%_zU_Wr#$8z75i z_}_bO_E7klo)96-924Q2a30x3kG$$<7A_>cJWqmR%@Kd=p^}jazQ}{(&yArw{@6)) zN=#|TzFZURnH(YW*Z%}K`!ke6VN~k>N)mz*`F0HGWe>;j!%0v}!dLW?=9e#CT(yt@ zkLuV$nXQw?Q)26yW^hTa^ct!N|4A%_4eoxxufu$48Sbwq`-ESY&=l*z&|ns3;oBUs zGU4w7HLZZ>@8Wr+-s~y+ooDj3?-Jct5NFn5uj6F(eW7MEuF%h4uBi7!MTB{{h+!Uh z_IM^mJmm?C@Y7B9*djDK&g@yo$%U*~6T4a%KGx4)k4YYm{NjmXI4LeEqSfBTG!W=b zwwO&nPnj|moDf`4Ju-WuaxLclS(ZB!Fr_Z;a(oFiB=a@}5k*l8%9v6(9 zXCu^cBQMsQBmQbOo4&i^4-?S1K8vCausiO%i5jm>{myGp?!VU)6e<65yhlIT?Qu-L z=81ND5`O2I^gGW)_utJPdxs~oUfwax&LqjLa_j{7Jut$`evk;EPRU0bqg~>yL*MS zQS`e@C>$jgxq{qW&fI)Pa&x5=1tuu5B672yU2>lJ)jV{bC(wH?3hhp4pz9^3@8pD@ z(|)s;7ICwu6^ko%FaR}s(@Yc7Mw$9(Aqo`YIu0uBf6GmmV$3(qEL-PML?{N%xkbYnD+ym0*a~`I{U%t!W%K>0-$*Ysb#f=}b24dM0s^=H3L#?!JO% z*)x$FWmrfU4H{7o4x`!X0&%R~qeWmcWcVJ$F>f=iSh8qQIb3)X&LKf`>#eGTfBp(W zPy001V}EdkW6X3*%XRj5-Rr<8(qd`>8O)z1o#Gn^x)7Z~&Z2x;^e_2Jz#n~Ov|(=~ z;D{B%H2`+@>-7F%ool`X3y3r*NC^=KsNAY8Wq!k2w|b#vI|@7?_K&c-$4CJ*JEM z-gNQ-ZsOh-O=Eul_LvU251%o<-u|12A$I*w2`#u3>Z}fnUd=68TD6#~rZN=d?$dv8 zfah07YYF><13^@-Fc!3pe)BSO*E9^Ab*{9huJlgBXj~`9U~A60_{l|2thraYs^_!O zV|u#WSgyM>2B}Cx|CiG9r|DyGpbkfnZm-A4cxOyMS^$c@f^u*7CzxqFJYkaKK>ZeR zShrU%x#+kULVrNG3#}LZr^=?*&7&@L^HSck(O=lXwc1`WnB*g>9UM=38>x={M`TN# zI`5Cb@^+;Rr_8&e%*Nk$inBPl6M>vFe%v?^VwO(7^^{#3veb(J+CmUzVkuQb<1At4 zo!5EH%jiVu)~JHM>%dY5W>we4SykhvuO6xRZ(<+-Ws|oKMBP}5pVk9Yr^VOxk(;hh zzdk7D@4UWqb`uB?Kz}d|r=*3f32{>0(c~TfFMIFe7iF2hkKc1-7#JMn^l(s~VPJS> zhNGdts3RjV90UeuK(RzXKm<>CsK8TLYOR~?R+g^YZq%+>wrYZY(Cq7ifI&E|XeOi5 zN{W?)pD-!27=PFO3|jmBy?(!c;PdH~%*=DVpZoaS*L}UOi}=mC989N8xI8Xa=BT{z z!9KjSyF3YSMLIXyurUQ>0*~k7*2L^e?@Q2lzk_Hb3VW?;#_K&M7Lo>L8}&T z{Nj}_y7wV~O}FAw6=Howw(#?TJHp-S1dtX>fZKx>jLc&cNW5sIvlv`r9*7Ne(nS3X zuQiR6qdblUxDq9NO;?Ahndg7`HEzjLY!MWA2YS1BOjL(%&C5kyc<8;0Qz$8L6`|)K zs#UrHHlVL;qt2N^VtPi3Qfka1$5A7m5s(z>95~m!MRKT8G4-789?T8hv@cl*9|U9AT%G`OnI^!L}K&7O(#D%xRDl{jP4Uj z9_|xJf3we>?h|9n=97)2;V+o>7H3jvK;aPp^Nj)FOB$?*R~JajOt98Nb~NlWtruiB zMPIre@gfN@truoDm1Ulb-59IH=UH)cT_~P;g=X0%D;Uomd8-S+754{v8#e z{C_2F&puj5B|rm2F5-zoL|zjqgyc0LrIj^+R%Q~)XMJBL5_C2_yA2<+z64?Q#y%ID z?JrM0#3WBP0XM&pw>MW#WekB4UWfx|0v)eI1;FmLYGLLRNz~41PID_QxUgo->FQAxur`8)RiEj7dikF>pYht zXqHkFJzqjtwIE52IMG*$8LJ5*enX0p7Fo+|STue2l>xALv(>G2lT3b9BPvs-rn zSRgpo^x2wTPN%sdN3IZ)vYz~zVy%Fxd4?OtP=vYt}GB|?<%7{ z#m{)q4x;P=IKXAoeIEv;g4r8Xg4Lv|T_UhgK^jM`)#4Fg%+=G$ta}YuJ-NLh=yA}a-(~8@k*$K$$9xPXW2iX_! z!w_;wvsA=rCk&oDaq^^Ry@WcU))UW{f@6Y}SURHUe8UbH{6M)?@B!`rvy&g6{fuxP z-w`&uD94j>YD()DyuJ+_bkgtYCmRXeLQHW_VhQFRl_HhuD&W4v$#d`4dEGeLSpSV; zP)4u)XxM~ra~*HoN(x}NkN_@TLdqAf?^D#HL!RJ`sC-K96-5WD#J#kzL8GgNv4x=; zLH2!1_U6XqzFg-PsB+s?f`cGR%ZpBW?BPIMmCgwa6o;*qP1}{G@p-ATF{o6#3?hV& zN&h}|zIrZTz4H)P6vf39I4ZM<+P#h33=@deQ@&&)E3+#b#XFE>0gXtf!+y5;jf~dd z?IsiT0s&swATEz$!*&;UTdzr$kd^GmhBCKj*Fj5B6u9srh@QPc-*T!fTc8)h&)+fJ z0}~vkwhHC)m_zQ%xtYQ!Gcq!N`bQ$l5fviUXd?0=7O6$pku^4dQhh@dl zF^p*ZTAyoqjAcKTnqU`H15r>JJj`d|riEDz=Do|BuQlPgMgd+VuFQQe?u_ZmyOoMT zxBtv>*`6gg=N+J-^)3gNvjWEEaOmSJ77_D?`6ar&R;O!ySr1N=#Ys>VS!K)sLl zRk&A=OtmG|nzlxQpBXScw_-4YEF+-rVPMTUA$+_F8WU*CAskRaVawe0pbDx2 z!e+Mww@yu246)|YAj+mqcv_tmKev>Mds6N`+Qp-8ZE=hJg_xe;(rQO(H6W|Ds}G_= z-`ry9`RH)BeMzXjEsEk~De7MVvpoL$xyVQRr$vQ?Y+$@yM-SSkMUBu9Ir00WJs*YI z|E0dVG;(D0rs&H(YI>zNqwVsTmUq3UtH^p5F&#sSz?|_Tp@g+ ze&S%GZiBA{37a?e;2Fe@K6voVqx+8DEeIdEGb{Y&Gs9_T8nz@!?kJ-f(S1SmnTAi4 z(H7(k4-NuS^j;J1@V*!DYif-CJsVHAxgq|h&COdp)#3fv_YQklbiG$Yl29>Y)c!4x zOY*stdG_aZn+_j(;Jx`phdpQW_4f|w_#|w3luIK>y3DSOmVMs91;+_vXH1^MKF7@ckKbK=Ov-<3=wssk<2R=|$4vf@EnSS)fBbF*k2U z?(I2YBmthXy8a$v9xFTCe@ei~jX(5n7qr~}lkV`S4C(!YQ=TOGT<(Z+DA?~T8*k34 z8o6^yH-il^ig7aIH(LK`oHLG-0Gf-FUGI7FIx8{8&6qhVwo9YESR-Lij*J>f(y<}0 z2mXM?1h|!%okDNOdDpdYVi>wSYUMoAPOI+HNc$&Yv~bT3MTsS>#C}`_(}#1Bm`Cyl zZ$zu{_9<|9pF2w{QfRc4Bn5jv8|3ibTknu=!G~O^@r&=4@K{-hl&;8aA!3aaQ1{$VuW#yP!!_meN${}lm9Za_nle>%)BTA&=G@Z5o8YDA;s$a$e{c1QF;n`4us zg%iyjP6KM1)Zi$=*$z)dS6xe&Ea(&`Rx9sQKCF*|b5~2Cfqsg+n+Rw+DCwqSgX4Hm z(!XVYoZ(o7^$5Uvn{b7RA+&bkhy6h;{b_7C7t(G2d0HYfGM+@&jrrRuX0Cd5GKrH8 zr&;XpX=qi88dGx~V|pZ=UdHuIt`o2c=bVfaE-RtCp3|HQnbb80!G%(?xM=tTx@}%4 zAVVB9N>SIs*pU|QvzZoSLl+KAT^vI?H>;64AM`NF(Kb{Ydde^Qjc-?N`r9hU_y@n` zK-H%ASLyTDqsEmuJ(2?IyalLw8a=1z-z;chg+}@DBx!z8-5HDr_b07C5$8F=iSA6- zkA_UTpRG5>`F%NCKP^U$ctbY^%7$JA)x_UW+{4z}xKk*w#R zZ+Jd~Z}m4PG-N35?A1#vm;sqHx~{EtI1SC+b!49y4gaa=Bp-z*JK^R8hm=^{9dXyy z8;`MHc-n7AF@3VbGW3SuN1f<8KcaW7%%FonXGVvSjibgl(Y=j$k**fUMH;C&Z0&vY zrP~oZh_xm%JUcCSfVpOT{e&^#a+@0}sY6h$a`fEq`K8_qz%3#DgU6E$4hmuMOI>m9 zj_ZJ+9>?m}tRC+;Vb4!9k0%9Q*IuW9`*2O%#g<=>ZDFp?SYQD<-m|gQL6>s)Llmc9 zi|VFZC`PY1y+5j3c19_qT`)#xn)X&S_O6XBzxYOZy@~F>>cMi=|@{P zR+2g$-SwFnLyjTT;TNMFJxoua>;sv@)3K4S2H1)^(p0sn8Fj?<;i@A&8)ZEkJACP# z_|LRl+H&~6#(&#a#5lZ&tg9XSf6?0~N4DTFFY+Dzy)ycmeQC7)c+~pa4f7f0#@h{5 zSQuD}tt;tP2_3vY8H&PkIzbvn>rPx9imL1Rr2|E5NNLUaLE4 zsuPfcCb!YK@H6n(0xYhonc_@2&$NEZA$A;eS_GuLLf0o~(#R1U)H%I5x~$y6r-NpW=1@2U}bB|MPpl?EmR zB-EI&+aU(1kGn!8xw z7b!0Y;4duZ=3Y>B>*^8wB+uI$-zb*DWLB88XX4+P7rae-P8_r}1+W39x&86u)3qig zr5Fi3pHv+x5C~S51PXPagQΊD@&%e+5a1p4FRLsY#E2C{;L)=7wZCfbE(-)%Y= za}suk4Ta6(%%H{jR`C`C)V>d znLtdh2DeJy5(Qe}oLg5Q{z@Mx+C4o6@yCx#-kMxcL!m&q1*ApP0wUhdM_cX=I)-{u zHt9g1ig7Vp!qh?0D^*3ViR?jrBO9hjcWC6@6 zJ5nbL`dQ1me+maltMzseD@oL4XZ{$pl+#RHRIV#&UHtNjEOFbCTR|~pMI@6JS<*Dl zfgs+p%+{z(i6&HTiCB}DtJA=vlR4!L4+sdy>pV`^<%(agc5oiW^QsXJNLRWt=$ zbJOzSU;6kf5U3OgZm?{!julqhf51gnOQZtZBE%n1l$`ij}t=AQ%QKDK~l^oLZ z;GN{OE?#H51!@W&L2_f?-VG@Fhfi^2_aNfmCSnqcxntmJTUF00%(l)RrHs zKU76v=pgX%T^79>o*>}YrpU{KTfwjOC=d25mU=$HuUI^)%Frr!J7A~bIJ`CFD|!R= zWX(;#5Jx>fP+_Ek$?E_zKCh#JtF4o78Yv0?I;jN>8|=rBcDv z^#Inw(d7v!76m22XEW!@&)Qff5R@}vvI9D$-Q-kK6Q}Wv*eIB)(;YxZ#4Phm_Oe!j zgsE?O*n+M}z~6eJB(G_DlJJcjpS{^H5;;)b0}cxH3ZB+0GFsV7Ftg3W(n1+PpcOG? zzPa*}B%o&+1TNb08UR#-8JmHR zy{ObDD7)0vJ@6UZv>V~;0eVFp0>tUs(Z*bPsb7|7X|QLh-x1T5sktzO&GIM>_TYcc zgnX?XM$3JqbimG)l}FzF^grQJUSvWNms1c&olOKh<3dSGl(pu(G%F?pE&{uQ6=S zc~HF73P&jx;0&OxYD$&GC!2hHyHoa-Heswzq5MDrj6$MV+KEu4{7R_kOI6urQ9tsS zE=!gmQyh!PyG=ejZF1p~tn>l_tcjjz_HU%b)L>i1aay?kjV{2@`$F`E={mAE&&RfX zvJQtA5v}rmL^N}Z?6ft2YKyT#5*~9a9EK+_SCXvXEu{9x0YQ};1(OrlUV*~USa!7F z7~TkYzZyQqxfOzecoa@j`w>xRolRsVyg$tvES+GChj+19=x44X)E>;_DBjTQjpkuV z4AzM|pzT>Ish%EaSYF+iAgbPB$;+Kvr_fD>?NLztj&iCz9G*3wV}ia8o=5`#+#B-f zC>O)}kEuaIS?@IpD9NEqF*rt`zSKWpZwu~ne(u#Vrv5}3G^STw2)5S+_htH%&m-g9 zoL_(TMG&*}b9vkZ=TBFc2KU)#;@_7+OyTFEIH`SMa33=VJEu6uq;8*m7gXnTW0g3h zK90L>w%-V{v%yT=%~?**#MXLegO@vJza28cV#g&rJ{QLM+Eat;&)*2TT>&J~VlNHu zt7o3Uc9rwN*$Y83?Cq0Xy$}@6eU0nl3b#c#&aMn*B5+W+^Fc=zZX`4^*n}GmKapba zNgTFr3V8D)qX6LBCT2u;wAdC){ijo)yrv7KH(qV%-uY3l5E0yi=qN)LQ}>nPi` z=?GJ&l=G+5{@~6mS1z|d85~!Fl*o`xPL7)-J6{tBzf7dn=yg2f?80FF@#@+4j6X3m zWu2el+1uitM&w{=u>HfJxL0st$Q3Q5Kl-yQ^ zGcm><=TnJYILG(94GcS|3Yvt19O&z*>*^^QJX>P)!94cjr0C(}y$%YMIDTlLQ*Y*| zJuwvQGY@Ah=jMEl6FIlE+84)SqrDb-WM+%rl6!r}m67_x3uKKta@q~I|%*kIczJJj{RRax2u`L|qMS3zgQGcG;(a$r-@FDD9BI;IQ#;76KhFR6+EnWtv zp=Xsbh*bk&_|_xtr+!t6;jo4I1jrAMOW<}M6P;{G+=$VgGTy+N3j@OQ?Uql4c_e9J3KbP zd|^)t=&%Q~ck9dp-D>=3wWkGijj5TtJRh+;&vK3+Xtd2Oy@;61_cAv=pSBKRG+=vlMIk zg$4)+v|4l8iPhRJvz}F2&oj21Hr8fs<80QmN%@v@ZHPMU>O^8W+qvtu!qa~=<#jX` zSEcB?b z(BriQ3I9yRw;1~Q>&ldOOr^v7!Zn9<8^07JjXna9@ANxbw8!>KQ8dL9#|Fpfo&FFD zym8dNm>n4#aDoBf+TI+B{Yb~yAZ_9}1}&KJ1n>_?c?>-9v1IgHV*_K!V?T|7*WIuB z!N6w>7h)H)J%Lizh3@qfbAnmQ?|ZxfzqmM|^vIr#iR`z)kLc=(1IKsR!W>@D@C!F1 zU5*Vin;gweXujA>u^S-az$h<8;W25~*JXS&jjqBp{&Fd*j$(fFx;!l3v(e~>;f-RM zzx0^Sejio;c|%X^nFdQI1vArfDRzbrf6p`InK;(m!);eGtYWv^}U$oIBPoN zWjp7EDs|aAuYF?vzkKsM{m%K@1Gsh=x{$UED`~TsNcVgbIbXufP9<$Z4$Z7>qKR;` z+vWJ1))_>OXm_gitIAb}RSQ&$RJYi%@S-@g${8LV5vDSzx2QT)PphE09Clg#rb-!o z&O1(}R~?RcKg_0D8a@<$kKL(yQFUAu7U!Wlt4a?WRAs6=!h+OGRqtqD^t-3>R>f*^ zG&3~MX{?&RYTR^98h_Q-nmLj8HIpMfBOA1@Xlu0=?b}*EZe?VNwkWchvquhUG9!P~ z1V_3@ZqV-3F4Jaf|DrAD>LMT4E{+V=o{M}+`+|0fHeI_%Td1`^G1>Vn#>lPwX!yir zI!4~MFQ4pe;5RJiH{7xJOtw#nZOy?dJ(m9$i6qWcZe>03>~)c+-ZAID8@jUQ{O7P zKR8)NN9!PdwEhP7p=%*Qq4XkidZEvdR8Zf-O-Nt$+~m1bnhS(I{}SqmT7n7FoQG;% zb4tdy9Ku8)gg+3`H2x(a{N~1|YfM)vm*9;V@n9Psp7YE?e&@K}*E3IyAG*YJMY0$I zTK~U?QAi+v(e@JJ@!Zyjv^HP|{&OZ!%G&DzD@=}(YP_pMWgPP%ejc>#+(U6NywL(- z$QU3luAAw~?mW}wg?tbf(uBv_lV@`L`WqLVy`4O#dc#3ByU?D8%7VZS0<8!Iq|@<0 zWvMD6d!A81%`WBPDxfQc>E}WF5qRc_{g?JmH-f--vj!fPbPw;SD8dv(iY#3rv?w3i)WYMv{xbGCEsiN@$W9 zG8d0ba`4RjgY3uF|4c08t#&Pm$!(wv5cpImAW^s-vB+Q*PJ$m|IZ3-5e?oU{eo=zJ z^JbWYMn&zXIarAt^pjF+5zusOa4T)p>C}nIB*I+T=6&A0Hkh}SLGvWn>joxrAB#H%5>1uDto?utOR^wV%bT6H$`x2V{a_}yZ26{Z`N zRArIorB|4Do!g?9fW!m`9jzHaIM^0;5wErc-cBR|)hbr^@lT{V0G7A0x^Ph~8}@4S zd_A~xL}z8&k+yevT(tic?A0mrJufAVO= z-Wk%x>>SC)z#SspqT7>oqU{R>m@63|PNwmGLRY^Oo&sVyoIXN=NyGx+$13q0#JvWt zX-KqbZiNfHsUb(Stw{WabtFVJI#V9zbL!9t$L-1om=y1hoDKWHAv% zOYYWZ2@3$vX-F;~&)ES-OgWfg1coHv07uyk5bzp%>0LfDSCc|PZ;A=bq6}1+BQyf` zD5Ozf0N5aFKRdH^dEX7m-ucb0(C4gmiy+jNbZaW5jv2&mXJpYRo2Ds}|x!iB4OVlHB9SC)O8o|6CH+CWiYO-6c(Y-JUp zfFYY%{!(EPsR&wL3?=?)uX2wdwoB3E15JtY>zEQHB`Q5hnw7WA39A7{OuHFx60@>* z6E4LU@#fu-hvKTZ@lOPX@c@ZqUG1ib$dne5)r*-TXTvs4f{Lb2ur)LT7uLYywrtjnd>QQ=^knr>5*zn#S|!B~ zE2|)pZ>@rNmY@x0t^nq!p>T_SN6>BLYhsgl3sv|dx;3|gqu+}-I1LR)-zvG4yFES& z?l-&eJjj^|WDCMWXTlN&Z9K$!ufpAM#5%i{gZzZ|^cr+%TV}*ds=)b7;rIIHrbwWC zD2Rbs^q&$IO3XQ;`QY6NE|kv&Ws-Gy*w@sH5_0!)fe9BHPPn=%py;r)W_?x%h!f|> z1zML^qlCw~U8w!MCr?2$DXF@cEHxX+pVN+ee^~rd**@9}XQ#*uKy`NYk^rvm6=v3G zDp4UbcIHE3Lj3Gfy{19(x2;Vc1)?S*so04IfY4lhME(hpPtZuIVEl61GWXNH2%6PS zO_8_bQ-Gu*AlMIwzZf8XEN2y#6MV0c6W+SYB1qBhDo*kj=jd6+ z&$a`Gz4G+TCAV2-8gNG*(cHQZxGd2@vf`Flm7&YwV}{*72~>!@BJiZ+LAg*%Rg}(X za#L|yAb@hw4l_G@9YiN&LAL;gLh(`HTMlB~3TV1Uv9WX07`B(v?dIK`tjiQ|1yl=! zT%31Hb*2)|$}zi<=}^)Wht;zBchsy)jSnLWmMtDW5zBZKn^QupcMzoRTWHg=07jQg zzRlvIblGfeOjZiDepzNE;nc7k0-$(K!IFg@LDxdMQUr6bf5LV%dTGNl!^+B(Vlx$u zplgOi&$v$y45}AwPwTG>@n|duRUBdP+ZSd`%FEp&+EJV`@1-(e(_**c3n_w#r(q>c zM;={Cpe`QQb}Z5H1K)`?4c22efUxOi2#kj4ZV9vX7@?(QLQOdf-ByjVRdXv)U&EI5 zVs!J+#Zx;e>oVP~T)9XC#Se^Ybl8P66^#wx2i{UuanU?ouFk?rb5Bap3gZ5)Wf4>j zN4D?Sy|yNi|5AiD#QDxUTIS#sAEu*Oz|y-lt2h1hbZ>1w37@vR_~VS$Nej7))|zlM zH9e>7_5h zG^iILfSq(Ja~FEu*l`?;BWNQDm`NaQ9X`b=4L=)NIQi?GTink8QvMNOAO=JZ+H(T9 zq@D%@D{kiO&gu9U#eHh84B&2#={x!RYn8nhd$LE*hU!K-zRgLnhf#1$(CxGinH|4{{N7dpyvLA6-}Y{U@9+g52&HIf{O*2*qwp zq8;{^-3P}8KH0A@YJtYB2pvPPpTGTxvR8FZ2_gY@A&N`G^tiSkP_%WbzQ&H(Mm^g? z8AQ_Pwq90pv2*-UoVPi-^Lfqdem2RXz)kp*TB|QMM z@}YRwmy6>elAC%_7UL%)PRW}j^To>sjH$)=)_D<7b8nl^M4urEYI>yzd0&UWyyf1gy(nPNZUJ~Y0;JF9pZ%)=oblS0_@L37-J_UZk6^j{>wnT6 z4nThZ(q;_;N!#F9wGm7#Uq___4`Ok5#fA+ea>CMT`yD?inKLwi+4k@U=V-LpAZj$4 z$3Wjgy)E|z0k~C${pU~zB62&Ki(>=GFJl<?{1L0H1Lgom6)+2OJdvq3lcN3#|L2y?kK)*dP!>R6kTRmBpLZGL~J7 zN-{9mIoJ^)??o`VmCe7{uaY6cp2pE{_CO+k4h6&1=z-YZkx{zjpaOx4?xnm#1jD`? zix3jkL`-n`Jm9++=FPTVz%EexN22+C^oEF3AME7bFshI}qxL>;`VYxLiyXAK$=kSO z>4ShrF0pt;3b)fBXPVaIq>;gR$JAZ%9 zX*lNuUz86ApV?&;BeBjMoTu}5T#_@g6*8-bu|k0s+ve(4ype^QR6iR|b&X!NxsSZg zxTu>rptlXX?D9BzJbH#rZ7p4$8PH38++F!o+hN*J!Fa@K$m8zJkE5OFIP5n9=xwhL zK*SaZ$>xbLV^D`MKhksokN;#QJEo_2-exk9CR_o`ID{FIk~|D1o@%xFRF^`bz>+7U zPwaL|7BAEGY5Rs+16{riMy0lo61?Js?tL@a@96_N)y8OAsA`%#2n@7g^}=c3esmV| z7uWY=H4V!-Jx_s0teat=!Uy&TOj~asj!bMt_2ik0)&TYgEHLyB4xp6`4dR@^z_1iU z&(oY6P6`a0VSr3RPZig=(LTg%vfp41pXB^7v^l+vlFzmW^n)gOgXvdKVuuiryFFlR zaA0`0+`iUb6pbKP3|4c{M>9s2@gAj`aQ3?lJT6?!=k~Sk&iAKOp&nS!KSBq>ua`N4 zY{dqIr;DG)$V9gfp*!hi4m#D`J6^=OodwU*s{y_5GzFSC9r-YZak&^tvj!oKAn&x# zWck5TfPI{J0!Ge$95B*}dik=?sQqUZU3Ub+ z>+L_#*0Y8ATaSsABgFf0cfQDRzfRiA_#{FzqAi0)EFbUMObb}~Q@2z7$!8OF-x>I; z%YEr;=0MB+?|e`vMsW_`i{av9*Rc-qF~$SjBJ4YU?Edx5rQLWHorC(EQAayjeuU)w zXcc|&;meJ4C%&~GQqqlhXpFti-?MjsQQwcH$)Ur}ZBK>#KCvHgw}0kN^L~%O{-r0~ z(IlfNxDWmy&p0@DfI0lKyHU%&!rvCDp+{jjEehB$in|XwdPnR(^W$hy0BtQXBZ$NQ6CX5j-g24wXSplOD#2YS4*4+vR9usmYl{|bCMX1%2G+YTJmcVIy zOT(doMI`Wt)ke@rv<7UJVB=~J_#j;;uOi6y7AZJ z=?c;IMYpZjrkcUHLE=f~;-e;;e}m5_6)LZ0h^@2J{zQJ{90>x=-i5)swV5E2l+!WM6amUrIN^P-*kOkj5dVwK0|QscLWynRJ6#J$%E zYe4j=)fNhG6`Jw>?Nx!?nsRqd5-b{BlR|#Bh50L@x9X5z@hAK%E2I(F|8PzTR^#?q z-NK26c-=}y5I$o4U7cX!fkg+Z%#dDZ{x-LY8{rYf3>wyU= z=FH${fx@XA*IpFi*TINv(!6*t4H*j#9LEV<+p|b>-fnDv)%w#^z>GK_aBA{npldA% zl9Sf5ix4G*{(dG?c%f8E)<*SJ&gZ4WYWD*DIP@mvo=gQ;d*}tq5u+ZG1k5E{(pTvz z9=k9XR|$@mknrPkA76Q^RO6N$9QZ!rjRH9GakEu=uZjOLh4eH>%uV*PQHiq3`Nbcn zV@?V*_0b*l%bF(^6sJ_agPMAaQ%T?A`k-^w2w#nIcQAE;-hFMYo*qLPO20`CX{;@b zu61~rgDKE@SU4^(30M{f&1v>dv>wyqfvK4(+_4FQxNU)Y23$$vxt*Z+0$!Nf3yhPQ zc3UT4PN16C)XIWJ>AW35v{&|)Gf{fjW^&o4Dm!=o>0I9f12AcJ)(ebbF_UF z&QG{l8o~)@^74a3pMHfCWFNr9IXvM~_N#T$++RC^H#p%ejhRSQ>~`;piX9WLtxloz zv(-mI_>7(|!8Hd%BC2)?0ysy_t*RzmhD1`U>XS!a zThsR18j*K+W=x(ECGVAYg%6WFLfgaQjTQLqktd>noyR;eoy@C?t+pBjiRSSY+<|0sBJs6LFcX%!Gvst9y@i zaNT|cw2347IOG?F{0<8rLVk_4R!=i3qWNGZFBZCTRnlsd%B?tNlGM?-^dxXL!yCxE4@o z3@syGp|cdrl4%qF!0?a&Ek4Ff@z{cBSt3zQS_DweH2a+r$VrH7mAzyUEV;dd1BEL= z{ZuLMqVpT(x=RJKf}(2xzr$6cBoLB*>_Z@&dUt7M8ft7Zh=qYGs z@-nBp=0KyC=(oagNIoZE1!#7`kT{^WVT?yjX~CtcR@qNe`(EF7QZdLgupd>iBhVJK z?uLQDAhJdAuQ@KRuu$L*OPVd>SKG+IpH~v{s)BwBh`cQzdtmoUp#Zvi^phxFIPG=% zJqm5R3ZH(o9U`7>0bXsPUWzua%uuh4Q0hU`p^QmWHp!l?ZKbIJ?AH)~MOO;dRvs86 z;fAHfS&#y8qlQg^{!2f#P^_{es35mN?5BGT!xv1Q1Q(Xvjm)GB;2EuOt(jsgssqRe zMj-U&F<`%713Mqwz$~&36{$5wlX)2IG+;EVLU0YjLUisjG+nQCYRuHKeok%XUn#z_{5oHPyB2h^>C*y0W@)WuNr5b2FYRv7E5btJv67ReLBAVW(;nc&L^{~mjXh|0^LEN5C%_2i1mmC%@SyG~NeRz|La zU=PyFUMJUC2_bIask_}Ex7oFP>d0*|5iYM@SxKbqRpK^^=TZ~)#_TcW6=Gw zAllJJzYpp4hcoirhXyGaHI#G#aztlkWC&7y(;m>1=|%Fe`2U7uNR8WeJ45@N(`U`> z`&{(=D(~fn=;*|IE+srJeep82dTekrSZ`ye2=`+PCmkCYYWG9nBAo(poDZJwTaP49 ze7y;v*M832gN+i@SXP**&BCFrA95(XSnP8nJ?|Q+%IR)1&X;O!u+P z0(^WmriSU^pna}~QSu=tn28@V+54E$0CX4t_XW@ys7M`pC{=dR(7pX0i0c!^$T6K7 zgLk5wbnN%I-d1;n$}icfmoKj;IK;J+?!jcMjVHB*BVk=muFDzMhoISWPE()r34E0F zIXBGeK8%yM%b?UZrrzNECGIf9A4Jd@(Q3)b6JR@gJ* z{5$9Fyu(TC4?J+qZ=4!zbf}s=JE49)e54J(22?HhB^m$K*6!;$c;m-kUi|&&Hbc+A z(6pUuxSULwkg?%r>jx7i+%9-pz2WApA5xyiX8vQSTX!4t;+8HT0?d!s?Sr1zyNlhX zOJ8%Vkv{FV(QO{8T-Z&6qnG!N2L2%>#+}1Q*sGm`fXN*8BU>S5r+$-pMj) zWQc>LoTs@A(pD90**cc!ZW`=g(K#<8?Y$Um|HyNojrlLs*|1xN`Y8_#j24HBYS*l) zT2r<{A;%P1#`vQq4gz)&{6dTh+_E2@w)W>_bkbZx$yfGjYJ|-M({{#h7=Gfa0qilr zBs7FB$-XAOeYaqE!wrKfNdllhLw5L-n*Bw2Up6=pcH2OAOc^s^G9GpZ>i{0QZw(ud z;h8W62E>JQ0pzydibs+$N5_19GPycLf8qYB`9c)ES$&F=^{F9@`7`s~*dV^J0C;Gf zh~XxlLSw$?kt7Bmv43+5dv8oXa<~o>T|kQS+y{q{Oq$Ap-r*01ZC@Cm(M1!lA`g-u zCjMmnX9r|PavosAOEUem2l$@}M~)!>6%>$ich{d%bEECmZpfmrFAUw-H;vf;CL6@H zU6Xy)azm%I7A-~jbK5}o;83T1$h~b~vvc_DGA zewl|aj?K>NIOHAa-`qOG!pLuussJ*T!OMO@Ro>MMW zCTSH_gH+x1#A?uzRoM9r3LHk=djylgpraK81qLP0 zG4~d3Q1>;eK-bv32V;wz!`8kb;}d|FP;HIHJj~RNAAAaF%9l0PuDVRZYOZ%+6j z?rG-VfPcHr`^$|=mC>6*PUgv}2+w^8_y)RAWTP8<9cVQk9s7V?7J+QYBfsrl50PIx zGA#Kbg?@W~Vp{0}!-h|aCfLh82KxtSW#!hhYX(QX1!Oj2;$2i;kdNm()cpfk;d73n z5=^GTr3%iBE=>?(*SRy_;aNM;_S+nt$R1$Ug9F_?sce*UCpUQ>(QQVp9?&;{pY8*g2IaZ23S8$R(K$SB9k97^|elh%?fmY_4bH}a6;i!#9 zCiu5-_y}&jWAxj{-A8Uc>kcdJA(ZyvQ!~zC5F3QQ{gPFPiaqDv{%3b|h)>+5^#bib zFwUR05pQ>VO&T4ZO~+5#jR6!U%#Y}cP|WCXXwO7PZI*Zu24)vhiMKKmnAnWCp95!d z;+}z?Z;sH$;goPvZ9%bC8|eMDNclx#H*$~9I(Dhi3uQyUhjWXaD*T(pEw*2gx4L$l zE@CXcsz!h@7I+x(DAvFRFVZo;_d3RB_4T2PSXb>0q#dVmLfo-|k(uljfZ8L2bWt^M zKE22+ZW6AG1+Rhi|Lit4FcPDf5gf*Ij52;wF(Z@`y34txs}l<*SgXPc8IL#jjs#-I zKQX8Y&=K|FQmQ@!hLcp)WdlZ(8HwGWr}SxvGdOP2^Q-6>8^N+;n}rx^1GV170F-@9 z?JquDL>85upQnSPK%zBC99GIs_ZDvn|NTNhWQY!ZKVSgzKLUX+q6-=~UAkM@uO=5Y zJchXovCNg#3@~Am>l*^K^8skElb>CiPsoF^T;5Yb#7E#N=y54SX~7Z+~ETs9)v7$K-(zb9u>Y zh6F^*Tr3sD#6+9i9^JW?kL+vMcVHRj9ex3}-wC!?6o(5QPK*q@5)lC!c$}`SBbgz( zpY_Degm>ZOCUHkFaffrj)FQ%$AR-A-hl$Okb)F$BMKS{ckeIo_JW;n0&U|ImokFPM zwbH%mUyb9EYZSZXFZ2)y?}jnrHUuykny9W3Z>xEsVc)?? zbdu0F3)6leEvv%ru4X0ID_RqCIJcm+x`93Wn!N9qWAY*}m$Tc__g;7Vi;Xs zzzc@25rh>*<;x^D4SDv4y^l4O3TxF{x9vR*zeP>362!s|I%%0MU6dWp>zqlx*ZpiO z%4pSpf=a?4DNQ*2L=)!y4U)pS7XX_|$w+XZ?wZGzNeBKE!PgIfS28y#r8BuJ(!}PCi+O7%&hnH)h z#KWO$s3oytMRBRH5 z1KdFlOIJc~E)!CT00wx1D~NTNkI&R+HM@PByp2MbTdN_cwTCnkQ?u9_-0Ec($!uUU zrh!8jSHMg}i0UK&6i-4u)VCdUu5uICKVnCVwM z@!pse)8)7nYF6R>^3p*Xe(6Gc1n?Vv50l>7_hymfjl59UmZyqwy^R~B#w$;I%?$N2 zh64GUE(6O`FcF;0nnp%AOo6oMvIg`HX;`X1CtCN{S|%t}L)&1JCD+1i7!-Er$0)db=tGo6QGdsnU44 zh>8IiQNI6DTsFeFCV@3ALh!cfvT>=$jDRNb3G2(`?m94{uI+ne2ASI=ytTrd4!zTB zq1KOP(0-Q|kuNI4kl z;Jlm&ErkS>Ldrp| z2|!u`?XZvzQv9&>;pzB-+!{TVQtT} zoAYWqGzUYQNd)ak$gQ|3lGQLhX${E?dsQ_*H;dN8jVbcS{8EsA6z`psBV7>W1g?pk1EoU99YE-HL6hL4Qah`uGeE0Gx5?-Z>`c@3k& z{$lzQ9nqbWBYQ-UFjwoG4flffX84wP;QgIpv-n{yyp~Wv}|7 znWxaegH3x={v{2qHOI%rOO$wb12^?+O_VN@HOuU53SD@dnH`qK|#8b z<2oJAIP;MoKxb9#t>6X8>(ktVK{Do%J>L}zAPDk=?iw$4`3*D^;5Sra6Rf+s@8Ar6 zSS=(jY!VJ&vmZHt^{t|aoRE}bTf-tc6g6k_1zD~upbjH$`3|wlW${Fv*UWF|?vc#k z?RBpA3sudM+E~fMmmgK={PHAXW&&(Bc(8S6L1P2-NzF3&){g_mR6wD1o~Cl$qLlLa zC=VU9gr#&a+uEs_sw{8v;p{ejJ=X8^^K=IhU$sQ&-j2uc@wDx{kHR z6vSAcT)Vb%`EoWsIq5OrLq8<)D1jvL(S+Fr3t%Fw19C$rcpQivL+%5^a~=RQq4*~t zopGv25@;fnk}*an@_+&V5R1b_I16k zHJI|!c9~||UNfcIUN@!9Gv(|y*;4nI;Mij-$U9>yEU@gIosnKZF3!#`EFeFpT5>Ff zR{q2KIdw3-l$vSE%KJa5nbz>W)SPsal{iv!EVguVIW;GPTuIHbkw2$eY;UAm3iArc z)ihIq=`U&N8U1PL=8x0TbJ7dax1?pw`vL*1|4y@-<`1OjrR7^KspJ~IkT28o=B4Mr zuk`on|D!Aa|33U+jxD`09o6%%>DC;wE!}FhSUb}#X7X&h#rh_GlDE=}^50G`Dj?U* z7VF>4CY(V2Zq6IbuoPHMp$3QV!=D=&7Fg=u%s@4MH8U$WJ(ql)m4}M`RhIdmS$T8P z7lgmVf4rNOSFk@T&sJdNx^uE@1>1A7^3uEDqn`Fkj)k6fE60M`-Q&th8`$DA$sf{v7^%3q#-Z;XEYmlf3l#oBO4}YD!Iixd8c0P81*@ zk&K}a$jbS!&}RMbd1-|wQJf#mqbYaJ&q^!Eyug>pc|L>B(Fgt)p0}5tF37F^-zM-s zI|ne6DQJSc`Za_Tf~H0NR$-fg_vzjy8n;-}sNknBd#m}^+Y=yc2{5A*2vg{b`mqQP z*NhEo>qjs{yqLnTK=*xt7kZ#Dn9pNIOhvzN4h%m&7GNtm)%wr2M?cPYfAs5*rpt#@ zFcY9>PM`OLN!i5DBYiQedpOVJFNXagewyFTGp~gndn^=B()vh6P?*wqb8gHfC56sT zoOA(+@;(u<@bBFPeUKeXunveb7i;E_!0m>*3Xxbf`Tle|sk%S!z(VOFATJ2n#caA% z8uw`qa2(7#Aw4J7T6YKhFyslmV4Y)|mgB0(C2WaJ%cq;M(jk3C$pQpoB7n1-2 zB=`b((WUS7YkYSfjqmP5Sm&?t-F-ySS;lHW@;WCuIJvpFP#;tI*)sTMD8A)wlTV!V z9LL9YM;x5o6k(-7eBusG1E@9{7leXfPmPal#(Bb8sp!{4ts-dUVo>;Kl%BXFE4yMM zhY-31hw7t0x9&X*N0q7_88xuzsDnX95aN~6b4~~j@IvMS@d+0*540aWJqj_V4WMWW zVti~3k|yh2Xas^=D)X>@t7j!ue5SWp4=fC{zRY`qTscI_O%4TFl=>}!>BmHKNm*t| zneU=yH7e$W_t9GSWLCUf&ldDmOss={vY?0LEN+;0J9~G;8ARvZ$~~K?3m33znP?vF zC#7hLE;k#VCXX=_@~=^13Z*ZB>_kI)NlJ8fn!qzgQV+i4g*qQw3;?7l2vZiOv}W0o zdWCl<|A{7QJQ}bm01hBxL`zoi598&bor`JPqKHBmKWF{sIE37iHHf(-D-d)`*(YH- z5Q?&BjGWMHN)fLBjZ`JB&3i-KL1Do)+2TmpgtBG-27d@szT5@kXdC5>_)*E4=+Z^M5x|U7rs{lM$(Ztt?|BUbNqw)QHAK+1IR)aQ}10k+D zFs`!6(_y-xYh`D11mTf}dR=_-4v=4_B6vK7Qh2gbf)a8~Of4gwvpPvE8?z*XrUq*@w7Uh359{5 zP1qmm67pYQH9^%$OMOC-(PMgi+ORE_SWwkC+~jCZeoaFB8Yt%{N1n`%4l;#Wn%A<+ z)h;kwj{)p}PCyNiW&ePR&RbV0{1bq#roYp6-Z^;dEF~(IT%mM4>|l<+H8@I69rjU{ zmf<~~12qnooCTMx#vtp9ZVI~%k}moTzQ;YYwpj=Vl+-iR#!lb5w$s+SI`9e%Yf&PE zS0~$5NY~Du3r4l%fHogCpgRF1zhvL2++%oXk=9y_*J~j$`K>NEx-a&sk64~dD}#%| zEWESZSpOf4d?MmUD>6i{8&axw(-i$$rVd6yV0xLZnU|Sf5tT|WUlsaWsJQODjPBY# zgP`ZVX11DM@f+J;4@W32U(NsI zvWGUuoYk?=qon?)0M6d@fZQiJ_(>OxE7CyFeb;4oy-m}IVSfUhk2w~owHO6pr|zgxt4L zZ@QJof(K$kb+{4>W;t^xI~26|p-3{vn7qZIiO{6X6S&95;_mEZIEg0|@eXl9rHG%! zIeP^In}`^6kr0j>fWSe?s!x0`USM1vduJ^Eg(6)c|5W@AhCFyX(UP+9NHUi)0HWT2 zw>g^9(1XYSj$ogke=5EF26@C3{Kn&*pV+D8js26M8O6h&(DCoV+wxCE^aQK(Gy+l9 z&o&aHf$#2CcE_topuK;6D1PE9i`%UHNcF*Jy*ue^I4z^1!E#D#Xl6Cp-V_K&G*f9+ z4M&;W4F61YNt$49T~or}Tr=P*GN0pHXg^0{Bq4ewKSYyc$*&&pN?(r3RYPz|P8d)g)l-m#;h=>a> zP{g9T-T>G;r3QUt6}rZ{R#R>)j$YiileX9t?5oI;U?}=ji7C@J=!zN) z+cFY(MNLP@%LAgF-yI<@(-HFWgc0)c=r0p{$jh{c#E!vNMOt(a^^Y?@MEig9F!NaF zFsa7d!eC0(Y(WhiA<>a-6~ZV-t{{YTOu|$__)lV5OjU|C(KPRvhf4?AH&i9u(cH?O z6*dq9b*wy6m%`{c7&faQn<%bD^&;oX-$H}^RJGA+vsYoZ?*WY{A`2xF2~);Ajy;IJ<8?6?YB_c zV-v`ND>(c|FZf#%9wIr2O=d7^uo+LnSyMr9l$vcx_GkOv5ldwn#`k;QD`G<+dsG(^ z{Mo%$-|0sAi$N`S3$MnCa4AC&dq#AZy*f!G6wJ7*!tSzhrK`#H7jNG%1=lG3ZqdQw za5>6eC_q4Fu9~LNQbQ5=idQbsFiqUUYq?A^RtCd=xN8FIER(y1$Ncu4{dKQ?{`T|} zo8|br^s@b`qTOas9e?yNE) zE62W2e)Du+abTY|q5FE&dcz5*X=;<7oPYA^guB`k>IB1+^N*f*0KfIM%tNmE8`yNa zm)|lU#(+o97AJ&ENmu`+>;Jj#>wlvCk9PdpoAalTD%D*1^}dH0bQJ|$Q1lb{H(ytL z*P<&Anad~wPD)5fvF~5GY@yGy*GI3SuB&TZH4oRXZdm84jrpFfv|9$tA?^x`7W zGN;$@kmtH}KQ{;Pr227Mg6u$sCtuvE%(q4MHXO_T#42Y_|h58{O`o z{_Q5=+s#sQ-aN!WS&elYmAf8TO*wMx@|1xjaIbO(V#3SC ze145RwzMXth+~_|Aqu4owcWAyFc+s~8+cr47r07O=ky%ek7dYp4|~%1IF&cT+VcRM zKA4$n0mm36p5~y6v%lC6w4qjbo*J!1DS|$i5|{u@M8sGJDvMA!V&av*A{Z&$U&_DJ zand7hvnY`(yBknd8J6uAK(GX-u)hoP?gr!~Q{tc|O&0NtEspF~yBeQUYoil5Ht}*Y zPoAcTGJEQ=_vikIIjBk%Jv&q6;2c-;y8RT?Ucu6#&7kF|=^r3J`R-b*pRUFFC#=Q# zM}L{P7VD>LF}mYIi)nEBSs)Z8rmOc+&xrfyaV`-cnlS;&pI#6SqiLo69_CzryIv4g zA4RONU?j_Y+lU?fRXnv8tet}e0EnwokVw@gmQ}6Rz+i^wq^B zP+;Qx+-@5DZGrUCZw2G-pI<`4EY9#?^8)gZ9`-FeCs}NOyuak<{5J+(9DY0&dp3FC zm=-5}xnOc-hbyPm+xhWDPuArmlayCIAv)aA@*D)%T)-i-25ObH{a%C=)}Y?h@`mQ9 zThnqNKsLaCliE+7Yv_gcKU;IfWh3uKw1!%ep^&e3gyz>M%*K%L+ye!t;h2*q_@|8U zj;Il+purehEX^^31_KwA+@poV)2IrkPT0nXx2kz&5UxJ^LCZ2-OCUBF$UJ9$5lpZJ z!~!PR?h(@nTR^+1cRFRG*fz3(Tk($9b+I!IEBV{F>mD7$tbvqaIqPRn1Fjzv^&&qM zfDS^y=>)FdZ^yWPic7zxM5^DS9eH6qVy95BQe}8TRJ;oQz$6hI-QU7o0}jz7Duw!U zvQK4uQ8vmYABG-57eNU?%A$TW1X}6JIzMhTq0~`u4Byl!PK_~JW}WWYFB^zlPA@Zn z%lyGZwyIa6vLpsDIxj7DKea|}hR1SMJ~cMz@*S>&c!A*wv5H460!T6EG2}#FD(<}6 z1Cru5fJSI?^lz_HZ&B8nhUx%3b~J63#7RGf#F=KzuShW}OSWY1v<+$Y8InsB4UJ1^ zHeKy+LXGdkh1BjWMh64=9sOi+m%qJG=o-<`%FgHI5B7J3q*!tFp$B1J3MlcxM{tx- zOY6}Nr04tdJ<^S@dOOZ{iKFg#q-A4&mkED+{7sF?D7}8+RZaoXZ>mwiewN%>)vJ?= z9;v&9UEL{~~s&sy_~Lc{$+g26V^FsJ-GcK9J+kD3vAIb$6WMB|T(7o#Egmn(4W< z@7WTnjqD!2!GX#FIFw0| z1=F=uqYua2%?!D46Sr_-R;0_BmaodbRVQLp0T!`(m0Ap4~9SvKXh2sFn2eaPAh< z3y7grx^aNAMuQm&>rQ>eFREB4{gSp_owt0}+;*6-q`8N)CeN|ka`W;nI}-&B5TaM) zZb-1IB0AZ9bt3>mpS6uZGLetnf=&P>isW5b*3eXHmQCz8SCY#*FGL9BhP{&T0IHZMe-o+N~<_&R>9H=LES?F`oFZ9PLqd#T@O4-pL z`@*GtPHCURFNDZcLBXH*(jOj`_SN41A;Yc|Wh}mVI{A=a)N6h%$#3{+UiIsH)DH=3 zef#bm?YSGOlizz!fEDYU>sL0Bd%eOR8`d^7xd8e-+ysEjRqI=`P|J57mN>#+eEMDP z?4Bg#-h2|(I=^ob1nsUfzeqa$eun&H5!=nYl0=v8cMa#Te%~H{wl67UgF%gjde~k0 zi4#f4^%Sn(#JN^KyuN-px5~BZ;k8f&IqvuUV8eeNxyXMe^+yLzmy5!ZS`wDV~vm&&|STD?Z1=891qQ?4*mOb!#791#t71 zV=s2XM&N}UXOr}5G9|c0igz0FBu9IK?@V|fq)b8x4DZ5t66`}rz6+MLVh8bJWbI*d zYSgRq1>EH9@8%&7tYzNG-_5)ErD5m%qi3^cz5fZ{IbW61e|z}JFQ5M7j#>P+`A_(m zf(r{57Fy|X`>LkgQ}v&$m<0gk$FmkJ(m%mU@TE_aBssZm)@}X#1!td|r9Zi8))Uuz zQH3%Rum%6SJ^bKl{>Ayo1PsXP`(=a~|L?vYsqVdr8gTv8uV;Npp_usv>J4Ff`HAjX zw|gNR1=X_tlRH=`Iek;#_g>)L8E4NV-i@Lk^UvN$yqj_Mek1@EjrTM@ z{D0nk{68M}e_V2r1o(fxq_2Y=kN;a9UW;V;CLsVY8v%e%XaJz-FYJYL2!MB;aPVJ_ z0N{KrEIsJI76E8u@tP`G3PK8ZU|Q?qS{_~xwS&px&L&~W2_VSv;7f4UvR&_!Sz0Sv_SH` z(~0i{J-#n4G8PDF!5PnOV8^BtLeQfH9fQFt`BRgGPgpuhXu;=Z;jz76WQdxxyGI{pvn36EFR*Po6G9(i3fxsI-q?_nwQr?tsV$~0M>=n=>+ zG1~m7JDNkK47*{;tpYyA-|){3gH_#Zj51WORBaI*HMD?fXG@E)``Zq2A^J3|A7D7D zPA!zBZM`As=<~OK2vvww1%+d9ig?{){v|iiLm!8g!qmbJNCcw z@2mSwANi3hfqvrGV>`}Z9meNYY_U!kE9xz-OL<4g&ITy?izp}r9YmQQgxR$2<;YPj zUqK+M^!}1NSPiZ8iM2^R%>j{GGMoQA%-I?Ky?Zs+7(6HLsDSx|UKqV*Tu>;mpibZ68G-*Q@YXx@*tIz_jx&y8d z)RI`zgoNOFBGFp6lxw1HL2gW&bvawJq{9jbAwKs87TNljVbXBD9aBROU0JfB=}H6d zP}cqNWzz9Gfk^r_&72#9y$dOjLcW%Do~>G24)e3*G>w0PGTB_}eqNDK=L9o2P}SF*G0JKlIJ&{q$FCGFMBy6GM*ozQvVG` z2OuB-VmhB7q?q61>HO?QNyzjN`7#)5#0PGVR52ZvPOPF=pEh=!6Uy$__Vr}o zP|m@jv4aP$dLVDQ7GB<>@b*Y=NJpN)CIdQ6nZmnY*L1Nb zbw;3DQc6&qbYw+p8ZRi`QR=Aw9AqI8E;89ZIdHEe#9(ptFyU5^gbNr+MY;<91xzd| zaAk*Msv!Frh{R0XdfF}2Aowf2x6*R}Kvc1}eZ-CH}N=JXV^0C^0iNpO!5 z$EzK*O}UP&U_wC}79FWkz%LwUg>6zg;N<~&7e>fQnv9cU6FpNnXwEVM6IfhaCr#2_ z8&&9Y!;V$XMrAe5znFu_3yrn-u)v`Q?I!ZklR+c}z(G?e3H7kK1vJlF>aJr?Q5uzV z89#hVLh+E+EvRniJYdW6LqM(lJaaq#AVDgqJUqu3)CTVt*dJvN;Ju?}Qpk50V0d-s z$5rx=8A^v#4E)wZq9olZ(Mo?B%0Z{pf;gA-a<7pFs7BEpBTdodrr(O)(i%q-O;0I< z)GHf*FXC0HOv+j(8&kupL0tp^P?`sKS89)&aHLA3+^IiC^ze#ksoV~|j&QRP`V41K zfjU3<&1mIYaGE?v#P7&@BfWvWk?(W`55i1hXWgAe4EuiZWxfS63~$Au;*x0ghYk%q zdMzKJ>YmB`$j|$Z=_3Zz+^!Y#44I81NdpdM)>gw;K#D#RJ=_)St;m5_ufu$9UaGi6 zENvM`q(dT`y(KiOuszHhx@qN>&>LC1f=@yJ<0J9oUBLrX@$dT&D&G>u>e|Ct+?-S{WuE%~(tq4+GnbM$;U2~q5##S6D}_s)c&B5$i1B-+&E_n~9v$~Q zW9*3WdnK8<PX>xUd-RB3ukaw>QdRLpKB6jcDj+jmeulUGfWP2A za1(L@ThH~9`#26g+u2_WY*AtJSaIB^iEaIz@y>~W&(i11kourm;c9;l=lT|F!aZ`_H-F;xaG}wg>%M_{DgcW$sXdA!0-!}gHIs-XvVnRb5 zZCWQI*za#9LgO080T-ecf4OP&j&cf*W`uvX3{rsie)E|vH5EQo_g3J`tPF{UiY}&V zGenwuk@zw#gVEdz!I$uRf++1@cl_tGbw~V?{>`uNtYkC<5Z8B70{(v#@c-!;7?O|r zE%N;mj9-G#aU}oJ?`tM+o7x2@RFjg6k(RO*v z4{@dOV@}@%DIIo%t{yJ{Vb#y1=F+fLu?zPt(2@e zU>J#+YO~~NCTSslK0~!p`LsP=EaQ#UJK~Ns2CDPTXP^{_)x0lXx7RqDj{~)zlfivm zVOs-tLp9rc2`r}tf_ndglZ4Ww7M!5ChUUxw^Y`E7g`J_iurnYne4E93X7rbdys$Hr z7e;q1Bg;WZIsOiD-e-agg9%dIUUmB1ejogEQa4lEs&`j`w3jI4SJH)}Z=Y_7x^kp| zqt=Fk%#X%HsukIGuoGd?mqXX~KlOH;MD+g#CE3(JPF9)*50m=N;no_ERq|gDmeOwI zq49tX=t5Q;%sGCII8GcT3g|V;-86x+@dS4tU`pty;(3R#$laF5h;r2}hFn&Y8a@4w z&Vw*B3ErIZtUR;);Ro8kGx z&7gbgX4du_Bhn_67kA^(Zyx@mh7UhJBd-9IAKnbmh-SRquYhLd9&U6{W^gGKm0R z_^g_t*(44HuoaLFGsOxRQ!erbZVZYE92T4s#_XIot%uUr8sthh%5|6P_!>zeo6ufw z2PD@m`C|=8S4&1#o?k>@?*ZAtQI#j${*+wshJ26miWm}c=5JFO7Z~w0#;!2A?rn#- z_P(m$913qy2xd+mJJ2|7GgaBdxX;Jv>W14WYGB*2Mw-!R=^$a48jA-lWh0x~wY)`lU6^hbq^0$I;< zUt$vCS4S7sia1`f9#Wf9uukBZGL}XeNu+nI=1a%!vm|w;kP8zDN0MKSzK+xX4*O6a zT}ys5Y+@y(se2{;0~~$oIhD^K*r4 zY4O5d{1`EXJZ2g^MK)+p1rKz=6#!P=vZtD)1s822&u^BQC;x_)>zSX8y3=^D2M3m< zs1P~NX|foI8OY*wqRiq|ImEI_0?P)g;#968E4L%}IifNJ=i<*CMOIEn&T~MQ8H$i@ z5pbpu>S-}6{?+}jM|uEuE#j{$Gipkf>;e6=2CPN6>@4!e3?!A>%f2NgDchh?(CkK{ zBc;g2?;^>y74UF4Y`P(Gj<0FLm4e@^-o64TdQIu8kZv>G5R-qTAa&0LAI>emSv#@9 z$QK6k7LKhJw}G6#LDvrmIjUw}8ZV@D9}rKbDgfCtprfW)bA`_k@sVIhv8?viDq{$} z{UOJ%dF1xPFk8%O!+3LE`9+7c5?iHH`J{-K(&dPkBnK_G{R{qugA(=Z2EN%IX~-I+ zAXz~7^rH>D6$UqJu4s3#x;cXQ<)jkkVvgNe^tFdR0ZX#!Eenl_KH`M?m){f#E*Hh3 zkUQXdY9u;)sneuU~H?B#D>LU}E`!Ge-CzAVU#?^5-|I*aKhgWmV8 z9Mesanc{nB&GH+hOI~O#C(&z4c~=eREHxn9X2!Tgad7=HxQS#?5Eam@w8Apx@@$kp z^QhwRYl=5tQ#|^b>{pR_3L;aS%2QOIo8=OARl%qx^iVL9A|mBbv>0G6QuT{~%W(q< z?HZar++e6%a@2M-br8NdABA_XlvU!wyp&+NB5Eg3vQg%P#2#o_ za!~y>D03FFdfMe!X_Ar7LF`4a$BkD~2lRmQ_jO?AGJ|Y)_^k?#W|xZ|s^JtCYEaG= zK~mzNdZ@Yy6~*6{4;x+u@`;V(H z$cdn%qM%-w$HJvb5L~$sM(0cDRmwCc2EV5d)0`L}|M=ZL>;&z@PH;Zki+BJBhXVV4 z7-)DS@aWmxz&>k0pE00lJ;*T)O)W705E8xCadke$|3>H9bx7QGt!v`wk#7h`zKJ8B z_?{!{U=pBP7st^ovAT!XBcYcb^Cmrpe>&)!-swbI+qWxFD#OQ_#FNDVihDsnx%hlw zYiUc@+1CR9HL3UaY8BU?No7@UG>=<1+p!>Epvso>(A@YL#ZFzwCQjdiz9@Oc5MX zA;n(vPpp?I0zxWf_l!2s0N7dVLAV zXd6R+Eps^YL{zdQpGtQD;T*SDS`wF(I^kRk3!pJ)E1s}d^1Sb2y^zfUA~x|{iHTg| zL`2wXwjl#=BBq)+kDG0oa78=HP&n5(>^eD#GiOfNiz;>@*KZuLXgiU0hq1^jiFz_x3O z6W0_cuN@Bjm0*d`x`pxOKS9s$8h9rWG5l2n%oQaE#Igb@=ve(!U)#@=T^joOql#z- zSyF)b3gAb<1abVM%}i|OBbJPI22P0ixdj^KOLOdma~>*wdx)+n39nM6*ST^wQQSjx zpho6k8ZsX_VxVrUYAe!rbjndRtB__5O^6iFi$sRmOr*2~2B)+lYfUf9ymMsXha#itL-88LJFg`i4^B`7Cjp;qJAX2RbY6ulv(i~ZV(h(h5Q#z}NYy(oM_7EKw zwm_8N?g(WeLiDF2Xsrwi6CuT7S~v=LasPZwB`1l>!8``@9f zmNKI!bmx0sH3P=X1Kxm>^V+Dh1sEyHNV^gOPe@&xYWti`Orzpz%Y27aYjd&aVyjcRsXg8a zls3w^8s(!^?*M)#%EL+%`JGZc-*Hdt;Onq7NVc!GwyppPa$3LngyBGyESf+ToyqJd z4}ceD9crUS6^BY9F5SW_iQZl+o@dyrY;!1PGTid1y#flP33APRbut;#I}h1ld!+p1 zRFX@B8>?K=OJsW>tMDh5+Y5arbbP`V{=_e1L&EFzhR+T=oQwMIJnS*4cY{NWdWV$wIz@aMA zHdE%+SW569^`jg|@uQry3qJ?mG!$T#|AA2)zNUEd8qJIQJ$aqH^Ulx%_8BTTLxeWD za92=@v=34I(Gv=TQj*UG#03-BZCYNqS=xF1eGe0!?~X>=;x7PsVO>w5M9_qWkU1K= zBn4Ekw}&JhU1*Ipi_jX4Y(T}eSE)0_0`hk>$?&*`V3ogSaPNNUvEwaBeHNuaim-j3 zr1OKTo-z20(u&|w-E8BZcRfdvJ%aaiJo0FddFT&dU22&}oH^pjc6jF!FOuK$0O%;g7m}3_Uo1osXgT zcL{L>nE%!HPLsdy{GhkXPqXyO^PA-#FoDM-J)wsiohs@@^UB+_SiEZ=nXJppC>*)icc9{rgSoH5~Pb4rtPT9XeB zQS^sm2&e-~M%mRg@%@O;zp1Np=ramRVJIO z$mWl!LI8H(e|e^BaRsKU#~0I(LEQ0Q3I$)%dHp;}y(`R4E7d*^E%6DZOy9E=MI3OB zSUQJ(2gQe4dL>$OrRUG>r>U1iNWFx`%+OWS)qrK4O=a>XB$4v3d_yQ2^QvYPART?B zcsfVt&_B^SF4X?A5<3JwlUaXv=jPahLqekQqsGo5@7Nyst(KihrDApUL9k^N_pe9` z3%t=ceQ3LwET-9-zGQKu#D~y#E88dok&IYgBGH@8vcnSu0)&iAr6{FGQ|3?>_fWql z^+$!k@2RqGAh3JN>h1gD0kV)VkADl#!m(9US9zxq(h))azB&XcTfb&;?W3qXMOm8c z-z%~TcZL|zM{I^w?qP%hUVMYlv`PH;G9x|?A$0U0A)cD#?BXy|N zl_>FF9x3a*e!os%XS&8Jw68Y((pQ__zF(WJpQA6*m+nnpBRHwMudUr))`R!iQElwJ z{=-F`LqA+dN5WqQuO12(dN~`@`N3143yQo63B`;U6yg+3^?^zyv!fdk@?s?AAZp` z5}4_t3Z*`KUA|_X{p`N|LL1WVj8Kti>XPyh;(1ax+Js$mc4)tcD!#t+j;~ix9J{7C zeeM38Y@CBzVGEw=!j z#8@-$9%Z2?)Wh`!9v{k*((I`z{ZMYCgVN6kdhay{%tpz=M-IDf`UGoh-Af%G`}plg zN{rGE9^^qhkCv6fkvit-;V8_}-E%S0V0k7(IQ)V4(=cL(1BzxeK; zQh_564a`+=WMXINEhhx3chUS;cuURttAje{11qVVf!8}8>YsBk)-;m z`Bw-x&616N3X(n1le9DHtTHNte$ErHg1@7I=tex!#Gtrhs4xZbO1bKCvvLmd63Cqy zUe+SsYS`bnqV{~2GVguVIKnqoLYx?EiT9Ac<9?*$d2{F=>C8HCuTrOWG;D8 zB{|~oobnX6yp9alC+Vc?(RxD-l?rRC)lv>cQ)OhD!d@1!-S!ij5TzSLoRY8Bu0oUy z@uofOzUr%n7RwP& z8GaeK`Qh7VV*?($)mi`et@ekbJb}GmK7jxFk^^oJPr56+njUb*Pl(lg_ynRe(N7#b zVG8(=I=>df`StYsH;13BdcSXZK)*tSK*;s}?p`5$;(Zk1l3s;6q?O?3H{hLgHUy5JK|E^=cD`&*I{3Y913inJBja@DkAprV&g9T`473 zAJ7;BMppJLAB4jrEH{n74KLCBRV{2V4@Y>r*w-P6Egj_p6sT=+ob&h%;1boN!PG33J5gi9(R>KzuAZSfyLEg zcmk}JZWak?R4NCwD~-fdu#1i*0o`;lho$G6$OS9rS6->h_>R0hGab@p<>3_xd6%0( zW3wb+31JM%wv|*^`39_DD65edqV!i27Z1fjdutGX3L;!QV2DxP7J1&ombpqqJ0(sZ z5LbS&*auy#2xP?SiaL$4--Q|frqko0Gf?^j-V4A_lCOlVs&$Ky4LdbGKIo-#n2IE- zi^U4a)v+(BzhF0=8Se^^oK-{NmU zixHz=$_%hg?#$?x?&dLDW}mU_!PqyW`e(s0jpvfEeVX0&1!kdIgGLFaAFP(6C7?a3VOZdW*wX?;X+IHV{U3%kWk&8W_RVV zr>1M8!t_einok!qt$@8h=t%Xc#p))s+ap>ZTs7#XuZW}$G&;*k);W^PA zO9FTv#qka{Tmx<@V5U0_oMc8;Po}#DNFw|yMGhx>%3VFJDKWy9gr`WRtBxX>+R1Xh zYchub7Sk*KlPfpx-MXDtW8EL4Bvdpk*qd{uR#`IO5DXZn9aO=qU}lZ~iRC5!!{knV zN-h{^C4={MsiIS|1r0f4wP0n!MX$M%BGMd)K@#)m-ojbgcMT1qVs$fnYDQUYK*g`? z$)t_G*DcYI{xrK7OdFq&A{&jSw5bj*9uSQOZb@R?pXwNSQ&n3;W zE)eTSzqmtIE(oU-TqUJOc-@59w>N97rK>xtGg!?e72m0Ssi3VQ6>l`$%(?bvpD&My zoJ>oTz3pD<04GS#*|6TRZr26cUI0cZwJP9VW2oUGHa9ZC{keN;6%f`$P9htMwckM0 z2xf>zRXX3|9uce5-#D0JXGBOAld6B968_5-wL#z`>#6uw@O$>9Kw!XDN|TazJi*Y@ zZ2Uc&7T6iKNx6r3xvP$T(Fhn^I|0awm(Qq090AIeVSut&RYfinZqb&aO$TlymDBPJ z>u|?$EY1xC#Yk;4(q(X@_?mK@40RfHc@Jn_$KNEOO||Tt(pUEf_YAj(nj4>fZFA^R zU61S1x&25>+_U{O{oJt`d7a*XSD{jhcuAhDDO=K9dwII>W`I!EMQd2Ed1*>NlR}jp zeKrj&TYMSwUM_e*dnZl9@`3w%_W!Iz+~$yy528~FLmT8|Hn>4i`nL=tB++@0AA$_& zUA%R8!5G{%lAis+UhZ;jK5~8`(ijl~;f0HlvCD-(M>%U~;XhHyA~+v#M-V0;Nv@-D z#=HT$ENbTrqS_UCP?Vs9rsC9*7;W$f4JHI7(A-t{*{rp@*_hm&$=jJD6-YaWL~5vN zXWD9wy)J`11`hA}0wU4zE#>{B&3T53r!@!XKVuZnoZ&nWMcAj^|3bJ5n+l1fDbbXb zMKuteM%>Xz4X}0*KH*o}MiGTByE*S*L*!E1p))T`9q22?3PBO2=-V6`RupVl`P9y^ zdB`_qW`6bRh0x>9L-_r0VZL9eHcvMfha8U3ihl&x9lnpN{7o+keAk%T6Di`plyUQi2a}8zflb=@|N@f z7h%LH4O_+9Y9-9+*TBxD2Zr&(;(6*4TY}XXa3)WoF;cxn+mQeDnt1)`8aIL3<=S=} zDN3CUCO8S)6nn*5nKb}{Z;rNgk_#)09!kmuS`$X2Qh2Y(-j6La3?p@VaeVd-unq&; zKxLGb#-gU7>#w_u=P@O&r98nQ4{EcYW!DU^`2u>XQk|eU$W}1nIb}o#L04(rjx-W~ z`PG}0S1QT8Bk)UULNa>n=PFRT4+soAfNfj#-l_2Fkbb(tJG~t($vLGnY-_Wq2wF16$F()T=kca3j+UWpeue(czo0&W=%BF0Dz^vTeDJ0QKinS^-^$6>4P9Hw^0FzxycO8SzXpDKnLR zX|2<5B^?t=#*a^F)W{;!kpM4{R+;Jf)P+UW&#cbV2A?nYi`!N}s>+b1;Mc5i^JpPvDAC&6ii^^C@_&=&^_OmqKB92YdtSu|6m^j06N zG*U2;WtPAvd=XKy(=J79%6gA^#KK8d*}h7>tqWbDrHTIGF*TYzH{xK?33nd16Mk-c zWjnhs`OaEgU1D{wgbPUykIZP+DSD_DovtHP{m&^(7Kig~FA646vC9ybyY$bVfJf19 z-Kofl*kiXthf&=4u>LLDhu|KgrI#x3p0!8yZlqf5ti342_M)f1kP=c945PNM8EM{= z@?9l%v0`yi?EsGv2(?+W1O`U*Uoc2z6dyBeFWScSi&iHc%ZA26g+#p3Ll=8F#?OJK=M{3mYCmFwz+oA#jYGTw(<@~pWmB{nQPXDKb=bl$-v^NG={ zNx4or*}kRXk*vu@R{}nY+gKL2w%rJ1qrf(8AW;_Yj!vbs52(dDmBr57Y$j%<)T;jY zYoLECv<0bTuol>j8m}sM%=l>3|W3IHcCg0k+c&WMt zB{8$|B{S97u;g!xVKj2}r|2J5<>!-*QT&B{j7}BapvNbck zQ3>%5ySp;Qrhv>O<<~|Q^|E^5fzYl6~&ESE9^Fk?yx_)71F7*m|Q4We&yk=9uXWQ(sl-LpUFG4&Us zrqB0R@6d0Rm;1i2Ds7(X`v$QR<1b&Je|LQ0+oR))pvOACptv#f#~KbZLU4(z4@OBY z>gA|CSBMc>W)hSL*PJVrw_{$ ztu7YpW~#p!I>IIw-ZC4PK;34|p;D5bDjJWIkw9nSKqfzQM6$P0Cuj8bnS*n8C~xaV z5j-|iCAC6K$>B%aplCSu5*Q+Gaa-kTiq65y4t1LwKt$tfGQ0Zlq?8gnyEoVs)J>i? zw1#S@GLL!vd&<$i%Al;{>TK-KiVaiH^Nk{YO_gO3VmA7{n;tJ6J0>=`-*u#6EAcH+ z4^|kZP4Uhk&TnJ1Ivx>g8b??2XKbq43`)YLs=CIhR3hgn8IVE4f-bc$UcO;a%{HN`iEc)9ikjU-(crso7fo-i4DuA=>n7k z50*;8l!MOWNoj8O<#=}^jXu1)dV4*gX>*81C=Cf*0gdVe zTwke$7Oy6}oUPH#j4rLP*DBNTbj3Oz?uaCA>g8$K4MvI)2dr|htnvmevOKepNM4HU z9v`V;^Xo~etRZE|j~puW%L9pskI)f@XoR>(^qNCUkSUktEq^bKOBgA*i@XD_5dzJU zRXVq%TXcL8`iZP7{B=cwt5luT9O7Q7C-VH!c+_wdQ8%z_?AS;0v|0;`!xicz5%j-V zS?m@{c0sQc>x=8Kk5$l&!BACFbM(B@MX33_o&hs&`p+{}U%O_Xla=&vP zFBozj$MuZ0XN+^x9KN$Ke_)omhaP?CaVT7~Td|7esO~+qu{cQ`mTtdiLeenvf8H$F z%WaT8ZF>QuvR&>ZI}EE4bNB;BoEy`3x%LK?_&xPRlQ_iA*@jG&SZ8S_g^P~r)!E2W znxxSTxDef^8Jdwq38z#V9jw8OCNGxdn_493i}TxE2P+-U-d8>2N2q0{{KF6^($BFx z?9ExK)`YhqR>&aAsZks#?>84=wKzFzQ0K?HBjd%FmPbpZd5T!O3p!eg-S|B=EQN5o zE3kL)uIbf9;|xh@1a*HudV(M3aWgL(64XO$N33#;hkD7j{5q_lodK(@+$3k2cO{Nn zx79B5X@xcRBfhv{1@;^ry%E2p%k*70$KNk)Tk-vBknMufgETQ(d7XG$tWmKwZ7UYV z`)IEyS%n_N$p~Y(h{}h1E3jHogHXp>>1>!a84w$0zc4h=?+YNdw#aK}RwI7P((Icd zi8F1N)j0Js)+3?NB;T*V{Jvl{Y}o;-1IKHAENo@4h! zdNIe-hRJlI27x_CM{;&{p+*TgY)6diqMqb$R6bV-Np%RD=e_BH^8aByFK(-Ww6*Kv ztDdkjp08n)9rb)=hM0br&{c2U3uwD)>p{!U-CPoXfx_m6axix;$2@Q@TLqwUzfGzDtnLDd!JHOQJGGv@BlVXQ%&z?%x)N#Hk9 znc0Z3z<|4W&~6M>L8D)~F~d^eEjf#K+O zAp;4|*o@M5)h$@%Q2b(5;zd29+?p20JAgs{3nImgZb0;Gd=I>0c@VMyc3Pf6Os&JJ z$kN21msfnVww12@RJ%xw!Tp27X;N5^6vq~&qfZbgSU7mV@;^AN8bB@5DFgUo^I&Se z?PGpORv%}FH-$S!luDmS%f3bh!eec=1c(Rnbw7$cT|;69U-fL;3?MT)`}fXkI=HYp zsK6B7)EHVpEEM_)6IK$$>#|@@`)uV-_eZg3^4MvXns`tEzs5`q9+d{C1nsO=lqPl2 z8qN9d&0F=vE;#>Qp|A^ymO9DPXbl>m1AzwMI&Q~oyF=9IWapQ^kF9n+@S~7{n&_Zt zsYR5ss;F6ENpjNtX+OzE zL9U7?Gh!~PwusdM41bXF81J9wOrF2J6c_+SHaSUtK^=HMcgfT4k;v@w!88(jsC*D| zTWoQ^xi{cc>Wl0tgW%0eEYo+!oYOIR-pR44@3vUV0}VJUyT|qo<|>d33^Rc~G+ zweT^L+F>W=QWU8J-V#%Nq*4ncj5U{G{1V-QNQfQSsWJ>E)v;^abpgC#y-|{Fvq3y?XB_u{H)OA_-F_yEO>SQT zJe2q{M#HJ>8yl5*oaUHMJCb9RSEr{GGcitJF-PsngEv|C`j8hcPBzDMO^Mz2iyuqa z8?NKo*V)C>7Tb{d8Ds@@M=H7%YaA`%9KEXY?co8It?4|BXQXCz7HX=r zjO*8FBxQ|4|M7rVDVme=rYD#tYBFS)uCkp6%}!;SWU)I5?N>?pmg)Rr!mcnhkbGed zEdZ2LFFTmr;}4)eVA;!yq#JeKsh6_{s5gs%?+yRX=dC?d)WSR1hC+%JI3I*mDe55- z(t!9V=RRX(V)^Vr{+2qyK@+UIBm8+cIC-U%^$e5;=yF2B;^|~K%HQ(B5s!aNEZzj| zWBmE`A*zc*`>o~maD$b>mHC_}>Q(vgtaY#|?PBaF z^fO=6en{uVDh4e(X8?1EsgY3kyW?{lrUG$arKJEhNx_^|(wxW&@0RkLgT2KFtHium z^i*1h`eTQ(HpXfRZJ+iDpU7%Ne>Bs)MAkZ>W9QkmBQfmSb~9EXA-gJ(i@4^H**JI* z)htTi=K5JMY88pWNT#KnHTYE1#9lAW9;Q~`Y=mAlrIUTD2!HEz@Fq#1^@#T9b1YRH z@Nn9nyzK~4U1qzdU~~r!8p3&^rmA?|l^Y)RZBvmxDm6|SpzEc3x{gEY4?R9uJRdb{ zq6|VWmHOw&RA;{Mswen1 zMJNfE_&#~0ewTQ9-uqZ%@k((jFel`(CPV@Cv_lUA+0z^73@007=xh>j{)UGsic?YT zO+$%0RhZKi>E1`5VnMxmj19AIUT2?9-=7j!OW=akdzEY0nC4w!#xrTUrB{NY%exL(G8lt}Tf0N;lmM%$BCIp`PDL5wFbx=Qw4uUm_iN7_BM>A+RDv{q zZfK9*W#>~oKoyY|yDpTcNUE=o#;nFFr)k!3qOa4K?%Pa*nD6V$5etEmfoP|0YLHXs zt*wc@QewyZ7py6sH$$+%m+Q(agR-tT=&A|Av}*=6oot&()-0G%&@mZ~`{hY5WGW zCA5&?zyDp(@sCcnT~NM$@zT@*`60uei2qfxPj!6J%>!?TbY2?@8kw{A$Uleu@4

    ^v2E@pI4J3#y~b?o2v(d-#ug{NBj<-2Y(;{iz#rn2}ozskNcDoym7r*%x^;+ZW$L z&vq;#Ch^LgTv2i5>-MsAo=uzE!Bmvmlg`#~%ZhD>swEe&$8?@I3if2Y*lm@kgO5jl zNoYr@g@P%+(tIUFO3lQW4eDb;{jM{h<`R4Mm9*>2mXW{Hv9W)Mt6~m3<|pkpG}fwC z7}p!aWCe!uK%muaGwKRdLn|D-5;N~yYwLPrXhhnjq7mx_(LsJBt{0NLiw&#mcpX;YKiDPS8#SU=SCDm8 z*J`h>7Rj#lbg#DS^$8+7+gQBW;iGQX)D6XsF zDst5-_dODodCRbCf!&~Fr0PZPdm=Sm=Pb0>%yX;KIO#v>LhaB1dCV`a$R^zR%rlR% z>+BJo>wWtu=h?-}#0S4~r`}NCvt18=R{00=!U}U!Xrxj!T8_+yxGI#ldL>&?mZr^{ zZ2Q%UBIT8Nc6J{<_YX#N{~%V-1RAwl58T5FwiCZnylm`f$JDfb^1HfS*=Jn6BBAWl zht`zU%GF6&DZCt?V*B^V?jYb4ONQtFB;ZEmv+0uBXxl+Vc{Jki74hh6;_03YjN#{$ z>O|$uQ+te}CJtwa4WY+gfq*HUKkuD{y-5`9jj?`%(n(pZ-&5gS=+Pn|UEvxST0@1C z=z;UBuJ=l$%y#=WYimUgRoA2|T113r3uoC<1CAtJqeZINeRZwEj2){gx*j}2&+L_M zY#gpAY8I)e+J`87X-R4IPIg~z2b8|Cx&szO_uhlpf>Y++z)7NOy}~Myli1z46+I%^ zqfEF)|Fc@1L_`Fw^k`1d}>WV+m(j^z1Wg;o!tHLKorSpX6psPv6kLXN0Mp$=7st83j z>9f5&GldGkG*j^ntV(>(28S@F(To*Ty9%ho=oOUix6EfLGHTJeCPb zA$w7l0(voO{dA3onus@cmM7uY~hx;nGFK=>Y zd=ww7mfA)Qb^canK3MZ}w4QaDkc5{E+h_Y*AZf{hQ_gEX(tEuAej0hp{zqiwq?S+V zwJJA>>;iEL&$()$!xB^q!K;d^)B@lJg|I^n>Owm2l zv#Bq)60FNiQH+q$lgtivRaUgF{0nKrdc3WMj0bj$AF=$_mrx_Gbl~m$Id`#0JKs|4 ziO+m@`=4%dw&{Q| z#$=4d2Q7JWSxG5t*^sw<4z5gg-1fHpjBhL)t(to3Yi&NmXa?$d-t&5q7~^rc>UZR7 zNt;g^sb^D%5`n7M8(l-05Takq%d3deTq_XMhb{dIty~Cw?xTj2)!aqfg}bEKi6*tcAK!hL{i4qQBb2$ITgz zWl5}rK4x>1xPkG8jo?4OO}!lJ#CT%{O4lRE6%Q%K$eSUL3F|PkH84TwSsVGRAH3DZ zzC-O-jEB@IVl1m2yX0K#JAzaV6^8R}tn!ai8>_s|qEMBIGASg6yVt{?g)$&Q=4g

    u#=$AcNim@z$=kZ{~ z(&+b$4>2?T5*D z+@_0srj&ZXI@bx^o6Ani(lOPT=ak(OYTP2u!yAZQRW~L+A6ngP^*ZPT^+f)Qk;esH z8JCSyNH48yveO??=jjva!G;y+^Z%$<7*)kaSD{c^c*bWXeV@cQEE`;fZhFOW>aycN zgKCY!R#*{fD9B(9`4|Uu`Df(gV!~kX-0h_zdh6`MGxjPfGvxVXqcub7*}bvH{9 zdqkw31*TI_fIbmb`-s8fLbQlH!L&}a9{&03Z_5NX48pUBJW~+~7#8sNh<}#o__nik zPE}L4dpI+pt~>F9#oW{*f2OFJkr$Ks%@`xGf8y2#eZN7!GB+2PQea(4dkjISgEP_#XHOMz@1Wb6QvvG&G--9GR#hadOUankrrhd zMiOS<1IHkre*kE8qcF-g8hywhFJ^N_fw2da)vU}VIVcLY_K_u|G%uFbh>Gk4i|mPV zaib)!*Ws&s!k7YN?G5`_r8D)4TToTTh&L{A9VbJVa#qcq8o*Uy7SQ0Qy4xX$iVzu7vY(4;@l!t zvAk57X(2ciZG^fJW?=Ut=R>ofN%GyKw4?@rSHsU3Z%$KCb84mb8uDy;wf~5jAXC3D zmz6!!a)x?CVvGL~nS~3c=77T0;+Wf-4*hGCkK{}-Z!YcjBcBp3y}Lf4sY+mm-{%>os_{~C7a$7%jtJqratmVBjh~D2Ekz26cT-rT*(gIRxfTB5yu>L7y*r|&N zR8Dd=cp~tQ)^jB8hq>v#(vo6p#BuwpdWO6+s?6Sju}-8^rFcPVmUb7pm1}JPQqdD3cu*i-~&bWeP+r6Gc5K`#1MIdrpb~bXd zBB&Mf#U=_48NM9GgS#0C4M)rvN8Jj3R-3xRA+!`9!dNA)0fH9USg+ggv?4{5u$dNZ zaqWwz^Vxa_y{)#9pw5w##T^-w@d*K%(s1$pFsM9?H}7s{uPfJk6b!^yqIRD>8TfbQ zr)=iI-Bc0~8RSSaPo``E4$#fxGl6N}exy32%yz^$aA35{D0^HNDr(-@-4#PnQW|Njxu7dQN zEs<(vOJEJ*Kye<}(O@i!EWZjD&%L<^9qCdl;c!;?nJ$T=G>m1I%ih2p)}Bb;4t%uk3UzNsv; zIs=)&crQ^ESoz4}kmdNc_9PG6l~68p9uBW$E9<}CQrd-(hx|0pd< zAHq1F3g_@DWRq=d32bJ|o0&IL5{jk8?E%@sCyP@z&>@Lw z?2vEjd!4d9ITySas6z&oYqW(??i-wq`2N@O9w~$0U;0p|%((Id?&u#>YcO_m%vOUi zM9<3=(2>N@*IMuao*XaL9*GZ3E3Bh74kcvGY7fXr8(u<54jVtqSa2_*1sJgytN=J#HzWk4H;iEZxY7O;HJ@oDSy$AP^vA@Fe0z}BC^xkebRWvTWIsqfJbW$!X|#d$51$MewYLM|qUQ#^ zbc)GNK1k__DjkzuHS*G_08YQae*EG|@;3zi2)uiH@ck)MNlrxSm2gtePEMut1W}gk zM;it2=zF^(pY$G8AeNsK1G;(vwS@Ttc!Rs&IR(#-$+g+cvqtZRJVUenbEe1JXi3MJ zUi2k{IW<-}WTFClgi!Poafn)wKB3uZ?y+GWsPwHtW@w=5H()dTgIXE=a79mn>>mzM zFtX1uLQImQU{(Lwxk#z&nw!!7()cHnSxd>}wWn%EUq2woMNCdvGwkuX5M7VWCGR2X z44c(#G_fR_?-scCsXk8?59*{n$r#a@MiL_yY{?7)vJLE)p4v$A;YdarL=Kvul0u~@ z0ulY8bsYu=lfJRA;q1yn!c&LUOZK5o=7qFT?njoOn$vD(ehIF|<1Zbxw;8OYBJsSQ zd@XT7Uk-enaQZyp=Q2&?DM{XpsKX2GF%ib8yzczBks}vuYELQz50sCglQNB+r1sVx zDL!8m;V@tJM#q@ zBjA7EB_}Kz^AZs`cB(GoRaK)GNI|5u-tyMOw;ucHoZ+zeoZ*CA&qp(7c&6A=(-<*j zxKqlPFi{s71(f0`d#c^{^0yy@uN5B0do**(G;>{%$Ehd5c_Ubezs5ZBr)z#?1d8fw ztv&cADgVE(e`+MY@PwowG<$ z0G!r*Cm*OmMt|+WWd|&ZyV$C|LwH;WG-ku7Z%j4UU`-rZ$|EYv5{gDKlTy~a=L1qw za)D2@ zOTdzyRpWEl9-Ms`Y?e^fY9AtR4=vwZPH!s#8q}uU>=4|-*cr2$#gnLB zItX`*@dV4ufQoO?MQqui-GXNVSXTXOhTVGcWs6S_PL&@sWOf+p2;*BIE&?X(bea#= z764^~jFAtcF(Me+`g{tgmSB0F+46erbL`&e-SMwNI~{GvkDe{NVJXB@6>U_F*(r4h ze4ILJ1a0xQzZK<(T2Zt4=SzY1f=4z?U(yxkgxf9^j7E=#JZe}9Ug;aa>Y$WU`y}Sl zQTD^AvvPwq{(SMB8ht^bx6t0v_KS>xQgeMev$olawj#-l$W#hdEZ?dqO;UM7Y-oAL zTXf;N{cG8@Lf}>%CTV<6$U5nc(A*lt(!&-tkGTqMg~Fhw^7w#^?gBre{bdXEl55%M z@{J*m@X!NRTd8HWf1L1?VJ`De&5rF3w9bXi*&!p@h4$3)8};c}R@HGUp4XrEM-7B4 zFjrR^BklXk(ffg#9`wAPBQdNnS_rCTcowc|?1M*k49`L2p|!AXOnIxv2rZuDiFqY4_cb5uno#QDCY;j>}9ZuTbJpcS+9M- z`puC|(U|%X@J~zaYN2#3urLxW06uYCU|e5Lje@INh+4-;n084q+Dyw2*$*u&r%wPi znKC)rVl5jGL)ce@-$}$psH`hv8f&5zSLtK%VyZ92mfjOwkZ5#DXYMp2=rAe1^fMW>E>7Sw3 zBJ#5GAhW@K+=SXv@25M^o{!^dq@~FQtI{0LESp?h*1#-rG~Tka(Qny1?nV*d+xNJu z3UL+0XZUS?L9juHy$`!%^@@h`apnG+Ah@i(Bc|0~4uy6Zj-4qpSfh3?Itg|>&>e6j z2v+>6YF!gm?@ZKZj^zx;>wwU3l8t|n6-*t&?T3Kk zFsjw|4u84*=#g)=@7Ky>an))vYRK(Kc@m$~zdB2&*D}@31&SW2&v?^dCFoOWs1JBm z&iN)Mp7lo>M0c-*B0b`xd&sxj_Ffyk;u(xxv3ezVMTNqsn)hvJXXH$3sduKOsTSMY zJ=MMxORGCn?T%SsQYvm{hBgQmJ>~+-8(3edXGL8(Ur);suR?v%d)#3e*Gk#&n?O!H zVSE%S|5x^oOru`4MxJ_(C5lmu76B@ZYq(1#54`PT`y61 z;aF8z!yhZ{YU4o{wyn453ft(QDPx!YQ6Cvi@5ZXcb*ySk-Ka9hmD9*#LLU)tViB>5 zQ2fd_R*8`=BOR@4q~UH$)@?x_S$3mfG}F!h%7q=LI*g6(VfS5RF;=gtHR_{qXV1z` zq@Qo9;@fhCL&>*imfs6KX>GruqKpnA%x!U|%4dM1m z`?HxOI!Ib)LOq*wX-%kawX0t^VElp_;bVv9_PzLOU8f_rf}Vfv8cSvqxzrEZKovl?*! z(uN_4f3@MfTkmVNU{t{I#xlpuM}VB~S?|mMf0*y(ml6qcQ)#JJenhQn~ZnP;j0 zSvkkq5UlzH_fy)2D-F68C$}3-T-cLaB2a6=%>@D#n5~~dF?))uY`AdF2401jPvDKP z0~2I8p{j^Bg<94X?_$_k-~l3_XJoygP?@@!68$FkU;(lTsp{CmB4ynrU^i<_tgD|g zNa)f56?iJlQeU18TqphwRqUoiPuWV@hR$(hOd>JU8yrZ~f)lw*D_(mmDDNI~Lwo7hn`qJEp%df1$Hn z<9;|v!_hb8fe?sNh(iXK3SWUpI7d;MRg}g@L0;mOlp0DJ20e;J-Imwrt_xW-R(x}# znGLc8fAP2eo!YJopF%F9R!YRfp_6fQaot&}Xm+4^KSY|oltY{BdQ&Wbh>P)hu(%!F z1FdOX+ppTHjTH4R74};gdU48wA%mYW=oekwtm4^}@n@WNFrAqW9C%(h{Sf&G9q1NL zM+{8EZt+^PuypXJOzU*^wL`+`6_*bQ&$C;#G24DNpkn%(h1;j8fo5T>Y4BAcmZX8$ zRLYW%z`ma{6IWirDU73>OhzepPSOMaA{@H1y$gTHDR)kLu1yNxWlOb#dqlCl9}0)Y zan#R+F$+QmH#6J&uT1a-!`H5XD5eAljn(!AFyliw5h*TT$a`hJGCP3pr$c=z2Ay{H z7yMG!Ksm!r1~2#m-FNb#e#>NVS8paWcthQn$#4_Fsg^LB`#AX6t~!3}z7BrZP=3J@ zN_P!B#>@`lm!zSC|G;n$hNNAj18}T z&83v9aLK-UbG%O8vuVnB+{6}CWlSitI&=_Jw37^(S=mby5F-c!^P$=A2|tsQ7?@_y z5a%K9F?d&4k|RjCs7z+LhM5Q9=q}V>XqbikY_(-Samp4IDnkiY&OC=me>ozEK@Vc7 z-~t#t$YCu&295YP1_wRtbrOapW!M02tLQw*+$jzcJjS%Bd&2m5InSmJHbAjLc5JPc zIiClsuhf33650Awlp*A@F#{3lji%7=b;4i>rOS~Z!(N<=C^sz1rM3%_+sHW62CSQj zPYYKWbXQmIUz;u8;}&{TP1MR=Aqn5iFcX1W5HqAX&=O+#9WsHTKd=$k5wOnGE($=T z@Qg}Yyjzh;v5iN-`S$16J}2i0*RIyhbJ6&G#TlfJxxd5B+z+{5J9rNimpYWUr-dj9 zx(P>RhChRBdZPY9Et*@NLnk@bj@UOr!;lRa@awc8N@53h7Q#5tQKfaqL$iZ@rDkMH z(bRtRp5g=wdKKW#y-;p|>fuawCePdK=5v9LiiBYis$}Ds_gImXWEGYgYme1&A(bTO zR0NF-L4s>vjWQLS<6y3ejS%NtwznFr{Jyv@Fb;!|@imj3OzMUmsjM~-O$V*_1Y(B; z%}T~&Ak4!rYvXVk4dxCPR!May)qr<&n(^=%UC5RpY{|q_WS|{IbcH5dAMnl}A=*Ur zeoLhX`3_WS*}oW+0$)9Hfm9X97?Ct9F&ny<35tFtcUo!~WXYW;C{#pl>9yu(axj-9 zrQ^AOMuk9eCd%6or5yGaAS*mZm5j4)2s=jd-2%=)QOSYKDP)3@EHgzw?U5pZp0=Ke z(t$DC9a{pQBr9^4kIyi;kR=QC3)DR_nj|J<<&(@>2N-C^F~k*w$zWG0!Y!!<)yA;~ za0GiusbsBI!z!xydDT6pY%Zg+a(v2Hy+Z7ULFLyUz1V#B;{| zu_Ybi7xY!2I^c8hIv*aQ$Zk5ivP-?+Eo?Qr@*82wm3xGF!Qy5JvtgB98_=nLNg&Pr zF1aF}0mX$Rgq&V>nA(~tW2!7AIU|%I=u~m`y}K!fE&w9mwp<-z%J$FG5Oe1lGToX3 znkg@`k-b}Ltt+7!p4UCsS$s7OdA+d??l{nuswz zD(8Y8ETE!p=nOb1Q*41-8%Q{&7od_3^aZ2Fvej3JawB6`?G%O@Gm*iRT~dKqbAW0J zc{@ZIyfm0gWU(i%PTXN&znPKjx%?%YluO;@Cb6S>qtkx}P@i`*n@L8YKeJho%bh@U zxW)dtTMO?ppjA+2>0aA!Y$qH@e-@@ZT_ni6$9*JhN&mi7gV$Lw%qs$97(cNz<^&rm z-C8DBP*^Wcw$8p`*w`ZG)xAm?VXSLe0&s_RarL$n_{>ioQ7VmN!G9`?AUOb(kD1ZV zWwf!#S9GJz&nS!(mhyV;?w=z|^6qa|ud9JSa&+gBPWeQ`V+7ZiO!i!TEhkRLH!z@xe1Ww-2Ih9yl=&E;U9nJq_m6xJRDMj66qS%XcM zd96lf+D3YCbo}<^^szP3hJ0`_W%eVPN`egYsFMGP(qiKhTK=@HuuYk9ML1==RR+F& z3OSls5t{L#Zwv@9Cx0?=cC!`FxhE}S{4J@-erfiUtIz^moua58AZ|!-x5Am| z)l)vbKeC3nmGS;9xqol4kyzL~ooveZc+Fe>CFIf`r}$_T*^98}n%!8#N3XyNJOHis zBWO(~BnIwMT?X<;aE)@$P|W`-TzZ9iy!UzpqNh zS?LYX{)FNP&#k_F68*NjcCSOXS-PXZKXRbFV(QmTsbzGTjaMZ_f1x3;mT;sKQ{PT;fhGrXAWc~TlkS|4ux~$d4lI~C&seVyjI3q!nvpF6#R3Ce?Ae0 zzCQ-X=n9h@ZX(;Ii3ejAXWK_c!LRZ3!A=hB=g)n&Oj@QYf5_(KYvC#P$0tGV+O96D8Ynfd`R0P>P-=iYkRQW zQ;R>T6upAU#z3P;b|aX$sEK-OMc5ZV4hF_y`q9%rC=m5+X2{%zCUZ7He?OVBbX$HC z+;#C3IezsysR*;o9u%mzgRw|4OX?uAB(f5-phYRa37+5%(t`&DQa%nI+$QREhzD(AZdg2cQk*3ltd1P) zP)p}x?w1weU$6-2yus(i+-CpoT^#mHxx$U_NO_wZ*9_tRac;aVgvr8#C%?C#bkbF&Z+rrFs9QfQ^90e zN-0b5S1dR;K_CErpPsJXx&Z8Sj)wry2IdBf1)-nJ4K|WJrzg0n;Gd3f?UM$6YIy)C z!@w}+#lyj}Ukb8>gK7c30y&$e2ObaRK9CIFFX`J5{0b1azTsegdjYl|yb>%M7Gw$h zn{!X_n?39Qou2vqBS98D^ZRT3@4pDX+23`6lrkJwMh@AJk#gpr|0)S&5!yQz^yRhu zw_g8^U@H2r=K3jsHC-1LZyoFr@tuVGXYpWT5U`KgeuzRGcWySz!xOl}nt++L1as+^ z1yO^#Sn0fX&`LYhcWazWCcQ?=i}e-+e0^;nMUxwHcje%kK=L&b_lf+Sg};ji(gM-Y zpvfuOnF4?*K&shAao?e2dpX)bW#h(?Eu*kyS8rONl#xlK;&!f`!Vl-JeECy;;80I! zZ*Ra?+U|8UUTnxW)_YqHp%JGAih6$^K$`CF?-h6OK8aL`lY9zHMnv7LlS=Vt@D%e( z$|bI^J(8S=v@Y_Ol)kTwzYwzOTleI5+Zf3O2BB`nf!yx}gOr48;FpBlEq*D7EZxJH z36_k$l_iak5-Ul7RsX&`mR(fWK&nI>%v~2~7qD7U?}flT?(Zns?*-GsYkvr|e21F0 z^!_1GB-%L{mV#}xqC2UQor9c2J8d2?N+Kfr{t)>8L;wG)YX39W-yinhH~#%qT|ar! zt0kphd8iNmT@VmLJlWBpC`tdc=j!zKx8G&^Ww!(^lfpc-8QFCK9~eR0fh&{vhYPMm z($^RiN)@g5G_ZM|wO%%7_2y=FbtAia3%k{`ncd`FyZ%9MgE_RKb%U2(WGkt#*|XR! z>)HDC@R(iqfS1kk@67L)lE`lPKiMw%Ki=+MVgBPy5g37M6DjwWRo->1cik56CYIRO zvg>d~=1_fux6$*!8raz0UB|B8%uDM3F|Ni+GPZK3X zg53ymD~Q_J-MrbSFw-n^pJ7@S904PEQJEBcwq!L#n`gYG0$Ri*hlHQ=>LPsLK&rq) zje?S*Dd?o?DBhW;;>GZ)Q4p<8GAE)&5ci)T2oh1BA=#N6beo_alPi=K45`NQuP`3# z89(ad&w-8R!a_-IXwyL&8brC!?kS~1s#UM4rb;o#_1!SAy21*QyMvhV3z$#1z}SaH z96ZE?K}4@Au87R$XXe(l9cn93c(JbRz}q;~-BwbGP*Y+e6bt-_*E(oE`jH3uo)RE^ z$goUCZW>S{9ObK-q4P5J;`2-H<;Q*PH;dCrmuEJrk(Kxtwn$%C?PFC66J;HV$87Oy zdnenE_{NOpHDH;1E$6g5XCyfrtd~%t7^BxgY^qsz_VGpjz{VYeej%&N^&a&EVb*`H;Stp*M(@X+n#tlSYI$+Km5y)R z_`E(ryt*7bfVw=lU^O&_mCeL+OKr^S4))B4QfQ}B9Zo#i)WpO+E$2h(iPhnXv*C9% z;^>ECb4!)a%rhM;7&cL9mx(rIv@`{Zh;>yTcPhXYiiWbEA-P3vNvEnsD_7sLw2pOd z7}h!6P>HZrt;~XMR`liX64!e-W@*hq!a(0=U=>5rHh3X)ehg{-dR{5y&NCh;FF-SS zRR-p>s$?Y>mfA1`ov0pj(Ctq1R1+2OoZwWwGE^c9HCMr?zS-IGeksK)VQzg;u^vQNa$VA_E9j zZtZ}iIIch8mK_;Bup8v{tuWVQMZL?Atp-KU>QrR0kr}YgpB+vc_>6GOSAngOxh}~G zC)~+qUZq3gDO(hHn&dWMm1@M1>EGl5ACf*7@BGZKC{IhdK$^#YJZ-q93U} z-k}_MrBiJt zTEtLE+yQJBc^Gb5vS&4z=23FwWdwCkwI;AGP00R(M&Ot$7wUU4X%|wpO4#UO z3#gu?U#z)2gBEW>^kYq&GoyfRtRc#>0;jJI`C7nh{R(Kfj~lBPO-$NKvkvY-&0rQm zRTsU8#}xaDz*%x*%n)rieh&OI!r?1$e0-AB)>rUp+y5Ot-7riQQuCs9i8F{d@)fyI zsY{hJLexIwOHm@=iX?lMWaa~-?Ou7JW{99Y>{axcez(d=l*eB{8yO?n_O^kqBd%z1 zI)bZyneT|!ogKO{G}o0&joObg$Tg_Z!OdosK8j>8Lv_!rdaZU3u+4UcU|7}0@h~}+ zNJdYMxd6GFB0bpqXG0ZBdgMz3-y=~nrp4rg`aq0+G!0KNrrJ(iQk{;}nt+^s6D`Hl zggDS3PdCakNzh{#912OqgkU^5h`bml&^t*9!hwR)3Mj3Jdgy}W?64<{Q;5I`+-vIh zIr%6M^_gV@@`Kp4i>c_VWBfhvmjM}uhz3Ae=l5kKpGzlMMdB!!HqdMdrOACHyMTGY zC{bas^9UM ztHV?t@Id4$lNd=zx&3$%o~bQ}P82b|qmt~9ZW+*I{M9IEhs=R{fp&AHVuZxiU{F9b z4HgBSvF~^5WQe+u*x}tCM`9^6sPi~Yw6ckT9-Di_q@2Md1?8nAdP@Ih5I(7wv>9+b8u(1E#vTu>mA)Pgl5 zmS>=&G>UCjXNv2C@^9XTxhkG}3&9`P2E6QWg2P7cn>NI_)&W)3!^q!)S}|paEdi?i zzWtBL0PWC0@tmmFnL7%ch?E>F#?ga3A^N;a$h#Tm8FBDKf=&Q!e)7$e6)2IVQf)T2 z{_@;co{-T7DYUQoOnuJ>^y|e7@pg0(5iQe|bGb*Lp1M4AJlL3+u2!^|%X zrCgUl^_j>4u9HKX1}9<`_30xApN;AZj~M(R`6Sy`M`|Yqy^-Vn{smLtu_)|HRcne1aAMQQ}aVt$m@hTK%O|R=E5>(l0to`s4dU+?|&Wkp+l&b{HkMcB3N z`_3KD*Uj8N0@ls&wFqnvpdJuC?#3&Fp9%1XR0wGxlt9@wIo)KYOxJ0KGz1B*5Pz;H zuMbKD*Kx3+_r-#3VUrIz7p0sbd@Pz0%%-+=4Q!T0Nn*BR@{0okSLmyi;m7OvnXt7$ zBjZrHJ5!EvCW1D<$nC@-P@!B1rM!X@UmsFx&T*XL%cTn(xy9tSaivx>!kI_`+P;h3 zrmfd5%d)H~?{SMsYnO!MW-RzZEaJZSLi0mTbAlr*EegaeQSVLJUDg;WN1nw_ceV6} zMf_{{)>l&cxWVPIDQ|Mq?bm)9G5zCfPee?2Uu%!RO4-jiF$1Wib+Y^7A0npPFW!lm zwqE==VyI`jd%zWOeY19x_Bz+crM3nHlp-b)!L5{AaGF(s+h zE+cK;(#Pff?%f|xOR=8271_5wVsaiiZa5A(&Enwb;C-CtXB>_(`Kx!^r^CsH;c~K} z_02mG*lgxUc4q149LT19{PuCvO0xAlvh}AZJG$V_e)6Sh0w3e+{R>?K8%fLBcB*On zYcs8^?fXqTp692pV8TIPO#tG0FS^JEbXjkG&& zq`y1*+ua0dJ7{=Y{asO+i`84l5kd-&zzBhU7#@M04A)T=N^~rYIi$&>CEr~!Z#D`| zn*Kn{;CM_P4t089B>M8}(SyH_={pvUW&{M9v`%~@C)$hqZK^dbyH56*h|w;-^Sfv? zFw%;!#y{44^;lxXGj)=H2F`6!*va$DDIs%{qDB2$vQGfVL$vH z6{{pWM8$r&GwG-;F%z7CpyLBA3N%;pD^r@N0$f7yM@r`5Y7raQ1O@ zei82V@31ijYwYwgH<%bpMzTmWt67nY_twoK&=IN5>o@z~4acJK9H;CHi^R}%v;P(U z5RQAsH=nM7#MtZDu^2m|MPo-Y9$+^tU^hu$ek8(Pg2<<)_QUYlq+^9PAUFHv0Zsk`I7RQ@?rIp>OuAU>IpT5KXl!``Lh7{_qECgACr?p9^(*P zv~+R^GroeSJ)Q=LWa4rxZ*v$DEqMOpxiQS)BKolh!V!HBlKuKN1oRyU0)?GCWcZ_! zTF3f=0J070xJQIfj3%c!?$K}(W_X5tk`AN-Hg}%xSZ%BLg^+mcPC+-F4cH|yu6qUw z7w`P`l2}7ZwP!IhQxC_AXr?~xL zQRE){3X^ZYs}E&-SVTO3$S?lCzN2@)k$F^mXT<9yiyHg!*~~g(>)idYh`w5Mx*-z$ zrYxxJzU;&NgMt>00k{;hrS)oRQ-}9#+K?XlHGHPLn0mbSFn5%__|nOUgZ9$|H!#?t zXYe`r52xyk@xnF9&@WTMmw@Qq(}eW|y=V9%i)o$R|Q`{r)}hKi*YB=Hw%m zEPBQp4Qd$)M8}6w`hMd>Hv5KA<89^zqNm?P#Vt*$rV@fZ!cf(xf?FB|Wl|B%=|4k- zC(!m*BIa}!D{(7I8iMPBgwp7$jGr4gd3^rJ+H%Ub;0W&lKnqH8jm76FjkdfAnm_Z) z=ThR|rVb}V^~7QXA7npm^js{`F{ve4M2SudT*t3yB;K`Y@7i~oWiwnqv0E%u+9#8( zs;NUKiMK)EsQ7})LsSM=9?Pc#_syRuIwRyAcHpjsxf5`nLqLCMmd8B99MD565OUSx zB3*!>t$SI5`2Dm|XxmNY(Cem@>C~CXD3z7TF+59nZj!aYVb0E}ZVB3IEC#ntkf4JK z5*Tdjpa$%LBMwm0H~pnJpJ%sh%a) z@MiqV?pj7LN9n2tmrS1IhTjO!_+(!2K5v@g#QAw(8Z%71jS6V|x}YcotY}Y*XxkQG z=KE@*eVZ+7qQ}HFYASe!6FG-yPj)m!8K1UU?PKgnN;_%aOBX^PD;2c~%#J<=k!UiH zX3YoVqiP>r4Hha>07at~)iityy91x2&ETb>?0zf+8Ssx04O(rvY7CmvQ$Xv)e)bk{ z2^#DVv|s2{9H7jKTWf8=A~t0_(bSEW^0}iuVRAmjoY&l{rvibm*FhCSu(y8UYM{DA zMXDCMK0I4(X#=n_;ur%oItF|}8mvE!>ndi$JwogQY_A}hZ~xXdt!O9>YY^1%@50t=NsSs^_#`9ag54uCc@Y^PO8KJ7< zR8C~jT8HJr5L`cc0EWM~pNPdsNQxQF1T%nK@Lzk;jnZ=HI(fzm(?tS5xk93b}wNFA7X zP;QE_PYEhWZhzB|p6A4pGW(I(RGp-Sa4FH2*x8fC#DfvnOVD?{u(1NQm+C3Mee$k9 zO2977HE4}Y)=mNKaF;8U2aAUC&XGEc4^*|n!BFoR1^ie% zF_#+ag0zSqKmoJ>cbe}%=v`V8bCDR)N7JdRz$V2&zr3D8dCwX#(Wc~erejp|zPZ5Sc?+F#>K6^pn!RT6aJq2@AdA0zeS zo6M1@a+ARzb;o<8WS%;P3j5#Sm~6ty^UU!Xu`oM=;L z)SzW5Qb#K2pvL+veuTbzB#+?6TiYt)ifAsh)6Im*xrV|2%=JMEu1YZ z^;wjrO zd)t&Z-$PDu=5L_8y8lyj*KkqqXCK=L`}mva?l(tP<^_y&LvGaV%*d)`medsZ+ap@e zSrTz0B?0P&agSPL8wRp!_hqD?^$y^U-YJ19Gtp!xqZ?v^RBZJ|c!3Jd#@mA27P_{} zu@36~-Gz^4sPbuZS7xKOM}9c1O0TFGX&4rm@qRID)d)og^qbqfo7D7- ztWt76=fKz5sf~+Q6w>#s z3TL}I!Tnk_E9i}ZJ{3yTr5f+*A79u%G5C&ZS(JRBTcz#mQjr(?z}e%73LUucjd zM5Do0JGCgzPGX8)s>RLJ#%=1~2DGGq_xddA@uq(6JuX*D0aScrU`|{J7$Ax`%Lm-T z{#LLOKH@-kT%7VDH(1JE%|nV^+%$9T$+&6pwEz|@$gbY1xU3cJB$KZ%HEwaQCoU_q zuPm-*T0HPz+;qUetvGHri<6i1+2e48u&}VwbNJh{t8`k@Ymbw%SihJQY;Vdh{ipa= zQm63(XZa=9PA2<1F;UWDUT?s(X=cJi{`^IrCW^(M1*9&pD}!*pmUo4?9;_$jADG7Z z+uvm-I1MT1&T(8ZegZBkn3tR~KQ(Q^!t@MtB6nY%c8+FlO_D`#uzbiZLMbmya369z zkpb8b4rokZm_r!hbqMPhe=^CozPkdedS7DumUF%Tg2l`}vUg}N&F!2H!lyPXpzj0A$6Q`t zxccOPPQCN=Wu1D*uJvt~sHW{e00siomxI+&p9HIS>|fvZAy%FbuiJKsa<<~$g_UB@ zH?D0`_pVZFEx-1EZNk?{|JO!*o#4L?Jg5c~N_qhSk}YbGR{F8RkGRxrJK`i*E8l9+ z^8tf)sL^@by8e7lEvA4~oKO>j^t&H&I|Bj&PDDqOZ_!(|U-@6u`XPS=n4x-P3uMD^H^j9%<@t>-r;BEW!r3B$ONY8Q`et@M|Yy-VN7kC-Snwo&ta{&>Le| z-1mA6iiM7B;t}h6ST%+K<<7l}`p}HgsL16`2J~aFJTJhiD*$sUTxf+#SsL3qsNs4) zV6(*j_5ozrCF$=%>+cDXL;{2j~A!gJqifa&dy|4-(d)6evgk|GxcG6op$s`J9Um z``iB)5Gufm|LEU+{09E^{~vApKlOJdpJeL>jOPsILhKm0@&+xB|@wzJ(k zes*8~mFswRn>L#^A^gF;#HH?>9s}lheW?Em){}>ce|?&NrR5S{8TQ5kddt-Uvcg+N zBHk)my4&LMr>o_{D?t14z5%Q*wWS}Z7fC@!v%PjKb}%e1F!?K z5H4<*T-+6|Z{BR~SKJ%jxU@?gs^)I_W-jt={vuJ(nTvdzT;#UdrIz=(GZ*q&5hL`6 zK592`1>t1aUAEwhZT?l8Td)diHf~=uAdKVk@qNR3FoT})SP7FN;DX{tkxoYVCM?jd zMsIHxQHL=Yk!^IBMWNKbG`>=9$~y`Ld7+qzRzt{f@6re!>_~K0cR(tstO*7WM1N9kX;O( z6=q4qPZ*l$OV|-gud8aj)mnhLcaeCwEYQ9>6ZwZavCD>e*3)VQRA4U_X?aaxBM`X& z+b}d|qYb>rC*%43M)^d{i+(>d##6->^e4dKk0C12T1AZ7N11@2jcvG^Rz;j1iEA+L zYn2f4Q{)4Oz%^knaVJHtT7NBEp8oQ&nDZN;#KbP?0^6$*;COMFxOC~)lzFx z?wCZtT2-~Tpns-OXDGwrA*hQu?mFhAn5%@XB)$#>95Geze#9)dmkY8%M z90P1NwgBD&`jwA0&=PsU7UDw9yr2XUNHX^dzY8XdRslwf1rEtVho`Vect0|Z$ShZP zK4nY2nI)Q_f$*e`Nh`F$H?x_mIYq^LyTJe2TUV7T)bGs!n+0{;3a#KOVN#tn?J{+h z=rN~;>SMr5=}ta{`M1V>DUZ6Vd(C`5$f!C^d@m_>&Cn|3fx;ipDr%@0t=$jRu;X=E zI6v=#SyiGTD;j+bwqDC9@$sOYU_Y2n=h_ha(lbd zm@O}Z!ccIgPf$^s87xOzkTr zY(iwImnKn(aA#U3fK-`m{JEaZ!=Xnnik7It@bwFmi>+`kt7~n}Y?VLsUJ1M_kI!Jo z{j8!)mS)Q*z$5%Qr()!uM?1h`Wun2Lc>y}vq-DWL8m+h|p0rYris%Cigc0^2T2%{- zUUUhW+mjm1-D3-J>`>Kf7PJiF=0p!K&Tqng`k@?A;t!+7JWgK~rGZ+$6fDzLb_9Cd zIwo1I6ea;-OCVfNYRcT9r&Y)5sjwav983qhY^s8IcpKdBQ;D`BAhTY73u7LGW88Mh zI8?0?iN7P?(n^YSfqxgM2PUOeQ^>a!yBTE)SX#`=67O*^{otc(F((756b9Di#iAal ztcqbHC%-?t&`GtHlXjtpm$&9lOsML2hyxtrwUTM&^9?NY4o|R|=wr=61RK=lTkrK2 z=5b#dI9P5lc$DxCeYobbL#lGi*14<^K5YW@{;yhTYB=Fm^bsXSv%u$TPk2L7x+G_w zfVh6bA>O2<4j7cGG09{uD{8?06k3y!(b3dhFl6h!Z%bY} zoW|+4#MzJDJ_YA-;MV@}2D<+ATvgpVpecey-3tzRhxFQI3G)l1JMg@4FH0z{W?Jl- zcRd3{4VLC|c|LlTqbRMaA*%Tc;87loV8io>+I4RuJeoy>yH<^R2we!13EA!*#Z5I(m|CO`C%J0Cqqbwj}xY_bMA3DF;-Dj~`tivC6WBI6VHM8xO7AO360h>A2$ z>g=jNQYPMEG&|(UVp0B!GP!dEPcl)fs7)0A>MT(r!`HS}Hq1irF$X^JO_Zz3_-}YR zzj)a@)I3xAL-s=NiO5A|$kK=Z!J)J(`QWjM*Ah24JVUCRx@(Wj=|(h9_YIAZs8wS~ zOKem`;J7^@!`wir9~Ey&BbnI?7?~f#CtjTqlZA)UhmmXDf~WXn(7WJU-^woH`GPi; zTF&C!Q}Zy_Enet2)N-$-MDMICvYu&s4DJaaD4rov<2DJb>C-q zV*E)bu9afyj_0}14#jQa2+UMA16db6q3;*Ma}CaPqa;>H`nV@rf0c(-e6IBTFq@~HxzVaA2jJA9@T@{q2Ts~dlQEg(P>8erJVI_=UQ&x_!&x%2 z(Z^iI|EbfSzg@S#2EM8PCswb3a9`nnqIyF9rvInmMFRh(|M#D0MSt7%zo!QNrvC?F z!oTVN{r5Dszn$f;t_B{bJWFB%s2Z{4_mmS}KqT{3aN1O0KNYX#z174`3zcwYhF5xw z>Ju;KRs#51F~lQ_);ZReBbO>hf5q;R$FFSkhElC?OsCV?!UOe2c$tLMTz%){&mN~@ zvgLxJu`o~5@axp$l=Nx&&&KAOQf5&%;S7LQ`_EG3*78OX?->1YuK5sw!!vf-o+ zx^Q4um~jVTe$9qd=GhCXfm5o>`37p7{so zPd=X$h}VyJkH&Q?)R|JuX~njIB4mLp))HA?5|+4VEczn(kY2F8{^wJ1v5y)c6m9 z6OpXVfd*|{E!FKk)hsRsx@>6$^9{|xQU!&otJL0_)AJqChxMn8^NO9(Pgd?;x$WXf zf3~q=ex(x`Rlp~Na(KCKHJX!=6V5q}6{Y7cbXp!MJIcUxKA>JN;bbADt-o)dxlZR&#>j=;q!s{9-vk*0dQuK>a6+0ciCm316$3- zN~#o0HR5hD1r@qsQ##X{Rx4Cm2zyOQEeM1c6v4}h!y`HCydm`);6EO>j3vHjzu~p& z2H*?&P2^P@^m$rIjkHwkJwMw>U8$@FvrO-`S0Z;ZuAA(e1XiLM9?-}lK4iO~7p^h5 zemNVCS&P`&x3V21$9*%!RHr!v1h*uZ3mAZysq^{lL`#t5=-E~fd^G$sOLF>fgH)IM zz1_06s02$(rjpF8!8A858u-Qa#r3HQhjZR}S@*ZcFaQ_a=a&my#)G!r$BI9cgM(AP=RpzG;QG4p8 zDbT>A4y(hd$Lzn=zbJb%o*_zp(MPEhQMyIPqj#si9Hravqp004AZ8NQVc7u3sHfG4 zz3{%xw1()B@x71H%z0AhaEAhaze=?hllx6n3vR3ht5yM4olvRzO&OSkEGz3>)STrKlnDquC4Nv1ATuB2ovFy(bS&i6SnhpP}L+co(SaH`sTrPPmBM9Ew>xMu}w|k z-4cO|x!*En3HQa^C~gm-Yo?5DMTq@T!cM->DIX8O7z5rVc%JkY7nqhy%e_}@R?;3V z2MAV65T}%OM>Wo!AZ-+?bjBh{?bFl(WJjx9R%9zzs@9SFj_lO}c%w**cgYXi+hh8v zgpE!k{1nAKD8LncRJo2|(`e%uL(Cfrsgs+=Y63g9m*N%n4BH&II@ zdHC>${}bxZ#L(N06_=v~AJ1^i_%=tltxz0f;c=Mj8J-vAs;UQ)oC(iIEgT6;slYcJ z+4852e?U|u!E*`>%Y|Uv(crTZy*atv_x?%#iWJMtO%yU`wM-4T*-;LsTYB*%iJoyM z3aY3xvT{>nV+ZX}+~lKbEg1)p^$J`mI^MFuKDC5ZA5I-n^X@Z5NdoN~e$I%^t;2)l z46|$TK`MoKvVB`LE+FB{Se+bdKyJgbj*sCQ8T7j6xSLkt>5$hQL%iJ+mmMPO18b?f&b#|ic$2YzxP#Aa7MKt zgB`8b21o7c1-CFBAl860&_M*>PDp5vvawOkq0!GcMc5*bFm6RptCN^DwMT&2(+{{B zC+R)8#uiC4IQM}M6IW}(`lap{DH?`>#0MC*xCmy}?7QKp%Io$-r~d}~NsNWAQMbGZ zqbQtbiGHBW@?zP@3nv5dELmIScf}QX=3S|D#9zd_O9|9z8*}8YJ*6mxWNpS1(H$y8 zi>PIy^8(+dtmsGVt>leLWj4BNph%)ss#fzo-75Kf!4#f8%MrgIZ9-47wiQOt3Zomk z54<;T#6cto@3%h%lz#93V(;DKqAK_H;qRIgFfhnrkeT5$9A+HWFd&Esc$!IOILL7Z z1Qn38ib|5Y11qD0re>C>P_vp2m{I!Z;4V*Xu~N{?5^AeuMSGhSyN6xr-dXMJz3w%L z_B?w(@9+KNec$Kv+4}hiH}`3+b+7xd?(6=3ugkV0*bn>}Jz90wHm8wl!(>|AgvftB~%Ivst@-$Q08hM-l?>7J6ZT>$n zDE)uNfB3(O|LZpY-);WC|Bv}U|5x?@|26y%|3C4c-sbGQE z^gh7mf*`EfD|yaeaHaD(mZ8n=tz3E6UY9|k_o)Ng^Ol4 z0(*!0{qr9qy|#bUAgnfg;cdoj@4%N&i4%3b9f$Y1Bo9FfR8IFuC!~I9Zvk1BD)|DV z-^bG&XBmi&wf82(n}rSrNBQL51k1Oa?!pJbsE0)oiVh= zMLQ;%(yJj}@PaDIQ^nx2n$9S)52Tkg4$bZM{zq(Ftaf55z^gcJAFGq3mSmYn-cLN$?Pm6}(~u-?;L@sEr2Z4VO(_a!XxzC>o$e z%{*bz>SMrtcbyE1bAql(io}b5-Kc^cX2V>4WGAyp0(SZZz)EMx4~h`l5^4z*=M0SM zoZa_FI$#Nvxx*i^u$MbLz`{OeATszgeP4~#wxsVb zEG%XxID>Au$*G-gV6sD;{Rg*9?BA81AKmO<`>-u z3B;Ia`Jd-9IIEFQZR$udHDK-cr#-#0Z2`L7}d82lv?()%2G$=!|hoj}G z?r1G*XPJjr_Ox)aJQ==ECiAjP3qvq$AA6&g-X#U-uG0rbn>H-*?4iA=f;!xOAIHJlTo-eY zrUvU$!Idw484qEQM@^N_jeoc8@=>iz^1Q^L5_)-Rf!F7PK8J8V@JKywHrF+3=V|G7 zk98D``(=N%b!?ZdBQKX!o^$Y82c8Mjg)YCM%QGsP$p}S{?QaPMnOkfjmlZ4D7b3st zvh)T~mgR&;32Mk1nA%Bnz}LeI0Z;Vn6S5Lq=0>z^I6BhnM7R6kfU@FRZ;V0KtV!JW zIIQU%nA-dl?R9Fh6&iFZk-w$K>yMTm&pu0!hYj_evh>KRak+}FKxO51*jeJ#hO%Ur zML&fO3azB;?HHK4E0xVKT;vONpqC4?Wx>p~`m+@b_Ks(Uu=1fAfN^faYw@W|u41*1 znw__(g!7hd-Y&1!{V8~ihpCGOHD-8|r&7H8ti&5rENr~AnB&>(NbpAml8DnIECjSb zrEqBPXfl~SzFd$7+o)CP19Qs8Gy8908uXZFPt+U`20}uuFqoNnIV;O)oT=AJ)ou8Ze?wG=c$(`f&Bagg1G=y*tkY;a# zXRs*fg5<^K3&}EgxhI3K^|XD3q_*LzEmibr90yK7Gb|d}>C`_zaq7YywZ~?I9RjQ! zz=m1v&@XPhQYE_kgRfj<3F4?tIB^Tcdz%)jC`A8pAICKiIq77VzkeF&^yFSQRtb2@ zP9tVf4uv6Z)MM$5z@vb?gUR8*lhy%oe0XQrufMwIGernz>5;SE`#c70j})O-r_tVH zTY3hEzM0(>upQ>FT!1YX!mZLVjaTTNyk16l;U3lUZ18q6@9A%)LN9W$ULdY+)1mwT#v9%XO`e}~3inBIrawK!D4Bq23!!#Ozr46(5qx?bY*V35tqRZ0LL{sHWvU|FQ z>k;Kb#%1}A(JSl1`NS&x<=@Hulyd;)rAiza$@8?*YMLa;X$9!G7_=N1mOVc&wD^si z_nRB(lDwF*!`N6JEq`8^8T6*cXf68)`Ax1Hw+s8ct<)Xby7*icmZy@UYI8CW#Q~Qv zmm0A4-8{|IOZ|qsD&D>PCx+S%pT)9wuai6m{oL-jGX>g+(qdT^2djBCKQPLoPqvfq z9i!O^Z!vU{u#!D#{deF0{I7Zb+x&mG`TuV7|J~;QyUqUx?^A&g@HYS7ZT`R8{D1#1 z^Z%8N|4aTCl3+rNC2l3WLf%5xXj8Vis_ZIygA3 z40+-1BVq(m-L^FbE?eKi9Ah^#Qz6k$FlEu!Y|sqUp0BqnFM)7O%~!#Mi}OCE0hJe= z_g)H?)Sso9;g=Vg)e|A}5bS_)TKZ7kOMX8%av`m2XJlkBXX3^v?1RkV3r2f-Q~yK- zGu^8T;jaM$xt4tvZZ=u=R=!oBtj89GW*JWjZeg-2L5iYsLncY1=KAU^%9yHF+4*!n zPfk`96OWAaNr7C$buy|v%0D)ESDebzHt*+FEi!u-r8SC`lqBhcBa{Ec#wV?ZeVSxG zMo;z$?&RG@gg|}R9`wC>HyUN(#Poy!7*5CqJ>AuENTkv{DTFy`$ex@Cp$Oye1!+VM z^h>8Fz))hP)ERr)6+Xlap4L&KOV@{8iSW@Lo^J55?ckI!0*P1oX!hi_!EF*a52M28 zufQ}3JBTiV_ZDD7`R_U_`r!5J_8EL=*jrVw^0II;Gux}Zpue$Ka~j%axFq`Y0V&>h z_IVJLS8L7Dl6TVQGix#L_M77MG|ZD<1Rp%gL8JsgS~TH%z14c z`MbQ1F{-2}Y$|N4k7Wznlzg*nbg+3KqB(ms0Y|m;I?T@4ce)h2HNWRuV6hp??H&VY z(j9+N5ligPkz^rWVc-~G)-fl^y}|5q?`FoI2O!F&GUXC(n0Fq{Knep{{K6>XFoQSM z;t6W(0ps(T0TG=k579I+>}>i>4cwwDvK-7sPjC~IEOEp~nkC0P;d)ke7LM+4>9hE$ z%<@ogGipj=Ms5;G*ax&hH30g+Ymk7RRo4$EI@D3lVZ-J0ehvhB5RV{I=y3;eC^l?q zvoXCXB)#G@zz$#9wvk8vqczYwW_n96#QLqq+8Mf(SIhd7OyH;qw ze>~`JzunP?2O=7_`UC4=!Qh6iae$wIpRyb7&wt01#Xt!Wdp-^{S(Px&gCSnb!rJuw z#uzvc=Pj>hPWR*7?q~vxvl1w|e6&xuFaSE}fbe?{D%DH;3Y-Q3T6pg$EPdZ`8mPzO z7uDoUSfEJY0NEzlTVOloqe-+oy8wDh*PuX!HVEJgXO!vj;Fe;QDfUp(g*FZPQU z`LSy=AJDcA+)s&1)?h2H)iypqNuR&t$(5)`>xw8vw~3@lOr6N<^TbX*^~p8{b{QGi zWr~ApqTeef0jI<}l!pX#vu1vwW4N2L`G5_!jvIq*3vc1M8R$)J=U{PxZxn&9@z-lE z3ooK(+|NUK{ZWIup3LstkE&tKDanj|VD{4N3(Uh-lUm611>%y=l#A|bu<^Od1?cVi zCcnE~G-k$ni1IW_j>+}&AFEQpJ$^`gHuISBpah0N-17Vt#OJr6U{|nqym{<-p;`A@ zc!r)=&wc+1_U#$@DrQe? z$Or;*oL*rL%S{*Df1|D!9*NwUHCQf-l-H89?|ZU}4y*|ta;nDabW#P8O$25*G{Y5?mpB4*Bq zlNwk}Gg0@H_^Xf-S^+b=RH-bdy<|TqGF8bR#zrbGRH@7&(XH%gA7Q9NL2Nu={z?q zhK|Wv><>5J^!6L8S#6}(-HyRrF1AtgxsTST%z6Rzet_)eMH>(DFbNa;r&qd7@yC!L zQ(n$ob0g2D9#f|JjAstI%>5s$Mjj^ZRw`h$yrlQs*Eny#>+s>dLhFlZk1GJ{1{s;N zyTm(PkGCyHTQ;f`^Vib+#ZjBUL7Ds((c?_Fl} z7rT#ID&*oe8!6^ox2wy;mjT2$OmNR_V$Pqffm)##SZkA+OLRJ-%$Ey%+^d^ET+O{{mj4_6-AIaPie1&F|0(HKSjK%MciWW_?*pjbw|<{ z7-53vH&iIe=wa`Ji3%}EtpZa;4&_w6LETL1*o#T1V+{z1hmgkRTo^UdcjyI7x+W&0 zhc={LsFD=b12n`+tugi+S!!P7GbukVCkKMqm@d=->EEd2->^d z%!_(>nfY9q>h)aALIu=%887J6ZT`QzZ}b1%=Ko{PYyUp~Zu9@$;Me=N7>rMj;#*U0 z^fcppvwHgbu)=T@E;)%`i!*1NyX0`+%B!dYHyE?5f*H>Ymj|o|A>VLTH6XaR!AY!W zGxazcNjqb;WhTd$^v;FJK}Mg!qwxy%F)YPw>5t(O{9{Wvg(eebB9Sa-n_(a#@p~Ns zZ^EVXZS=TY=Uvn#8DHcFo<6Q&3)l)fymj8rv>!I=sKFJ$sJq)Fn!I=H-v_Hi`=jJ_ z!Nx`nfPjIBy1xna+$hZKd0Z%}NP}V2nu*L45UQdAo82-E{6syw>x+2UAYnV$8(CK6 z39Zo-_>i&dR*M~JODnBxt5j^35BQk7JVNc*8pXAG{m2NZZaVh$x`=(F$Imjm0@w1i zpejf=_K5#ajrEI<1X;~{gDlD??3w8eA&SPTxwGgAJA9D}DB!0?>s9IHqmSUJg?*jO z3^2e9lLd2R(~)jxa@%{;#)+v}kxYstPO*Yh+(*7mQ4FDY_!DjzNDGd!%UXa6_(q2E zjq{Svsev5SPB^^RJKTGB%3)Yr>CEzQ?`$9ZIsWk8fvHIXPGsrLpDiEb4ZDuSpXmTH z*mk1~3V4t4c9$80GGl&IX3JR1SP{*XM|x+wk(dLAyZrCAn_=PtdMMR^`IL)mE~Oa`DDS|gt{S|c%g0x*0?$ zsr8*@YG(ULi5Cd`Tj5IO9ikQm!gVb=euHg?J7uCeeO~>?1{Ek4xddJ_lm~GMjSjDE ztb`7tPO`=~`2n=KHkX-Kg8lEt{!HP&KtS6>`FY0|18L)A;EMvZ$P}?f0w4&cu_~q{ zeQiImoitqDFCYGAu(M?5eIvJ^3Qdm{1A52;s}`8au;q;QwK~9;co95k$H=`=jyCS% z50Vv{3!Wjq_J$1i<9p6=M0Nlp0~q}qB-%1oYQCj8wlxiBc=!`HRPEgq7{AER*T{Pt z1DK`QVQi#h#P@bHx=1nbp8TaP{gD>sLI0%{YwLi8)TWo5#N%P?(_;poB8Vv8V)Zgq zc*M5a%z0~Uswb_^L^Jx@mT_H@KT7~e8M|+dcNv<(^E3ZE-h%ZfsyIn~voH5HF&!OM(aECL!?MFp22ghpL=4r&vG(ZcPQV%!U z+=J9Cuf|h$%eRg1H*+BnrjGG}thukwDm-bBP!A&x!z~&hrJR=onTxN*5Jdt7*(b0j zI|NCS7gOw6uF)3ddQqTbWg!;6d=!igC3kMLMH z7je)S7+VG}P;hX!uJ6p{)Q|!dgjja4v^$o99C2xhgT|{@rB^FAn?D`x^xq5{BvCGC z`KC_bGp%J*8$#njVKF6+jY!BSdmJ}g(~|d5LpT)Lo>GL0V0qdqwyeg6tJ)=M$h*#`UxOf?(PNZazN3F zB8P8Y8*|y7F({n*jH%TpuAM^=PlphDOtk*$j6Ilfab=-h9y4&-%laweM~fJXke`ciC_Tg8#K=;$M~cdiw$n!Za(>J z+!3^yytNE%Ge&okS^=2rlC}x=IYw|6zB>(1Fd+{eR5Cl?m!78qyseK|Z zR^~n6qxHLN)5pN^Jy5OrN)UtInBG|a#{ZMkFaLhlqGI2?4F*-+IVL<3qtdRZ-cu?K z1^l1a7J@UjqLWq8HGA^$m#y8v&epb}m&|PV$>8ZIRj&nzlb?qZyP7?a;u)rWfb5Q1 zb4__Ed{qS>gM*Z;vuO@dJj>;nDTuyvqV`ZOZlmTJYq`KvRnaoxlqR2k!31(+iZ{5Y zcq}T1u)xsoonvVq!)=}X2yUCmc}IG0Yhu&TjajBk5;+50vlJz-_T9Mv9Ry~=P{Ifw zifydbvZ+S0EYp$5Y&_iuE1xUZ=j7;4z;`=(yjiL;GBEx+w?|jJfb*SI2l$k6h|G}| zN^-#Tnb)a~&ugolpawSP{hWKI1#|6~>etf>p@e=4y0)>BV>+g+tJQD5=yE2Ov3q+# zPX+jrcM`12tLL8ig%04h*`oOD^Wnp%BR3YlNbjXs1FVW~=J-TT0l&sD|vOsvT3tKy<^HJyib%mK5^{WaU#zTUlINB zpOyG+TzzL7_=tB&HS^m#o~#P|;4A5q@Stz&@NagUZ0k5om)n{z?3bRcTE6|FG|+UI z;;;5fwf({BwvLP*KJjI3dh7er`kj}gn!&b?8rumrdZmY|l0V)h^}o>8p_yPfc}>a` z20t-3?|IG%#T}{Y>R+IE)o}G~DL71W_e*Ow?n2Ex%KLp6V(J`V9L^~1s6KsK8sCoV zoZDyS`Gpty2J~xd>i?{bYOgriHxM!N@}?)cmv0Xa-X*Qhd55BsKhN%~@&^xYTL;t8 zYnZ~Giyvfv`#1NW)Nf+uvdsgo~CBWAXB%(xob)6;ElZ0i_*zO4hxcFQGc zpd-G0t|Nr+Io_~C^L1NCe)|{BWTf7;{kRs~%On_}OKZS%($md!1Um<`{cRo9IrtwO z>uBpRowa7;r)_R2&;Oa8(pul&C4Jf)u(W>9yKVV9+B%xnKW8rP@6=X(ihBWzIP&Ja zEzO>}T?_7}{=L%ptJxR+AqD$#=S6AMruzQ*Wq1!-9Nx9Gbu8aLM}EAjBFp~u%V@*8 zGw=QOW#0bl->wB5=*9Wl+B!%}Q4~XZ8bh(fQyeAGSW2XEluRjWeb98||rcdZI`V(EE z%k(vULw}_!bd`RfpXe8efr$Rc7bpE6Q{9PNn25Z8L6{2@lTU;YAo9r+0v!3wV*&j4 zdBT&(tViG_F9h)4=S_Nm$jgI#E>ID5ueit4=UZwc^2P_YFLfgW$rWKTl>J5Ftw5}AV$ z$i|0Gn<`+m?@Xb1NU-k$q?<#KgnQ=9APx8Z4G zq-?0}OV^isCPN0H%ES0U9t0woorG{yeGQf>YRFa|g#AN6dLrndKz6SCI4xZR@keV; zu_#E{*lGos#Qyp&!gkrnVBJFp+*LevtAw!3D-ME#s@W_QxqR2Mxll~XP% zazvHe&9N=gJ4JSF0blR|1`b|NADD+3W$x@ zo)v@#HXzOy(z1w$@MG}ul}j9>B0W!L_k-^38bOqIGPC`N#TEOLdnW1&B9*JExRH_| z?S{2V)3{PYFbL?mRIPA_wRJ~=+f)k8{F;r1XeKlgyb7|po3r|fk57h(DC|*SoudoH z9=!yZDlA8G#OnDV`w|VRlNT@tI*?AiTjad+qI2#Amt9 za^&o|DYba!_DdWco~=TN$u%yFl|U^ zEt+wYcO$xr#}DjJDQELSXqS*rs-8Fpsq$&5w*u zGf3Z)t9C+>m#6~8uUBWMR=PY0}hlE6KenNMcDofH!3O885Zo4 z3@+`14+MXzN*6L4_3c8esdCD$9~A zD$@0^CWU7o?3&w1xVe$KfM`2f|Zi^22DGL?|V0j8qsM3=LPS({bg+GdIm z%7@@B&BzENmFsCjwWCfw-cH)6%@y&vkS*|hegp*U_XU!RRUpHjD&byPBCy516OwU zFnMBhXiqriz^KcM9I&@rtvRSl2~_hSA;jD!ao4Q&%im$m2FwvRzO<;9dLd8B`9!5J zuz!#DWRz~H+~|O8QOt(4S@jOcfO%4bN#i01_YS#ywp8>tY`@e2XGP|L$~4C-8)LjHcjN+>srs}kIyh#& zv*;^KEEmO&c(0a&)FHF74#8u>b&F&1>C z;<~dLI4uH}zcbP7wtEwdl;iUr7{!E%818n^U$5Z}l3IP8Az%6T=57ZS(hf}Pf8#Ttp z#np#$^^yAln#ESwA<68X;A=epptC!`=@F9=IEgpb3&PmJ1KwYP`t*GDX^5Jir?`^R znoSyQ!+PsXNZUJN`s)}z83U?EHAX|cbXBF9IUrN4&k0eE4%Y8Xq9^Amq+zaNa#fJq zX{zO69|*yk`jZZxtdbbrdBb@D=bT<|gK#f|fy8`dSDLS;MXctXFwKSaBoiB|?`*-m zC>RZ2h7>Tfn(s@G*9@3WHx3F`^Vk&QN^r>@-4+}({&?X*vBEL4N|YNdot4LkFB4<6 zeCvd=)bp@#jSOq#F{T;SETn$-2WtZZgzubFngJ=V`CQQ{78alYSh+X9U>Fm>Jx^E2 z&PA}kV?^U{BTZS#m-`uy`E*y^L%1@gMOZwq*8!BXc#I3Ckr7VtLf27}fX>(S{G#@-{taMIocrHpe-)(Zyz3qq_1L zc9I2Rzu^T8b6ie+ak*D)V}X3YwT`k~IC28r30lBfTe|3D`!%%Cp!TC`vvg_Wz_0;% z6K1iE(;fIy^1UML2qGk-MA%tqan3SIC&XxJ)OaDl)2I?5DTzic6Jqor;mB*l?mj!;jO(Qgs8`I{j^ z;`g`^6Hk5zSk3W>`Ao>1VDkHikTjP3BZNRA`A-!Bw5S)>dWuAWUw5CEX*a!6S$1oBDQZZ1Qny!3w zsz69QMNy0KqUid&IJ6XEPE*t~^;-<_bJ*( z2%M$pFd^^-MdL=u@56qIo+Jc_qGt+$K8pSw5QlD}52DdR!bUdwRg{vQN1i_j*ZSmK z^dH%C5Mq8tk{<#wf!KnxU3g6Fjexr=eM&L&gi@bT%t|5f7m9g~Qbpb0{OR+UV?YSZ z11L2>ULx~12>gIL%-;-<&JX)w(e-ahmq}0HNiUObwh;J|bax3`c{|N!f^-(lNX!&3N zL1V(m{clVX`~54?n2GL)uf}8uF@ryjvC;kCBYb_#EYF-rDCj*s{`jSof`)`=DWlP9 zAuy9hPZ0uDG`ikh35~vwUAn5AMq?~+R8>KvUl(F3X>^YeAR7IJ5SUG)uL;Gg=LAE^ z7ni7|;8Y}uuHR3=?hal@!3{!EJq5250`n-ilNDb`6nsJmG*Iw|LehK+zAOY5lFAoJ z+UpBQl_CTlBvqE4UET{?g~0Dfoi7CLCUvzCXd(4dAwZ;lgaJRx7n6FcaETSIY8S3-UU4s} zfvmQfS0K+{funV=@FI=3kf-fFje!-v-bfmE^FBbDECyfw@(^iQJ8Q4+Ak9NU=7&k+ zuK7{YoMe;DnpLD36atS>h_?_R3NZ+Ql@wxS*Lsvzhcsh!m>*q3A@1S6Zf(de8N0+| z6yhFS>nY?@Ats#{*>aB<;B_L}x4rd>g;EbmjhJU51OiQsq-% z?9U}hUO8Q!%YSx!N#5y z*MYO+GMAcO`p>wMViIMX@BHFQ=A7y87MnAtC6L;*D3m+=WzVu2 za<2M34u2hiy6o*wm*ie4)SF&f>r+Y|fnZ{xO<>q)=k?b*ruMZ}yflaIQAG94Nb6hD zRQz)OG}F%inA7da+;`YP;aF&ebs&5SVfA>4D107$M?kMBe1(wtr5D4uqPX_@ZVEpjTy)n9;U|Qo zS19}nikn{{ickuHmnkA%NZQjGkx37`-i zBLrL&aY+btQN*u8U_WV9Lg4qL9VY}{BWtAwOu6#0-4c#|TZ5dv>f;5w>sK_?I!N~2tabE_&Y_dBM43Wj{BQP9i^+ZeEthh#4vB6RCK^4n>?koOK#)f@<@X^Xwc$gJ(Q6GT28FI z$9Lrv`4r#(R5WnjEB%W7W&U0M$#5!*Tzn4teP}<%ct7fx=iTg?lh#%#PrFzKD=R!X z*LU)i;lBh@FBfH*E<9;vp0I_pg{y*je^~QV2NyQj6as>?^ycCo?^)nG`5T|feqDj< z>zyj~d)lA!6 zb9i?pVAM`A;-(65cMQi(>lB-JS0COxtyVtkj#}jmXJ>(;mfKy0VzZHD@9qkgrbJq} zJ53~{&AOQujx>WiO)R9%yqRV|T9P|WBBYhwOiM!ABzKxrNGrXWHpzTPt<5ali%dwH zaU)Iee56@u1V@)7b;jn5V8cm%07j#m-~=~8>OCP~;{>wpw!kM@lEm2NxkJ-w*bK-* zbMahZdNZ&fAm#Xmt4GJ z(~~QiEo>QFQCa0QN5wfjD{>$JkjW=6Rs)l1pk&xX6=??So#<3LNpz@TtqxUI;=X3N zbms*Oi7HV0^5BhNbM7 zXb>3)#$FdRu$)00dYxdedyh*J9mrSa=bnYwf^RLe%mgcBq1VKqj89>{h`K}?j zT)%M`?`2x8mxXmNbjMHw^C`q*lp}ZEe@(mbB+ZnCYW;3swrocuU}LK z!ZdXMSO=3zkW_n{_$trP3Vhr!ujV-fazEVrY2m_{AK=uODs}jzN)@%By%dJSZ@e1e z-fcPYkKTc)Oz7(uu6S}-pPBg|6Ek-NK-aOHB8VE2I`=`9S&5=6L% zDI2;zLR|4k92>d{Ab`dD4AqbgVg{&xHI(kkjlSk^TQp^m^LfMVB_Ts zF6VWlVEU&{1}@2ol?zNPv-dUYNq|Ymdt6bcd(?BIx5Svx106_Xf{ z4zu9KpN$ZYnqI2WO3I=x*F%oOJI??qsJiu3Tw&)k@yVHk-d4io;{`iRPrIFO1#zLf zRotAi8Rrr$zWY=uo}U|Lx{tQJU@gnsS*g;a+6lw-#P5@sfjf~r$vfLQ@$IL^J~eJ& z>gq3XQVv>C7??$cj<0KPh=+v9;4ZGL-w$A}NEpGy)I#%#?%{ifkV8o3KVfWVy* zBVGv4XowO;NA9sr!82Nv+X^kUqJPz~f`krZAL&G_V~rN#ibmpC#|jqW3P(DYWVpwQ zX@xKe|F<3+ArvSWsf1Om72@(o;#kFzLL8e3+&x=@xF{hmcO*`VxM(46`f%K|PU-Ls zNdDE6#R>&-Mk--9zzcENBXR5oj6z)2NX72e&QdG=R~3&F3S^E{!YWP{;%p;vtm5%P zob|s|ETh-{Nt3~@zjm@vBEwyR^-9(sVQSgQXf+ut#W>hA>q;fH_=tN;fk<&3j#HFel>ua)(Y zI9wk^Ypg;{dhVmMW|ElsL=VTr$E}@BqHO#79piG(8Q%X3iN~H7+5RLQm%BBA4l%-s^;k5?@(~Yd8ZRd9C!L> z!~6U6?>|q{fXgr_eRI-=tzT@52*(A6Y_I1_vTS)NrWdvv-yhFUFvMOBCxN7ZOYZw( zT;{7jl_X|f;BWUltzx&djgQ37CRWb${PX+-zwF2#LP?y_Go0V_?B9Lr$m7O^;9|b^ zDfQDK>|$!I@yr1}<(gOcZ_;-(%hYF{y& z0mPZn!<41y{FRkM`gYa;5mUo5Lnf)S zjc*R}biVP;oqY29UO$pg^`3%m zh~BiuI)Yd8t?4=SrS!Y-RiEgVWL&pO*)wdobKRcpFFgMoiDhf-?caXdmHBFBSI$eO zC;lVu=ku(g(Mv22(bZ?REh(&@wkNLnLF1b%@vwu%XUZioA?%p?=F*Uy;G7}rvxSwp zO?a+1C-cb%aBYv-wu1P%-O{^a<0Jcbp=%#bAP>_MIk`VCxl8|M97(gY(|q&H;oC0r zORSO8JCV9@+0Sd28r}>YLmv7!JxL5&@Swg8H@m0liR8FzKO2tyq(Anb8H~0oX`|?$>@@%th~YpjK^N&lUL&bBv6h!8lp1xo_Q^=?E#zy{t2I^0}&^UB2+ziy7MinQ+YiHd$ zi8%CZ)6?O(a~obUyt|4#1M>4u%q^XG8RPvC`?mcZ5%J3Sq3LybLzqrf#&^s4lzCof zF?P-Zf2niKJU8=7{(JdP{5G6SDzFX8xpThHoiNWPe~=2Ka55euY%$ex|ON@GM}Oyj$3P;&ECVD z_V=jCy0!3oQ~Q2C#nTI*3p>yC{JO6l(@)&Im+?+sFS?{H2zb=gi`S4G7XMUY(%!$& zP+m!1b#6vpkEuPDAO9^1vW&y`va>xbA!M97#d!Mf{P^=E36$kNs-_L~VJXU#p{#fE zA9b9}f7E#TkNo)V|MCcII!acLR}~vizrl~+MJ2P*3xZ1+7Q{M|>G4E9xh(cw421w$ zMxVVk)_k+Gu&nAbWHqgSn@=`-y$jT7)kHvke&==_4=bI${veg$|4_z(yx@$ZdBMhG zbNOV0S0nEHk?PWgc&GmS^V0A-WA|V9WIwOJk=O8Wn>XH$Vd0&b|6<3Lg4c2rvW9G< zP3!K>ZCU#Sc_cXUih{R-+(nzR0Yft9rMTs-B&rU6+0kXYKljtZGluRs@)|zQdUGns zd80PfAm%eK7>+wQ&RI7tMP2N6nRd3*F=+~4mb`EUW)zf@$!erx~}a34QhO z@#DV2SW@Pg1FrU2HFZPQodx%2r50T`t!?DTy^oF|@$aUcBKVT$yejK~!d45T8bB@EbcB0Q=5+nDA+jLWp9-Vyj=)|K((~ce;T^Cf{l(oI+ z4dc-!ew;J*#~QrG$E}Y2aRJsTxSh3isuwC3vOcOZ z9#!$<7SI3o?E7bKuH9=Q;;#J_OLw|q_-R*v6ZiPHcmb^D8(nhsGMey*FH-*SMe*uo zGC-VNF!JNWFMoDCY?5-)ko8<)NoG;udE;B(^W&e0z53(ueZQhcs{6j* z>gC6`u={=wF9!A&zg^Bvo36y2`q}W-Yx=id#GH+qA^DcP<9b9^Sb9i;IxRR2G;!=I z!Z>}al^7gdC%C9K%S;eM{^f#+lrS0Xz6Kdm+kXhAA6i> zQ(4^MBN(d8BuL;cdb=Y8%baQBXZ-jqwgURZ55;Q#$7N_^*1{&X3i(uL+2=zA&QYI} zdnD2U&TPJ1Ty_-;GFz}r8_O3S7qZpwsrc6wvTSb&+2Xg)G5wFV-6>>a;&uP>_E>En zv1}4Hi;7@Q)|I~|^Hn_ehCk>2{L11nWWWI5r)jKv4Gi=>P4nUCQ{N@Ij>g1s_4rE3 zyan1($qRIalKK~n>iG-kr^=SmD?w+|BQ3>F+Z*KOplAP3-TyF1(1S@MLte`E{RQ z>{xK5n>NeZUngNCKD0jTvbDcT;>It7S1y)RAF79ow14tlRel#Uggo~GGQ+jLykAVo zA`1WVemNy8DQsZsx;#XRD4C;0#fvy7Hc-ogqlyAQL~9&O_P-Mq2fUbeQ<_*H@QORLw_*voPy) zOnC<6QaZ*q#ORZ(W(l~74624LFjTXI+4*mboNuxn&92{(C##JFVcB2cE+`vTBuM1? zt53oKFd43W3mU6DcM8|4shkB?Hkh7>HpE1SWrdU(#Py9fEpsGPF5*)Sz6E>*Bkp2u zoEGKd3)BSC$bxQP22J6ukbJslqosEm^H0y5?qL4uv*QcPBB!4yc1a$X)Sy{`-T-Z8 zL1vXHRt!wtxCv6yH{Zr$1LI_h`D_KAR`UZ4?Z8eCLo|?1R&E&3Ipc{G$ z!{hVua00J&W0@9v{b?@nj~h6F)r}Lt zo2*`L9YMvdK*gh{g{CiL7O%`-pJC!w0TZ8vY=u5nVB$gsNZ2qT&Ny>Td!2t8^Yv8$ zF@cRObF!1Y6zgYif-mPWouj_=;f^k^1!_JlWqoxRaRhPv;K5uL(07wd~W!{yo8-*ZtibsAg}4LA`D~M`m^| z7;(gB`Y%!8)U8;+#oPUSn~LFsKfFo*DaV!wQ>U_SrkE^QkUqakWzVVKgNDu0{D4Mp zh3l*wYDKV>^LRj4p~=rPkBTgV?_}aZ;S43x%?>7En+BLz)|;gb%m`W10NoSLV2;|9 zmjzYa{=8Dow?Z>8<22lE71Qcc1Tf58eU_hBg<}u5 z8>9O~#A-(Wz==q-+2C~?l1BCKbjcls0+EB|#PlWGru$l~Y|65bVlH$?Wd4eJ4uj?m zcyQcu5>lI7?45BQ-bk)v?I%{7D_=h0E`!3zZ#l8rs;F}pJG}R|2OX8 zA&3ARLJq65yO?r%l^_J;J_jlUrhURf#m>2aXg8jM5wRq?>?%CAnWZ;#-4D_%hMJEwgOY|BuRHd@%yi1|N)GdO zwvnw8O}0fkt55E7xz{Gm*BqobssarcGP_}0jN7}!Qo1CM^WTE~F$yZY48$9Z%wJ?y z1v%DMEYDD-!2Lc|%VxM2nXb{ukYasd$zu*V(9u*HCs;;vvBT!@ZpCDZirQcwjA3V0 z9EMxNH*D(CdEEtrV`#^AONFs!#Osh0m#K%w9@N=}JR6%Q&0fhe<$y#e_Ei5&!BJCgH3n!2sP*<)4o zT(k7do-LbopH;zeiYEC$kZHq%vu2Z%JLWsP1A%z)+j0IpSN zF2MQmvB$|V+05o!z5rl2JMYQslB?})vImuVcFx9}7L#=zkbfE0UBeQV$H$09V?b9$ z*JdT-g%dNf4d!>I4=}sQ%rgSQC&+VIdJ|@MNgf()vzSMnpyb+;8B=JIv<3?I=+K}Q z(dC1D#Zkx@Fz&=+2*O0hej+=DPJs-ViRYi|3XaL&M&LOBJ{>xqOsmuRab;`1|Mu+t z*r)}TfQoi_pD_E@eFB*t`HmlF7V=>)QjvWF5L?}udu`Xt!j{8J*wdO;ugmRx`Eh(( z3j)@(q43LV9dlM!QCR(K{8T>|RL}MS9;QcD@#74!3mQS;+@Hk902P51a@LoH^|n=} zN0M_Ndhh|`8*h`RTU)%ebjDVLkmX9&m$t`*Oe?OgTm8tYl@BvC>y4LzFQN%)>uX!o z%T?=|GUpV`H@ zD<=9p%9978fIGUOPeh&ONk-zN%Plu+d~6+0QWCco*><>5RAgJvlLXnY#ThAiiYM`{ z+cV^PoF~!E4ICn_@mO7Ck)7GFo7J5!aeQ97B=Z?;xmJwM-GBHA?1^lVd-BYIioTAB zbzyg^S2Wq{ifpF)^nB7a@&d%gC9Kz3?^;?7<)yUJ0bqtp3w#r3RPM%~HV}L#7G=}Y z9p{$hF3Y$JU>Za4wmN14KY2QAd&qO9mP5uv^?YI$c?@G7k2lV%|KM~-gfnbm$oiQr zk5W@{f9_AlLk2!^EO`%a;Fncyi|r3?Pg98EXR}Q_+rnq73SNVuj_K}eai?7**7n!u zoW=%xKZA#{t(58y$w|tduewz1IIO!;Y|eW=w<+@()7|&_?8lzcw_ed%AMuj%CG3KS z>~;Cg)~yAHj0ey2i7Kz1B!Z(b;N@3MchB?rJzjlIE&1;}p^Mn_RL4%hN?U}V$~_}k zgz4@SK9RDo?gS>}pIm8XPX};vZv~zx#HHTjeyW2H@ngS&jnK)C(s9%GB~YPh*~x_m zUVrVd@nEa|U;~NjQk?zcth>>ire#}m4<9;cJeZ3-qAKo}}^I4X<@OIgg2siiaE3Bfh zT_G>2UpFoN9Y6Mf*X|LhM;Eg9CeU->&-_>?Kn6V523^E|gzRd{f2KfbJdn$eUG4Su zNEvB_>y|Q3e(YjEYWFV7-F#$|{*6kKBjJyGdlPe?JiKKLZtsm8hE3SD z3=9ch7q;B^Mlzo?0DO>hckDIy0AUzZLxGNs`OEFet5-XgSQD&Yu$I1O zFz)A$F_fe~fSiF7hHtt*U zp3hN+=HxY2fO?4a(})949XX6%6Les+@Y}uSEP0ww*c*HJ>Mdg~1+xe4K{L3uU9{IaAGS=F-O8*4>@Xl{T)7`4Z~t>tu}D|yDP(v zro4V)$ofrDYT@#t2IK3G^9l1}|Nb`yA~ycma_+^Bh&SN*@Q2aeBY8}Bo#Yb=S^p1Q z&uDi7)!WVmADyuzgG_fl$|t18{+(fGm#xb8jt6(M=%)NjMNOvW3w(lh{@?%h;}19o z2;R0b_}J*Tl1Mycf4AUSTYk|TQ**!Zbv2*hDO^3!p(|Z{q4SG~w?f`hzZLxE=(kMG zy~fx2`1o&$dpdiGmCgT~>_1}ue=h9NkjIAmhZgTeU$K@po0^`phCOLKe3no0jQ!zn z|-*{FY=EWgau#^Lp;#pI#b6N|Jgu{F5Sa zZ=!^YJQ{!huj=e%bv{QP7Hp?;hsle6bJe)tBf};V$=2MwsL#*rv{4!ufMb9613aaE z+<15~pNN?#(7oXW79FUWvF}<(M0;3!$W!We}Vt8;(a{VGXs z6yDiB2Sq}h>TOM|tC?DxAyJ27+_B28=@q%(2#2Dk){upJ-}sL``a@5VIBIYajuyIX zr){sJzLtw|J^M!P#oF8P<^4)31|T@#9Us0Xn}*rq+>B66M6P*H<&XgNn58|jd-Ajr zkIWo5>lCx6a+ocx1aA3w!rds$CCftM`FRFGj^fMv4Y*37`zqBV zSD6s2mA$Z_Df}`vs4`+31@d0tt!N>k#%wo(nZGjpb>&o0Vg6zJtXr{$)UOjHU+VVTD!g4pw+`Z(m59+#G zpd4GPt#h};UW?!SdP@tkExVZww>X?laYF!LM8?9>n|-5h?*FWAWcxp^+hOjKY+Rrg z2gUj(bT@ZGj*tsk1v32c3m}aWSVB3XcG5C*(hIMaoOi#^_=MK{wZ;7~`xML2I`hqk zcP~A>kEMpl;WA~G9cS)HbrR;9r3wPd#;JkvNt7_)DV0>0b;AaZFK2F{(N&+)LBEsP z=QNSNOGSe<`wQe$0Fe`;L{--xb1ufaV#a&`Bw5f|m89~mc==qUrcRa8UgyyQ+nvVw zWYkm{e{b8GS^&~?$lEg21!+s&g)~mF)Rx?wP1nVY4-fY)!HX3BNjVR|Kl0CCf>ryv zU#}=QLd>x*@AnWDG;@-IW|6p{Sxm<|MG`T6QqU|xloV02;iyvu%^p-OqRc0`b-(s} z{z@|^TKDTw^Z;I9h3cNmcKSh3o}D#)KyBI(bmBh9SGM;)*hCFLwI$+{_$lIO=0HUG zsQbuCMO_}#?%Qw0j4c7i(e2tc3)@O2Eg{kuYl^XFC5s#zfI9HHA|Qi0Y_olb z$*#b6SfvIzV4$%rXM6ntfyDB`AV{YC^U5tfF920r#1qO_KAO*U;T6d2r?AOMb?9#u?rLEB?36Y*+oqf-Wu4!(ga z!BOzJl$9}ieJ;Xc4A@!#?zB(^sK}|#S%^s6=4H-0XUV360Xfz0!5HI2==&I^w_YFh z3%c!?--Fk)aH!- zIu#T}%r}gh>%jjAo62a(vt zrcG)qTEJCAmeeWpEbF>0OEogLW?=)ohR8bk>XAQB1~sB-?Q1J z%A?{`{1oOA3LuvukY#P`fNBlU$?1%PPNWBgW3}6cy-e$|CfzKth|y&1#Mq#kFtf_b z0aM^(?GJi-anI)TNMK;+7MOjx$9;^&#n&n`8>@mbsy$+tR+y!0Tgzb8+cUXHJ~`lB z?+(&HDgV&#awZo zDX?(C#wIrTL6IiIHLPW?bwdH(IGtqzvUsH|lf|c1zt%klWMBVZ?7azCQ&+n-ymqp~ z90Wum!2vdeLLgBPmBC_CNf>01gvkm>fS?3Lt-hzw+7_!=Yt^?Zt%|md1HKi9YS32H zT5M%-tcX_apx73*lv-=)>(J@D*G^JxPka9N|IWF-|NGB%(yKnKwbx#I?KST8tmnCJ zdNKyW5s$DIhkQRm6-F2cmV@hFcYWQ2?Zp5MWZ#S3i5JR2MHd15)Q`Gt3)Gr57tD9kpGsVR|XPK zQ*4z{ofk?W8Zc$?@j3E^39l#;KTGXC(t<5+@3eTbgwCx5W+Jb(pTP2~m>`me1-*Ex z^Vppeze@qLuXPVnxFN-zV@QG1AgE+L9rD?sldrc9ZJUxHB9d0cV~6GP{?Jo2i%!My zhaPg${t)@6FVbh6A_C2n#-35BB1OXC-=(Gxe31I+i}ZO&ZPx=$c<&qKCJb7 ztSJ2C$M6q}`m$kEX1_w^>h>dX7#1~zfq4$*&od3*C-)}YO7=}yp@{i9{P;2J#qc}& z)el|N?WY&<5+Zu1vNy=>Y_09S^dt1r-BX06PTNxdBbVl8)K09SI)Iq>!%v@mgh+^> zY(t}Ll>Rawxjp2q_Xt~bA}n6GbOSVQZ)E+P&8F2UqQ7>7T?Nd*&WErcy;u-^lH}t5 zEc}mMq9V3PF0Xs>`mNhv-l1<7aKQSBMVHJ!`$fUq>pgP#)`L_z?hmKSzW;ED{+->I z{bly2+2{5hh9cE5yW_8NrfHSSlp%_vilXqJXz2I9@c!`b@RPrfqoMHduyKEg{X^OJ zevDEa0)j%ZHQk=jJ>I*2-EDsd8p*)E3cuawc6U&T^gFB)|CVCA>PT)e;i2L7xCtJr z8|t4ZHsXK3-)EX8&E)jwCw@Kxs>)qIhrBh=W^X!O4sXjQEtB4%t5J;kg*Zr+@**4d zArxoMBgm_Yu~&9nyztTab6sJ(c4Lpfh}xuhdan1Kn}2)6ztv7Fe+n+ zBDyj4Z08vwO1)6Hf!x=M-#j)qaffEUA}%QWY&#L*WZKa*aMBs6!xi)U++MCIDQx_-hNWB%dbG}?Y1an0aZ27u&Hz*>L33I>x`_!FjrcCdw zZxs>LkQ6oURe4JD+7()1>n>i$ziTej3VwzE`=-8U;%$WfGrs}0o9)t`*B`_1WUycQ zgZ!)bKP3CVFjBw<|^-48L(5c7+ryzo99yDPw&4XvN59`fh!D^P9e} zd%wabz{z)Hb5o_M0g92vzPoq+`9uHrx4(nYXJe~zZl*r-amC1qSiIX?HFNbN^kWnw zh0A{a>Bsx`h#=FY-Z(0)OEKbx+b=}GDR&x2X|ok0-X(%LU0XLaWsl2<$l9b(HoN^w z1WFt@e4pZ%_;pfuqEew;M1&>5u|KVE{a*KkZcp;7x@scI?+RWec;V3`=;J2F>i?!+ znX-roa$UZPQiR14L5A)%925D_8XuJnB1qt6!U3O*z{-~F`CB{W3rK7=u}%}PPA1%{O^Z`4+}noWxf4(@{to4PnLdc0(CnlW;KfdpH-m#yL z9XR&%vEdyjI`TSv+i$jSYOih&Z2PpWwk@Ldlh%W+ueQ!>)wU{IosNEXblcJDqm@UC zj>g@6;Kf8Zx4^J-(_sKOXLD#KFxn~poRR2UiXd1;t&uR#^{NeJNSv8cn#g>g5}|A~h%`_`0Q!~{LANGS~*^9l$Byd*Fn z8@RlR@rx}iV*3@wtY)T>T$}))Ie?F^ylcS@s#E+lkAG&TnB;-`D6MX&=0phNe2K!u z12Fwwk?)*O@bs(I)b1822d6+dFlQlcvzCgry+k_dm3z>& z(!sTIxND`Ccs{dzKA~HjMW5NXII!S6jjPbpEJ`KIgmTm#*=~NCs8IB_1-i1(-|&r71z;Sd~Y|=uQp4Sp?Xe${Y)0p7l3jRtZapC!5%H z6ckEZrxJ$ffu-J3)|;#kt}pVHSA{Ujs1gDgIkbHQsxFgXbjXoo?Q7C&M zQVT7cEfNmy?3ST<*w6XnSxi=lFBI)01=Bhfe?*wesR%{c;Qg@Ai!x0KaT zQ#KOf%S;;QxKZf-46MV1a!q#Bv?(3}qUP<}9LT+Ol`w2WkNP5^nWY2U<=^(`ZUVV& zZK#Uv^pod9_3PQlP-IPNgT-5pA)k8jGYp?Y2zh>m`B}kI%c362uKN_&b>ZoVrRYiN)`bWrD%T6L|Uijj?1rQkb8n>@c+gnoIbJ!K>r$ZBviv5!~MyGKW5fP4=1QD z{i%BD8d@Y7eUa+KMS`rB;*b5raKF0;f(f1h1;&}nm}ijB@s3OQx2?4cB`lv_b5iZ` z4^r+>*+5GFnEQ3TJ^(xli$vCxsTLmHyk{91hik0e}?Q;0>ve(ASq0 z_Rsd!u7kTTR4wSdEqs%?kd~%_I7En@n<)j`%5uNOF>R?{74H7tdKeK$`&*rHO9)W= zZs?%fvgv27<19HjPRE16Ftg>pOjal>sEVrP?RJLu7vgFRwr3? zo1Y2;F9`$BZe~sOE*|AsNST5Wm$1Hc{R~@L=(~|Ng-<(UeV)zD7V}m5WSXy)_sB-) zG(0&1FTgV;Rk#8}V8NsCvnACOR$XHR3F`ySq`Am*63(Ggk*_TeYfK(u$Y174XA6%R zxwz@y=Z^bvF%K8v!~YkLrqmO>;U=$T!kb!8=92&VWDe`(FCZ`{lmF1oC~{tEvv7Ib zAoy+T+3MKl%=EMxz^OKSTnHHgULY*#k6@b7-2wkeW<~zN0m%7=U*w;7siR{%tlF!Y4DjtmzfPF)r)7F9aRv5Ni-pe!!7Z=f@NG8z*av6~!CyWocng#F<&duyM@?I;j z-)I#FfME&{!p{c8$vXJO&ywxW5-gHU{2IylEiF(fjs+`$b*#>V#S1kl!xBM11~5BN z!$&KoARbMT0p-3pK_Hy+ro23{1>;H$vv#`3J)$#au|rjKy`tCHXTwD2nrRlVHmdn2$_t$;zU(e&uQvO-K zj(?W$zbx*r>gTWGA3T_r)&Bp3*gwuE|8YKl_P!72_5a7e|2w|Z|2OSm{!c#Ee*d5M z!T)6D|EF&69;{edUfD)n1IOyrZN2H@Lw(k`b{bbj@ZFw130_>o2c>k6fB6n<8=g^n z$kWwrLlIu&hwx0b$M9T)^)L;vZhEN>5Fg|4vHXH9k>h*b&lf}h&FstKvmuO2q0j|Z zV_~ujlw*Nfoq-Bd93phghBwiXuoW`(fUy;T5oZeV`P)2DuJvcH2_?E;C@&~J*%$su z%;d;=fx5#l6QNIFSn(ig61f5|HS)2;#MFP{;i9b? z=opoOMw*Bu;PQorM%@veMq3R2M$whD!9qyBwylz6^82eua;dTnnh^RD05dIorHFbz zw?W@xVQ(Z(rY@=h-e8qvXNLHMP)3O%QKkV(xVPnpW&_@_oZdk0gj_7!<0r>E-Um+B zZ#tbLue6;z+cnEd{pzM$fTlVg&@hROTt~X9*bLp!T(UOIl**3Q&T8>o17vp;e^n(p z&KFEVzTpe@8!<&=n}w~SRqe(F_g}!K{^`UfV`GP~;Y$@RiLG>3zL@+RP}xrIs@oJ3&9T^HQ^ljYEfs&E`B(mDMp_#!OApG;M;wn`&;K6>J4k>ou*vVRDfJ+=681n$hR4uIj+Qb*n4T4<6{r z(Ikrt^ga@y0_TAW_}EHIwAy&`UAg95v%2kNl5W02Qp8snJSTepOcg3*^7y<`;RvXH zfs08=XqSfw+3|4R2fA7KG}d0_88SXAbXNTK~S9sLx_YS9_!^`YC% zZt`sO@g-DI>kz1%afur9L61x3gT>gbayT{XwNs2*Tnq!mF!%Ex-s19)u(5t^3E+uM z%lCN+Zsc^A8!%vbY&NtNoH`{Ds^m`_(BBFyv>W5V09~7Ih#7~%UnpQ5rYD|7XH_Nh zzL`0)krBLK$#^KJZRl<4w1;AWuo}caau`PivUF=s5jq!y`@Y2v`6_^2pH&N zS`%e<(sGrnwC$DE>Fs@(!fhnsTxwtxrJ!NfQb$MDSegq$SI1C?3Kx<}wHib7c+CQ6 zJ*<5LP5E!;r#pXtD6!jGSc%p6*dpF3-6yZ2+(pl+#m~V6Rp5y!>j`MH=<$Rg&_%8i z1xCUGkG22?U1-Q5i6pMfm`oKHBt)YHD5hYB|Lo2LN&*EU7wt+YGMON1f{B(06zlFm zTb?EgjL0cJpPfuJ5qgZVL%i=G4l>}KJ5{<*+KW-(7^(-`kSWMpVdVWL)3qv$+EQ~3 zDRO&xp!>`41fD8-nTTtcCeJQ1nL+{%TL%(g@06`mBjwdajHD8V@SxuzElDTSCdY{8 z0<9s`AHF>{fgr0u zbEa9{F&;C?RsU;4D7Vd{E*o7jbsGaID`H||O&U}^6qm4>ZA5sT8hSQmYY>8mJm2xfSwVk-eU@|qD{fUGFX2zey( zW(HWTsd}C=X$5aMX@NO&dcKxS#>5=6OarWp+`Q3wB-n3p6*QR@O3o7%OcnF^sNiBL zoTT`%3U?X!J>}8t9KTe&vl!;MH~l+NcXhG;!Tq_UWNgS;qI6Ax;VCRtI|hwm9I@&# z0(F~?%-|1a06$>3tw_=zWdCaJoaWQEzIWf~>X2-0I`8ek5 znEsfbW8GtY$m0U$TfR;vGxv!v{>o!;_D=aPb6sqfbvXh6rh=9;TR{FvlX3#^Zo<4T zKtS&DlKC02E+k7p?h&$r_%lBuyqJUt2reulp#rdUB7Tq~pMcmB5R%MTE&r03n>1gd zXDC8Dl{7;tc|r6-S^|_Qli>x?*)C)X1V5o@#3>ayNnp7*iBCyjn}G-^xkb|Xl#oKc zP`5}L|1!4(X|@Y#B0hpUL0VZf^aLyr^&K`O0TKm0oM zj*%phMRDm*YpddssA6lF7ewoZLJh&+n%@#oGsS)~f=@{0cYMkO1{I6n1Y3q9__FpB zC0_(8Z}a)6ZDq9^ny4B6$vyEof-Glqk>1n9!+?(;L&Fvz4GXd zN56{~#QVhu#Vg_qx+zEPeRpts-$$@c?D zbZ&%gdD$gdV2dC%_Nsi2ro-=DMgdhU$w1E_}TiFpREv80wf%cgij*EF8MqDjjs&v zk$3+lz&-J__tNWwZThZI6AE~VbQe;5W*)!l@d!DW2^Ju{bA!?3@ zj~Pkk(&j<(xoG)87$8sJb}HxaRetOCY)3xf`=pW|F7K0Bd~Ll?YYD@OmzdM}c)Es+ zL^^&Fg|z-=qJYDRKbc`~ybAjjlWh>0&{w{tNy_moDyQ2fd5mVlcf?7!K!4NRtUZBV z_`?citAD)4U~-g{;YJB5eR-0Ad@mtI1o9Ry?bVCHXKhk@^;5+&mKO(GJCxe0(`Xw3 zCAMlVwUwmQS|CzF`xigDP%_BdgXx%~zhXSfDs8tIY?2h=_3WL4))`%Q`RU&u6~V86 zQ*B8L?Y9)zm%V(Hi~jO$SMqTI4al$6v_oK(Z)G6f zTDZ}DZ)|myPo_taFvNe@y0TTs$S0t9>H9tLsPyM&b0 z30KHeq7kNS(owh;#yxvrHxbKwMjhD2`-PICfDP?rin`4?ovI=lhg#iuwza9-zQ7K3 zgI`D#6E;?!k``4#iY~>uN+i)4euQJ$HDRVtEj-3mlh7eHnpq=p!QQ(C z_6avfU{i%J_z_CD^zy|KX95r31-@loVPOA6y)iCX1+cM8m5jbHtp%VGcNw{Sqjv!R zb|F@Xr!cYf2g0RZoYqpfWP<1q)-_H?W=|JQ_Wdr5jL1x2Mo99zB2@B^V=eOPMKD%* z8pON#1A?GWZF3D0@1Z`ZtNFlcYv5%*@Uk@!#s|WzfvX6#xL!p7bu#~3n`;w#6ws)c zzrpWvc8IG0phW(nCn(c}P^>dk7`+)6VkTEHBlHzgsXw)1fPxnQ&afEq1gkCOp*Df< z+2FdgL`Hd_OM)pZf~!H$EA7UXA3e$G7_3pM(C)nI3KndG^ph7gs2AStu?%#dhQz>t z>}Gwlo~;$7EObn=)E5EP%d%F~xX=RdIyRKv4ZaUg5DPOQcc`|@XNfKf`r#D#hK7NQ z)m5L1zXRc^`SQSo=_@^trmh=E2KoEc45}>+beK-l!VE7E=6QjD^)a|{6z_-K=m5Vp z<2#`$XJ~@qqsIEK1M}tzaC)u`Q`D)PyR7sDkE6b8F`^g;Sa8rZB!z@fmeP3SGfDs) zfHrbVW)TXacJtSnikOxL^R!PaURx3tdzJdGvl6O;EcGRjmabi7G?#txhihK!q%{MH z7dsu)s`+(Zi;f1GXI-)&yb2Y&+ViMtF^ax?U_$B}i-4dQ6urXZ%lxI3p_MJA+^fDX z52TExSKT;z&9ex+t*-zvaUB`O*LyDOeM$q|H*;C5d6ve~-C(I1X`VLa4`q0`d?kOl z_Gjgr{1@eW@SsH+WRt(x^UIKz2l_vFxdit#r9ZH|&C^bp%R0=nT2Z1VXolb?33Ss+ zkZrD(0Y)2&8w_`)R%KyB!#qI$;++4fyc>phncX8IZnxQy9G{?7zPhl3S zn!Mf#i>dM|7c*yb)*9M16lsx>0LEXiIXdZ2uz5L@1H(GAQiY+6rS{hFW_ONy!XRD|0bh12=AJ(YiK=N& zGgAHiA{q4dBt(2ME+%${5KtqOL#6_=+Cjy_w(S^nvc`o?pqLsPhVz_s+)~4AYLoW(+`63(U=TYag^)TsO_zZasXlzi(dUR2Sj^MS_+uG_9tBj5D z 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 literal 0 HcmV?d00001 diff --git a/host/atom/Z80BAS b/host/atom/Z80BAS new file mode 100644 index 0000000000000000000000000000000000000000..bad9e102d15bee09a25e9b3f8fae03e36ae6cac0 GIT binary patch literal 13311 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ℜW@7I3D2tp!dIEkKmOb=vj4B}H)Occ+X6 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 literal 0 HcmV?d00001 diff --git a/host/atom/osword7f.asm b/host/atom/osword7f.asm new file mode 100644 index 0000000..82f3c7e --- /dev/null +++ b/host/atom/osword7f.asm @@ -0,0 +1,200 @@ + sector = $80 + + IOFlag = $84 + IOAddr = $86 + + SDDOSClientId = $DE + +;;; OSWORD A=7F8 271 command level disk access +osword7f: + +.if (debug_osw_7f = 1) + LDY #$00 + LDA TubeCtrl + 5 ; number of parameters + CLC + ADC #$06 ; command at +6, params after that + TAX +word7Fdebug: + LDA TubeCtrl, Y ; command block + JSR DebugHexOut + INY + DEX + BPL word7Fdebug + JSR DebugNewline +.endif + + LDY #6 + LDA TubeCtrl, Y + CMP #$53 ; read sector multi + BEQ word7F_53 + +word7Freturn: + LDY TubeCtrl + 5 ; number of parameters + LDA #$00 + STA TubeCtrl + 7, Y ; Results byte stored after the params + RTS + + +word7F_53: + ; Check if it's an read to host memory FFFFxxxx + + LDA TubeCtrl + 1 + STA IOAddr + + LDA TubeCtrl + 2 + STA IOAddr + 1 + + LDA TubeCtrl + 3 + AND TubeCtrl + 4 + CLC + ADC #1 + STA IOFlag ; 0 = transfer to IO + BEQ word7F_skipclaim + + ;; Claim Tube + LDA #SDDOSClientId + JSR L0406 + + ;; Setup Data Transfer + LDA #1 + LDX #<(TubeCtrl + 1) + LDY #>(TubeCtrl + 1) + JSR L0406 + +word7F_skipclaim: + LDA TubeCtrl + 8 ; sector number + STA sector + + LDA #0 + STA sector+1 + STA sector+2 + STA sector+3 + + LDA TubeCtrl ; drive 2 = second side + AND #$02 + BEQ word7Fdrive0 + + ;; Add 10 sectors to access drive 2 tracks + LDA sector + CLC + ADC #10 + STA sector + +word7Fdrive0: + + ;; Add 20 sectors for each track (because the image is an track-interleaved DSD) + LDX TubeCtrl + 7 ; track number + BEQ word7F_track_done +word7F_tracks: + CLC + LDA sector + ADC #20 + STA sector + BCC word7F_track_dec + INC sector + 1 + BNE word7F_track_dec + INC sector + 2 + BNE word7F_track_dec + INC sector + 3 +word7F_track_dec: + DEX + BNE word7F_tracks + +word7F_track_done: + LDA TubeCtrl + 9 ; MS 3 bits = sector size; LS 5 bits = num sectors + AND #$1F + TAX + +word7F_read_sectors: + JSR sd_sector_r + + INC sector + BNE word7F_read_dec + INC sector + 1 + BNE word7F_read_dec + INC sector + 2 + BNE word7F_read_dec + INC sector + 3 + +word7F_read_dec: + DEX + BNE word7F_read_sectors + + LDA IOFlag + BEQ word7F_skiprelease + + ;; Release Tube + LDA #SDDOSClientId - $40 + JSR L0406 + +word7F_skiprelease: + + jmp word7Freturn + + +;;; Sector level disk access (from SDDOS) + +sd_sector_r: + JSR read_start ; Set SDDOS drive + sector + + LDY #0 ; Copy globalbuffer to Atom memory + + LDA IOFlag + BEQ rx2 + +;;; Destination is a parasite address + +rx1: + readportFAST AREAD_DATA_REG + STA $BEE5 + INY + BNE rx1 + RTS + + +;;; Destination is a host address + +rx2: + readportFAST AREAD_DATA_REG + STA (IOAddr), Y + INY + BNE rx2 + INC IOAddr + 1 + RTS + +read_start: + JSR PREPPUTTOB407 ; Reset globalbufferpointer + + LDA #0 ; Assume disk is in drive 0 + writeportFAST AWRITE_DATA_REG + JSR interwritedelay + LDA sector ; Send sectornr LB + writeportFAST AWRITE_DATA_REG + JSR interwritedelay + LDA sector+1 ; Send sectornr + writeportFAST AWRITE_DATA_REG + JSR interwritedelay + LDA sector+2 ; Send sectornr + writeportFAST AWRITE_DATA_REG + JSR interwritedelay + LDA sector+3 ; Send sectornr HB + writeportFAST AWRITE_DATA_REG + JSR interwritedelay + NOP ; Wait, until command finished!!! + + FASTCMDI CMD_LOAD_PARAM ; Command = load SDDOS parameters + SLOWCMDI CMD_READ_IMG_SEC ; Command = read SDDOS sector + + JMP PREPGETFRB406 ; Reset datapointer + + +PREPGETFRB406: + LDA #CMD_INIT_READ + writeportFAST ACMD_REG + JMP interwritedelay + +PREPPUTTOB407: + LDA #CMD_INIT_WRITE + writeportFAST ACMD_REG + JMP interwritedelay + diff --git a/host/atom/oswordff.asm b/host/atom/oswordff.asm new file mode 100644 index 0000000..30653cf --- /dev/null +++ b/host/atom/oswordff.asm @@ -0,0 +1,114 @@ + ctrl = $80 + saveA = $82 + addr = $84 + count = $86 + +oswordff: + STX ctrl+0 + STY ctrl+1 + STA saveA ; Save OSWORD parameters + +.if (debug_osw_ff = 1) + LDY #$00 +oswordffdebug: + LDA (ctrl),Y + JSR DebugHexOut + INY + CPY #$0D + BNE oswordffdebug + JSR DebugNewline +.endif + + LDY #$02 + LDA (ctrl),Y + STA addr+0 ; I/O address low byte + INY + LDA (ctrl),Y + STA addr+1 ; I/O address high byte + JSR L259C ; Claim the Tube + LDY #$0C + LDA (ctrl),Y + PHA ; Get read/write command + LDA ctrl+0 + CLC + ADC #$06 + TAX ; Point to Control+6 + LDA #$00 + ADC ctrl+1 + TAY ; XY->CoPro address in control block + PLA + PHA + JSR L0406 ; Initiate specified action + LDY #$0A + LDA (ctrl),Y + TAX ; Get count low byte + INY + LDA (ctrl),Y + STA count ; Get count high byte + BNE L2544 ; Jump forward if >255 bytes to do + TXA + BEQ L2592 ; Jump to exit if no bytes left +L2544: + TXA + BEQ L2549 ; Jump forward if multiple of 256 bytes + INC count ; Inc high byte to balance DECs later +L2549: + PLA + ROR A + BCS L2575 ; Get command back, jump if H->C + + JSR L259B + JSR L259B + JSR L259B ; Delay before starting + LDY #$00 ; Zero offset for (zp),Y +L2558: + LDA TubeR3 + STA (addr),Y ; Transfer a byte C->H + JSR L259B + JSR L259B + JSR L259B ; Delay between bytes + INC addr+0 + BNE L256C + INC addr+1 ; Update I/O address +L256C: + DEX + BNE L2558 ; Loop for up to 256 bytes + DEC count + BNE L2558 ; Loop for each 256-byte chunk + BEQ L2592 ; Jump to exit when finished + +L2575: + LDY #$00 +L2577: + LDA (addr),Y + STA TubeR3 ; Transfer byte H->C + JSR L259B + JSR L259B + JSR L259B ; Delay between bytes + INC addr+0 + BNE L258B + INC addr+1 ; Update I/O addreL258B: +L258B: + DEX + BNE L2577 ; Loop for up to 256 bytes + DEC count + BNE L2577 ; Loop for each 256-byte chunk + +L2592: + JSR L25A4 ; Release Tube + LDX ctrl+0 + LDY ctrl+1 + LDA saveA ; Restore entry registers +L259B: ; Call here to delay 6us: + RTS ; And return + +L259C: + LDA #$C0+7 + JSR L0406 ; Claim with ID=7 + BCC L259C + RTS ; Loop until claimed + +L25A4: + LDA #$80+7 + JSR L0406 ; Release with ID=7 + RTS From 8fc108a23758503246d181533b8d1a6f5fa25bbe Mon Sep 17 00:00:00 2001 From: David Banks Date: Thu, 24 Sep 2015 13:30:55 +0100 Subject: [PATCH 48/61] Atom Host: Added a simple buffered keyboard routine Change-Id: I487e148146ff812a373aa74df4426e4d10031e13 --- host/atom/AtomHost.asm | 204 +++++++++++++++++++++++++++-------------- host/atom/osword7f.asm | 9 ++ 2 files changed, 144 insertions(+), 69 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index ee8bf50..a9c6ce8 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -1,24 +1,26 @@ ;;; AtomHost/src ;;; Source for Atom Tube Host ;;; J.G.Harston and D.M.Banks - + load = $3000 ; Load address of the host code atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) atommc = 0 ; Whether to include a local copy of AtomMMC2 load/save - + debug_r1 = 0 ; Whether to include debugging of R1 commands debug_r2 = 0 ; Whether to include debugging of R2 commands debug_r4 = 0 ; Whether to include debugging of R4 commands - debug_osw_7f = 0 ; Whether to include debugging of OSWORD 7F commands - debug_osw_ff = 0 ; Whether to include debugging of OSWORD FF commands - + debug_osw_7f = 0 ; Whether to include debugging of OSWORD 7F commands + debug_osw_ff = 0 ; Whether to include debugging of OSWORD FF commands + + buffered_kbd = 1 ; Whether to include a buffered keyboard routine + LangStart = $4000 ; start of the language in host memory LangEnd = $8000 ; end of the language in host memory -.include "macros.asm" +.include "macros.asm" .include "atmmc2def.asm" @@ -39,7 +41,7 @@ OSCLI = $FFF7 ;; These are already defined in atmmc2def.asm - ;; OSRDCH = $FFE3 + ;; OSRDCH = $FFE3 ;; OSWRCH = $FFF4 ;; HEXOUT = $F802 @@ -86,7 +88,7 @@ ViaT1CounterH = ViaBase + 5 ViaACR = ViaBase + 11 ViaIER = ViaBase + 14 - + ;;; Workspace in zero page ;;; ---------------------- @@ -97,7 +99,10 @@ R2Cmd = $76 ; Computed address of R2 Command Handler LangFlag = $78 EscapeFlag = $79 - +.if (buffered_kbd = 1) + KeyBuf = $7A ; one character keyboard buffer + KeyFlag = $7B ; flag to indicate a the key is still being pressed +.endif AtomCmd = $c9 ; used by osfile; this could be anywhere AtomStr = $140 ; used by osfile; atommc assumes 140 @@ -128,15 +133,19 @@ L0406: JMP TubeClaimTransferRelease L0409: JMP TubeError - + ;;; Start up the Atom Tube system ;;; ---------------------------- TubeStartup: - LDA #$00 ; non zero means transfer language - STA LangFlag - LDA #$00 ; B5 tracks escape key, B6 tracks escape state - STA EscapeFlag + LDA #$00 + STA LangFlag ; non zero means transfer language + STA EscapeFlag ; B5 tracks escape key, B6 tracks escape state +.if (buffered_kbd = 1) + STA KeyBuf ; non zero means a key press is waiting + LDA #$ff + STA KeyFlag ; non zero means a key needs to be released +.endif LDA #TubeEna ; Enable tube transfers in AtoMMC STA TubeFlag LDA #12 @@ -172,7 +181,7 @@ Startup2: STA SAVEV LDA #>ossavecode STA SAVEV+1 -.endif +.endif LDA #$8E STA TubeS1 ; Enable NMI on R1, IRQ on R4, IRQ on R1 JSR TubeFree ; Set Tube 'free' and no owner @@ -443,7 +452,7 @@ TubeBRK: LDA #>TubeHostError STA ERRPTR+1 LDX #$FF ; Error number 255 - + TubeError: LDA #$FF JSR TubeSendR4 @@ -472,14 +481,14 @@ TubeIdleStartup: TXS CLI BNE TubeIdleLoop - + ;;; Tube idle loop ;;; -------------- TubeIdle: .if (debug_r2 = 1) JSR DebugNewline -.endif +.endif TubeIdleLoop: JSR EscapeCheck BIT TubeS1 @@ -497,7 +506,7 @@ TubeIdle2: JSR DebugNewline TXA JSR DebugHexOut -.endif +.endif LDA R2CmdHandlers, X ; Read command handler STA R2Cmd LDA R2CmdHandlers + 1, X @@ -576,41 +585,48 @@ bytelo: CMP #$7E BEQ osbyte7e - + LDA #0 JMP TubeSendIdle osbyte7e: ; OSBYTE 7e = Ack detection of escape condition JSR EscapeClear - LDA #$ff + LDA #$ff JMP TubeSendIdle ; ff = escape condition cleared bytehi: - JSR TubeWaitR2 ; Fetch 3-byte control block X Y A + JSR TubeWaitR2 ; Fetch 3-byte control block X Y A TAX JSR TubeWaitR2 TAY JSR TubeWaitR2 - CMP #$98 - BEQ osbyte98 - - LDA #0 ; Return Cy Y X + CMP #$98 + BEQ osbyte98 + + LDA #0 ; Return Cy Y X JSR TubeSendR2 JSR TubeSendR2 JMP TubeSendIdle osbyte98: - LDA #$ff ; Cy = 1 (empty) - JSR TubeSendR2 - TYA ; Y preserved - JSR TubeSendR2 - TXA ; X preserved - JMP TubeSendIdle - + LDA #$ff ; Cy=1 (Empty) +.if (buffered_kbd = 1) + BIT KeyBuf + BEQ osbyte98_empty + LDA #$00 ; Cy=0 (Not empty) +osbyte98_empty: + +.endif + JSR TubeSendR2 + TYA ; Y preserved + JSR TubeSendR2 + TXA ; X preserved + JMP TubeSendIdle + word: JSR TubeWaitR2 ; Get A - PHA ; Stack the osword number + PHA ; Stack the osword number JSR TubeWaitR2 ; Get in-length TAX JSR TubeWaitBlock @@ -625,7 +641,7 @@ word: BEQ word7Fdisk ; 8271 command level disk access CMP #$FF BEQ wordFFtransfer ; host/parasite data transfer - + ;;; Default OSWORD HANDLER wordSendBlock: JSR TubeSendBlock ; length of block in X @@ -635,36 +651,36 @@ wordSendBlock: word01ReadSys: LDY #4 ; Copy the 5 byte time value word01ReadSysLoop: ; to the Tube Control block - LDA ViaTime, Y + LDA ViaTime, Y STA TubeCtrl, Y DEY BPL word01ReadSysLoop BMI wordSendBlock - + ;;; OSWORD A=2 Write System Clock word02WriteSys: LDY #4 ; Copy the 5 byte time value word02WriteSysLoop: ; to the Via Time LDA TubeCtrl, Y - STA ViaTime, Y + STA ViaTime, Y DEY BPL word02WriteSysLoop BMI wordSendBlock - + ;;; OSWORD A=7F 8271 Command based disk access word7Fdisk: - JSR osword7f - LDX #$10 + JSR osword7f + LDX #$10 BNE wordSendBlock - + ;;; OSWORD A=FF Host/Parasite data transfer wordFFtransfer: - LDX #TubeCtrl + LDX #TubeCtrl JSR oswordff - LDX #$01 + LDX #$01 BNE wordSendBlock - + ;;; OSCLI ;;; ===== clii: @@ -819,7 +835,7 @@ gbpb: JSR TubeSendR2 ; Send A JMP TubeIdle - + ;;; OSFILE ;;; ------ ;;; OSFILE R2 <== &14 block string &0D A @@ -830,12 +846,12 @@ gbpb: ;;; 4..7 Exec Address ;;; 8..B Start Address ;;; C..F End Address - + file: LDX #$10 ; Block length JSR TubeWaitBlock LDX #$00 -fileString: +fileString: JSR TubeWaitR2 ; Get String STA AtomStr, X INX @@ -846,7 +862,7 @@ fileString: BEQ filesave CMP #$FF BEQ fileload - + fileResponse: LDA #$01 ; Send object type 01 "File Found" JSR TubeSendR2 @@ -855,13 +871,13 @@ fileResponse: JMP TubeIdle ;; Map to OSLOAD - ;; + ;; ;; Entry: 0,X = LSB File name string address ;; 1,X = MSB File name string address ;; 2,X = LSB Data dump start address ;; 3,X = MSB Data dump start address ;; 4,X : If bit 7 is clear, then the file's own start address is to be used - + fileload: JSR fileinit LDA #$80 ; use block's load address @@ -875,7 +891,7 @@ fileload1: JMP fileResponse ;; Map to OSSAVE - ;; + ;; ;; Entry: 0,X = LSB File name string address ;; 1,X = MSB File name string address ;; 2,X = LSB Data Reload address @@ -886,13 +902,13 @@ fileload1: ;; 7,X = MSB Data start address ;; 8,X = LSB Data end address + 1 ;; 9,X = MSB Data end address + 1 - + filesave: JSR fileinit LDX #AtomCmd JSR OSSAVE JMP fileResponse - + fileinit: LDA # Date: Fri, 25 Sep 2015 10:08:58 +0100 Subject: [PATCH 49/61] Atom Host: Improved console input handling; no longer interrupt based Change-Id: I74c17b4bb4d34cbe134611b99d7004e0738a089d --- host/atom/AtomHost.asm | 123 ++++++++++++++++++++++++----------------- host/atom/osword7f.asm | 9 --- 2 files changed, 71 insertions(+), 61 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index a9c6ce8..c97bec6 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -101,7 +101,6 @@ EscapeFlag = $79 .if (buffered_kbd = 1) KeyBuf = $7A ; one character keyboard buffer - KeyFlag = $7B ; flag to indicate a the key is still being pressed .endif AtomCmd = $c9 ; used by osfile; this could be anywhere AtomStr = $140 ; used by osfile; atommc assumes 140 @@ -138,13 +137,13 @@ L0409: ;;; ---------------------------- TubeStartup: - LDA #$00 - STA LangFlag ; non zero means transfer language - STA EscapeFlag ; B5 tracks escape key, B6 tracks escape state + LDA #$00 ; non zero means transfer language + STA LangFlag + LDA #$00 ; B5 tracks escape key, B6 tracks escape state + STA EscapeFlag .if (buffered_kbd = 1) - STA KeyBuf ; non zero means a key press is waiting - LDA #$ff - STA KeyFlag ; non zero means a key needs to be released + LDA #$80 ; bit 7 is the KeyFlag, + STA KeyBuf ; bits 6-0 are the ASCII value, or zero if a key wasn't pressed .endif LDA #TubeEna ; Enable tube transfers in AtoMMC STA TubeFlag @@ -610,13 +609,19 @@ bytehi: JMP TubeSendIdle osbyte98: - LDA #$ff ; Cy=1 (Empty) .if (buffered_kbd = 1) - BIT KeyBuf - BEQ osbyte98_empty - LDA #$00 ; Cy=0 (Not empty) + JSR PollKeyboard + LDA KeyBuf + AND #$7F + BNE osbyte98_full osbyte98_empty: - + LDA #$ff ; Cy=1 (Empty) + BNE osbyte98_send +osbyte98_full: + LDA #$00 ; Cy=0 (Not empty) +osbyte98_send: +.else + LDA #$ff ; Cy=1 (Empty) .endif JSR TubeSendR2 TYA ; Y preserved @@ -1081,10 +1086,13 @@ AtomRDCH: STA EscapeFlag .if (buffered_kbd = 1) AtomRDCH1: + JSR PollKeyboard LDA KeyBuf ; wait for the ISR to deposit a key press + AND #$7F BEQ AtomRDCH1 PHA - LDA #0 ; swallow the key press + LDA KeyBuf + AND #$80 ; swallow the key press STA KeyBuf .else JSR OSRDCH @@ -1094,6 +1102,51 @@ AtomRDCH1: PLA RTS + + +.if (buffered_kbd = 1) +;;; Polls the keyboard in a non-blocking fashion +;;; On return KeyBuf will return the key pressed, or zero if no key pressed +;;; If the caller consumes the key press, then they should zero KeyBuf +;;; + +PollKeyboard: + PHA + TXA + PHA + TYA + PHA + JSR $FE71 ; scan the keyboard + + LDA KeyBuf + BPL PollFlagClear + + BCC PollExit ; key still pressed + + AND #$7F + STA KeyBuf ; update flag to indicate key released + +PollFlagClear: + BCS PollExit ; no key pressed + + LDA KeyBuf ; is the keyboard buffer already full + BNE PollExit + + JSR ConvertKey ; Convert to ASCII + ORA #$80 ; Set the KeyFlag + STA KeyBuf ; store in the one character keyboard buffer + +PollExit: + PLA + TAY + PLA + TAX + PLA + RTS +.endif + + + ;;; Interface to Atom OSWRCH ;;; ------------------------ AtomWRCH: @@ -1128,53 +1181,19 @@ ViaInit: RTS ViaISR: -.if (buffered_kbd = 1) - TXA - PHA - TYA - PHA -.endif LDA ViaT1CounterL ; Clear the interrupts flag INC ViaTime - BNE ViaPollKeyboard + BNE ViaExit INC ViaTime + 1 - BNE ViaPollKeyboard + BNE ViaExit INC ViaTime + 2 - BNE ViaPollKeyboard + BNE ViaExit INC ViaTime + 3 - BNE ViaPollKeyboard - INC ViaTime + 4 - -ViaPollKeyboard: - -.if (buffered_kbd = 1) - - JSR $FE71 ; scan the keyboard - - LDA KeyFlag ; test is a key is already pressed - BEQ AddToKeyBuf - - BCC ViaExit ; key still pressed - LDA #$00 - STA KeyFlag ; update flag to indicate key released - -AddToKeyBuf: - BCS ViaExit ; no key pressed - - LDA KeyBuf ; is the keyboard buffer already full BNE ViaExit - - JSR ConvertKey ; Convert to ASCII - STA KeyBuf ; store in the one character keyboard buffer - STA KeyFlag ; also update flag to indicate key pressed + INC ViaTime + 4 ViaExit: - PLA - TAY - PLA - TAX -.endif - PLA ; the Atom stacks A for us + PLA ; the Atom stacks A for us RTI ViaTime: diff --git a/host/atom/osword7f.asm b/host/atom/osword7f.asm index e2068e9..82f3c7e 100644 --- a/host/atom/osword7f.asm +++ b/host/atom/osword7f.asm @@ -137,9 +137,6 @@ word7F_skiprelease: sd_sector_r: JSR read_start ; Set SDDOS drive + sector -.if (buffered_kbd = 1) - SEI -.endif LDY #0 ; Copy globalbuffer to Atom memory LDA IOFlag @@ -152,9 +149,6 @@ rx1: STA $BEE5 INY BNE rx1 -.if (buffered_kbd = 1) - CLI -.endif RTS @@ -166,9 +160,6 @@ rx2: INY BNE rx2 INC IOAddr + 1 -.if (buffered_kbd = 1) - CLI -.endif RTS read_start: From 0b5d39631f0331468bdfc922c8c0e9d9c244efef Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 27 Sep 2015 15:09:29 +0100 Subject: [PATCH 50/61] Atom Host: Osword 7F supports writes; more debug options; GODIL support Change-Id: I4510e2feafdb36a04cea01bebc087c6f7a601f19 --- host/atom/AtomHost.asm | 183 ++++++++++++++---- host/atom/osword7f.asm | 430 ++++++++++++++++++++++++++++------------- 2 files changed, 443 insertions(+), 170 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index c97bec6..fba0e97 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -15,6 +15,10 @@ debug_osw_7f = 0 ; Whether to include debugging of OSWORD 7F commands debug_osw_ff = 0 ; Whether to include debugging of OSWORD FF commands + debug_sddos = 0 ; Whether to include debugging of SDDOS data blocks + + debug_unsupp = 0 ; Whether to include debugging of unsupported osbyte/osword commands + buffered_kbd = 1 ; Whether to include a buffered keyboard routine LangStart = $4000 ; start of the language in host memory @@ -44,6 +48,7 @@ ;; OSRDCH = $FFE3 ;; OSWRCH = $FFF4 ;; HEXOUT = $F802 + ;; STROUT = $F7D1 ;;; Atom OS addresses ERRPTR = $D5 @@ -71,6 +76,12 @@ ;;;I/O addresses ;;;------------- + + GODIL = $BDE0 + GodilModeExtension = GODIL + 0 + GodilVersion = GODIL + 15 + + TubeIO = $BEE0 TubeS1=TubeIO+0 ; VDU @@ -99,8 +110,9 @@ R2Cmd = $76 ; Computed address of R2 Command Handler LangFlag = $78 EscapeFlag = $79 + GodilFlag = $7A .if (buffered_kbd = 1) - KeyBuf = $7A ; one character keyboard buffer + KeyBuf = $7B ; one character keyboard buffer .endif AtomCmd = $c9 ; used by osfile; this could be anywhere AtomStr = $140 ; used by osfile; atommc assumes 140 @@ -142,11 +154,24 @@ TubeStartup: LDA #$00 ; B5 tracks escape key, B6 tracks escape state STA EscapeFlag .if (buffered_kbd = 1) - LDA #$80 ; bit 7 is the KeyFlag, + LDA #$80 ; bit 7 is the KeyFlag, STA KeyBuf ; bits 6-0 are the ASCII value, or zero if a key wasn't pressed -.endif +.endif LDA #TubeEna ; Enable tube transfers in AtoMMC STA TubeFlag + LDA GodilVersion ; Test GODIL version is 1x + AND #$F0 + CMP #$10 + BNE NoGodil + LDA GodilModeExtension ; Test GODIL 80x40 mode + BPL NoGodil + LDA #$87 + STA GodilModeExtension ; Enable lower case + BNE UpdateGodilFlag +NoGodil: + LDA #$00 +UpdateGodilFlag: + STA GodilFlag LDA #12 JSR AtomWRCH ; Clear screen, ready for startup banner JSR ViaInit ; Initialize 50Hz interrupts @@ -217,6 +242,9 @@ TubeRelease: JSR TubeSendR4 LDA TubeOwner ; Send Tube ID to notify a Tube release JSR TubeSendR4 +.if (debug_r4 = 1) + JSR DebugNewline +.endif PLP ; Get IRQ state back ;; Clear Tube status and owner @@ -550,14 +578,14 @@ RdLineLp1: BNE RdLineChar CPY #0 BEQ RdLineLp1 ; Nothing to delete - JSR OSWRCH + JSR AtomWRCH DEY JMP RdLineLp1 ; Delete one character RdLineChar: STA $100,Y ; Store in string buffer CMP #13 BEQ RdLineCR ; Repeat until - JSR OSWRCH + JSR AtomWRCH INY BNE RdLineLp1 ; Echo character, loop for more RdLineCR: @@ -585,6 +613,24 @@ bytelo: CMP #$7E BEQ osbyte7e +;;; Log an unsupported OSBYTE +.if (debug_unsupp = 1) + PHA + TXA + PHA + JSR STROUT + .byte "UNSUPPORTED OSBYTE X=" + NOP + PLA + JSR HEXOUT + JSR STROUT + .byte "; A=" + NOP + PLA + JSR HEXOUT + JSR OSNEWL +.endif + LDA #0 JMP TubeSendIdle @@ -602,6 +648,38 @@ bytehi: CMP #$98 BEQ osbyte98 + CMP #$B1 + BEQ osbyteB1 + CMP #$D8 + BEQ osbyteD8 + +;;; Log an unsupported OSBYTE +.if (debug_unsupp = 1) + PHA + TXA + PHA + TYA + PHA + JSR STROUT + .byte "UNSUPPORTED OSBYTE Y=" + NOP + PLA + JSR HEXOUT + JSR STROUT + .byte "; X=" + NOP + PLA + JSR HEXOUT + JSR STROUT + .byte "; A=" + NOP + PLA + JSR HEXOUT + JSR OSNEWL +.endif + +osbyteB1: +osbyteD8: LDA #0 ; Return Cy Y X JSR TubeSendR2 @@ -611,14 +689,14 @@ bytehi: osbyte98: .if (buffered_kbd = 1) JSR PollKeyboard - LDA KeyBuf - AND #$7F - BNE osbyte98_full + LDA KeyBuf + AND #$7F + BNE osbyte98_full osbyte98_empty: - LDA #$ff ; Cy=1 (Empty) - BNE osbyte98_send + LDA #$ff ; Cy=1 (Empty) + BNE osbyte98_send osbyte98_full: - LDA #$00 ; Cy=0 (Not empty) + LDA #$00 ; Cy=0 (Not empty) osbyte98_send: .else LDA #$ff ; Cy=1 (Empty) @@ -642,11 +720,26 @@ word: BEQ word01ReadSys CMP #$02 ; Write System Clock BEQ word02WriteSys + CMP #$05 + BEQ word05ReadMem ; Read host memory + CMP #$06 + BEQ word06WriteMem ; Write host memory CMP #$7F BEQ word7Fdisk ; 8271 command level disk access CMP #$FF BEQ wordFFtransfer ; host/parasite data transfer +;;; Log an unsupported OSWORD +.if (debug_unsupp = 1) + PHA + JSR STROUT + .byte "UNSUPPORTED OSWORD A=" + NOP + PLA + JSR HEXOUT + JSR OSNEWL +.endif + ;;; Default OSWORD HANDLER wordSendBlock: JSR TubeSendBlock ; length of block in X @@ -672,6 +765,22 @@ word02WriteSysLoop: ; to the Via Time BPL word02WriteSysLoop BMI wordSendBlock +;;; OSWORD A=5 Read Host Memory +word05ReadMem: + LDY #0 + LDA (TubeCtrl), Y ; Address in bytes 0,1 of control block + LDY #4 + STA TubeCtrl, Y ; Store result in byte 4 of control block + JMP wordSendBlock + +;;; OSWORD A=6 Write Host Memory +word06WriteMem: + LDY #4 + LDA TubeCtrl, Y + LDY #0 + STA (TubeCtrl), Y + JMP wordSendBlock + ;;; OSWORD A=7F 8271 Command based disk access word7Fdisk: JSR osword7f @@ -1086,12 +1195,12 @@ AtomRDCH: STA EscapeFlag .if (buffered_kbd = 1) AtomRDCH1: - JSR PollKeyboard + JSR PollKeyboard LDA KeyBuf ; wait for the ISR to deposit a key press - AND #$7F + AND #$7F BEQ AtomRDCH1 PHA - LDA KeyBuf + LDA KeyBuf AND #$80 ; swallow the key press STA KeyBuf .else @@ -1108,21 +1217,21 @@ AtomRDCH1: ;;; Polls the keyboard in a non-blocking fashion ;;; On return KeyBuf will return the key pressed, or zero if no key pressed ;;; If the caller consumes the key press, then they should zero KeyBuf -;;; - +;;; + PollKeyboard: - PHA - TXA - PHA - TYA - PHA + PHA + TXA + PHA + TYA + PHA JSR $FE71 ; scan the keyboard - LDA KeyBuf - BPL PollFlagClear + LDA KeyBuf + BPL PollFlagClear BCC PollExit ; key still pressed - + AND #$7F STA KeyBuf ; update flag to indicate key released @@ -1133,30 +1242,31 @@ PollFlagClear: BNE PollExit JSR ConvertKey ; Convert to ASCII - ORA #$80 ; Set the KeyFlag + ORA #$80 ; Set the KeyFlag STA KeyBuf ; store in the one character keyboard buffer PollExit: - PLA - TAY - PLA - TAX - PLA - RTS + PLA + TAY + PLA + TAX + PLA + RTS .endif - - + + ;;; Interface to Atom OSWRCH ;;; ------------------------ AtomWRCH: - CMP #$60 + BIT GodilFlag ; Check if running in 80x40 mode + BMI AtomWRCH1 + CMP #$60 ; Mask lower case BCC AtomWRCH1 AND #$DF AtomWRCH1: JMP OSWRCH - ViaInit: LDA #(TubeCtrl + 1) JSR L0406 word7F_skipclaim: - LDA TubeCtrl + 8 ; sector number - STA sector - - LDA #0 - STA sector+1 - STA sector+2 - STA sector+3 - - LDA TubeCtrl ; drive 2 = second side - AND #$02 - BEQ word7Fdrive0 - - ;; Add 10 sectors to access drive 2 tracks - LDA sector - CLC - ADC #10 - STA sector - -word7Fdrive0: - - ;; Add 20 sectors for each track (because the image is an track-interleaved DSD) - LDX TubeCtrl + 7 ; track number - BEQ word7F_track_done -word7F_tracks: - CLC - LDA sector - ADC #20 - STA sector - BCC word7F_track_dec - INC sector + 1 - BNE word7F_track_dec - INC sector + 2 - BNE word7F_track_dec - INC sector + 3 -word7F_track_dec: - DEX - BNE word7F_tracks -word7F_track_done: - LDA TubeCtrl + 9 ; MS 3 bits = sector size; LS 5 bits = num sectors - AND #$1F - TAX + LDA TubeCtrl + 8 ; sector number + STA sector -word7F_read_sectors: - JSR sd_sector_r + LDA #0 + STA sector+1 + STA sector+2 + STA sector+3 - INC sector - BNE word7F_read_dec - INC sector + 1 - BNE word7F_read_dec - INC sector + 2 - BNE word7F_read_dec - INC sector + 3 + LDA TubeCtrl ; drive number (0=A; 1=B) + AND #$01 + STA drive -word7F_read_dec: - DEX - BNE word7F_read_sectors + LDA TubeCtrl ; drive 2 = second side + AND #$02 + BEQ word7Fdrive0 - LDA IOFlag - BEQ word7F_skiprelease + ;; Add 10 sectors to access drive 2 tracks + LDA sector + CLC + ADC #10 + STA sector + +word7Fdrive0: + + ;; Add 20 sectors for each track (because the image is an track-interleaved DSD) + LDX TubeCtrl + 7 ; track number + BEQ word7F_track_done +word7F_tracks: + CLC + LDA sector + ADC #20 + STA sector + BCC word7F_track_dec + INC sector + 1 + BNE word7F_track_dec + INC sector + 2 + BNE word7F_track_dec + INC sector + 3 +word7F_track_dec: + DEX + BNE word7F_tracks + +word7F_track_done: + LDA TubeCtrl + 9 ; MS 3 bits = sector size; LS 5 bits = num sectors + AND #$1F + TAX + RTS - ;; Release Tube - LDA #SDDOSClientId - $40 - JSR L0406 -word7F_skiprelease: - - jmp word7Freturn - ;;; Sector level disk access (from SDDOS) +;;; Read Sector Entry Point sd_sector_r: - JSR read_start ; Set SDDOS drive + sector - - LDY #0 ; Copy globalbuffer to Atom memory + JSR send_drive_and_sector ; Set SDDOS drive + sector + SLOWCMDI CMD_READ_IMG_SEC ; Command = read SDDOS sector + JSR send_cmd_init_read ; Reset datapointer + LDY #0 + LDA IOFlag + BEQ rd2 - LDA IOFlag - BEQ rx2 +;;; Copy block of 256 from AtoMMC to parasite memory via tube +rd1: + readportFAST AREAD_DATA_REG + STA TubeR3 +.if (debug_sddos = 1) + STA debug_data, Y +.endif + INY + BNE rd1 + BEQ sd_sector_r_end -;;; Destination is a parasite address - -rx1: - readportFAST AREAD_DATA_REG - STA $BEE5 +;;; Copy block of 256 from AtoMMC to host memory +rd2: + readportFAST AREAD_DATA_REG + STA (IOAddr), Y +.if (debug_sddos = 1) + STA debug_data, Y +.endif INY - BNE rx1 + BNE rd2 + INC IOAddr + 1 + +sd_sector_r_end: +.if (debug_sddos = 1) + JSR dump_debug_data +.endif RTS +;;; Write Sector Entry Point +sd_sector_w: + JSR send_drive_and_sector ; Set SDDOS drive + sector + JSR send_cmd_init_write ; Reset globalbufferpointer + LDY #0 + LDA IOFlag + BEQ wr2 -;;; Destination is a host address - -rx2: - readportFAST AREAD_DATA_REG - STA (IOAddr), Y +;;; Copy block of 256 from AtoMMC to parasite memory via tube +wr1: + LDA TubeR3 + writeportFAST AWRITE_DATA_REG +.if (debug_sddos = 1) + STA debug_data, Y +.endif INY - BNE rx2 - INC IOAddr + 1 + BNE wr1 + BEQ sd_sector_w_end + +;;; Copy block of 256 from AtoMMC to host memory +wr2: + LDA (IOAddr), Y + writeportFAST AWRITE_DATA_REG +.if (debug_sddos = 1) + STA debug_data, Y +.endif + INY + BNE wr2 + INC IOAddr + 1 + +sd_sector_w_end: + SLOWCMDI CMD_WRITE_IMG_SEC ; Command = write SDDOS sector +.if (debug_sddos = 1) + JSR dump_debug_data +.endif RTS - -read_start: - JSR PREPPUTTOB407 ; Reset globalbufferpointer - - LDA #0 ; Assume disk is in drive 0 - writeportFAST AWRITE_DATA_REG - JSR interwritedelay + +send_drive_and_sector: + JSR send_cmd_init_write ; Reset globalbufferpointer + LDA drive ; Send drive 0 or 1 + writeportFAST AWRITE_DATA_REG + JSR interwritedelay LDA sector ; Send sectornr LB writeportFAST AWRITE_DATA_REG - JSR interwritedelay + JSR interwritedelay LDA sector+1 ; Send sectornr writeportFAST AWRITE_DATA_REG - JSR interwritedelay + JSR interwritedelay LDA sector+2 ; Send sectornr writeportFAST AWRITE_DATA_REG - JSR interwritedelay + JSR interwritedelay LDA sector+3 ; Send sectornr HB writeportFAST AWRITE_DATA_REG - JSR interwritedelay - NOP ; Wait, until command finished!!! - + JSR interwritedelay FASTCMDI CMD_LOAD_PARAM ; Command = load SDDOS parameters - SLOWCMDI CMD_READ_IMG_SEC ; Command = read SDDOS sector - - JMP PREPGETFRB406 ; Reset datapointer - + JMP interwritedelay -PREPGETFRB406: +send_cmd_init_read: LDA #CMD_INIT_READ writeportFAST ACMD_REG JMP interwritedelay - -PREPPUTTOB407: + +send_cmd_init_write: LDA #CMD_INIT_WRITE writeportFAST ACMD_REG JMP interwritedelay +.if (debug_sddos = 1) +dump_debug_data: + PHA + TXA + PHA + TYA + PHA + JSR OSNEWL + LDY #0 +dump_debug_loop: + TYA + PHA + JSR HEXOUT + LDA #' ' + JSR OSWRCH + LDA #':' + JSR OSWRCH + LDA #' ' + JSR OSWRCH + LDX #16 +dump_debug_loop1: + LDA debug_data, Y + JSR HEXOUT + INY + DEX + BNE dump_debug_loop1 + PLA + TAY + LDA #' ' + JSR OSWRCH + LDX #16 +dump_debug_loop2: + LDA debug_data, Y + JSR dump_debug_char + INY + DEX + BNE dump_debug_loop2 + JSR OSNEWL + CPY #0 + BNE dump_debug_loop + PLA + TAY + PLA + TAX + PLA + RTS + +dump_debug_char: + CMP #$20 + BCC dump_debug_char1 + CMP #$7F + BCC dump_debug_char2 +dump_debug_char1: + LDA #'.' +dump_debug_char2: + JMP OSWRCH + +debug_data: + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +.endif + From 7aeb1ae9eb27ca6036c1181df7cfb17b4a81cb4f Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 27 Sep 2015 21:27:00 +0100 Subject: [PATCH 51/61] Atom Host: Fixed issue with lock and cursor keys Change-Id: Ib6e9ec5daa1220a4e653ad810807428f5f1189ea --- host/atom/AtomHost.asm | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index fba0e97..c06d7fb 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -165,8 +165,7 @@ TubeStartup: BNE NoGodil LDA GodilModeExtension ; Test GODIL 80x40 mode BPL NoGodil - LDA #$87 - STA GodilModeExtension ; Enable lower case + LDA #$80 ; Allow lower case characters to be output BNE UpdateGodilFlag NoGodil: LDA #$00 @@ -1252,6 +1251,33 @@ PollExit: TAX PLA RTS + +ConvertKey: + CPY #$05 ; Lock key + BEQ ConvertLock + CPY #$06 ; LR Cursor + BEQ ConvertCursor + CPY #$07 ; UD Cursor + BEQ ConvertCursor + PHP ; To maintain a balances stack + JMP $FEB1 ; Allow the AtomOS to handle the conversion + +ConvertLock: + LDA $E7 ; Get the lock flag + EOR #$60 ; ..toggle it + STA $E7 ; ..and restore it + LDA #$00 ; don't return an actual keypress + RTS + +ConvertCursor: + TYA + AND #$05 ; LR=4 DU=5 + ROL $B001 ; C=0 if shift pressed + ROL A ; L=8 R=9 D=10 U=11 + JSR AtomWRCH + LDA #$00 ; don't return an actual keypress + RTS + .endif @@ -1309,11 +1335,6 @@ ViaExit: ViaTime: .byte 0,0,0,0,0 -.if (buffered_kbd = 1) -ConvertKey: - PHP - JMP $FEB1 -.endif ;;; Debugging output, avoid trashing A ;;; From 5924567afa178e6dd9da11a283bc845a5c6dceaf Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 28 Sep 2015 12:37:01 +0100 Subject: [PATCH 52/61] Atom Host: Added support for REPT key Change-Id: Idf3fb8c00c43de5c6fa70018b5bcfc569480374e --- host/atom/AtomHost.asm | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index c06d7fb..6368e3f 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -113,6 +113,7 @@ GodilFlag = $7A .if (buffered_kbd = 1) KeyBuf = $7B ; one character keyboard buffer + KeyFlag = $7C ; non-zero indicates key still held down .endif AtomCmd = $c9 ; used by osfile; this could be anywhere AtomStr = $140 ; used by osfile; atommc assumes 140 @@ -154,8 +155,9 @@ TubeStartup: LDA #$00 ; B5 tracks escape key, B6 tracks escape state STA EscapeFlag .if (buffered_kbd = 1) - LDA #$80 ; bit 7 is the KeyFlag, - STA KeyBuf ; bits 6-0 are the ASCII value, or zero if a key wasn't pressed + STA KeyBuf ; the ASCII value, or zero if a key wasn't pressed + LDA #$80 + STA KeyFlag ; non zero if the key is still held down, decremented at 100Hz for REPT .endif LDA #TubeEna ; Enable tube transfers in AtoMMC STA TubeFlag @@ -689,7 +691,6 @@ osbyte98: .if (buffered_kbd = 1) JSR PollKeyboard LDA KeyBuf - AND #$7F BNE osbyte98_full osbyte98_empty: LDA #$ff ; Cy=1 (Empty) @@ -1196,11 +1197,9 @@ AtomRDCH: AtomRDCH1: JSR PollKeyboard LDA KeyBuf ; wait for the ISR to deposit a key press - AND #$7F BEQ AtomRDCH1 PHA - LDA KeyBuf - AND #$80 ; swallow the key press + LDA #$00 ; swallow the key press STA KeyBuf .else JSR OSRDCH @@ -1226,13 +1225,13 @@ PollKeyboard: PHA JSR $FE71 ; scan the keyboard - LDA KeyBuf - BPL PollFlagClear + LDA KeyFlag + BEQ PollFlagClear BCC PollExit ; key still pressed - AND #$7F - STA KeyBuf ; update flag to indicate key released + LDA #$00 + STA KeyFlag ; update flag to indicate key released PollFlagClear: BCS PollExit ; no key pressed @@ -1241,8 +1240,9 @@ PollFlagClear: BNE PollExit JSR ConvertKey ; Convert to ASCII - ORA #$80 ; Set the KeyFlag STA KeyBuf ; store in the one character keyboard buffer + LDA #10 + STA KeyFlag ; Set the KeyFlag PollExit: PLA @@ -1319,15 +1319,22 @@ ViaInit: ViaISR: LDA ViaT1CounterL ; Clear the interrupts flag INC ViaTime - BNE ViaExit + BNE ViaRept INC ViaTime + 1 - BNE ViaExit + BNE ViaRept INC ViaTime + 2 - BNE ViaExit + BNE ViaRept INC ViaTime + 3 - BNE ViaExit + BNE ViaRept INC ViaTime + 4 +ViaRept: + BIT $B002 ; test the repeat key + BVS ViaExit + LDA KeyFlag ; decrement the key flag if non-zero + BEQ ViaExit + DEC KeyFlag + ViaExit: PLA ; the Atom stacks A for us RTI From b3ddbd7b778659e9b45bc71c83b2776e5671b01e Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 11 Oct 2015 10:56:51 +0100 Subject: [PATCH 53/61] PDP11 Co Pro: Updated client ROM to 0.22a Change-Id: Icd849e3df3a260b708208f5c1d00c07ddbe8670a --- src/ROM/tuberom_pdp11.vhd | 1550 ++++++++++++++++++------------------- 1 file changed, 775 insertions(+), 775 deletions(-) diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 4de0346..d0066aa 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -39,14 +39,14 @@ begin when x"009" => DATA <= x"204b"; when x"00a" => DATA <= x"2e30"; when x"00b" => DATA <= x"3232"; - when x"00c" => DATA <= x"0d0d"; - when x"00d" => DATA <= x"0000"; + when x"00c" => DATA <= x"0d61"; + when x"00d" => DATA <= x"000d"; when x"00e" => DATA <= x"15c6"; when x"00f" => DATA <= x"f530"; when x"010" => DATA <= x"17e6"; when x"011" => DATA <= x"f5fc"; when x"012" => DATA <= x"09f7"; - when x"013" => DATA <= x"057c"; + when x"013" => DATA <= x"0570"; when x"014" => DATA <= x"159f"; when x"015" => DATA <= x"f5f8"; when x"016" => DATA <= x"15c1"; @@ -54,7 +54,7 @@ begin when x"018" => DATA <= x"09f7"; when x"019" => DATA <= x"007e"; when x"01a" => DATA <= x"09f7"; - when x"01b" => DATA <= x"0494"; + when x"01b" => DATA <= x"048c"; when x"01c" => DATA <= x"00a1"; when x"01d" => DATA <= x"09f7"; when x"01e" => DATA <= x"00be"; @@ -65,7 +65,7 @@ begin when x"023" => DATA <= x"09f7"; when x"024" => DATA <= x"0068"; when x"025" => DATA <= x"09f7"; - when x"026" => DATA <= x"0224"; + when x"026" => DATA <= x"021c"; when x"027" => DATA <= x"870c"; when x"028" => DATA <= x"17c0"; when x"029" => DATA <= x"f862"; @@ -82,7 +82,7 @@ begin when x"034" => DATA <= x"15c0"; when x"035" => DATA <= x"007e"; when x"036" => DATA <= x"09f7"; - when x"037" => DATA <= x"017e"; + when x"037" => DATA <= x"0176"; when x"038" => DATA <= x"880f"; when x"039" => DATA <= x"4511"; when x"03a" => DATA <= x"6373"; @@ -93,11 +93,11 @@ begin when x"03f" => DATA <= x"1001"; when x"040" => DATA <= x"0a81"; when x"041" => DATA <= x"09f7"; - when x"042" => DATA <= x"043a"; + when x"042" => DATA <= x"0432"; when x"043" => DATA <= x"09f7"; when x"044" => DATA <= x"0028"; when x"045" => DATA <= x"09f7"; - when x"046" => DATA <= x"0432"; + when x"046" => DATA <= x"042a"; when x"047" => DATA <= x"01d7"; when x"048" => DATA <= x"6000"; when x"049" => DATA <= x"903f"; @@ -115,7 +115,7 @@ begin when x"055" => DATA <= x"5001"; when x"056" => DATA <= x"0087"; when x"057" => DATA <= x"09f7"; - when x"058" => DATA <= x"0408"; + when x"058" => DATA <= x"0400"; when x"059" => DATA <= x"9440"; when x"05a" => DATA <= x"02fc"; when x"05b" => DATA <= x"0087"; @@ -149,18 +149,18 @@ begin when x"077" => DATA <= x"15c0"; when x"078" => DATA <= x"0002"; when x"079" => DATA <= x"09f7"; - when x"07a" => DATA <= x"0582"; + when x"07a" => DATA <= x"0576"; when x"07b" => DATA <= x"09f7"; - when x"07c" => DATA <= x"054e"; + when x"07c" => DATA <= x"0542"; when x"07d" => DATA <= x"00b1"; when x"07e" => DATA <= x"09f7"; - when x"07f" => DATA <= x"0392"; + when x"07f" => DATA <= x"038a"; when x"080" => DATA <= x"80f4"; - when x"081" => DATA <= x"15c0"; - when x"082" => DATA <= x"0000"; - when x"083" => DATA <= x"0c40"; - when x"084" => DATA <= x"17c1"; - when x"085" => DATA <= x"f5f8"; + when x"081" => DATA <= x"17c1"; + when x"082" => DATA <= x"f5f8"; + when x"083" => DATA <= x"15c5"; + when x"084" => DATA <= x"0000"; + when x"085" => DATA <= x"0c45"; when x"086" => DATA <= x"1066"; when x"087" => DATA <= x"9c42"; when x"088" => DATA <= x"0007"; @@ -185,7 +185,7 @@ begin when x"09b" => DATA <= x"ffb0"; when x"09c" => DATA <= x"2097"; when x"09d" => DATA <= x"0047"; - when x"09e" => DATA <= x"0247"; + when x"09e" => DATA <= x"0244"; when x"09f" => DATA <= x"9c42"; when x"0a0" => DATA <= x"0006"; when x"0a1" => DATA <= x"35c2"; @@ -205,7 +205,7 @@ begin when x"0af" => DATA <= x"ff3c"; when x"0b0" => DATA <= x"6581"; when x"0b1" => DATA <= x"1066"; - when x"0b2" => DATA <= x"55c0"; + when x"0b2" => DATA <= x"55c5"; when x"0b3" => DATA <= x"0002"; when x"0b4" => DATA <= x"1581"; when x"0b5" => DATA <= x"45c1"; @@ -241,800 +241,800 @@ begin when x"0d3" => DATA <= x"0a26"; when x"0d4" => DATA <= x"0a26"; when x"0d5" => DATA <= x"1066"; - when x"0d6" => DATA <= x"1026"; - when x"0d7" => DATA <= x"00b1"; - when x"0d8" => DATA <= x"09f7"; - when x"0d9" => DATA <= x"0424"; - when x"0da" => DATA <= x"1580"; - when x"0db" => DATA <= x"139f"; - when x"0dc" => DATA <= x"f5fc"; - when x"0dd" => DATA <= x"15c5"; - when x"0de" => DATA <= x"0bbc"; - when x"0df" => DATA <= x"0a04"; - when x"0e0" => DATA <= x"0a03"; - when x"0e1" => DATA <= x"0a02"; - when x"0e2" => DATA <= x"15c1"; - when x"0e3" => DATA <= x"f804"; - when x"0e4" => DATA <= x"0c80"; - when x"0e5" => DATA <= x"0087"; - when x"0e6" => DATA <= x"0c80"; - when x"0e7" => DATA <= x"860c"; - when x"0e8" => DATA <= x"00b1"; - when x"0e9" => DATA <= x"09f7"; - when x"0ea" => DATA <= x"0402"; - when x"0eb" => DATA <= x"880f"; - when x"0ec" => DATA <= x"4ef9"; - when x"0ed" => DATA <= x"746f"; - when x"0ee" => DATA <= x"5020"; - when x"0ef" => DATA <= x"5044"; - when x"0f0" => DATA <= x"3131"; - when x"0f1" => DATA <= x"6320"; - when x"0f2" => DATA <= x"646f"; - when x"0f3" => DATA <= x"0065"; - when x"0f4" => DATA <= x"0077"; - when x"0f5" => DATA <= x"fe52"; - when x"0f6" => DATA <= x"0186"; - when x"0f7" => DATA <= x"1026"; - when x"0f8" => DATA <= x"8bc0"; - when x"0f9" => DATA <= x"810b"; - when x"0fa" => DATA <= x"15c0"; - when x"0fb" => DATA <= x"0004"; - when x"0fc" => DATA <= x"09f7"; - when x"0fd" => DATA <= x"0476"; - when x"0fe" => DATA <= x"1380"; - when x"0ff" => DATA <= x"09f7"; - when x"100" => DATA <= x"0476"; - when x"101" => DATA <= x"09f7"; - when x"102" => DATA <= x"028c"; - when x"103" => DATA <= x"1001"; - when x"104" => DATA <= x"0132"; + when x"0d6" => DATA <= x"1140"; + when x"0d7" => DATA <= x"15c5"; + when x"0d8" => DATA <= x"0bbc"; + when x"0d9" => DATA <= x"0a04"; + when x"0da" => DATA <= x"0a03"; + when x"0db" => DATA <= x"0a02"; + when x"0dc" => DATA <= x"17c1"; + when x"0dd" => DATA <= x"f5f2"; + when x"0de" => DATA <= x"0c80"; + when x"0df" => DATA <= x"0302"; + when x"0e0" => DATA <= x"139f"; + when x"0e1" => DATA <= x"f5fc"; + when x"0e2" => DATA <= x"0087"; + when x"0e3" => DATA <= x"0c80"; + when x"0e4" => DATA <= x"860b"; + when x"0e5" => DATA <= x"09f7"; + when x"0e6" => DATA <= x"03fe"; + when x"0e7" => DATA <= x"880f"; + when x"0e8" => DATA <= x"4ef9"; + when x"0e9" => DATA <= x"746f"; + when x"0ea" => DATA <= x"5020"; + when x"0eb" => DATA <= x"5044"; + when x"0ec" => DATA <= x"3131"; + when x"0ed" => DATA <= x"6320"; + when x"0ee" => DATA <= x"646f"; + when x"0ef" => DATA <= x"0065"; + when x"0f0" => DATA <= x"0077"; + when x"0f1" => DATA <= x"fe5a"; + when x"0f2" => DATA <= x"018a"; + when x"0f3" => DATA <= x"1026"; + when x"0f4" => DATA <= x"8bc0"; + when x"0f5" => DATA <= x"810b"; + when x"0f6" => DATA <= x"15c0"; + when x"0f7" => DATA <= x"0004"; + when x"0f8" => DATA <= x"09f7"; + when x"0f9" => DATA <= x"0472"; + when x"0fa" => DATA <= x"1380"; + when x"0fb" => DATA <= x"09f7"; + when x"0fc" => DATA <= x"0472"; + when x"0fd" => DATA <= x"09f7"; + when x"0fe" => DATA <= x"028c"; + when x"0ff" => DATA <= x"1001"; + when x"100" => DATA <= x"0132"; + when x"101" => DATA <= x"2017"; + when x"102" => DATA <= x"0082"; + when x"103" => DATA <= x"8704"; + when x"104" => DATA <= x"0325"; when x"105" => DATA <= x"2017"; - when x"106" => DATA <= x"0082"; - when x"107" => DATA <= x"8704"; - when x"108" => DATA <= x"0325"; - when x"109" => DATA <= x"2017"; - when x"10a" => DATA <= x"0085"; - when x"10b" => DATA <= x"8724"; - when x"10c" => DATA <= x"15c0"; - when x"10d" => DATA <= x"0006"; - when x"10e" => DATA <= x"09f7"; - when x"10f" => DATA <= x"0452"; - when x"110" => DATA <= x"1080"; - when x"111" => DATA <= x"09f7"; - when x"112" => DATA <= x"0452"; - when x"113" => DATA <= x"1580"; - when x"114" => DATA <= x"09f7"; - when x"115" => DATA <= x"044c"; - when x"116" => DATA <= x"2017"; - when x"117" => DATA <= x"009d"; - when x"118" => DATA <= x"031f"; - when x"119" => DATA <= x"2017"; - when x"11a" => DATA <= x"008e"; - when x"11b" => DATA <= x"03da"; - when x"11c" => DATA <= x"1026"; + when x"106" => DATA <= x"0085"; + when x"107" => DATA <= x"8724"; + when x"108" => DATA <= x"15c0"; + when x"109" => DATA <= x"0006"; + when x"10a" => DATA <= x"09f7"; + when x"10b" => DATA <= x"044e"; + when x"10c" => DATA <= x"1080"; + when x"10d" => DATA <= x"09f7"; + when x"10e" => DATA <= x"044e"; + when x"10f" => DATA <= x"1580"; + when x"110" => DATA <= x"09f7"; + when x"111" => DATA <= x"0448"; + when x"112" => DATA <= x"2017"; + when x"113" => DATA <= x"009d"; + when x"114" => DATA <= x"031f"; + when x"115" => DATA <= x"2017"; + when x"116" => DATA <= x"008e"; + when x"117" => DATA <= x"03da"; + when x"118" => DATA <= x"1026"; + when x"119" => DATA <= x"09f7"; + when x"11a" => DATA <= x"0254"; + when x"11b" => DATA <= x"65c0"; + when x"11c" => DATA <= x"ff80"; when x"11d" => DATA <= x"09f7"; - when x"11e" => DATA <= x"0254"; - when x"11f" => DATA <= x"65c0"; - when x"120" => DATA <= x"ff80"; - when x"121" => DATA <= x"09f7"; - when x"122" => DATA <= x"024c"; - when x"123" => DATA <= x"45c0"; - when x"124" => DATA <= x"ff00"; - when x"125" => DATA <= x"1002"; - when x"126" => DATA <= x"00c0"; - when x"127" => DATA <= x"1001"; - when x"128" => DATA <= x"09f7"; - when x"129" => DATA <= x"023e"; - when x"12a" => DATA <= x"45c0"; - when x"12b" => DATA <= x"ff00"; - when x"12c" => DATA <= x"5001"; - when x"12d" => DATA <= x"0109"; - when x"12e" => DATA <= x"15c0"; - when x"12f" => DATA <= x"0086"; - when x"130" => DATA <= x"0cc0"; - when x"131" => DATA <= x"1c01"; - when x"132" => DATA <= x"f4ee"; - when x"133" => DATA <= x"1042"; - when x"134" => DATA <= x"00c2"; - when x"135" => DATA <= x"45c2"; - when x"136" => DATA <= x"ff00"; - when x"137" => DATA <= x"1580"; - when x"138" => DATA <= x"0087"; - when x"139" => DATA <= x"0bc0"; - when x"13a" => DATA <= x"034d"; - when x"13b" => DATA <= x"10e6"; - when x"13c" => DATA <= x"10a6"; - when x"13d" => DATA <= x"1026"; - when x"13e" => DATA <= x"15c0"; - when x"13f" => DATA <= x"0008"; - when x"140" => DATA <= x"09f7"; - when x"141" => DATA <= x"03f4"; - when x"142" => DATA <= x"1380"; - when x"143" => DATA <= x"09f7"; - when x"144" => DATA <= x"03ee"; - when x"145" => DATA <= x"8bc0"; - when x"146" => DATA <= x"8003"; - when x"147" => DATA <= x"9442"; - when x"148" => DATA <= x"9243"; - when x"149" => DATA <= x"010c"; - when x"14a" => DATA <= x"15c2"; - when x"14b" => DATA <= x"0010"; - when x"14c" => DATA <= x"15c3"; - when x"14d" => DATA <= x"0010"; - when x"14e" => DATA <= x"2017"; - when x"14f" => DATA <= x"0015"; - when x"150" => DATA <= x"8605"; - when x"151" => DATA <= x"6000"; - when x"152" => DATA <= x"65c0"; - when x"153" => DATA <= x"fae6"; - when x"154" => DATA <= x"9402"; - when x"155" => DATA <= x"9203"; - when x"156" => DATA <= x"1080"; - when x"157" => DATA <= x"09f7"; - when x"158" => DATA <= x"03c6"; - when x"159" => DATA <= x"6081"; - when x"15a" => DATA <= x"0ac2"; - when x"15b" => DATA <= x"2097"; - when x"15c" => DATA <= x"0080"; - when x"15d" => DATA <= x"8605"; - when x"15e" => DATA <= x"9840"; - when x"15f" => DATA <= x"09f7"; - when x"160" => DATA <= x"03b6"; - when x"161" => DATA <= x"0ac2"; - when x"162" => DATA <= x"80fb"; - when x"163" => DATA <= x"10c0"; - when x"164" => DATA <= x"09f7"; - when x"165" => DATA <= x"03ac"; - when x"166" => DATA <= x"60c1"; - when x"167" => DATA <= x"0ac3"; - when x"168" => DATA <= x"20d7"; - when x"169" => DATA <= x"0080"; - when x"16a" => DATA <= x"8605"; - when x"16b" => DATA <= x"09f7"; - when x"16c" => DATA <= x"01b8"; - when x"16d" => DATA <= x"9021"; - when x"16e" => DATA <= x"0ac3"; - when x"16f" => DATA <= x"80fb"; - when x"170" => DATA <= x"1580"; - when x"171" => DATA <= x"1582"; - when x"172" => DATA <= x"1583"; - when x"173" => DATA <= x"0087"; - when x"174" => DATA <= x"0500"; + when x"11e" => DATA <= x"024c"; + when x"11f" => DATA <= x"45c0"; + when x"120" => DATA <= x"ff00"; + when x"121" => DATA <= x"1002"; + when x"122" => DATA <= x"00c0"; + when x"123" => DATA <= x"1001"; + when x"124" => DATA <= x"09f7"; + when x"125" => DATA <= x"023e"; + when x"126" => DATA <= x"45c0"; + when x"127" => DATA <= x"ff00"; + when x"128" => DATA <= x"5001"; + when x"129" => DATA <= x"0109"; + when x"12a" => DATA <= x"15c0"; + when x"12b" => DATA <= x"0086"; + when x"12c" => DATA <= x"0cc0"; + when x"12d" => DATA <= x"1c01"; + when x"12e" => DATA <= x"f4ee"; + when x"12f" => DATA <= x"1042"; + when x"130" => DATA <= x"00c2"; + when x"131" => DATA <= x"45c2"; + when x"132" => DATA <= x"ff00"; + when x"133" => DATA <= x"1580"; + when x"134" => DATA <= x"0087"; + when x"135" => DATA <= x"0bc0"; + when x"136" => DATA <= x"034d"; + when x"137" => DATA <= x"10e6"; + when x"138" => DATA <= x"10a6"; + when x"139" => DATA <= x"1026"; + when x"13a" => DATA <= x"15c0"; + when x"13b" => DATA <= x"0008"; + when x"13c" => DATA <= x"09f7"; + when x"13d" => DATA <= x"03f0"; + when x"13e" => DATA <= x"1380"; + when x"13f" => DATA <= x"09f7"; + when x"140" => DATA <= x"03ea"; + when x"141" => DATA <= x"8bc0"; + when x"142" => DATA <= x"8003"; + when x"143" => DATA <= x"9442"; + when x"144" => DATA <= x"9243"; + when x"145" => DATA <= x"010c"; + when x"146" => DATA <= x"15c2"; + when x"147" => DATA <= x"0010"; + when x"148" => DATA <= x"15c3"; + when x"149" => DATA <= x"0010"; + when x"14a" => DATA <= x"2017"; + when x"14b" => DATA <= x"0015"; + when x"14c" => DATA <= x"8605"; + when x"14d" => DATA <= x"6000"; + when x"14e" => DATA <= x"65c0"; + when x"14f" => DATA <= x"fade"; + when x"150" => DATA <= x"9402"; + when x"151" => DATA <= x"9203"; + when x"152" => DATA <= x"1080"; + when x"153" => DATA <= x"09f7"; + when x"154" => DATA <= x"03c2"; + when x"155" => DATA <= x"6081"; + when x"156" => DATA <= x"0ac2"; + when x"157" => DATA <= x"2097"; + when x"158" => DATA <= x"0080"; + when x"159" => DATA <= x"8605"; + when x"15a" => DATA <= x"9840"; + when x"15b" => DATA <= x"09f7"; + when x"15c" => DATA <= x"03b2"; + when x"15d" => DATA <= x"0ac2"; + when x"15e" => DATA <= x"80fb"; + when x"15f" => DATA <= x"10c0"; + when x"160" => DATA <= x"09f7"; + when x"161" => DATA <= x"03a8"; + when x"162" => DATA <= x"60c1"; + when x"163" => DATA <= x"0ac3"; + when x"164" => DATA <= x"20d7"; + when x"165" => DATA <= x"0080"; + when x"166" => DATA <= x"8605"; + when x"167" => DATA <= x"09f7"; + when x"168" => DATA <= x"01b8"; + when x"169" => DATA <= x"9021"; + when x"16a" => DATA <= x"0ac3"; + when x"16b" => DATA <= x"80fb"; + when x"16c" => DATA <= x"1580"; + when x"16d" => DATA <= x"1582"; + when x"16e" => DATA <= x"1583"; + when x"16f" => DATA <= x"0087"; + when x"170" => DATA <= x"0500"; + when x"171" => DATA <= x"0005"; + when x"172" => DATA <= x"0500"; + when x"173" => DATA <= x"0005"; + when x"174" => DATA <= x"0504"; when x"175" => DATA <= x"0005"; - when x"176" => DATA <= x"0500"; - when x"177" => DATA <= x"0005"; + when x"176" => DATA <= x"0008"; + when x"177" => DATA <= x"000e"; when x"178" => DATA <= x"0504"; - when x"179" => DATA <= x"0005"; - when x"17a" => DATA <= x"0008"; - when x"17b" => DATA <= x"000e"; - when x"17c" => DATA <= x"0504"; - when x"17d" => DATA <= x"0901"; - when x"17e" => DATA <= x"0501"; - when x"17f" => DATA <= x"0005"; - when x"180" => DATA <= x"0800"; - when x"181" => DATA <= x"1910"; - when x"182" => DATA <= x"0020"; - when x"183" => DATA <= x"0110"; - when x"184" => DATA <= x"0d0d"; - when x"185" => DATA <= x"8000"; - when x"186" => DATA <= x"0808"; - when x"187" => DATA <= x"8080"; - when x"188" => DATA <= x"15c0"; - when x"189" => DATA <= x"000a"; - when x"18a" => DATA <= x"09f7"; - when x"18b" => DATA <= x"0360"; - when x"18c" => DATA <= x"65c1"; - when x"18d" => DATA <= x"0002"; - when x"18e" => DATA <= x"15c2"; - when x"18f" => DATA <= x"0003"; + when x"179" => DATA <= x"0901"; + when x"17a" => DATA <= x"0501"; + when x"17b" => DATA <= x"0005"; + when x"17c" => DATA <= x"0800"; + when x"17d" => DATA <= x"1910"; + when x"17e" => DATA <= x"0020"; + when x"17f" => DATA <= x"0110"; + when x"180" => DATA <= x"0d0d"; + when x"181" => DATA <= x"8000"; + when x"182" => DATA <= x"0808"; + when x"183" => DATA <= x"8080"; + when x"184" => DATA <= x"15c0"; + when x"185" => DATA <= x"000a"; + when x"186" => DATA <= x"09f7"; + when x"187" => DATA <= x"035c"; + when x"188" => DATA <= x"65c1"; + when x"189" => DATA <= x"0002"; + when x"18a" => DATA <= x"15c2"; + when x"18b" => DATA <= x"0003"; + when x"18c" => DATA <= x"09f7"; + when x"18d" => DATA <= x"032e"; + when x"18e" => DATA <= x"15c0"; + when x"18f" => DATA <= x"0007"; when x"190" => DATA <= x"09f7"; - when x"191" => DATA <= x"0332"; - when x"192" => DATA <= x"15c0"; - when x"193" => DATA <= x"0007"; - when x"194" => DATA <= x"09f7"; - when x"195" => DATA <= x"034c"; - when x"196" => DATA <= x"0a00"; - when x"197" => DATA <= x"09f7"; - when x"198" => DATA <= x"0346"; - when x"199" => DATA <= x"09f7"; - when x"19a" => DATA <= x"015c"; - when x"19b" => DATA <= x"65c0"; - when x"19c" => DATA <= x"ff80"; - when x"19d" => DATA <= x"870b"; - when x"19e" => DATA <= x"09f7"; - when x"19f" => DATA <= x"fd58"; - when x"1a0" => DATA <= x"0a02"; - when x"1a1" => DATA <= x"09f7"; - when x"1a2" => DATA <= x"014c"; - when x"1a3" => DATA <= x"9011"; - when x"1a4" => DATA <= x"0a82"; - when x"1a5" => DATA <= x"2017"; - when x"1a6" => DATA <= x"000d"; - when x"1a7" => DATA <= x"02f9"; - when x"1a8" => DATA <= x"0ac2"; - when x"1a9" => DATA <= x"0087"; - when x"1aa" => DATA <= x"10a6"; - when x"1ab" => DATA <= x"1066"; - when x"1ac" => DATA <= x"1026"; - when x"1ad" => DATA <= x"15c0"; - when x"1ae" => DATA <= x"000c"; - when x"1af" => DATA <= x"09f7"; - when x"1b0" => DATA <= x"0310"; - when x"1b1" => DATA <= x"1081"; - when x"1b2" => DATA <= x"15c2"; - when x"1b3" => DATA <= x"0004"; - when x"1b4" => DATA <= x"09f7"; - when x"1b5" => DATA <= x"02ea"; - when x"1b6" => DATA <= x"1580"; - when x"1b7" => DATA <= x"09f7"; - when x"1b8" => DATA <= x"0306"; - when x"1b9" => DATA <= x"09f7"; - when x"1ba" => DATA <= x"011c"; + when x"191" => DATA <= x"0348"; + when x"192" => DATA <= x"0a00"; + when x"193" => DATA <= x"09f7"; + when x"194" => DATA <= x"0342"; + when x"195" => DATA <= x"09f7"; + when x"196" => DATA <= x"015c"; + when x"197" => DATA <= x"65c0"; + when x"198" => DATA <= x"ff80"; + when x"199" => DATA <= x"870b"; + when x"19a" => DATA <= x"09f7"; + when x"19b" => DATA <= x"fd60"; + when x"19c" => DATA <= x"0a02"; + when x"19d" => DATA <= x"09f7"; + when x"19e" => DATA <= x"014c"; + when x"19f" => DATA <= x"9011"; + when x"1a0" => DATA <= x"0a82"; + when x"1a1" => DATA <= x"2017"; + when x"1a2" => DATA <= x"000d"; + when x"1a3" => DATA <= x"02f9"; + when x"1a4" => DATA <= x"0ac2"; + when x"1a5" => DATA <= x"0087"; + when x"1a6" => DATA <= x"10a6"; + when x"1a7" => DATA <= x"1066"; + when x"1a8" => DATA <= x"1026"; + when x"1a9" => DATA <= x"15c0"; + when x"1aa" => DATA <= x"000c"; + when x"1ab" => DATA <= x"09f7"; + when x"1ac" => DATA <= x"030c"; + when x"1ad" => DATA <= x"1081"; + when x"1ae" => DATA <= x"15c2"; + when x"1af" => DATA <= x"0004"; + when x"1b0" => DATA <= x"09f7"; + when x"1b1" => DATA <= x"02e6"; + when x"1b2" => DATA <= x"1580"; + when x"1b3" => DATA <= x"09f7"; + when x"1b4" => DATA <= x"0302"; + when x"1b5" => DATA <= x"09f7"; + when x"1b6" => DATA <= x"011c"; + when x"1b7" => DATA <= x"1026"; + when x"1b8" => DATA <= x"15c2"; + when x"1b9" => DATA <= x"0004"; + when x"1ba" => DATA <= x"0133"; when x"1bb" => DATA <= x"1026"; - when x"1bc" => DATA <= x"15c2"; - when x"1bd" => DATA <= x"0004"; - when x"1be" => DATA <= x"0133"; - when x"1bf" => DATA <= x"1026"; - when x"1c0" => DATA <= x"15c0"; - when x"1c1" => DATA <= x"0012"; - when x"1c2" => DATA <= x"09f7"; - when x"1c3" => DATA <= x"02f0"; - when x"1c4" => DATA <= x"1580"; + when x"1bc" => DATA <= x"15c0"; + when x"1bd" => DATA <= x"0012"; + when x"1be" => DATA <= x"09f7"; + when x"1bf" => DATA <= x"02ec"; + when x"1c0" => DATA <= x"1580"; + when x"1c1" => DATA <= x"09f7"; + when x"1c2" => DATA <= x"02e6"; + when x"1c3" => DATA <= x"0bc0"; + when x"1c4" => DATA <= x"0206"; when x"1c5" => DATA <= x"09f7"; - when x"1c6" => DATA <= x"02ea"; - when x"1c7" => DATA <= x"0bc0"; - when x"1c8" => DATA <= x"0206"; - when x"1c9" => DATA <= x"09f7"; - when x"1ca" => DATA <= x"02e0"; - when x"1cb" => DATA <= x"09f7"; - when x"1cc" => DATA <= x"00f8"; - when x"1cd" => DATA <= x"0a00"; - when x"1ce" => DATA <= x"0087"; - when x"1cf" => DATA <= x"1066"; - when x"1d0" => DATA <= x"09f7"; - when x"1d1" => DATA <= x"02a4"; - when x"1d2" => DATA <= x"09f7"; - when x"1d3" => DATA <= x"00ea"; - when x"1d4" => DATA <= x"1581"; - when x"1d5" => DATA <= x"0087"; - when x"1d6" => DATA <= x"10a6"; - when x"1d7" => DATA <= x"1066"; - when x"1d8" => DATA <= x"1026"; - when x"1d9" => DATA <= x"15c0"; - when x"1da" => DATA <= x"0014"; - when x"1db" => DATA <= x"09f7"; - when x"1dc" => DATA <= x"02be"; - when x"1dd" => DATA <= x"65c1"; - when x"1de" => DATA <= x"0002"; - when x"1df" => DATA <= x"15c2"; - when x"1e0" => DATA <= x"0010"; + when x"1c6" => DATA <= x"02dc"; + when x"1c7" => DATA <= x"09f7"; + when x"1c8" => DATA <= x"00f8"; + when x"1c9" => DATA <= x"0a00"; + when x"1ca" => DATA <= x"0087"; + when x"1cb" => DATA <= x"1066"; + when x"1cc" => DATA <= x"09f7"; + when x"1cd" => DATA <= x"02a0"; + when x"1ce" => DATA <= x"09f7"; + when x"1cf" => DATA <= x"00ea"; + when x"1d0" => DATA <= x"1581"; + when x"1d1" => DATA <= x"0087"; + when x"1d2" => DATA <= x"10a6"; + when x"1d3" => DATA <= x"1066"; + when x"1d4" => DATA <= x"1026"; + when x"1d5" => DATA <= x"15c0"; + when x"1d6" => DATA <= x"0014"; + when x"1d7" => DATA <= x"09f7"; + when x"1d8" => DATA <= x"02ba"; + when x"1d9" => DATA <= x"65c1"; + when x"1da" => DATA <= x"0002"; + when x"1db" => DATA <= x"15c2"; + when x"1dc" => DATA <= x"0010"; + when x"1dd" => DATA <= x"09f7"; + when x"1de" => DATA <= x"028c"; + when x"1df" => DATA <= x"09f7"; + when x"1e0" => DATA <= x"fcd6"; when x"1e1" => DATA <= x"09f7"; - when x"1e2" => DATA <= x"0290"; - when x"1e3" => DATA <= x"09f7"; - when x"1e4" => DATA <= x"fcce"; - when x"1e5" => DATA <= x"09f7"; - when x"1e6" => DATA <= x"027a"; - when x"1e7" => DATA <= x"1580"; - when x"1e8" => DATA <= x"09f7"; - when x"1e9" => DATA <= x"02a4"; - when x"1ea" => DATA <= x"09f7"; - when x"1eb" => DATA <= x"00ba"; - when x"1ec" => DATA <= x"1381"; - when x"1ed" => DATA <= x"1026"; - when x"1ee" => DATA <= x"65c1"; - when x"1ef" => DATA <= x"0002"; - when x"1f0" => DATA <= x"15c2"; - when x"1f1" => DATA <= x"0010"; - when x"1f2" => DATA <= x"09f7"; - when x"1f3" => DATA <= x"027c"; - when x"1f4" => DATA <= x"1580"; - when x"1f5" => DATA <= x"1581"; - when x"1f6" => DATA <= x"1582"; - when x"1f7" => DATA <= x"0087"; - when x"1f8" => DATA <= x"8bc9"; - when x"1f9" => DATA <= x"0205"; - when x"1fa" => DATA <= x"0bc0"; - when x"1fb" => DATA <= x"0303"; - when x"1fc" => DATA <= x"2017"; - when x"1fd" => DATA <= x"0005"; - when x"1fe" => DATA <= x"8713"; - when x"1ff" => DATA <= x"10a6"; - when x"200" => DATA <= x"1026"; - when x"201" => DATA <= x"15c0"; - when x"202" => DATA <= x"0016"; + when x"1e2" => DATA <= x"0276"; + when x"1e3" => DATA <= x"1580"; + when x"1e4" => DATA <= x"09f7"; + when x"1e5" => DATA <= x"02a0"; + when x"1e6" => DATA <= x"09f7"; + when x"1e7" => DATA <= x"00ba"; + when x"1e8" => DATA <= x"1381"; + when x"1e9" => DATA <= x"1026"; + when x"1ea" => DATA <= x"65c1"; + when x"1eb" => DATA <= x"0002"; + when x"1ec" => DATA <= x"15c2"; + when x"1ed" => DATA <= x"0010"; + when x"1ee" => DATA <= x"09f7"; + when x"1ef" => DATA <= x"0278"; + when x"1f0" => DATA <= x"1580"; + when x"1f1" => DATA <= x"1581"; + when x"1f2" => DATA <= x"1582"; + when x"1f3" => DATA <= x"0087"; + when x"1f4" => DATA <= x"8bc9"; + when x"1f5" => DATA <= x"0205"; + when x"1f6" => DATA <= x"0bc0"; + when x"1f7" => DATA <= x"0303"; + when x"1f8" => DATA <= x"2017"; + when x"1f9" => DATA <= x"0005"; + when x"1fa" => DATA <= x"8713"; + when x"1fb" => DATA <= x"10a6"; + when x"1fc" => DATA <= x"1026"; + when x"1fd" => DATA <= x"15c0"; + when x"1fe" => DATA <= x"0016"; + when x"1ff" => DATA <= x"09f7"; + when x"200" => DATA <= x"026a"; + when x"201" => DATA <= x"15c2"; + when x"202" => DATA <= x"000d"; when x"203" => DATA <= x"09f7"; - when x"204" => DATA <= x"026e"; - when x"205" => DATA <= x"15c2"; - when x"206" => DATA <= x"000d"; - when x"207" => DATA <= x"09f7"; - when x"208" => DATA <= x"0244"; - when x"209" => DATA <= x"1580"; + when x"204" => DATA <= x"0240"; + when x"205" => DATA <= x"1580"; + when x"206" => DATA <= x"09f7"; + when x"207" => DATA <= x"025c"; + when x"208" => DATA <= x"15c2"; + when x"209" => DATA <= x"000d"; when x"20a" => DATA <= x"09f7"; - when x"20b" => DATA <= x"0260"; - when x"20c" => DATA <= x"15c2"; - when x"20d" => DATA <= x"000d"; - when x"20e" => DATA <= x"09f7"; - when x"20f" => DATA <= x"0244"; - when x"210" => DATA <= x"1582"; - when x"211" => DATA <= x"0133"; - when x"212" => DATA <= x"10a6"; - when x"213" => DATA <= x"1026"; - when x"214" => DATA <= x"1066"; - when x"215" => DATA <= x"0a81"; - when x"216" => DATA <= x"09f7"; - when x"217" => DATA <= x"fc6c"; - when x"218" => DATA <= x"1042"; - when x"219" => DATA <= x"1581"; - when x"21a" => DATA <= x"2397"; - when x"21b" => DATA <= x"0003"; - when x"21c" => DATA <= x"8604"; - when x"21d" => DATA <= x"9480"; - when x"21e" => DATA <= x"09f7"; - when x"21f" => DATA <= x"008c"; - when x"220" => DATA <= x"0104"; - when x"221" => DATA <= x"09f7"; - when x"222" => DATA <= x"003e"; - when x"223" => DATA <= x"870d"; - when x"224" => DATA <= x"9012"; - when x"225" => DATA <= x"8bf1"; - when x"226" => DATA <= x"0005"; - when x"227" => DATA <= x"0202"; - when x"228" => DATA <= x"8af1"; - when x"229" => DATA <= x"0006"; - when x"22a" => DATA <= x"8af1"; - when x"22b" => DATA <= x"0005"; - when x"22c" => DATA <= x"02ed"; - when x"22d" => DATA <= x"8bf1"; - when x"22e" => DATA <= x"0006"; - when x"22f" => DATA <= x"02ea"; - when x"230" => DATA <= x"00a1"; - when x"231" => DATA <= x"90b1"; - when x"232" => DATA <= x"0001"; - when x"233" => DATA <= x"00c2"; - when x"234" => DATA <= x"90b1"; - when x"235" => DATA <= x"0002"; - when x"236" => DATA <= x"0bd6"; - when x"237" => DATA <= x"1582"; - when x"238" => DATA <= x"15c0"; - when x"239" => DATA <= x"0000"; - when x"23a" => DATA <= x"0087"; - when x"23b" => DATA <= x"0bc1"; - when x"23c" => DATA <= x"0305"; - when x"23d" => DATA <= x"15c0"; - when x"23e" => DATA <= x"000e"; + when x"20b" => DATA <= x"0240"; + when x"20c" => DATA <= x"1582"; + when x"20d" => DATA <= x"0133"; + when x"20e" => DATA <= x"10a6"; + when x"20f" => DATA <= x"1026"; + when x"210" => DATA <= x"1066"; + when x"211" => DATA <= x"0a81"; + when x"212" => DATA <= x"09f7"; + when x"213" => DATA <= x"fc74"; + when x"214" => DATA <= x"1042"; + when x"215" => DATA <= x"1581"; + when x"216" => DATA <= x"2397"; + when x"217" => DATA <= x"0003"; + when x"218" => DATA <= x"8604"; + when x"219" => DATA <= x"9480"; + when x"21a" => DATA <= x"09f7"; + when x"21b" => DATA <= x"008c"; + when x"21c" => DATA <= x"0104"; + when x"21d" => DATA <= x"09f7"; + when x"21e" => DATA <= x"003e"; + when x"21f" => DATA <= x"870d"; + when x"220" => DATA <= x"9012"; + when x"221" => DATA <= x"8bf1"; + when x"222" => DATA <= x"0005"; + when x"223" => DATA <= x"0202"; + when x"224" => DATA <= x"8af1"; + when x"225" => DATA <= x"0006"; + when x"226" => DATA <= x"8af1"; + when x"227" => DATA <= x"0005"; + when x"228" => DATA <= x"02ed"; + when x"229" => DATA <= x"8bf1"; + when x"22a" => DATA <= x"0006"; + when x"22b" => DATA <= x"02ea"; + when x"22c" => DATA <= x"00a1"; + when x"22d" => DATA <= x"90b1"; + when x"22e" => DATA <= x"0001"; + when x"22f" => DATA <= x"00c2"; + when x"230" => DATA <= x"90b1"; + when x"231" => DATA <= x"0002"; + when x"232" => DATA <= x"0bd6"; + when x"233" => DATA <= x"1582"; + when x"234" => DATA <= x"15c0"; + when x"235" => DATA <= x"0000"; + when x"236" => DATA <= x"0087"; + when x"237" => DATA <= x"0bc1"; + when x"238" => DATA <= x"0305"; + when x"239" => DATA <= x"15c0"; + when x"23a" => DATA <= x"000e"; + when x"23b" => DATA <= x"09f7"; + when x"23c" => DATA <= x"01ec"; + when x"23d" => DATA <= x"0103"; + when x"23e" => DATA <= x"0a00"; when x"23f" => DATA <= x"09f7"; - when x"240" => DATA <= x"01f0"; - when x"241" => DATA <= x"0103"; - when x"242" => DATA <= x"0a00"; - when x"243" => DATA <= x"09f7"; - when x"244" => DATA <= x"01ee"; - when x"245" => DATA <= x"09f7"; - when x"246" => DATA <= x"0004"; - when x"247" => DATA <= x"65c0"; - when x"248" => DATA <= x"ff80"; - when x"249" => DATA <= x"97c0"; - when x"24a" => DATA <= x"fff4"; - when x"24b" => DATA <= x"80fd"; - when x"24c" => DATA <= x"97c0"; - when x"24d" => DATA <= x"fff6"; - when x"24e" => DATA <= x"0087"; - when x"24f" => DATA <= x"0bc1"; - when x"250" => DATA <= x"0315"; - when x"251" => DATA <= x"1026"; - when x"252" => DATA <= x"15c0"; - when x"253" => DATA <= x"0010"; - when x"254" => DATA <= x"09f7"; - when x"255" => DATA <= x"01c6"; - when x"256" => DATA <= x"1380"; - when x"257" => DATA <= x"09f7"; - when x"258" => DATA <= x"01c6"; - when x"259" => DATA <= x"09f7"; - when x"25a" => DATA <= x"ffdc"; - when x"25b" => DATA <= x"1580"; - when x"25c" => DATA <= x"0087"; - when x"25d" => DATA <= x"25c0"; - when x"25e" => DATA <= x"000d"; - when x"25f" => DATA <= x"0206"; + when x"240" => DATA <= x"01ea"; + when x"241" => DATA <= x"09f7"; + when x"242" => DATA <= x"0004"; + when x"243" => DATA <= x"65c0"; + when x"244" => DATA <= x"ff80"; + when x"245" => DATA <= x"97c0"; + when x"246" => DATA <= x"fff4"; + when x"247" => DATA <= x"80fd"; + when x"248" => DATA <= x"97c0"; + when x"249" => DATA <= x"fff6"; + when x"24a" => DATA <= x"0087"; + when x"24b" => DATA <= x"0bc1"; + when x"24c" => DATA <= x"0315"; + when x"24d" => DATA <= x"1026"; + when x"24e" => DATA <= x"15c0"; + when x"24f" => DATA <= x"0010"; + when x"250" => DATA <= x"09f7"; + when x"251" => DATA <= x"01c2"; + when x"252" => DATA <= x"1380"; + when x"253" => DATA <= x"09f7"; + when x"254" => DATA <= x"01c2"; + when x"255" => DATA <= x"09f7"; + when x"256" => DATA <= x"ffdc"; + when x"257" => DATA <= x"1580"; + when x"258" => DATA <= x"0087"; + when x"259" => DATA <= x"25c0"; + when x"25a" => DATA <= x"000d"; + when x"25b" => DATA <= x"0206"; + when x"25c" => DATA <= x"15c0"; + when x"25d" => DATA <= x"000a"; + when x"25e" => DATA <= x"09f7"; + when x"25f" => DATA <= x"0004"; when x"260" => DATA <= x"15c0"; - when x"261" => DATA <= x"000a"; - when x"262" => DATA <= x"09f7"; - when x"263" => DATA <= x"0004"; - when x"264" => DATA <= x"15c0"; - when x"265" => DATA <= x"000d"; - when x"266" => DATA <= x"35df"; - when x"267" => DATA <= x"0040"; - when x"268" => DATA <= x"fff0"; - when x"269" => DATA <= x"03fc"; - when x"26a" => DATA <= x"901f"; - when x"26b" => DATA <= x"fff2"; - when x"26c" => DATA <= x"0087"; - when x"26d" => DATA <= x"880f"; - when x"26e" => DATA <= x"42ff"; - when x"26f" => DATA <= x"6461"; - when x"270" => DATA <= x"ff00"; - when x"271" => DATA <= x"45f6"; - when x"272" => DATA <= x"fff0"; - when x"273" => DATA <= x"0002"; - when x"274" => DATA <= x"17e6"; - when x"275" => DATA <= x"f5e0"; - when x"276" => DATA <= x"17e6"; - when x"277" => DATA <= x"f5ec"; - when x"278" => DATA <= x"119f"; - when x"279" => DATA <= x"f5ec"; - when x"27a" => DATA <= x"15df"; - when x"27b" => DATA <= x"fd18"; - when x"27c" => DATA <= x"f5e0"; - when x"27d" => DATA <= x"0be6"; - when x"27e" => DATA <= x"1026"; - when x"27f" => DATA <= x"1d80"; - when x"280" => DATA <= x"0008"; - when x"281" => DATA <= x"1800"; - when x"282" => DATA <= x"45c0"; - when x"283" => DATA <= x"ff00"; - when x"284" => DATA <= x"6000"; - when x"285" => DATA <= x"67c0"; - when x"286" => DATA <= x"f5ee"; - when x"287" => DATA <= x"1236"; - when x"288" => DATA <= x"0002"; - when x"289" => DATA <= x"1580"; - when x"28a" => DATA <= x"09de"; - when x"28b" => DATA <= x"8405"; - when x"28c" => DATA <= x"17c6"; - when x"28d" => DATA <= x"f5ec"; + when x"261" => DATA <= x"000d"; + when x"262" => DATA <= x"35df"; + when x"263" => DATA <= x"0040"; + when x"264" => DATA <= x"fff0"; + when x"265" => DATA <= x"03fc"; + when x"266" => DATA <= x"901f"; + when x"267" => DATA <= x"fff2"; + when x"268" => DATA <= x"0087"; + when x"269" => DATA <= x"880f"; + when x"26a" => DATA <= x"42ff"; + when x"26b" => DATA <= x"6461"; + when x"26c" => DATA <= x"ff00"; + when x"26d" => DATA <= x"45f6"; + when x"26e" => DATA <= x"fff0"; + when x"26f" => DATA <= x"0002"; + when x"270" => DATA <= x"17e6"; + when x"271" => DATA <= x"f5e0"; + when x"272" => DATA <= x"17e6"; + when x"273" => DATA <= x"f5ec"; + when x"274" => DATA <= x"119f"; + when x"275" => DATA <= x"f5ec"; + when x"276" => DATA <= x"15df"; + when x"277" => DATA <= x"fd10"; + when x"278" => DATA <= x"f5e0"; + when x"279" => DATA <= x"0be6"; + when x"27a" => DATA <= x"1026"; + when x"27b" => DATA <= x"1d80"; + when x"27c" => DATA <= x"0008"; + when x"27d" => DATA <= x"1800"; + when x"27e" => DATA <= x"45c0"; + when x"27f" => DATA <= x"ff00"; + when x"280" => DATA <= x"6000"; + when x"281" => DATA <= x"67c0"; + when x"282" => DATA <= x"f5ee"; + when x"283" => DATA <= x"1236"; + when x"284" => DATA <= x"0002"; + when x"285" => DATA <= x"1580"; + when x"286" => DATA <= x"09de"; + when x"287" => DATA <= x"8405"; + when x"288" => DATA <= x"17c6"; + when x"289" => DATA <= x"f5ec"; + when x"28a" => DATA <= x"55f6"; + when x"28b" => DATA <= x"0002"; + when x"28c" => DATA <= x"0006"; + when x"28d" => DATA <= x"8603"; when x"28e" => DATA <= x"55f6"; - when x"28f" => DATA <= x"0002"; + when x"28f" => DATA <= x"0001"; when x"290" => DATA <= x"0006"; - when x"291" => DATA <= x"8603"; - when x"292" => DATA <= x"55f6"; - when x"293" => DATA <= x"0001"; - when x"294" => DATA <= x"0006"; - when x"295" => DATA <= x"159f"; - when x"296" => DATA <= x"f5ec"; - when x"297" => DATA <= x"159f"; - when x"298" => DATA <= x"f5e0"; - when x"299" => DATA <= x"0002"; - when x"29a" => DATA <= x"1d80"; - when x"29b" => DATA <= x"0006"; - when x"29c" => DATA <= x"1db6"; - when x"29d" => DATA <= x"0004"; - when x"29e" => DATA <= x"0006"; - when x"29f" => DATA <= x"0087"; - when x"2a0" => DATA <= x"0bd6"; -- was 17f6 - when x"2a1" => DATA <= x"159f"; -- was f5e0 - when x"2a2" => DATA <= x"f5ec"; - when x"2a3" => DATA <= x"159f"; - when x"2a4" => DATA <= x"f5e0"; - when x"2a5" => DATA <= x"1026"; - when x"2a6" => DATA <= x"810b"; - when x"2a7" => DATA <= x"2017"; - when x"2a8" => DATA <= x"0100"; - when x"2a9" => DATA <= x"861b"; - when x"2aa" => DATA <= x"6000"; - when x"2ab" => DATA <= x"67c0"; - when x"2ac" => DATA <= x"f5ee"; - when x"2ad" => DATA <= x"1226"; - when x"2ae" => DATA <= x"0bc1"; - when x"2af" => DATA <= x"0314"; - when x"2b0" => DATA <= x"1048"; - when x"2b1" => DATA <= x"0112"; - when x"2b2" => DATA <= x"0a40"; - when x"2b3" => DATA <= x"2017"; - when x"2b4" => DATA <= x"0006"; - when x"2b5" => DATA <= x"860f"; - when x"2b6" => DATA <= x"6000"; - when x"2b7" => DATA <= x"6000"; - when x"2b8" => DATA <= x"65c0"; - when x"2b9" => DATA <= x"f5d8"; - when x"2ba" => DATA <= x"1226"; - when x"2bb" => DATA <= x"0bc1"; - when x"2bc" => DATA <= x"0301"; - when x"2bd" => DATA <= x"1048"; - when x"2be" => DATA <= x"0bd0"; - when x"2bf" => DATA <= x"1226"; - when x"2c0" => DATA <= x"0bc2"; - when x"2c1" => DATA <= x"0301"; - when x"2c2" => DATA <= x"1088"; - when x"2c3" => DATA <= x"1582"; - when x"2c4" => DATA <= x"1581"; - when x"2c5" => DATA <= x"1580"; - when x"2c6" => DATA <= x"0002"; - when x"2c7" => DATA <= x"0bc0"; - when x"2c8" => DATA <= x"0306"; - when x"2c9" => DATA <= x"2017"; - when x"2ca" => DATA <= x"0001"; - when x"2cb" => DATA <= x"0306"; - when x"2cc" => DATA <= x"2017"; - when x"2cd" => DATA <= x"0004"; - when x"2ce" => DATA <= x"871c"; - when x"2cf" => DATA <= x"0087"; - when x"2d0" => DATA <= x"007f"; - when x"2d1" => DATA <= x"f834"; - when x"2d2" => DATA <= x"0a00"; - when x"2d3" => DATA <= x"15d0"; - when x"2d4" => DATA <= x"ffce"; - when x"2d5" => DATA <= x"0a10"; - when x"2d6" => DATA <= x"2017"; - when x"2d7" => DATA <= x"0100"; - when x"2d8" => DATA <= x"02fa"; + when x"291" => DATA <= x"159f"; + when x"292" => DATA <= x"f5ec"; + when x"293" => DATA <= x"159f"; + when x"294" => DATA <= x"f5e0"; + when x"295" => DATA <= x"0002"; + when x"296" => DATA <= x"1d80"; + when x"297" => DATA <= x"0006"; + when x"298" => DATA <= x"1db6"; + when x"299" => DATA <= x"0004"; + when x"29a" => DATA <= x"0006"; + when x"29b" => DATA <= x"0087"; + when x"29c" => DATA <= x"0bd6"; + when x"29d" => DATA <= x"159f"; + when x"29e" => DATA <= x"f5ec"; + when x"29f" => DATA <= x"159f"; + when x"2a0" => DATA <= x"f5e0"; -- was 17f6 + when x"2a1" => DATA <= x"1026"; -- was f5e0 + when x"2a2" => DATA <= x"810b"; + when x"2a3" => DATA <= x"2017"; + when x"2a4" => DATA <= x"0100"; + when x"2a5" => DATA <= x"861b"; + when x"2a6" => DATA <= x"6000"; + when x"2a7" => DATA <= x"67c0"; + when x"2a8" => DATA <= x"f5ee"; + when x"2a9" => DATA <= x"1226"; + when x"2aa" => DATA <= x"0bc1"; + when x"2ab" => DATA <= x"0314"; + when x"2ac" => DATA <= x"1048"; + when x"2ad" => DATA <= x"0112"; + when x"2ae" => DATA <= x"0a40"; + when x"2af" => DATA <= x"2017"; + when x"2b0" => DATA <= x"0006"; + when x"2b1" => DATA <= x"860f"; + when x"2b2" => DATA <= x"6000"; + when x"2b3" => DATA <= x"6000"; + when x"2b4" => DATA <= x"65c0"; + when x"2b5" => DATA <= x"f5d8"; + when x"2b6" => DATA <= x"1226"; + when x"2b7" => DATA <= x"0bc1"; + when x"2b8" => DATA <= x"0301"; + when x"2b9" => DATA <= x"1048"; + when x"2ba" => DATA <= x"0bd0"; + when x"2bb" => DATA <= x"1226"; + when x"2bc" => DATA <= x"0bc2"; + when x"2bd" => DATA <= x"0301"; + when x"2be" => DATA <= x"1088"; + when x"2bf" => DATA <= x"1582"; + when x"2c0" => DATA <= x"1581"; + when x"2c1" => DATA <= x"1580"; + when x"2c2" => DATA <= x"0002"; + when x"2c3" => DATA <= x"0bc0"; + when x"2c4" => DATA <= x"0304"; + when x"2c5" => DATA <= x"2017"; + when x"2c6" => DATA <= x"0003"; + when x"2c7" => DATA <= x"871d"; + when x"2c8" => DATA <= x"0303"; + when x"2c9" => DATA <= x"0087"; + when x"2ca" => DATA <= x"007f"; + when x"2cb" => DATA <= x"f840"; + when x"2cc" => DATA <= x"0a00"; + when x"2cd" => DATA <= x"15d0"; + when x"2ce" => DATA <= x"ffc2"; + when x"2cf" => DATA <= x"0a10"; + when x"2d0" => DATA <= x"2017"; + when x"2d1" => DATA <= x"0100"; + when x"2d2" => DATA <= x"02fa"; + when x"2d3" => DATA <= x"15df"; + when x"2d4" => DATA <= x"fcd2"; + when x"2d5" => DATA <= x"001c"; + when x"2d6" => DATA <= x"15df"; + when x"2d7" => DATA <= x"fcda"; + when x"2d8" => DATA <= x"0018"; when x"2d9" => DATA <= x"15df"; - when x"2da" => DATA <= x"fcda"; - when x"2db" => DATA <= x"001c"; + when x"2da" => DATA <= x"ffbe"; + when x"2db" => DATA <= x"0080"; when x"2dc" => DATA <= x"15df"; - when x"2dd" => DATA <= x"fce2"; - when x"2de" => DATA <= x"0018"; + when x"2dd" => DATA <= x"00e0"; + when x"2de" => DATA <= x"0082"; when x"2df" => DATA <= x"15df"; - when x"2e0" => DATA <= x"ffca"; - when x"2e1" => DATA <= x"0080"; + when x"2e0" => DATA <= x"fe92"; + when x"2e1" => DATA <= x"0084"; when x"2e2" => DATA <= x"15df"; - when x"2e3" => DATA <= x"00e0"; - when x"2e4" => DATA <= x"0082"; - when x"2e5" => DATA <= x"15df"; - when x"2e6" => DATA <= x"fe9e"; - when x"2e7" => DATA <= x"0084"; - when x"2e8" => DATA <= x"15df"; - when x"2e9" => DATA <= x"00c0"; - when x"2ea" => DATA <= x"0086"; - when x"2eb" => DATA <= x"0c00"; - when x"2ec" => DATA <= x"15c2"; - when x"2ed" => DATA <= x"f5d8"; - when x"2ee" => DATA <= x"15c1"; - when x"2ef" => DATA <= x"fdfe"; - when x"2f0" => DATA <= x"15c0"; - when x"2f1" => DATA <= x"0014"; - when x"2f2" => DATA <= x"8702"; - when x"2f3" => DATA <= x"65c0"; - when x"2f4" => DATA <= x"0010"; - when x"2f5" => DATA <= x"1452"; + when x"2e3" => DATA <= x"00c0"; + when x"2e4" => DATA <= x"0086"; + when x"2e5" => DATA <= x"0c00"; + when x"2e6" => DATA <= x"15c0"; + when x"2e7" => DATA <= x"000c"; + when x"2e8" => DATA <= x"15c1"; + when x"2e9" => DATA <= x"fdf2"; + when x"2ea" => DATA <= x"15c2"; + when x"2eb" => DATA <= x"f5d8"; + when x"2ec" => DATA <= x"8702"; + when x"2ed" => DATA <= x"65c0"; + when x"2ee" => DATA <= x"0018"; + when x"2ef" => DATA <= x"1452"; + when x"2f0" => DATA <= x"0ac0"; + when x"2f1" => DATA <= x"02fd"; + when x"2f2" => DATA <= x"8705"; + when x"2f3" => DATA <= x"15c0"; + when x"2f4" => DATA <= x"00f0"; + when x"2f5" => DATA <= x"1252"; when x"2f6" => DATA <= x"0ac0"; when x"2f7" => DATA <= x"02fd"; - when x"2f8" => DATA <= x"8705"; - when x"2f9" => DATA <= x"15c0"; - when x"2fa" => DATA <= x"00f0"; - when x"2fb" => DATA <= x"1252"; - when x"2fc" => DATA <= x"0ac0"; - when x"2fd" => DATA <= x"02fd"; - when x"2fe" => DATA <= x"0087"; - when x"2ff" => DATA <= x"f83e"; + when x"2f8" => DATA <= x"0087"; + when x"2f9" => DATA <= x"f83e"; + when x"2fa" => DATA <= x"0000"; + when x"2fb" => DATA <= x"f890"; + when x"2fc" => DATA <= x"f5ff"; + when x"2fd" => DATA <= x"f87a"; + when x"2fe" => DATA <= x"f500"; + when x"2ff" => DATA <= x"fd92"; when x"300" => DATA <= x"0000"; - when x"301" => DATA <= x"f890"; - when x"302" => DATA <= x"f5ff"; - when x"303" => DATA <= x"f87a"; - when x"304" => DATA <= x"f500"; - when x"305" => DATA <= x"fd9e"; - when x"306" => DATA <= x"0000"; - when x"307" => DATA <= x"ffce"; - when x"308" => DATA <= x"0000"; - when x"309" => DATA <= x"0000"; - when x"30a" => DATA <= x"f600"; - when x"30b" => DATA <= x"0000"; - when x"30c" => DATA <= x"f804"; - when x"30d" => DATA <= x"0100"; - when x"30e" => DATA <= x"f500"; - when x"30f" => DATA <= x"f83e"; - when x"310" => DATA <= x"0000"; - when x"311" => DATA <= x"f83e"; - when x"312" => DATA <= x"0000"; - when x"313" => DATA <= x"fda0"; - when x"314" => DATA <= x"f8b8"; - when x"315" => DATA <= x"f9ee"; - when x"316" => DATA <= x"fa72"; - when x"317" => DATA <= x"fccc"; - when x"318" => DATA <= x"fcc0"; - when x"319" => DATA <= x"fc84"; - when x"31a" => DATA <= x"fbac"; - when x"31b" => DATA <= x"fb54"; - when x"31c" => DATA <= x"fc76"; - when x"31d" => DATA <= x"fc9e"; - when x"31e" => DATA <= x"fbf0"; - when x"31f" => DATA <= x"fb7e"; - when x"320" => DATA <= x"fd8e"; - when x"321" => DATA <= x"fd40"; - when x"322" => DATA <= x"fd34"; - when x"323" => DATA <= x"fd9e"; - when x"324" => DATA <= x"9440"; - when x"325" => DATA <= x"09f7"; - when x"326" => DATA <= x"002a"; - when x"327" => DATA <= x"2017"; - when x"328" => DATA <= x"000d"; - when x"329" => DATA <= x"02fa"; - when x"32a" => DATA <= x"0087"; - when x"32b" => DATA <= x"6081"; - when x"32c" => DATA <= x"9840"; + when x"301" => DATA <= x"ffc2"; + when x"302" => DATA <= x"0000"; + when x"303" => DATA <= x"0000"; + when x"304" => DATA <= x"f600"; + when x"305" => DATA <= x"0000"; + when x"306" => DATA <= x"f804"; + when x"307" => DATA <= x"0100"; + when x"308" => DATA <= x"f500"; + when x"309" => DATA <= x"f83e"; + when x"30a" => DATA <= x"0000"; + when x"30b" => DATA <= x"f83e"; + when x"30c" => DATA <= x"0000"; + when x"30d" => DATA <= x"fd94"; + when x"30e" => DATA <= x"f8b8"; + when x"30f" => DATA <= x"f9e6"; + when x"310" => DATA <= x"fa6a"; + when x"311" => DATA <= x"fcc4"; + when x"312" => DATA <= x"fcb8"; + when x"313" => DATA <= x"fc7c"; + when x"314" => DATA <= x"fba4"; + when x"315" => DATA <= x"fb4c"; + when x"316" => DATA <= x"fc6e"; + when x"317" => DATA <= x"fc96"; + when x"318" => DATA <= x"fbe8"; + when x"319" => DATA <= x"fb76"; + when x"31a" => DATA <= x"fd86"; + when x"31b" => DATA <= x"fd38"; + when x"31c" => DATA <= x"fd2c"; + when x"31d" => DATA <= x"fd92"; + when x"31e" => DATA <= x"9440"; + when x"31f" => DATA <= x"09f7"; + when x"320" => DATA <= x"002a"; + when x"321" => DATA <= x"2017"; + when x"322" => DATA <= x"000d"; + when x"323" => DATA <= x"02fa"; + when x"324" => DATA <= x"0087"; + when x"325" => DATA <= x"6081"; + when x"326" => DATA <= x"9840"; + when x"327" => DATA <= x"09f7"; + when x"328" => DATA <= x"001a"; + when x"329" => DATA <= x"0ac2"; + when x"32a" => DATA <= x"02fb"; + when x"32b" => DATA <= x"0087"; + when x"32c" => DATA <= x"6081"; when x"32d" => DATA <= x"09f7"; - when x"32e" => DATA <= x"001a"; - when x"32f" => DATA <= x"0ac2"; - when x"330" => DATA <= x"02fb"; - when x"331" => DATA <= x"0087"; - when x"332" => DATA <= x"6081"; + when x"32e" => DATA <= x"fe2c"; + when x"32f" => DATA <= x"9021"; + when x"330" => DATA <= x"0ac2"; + when x"331" => DATA <= x"02fb"; + when x"332" => DATA <= x"0087"; when x"333" => DATA <= x"09f7"; - when x"334" => DATA <= x"fe28"; - when x"335" => DATA <= x"9021"; - when x"336" => DATA <= x"0ac2"; - when x"337" => DATA <= x"02fb"; - when x"338" => DATA <= x"0087"; - when x"339" => DATA <= x"09f7"; - when x"33a" => DATA <= x"0002"; - when x"33b" => DATA <= x"1040"; - when x"33c" => DATA <= x"35df"; - when x"33d" => DATA <= x"0040"; - when x"33e" => DATA <= x"fff4"; - when x"33f" => DATA <= x"03fc"; - when x"340" => DATA <= x"901f"; - when x"341" => DATA <= x"fff6"; + when x"334" => DATA <= x"0002"; + when x"335" => DATA <= x"1040"; + when x"336" => DATA <= x"35df"; + when x"337" => DATA <= x"0040"; + when x"338" => DATA <= x"fff4"; + when x"339" => DATA <= x"03fc"; + when x"33a" => DATA <= x"901f"; + when x"33b" => DATA <= x"fff6"; + when x"33c" => DATA <= x"0087"; + when x"33d" => DATA <= x"97c0"; + when x"33e" => DATA <= x"fff0"; + when x"33f" => DATA <= x"80fd"; + when x"340" => DATA <= x"97c0"; + when x"341" => DATA <= x"fff2"; when x"342" => DATA <= x"0087"; when x"343" => DATA <= x"97c0"; - when x"344" => DATA <= x"fff0"; + when x"344" => DATA <= x"fffc"; when x"345" => DATA <= x"80fd"; when x"346" => DATA <= x"97c0"; - when x"347" => DATA <= x"fff2"; + when x"347" => DATA <= x"fffe"; when x"348" => DATA <= x"0087"; - when x"349" => DATA <= x"97c0"; - when x"34a" => DATA <= x"fffc"; - when x"34b" => DATA <= x"80fd"; - when x"34c" => DATA <= x"97c0"; - when x"34d" => DATA <= x"fffe"; - when x"34e" => DATA <= x"0087"; - when x"34f" => DATA <= x"1026"; - when x"350" => DATA <= x"97c0"; - when x"351" => DATA <= x"fffc"; - when x"352" => DATA <= x"811c"; + when x"349" => DATA <= x"1026"; + when x"34a" => DATA <= x"97c0"; + when x"34b" => DATA <= x"fffc"; + when x"34c" => DATA <= x"811c"; + when x"34d" => DATA <= x"97c0"; + when x"34e" => DATA <= x"fff0"; + when x"34f" => DATA <= x"8103"; + when x"350" => DATA <= x"1580"; + when x"351" => DATA <= x"007f"; + when x"352" => DATA <= x"f742"; when x"353" => DATA <= x"97c0"; - when x"354" => DATA <= x"fff0"; - when x"355" => DATA <= x"8103"; - when x"356" => DATA <= x"1580"; - when x"357" => DATA <= x"007f"; - when x"358" => DATA <= x"f736"; - when x"359" => DATA <= x"97c0"; - when x"35a" => DATA <= x"fff2"; - when x"35b" => DATA <= x"8110"; - when x"35c" => DATA <= x"1066"; - when x"35d" => DATA <= x"10a6"; + when x"354" => DATA <= x"fff2"; + when x"355" => DATA <= x"8110"; + when x"356" => DATA <= x"1066"; + when x"357" => DATA <= x"10a6"; + when x"358" => DATA <= x"09f7"; + when x"359" => DATA <= x"ffc6"; + when x"35a" => DATA <= x"1002"; + when x"35b" => DATA <= x"09f7"; + when x"35c" => DATA <= x"ffc0"; + when x"35d" => DATA <= x"1001"; when x"35e" => DATA <= x"09f7"; - when x"35f" => DATA <= x"ffc6"; - when x"360" => DATA <= x"1002"; - when x"361" => DATA <= x"09f7"; - when x"362" => DATA <= x"ffc0"; - when x"363" => DATA <= x"1001"; - when x"364" => DATA <= x"09f7"; - when x"365" => DATA <= x"ffba"; + when x"35f" => DATA <= x"ffba"; + when x"360" => DATA <= x"09ff"; + when x"361" => DATA <= x"f720"; + when x"362" => DATA <= x"1582"; + when x"363" => DATA <= x"1581"; + when x"364" => DATA <= x"1580"; + when x"365" => DATA <= x"0002"; when x"366" => DATA <= x"09ff"; - when x"367" => DATA <= x"f714"; - when x"368" => DATA <= x"1582"; - when x"369" => DATA <= x"1581"; - when x"36a" => DATA <= x"1580"; - when x"36b" => DATA <= x"0002"; - when x"36c" => DATA <= x"09ff"; - when x"36d" => DATA <= x"f700"; - when x"36e" => DATA <= x"0156"; - when x"36f" => DATA <= x"97c0"; - when x"370" => DATA <= x"fffe"; - when x"371" => DATA <= x"8013"; - when x"372" => DATA <= x"1066"; - when x"373" => DATA <= x"09f7"; - when x"374" => DATA <= x"fda8"; - when x"375" => DATA <= x"17c1"; - when x"376" => DATA <= x"f5e2"; - when x"377" => DATA <= x"09f7"; - when x"378" => DATA <= x"fda0"; - when x"379" => DATA <= x"9011"; - when x"37a" => DATA <= x"09f7"; - when x"37b" => DATA <= x"fd9a"; - when x"37c" => DATA <= x"9011"; - when x"37d" => DATA <= x"02fc"; - when x"37e" => DATA <= x"1581"; - when x"37f" => DATA <= x"1580"; - when x"380" => DATA <= x"17c0"; - when x"381" => DATA <= x"f5e2"; - when x"382" => DATA <= x"17ce"; - when x"383" => DATA <= x"f5e0"; - when x"384" => DATA <= x"0002"; - when x"385" => DATA <= x"1066"; - when x"386" => DATA <= x"1001"; - when x"387" => DATA <= x"09f7"; - when x"388" => DATA <= x"ff80"; - when x"389" => DATA <= x"2057"; - when x"38a" => DATA <= x"0005"; - when x"38b" => DATA <= x"03dd"; - when x"38c" => DATA <= x"09f7"; - when x"38d" => DATA <= x"ff76"; - when x"38e" => DATA <= x"901f"; - when x"38f" => DATA <= x"f5fb"; - when x"390" => DATA <= x"09f7"; - when x"391" => DATA <= x"ff6e"; - when x"392" => DATA <= x"901f"; - when x"393" => DATA <= x"f5fa"; - when x"394" => DATA <= x"09f7"; - when x"395" => DATA <= x"ff66"; - when x"396" => DATA <= x"901f"; - when x"397" => DATA <= x"f5f9"; - when x"398" => DATA <= x"09f7"; - when x"399" => DATA <= x"ff5e"; - when x"39a" => DATA <= x"901f"; - when x"39b" => DATA <= x"f5f8"; - when x"39c" => DATA <= x"97c0"; - when x"39d" => DATA <= x"fffa"; - when x"39e" => DATA <= x"97c0"; - when x"39f" => DATA <= x"fffa"; - when x"3a0" => DATA <= x"09f7"; - when x"3a1" => DATA <= x"ff4e"; - when x"3a2" => DATA <= x"6041"; - when x"3a3" => DATA <= x"1c5f"; - when x"3a4" => DATA <= x"ffd0"; - when x"3a5" => DATA <= x"0080"; - when x"3a6" => DATA <= x"17c0"; - when x"3a7" => DATA <= x"f5f8"; - when x"3a8" => DATA <= x"2057"; - when x"3a9" => DATA <= x"000c"; - when x"3aa" => DATA <= x"87be"; - when x"3ab" => DATA <= x"030a"; - when x"3ac" => DATA <= x"15c1"; - when x"3ad" => DATA <= x"0100"; - when x"3ae" => DATA <= x"8bdf"; - when x"3af" => DATA <= x"fff8"; - when x"3b0" => DATA <= x"80fd"; - when x"3b1" => DATA <= x"97d0"; - when x"3b2" => DATA <= x"fffa"; - when x"3b3" => DATA <= x"0ac1"; - when x"3b4" => DATA <= x"02f9"; - when x"3b5" => DATA <= x"010e"; - when x"3b6" => DATA <= x"15c1"; - when x"3b7" => DATA <= x"0100"; - when x"3b8" => DATA <= x"8bdf"; - when x"3b9" => DATA <= x"fff8"; - when x"3ba" => DATA <= x"80fd"; - when x"3bb" => DATA <= x"941f"; - when x"3bc" => DATA <= x"fffa"; - when x"3bd" => DATA <= x"0ac1"; - when x"3be" => DATA <= x"02f9"; - when x"3bf" => DATA <= x"8bdf"; - when x"3c0" => DATA <= x"fff8"; - when x"3c1" => DATA <= x"80fd"; - when x"3c2" => DATA <= x"8a1f"; - when x"3c3" => DATA <= x"fffa"; - when x"3c4" => DATA <= x"1581"; - when x"3c5" => DATA <= x"101f"; - when x"3c6" => DATA <= x"f5f8"; - when x"3c7" => DATA <= x"1580"; - when x"3c8" => DATA <= x"0002"; - when x"3c9" => DATA <= x"1026"; - when x"3ca" => DATA <= x"17c0"; - when x"3cb" => DATA <= x"f5f8"; - when x"3cc" => DATA <= x"97d0"; - when x"3cd" => DATA <= x"fffa"; - when x"3ce" => DATA <= x"97d0"; + when x"367" => DATA <= x"f70c"; + when x"368" => DATA <= x"0156"; + when x"369" => DATA <= x"97c0"; + when x"36a" => DATA <= x"fffe"; + when x"36b" => DATA <= x"8013"; + when x"36c" => DATA <= x"1066"; + when x"36d" => DATA <= x"09f7"; + when x"36e" => DATA <= x"fdac"; + when x"36f" => DATA <= x"17c1"; + when x"370" => DATA <= x"f5e2"; + when x"371" => DATA <= x"09f7"; + when x"372" => DATA <= x"fda4"; + when x"373" => DATA <= x"9011"; + when x"374" => DATA <= x"09f7"; + when x"375" => DATA <= x"fd9e"; + when x"376" => DATA <= x"9011"; + when x"377" => DATA <= x"02fc"; + when x"378" => DATA <= x"1581"; + when x"379" => DATA <= x"1580"; + when x"37a" => DATA <= x"17c0"; + when x"37b" => DATA <= x"f5e2"; + when x"37c" => DATA <= x"17ce"; + when x"37d" => DATA <= x"f5e0"; + when x"37e" => DATA <= x"0002"; + when x"37f" => DATA <= x"1066"; + when x"380" => DATA <= x"1001"; + when x"381" => DATA <= x"09f7"; + when x"382" => DATA <= x"ff80"; + when x"383" => DATA <= x"2057"; + when x"384" => DATA <= x"0005"; + when x"385" => DATA <= x"03dd"; + when x"386" => DATA <= x"09f7"; + when x"387" => DATA <= x"ff76"; + when x"388" => DATA <= x"901f"; + when x"389" => DATA <= x"f5fb"; + when x"38a" => DATA <= x"09f7"; + when x"38b" => DATA <= x"ff6e"; + when x"38c" => DATA <= x"901f"; + when x"38d" => DATA <= x"f5fa"; + when x"38e" => DATA <= x"09f7"; + when x"38f" => DATA <= x"ff66"; + when x"390" => DATA <= x"901f"; + when x"391" => DATA <= x"f5f9"; + when x"392" => DATA <= x"09f7"; + when x"393" => DATA <= x"ff5e"; + when x"394" => DATA <= x"901f"; + when x"395" => DATA <= x"f5f8"; + when x"396" => DATA <= x"97c0"; + when x"397" => DATA <= x"fffa"; + when x"398" => DATA <= x"97c0"; + when x"399" => DATA <= x"fffa"; + when x"39a" => DATA <= x"09f7"; + when x"39b" => DATA <= x"ff4e"; + when x"39c" => DATA <= x"6041"; + when x"39d" => DATA <= x"1c5f"; + when x"39e" => DATA <= x"ffc4"; + when x"39f" => DATA <= x"0080"; + when x"3a0" => DATA <= x"17c0"; + when x"3a1" => DATA <= x"f5f8"; + when x"3a2" => DATA <= x"2057"; + when x"3a3" => DATA <= x"000c"; + when x"3a4" => DATA <= x"87be"; + when x"3a5" => DATA <= x"030a"; + when x"3a6" => DATA <= x"15c1"; + when x"3a7" => DATA <= x"0100"; + when x"3a8" => DATA <= x"8bdf"; + when x"3a9" => DATA <= x"fff8"; + when x"3aa" => DATA <= x"80fd"; + when x"3ab" => DATA <= x"97d0"; + when x"3ac" => DATA <= x"fffa"; + when x"3ad" => DATA <= x"0ac1"; + when x"3ae" => DATA <= x"02f9"; + when x"3af" => DATA <= x"010e"; + when x"3b0" => DATA <= x"15c1"; + when x"3b1" => DATA <= x"0100"; + when x"3b2" => DATA <= x"8bdf"; + when x"3b3" => DATA <= x"fff8"; + when x"3b4" => DATA <= x"80fd"; + when x"3b5" => DATA <= x"941f"; + when x"3b6" => DATA <= x"fffa"; + when x"3b7" => DATA <= x"0ac1"; + when x"3b8" => DATA <= x"02f9"; + when x"3b9" => DATA <= x"8bdf"; + when x"3ba" => DATA <= x"fff8"; + when x"3bb" => DATA <= x"80fd"; + when x"3bc" => DATA <= x"8a1f"; + when x"3bd" => DATA <= x"fffa"; + when x"3be" => DATA <= x"1581"; + when x"3bf" => DATA <= x"101f"; + when x"3c0" => DATA <= x"f5f8"; + when x"3c1" => DATA <= x"1580"; + when x"3c2" => DATA <= x"0002"; + when x"3c3" => DATA <= x"1026"; + when x"3c4" => DATA <= x"17c0"; + when x"3c5" => DATA <= x"f5f8"; + when x"3c6" => DATA <= x"97d0"; + when x"3c7" => DATA <= x"fffa"; + when x"3c8" => DATA <= x"97d0"; + when x"3c9" => DATA <= x"fffa"; + when x"3ca" => DATA <= x"01f4"; + when x"3cb" => DATA <= x"1026"; + when x"3cc" => DATA <= x"17c0"; + when x"3cd" => DATA <= x"f5f8"; + when x"3ce" => DATA <= x"941f"; when x"3cf" => DATA <= x"fffa"; - when x"3d0" => DATA <= x"01f4"; - when x"3d1" => DATA <= x"1026"; - when x"3d2" => DATA <= x"17c0"; - when x"3d3" => DATA <= x"f5f8"; - when x"3d4" => DATA <= x"941f"; - when x"3d5" => DATA <= x"fffa"; - when x"3d6" => DATA <= x"941f"; + when x"3d0" => DATA <= x"941f"; + when x"3d1" => DATA <= x"fffa"; + when x"3d2" => DATA <= x"01ec"; + when x"3d3" => DATA <= x"1026"; + when x"3d4" => DATA <= x"17c0"; + when x"3d5" => DATA <= x"f5f8"; + when x"3d6" => DATA <= x"97d0"; when x"3d7" => DATA <= x"fffa"; - when x"3d8" => DATA <= x"01ec"; + when x"3d8" => DATA <= x"01e6"; when x"3d9" => DATA <= x"1026"; when x"3da" => DATA <= x"17c0"; when x"3db" => DATA <= x"f5f8"; - when x"3dc" => DATA <= x"97d0"; + when x"3dc" => DATA <= x"941f"; when x"3dd" => DATA <= x"fffa"; - when x"3de" => DATA <= x"01e6"; - when x"3df" => DATA <= x"1026"; - when x"3e0" => DATA <= x"17c0"; - when x"3e1" => DATA <= x"f5f8"; - when x"3e2" => DATA <= x"941f"; - when x"3e3" => DATA <= x"fffa"; - when x"3e4" => DATA <= x"01e0"; - when x"3e5" => DATA <= x"8a1f"; - when x"3e6" => DATA <= x"fffa"; - when x"3e7" => DATA <= x"0002"; + when x"3de" => DATA <= x"01e0"; + when x"3df" => DATA <= x"8a1f"; + when x"3e0" => DATA <= x"fffa"; + when x"3e1" => DATA <= x"0002"; + when x"3e2" => DATA <= x"ffb2"; + when x"3e3" => DATA <= x"ffa6"; + when x"3e4" => DATA <= x"ff96"; + when x"3e5" => DATA <= x"ff86"; + when x"3e6" => DATA <= x"ffbe"; + when x"3e7" => DATA <= x"ffbe"; when x"3e8" => DATA <= x"ffbe"; - when x"3e9" => DATA <= x"ffb2"; - when x"3ea" => DATA <= x"ffa2"; - when x"3eb" => DATA <= x"ff92"; - when x"3ec" => DATA <= x"ffca"; - when x"3ed" => DATA <= x"ffca"; - when x"3ee" => DATA <= x"ffca"; - when x"3ef" => DATA <= x"ffca"; + when x"3e9" => DATA <= x"ffbe"; + when x"3ea" => DATA <= x"0000"; + when x"3eb" => DATA <= x"0000"; + when x"3ec" => DATA <= x"0000"; + when x"3ed" => DATA <= x"0000"; + when x"3ee" => DATA <= x"0000"; + when x"3ef" => DATA <= x"0000"; when x"3f0" => DATA <= x"0000"; when x"3f1" => DATA <= x"0000"; when x"3f2" => DATA <= x"0000"; From 51ca272fb37c1ddece8da93558333eff08138c9d Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 11 Oct 2015 11:01:08 +0100 Subject: [PATCH 54/61] Atom Host: fixed atm header build issue Change-Id: Id20680c694410f0bede23e5235582ecc8b37ef2a --- host/atom/AtomHost.asm | 7 ++++++- host/atom/AtomHost.lkr | 6 ++++-- host/atom/build.sh | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index 6368e3f..585005a 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -124,14 +124,19 @@ ;;; Optional 22-byte ATM Header ;;; -------------------------- -AtmHeader: +.if (atmhdr = 1) +AtmHeader: + .SEGMENT "HEADER" .byte "TUBE" .word 0,0,0,0,0,0 .word StartAddr .word StartAddr .word EndAddr - StartAddr +.endif + .SEGMENT "CODE" + StartAddr: ;;; Main Entry Point Block diff --git a/host/atom/AtomHost.lkr b/host/atom/AtomHost.lkr index ebe197c..e3a9f5f 100644 --- a/host/atom/AtomHost.lkr +++ b/host/atom/AtomHost.lkr @@ -1,9 +1,11 @@ MEMORY { - RAM1: start = $2fea, size = $1016, fill = no; + RAM1: start = $2fea, size = $16, fill = no; + RAM2: start = $3000, size = $1000, fill = no; } SEGMENTS { - CODE: load = RAM1, type = ro; + HEADER: load = RAM1, type = ro; + CODE: load = RAM2, type = ro; } diff --git a/host/atom/build.sh b/host/atom/build.sh index b484762..942bf1e 100755 --- a/host/atom/build.sh +++ b/host/atom/build.sh @@ -8,5 +8,7 @@ ca65 -l AtomHost.lst -o AtomHost.o AtomHost.asm echo Linking ld65 AtomHost.o -o TUBE -C AtomHost.lkr +echo CRC = `./crc16 TUBE | tr "a-z" "A-Z"` + echo Cleaning rm -f *.o From 937c7a9746381c55062168f40b8f5a464c617c1f Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 11 Oct 2015 19:00:06 +0100 Subject: [PATCH 55/61] PDP11 Co Pro: Fixes to MTPI Change-Id: I096b08c84ddb64f12c3f361eb3aea4483b198db3 --- src/LX9Co_CoProPDP11.vhd | 7 +++++-- src/PDP2011/cpu.vhd | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/LX9Co_CoProPDP11.vhd b/src/LX9Co_CoProPDP11.vhd index 1101403..31dfe7f 100644 --- a/src/LX9Co_CoProPDP11.vhd +++ b/src/LX9Co_CoProPDP11.vhd @@ -84,6 +84,7 @@ architecture BEHAVIORAL of LX9CoProPDP11 is signal cpu_IRQ_ack : std_logic; signal cpu_NMI_ack : std_logic; signal cpu_PSW : std_logic_vector (15 downto 0); + signal cpu_cp : std_logic; signal ifetch : std_logic; signal bg6 : std_logic; @@ -120,7 +121,7 @@ begin wr => cpu_wr, -- if '1', the cpu is doing a write to the bus and drives addr_v and dataout rd => cpu_rd, -- if '1', the cpu is doing a read from the bus, drives addr_v and reads datain dw8 => cpu_dw8, -- if '1', the read or write initiated by the cpu is 8 bits wide - cp => open, -- if '1', the read or write should use the previous cpu mode + cp => cpu_cp, -- if '1', the read or write should use the previous cpu mode ifetch => ifetch, -- if '1', this read is for an instruction fetch id => open, -- if '1', the read or write should use data space init => open, -- if '1', the devices on the bus should reset @@ -203,7 +204,9 @@ begin ); -- provide a seperare page 0 for Kernel mode ("00") vs user mode ("11") - cpu_addr2 <= cpu_addr when cpu_PSW(15 downto 14) = "00" or cpu_addr >= x"0100" else + cpu_addr2 <= cpu_addr when cpu_addr >= x"0100" else + cpu_addr when cpu_PSW(15 downto 14) = "00" and cpu_cp = '0' else + cpu_addr when cpu_PSW(13 downto 12) = "00" and cpu_cp = '1' else "11111" & cpu_addr(10 downto 0); p_cs_b <= '0' when (cpu_rd = '1' or cpu_wr = '1') and cpu_addr(15 downto 4) = x"FFF" else '1'; diff --git a/src/PDP2011/cpu.vhd b/src/PDP2011/cpu.vhd index 41de0ab..9c1c4e3 100644 --- a/src/PDP2011/cpu.vhd +++ b/src/PDP2011/cpu.vhd @@ -535,7 +535,7 @@ begin '1' when state_src6 | state_src6a, '1' when state_src7 | state_src7a | state_src7b, '1' when state_mfpa, - '1' when state_mtp, + '1' when state_mtpa, '1' when state_fpir1 | state_fpir2, '1' when state_fpr1 | state_fpr2 | state_fpr3 | state_fpr4, '1' when state_trapa | state_trapf, @@ -614,7 +614,7 @@ begin addr_indirect when state_src7a, addr_indirect when state_src7b, rbus_data_m2 when state_mfpa, - rbus_data when state_mtp, + rbus_data when state_mtpa, addr_indirect when state_fpir1, addr_indirect when state_fpir2, addr_indirect when state_fpr1, @@ -690,7 +690,7 @@ begin '1' when state_fpw2 | state_fpw3 | state_fpw4, '1' when state_stststore, -- always in d-space, this is the second store - first is handled by store_alu_w '1' when state_mfpa, -- move from previous, stack push is to current d-space - '1' when state_mtp, -- move to previous, stack pop is from current d-space + '1' when state_mtpa, -- move to previous, stack pop is from current d-space '1' when state_trapa, -- d-mapping for loading the trap psw from kernel d-space '1' when state_trapb, -- to enable debugging output via addr - d-mapping should be 1 to 1, i-mapping likely is not '1' when state_trapc, -- stack is in d-space From a22b316ec667b2e2d7d1d1a8ee67d75958dda2ba Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 11 Nov 2015 13:06:56 +0000 Subject: [PATCH 56/61] Fixed AlanD core 65C02 bugs: D was being set in IRQ/BRK; sync was inferring a latch Change-Id: I62d1e98e519d1510d1c7bf01c432de9fa79e2f86 --- src/AlanD/R65Cx2.vhd | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/AlanD/R65Cx2.vhd b/src/AlanD/R65Cx2.vhd index 19efd8f..c63583a 100644 --- a/src/AlanD/R65Cx2.vhd +++ b/src/AlanD/R65Cx2.vhd @@ -657,7 +657,7 @@ processAluInput: process(clk, opcInfo, A, X, Y, T, S) temp := temp and T; end if; if opcInfo(opcInBrk) = '1' then - temp := temp and "11101111"; + temp := temp and "11100111"; -- also DMB clear D (bit 3) end if; if opcInfo(opcInClear) = '1' then temp := (others => '0'); @@ -1184,7 +1184,7 @@ calcT: process(clk) -- ----------------------------------------------------------------------- -- I flag interupt flag -- ----------------------------------------------------------------------- - process(clk) + process(clk, reset) begin if reset = '0' then I <= '1'; @@ -1199,7 +1199,7 @@ calcT: process(clk) -- ----------------------------------------------------------------------- -- D flag -- ----------------------------------------------------------------------- - process(clk) + process(clk, reset) begin if reset = '0' then D <= '0'; @@ -1499,16 +1499,20 @@ calcAddr: process(clk) myAddrDecrH <= myAddr(15 downto 8) - 1; addr <= myAddr; - calcsync: process(clk) - begin - - if enable = '1' then - case theCpuCycle is - when opcodeFetch => sync <= '1'; - when others => sync <= '0'; - end case; - end if; - end process; +-- DMB This looked plain broken and inferred a latch +-- +-- calcsync: process(clk) +-- begin +-- +-- if enable = '1' then +-- case theCpuCycle is +-- when opcodeFetch => sync <= '1'; +-- when others => sync <= '0'; +-- end case; +-- end if; +-- end process; + + sync <= '1' when theCpuCycle = opcodeFetch else '0'; sync_irq <= irqActive; From 7e3082ac90db4e0334646017d2fe61d814451332 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 11 Nov 2015 18:57:12 +0000 Subject: [PATCH 57/61] Atom Host: Implemented OSWORD 7F command 57 to support Beeb FLEX disk image Change-Id: I75b414b7927f1ea4f3426e48e6c40dca2ce2f7a7 --- host/atom/AtomHost.asm | 2 +- host/atom/osword7f.asm | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/host/atom/AtomHost.asm b/host/atom/AtomHost.asm index 585005a..8fd78c5 100644 --- a/host/atom/AtomHost.asm +++ b/host/atom/AtomHost.asm @@ -6,7 +6,7 @@ atmhdr = 1 ; Whether to include an ARM header (form AtoMMC2) - atommc = 0 ; Whether to include a local copy of AtomMMC2 load/save + atommc = 1 ; Whether to include a local copy of AtomMMC2 load/save debug_r1 = 0 ; Whether to include debugging of R1 commands debug_r2 = 0 ; Whether to include debugging of R2 commands diff --git a/host/atom/osword7f.asm b/host/atom/osword7f.asm index 8e3aea7..a629fb8 100644 --- a/host/atom/osword7f.asm +++ b/host/atom/osword7f.asm @@ -29,6 +29,8 @@ word7Fdebug: BEQ word7F_4B CMP #$53 ; read sector multi BEQ word7F_53 + CMP #$57 ; read sector multi (and deleted data) + BEQ word7F_53 PHA JSR STROUT From 80f96ff143b4ae6d50a6582b505ddf6d99f41807 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 11 Nov 2015 18:57:59 +0000 Subject: [PATCH 58/61] PDP11 Co Pro: Updated client ROM to 0.23 Change-Id: I3b19d6855a2bf80ee8ecf07e4014a2577d885398 --- src/ROM/tuberom_pdp11.vhd | 1796 ++++++++++++++++++------------------- 1 file changed, 898 insertions(+), 898 deletions(-) diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index d0066aa..7e8fff0 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -38,15 +38,15 @@ begin when x"008" => DATA <= x"3436"; when x"009" => DATA <= x"204b"; when x"00a" => DATA <= x"2e30"; - when x"00b" => DATA <= x"3232"; - when x"00c" => DATA <= x"0d61"; + when x"00b" => DATA <= x"3332"; + when x"00c" => DATA <= x"0d20"; when x"00d" => DATA <= x"000d"; when x"00e" => DATA <= x"15c6"; when x"00f" => DATA <= x"f530"; when x"010" => DATA <= x"17e6"; when x"011" => DATA <= x"f5fc"; when x"012" => DATA <= x"09f7"; - when x"013" => DATA <= x"0570"; + when x"013" => DATA <= x"0540"; when x"014" => DATA <= x"159f"; when x"015" => DATA <= x"f5f8"; when x"016" => DATA <= x"15c1"; @@ -54,10 +54,10 @@ begin when x"018" => DATA <= x"09f7"; when x"019" => DATA <= x"007e"; when x"01a" => DATA <= x"09f7"; - when x"01b" => DATA <= x"048c"; + when x"01b" => DATA <= x"045c"; when x"01c" => DATA <= x"00a1"; when x"01d" => DATA <= x"09f7"; - when x"01e" => DATA <= x"00be"; + when x"01e" => DATA <= x"00ea"; when x"01f" => DATA <= x"17c6"; when x"020" => DATA <= x"f5f6"; when x"021" => DATA <= x"15c1"; @@ -65,7 +65,7 @@ begin when x"023" => DATA <= x"09f7"; when x"024" => DATA <= x"0068"; when x"025" => DATA <= x"09f7"; - when x"026" => DATA <= x"021c"; + when x"026" => DATA <= x"0254"; when x"027" => DATA <= x"870c"; when x"028" => DATA <= x"17c0"; when x"029" => DATA <= x"f862"; @@ -78,11 +78,11 @@ begin when x"030" => DATA <= x"002a"; when x"031" => DATA <= x"f530"; when x"032" => DATA <= x"20a8"; - when x"033" => DATA <= x"ffff"; + when x"033" => DATA <= x"00ff"; when x"034" => DATA <= x"15c0"; when x"035" => DATA <= x"007e"; when x"036" => DATA <= x"09f7"; - when x"037" => DATA <= x"0176"; + when x"037" => DATA <= x"01ae"; when x"038" => DATA <= x"880f"; when x"039" => DATA <= x"4511"; when x"03a" => DATA <= x"6373"; @@ -93,11 +93,11 @@ begin when x"03f" => DATA <= x"1001"; when x"040" => DATA <= x"0a81"; when x"041" => DATA <= x"09f7"; - when x"042" => DATA <= x"0432"; + when x"042" => DATA <= x"0402"; when x"043" => DATA <= x"09f7"; when x"044" => DATA <= x"0028"; when x"045" => DATA <= x"09f7"; - when x"046" => DATA <= x"042a"; + when x"046" => DATA <= x"03fa"; when x"047" => DATA <= x"01d7"; when x"048" => DATA <= x"6000"; when x"049" => DATA <= x"903f"; @@ -115,7 +115,7 @@ begin when x"055" => DATA <= x"5001"; when x"056" => DATA <= x"0087"; when x"057" => DATA <= x"09f7"; - when x"058" => DATA <= x"0400"; + when x"058" => DATA <= x"03d0"; when x"059" => DATA <= x"9440"; when x"05a" => DATA <= x"02fc"; when x"05b" => DATA <= x"0087"; @@ -132,903 +132,903 @@ begin when x"066" => DATA <= x"f530"; when x"067" => DATA <= x"1166"; when x"068" => DATA <= x"17e6"; - when x"069" => DATA <= x"f5fc"; - when x"06a" => DATA <= x"09f7"; - when x"06b" => DATA <= x"0014"; - when x"06c" => DATA <= x"159f"; - when x"06d" => DATA <= x"f5fc"; - when x"06e" => DATA <= x"1386"; - when x"06f" => DATA <= x"1585"; - when x"070" => DATA <= x"1584"; - when x"071" => DATA <= x"1583"; - when x"072" => DATA <= x"1582"; - when x"073" => DATA <= x"1581"; - when x"074" => DATA <= x"0a00"; - when x"075" => DATA <= x"0087"; - when x"076" => DATA <= x"1001"; - when x"077" => DATA <= x"15c0"; - when x"078" => DATA <= x"0002"; - when x"079" => DATA <= x"09f7"; - when x"07a" => DATA <= x"0576"; - when x"07b" => DATA <= x"09f7"; - when x"07c" => DATA <= x"0542"; - when x"07d" => DATA <= x"00b1"; - when x"07e" => DATA <= x"09f7"; - when x"07f" => DATA <= x"038a"; - when x"080" => DATA <= x"80f4"; - when x"081" => DATA <= x"17c1"; - when x"082" => DATA <= x"f5f8"; - when x"083" => DATA <= x"15c5"; - when x"084" => DATA <= x"0000"; - when x"085" => DATA <= x"0c45"; - when x"086" => DATA <= x"1066"; - when x"087" => DATA <= x"9c42"; - when x"088" => DATA <= x"0007"; - when x"089" => DATA <= x"45c2"; - when x"08a" => DATA <= x"ff00"; - when x"08b" => DATA <= x"6081"; - when x"08c" => DATA <= x"8bd1"; - when x"08d" => DATA <= x"0226"; - when x"08e" => DATA <= x"a457"; - when x"08f" => DATA <= x"0028"; - when x"090" => DATA <= x"0223"; - when x"091" => DATA <= x"a457"; - when x"092" => DATA <= x"0043"; - when x"093" => DATA <= x"0220"; - when x"094" => DATA <= x"a457"; - when x"095" => DATA <= x"0029"; - when x"096" => DATA <= x"021d"; - when x"097" => DATA <= x"1381"; - when x"098" => DATA <= x"9c42"; - when x"099" => DATA <= x"0006"; - when x"09a" => DATA <= x"45c2"; - when x"09b" => DATA <= x"ffb0"; - when x"09c" => DATA <= x"2097"; - when x"09d" => DATA <= x"0047"; - when x"09e" => DATA <= x"0244"; - when x"09f" => DATA <= x"9c42"; - when x"0a0" => DATA <= x"0006"; - when x"0a1" => DATA <= x"35c2"; - when x"0a2" => DATA <= x"0020"; - when x"0a3" => DATA <= x"030e"; - when x"0a4" => DATA <= x"9c42"; - when x"0a5" => DATA <= x"0007"; - when x"0a6" => DATA <= x"45c2"; - when x"0a7" => DATA <= x"ff00"; - when x"0a8" => DATA <= x"6081"; - when x"0a9" => DATA <= x"0a81"; - when x"0aa" => DATA <= x"8bd1"; - when x"0ab" => DATA <= x"02fe"; - when x"0ac" => DATA <= x"65c1"; - when x"0ad" => DATA <= x"0004"; - when x"0ae" => DATA <= x"09f7"; - when x"0af" => DATA <= x"ff3c"; - when x"0b0" => DATA <= x"6581"; - when x"0b1" => DATA <= x"1066"; - when x"0b2" => DATA <= x"55c5"; - when x"0b3" => DATA <= x"0002"; - when x"0b4" => DATA <= x"1581"; - when x"0b5" => DATA <= x"45c1"; - when x"0b6" => DATA <= x"0001"; - when x"0b7" => DATA <= x"1242"; - when x"0b8" => DATA <= x"2097"; - when x"0b9" => DATA <= x"0105"; - when x"0ba" => DATA <= x"871a"; - when x"0bb" => DATA <= x"2097"; - when x"0bc" => DATA <= x"0109"; - when x"0bd" => DATA <= x"8617"; - when x"0be" => DATA <= x"0bd1"; - when x"0bf" => DATA <= x"1443"; - when x"0c0" => DATA <= x"1444"; - when x"0c1" => DATA <= x"6103"; - when x"0c2" => DATA <= x"1444"; - when x"0c3" => DATA <= x"17c2"; - when x"0c4" => DATA <= x"f5f4"; - when x"0c5" => DATA <= x"65c1"; - when x"0c6" => DATA <= x"0008"; - when x"0c7" => DATA <= x"0c83"; - when x"0c8" => DATA <= x"1452"; - when x"0c9" => DATA <= x"0ac3"; - when x"0ca" => DATA <= x"02fd"; - when x"0cb" => DATA <= x"0c84"; - when x"0cc" => DATA <= x"0303"; - when x"0cd" => DATA <= x"0a12"; - when x"0ce" => DATA <= x"0ac4"; - when x"0cf" => DATA <= x"02fd"; - when x"0d0" => DATA <= x"17c1"; - when x"0d1" => DATA <= x"f5f4"; - when x"0d2" => DATA <= x"0a26"; - when x"0d3" => DATA <= x"0a26"; - when x"0d4" => DATA <= x"0a26"; - when x"0d5" => DATA <= x"1066"; - when x"0d6" => DATA <= x"1140"; - when x"0d7" => DATA <= x"15c5"; - when x"0d8" => DATA <= x"0bbc"; - when x"0d9" => DATA <= x"0a04"; - when x"0da" => DATA <= x"0a03"; - when x"0db" => DATA <= x"0a02"; - when x"0dc" => DATA <= x"17c1"; - when x"0dd" => DATA <= x"f5f2"; - when x"0de" => DATA <= x"0c80"; - when x"0df" => DATA <= x"0302"; - when x"0e0" => DATA <= x"139f"; - when x"0e1" => DATA <= x"f5fc"; - when x"0e2" => DATA <= x"0087"; - when x"0e3" => DATA <= x"0c80"; - when x"0e4" => DATA <= x"860b"; - when x"0e5" => DATA <= x"09f7"; - when x"0e6" => DATA <= x"03fe"; - when x"0e7" => DATA <= x"880f"; - when x"0e8" => DATA <= x"4ef9"; - when x"0e9" => DATA <= x"746f"; - when x"0ea" => DATA <= x"5020"; - when x"0eb" => DATA <= x"5044"; - when x"0ec" => DATA <= x"3131"; - when x"0ed" => DATA <= x"6320"; - when x"0ee" => DATA <= x"646f"; - when x"0ef" => DATA <= x"0065"; - when x"0f0" => DATA <= x"0077"; - when x"0f1" => DATA <= x"fe5a"; - when x"0f2" => DATA <= x"018a"; - when x"0f3" => DATA <= x"1026"; - when x"0f4" => DATA <= x"8bc0"; - when x"0f5" => DATA <= x"810b"; - when x"0f6" => DATA <= x"15c0"; - when x"0f7" => DATA <= x"0004"; - when x"0f8" => DATA <= x"09f7"; - when x"0f9" => DATA <= x"0472"; - when x"0fa" => DATA <= x"1380"; - when x"0fb" => DATA <= x"09f7"; - when x"0fc" => DATA <= x"0472"; - when x"0fd" => DATA <= x"09f7"; - when x"0fe" => DATA <= x"028c"; - when x"0ff" => DATA <= x"1001"; - when x"100" => DATA <= x"0132"; - when x"101" => DATA <= x"2017"; - when x"102" => DATA <= x"0082"; - when x"103" => DATA <= x"8704"; - when x"104" => DATA <= x"0325"; - when x"105" => DATA <= x"2017"; - when x"106" => DATA <= x"0085"; - when x"107" => DATA <= x"8724"; - when x"108" => DATA <= x"15c0"; - when x"109" => DATA <= x"0006"; - when x"10a" => DATA <= x"09f7"; - when x"10b" => DATA <= x"044e"; - when x"10c" => DATA <= x"1080"; - when x"10d" => DATA <= x"09f7"; - when x"10e" => DATA <= x"044e"; - when x"10f" => DATA <= x"1580"; - when x"110" => DATA <= x"09f7"; - when x"111" => DATA <= x"0448"; - when x"112" => DATA <= x"2017"; - when x"113" => DATA <= x"009d"; - when x"114" => DATA <= x"031f"; - when x"115" => DATA <= x"2017"; - when x"116" => DATA <= x"008e"; - when x"117" => DATA <= x"03da"; - when x"118" => DATA <= x"1026"; + when x"069" => DATA <= x"f5f6"; + when x"06a" => DATA <= x"17e6"; + when x"06b" => DATA <= x"f5fc"; + when x"06c" => DATA <= x"09f7"; + when x"06d" => DATA <= x"0018"; + when x"06e" => DATA <= x"159f"; + when x"06f" => DATA <= x"f5fc"; + when x"070" => DATA <= x"159f"; + when x"071" => DATA <= x"f5f6"; + when x"072" => DATA <= x"1386"; + when x"073" => DATA <= x"1585"; + when x"074" => DATA <= x"1584"; + when x"075" => DATA <= x"1583"; + when x"076" => DATA <= x"1582"; + when x"077" => DATA <= x"1581"; + when x"078" => DATA <= x"0a00"; + when x"079" => DATA <= x"0087"; + when x"07a" => DATA <= x"9401"; + when x"07b" => DATA <= x"a057"; + when x"07c" => DATA <= x"0020"; + when x"07d" => DATA <= x"03fc"; + when x"07e" => DATA <= x"a057"; + when x"07f" => DATA <= x"002a"; + when x"080" => DATA <= x"03f9"; + when x"081" => DATA <= x"0ac0"; + when x"082" => DATA <= x"1001"; + when x"083" => DATA <= x"a417"; + when x"084" => DATA <= x"0021"; + when x"085" => DATA <= x"86fd"; + when x"086" => DATA <= x"0ac0"; + when x"087" => DATA <= x"a417"; + when x"088" => DATA <= x"0020"; + when x"089" => DATA <= x"03fd"; + when x"08a" => DATA <= x"0ac0"; + when x"08b" => DATA <= x"1037"; + when x"08c" => DATA <= x"fcd8"; + when x"08d" => DATA <= x"15c0"; + when x"08e" => DATA <= x"0002"; + when x"08f" => DATA <= x"09f7"; + when x"090" => DATA <= x"051a"; + when x"091" => DATA <= x"09f7"; + when x"092" => DATA <= x"04e6"; + when x"093" => DATA <= x"00b1"; + when x"094" => DATA <= x"09f7"; + when x"095" => DATA <= x"0332"; + when x"096" => DATA <= x"80e2"; + when x"097" => DATA <= x"17c1"; + when x"098" => DATA <= x"f5f8"; + when x"099" => DATA <= x"15c5"; + when x"09a" => DATA <= x"0000"; + when x"09b" => DATA <= x"0c45"; + when x"09c" => DATA <= x"1066"; + when x"09d" => DATA <= x"9c42"; + when x"09e" => DATA <= x"0007"; + when x"09f" => DATA <= x"45c2"; + when x"0a0" => DATA <= x"ff00"; + when x"0a1" => DATA <= x"6081"; + when x"0a2" => DATA <= x"8bd1"; + when x"0a3" => DATA <= x"0226"; + when x"0a4" => DATA <= x"a457"; + when x"0a5" => DATA <= x"0028"; + when x"0a6" => DATA <= x"0223"; + when x"0a7" => DATA <= x"a457"; + when x"0a8" => DATA <= x"0043"; + when x"0a9" => DATA <= x"0220"; + when x"0aa" => DATA <= x"a457"; + when x"0ab" => DATA <= x"0029"; + when x"0ac" => DATA <= x"021d"; + when x"0ad" => DATA <= x"1381"; + when x"0ae" => DATA <= x"9c42"; + when x"0af" => DATA <= x"0006"; + when x"0b0" => DATA <= x"45c2"; + when x"0b1" => DATA <= x"ffb0"; + when x"0b2" => DATA <= x"2097"; + when x"0b3" => DATA <= x"0047"; + when x"0b4" => DATA <= x"0247"; + when x"0b5" => DATA <= x"9c42"; + when x"0b6" => DATA <= x"0006"; + when x"0b7" => DATA <= x"35c2"; + when x"0b8" => DATA <= x"0020"; + when x"0b9" => DATA <= x"030e"; + when x"0ba" => DATA <= x"9c42"; + when x"0bb" => DATA <= x"0007"; + when x"0bc" => DATA <= x"45c2"; + when x"0bd" => DATA <= x"ff00"; + when x"0be" => DATA <= x"6081"; + when x"0bf" => DATA <= x"0a81"; + when x"0c0" => DATA <= x"8bd1"; + when x"0c1" => DATA <= x"02fe"; + when x"0c2" => DATA <= x"65c1"; + when x"0c3" => DATA <= x"0004"; + when x"0c4" => DATA <= x"09f7"; + when x"0c5" => DATA <= x"ff10"; + when x"0c6" => DATA <= x"6581"; + when x"0c7" => DATA <= x"1066"; + when x"0c8" => DATA <= x"55c5"; + when x"0c9" => DATA <= x"0002"; + when x"0ca" => DATA <= x"1581"; + when x"0cb" => DATA <= x"45c1"; + when x"0cc" => DATA <= x"0001"; + when x"0cd" => DATA <= x"1242"; + when x"0ce" => DATA <= x"2097"; + when x"0cf" => DATA <= x"0105"; + when x"0d0" => DATA <= x"871a"; + when x"0d1" => DATA <= x"2097"; + when x"0d2" => DATA <= x"0109"; + when x"0d3" => DATA <= x"8617"; + when x"0d4" => DATA <= x"0bd1"; + when x"0d5" => DATA <= x"1443"; + when x"0d6" => DATA <= x"1444"; + when x"0d7" => DATA <= x"6103"; + when x"0d8" => DATA <= x"1444"; + when x"0d9" => DATA <= x"17c2"; + when x"0da" => DATA <= x"f5f4"; + when x"0db" => DATA <= x"65c1"; + when x"0dc" => DATA <= x"0008"; + when x"0dd" => DATA <= x"0c83"; + when x"0de" => DATA <= x"1452"; + when x"0df" => DATA <= x"0ac3"; + when x"0e0" => DATA <= x"02fd"; + when x"0e1" => DATA <= x"0c84"; + when x"0e2" => DATA <= x"0303"; + when x"0e3" => DATA <= x"0a12"; + when x"0e4" => DATA <= x"0ac4"; + when x"0e5" => DATA <= x"02fd"; + when x"0e6" => DATA <= x"17c1"; + when x"0e7" => DATA <= x"f5f4"; + when x"0e8" => DATA <= x"0a26"; + when x"0e9" => DATA <= x"0a26"; + when x"0ea" => DATA <= x"0a26"; + when x"0eb" => DATA <= x"1066"; + when x"0ec" => DATA <= x"1140"; + when x"0ed" => DATA <= x"15c5"; + when x"0ee" => DATA <= x"0bbc"; + when x"0ef" => DATA <= x"0a04"; + when x"0f0" => DATA <= x"0a03"; + when x"0f1" => DATA <= x"0a02"; + when x"0f2" => DATA <= x"17c1"; + when x"0f3" => DATA <= x"f5f2"; + when x"0f4" => DATA <= x"0c80"; + when x"0f5" => DATA <= x"0305"; + when x"0f6" => DATA <= x"139f"; + when x"0f7" => DATA <= x"f5fc"; + when x"0f8" => DATA <= x"8002"; + when x"0f9" => DATA <= x"139f"; + when x"0fa" => DATA <= x"f5f6"; + when x"0fb" => DATA <= x"0087"; + when x"0fc" => DATA <= x"0c85"; + when x"0fd" => DATA <= x"860b"; + when x"0fe" => DATA <= x"09f7"; + when x"0ff" => DATA <= x"039c"; + when x"100" => DATA <= x"880f"; + when x"101" => DATA <= x"4ef9"; + when x"102" => DATA <= x"746f"; + when x"103" => DATA <= x"5020"; + when x"104" => DATA <= x"5044"; + when x"105" => DATA <= x"3131"; + when x"106" => DATA <= x"6320"; + when x"107" => DATA <= x"646f"; + when x"108" => DATA <= x"0065"; + when x"109" => DATA <= x"0077"; + when x"10a" => DATA <= x"fe28"; + when x"10b" => DATA <= x"15f7"; + when x"10c" => DATA <= x"f804"; + when x"10d" => DATA <= x"fbd6"; + when x"10e" => DATA <= x"0184"; + when x"10f" => DATA <= x"1026"; + when x"110" => DATA <= x"8bc0"; + when x"111" => DATA <= x"810b"; + when x"112" => DATA <= x"15c0"; + when x"113" => DATA <= x"0004"; + when x"114" => DATA <= x"09f7"; + when x"115" => DATA <= x"040a"; + when x"116" => DATA <= x"1380"; + when x"117" => DATA <= x"09f7"; + when x"118" => DATA <= x"040a"; when x"119" => DATA <= x"09f7"; - when x"11a" => DATA <= x"0254"; - when x"11b" => DATA <= x"65c0"; - when x"11c" => DATA <= x"ff80"; - when x"11d" => DATA <= x"09f7"; - when x"11e" => DATA <= x"024c"; - when x"11f" => DATA <= x"45c0"; - when x"120" => DATA <= x"ff00"; - when x"121" => DATA <= x"1002"; - when x"122" => DATA <= x"00c0"; - when x"123" => DATA <= x"1001"; - when x"124" => DATA <= x"09f7"; - when x"125" => DATA <= x"023e"; - when x"126" => DATA <= x"45c0"; - when x"127" => DATA <= x"ff00"; - when x"128" => DATA <= x"5001"; - when x"129" => DATA <= x"0109"; - when x"12a" => DATA <= x"15c0"; - when x"12b" => DATA <= x"0086"; - when x"12c" => DATA <= x"0cc0"; - when x"12d" => DATA <= x"1c01"; - when x"12e" => DATA <= x"f4ee"; - when x"12f" => DATA <= x"1042"; - when x"130" => DATA <= x"00c2"; - when x"131" => DATA <= x"45c2"; - when x"132" => DATA <= x"ff00"; - when x"133" => DATA <= x"1580"; - when x"134" => DATA <= x"0087"; - when x"135" => DATA <= x"0bc0"; - when x"136" => DATA <= x"034d"; - when x"137" => DATA <= x"10e6"; - when x"138" => DATA <= x"10a6"; - when x"139" => DATA <= x"1026"; - when x"13a" => DATA <= x"15c0"; - when x"13b" => DATA <= x"0008"; - when x"13c" => DATA <= x"09f7"; - when x"13d" => DATA <= x"03f0"; - when x"13e" => DATA <= x"1380"; - when x"13f" => DATA <= x"09f7"; - when x"140" => DATA <= x"03ea"; - when x"141" => DATA <= x"8bc0"; - when x"142" => DATA <= x"8003"; - when x"143" => DATA <= x"9442"; - when x"144" => DATA <= x"9243"; - when x"145" => DATA <= x"010c"; - when x"146" => DATA <= x"15c2"; - when x"147" => DATA <= x"0010"; - when x"148" => DATA <= x"15c3"; - when x"149" => DATA <= x"0010"; - when x"14a" => DATA <= x"2017"; - when x"14b" => DATA <= x"0015"; - when x"14c" => DATA <= x"8605"; - when x"14d" => DATA <= x"6000"; - when x"14e" => DATA <= x"65c0"; - when x"14f" => DATA <= x"fade"; - when x"150" => DATA <= x"9402"; - when x"151" => DATA <= x"9203"; - when x"152" => DATA <= x"1080"; - when x"153" => DATA <= x"09f7"; - when x"154" => DATA <= x"03c2"; - when x"155" => DATA <= x"6081"; - when x"156" => DATA <= x"0ac2"; - when x"157" => DATA <= x"2097"; - when x"158" => DATA <= x"0080"; - when x"159" => DATA <= x"8605"; - when x"15a" => DATA <= x"9840"; + when x"11a" => DATA <= x"0228"; + when x"11b" => DATA <= x"1001"; + when x"11c" => DATA <= x"0132"; + when x"11d" => DATA <= x"2017"; + when x"11e" => DATA <= x"0082"; + when x"11f" => DATA <= x"8704"; + when x"120" => DATA <= x"0325"; + when x"121" => DATA <= x"2017"; + when x"122" => DATA <= x"0085"; + when x"123" => DATA <= x"8724"; + when x"124" => DATA <= x"15c0"; + when x"125" => DATA <= x"0006"; + when x"126" => DATA <= x"09f7"; + when x"127" => DATA <= x"03e6"; + when x"128" => DATA <= x"1080"; + when x"129" => DATA <= x"09f7"; + when x"12a" => DATA <= x"03e6"; + when x"12b" => DATA <= x"1580"; + when x"12c" => DATA <= x"09f7"; + when x"12d" => DATA <= x"03e0"; + when x"12e" => DATA <= x"2017"; + when x"12f" => DATA <= x"009d"; + when x"130" => DATA <= x"031f"; + when x"131" => DATA <= x"2017"; + when x"132" => DATA <= x"008e"; + when x"133" => DATA <= x"03d7"; + when x"134" => DATA <= x"1026"; + when x"135" => DATA <= x"09f7"; + when x"136" => DATA <= x"01f0"; + when x"137" => DATA <= x"65c0"; + when x"138" => DATA <= x"ff80"; + when x"139" => DATA <= x"09f7"; + when x"13a" => DATA <= x"01e8"; + when x"13b" => DATA <= x"45c0"; + when x"13c" => DATA <= x"ff00"; + when x"13d" => DATA <= x"1002"; + when x"13e" => DATA <= x"00c0"; + when x"13f" => DATA <= x"1001"; + when x"140" => DATA <= x"09f7"; + when x"141" => DATA <= x"01da"; + when x"142" => DATA <= x"45c0"; + when x"143" => DATA <= x"ff00"; + when x"144" => DATA <= x"5001"; + when x"145" => DATA <= x"0109"; + when x"146" => DATA <= x"15c0"; + when x"147" => DATA <= x"0086"; + when x"148" => DATA <= x"0cc0"; + when x"149" => DATA <= x"1c01"; + when x"14a" => DATA <= x"f4ee"; + when x"14b" => DATA <= x"1042"; + when x"14c" => DATA <= x"00c2"; + when x"14d" => DATA <= x"45c2"; + when x"14e" => DATA <= x"ff00"; + when x"14f" => DATA <= x"1580"; + when x"150" => DATA <= x"0087"; + when x"151" => DATA <= x"0bc0"; + when x"152" => DATA <= x"034d"; + when x"153" => DATA <= x"10e6"; + when x"154" => DATA <= x"10a6"; + when x"155" => DATA <= x"1026"; + when x"156" => DATA <= x"15c0"; + when x"157" => DATA <= x"0008"; + when x"158" => DATA <= x"09f7"; + when x"159" => DATA <= x"0388"; + when x"15a" => DATA <= x"1380"; when x"15b" => DATA <= x"09f7"; - when x"15c" => DATA <= x"03b2"; - when x"15d" => DATA <= x"0ac2"; - when x"15e" => DATA <= x"80fb"; - when x"15f" => DATA <= x"10c0"; - when x"160" => DATA <= x"09f7"; - when x"161" => DATA <= x"03a8"; - when x"162" => DATA <= x"60c1"; - when x"163" => DATA <= x"0ac3"; - when x"164" => DATA <= x"20d7"; - when x"165" => DATA <= x"0080"; - when x"166" => DATA <= x"8605"; - when x"167" => DATA <= x"09f7"; - when x"168" => DATA <= x"01b8"; - when x"169" => DATA <= x"9021"; - when x"16a" => DATA <= x"0ac3"; - when x"16b" => DATA <= x"80fb"; - when x"16c" => DATA <= x"1580"; - when x"16d" => DATA <= x"1582"; - when x"16e" => DATA <= x"1583"; - when x"16f" => DATA <= x"0087"; - when x"170" => DATA <= x"0500"; - when x"171" => DATA <= x"0005"; - when x"172" => DATA <= x"0500"; - when x"173" => DATA <= x"0005"; - when x"174" => DATA <= x"0504"; - when x"175" => DATA <= x"0005"; - when x"176" => DATA <= x"0008"; - when x"177" => DATA <= x"000e"; - when x"178" => DATA <= x"0504"; - when x"179" => DATA <= x"0901"; - when x"17a" => DATA <= x"0501"; - when x"17b" => DATA <= x"0005"; - when x"17c" => DATA <= x"0800"; - when x"17d" => DATA <= x"1910"; - when x"17e" => DATA <= x"0020"; - when x"17f" => DATA <= x"0110"; - when x"180" => DATA <= x"0d0d"; - when x"181" => DATA <= x"8000"; - when x"182" => DATA <= x"0808"; - when x"183" => DATA <= x"8080"; - when x"184" => DATA <= x"15c0"; - when x"185" => DATA <= x"000a"; - when x"186" => DATA <= x"09f7"; - when x"187" => DATA <= x"035c"; - when x"188" => DATA <= x"65c1"; - when x"189" => DATA <= x"0002"; - when x"18a" => DATA <= x"15c2"; - when x"18b" => DATA <= x"0003"; - when x"18c" => DATA <= x"09f7"; - when x"18d" => DATA <= x"032e"; - when x"18e" => DATA <= x"15c0"; - when x"18f" => DATA <= x"0007"; - when x"190" => DATA <= x"09f7"; - when x"191" => DATA <= x"0348"; - when x"192" => DATA <= x"0a00"; - when x"193" => DATA <= x"09f7"; - when x"194" => DATA <= x"0342"; - when x"195" => DATA <= x"09f7"; - when x"196" => DATA <= x"015c"; - when x"197" => DATA <= x"65c0"; - when x"198" => DATA <= x"ff80"; - when x"199" => DATA <= x"870b"; - when x"19a" => DATA <= x"09f7"; - when x"19b" => DATA <= x"fd60"; - when x"19c" => DATA <= x"0a02"; - when x"19d" => DATA <= x"09f7"; - when x"19e" => DATA <= x"014c"; - when x"19f" => DATA <= x"9011"; - when x"1a0" => DATA <= x"0a82"; - when x"1a1" => DATA <= x"2017"; - when x"1a2" => DATA <= x"000d"; - when x"1a3" => DATA <= x"02f9"; - when x"1a4" => DATA <= x"0ac2"; - when x"1a5" => DATA <= x"0087"; - when x"1a6" => DATA <= x"10a6"; - when x"1a7" => DATA <= x"1066"; - when x"1a8" => DATA <= x"1026"; - when x"1a9" => DATA <= x"15c0"; - when x"1aa" => DATA <= x"000c"; - when x"1ab" => DATA <= x"09f7"; - when x"1ac" => DATA <= x"030c"; - when x"1ad" => DATA <= x"1081"; - when x"1ae" => DATA <= x"15c2"; - when x"1af" => DATA <= x"0004"; - when x"1b0" => DATA <= x"09f7"; - when x"1b1" => DATA <= x"02e6"; - when x"1b2" => DATA <= x"1580"; - when x"1b3" => DATA <= x"09f7"; - when x"1b4" => DATA <= x"0302"; - when x"1b5" => DATA <= x"09f7"; - when x"1b6" => DATA <= x"011c"; - when x"1b7" => DATA <= x"1026"; - when x"1b8" => DATA <= x"15c2"; - when x"1b9" => DATA <= x"0004"; - when x"1ba" => DATA <= x"0133"; - when x"1bb" => DATA <= x"1026"; - when x"1bc" => DATA <= x"15c0"; - when x"1bd" => DATA <= x"0012"; - when x"1be" => DATA <= x"09f7"; - when x"1bf" => DATA <= x"02ec"; - when x"1c0" => DATA <= x"1580"; - when x"1c1" => DATA <= x"09f7"; - when x"1c2" => DATA <= x"02e6"; - when x"1c3" => DATA <= x"0bc0"; - when x"1c4" => DATA <= x"0206"; - when x"1c5" => DATA <= x"09f7"; - when x"1c6" => DATA <= x"02dc"; + when x"15c" => DATA <= x"0382"; + when x"15d" => DATA <= x"8bc0"; + when x"15e" => DATA <= x"8003"; + when x"15f" => DATA <= x"9442"; + when x"160" => DATA <= x"9243"; + when x"161" => DATA <= x"010c"; + when x"162" => DATA <= x"15c2"; + when x"163" => DATA <= x"0010"; + when x"164" => DATA <= x"15c3"; + when x"165" => DATA <= x"0010"; + when x"166" => DATA <= x"2017"; + when x"167" => DATA <= x"0015"; + when x"168" => DATA <= x"8605"; + when x"169" => DATA <= x"6000"; + when x"16a" => DATA <= x"65c0"; + when x"16b" => DATA <= x"fb16"; + when x"16c" => DATA <= x"9402"; + when x"16d" => DATA <= x"9203"; + when x"16e" => DATA <= x"1080"; + when x"16f" => DATA <= x"09f7"; + when x"170" => DATA <= x"035a"; + when x"171" => DATA <= x"6081"; + when x"172" => DATA <= x"0ac2"; + when x"173" => DATA <= x"2097"; + when x"174" => DATA <= x"0080"; + when x"175" => DATA <= x"8605"; + when x"176" => DATA <= x"9840"; + when x"177" => DATA <= x"09f7"; + when x"178" => DATA <= x"034a"; + when x"179" => DATA <= x"0ac2"; + when x"17a" => DATA <= x"80fb"; + when x"17b" => DATA <= x"10c0"; + when x"17c" => DATA <= x"09f7"; + when x"17d" => DATA <= x"0340"; + when x"17e" => DATA <= x"60c1"; + when x"17f" => DATA <= x"0ac3"; + when x"180" => DATA <= x"20d7"; + when x"181" => DATA <= x"0080"; + when x"182" => DATA <= x"8605"; + when x"183" => DATA <= x"09f7"; + when x"184" => DATA <= x"0154"; + when x"185" => DATA <= x"9021"; + when x"186" => DATA <= x"0ac3"; + when x"187" => DATA <= x"80fb"; + when x"188" => DATA <= x"1580"; + when x"189" => DATA <= x"1582"; + when x"18a" => DATA <= x"1583"; + when x"18b" => DATA <= x"0087"; + when x"18c" => DATA <= x"0500"; + when x"18d" => DATA <= x"0005"; + when x"18e" => DATA <= x"0500"; + when x"18f" => DATA <= x"0005"; + when x"190" => DATA <= x"0504"; + when x"191" => DATA <= x"0005"; + when x"192" => DATA <= x"0008"; + when x"193" => DATA <= x"000e"; + when x"194" => DATA <= x"0504"; + when x"195" => DATA <= x"0901"; + when x"196" => DATA <= x"0501"; + when x"197" => DATA <= x"0005"; + when x"198" => DATA <= x"0800"; + when x"199" => DATA <= x"1910"; + when x"19a" => DATA <= x"0020"; + when x"19b" => DATA <= x"0110"; + when x"19c" => DATA <= x"0d0d"; + when x"19d" => DATA <= x"8000"; + when x"19e" => DATA <= x"0808"; + when x"19f" => DATA <= x"8080"; + when x"1a0" => DATA <= x"15c0"; + when x"1a1" => DATA <= x"000a"; + when x"1a2" => DATA <= x"09f7"; + when x"1a3" => DATA <= x"02f4"; + when x"1a4" => DATA <= x"65c1"; + when x"1a5" => DATA <= x"0002"; + when x"1a6" => DATA <= x"15c2"; + when x"1a7" => DATA <= x"0003"; + when x"1a8" => DATA <= x"09f7"; + when x"1a9" => DATA <= x"02c6"; + when x"1aa" => DATA <= x"15c0"; + when x"1ab" => DATA <= x"0007"; + when x"1ac" => DATA <= x"09f7"; + when x"1ad" => DATA <= x"02e0"; + when x"1ae" => DATA <= x"0a00"; + when x"1af" => DATA <= x"09f7"; + when x"1b0" => DATA <= x"02da"; + when x"1b1" => DATA <= x"09f7"; + when x"1b2" => DATA <= x"00f8"; + when x"1b3" => DATA <= x"65c0"; + when x"1b4" => DATA <= x"ff80"; + when x"1b5" => DATA <= x"870b"; + when x"1b6" => DATA <= x"09f7"; + when x"1b7" => DATA <= x"fd28"; + when x"1b8" => DATA <= x"0a02"; + when x"1b9" => DATA <= x"09f7"; + when x"1ba" => DATA <= x"00e8"; + when x"1bb" => DATA <= x"9011"; + when x"1bc" => DATA <= x"0a82"; + when x"1bd" => DATA <= x"2017"; + when x"1be" => DATA <= x"000d"; + when x"1bf" => DATA <= x"02f9"; + when x"1c0" => DATA <= x"0ac2"; + when x"1c1" => DATA <= x"0087"; + when x"1c2" => DATA <= x"10a6"; + when x"1c3" => DATA <= x"1066"; + when x"1c4" => DATA <= x"1026"; + when x"1c5" => DATA <= x"15c0"; + when x"1c6" => DATA <= x"000c"; when x"1c7" => DATA <= x"09f7"; - when x"1c8" => DATA <= x"00f8"; - when x"1c9" => DATA <= x"0a00"; - when x"1ca" => DATA <= x"0087"; - when x"1cb" => DATA <= x"1066"; + when x"1c8" => DATA <= x"02a4"; + when x"1c9" => DATA <= x"1081"; + when x"1ca" => DATA <= x"15c2"; + when x"1cb" => DATA <= x"0004"; when x"1cc" => DATA <= x"09f7"; - when x"1cd" => DATA <= x"02a0"; - when x"1ce" => DATA <= x"09f7"; - when x"1cf" => DATA <= x"00ea"; - when x"1d0" => DATA <= x"1581"; - when x"1d1" => DATA <= x"0087"; - when x"1d2" => DATA <= x"10a6"; - when x"1d3" => DATA <= x"1066"; - when x"1d4" => DATA <= x"1026"; - when x"1d5" => DATA <= x"15c0"; - when x"1d6" => DATA <= x"0014"; - when x"1d7" => DATA <= x"09f7"; - when x"1d8" => DATA <= x"02ba"; - when x"1d9" => DATA <= x"65c1"; - when x"1da" => DATA <= x"0002"; - when x"1db" => DATA <= x"15c2"; - when x"1dc" => DATA <= x"0010"; + when x"1cd" => DATA <= x"027e"; + when x"1ce" => DATA <= x"1580"; + when x"1cf" => DATA <= x"09f7"; + when x"1d0" => DATA <= x"029a"; + when x"1d1" => DATA <= x"09f7"; + when x"1d2" => DATA <= x"00b8"; + when x"1d3" => DATA <= x"1026"; + when x"1d4" => DATA <= x"15c2"; + when x"1d5" => DATA <= x"0004"; + when x"1d6" => DATA <= x"0133"; + when x"1d7" => DATA <= x"1026"; + when x"1d8" => DATA <= x"15c0"; + when x"1d9" => DATA <= x"0012"; + when x"1da" => DATA <= x"09f7"; + when x"1db" => DATA <= x"0284"; + when x"1dc" => DATA <= x"1580"; when x"1dd" => DATA <= x"09f7"; - when x"1de" => DATA <= x"028c"; - when x"1df" => DATA <= x"09f7"; - when x"1e0" => DATA <= x"fcd6"; + when x"1de" => DATA <= x"027e"; + when x"1df" => DATA <= x"0bc0"; + when x"1e0" => DATA <= x"0206"; when x"1e1" => DATA <= x"09f7"; - when x"1e2" => DATA <= x"0276"; - when x"1e3" => DATA <= x"1580"; - when x"1e4" => DATA <= x"09f7"; - when x"1e5" => DATA <= x"02a0"; - when x"1e6" => DATA <= x"09f7"; - when x"1e7" => DATA <= x"00ba"; - when x"1e8" => DATA <= x"1381"; - when x"1e9" => DATA <= x"1026"; - when x"1ea" => DATA <= x"65c1"; - when x"1eb" => DATA <= x"0002"; - when x"1ec" => DATA <= x"15c2"; - when x"1ed" => DATA <= x"0010"; - when x"1ee" => DATA <= x"09f7"; - when x"1ef" => DATA <= x"0278"; - when x"1f0" => DATA <= x"1580"; - when x"1f1" => DATA <= x"1581"; - when x"1f2" => DATA <= x"1582"; - when x"1f3" => DATA <= x"0087"; - when x"1f4" => DATA <= x"8bc9"; - when x"1f5" => DATA <= x"0205"; - when x"1f6" => DATA <= x"0bc0"; - when x"1f7" => DATA <= x"0303"; - when x"1f8" => DATA <= x"2017"; - when x"1f9" => DATA <= x"0005"; - when x"1fa" => DATA <= x"8713"; - when x"1fb" => DATA <= x"10a6"; - when x"1fc" => DATA <= x"1026"; - when x"1fd" => DATA <= x"15c0"; - when x"1fe" => DATA <= x"0016"; - when x"1ff" => DATA <= x"09f7"; - when x"200" => DATA <= x"026a"; - when x"201" => DATA <= x"15c2"; - when x"202" => DATA <= x"000d"; - when x"203" => DATA <= x"09f7"; - when x"204" => DATA <= x"0240"; - when x"205" => DATA <= x"1580"; - when x"206" => DATA <= x"09f7"; - when x"207" => DATA <= x"025c"; + when x"1e2" => DATA <= x"0274"; + when x"1e3" => DATA <= x"09f7"; + when x"1e4" => DATA <= x"0094"; + when x"1e5" => DATA <= x"0a00"; + when x"1e6" => DATA <= x"0087"; + when x"1e7" => DATA <= x"1066"; + when x"1e8" => DATA <= x"09f7"; + when x"1e9" => DATA <= x"0238"; + when x"1ea" => DATA <= x"09f7"; + when x"1eb" => DATA <= x"0086"; + when x"1ec" => DATA <= x"1581"; + when x"1ed" => DATA <= x"0087"; + when x"1ee" => DATA <= x"10a6"; + when x"1ef" => DATA <= x"1066"; + when x"1f0" => DATA <= x"1026"; + when x"1f1" => DATA <= x"15c0"; + when x"1f2" => DATA <= x"0014"; + when x"1f3" => DATA <= x"09f7"; + when x"1f4" => DATA <= x"0252"; + when x"1f5" => DATA <= x"65c1"; + when x"1f6" => DATA <= x"0002"; + when x"1f7" => DATA <= x"15c2"; + when x"1f8" => DATA <= x"0010"; + when x"1f9" => DATA <= x"09f7"; + when x"1fa" => DATA <= x"0224"; + when x"1fb" => DATA <= x"09f7"; + when x"1fc" => DATA <= x"fc9e"; + when x"1fd" => DATA <= x"09f7"; + when x"1fe" => DATA <= x"020e"; + when x"1ff" => DATA <= x"1580"; + when x"200" => DATA <= x"09f7"; + when x"201" => DATA <= x"0238"; + when x"202" => DATA <= x"09f7"; + when x"203" => DATA <= x"0056"; + when x"204" => DATA <= x"1381"; + when x"205" => DATA <= x"1026"; + when x"206" => DATA <= x"65c1"; + when x"207" => DATA <= x"0002"; when x"208" => DATA <= x"15c2"; - when x"209" => DATA <= x"000d"; + when x"209" => DATA <= x"0010"; when x"20a" => DATA <= x"09f7"; - when x"20b" => DATA <= x"0240"; - when x"20c" => DATA <= x"1582"; - when x"20d" => DATA <= x"0133"; - when x"20e" => DATA <= x"10a6"; - when x"20f" => DATA <= x"1026"; - when x"210" => DATA <= x"1066"; - when x"211" => DATA <= x"0a81"; - when x"212" => DATA <= x"09f7"; - when x"213" => DATA <= x"fc74"; - when x"214" => DATA <= x"1042"; - when x"215" => DATA <= x"1581"; - when x"216" => DATA <= x"2397"; - when x"217" => DATA <= x"0003"; - when x"218" => DATA <= x"8604"; - when x"219" => DATA <= x"9480"; - when x"21a" => DATA <= x"09f7"; - when x"21b" => DATA <= x"008c"; - when x"21c" => DATA <= x"0104"; - when x"21d" => DATA <= x"09f7"; - when x"21e" => DATA <= x"003e"; - when x"21f" => DATA <= x"870d"; - when x"220" => DATA <= x"9012"; - when x"221" => DATA <= x"8bf1"; - when x"222" => DATA <= x"0005"; - when x"223" => DATA <= x"0202"; - when x"224" => DATA <= x"8af1"; - when x"225" => DATA <= x"0006"; - when x"226" => DATA <= x"8af1"; - when x"227" => DATA <= x"0005"; - when x"228" => DATA <= x"02ed"; - when x"229" => DATA <= x"8bf1"; - when x"22a" => DATA <= x"0006"; - when x"22b" => DATA <= x"02ea"; - when x"22c" => DATA <= x"00a1"; - when x"22d" => DATA <= x"90b1"; - when x"22e" => DATA <= x"0001"; - when x"22f" => DATA <= x"00c2"; - when x"230" => DATA <= x"90b1"; - when x"231" => DATA <= x"0002"; - when x"232" => DATA <= x"0bd6"; - when x"233" => DATA <= x"1582"; - when x"234" => DATA <= x"15c0"; - when x"235" => DATA <= x"0000"; - when x"236" => DATA <= x"0087"; - when x"237" => DATA <= x"0bc1"; - when x"238" => DATA <= x"0305"; - when x"239" => DATA <= x"15c0"; - when x"23a" => DATA <= x"000e"; + when x"20b" => DATA <= x"0210"; + when x"20c" => DATA <= x"1580"; + when x"20d" => DATA <= x"1581"; + when x"20e" => DATA <= x"1582"; + when x"20f" => DATA <= x"0087"; + when x"210" => DATA <= x"10a6"; + when x"211" => DATA <= x"1026"; + when x"212" => DATA <= x"15c0"; + when x"213" => DATA <= x"0016"; + when x"214" => DATA <= x"09f7"; + when x"215" => DATA <= x"0210"; + when x"216" => DATA <= x"15c2"; + when x"217" => DATA <= x"000d"; + when x"218" => DATA <= x"09f7"; + when x"219" => DATA <= x"01e6"; + when x"21a" => DATA <= x"1580"; + when x"21b" => DATA <= x"09f7"; + when x"21c" => DATA <= x"0202"; + when x"21d" => DATA <= x"15c2"; + when x"21e" => DATA <= x"000d"; + when x"21f" => DATA <= x"09f7"; + when x"220" => DATA <= x"01e6"; + when x"221" => DATA <= x"1582"; + when x"222" => DATA <= x"0108"; + when x"223" => DATA <= x"15c0"; + when x"224" => DATA <= x"000e"; + when x"225" => DATA <= x"09f7"; + when x"226" => DATA <= x"01e8"; + when x"227" => DATA <= x"0103"; + when x"228" => DATA <= x"0a00"; + when x"229" => DATA <= x"09f7"; + when x"22a" => DATA <= x"01e6"; + when x"22b" => DATA <= x"09f7"; + when x"22c" => DATA <= x"0004"; + when x"22d" => DATA <= x"65c0"; + when x"22e" => DATA <= x"ff80"; + when x"22f" => DATA <= x"97c0"; + when x"230" => DATA <= x"fff4"; + when x"231" => DATA <= x"80fd"; + when x"232" => DATA <= x"97c0"; + when x"233" => DATA <= x"fff6"; + when x"234" => DATA <= x"0087"; + when x"235" => DATA <= x"1026"; + when x"236" => DATA <= x"15c0"; + when x"237" => DATA <= x"0010"; + when x"238" => DATA <= x"09f7"; + when x"239" => DATA <= x"01c2"; + when x"23a" => DATA <= x"1380"; when x"23b" => DATA <= x"09f7"; - when x"23c" => DATA <= x"01ec"; - when x"23d" => DATA <= x"0103"; - when x"23e" => DATA <= x"0a00"; - when x"23f" => DATA <= x"09f7"; - when x"240" => DATA <= x"01ea"; - when x"241" => DATA <= x"09f7"; - when x"242" => DATA <= x"0004"; - when x"243" => DATA <= x"65c0"; - when x"244" => DATA <= x"ff80"; - when x"245" => DATA <= x"97c0"; - when x"246" => DATA <= x"fff4"; - when x"247" => DATA <= x"80fd"; - when x"248" => DATA <= x"97c0"; - when x"249" => DATA <= x"fff6"; - when x"24a" => DATA <= x"0087"; - when x"24b" => DATA <= x"0bc1"; - when x"24c" => DATA <= x"0315"; - when x"24d" => DATA <= x"1026"; - when x"24e" => DATA <= x"15c0"; - when x"24f" => DATA <= x"0010"; - when x"250" => DATA <= x"09f7"; - when x"251" => DATA <= x"01c2"; - when x"252" => DATA <= x"1380"; - when x"253" => DATA <= x"09f7"; - when x"254" => DATA <= x"01c2"; - when x"255" => DATA <= x"09f7"; - when x"256" => DATA <= x"ffdc"; - when x"257" => DATA <= x"1580"; - when x"258" => DATA <= x"0087"; - when x"259" => DATA <= x"25c0"; - when x"25a" => DATA <= x"000d"; - when x"25b" => DATA <= x"0206"; - when x"25c" => DATA <= x"15c0"; - when x"25d" => DATA <= x"000a"; - when x"25e" => DATA <= x"09f7"; - when x"25f" => DATA <= x"0004"; - when x"260" => DATA <= x"15c0"; - when x"261" => DATA <= x"000d"; - when x"262" => DATA <= x"35df"; - when x"263" => DATA <= x"0040"; - when x"264" => DATA <= x"fff0"; - when x"265" => DATA <= x"03fc"; - when x"266" => DATA <= x"901f"; - when x"267" => DATA <= x"fff2"; - when x"268" => DATA <= x"0087"; - when x"269" => DATA <= x"880f"; - when x"26a" => DATA <= x"42ff"; - when x"26b" => DATA <= x"6461"; - when x"26c" => DATA <= x"ff00"; - when x"26d" => DATA <= x"45f6"; - when x"26e" => DATA <= x"fff0"; - when x"26f" => DATA <= x"0002"; - when x"270" => DATA <= x"17e6"; - when x"271" => DATA <= x"f5e0"; - when x"272" => DATA <= x"17e6"; - when x"273" => DATA <= x"f5ec"; - when x"274" => DATA <= x"119f"; - when x"275" => DATA <= x"f5ec"; - when x"276" => DATA <= x"15df"; - when x"277" => DATA <= x"fd10"; - when x"278" => DATA <= x"f5e0"; - when x"279" => DATA <= x"0be6"; - when x"27a" => DATA <= x"1026"; - when x"27b" => DATA <= x"1d80"; - when x"27c" => DATA <= x"0008"; - when x"27d" => DATA <= x"1800"; - when x"27e" => DATA <= x"45c0"; - when x"27f" => DATA <= x"ff00"; - when x"280" => DATA <= x"6000"; - when x"281" => DATA <= x"67c0"; - when x"282" => DATA <= x"f5ee"; - when x"283" => DATA <= x"1236"; - when x"284" => DATA <= x"0002"; - when x"285" => DATA <= x"1580"; - when x"286" => DATA <= x"09de"; - when x"287" => DATA <= x"8405"; - when x"288" => DATA <= x"17c6"; - when x"289" => DATA <= x"f5ec"; - when x"28a" => DATA <= x"55f6"; - when x"28b" => DATA <= x"0002"; - when x"28c" => DATA <= x"0006"; - when x"28d" => DATA <= x"8603"; - when x"28e" => DATA <= x"55f6"; - when x"28f" => DATA <= x"0001"; - when x"290" => DATA <= x"0006"; - when x"291" => DATA <= x"159f"; - when x"292" => DATA <= x"f5ec"; - when x"293" => DATA <= x"159f"; - when x"294" => DATA <= x"f5e0"; - when x"295" => DATA <= x"0002"; - when x"296" => DATA <= x"1d80"; - when x"297" => DATA <= x"0006"; - when x"298" => DATA <= x"1db6"; - when x"299" => DATA <= x"0004"; - when x"29a" => DATA <= x"0006"; - when x"29b" => DATA <= x"0087"; - when x"29c" => DATA <= x"0bd6"; - when x"29d" => DATA <= x"159f"; - when x"29e" => DATA <= x"f5ec"; - when x"29f" => DATA <= x"159f"; - when x"2a0" => DATA <= x"f5e0"; -- was 17f6 - when x"2a1" => DATA <= x"1026"; -- was f5e0 - when x"2a2" => DATA <= x"810b"; - when x"2a3" => DATA <= x"2017"; - when x"2a4" => DATA <= x"0100"; - when x"2a5" => DATA <= x"861b"; - when x"2a6" => DATA <= x"6000"; - when x"2a7" => DATA <= x"67c0"; - when x"2a8" => DATA <= x"f5ee"; - when x"2a9" => DATA <= x"1226"; - when x"2aa" => DATA <= x"0bc1"; - when x"2ab" => DATA <= x"0314"; - when x"2ac" => DATA <= x"1048"; - when x"2ad" => DATA <= x"0112"; - when x"2ae" => DATA <= x"0a40"; - when x"2af" => DATA <= x"2017"; - when x"2b0" => DATA <= x"0006"; - when x"2b1" => DATA <= x"860f"; - when x"2b2" => DATA <= x"6000"; - when x"2b3" => DATA <= x"6000"; - when x"2b4" => DATA <= x"65c0"; - when x"2b5" => DATA <= x"f5d8"; - when x"2b6" => DATA <= x"1226"; - when x"2b7" => DATA <= x"0bc1"; - when x"2b8" => DATA <= x"0301"; - when x"2b9" => DATA <= x"1048"; - when x"2ba" => DATA <= x"0bd0"; - when x"2bb" => DATA <= x"1226"; - when x"2bc" => DATA <= x"0bc2"; - when x"2bd" => DATA <= x"0301"; - when x"2be" => DATA <= x"1088"; - when x"2bf" => DATA <= x"1582"; - when x"2c0" => DATA <= x"1581"; - when x"2c1" => DATA <= x"1580"; - when x"2c2" => DATA <= x"0002"; - when x"2c3" => DATA <= x"0bc0"; - when x"2c4" => DATA <= x"0304"; - when x"2c5" => DATA <= x"2017"; - when x"2c6" => DATA <= x"0003"; - when x"2c7" => DATA <= x"871d"; - when x"2c8" => DATA <= x"0303"; - when x"2c9" => DATA <= x"0087"; - when x"2ca" => DATA <= x"007f"; - when x"2cb" => DATA <= x"f840"; - when x"2cc" => DATA <= x"0a00"; - when x"2cd" => DATA <= x"15d0"; - when x"2ce" => DATA <= x"ffc2"; - when x"2cf" => DATA <= x"0a10"; - when x"2d0" => DATA <= x"2017"; - when x"2d1" => DATA <= x"0100"; - when x"2d2" => DATA <= x"02fa"; - when x"2d3" => DATA <= x"15df"; - when x"2d4" => DATA <= x"fcd2"; - when x"2d5" => DATA <= x"001c"; - when x"2d6" => DATA <= x"15df"; - when x"2d7" => DATA <= x"fcda"; - when x"2d8" => DATA <= x"0018"; - when x"2d9" => DATA <= x"15df"; - when x"2da" => DATA <= x"ffbe"; - when x"2db" => DATA <= x"0080"; - when x"2dc" => DATA <= x"15df"; - when x"2dd" => DATA <= x"00e0"; - when x"2de" => DATA <= x"0082"; - when x"2df" => DATA <= x"15df"; - when x"2e0" => DATA <= x"fe92"; - when x"2e1" => DATA <= x"0084"; - when x"2e2" => DATA <= x"15df"; - when x"2e3" => DATA <= x"00c0"; - when x"2e4" => DATA <= x"0086"; - when x"2e5" => DATA <= x"0c00"; - when x"2e6" => DATA <= x"15c0"; - when x"2e7" => DATA <= x"000c"; - when x"2e8" => DATA <= x"15c1"; - when x"2e9" => DATA <= x"fdf2"; - when x"2ea" => DATA <= x"15c2"; - when x"2eb" => DATA <= x"f5d8"; - when x"2ec" => DATA <= x"8702"; - when x"2ed" => DATA <= x"65c0"; - when x"2ee" => DATA <= x"0018"; - when x"2ef" => DATA <= x"1452"; - when x"2f0" => DATA <= x"0ac0"; - when x"2f1" => DATA <= x"02fd"; - when x"2f2" => DATA <= x"8705"; - when x"2f3" => DATA <= x"15c0"; - when x"2f4" => DATA <= x"00f0"; - when x"2f5" => DATA <= x"1252"; - when x"2f6" => DATA <= x"0ac0"; - when x"2f7" => DATA <= x"02fd"; - when x"2f8" => DATA <= x"0087"; - when x"2f9" => DATA <= x"f83e"; - when x"2fa" => DATA <= x"0000"; - when x"2fb" => DATA <= x"f890"; - when x"2fc" => DATA <= x"f5ff"; - when x"2fd" => DATA <= x"f87a"; - when x"2fe" => DATA <= x"f500"; - when x"2ff" => DATA <= x"fd92"; - when x"300" => DATA <= x"0000"; - when x"301" => DATA <= x"ffc2"; - when x"302" => DATA <= x"0000"; - when x"303" => DATA <= x"0000"; - when x"304" => DATA <= x"f600"; - when x"305" => DATA <= x"0000"; - when x"306" => DATA <= x"f804"; - when x"307" => DATA <= x"0100"; - when x"308" => DATA <= x"f500"; - when x"309" => DATA <= x"f83e"; - when x"30a" => DATA <= x"0000"; - when x"30b" => DATA <= x"f83e"; - when x"30c" => DATA <= x"0000"; - when x"30d" => DATA <= x"fd94"; - when x"30e" => DATA <= x"f8b8"; - when x"30f" => DATA <= x"f9e6"; - when x"310" => DATA <= x"fa6a"; - when x"311" => DATA <= x"fcc4"; - when x"312" => DATA <= x"fcb8"; - when x"313" => DATA <= x"fc7c"; - when x"314" => DATA <= x"fba4"; - when x"315" => DATA <= x"fb4c"; - when x"316" => DATA <= x"fc6e"; - when x"317" => DATA <= x"fc96"; - when x"318" => DATA <= x"fbe8"; - when x"319" => DATA <= x"fb76"; - when x"31a" => DATA <= x"fd86"; - when x"31b" => DATA <= x"fd38"; - when x"31c" => DATA <= x"fd2c"; - when x"31d" => DATA <= x"fd92"; - when x"31e" => DATA <= x"9440"; - when x"31f" => DATA <= x"09f7"; - when x"320" => DATA <= x"002a"; - when x"321" => DATA <= x"2017"; - when x"322" => DATA <= x"000d"; - when x"323" => DATA <= x"02fa"; + when x"23c" => DATA <= x"01c2"; + when x"23d" => DATA <= x"09f7"; + when x"23e" => DATA <= x"ffe0"; + when x"23f" => DATA <= x"1580"; + when x"240" => DATA <= x"0087"; + when x"241" => DATA <= x"25c0"; + when x"242" => DATA <= x"000d"; + when x"243" => DATA <= x"0206"; + when x"244" => DATA <= x"15c0"; + when x"245" => DATA <= x"000a"; + when x"246" => DATA <= x"09f7"; + when x"247" => DATA <= x"0004"; + when x"248" => DATA <= x"15c0"; + when x"249" => DATA <= x"000d"; + when x"24a" => DATA <= x"35df"; + when x"24b" => DATA <= x"0040"; + when x"24c" => DATA <= x"fff0"; + when x"24d" => DATA <= x"03fc"; + when x"24e" => DATA <= x"901f"; + when x"24f" => DATA <= x"fff2"; + when x"250" => DATA <= x"0087"; + when x"251" => DATA <= x"880f"; + when x"252" => DATA <= x"42ff"; + when x"253" => DATA <= x"6461"; + when x"254" => DATA <= x"0000"; + when x"255" => DATA <= x"45f6"; + when x"256" => DATA <= x"fff0"; + when x"257" => DATA <= x"0002"; + when x"258" => DATA <= x"17e6"; + when x"259" => DATA <= x"f5e0"; + when x"25a" => DATA <= x"17e6"; + when x"25b" => DATA <= x"f5ec"; + when x"25c" => DATA <= x"119f"; + when x"25d" => DATA <= x"f5ec"; + when x"25e" => DATA <= x"15df"; + when x"25f" => DATA <= x"fce0"; + when x"260" => DATA <= x"f5e0"; + when x"261" => DATA <= x"0be6"; + when x"262" => DATA <= x"1026"; + when x"263" => DATA <= x"1d80"; + when x"264" => DATA <= x"0008"; + when x"265" => DATA <= x"1800"; + when x"266" => DATA <= x"45c0"; + when x"267" => DATA <= x"ff00"; + when x"268" => DATA <= x"6000"; + when x"269" => DATA <= x"67c0"; + when x"26a" => DATA <= x"f5ee"; + when x"26b" => DATA <= x"1236"; + when x"26c" => DATA <= x"0002"; + when x"26d" => DATA <= x"1580"; + when x"26e" => DATA <= x"09de"; + when x"26f" => DATA <= x"8405"; + when x"270" => DATA <= x"17c6"; + when x"271" => DATA <= x"f5ec"; + when x"272" => DATA <= x"55f6"; + when x"273" => DATA <= x"0002"; + when x"274" => DATA <= x"0006"; + when x"275" => DATA <= x"8603"; + when x"276" => DATA <= x"55f6"; + when x"277" => DATA <= x"0001"; + when x"278" => DATA <= x"0006"; + when x"279" => DATA <= x"159f"; + when x"27a" => DATA <= x"f5ec"; + when x"27b" => DATA <= x"159f"; + when x"27c" => DATA <= x"f5e0"; + when x"27d" => DATA <= x"0002"; + when x"27e" => DATA <= x"1d80"; + when x"27f" => DATA <= x"0006"; + when x"280" => DATA <= x"1db6"; + when x"281" => DATA <= x"0004"; + when x"282" => DATA <= x"0006"; + when x"283" => DATA <= x"0087"; + when x"284" => DATA <= x"0bd6"; + when x"285" => DATA <= x"159f"; + when x"286" => DATA <= x"f5ec"; + when x"287" => DATA <= x"159f"; + when x"288" => DATA <= x"f5e0"; + when x"289" => DATA <= x"1026"; + when x"28a" => DATA <= x"810b"; + when x"28b" => DATA <= x"2017"; + when x"28c" => DATA <= x"0100"; + when x"28d" => DATA <= x"861b"; + when x"28e" => DATA <= x"6000"; + when x"28f" => DATA <= x"67c0"; + when x"290" => DATA <= x"f5ee"; + when x"291" => DATA <= x"1226"; + when x"292" => DATA <= x"0bc1"; + when x"293" => DATA <= x"0314"; + when x"294" => DATA <= x"1048"; + when x"295" => DATA <= x"0112"; + when x"296" => DATA <= x"0a40"; + when x"297" => DATA <= x"2017"; + when x"298" => DATA <= x"000a"; + when x"299" => DATA <= x"860f"; + when x"29a" => DATA <= x"6000"; + when x"29b" => DATA <= x"6000"; + when x"29c" => DATA <= x"65c0"; + when x"29d" => DATA <= x"f5d8"; + when x"29e" => DATA <= x"1226"; + when x"29f" => DATA <= x"0bc1"; + when x"2a0" => DATA <= x"0301"; -- was 17f6 + when x"2a1" => DATA <= x"1048"; -- was f5e0 + when x"2a2" => DATA <= x"0bd0"; + when x"2a3" => DATA <= x"1226"; + when x"2a4" => DATA <= x"0bc2"; + when x"2a5" => DATA <= x"0301"; + when x"2a6" => DATA <= x"1088"; + when x"2a7" => DATA <= x"1582"; + when x"2a8" => DATA <= x"1581"; + when x"2a9" => DATA <= x"1580"; + when x"2aa" => DATA <= x"0002"; + when x"2ab" => DATA <= x"0bc0"; + when x"2ac" => DATA <= x"0304"; + when x"2ad" => DATA <= x"2017"; + when x"2ae" => DATA <= x"0003"; + when x"2af" => DATA <= x"871d"; + when x"2b0" => DATA <= x"0303"; + when x"2b1" => DATA <= x"0087"; + when x"2b2" => DATA <= x"007f"; + when x"2b3" => DATA <= x"f870"; + when x"2b4" => DATA <= x"0a00"; + when x"2b5" => DATA <= x"15d0"; + when x"2b6" => DATA <= x"ff92"; + when x"2b7" => DATA <= x"0a10"; + when x"2b8" => DATA <= x"2017"; + when x"2b9" => DATA <= x"0100"; + when x"2ba" => DATA <= x"02fa"; + when x"2bb" => DATA <= x"15df"; + when x"2bc" => DATA <= x"fca2"; + when x"2bd" => DATA <= x"001c"; + when x"2be" => DATA <= x"15df"; + when x"2bf" => DATA <= x"fcaa"; + when x"2c0" => DATA <= x"0018"; + when x"2c1" => DATA <= x"15df"; + when x"2c2" => DATA <= x"ff8e"; + when x"2c3" => DATA <= x"0080"; + when x"2c4" => DATA <= x"15df"; + when x"2c5" => DATA <= x"00e0"; + when x"2c6" => DATA <= x"0082"; + when x"2c7" => DATA <= x"15df"; + when x"2c8" => DATA <= x"fe62"; + when x"2c9" => DATA <= x"0084"; + when x"2ca" => DATA <= x"15df"; + when x"2cb" => DATA <= x"00c0"; + when x"2cc" => DATA <= x"0086"; + when x"2cd" => DATA <= x"0c00"; + when x"2ce" => DATA <= x"15c0"; + when x"2cf" => DATA <= x"000c"; + when x"2d0" => DATA <= x"15c1"; + when x"2d1" => DATA <= x"fdc2"; + when x"2d2" => DATA <= x"15c2"; + when x"2d3" => DATA <= x"f5d8"; + when x"2d4" => DATA <= x"8702"; + when x"2d5" => DATA <= x"65c0"; + when x"2d6" => DATA <= x"0018"; + when x"2d7" => DATA <= x"1452"; + when x"2d8" => DATA <= x"0ac0"; + when x"2d9" => DATA <= x"02fd"; + when x"2da" => DATA <= x"8705"; + when x"2db" => DATA <= x"15c0"; + when x"2dc" => DATA <= x"00f0"; + when x"2dd" => DATA <= x"1252"; + when x"2de" => DATA <= x"0ac0"; + when x"2df" => DATA <= x"02fd"; + when x"2e0" => DATA <= x"0087"; + when x"2e1" => DATA <= x"f83e"; + when x"2e2" => DATA <= x"0000"; + when x"2e3" => DATA <= x"f890"; + when x"2e4" => DATA <= x"f5ff"; + when x"2e5" => DATA <= x"f87a"; + when x"2e6" => DATA <= x"f500"; + when x"2e7" => DATA <= x"fd62"; + when x"2e8" => DATA <= x"0000"; + when x"2e9" => DATA <= x"ff92"; + when x"2ea" => DATA <= x"0000"; + when x"2eb" => DATA <= x"0000"; + when x"2ec" => DATA <= x"f600"; + when x"2ed" => DATA <= x"0000"; + when x"2ee" => DATA <= x"f804"; + when x"2ef" => DATA <= x"0100"; + when x"2f0" => DATA <= x"f500"; + when x"2f1" => DATA <= x"f83e"; + when x"2f2" => DATA <= x"0000"; + when x"2f3" => DATA <= x"f83e"; + when x"2f4" => DATA <= x"0000"; + when x"2f5" => DATA <= x"fd64"; + when x"2f6" => DATA <= x"f8b8"; + when x"2f7" => DATA <= x"fa1e"; + when x"2f8" => DATA <= x"faa2"; + when x"2f9" => DATA <= x"fc94"; + when x"2fa" => DATA <= x"fc88"; + when x"2fb" => DATA <= x"fc50"; + when x"2fc" => DATA <= x"fbdc"; + when x"2fd" => DATA <= x"fb84"; + when x"2fe" => DATA <= x"fc46"; + when x"2ff" => DATA <= x"fc6a"; + when x"300" => DATA <= x"fc20"; + when x"301" => DATA <= x"fbae"; + when x"302" => DATA <= x"fd56"; + when x"303" => DATA <= x"fd08"; + when x"304" => DATA <= x"fcfc"; + when x"305" => DATA <= x"fd62"; + when x"306" => DATA <= x"9440"; + when x"307" => DATA <= x"09f7"; + when x"308" => DATA <= x"002a"; + when x"309" => DATA <= x"2017"; + when x"30a" => DATA <= x"000d"; + when x"30b" => DATA <= x"02fa"; + when x"30c" => DATA <= x"0087"; + when x"30d" => DATA <= x"6081"; + when x"30e" => DATA <= x"9840"; + when x"30f" => DATA <= x"09f7"; + when x"310" => DATA <= x"001a"; + when x"311" => DATA <= x"0ac2"; + when x"312" => DATA <= x"02fb"; + when x"313" => DATA <= x"0087"; + when x"314" => DATA <= x"6081"; + when x"315" => DATA <= x"09f7"; + when x"316" => DATA <= x"fe30"; + when x"317" => DATA <= x"9021"; + when x"318" => DATA <= x"0ac2"; + when x"319" => DATA <= x"02fb"; + when x"31a" => DATA <= x"0087"; + when x"31b" => DATA <= x"09f7"; + when x"31c" => DATA <= x"0002"; + when x"31d" => DATA <= x"1040"; + when x"31e" => DATA <= x"35df"; + when x"31f" => DATA <= x"0040"; + when x"320" => DATA <= x"fff4"; + when x"321" => DATA <= x"03fc"; + when x"322" => DATA <= x"901f"; + when x"323" => DATA <= x"fff6"; when x"324" => DATA <= x"0087"; - when x"325" => DATA <= x"6081"; - when x"326" => DATA <= x"9840"; - when x"327" => DATA <= x"09f7"; - when x"328" => DATA <= x"001a"; - when x"329" => DATA <= x"0ac2"; - when x"32a" => DATA <= x"02fb"; - when x"32b" => DATA <= x"0087"; - when x"32c" => DATA <= x"6081"; - when x"32d" => DATA <= x"09f7"; - when x"32e" => DATA <= x"fe2c"; - when x"32f" => DATA <= x"9021"; - when x"330" => DATA <= x"0ac2"; - when x"331" => DATA <= x"02fb"; - when x"332" => DATA <= x"0087"; - when x"333" => DATA <= x"09f7"; - when x"334" => DATA <= x"0002"; - when x"335" => DATA <= x"1040"; - when x"336" => DATA <= x"35df"; - when x"337" => DATA <= x"0040"; - when x"338" => DATA <= x"fff4"; - when x"339" => DATA <= x"03fc"; - when x"33a" => DATA <= x"901f"; - when x"33b" => DATA <= x"fff6"; - when x"33c" => DATA <= x"0087"; - when x"33d" => DATA <= x"97c0"; - when x"33e" => DATA <= x"fff0"; - when x"33f" => DATA <= x"80fd"; - when x"340" => DATA <= x"97c0"; - when x"341" => DATA <= x"fff2"; - when x"342" => DATA <= x"0087"; - when x"343" => DATA <= x"97c0"; - when x"344" => DATA <= x"fffc"; - when x"345" => DATA <= x"80fd"; - when x"346" => DATA <= x"97c0"; - when x"347" => DATA <= x"fffe"; - when x"348" => DATA <= x"0087"; - when x"349" => DATA <= x"1026"; - when x"34a" => DATA <= x"97c0"; - when x"34b" => DATA <= x"fffc"; - when x"34c" => DATA <= x"811c"; - when x"34d" => DATA <= x"97c0"; - when x"34e" => DATA <= x"fff0"; - when x"34f" => DATA <= x"8103"; - when x"350" => DATA <= x"1580"; - when x"351" => DATA <= x"007f"; - when x"352" => DATA <= x"f742"; - when x"353" => DATA <= x"97c0"; - when x"354" => DATA <= x"fff2"; - when x"355" => DATA <= x"8110"; - when x"356" => DATA <= x"1066"; - when x"357" => DATA <= x"10a6"; - when x"358" => DATA <= x"09f7"; - when x"359" => DATA <= x"ffc6"; - when x"35a" => DATA <= x"1002"; - when x"35b" => DATA <= x"09f7"; - when x"35c" => DATA <= x"ffc0"; - when x"35d" => DATA <= x"1001"; - when x"35e" => DATA <= x"09f7"; - when x"35f" => DATA <= x"ffba"; - when x"360" => DATA <= x"09ff"; - when x"361" => DATA <= x"f720"; - when x"362" => DATA <= x"1582"; - when x"363" => DATA <= x"1581"; - when x"364" => DATA <= x"1580"; - when x"365" => DATA <= x"0002"; - when x"366" => DATA <= x"09ff"; - when x"367" => DATA <= x"f70c"; - when x"368" => DATA <= x"0156"; - when x"369" => DATA <= x"97c0"; - when x"36a" => DATA <= x"fffe"; - when x"36b" => DATA <= x"8013"; - when x"36c" => DATA <= x"1066"; - when x"36d" => DATA <= x"09f7"; - when x"36e" => DATA <= x"fdac"; - when x"36f" => DATA <= x"17c1"; - when x"370" => DATA <= x"f5e2"; - when x"371" => DATA <= x"09f7"; - when x"372" => DATA <= x"fda4"; - when x"373" => DATA <= x"9011"; - when x"374" => DATA <= x"09f7"; - when x"375" => DATA <= x"fd9e"; - when x"376" => DATA <= x"9011"; - when x"377" => DATA <= x"02fc"; - when x"378" => DATA <= x"1581"; - when x"379" => DATA <= x"1580"; - when x"37a" => DATA <= x"17c0"; - when x"37b" => DATA <= x"f5e2"; - when x"37c" => DATA <= x"17ce"; - when x"37d" => DATA <= x"f5e0"; - when x"37e" => DATA <= x"0002"; - when x"37f" => DATA <= x"1066"; - when x"380" => DATA <= x"1001"; - when x"381" => DATA <= x"09f7"; - when x"382" => DATA <= x"ff80"; - when x"383" => DATA <= x"2057"; - when x"384" => DATA <= x"0005"; - when x"385" => DATA <= x"03dd"; - when x"386" => DATA <= x"09f7"; - when x"387" => DATA <= x"ff76"; - when x"388" => DATA <= x"901f"; - when x"389" => DATA <= x"f5fb"; - when x"38a" => DATA <= x"09f7"; - when x"38b" => DATA <= x"ff6e"; - when x"38c" => DATA <= x"901f"; - when x"38d" => DATA <= x"f5fa"; - when x"38e" => DATA <= x"09f7"; - when x"38f" => DATA <= x"ff66"; - when x"390" => DATA <= x"901f"; - when x"391" => DATA <= x"f5f9"; - when x"392" => DATA <= x"09f7"; - when x"393" => DATA <= x"ff5e"; - when x"394" => DATA <= x"901f"; - when x"395" => DATA <= x"f5f8"; - when x"396" => DATA <= x"97c0"; - when x"397" => DATA <= x"fffa"; - when x"398" => DATA <= x"97c0"; - when x"399" => DATA <= x"fffa"; - when x"39a" => DATA <= x"09f7"; - when x"39b" => DATA <= x"ff4e"; - when x"39c" => DATA <= x"6041"; - when x"39d" => DATA <= x"1c5f"; - when x"39e" => DATA <= x"ffc4"; - when x"39f" => DATA <= x"0080"; - when x"3a0" => DATA <= x"17c0"; - when x"3a1" => DATA <= x"f5f8"; - when x"3a2" => DATA <= x"2057"; - when x"3a3" => DATA <= x"000c"; - when x"3a4" => DATA <= x"87be"; - when x"3a5" => DATA <= x"030a"; - when x"3a6" => DATA <= x"15c1"; - when x"3a7" => DATA <= x"0100"; - when x"3a8" => DATA <= x"8bdf"; - when x"3a9" => DATA <= x"fff8"; - when x"3aa" => DATA <= x"80fd"; - when x"3ab" => DATA <= x"97d0"; - when x"3ac" => DATA <= x"fffa"; - when x"3ad" => DATA <= x"0ac1"; - when x"3ae" => DATA <= x"02f9"; - when x"3af" => DATA <= x"010e"; - when x"3b0" => DATA <= x"15c1"; - when x"3b1" => DATA <= x"0100"; - when x"3b2" => DATA <= x"8bdf"; - when x"3b3" => DATA <= x"fff8"; - when x"3b4" => DATA <= x"80fd"; - when x"3b5" => DATA <= x"941f"; - when x"3b6" => DATA <= x"fffa"; - when x"3b7" => DATA <= x"0ac1"; - when x"3b8" => DATA <= x"02f9"; - when x"3b9" => DATA <= x"8bdf"; - when x"3ba" => DATA <= x"fff8"; - when x"3bb" => DATA <= x"80fd"; - when x"3bc" => DATA <= x"8a1f"; - when x"3bd" => DATA <= x"fffa"; - when x"3be" => DATA <= x"1581"; - when x"3bf" => DATA <= x"101f"; - when x"3c0" => DATA <= x"f5f8"; - when x"3c1" => DATA <= x"1580"; - when x"3c2" => DATA <= x"0002"; - when x"3c3" => DATA <= x"1026"; - when x"3c4" => DATA <= x"17c0"; - when x"3c5" => DATA <= x"f5f8"; - when x"3c6" => DATA <= x"97d0"; - when x"3c7" => DATA <= x"fffa"; - when x"3c8" => DATA <= x"97d0"; - when x"3c9" => DATA <= x"fffa"; - when x"3ca" => DATA <= x"01f4"; - when x"3cb" => DATA <= x"1026"; - when x"3cc" => DATA <= x"17c0"; - when x"3cd" => DATA <= x"f5f8"; - when x"3ce" => DATA <= x"941f"; - when x"3cf" => DATA <= x"fffa"; - when x"3d0" => DATA <= x"941f"; - when x"3d1" => DATA <= x"fffa"; - when x"3d2" => DATA <= x"01ec"; - when x"3d3" => DATA <= x"1026"; - when x"3d4" => DATA <= x"17c0"; - when x"3d5" => DATA <= x"f5f8"; - when x"3d6" => DATA <= x"97d0"; - when x"3d7" => DATA <= x"fffa"; - when x"3d8" => DATA <= x"01e6"; - when x"3d9" => DATA <= x"1026"; - when x"3da" => DATA <= x"17c0"; - when x"3db" => DATA <= x"f5f8"; - when x"3dc" => DATA <= x"941f"; - when x"3dd" => DATA <= x"fffa"; - when x"3de" => DATA <= x"01e0"; - when x"3df" => DATA <= x"8a1f"; - when x"3e0" => DATA <= x"fffa"; - when x"3e1" => DATA <= x"0002"; - when x"3e2" => DATA <= x"ffb2"; - when x"3e3" => DATA <= x"ffa6"; - when x"3e4" => DATA <= x"ff96"; - when x"3e5" => DATA <= x"ff86"; - when x"3e6" => DATA <= x"ffbe"; - when x"3e7" => DATA <= x"ffbe"; - when x"3e8" => DATA <= x"ffbe"; - when x"3e9" => DATA <= x"ffbe"; + when x"325" => DATA <= x"97c0"; + when x"326" => DATA <= x"fff0"; + when x"327" => DATA <= x"80fd"; + when x"328" => DATA <= x"97c0"; + when x"329" => DATA <= x"fff2"; + when x"32a" => DATA <= x"0087"; + when x"32b" => DATA <= x"97c0"; + when x"32c" => DATA <= x"fffc"; + when x"32d" => DATA <= x"80fd"; + when x"32e" => DATA <= x"97c0"; + when x"32f" => DATA <= x"fffe"; + when x"330" => DATA <= x"0087"; + when x"331" => DATA <= x"1026"; + when x"332" => DATA <= x"97c0"; + when x"333" => DATA <= x"fffc"; + when x"334" => DATA <= x"811c"; + when x"335" => DATA <= x"97c0"; + when x"336" => DATA <= x"fff0"; + when x"337" => DATA <= x"8103"; + when x"338" => DATA <= x"1580"; + when x"339" => DATA <= x"007f"; + when x"33a" => DATA <= x"f772"; + when x"33b" => DATA <= x"97c0"; + when x"33c" => DATA <= x"fff2"; + when x"33d" => DATA <= x"8110"; + when x"33e" => DATA <= x"1066"; + when x"33f" => DATA <= x"10a6"; + when x"340" => DATA <= x"09f7"; + when x"341" => DATA <= x"ffc6"; + when x"342" => DATA <= x"1002"; + when x"343" => DATA <= x"09f7"; + when x"344" => DATA <= x"ffc0"; + when x"345" => DATA <= x"1001"; + when x"346" => DATA <= x"09f7"; + when x"347" => DATA <= x"ffba"; + when x"348" => DATA <= x"09ff"; + when x"349" => DATA <= x"f750"; + when x"34a" => DATA <= x"1582"; + when x"34b" => DATA <= x"1581"; + when x"34c" => DATA <= x"1580"; + when x"34d" => DATA <= x"0002"; + when x"34e" => DATA <= x"09ff"; + when x"34f" => DATA <= x"f73c"; + when x"350" => DATA <= x"0156"; + when x"351" => DATA <= x"97c0"; + when x"352" => DATA <= x"fffe"; + when x"353" => DATA <= x"8013"; + when x"354" => DATA <= x"1066"; + when x"355" => DATA <= x"09f7"; + when x"356" => DATA <= x"fdb0"; + when x"357" => DATA <= x"17c1"; + when x"358" => DATA <= x"f5e2"; + when x"359" => DATA <= x"09f7"; + when x"35a" => DATA <= x"fda8"; + when x"35b" => DATA <= x"9011"; + when x"35c" => DATA <= x"09f7"; + when x"35d" => DATA <= x"fda2"; + when x"35e" => DATA <= x"9011"; + when x"35f" => DATA <= x"02fc"; + when x"360" => DATA <= x"1581"; + when x"361" => DATA <= x"1580"; + when x"362" => DATA <= x"17c0"; + when x"363" => DATA <= x"f5e2"; + when x"364" => DATA <= x"17ce"; + when x"365" => DATA <= x"f5e0"; + when x"366" => DATA <= x"0002"; + when x"367" => DATA <= x"1066"; + when x"368" => DATA <= x"1001"; + when x"369" => DATA <= x"09f7"; + when x"36a" => DATA <= x"ff80"; + when x"36b" => DATA <= x"2057"; + when x"36c" => DATA <= x"0005"; + when x"36d" => DATA <= x"03dd"; + when x"36e" => DATA <= x"09f7"; + when x"36f" => DATA <= x"ff76"; + when x"370" => DATA <= x"901f"; + when x"371" => DATA <= x"f5fb"; + when x"372" => DATA <= x"09f7"; + when x"373" => DATA <= x"ff6e"; + when x"374" => DATA <= x"901f"; + when x"375" => DATA <= x"f5fa"; + when x"376" => DATA <= x"09f7"; + when x"377" => DATA <= x"ff66"; + when x"378" => DATA <= x"901f"; + when x"379" => DATA <= x"f5f9"; + when x"37a" => DATA <= x"09f7"; + when x"37b" => DATA <= x"ff5e"; + when x"37c" => DATA <= x"901f"; + when x"37d" => DATA <= x"f5f8"; + when x"37e" => DATA <= x"97c0"; + when x"37f" => DATA <= x"fffa"; + when x"380" => DATA <= x"97c0"; + when x"381" => DATA <= x"fffa"; + when x"382" => DATA <= x"09f7"; + when x"383" => DATA <= x"ff4e"; + when x"384" => DATA <= x"6041"; + when x"385" => DATA <= x"1c5f"; + when x"386" => DATA <= x"ff94"; + when x"387" => DATA <= x"0080"; + when x"388" => DATA <= x"17c0"; + when x"389" => DATA <= x"f5f8"; + when x"38a" => DATA <= x"2057"; + when x"38b" => DATA <= x"000c"; + when x"38c" => DATA <= x"87be"; + when x"38d" => DATA <= x"030a"; + when x"38e" => DATA <= x"15c1"; + when x"38f" => DATA <= x"0100"; + when x"390" => DATA <= x"8bdf"; + when x"391" => DATA <= x"fff8"; + when x"392" => DATA <= x"80fd"; + when x"393" => DATA <= x"97d0"; + when x"394" => DATA <= x"fffa"; + when x"395" => DATA <= x"0ac1"; + when x"396" => DATA <= x"02f9"; + when x"397" => DATA <= x"010e"; + when x"398" => DATA <= x"15c1"; + when x"399" => DATA <= x"0100"; + when x"39a" => DATA <= x"8bdf"; + when x"39b" => DATA <= x"fff8"; + when x"39c" => DATA <= x"80fd"; + when x"39d" => DATA <= x"941f"; + when x"39e" => DATA <= x"fffa"; + when x"39f" => DATA <= x"0ac1"; + when x"3a0" => DATA <= x"02f9"; + when x"3a1" => DATA <= x"8bdf"; + when x"3a2" => DATA <= x"fff8"; + when x"3a3" => DATA <= x"80fd"; + when x"3a4" => DATA <= x"8a1f"; + when x"3a5" => DATA <= x"fffa"; + when x"3a6" => DATA <= x"1581"; + when x"3a7" => DATA <= x"101f"; + when x"3a8" => DATA <= x"f5f8"; + when x"3a9" => DATA <= x"1580"; + when x"3aa" => DATA <= x"0002"; + when x"3ab" => DATA <= x"1026"; + when x"3ac" => DATA <= x"17c0"; + when x"3ad" => DATA <= x"f5f8"; + when x"3ae" => DATA <= x"97d0"; + when x"3af" => DATA <= x"fffa"; + when x"3b0" => DATA <= x"97d0"; + when x"3b1" => DATA <= x"fffa"; + when x"3b2" => DATA <= x"01f4"; + when x"3b3" => DATA <= x"1026"; + when x"3b4" => DATA <= x"17c0"; + when x"3b5" => DATA <= x"f5f8"; + when x"3b6" => DATA <= x"941f"; + when x"3b7" => DATA <= x"fffa"; + when x"3b8" => DATA <= x"941f"; + when x"3b9" => DATA <= x"fffa"; + when x"3ba" => DATA <= x"01ec"; + when x"3bb" => DATA <= x"1026"; + when x"3bc" => DATA <= x"17c0"; + when x"3bd" => DATA <= x"f5f8"; + when x"3be" => DATA <= x"97d0"; + when x"3bf" => DATA <= x"fffa"; + when x"3c0" => DATA <= x"01e6"; + when x"3c1" => DATA <= x"1026"; + when x"3c2" => DATA <= x"17c0"; + when x"3c3" => DATA <= x"f5f8"; + when x"3c4" => DATA <= x"941f"; + when x"3c5" => DATA <= x"fffa"; + when x"3c6" => DATA <= x"01e0"; + when x"3c7" => DATA <= x"8a1f"; + when x"3c8" => DATA <= x"fffa"; + when x"3c9" => DATA <= x"0002"; + when x"3ca" => DATA <= x"ff82"; + when x"3cb" => DATA <= x"ff76"; + when x"3cc" => DATA <= x"ff66"; + when x"3cd" => DATA <= x"ff56"; + when x"3ce" => DATA <= x"ff8e"; + when x"3cf" => DATA <= x"ff8e"; + when x"3d0" => DATA <= x"ff8e"; + when x"3d1" => DATA <= x"ff8e"; + when x"3d2" => DATA <= x"0000"; + when x"3d3" => DATA <= x"0000"; + when x"3d4" => DATA <= x"0000"; + when x"3d5" => DATA <= x"0000"; + when x"3d6" => DATA <= x"0000"; + when x"3d7" => DATA <= x"0000"; + when x"3d8" => DATA <= x"0000"; + when x"3d9" => DATA <= x"0000"; + when x"3da" => DATA <= x"0000"; + when x"3db" => DATA <= x"0000"; + when x"3dc" => DATA <= x"0000"; + when x"3dd" => DATA <= x"0000"; + when x"3de" => DATA <= x"0000"; + when x"3df" => DATA <= x"0000"; + when x"3e0" => DATA <= x"0000"; + when x"3e1" => DATA <= x"0000"; + when x"3e2" => DATA <= x"0000"; + when x"3e3" => DATA <= x"0000"; + when x"3e4" => DATA <= x"0000"; + when x"3e5" => DATA <= x"0000"; + when x"3e6" => DATA <= x"0000"; + when x"3e7" => DATA <= x"0000"; + when x"3e8" => DATA <= x"0000"; + when x"3e9" => DATA <= x"0000"; when x"3ea" => DATA <= x"0000"; when x"3eb" => DATA <= x"0000"; when x"3ec" => DATA <= x"0000"; From 0ea275a8ab48c478a5894acb4c1fbf9c15659249 Mon Sep 17 00:00:00 2001 From: David Banks Date: Wed, 11 Nov 2015 19:04:08 +0000 Subject: [PATCH 59/61] Updated .gitignore Change-Id: I1bc5930d4456f2e511b4c885416ea1e7bb71ff57 --- .gitignore | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1ce3d4f..4d83550 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,11 @@ java/*/*.jar tmp/ _xmsgs/ coregen.cgp - +java/cpmutils/images/ +java/cpmutils/build/ +client/pdp11/ +client/68000/ +client/z80/ +multiboot/ +src/Tube/ph_fifo_core_spartan3* +src/Tube/ph_fifo_core_spartan3/ From b1f3fc469044a980af490386fe93f355ff9a33e0 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sat, 14 Nov 2015 18:32:27 +0000 Subject: [PATCH 60/61] Minor tweak to ICAP_core to remove a possible configuration deadlock Change-Id: I43a285a29cff70468a071189969e486092b85c94 --- src/ICAP_core.v | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/ICAP_core.v b/src/ICAP_core.v index 8339f99..3ff41b7 100644 --- a/src/ICAP_core.v +++ b/src/ICAP_core.v @@ -28,13 +28,7 @@ module ICAP_core reg [7:0] soft_dip = 8'b00000000; - reg test_trig; - - assign test = { clk_16M00, test_trig, busy, ff_icap_wr, - sw_in[0] ? icap_dout[3:0] : - (sw_in[1] ? icap_dout[7:4] : - (sw_in[2] ? icap_dout[11:8] : - (sw_in[3] ? icap_dout[15:12] : 4'b1010)))}; + assign test = 8'b0; assign sw_out = powerup ? sw_in : soft_dip[3:0]; @@ -224,7 +218,7 @@ module ICAP_core RD_LATCH_DATA: begin - if (busy) begin + if (busy && !reconfigure) begin next_state = RD_LATCH_DATA; icap_ce = 0; icap_wr = 1; @@ -493,11 +487,6 @@ module ICAP_core MBT_REBOOT <= MBT_REBOOT + 4'b0001; state <= INIT; end - if (state == RD_LATCH_DATA) begin - test_trig <= 1'b1; - end else begin - test_trig <= 1'b0; - end if (state == RD_LATCH_DATA && !busy) begin soft_dip <= icap_dout[7:0]; end From 3946a7600176cbca2ea5d97dc597ab54ad8e4370 Mon Sep 17 00:00:00 2001 From: David Banks Date: Sun, 15 Nov 2015 18:11:14 +0000 Subject: [PATCH 61/61] Rolled PDP Client to 0.50 and 6809 client to 1.00 Change-Id: I1385535b52a140390f4d9e549fc3bd0a38c69c9b --- client/6809/{ => 021}/Client.src | 0 client/6809/{ => 021}/build.sh | 0 client/6809/025/tuberom_6809.vhd | 2081 ++++++++++++++++++++ client/6809/100/Client09.bin | Bin 0 -> 2048 bytes client/6809/100/Client09.lst | 1503 +++++++++++++++ client/6809/100/Client09.src | 1494 ++++++++++++++ client/6809/100/tuberom_6809.vhd | 2081 ++++++++++++++++++++ src/ROM/tuberom_6809.vhd | 3098 +++++++++++++++--------------- src/ROM/tuberom_pdp11.vhd | 4 +- 9 files changed, 8710 insertions(+), 1551 deletions(-) rename client/6809/{ => 021}/Client.src (100%) rename client/6809/{ => 021}/build.sh (100%) create mode 100644 client/6809/025/tuberom_6809.vhd create mode 100644 client/6809/100/Client09.bin create mode 100644 client/6809/100/Client09.lst create mode 100644 client/6809/100/Client09.src create mode 100644 client/6809/100/tuberom_6809.vhd diff --git a/client/6809/Client.src b/client/6809/021/Client.src similarity index 100% rename from client/6809/Client.src rename to client/6809/021/Client.src diff --git a/client/6809/build.sh b/client/6809/021/build.sh similarity index 100% rename from client/6809/build.sh rename to client/6809/021/build.sh diff --git a/client/6809/025/tuberom_6809.vhd b/client/6809/025/tuberom_6809.vhd new file mode 100644 index 0000000..035824e --- /dev/null +++ b/client/6809/025/tuberom_6809.vhd @@ -0,0 +1,2081 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tuberom_6809 is + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(10 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); +end; + +architecture RTL of tuberom_6809 is + + signal rom_addr : std_logic_vector(11 downto 0); + +begin + + p_addr : process(ADDR) + begin + rom_addr <= (others => '0'); + rom_addr(10 downto 0) <= ADDR; + end process; + + p_rom : process + begin + wait until rising_edge(CLK); + DATA <= (others => '0'); + case rom_addr is + when x"000" => DATA <= x"F8"; + when x"001" => DATA <= x"2B"; + when x"002" => DATA <= x"F8"; + when x"003" => DATA <= x"70"; + when x"004" => DATA <= x"FF"; + when x"005" => DATA <= x"E0"; + when x"006" => DATA <= x"F8"; + when x"007" => DATA <= x"DF"; + when x"008" => DATA <= x"F8"; + when x"009" => DATA <= x"F3"; + when x"00A" => DATA <= x"FF"; + when x"00B" => DATA <= x"EE"; + when x"00C" => DATA <= x"F8"; + when x"00D" => DATA <= x"E8"; + when x"00E" => DATA <= x"FF"; + when x"00F" => DATA <= x"E7"; + when x"010" => DATA <= x"F8"; + when x"011" => DATA <= x"E5"; + when x"012" => DATA <= x"F8"; + when x"013" => DATA <= x"DE"; + when x"014" => DATA <= x"20"; + when x"015" => DATA <= x"5A"; + when x"016" => DATA <= x"0D"; + when x"017" => DATA <= x"36"; + when x"018" => DATA <= x"38"; + when x"019" => DATA <= x"30"; + when x"01A" => DATA <= x"39"; + when x"01B" => DATA <= x"20"; + when x"01C" => DATA <= x"54"; + when x"01D" => DATA <= x"55"; + when x"01E" => DATA <= x"42"; + when x"01F" => DATA <= x"45"; + when x"020" => DATA <= x"20"; + when x"021" => DATA <= x"36"; + when x"022" => DATA <= x"34"; + when x"023" => DATA <= x"4B"; + when x"024" => DATA <= x"20"; + when x"025" => DATA <= x"30"; + when x"026" => DATA <= x"2E"; + when x"027" => DATA <= x"32"; + when x"028" => DATA <= x"35"; + when x"029" => DATA <= x"0D"; + when x"02A" => DATA <= x"00"; + when x"02B" => DATA <= x"1A"; + when x"02C" => DATA <= x"50"; + when x"02D" => DATA <= x"10"; + when x"02E" => DATA <= x"CE"; + when x"02F" => DATA <= x"F8"; + when x"030" => DATA <= x"00"; + when x"031" => DATA <= x"1F"; + when x"032" => DATA <= x"41"; + when x"033" => DATA <= x"EC"; + when x"034" => DATA <= x"84"; + when x"035" => DATA <= x"ED"; + when x"036" => DATA <= x"81"; + when x"037" => DATA <= x"8C"; + when x"038" => DATA <= x"FE"; + when x"039" => DATA <= x"C0"; + when x"03A" => DATA <= x"26"; + when x"03B" => DATA <= x"03"; + when x"03C" => DATA <= x"8E"; + when x"03D" => DATA <= x"FE"; + when x"03E" => DATA <= x"F0"; + when x"03F" => DATA <= x"8C"; + when x"040" => DATA <= x"FF"; + when x"041" => DATA <= x"8C"; + when x"042" => DATA <= x"26"; + when x"043" => DATA <= x"03"; + when x"044" => DATA <= x"8E"; + when x"045" => DATA <= x"FF"; + when x"046" => DATA <= x"94"; + when x"047" => DATA <= x"8C"; + when x"048" => DATA <= x"00"; + when x"049" => DATA <= x"00"; + when x"04A" => DATA <= x"26"; + when x"04B" => DATA <= x"E7"; + when x"04C" => DATA <= x"B6"; + when x"04D" => DATA <= x"FE"; + when x"04E" => DATA <= x"E0"; + when x"04F" => DATA <= x"1A"; + when x"050" => DATA <= x"50"; + when x"051" => DATA <= x"10"; + when x"052" => DATA <= x"CE"; + when x"053" => DATA <= x"FF"; + when x"054" => DATA <= x"28"; + when x"055" => DATA <= x"8D"; + when x"056" => DATA <= x"68"; + when x"057" => DATA <= x"BE"; + when x"058" => DATA <= x"FF"; + when x"059" => DATA <= x"90"; + when x"05A" => DATA <= x"BF"; + when x"05B" => DATA <= x"FF"; + when x"05C" => DATA <= x"8E"; + when x"05D" => DATA <= x"1C"; + when x"05E" => DATA <= x"00"; + when x"05F" => DATA <= x"8E"; + when x"060" => DATA <= x"F8"; + when x"061" => DATA <= x"16"; + when x"062" => DATA <= x"BD"; + when x"063" => DATA <= x"F9"; + when x"064" => DATA <= x"32"; + when x"065" => DATA <= x"BD"; + when x"066" => DATA <= x"FF"; + when x"067" => DATA <= x"E7"; + when x"068" => DATA <= x"4F"; + when x"069" => DATA <= x"BD"; + when x"06A" => DATA <= x"FF"; + when x"06B" => DATA <= x"EE"; + when x"06C" => DATA <= x"4F"; + when x"06D" => DATA <= x"BD"; + when x"06E" => DATA <= x"FA"; + when x"06F" => DATA <= x"29"; + when x"070" => DATA <= x"10"; + when x"071" => DATA <= x"CE"; + when x"072" => DATA <= x"FF"; + when x"073" => DATA <= x"28"; + when x"074" => DATA <= x"8D"; + when x"075" => DATA <= x"49"; + when x"076" => DATA <= x"10"; + when x"077" => DATA <= x"FE"; + when x"078" => DATA <= x"FF"; + when x"079" => DATA <= x"8A"; + when x"07A" => DATA <= x"8E"; + when x"07B" => DATA <= x"FF"; + when x"07C" => DATA <= x"B9"; + when x"07D" => DATA <= x"BF"; + when x"07E" => DATA <= x"FF"; + when x"07F" => DATA <= x"90"; + when x"080" => DATA <= x"1C"; + when x"081" => DATA <= x"00"; + when x"082" => DATA <= x"8E"; + when x"083" => DATA <= x"F8"; + when x"084" => DATA <= x"95"; + when x"085" => DATA <= x"BD"; + when x"086" => DATA <= x"F9"; + when x"087" => DATA <= x"32"; + when x"088" => DATA <= x"BD"; + when x"089" => DATA <= x"FF"; + when x"08A" => DATA <= x"F1"; + when x"08B" => DATA <= x"25"; + when x"08C" => DATA <= x"14"; + when x"08D" => DATA <= x"8E"; + when x"08E" => DATA <= x"FF"; + when x"08F" => DATA <= x"28"; + when x"090" => DATA <= x"BD"; + when x"091" => DATA <= x"FF"; + when x"092" => DATA <= x"F7"; + when x"093" => DATA <= x"20"; + when x"094" => DATA <= x"ED"; + when x"095" => DATA <= x"36"; + when x"096" => DATA <= x"38"; + when x"097" => DATA <= x"30"; + when x"098" => DATA <= x"39"; + when x"099" => DATA <= x"3E"; + when x"09A" => DATA <= x"2A"; + when x"09B" => DATA <= x"00"; + when x"09C" => DATA <= x"FF"; + when x"09D" => DATA <= x"28"; + when x"09E" => DATA <= x"57"; + when x"09F" => DATA <= x"20"; + when x"0A0" => DATA <= x"FF"; + when x"0A1" => DATA <= x"86"; + when x"0A2" => DATA <= x"7E"; + when x"0A3" => DATA <= x"BD"; + when x"0A4" => DATA <= x"FF"; + when x"0A5" => DATA <= x"F4"; + when x"0A6" => DATA <= x"3F"; + when x"0A7" => DATA <= x"11"; + when x"0A8" => DATA <= x"45"; + when x"0A9" => DATA <= x"73"; + when x"0AA" => DATA <= x"63"; + when x"0AB" => DATA <= x"61"; + when x"0AC" => DATA <= x"70"; + when x"0AD" => DATA <= x"65"; + when x"0AE" => DATA <= x"00"; + when x"0AF" => DATA <= x"10"; + when x"0B0" => DATA <= x"FE"; + when x"0B1" => DATA <= x"FF"; + when x"0B2" => DATA <= x"8A"; + when x"0B3" => DATA <= x"BD"; + when x"0B4" => DATA <= x"FF"; + when x"0B5" => DATA <= x"E7"; + when x"0B6" => DATA <= x"A6"; + when x"0B7" => DATA <= x"80"; + when x"0B8" => DATA <= x"8D"; + when x"0B9" => DATA <= x"78"; + when x"0BA" => DATA <= x"BD"; + when x"0BB" => DATA <= x"FF"; + when x"0BC" => DATA <= x"E7"; + when x"0BD" => DATA <= x"20"; + when x"0BE" => DATA <= x"C3"; + when x"0BF" => DATA <= x"CC"; + when x"0C0" => DATA <= x"00"; + when x"0C1" => DATA <= x"00"; + when x"0C2" => DATA <= x"FD"; + when x"0C3" => DATA <= x"FF"; + when x"0C4" => DATA <= x"88"; + when x"0C5" => DATA <= x"CC"; + when x"0C6" => DATA <= x"F8"; + when x"0C7" => DATA <= x"00"; + when x"0C8" => DATA <= x"FD"; + when x"0C9" => DATA <= x"FF"; + when x"0CA" => DATA <= x"8A"; + when x"0CB" => DATA <= x"CC"; + when x"0CC" => DATA <= x"F8"; + when x"0CD" => DATA <= x"AF"; + when x"0CE" => DATA <= x"FD"; + when x"0CF" => DATA <= x"FF"; + when x"0D0" => DATA <= x"FA"; + when x"0D1" => DATA <= x"CC"; + when x"0D2" => DATA <= x"FE"; + when x"0D3" => DATA <= x"14"; + when x"0D4" => DATA <= x"FD"; + when x"0D5" => DATA <= x"FE"; + when x"0D6" => DATA <= x"FA"; + when x"0D7" => DATA <= x"8E"; + when x"0D8" => DATA <= x"FF"; + when x"0D9" => DATA <= x"FA"; + when x"0DA" => DATA <= x"10"; + when x"0DB" => DATA <= x"8E"; + when x"0DC" => DATA <= x"FF"; + when x"0DD" => DATA <= x"80"; + when x"0DE" => DATA <= x"39"; + when x"0DF" => DATA <= x"BD"; + when x"0E0" => DATA <= x"FF"; + when x"0E1" => DATA <= x"E0"; + when x"0E2" => DATA <= x"7E"; + when x"0E3" => DATA <= x"FF"; + when x"0E4" => DATA <= x"EE"; + when x"0E5" => DATA <= x"BD"; + when x"0E6" => DATA <= x"FF"; + when x"0E7" => DATA <= x"E7"; + when x"0E8" => DATA <= x"A6"; + when x"0E9" => DATA <= x"80"; + when x"0EA" => DATA <= x"81"; + when x"0EB" => DATA <= x"04"; + when x"0EC" => DATA <= x"27"; + when x"0ED" => DATA <= x"F0"; + when x"0EE" => DATA <= x"BD"; + when x"0EF" => DATA <= x"FF"; + when x"0F0" => DATA <= x"EE"; + when x"0F1" => DATA <= x"20"; + when x"0F2" => DATA <= x"F5"; + when x"0F3" => DATA <= x"34"; + when x"0F4" => DATA <= x"32"; + when x"0F5" => DATA <= x"86"; + when x"0F6" => DATA <= x"80"; + when x"0F7" => DATA <= x"8E"; + when x"0F8" => DATA <= x"FF"; + when x"0F9" => DATA <= x"FF"; + when x"0FA" => DATA <= x"1F"; + when x"0FB" => DATA <= x"12"; + when x"0FC" => DATA <= x"BD"; + when x"0FD" => DATA <= x"FF"; + when x"0FE" => DATA <= x"F4"; + when x"0FF" => DATA <= x"8C"; + when x"100" => DATA <= x"00"; + when x"101" => DATA <= x"00"; + when x"102" => DATA <= x"35"; + when x"103" => DATA <= x"B2"; + when x"104" => DATA <= x"34"; + when x"105" => DATA <= x"06"; + when x"106" => DATA <= x"1F"; + when x"107" => DATA <= x"10"; + when x"108" => DATA <= x"8D"; + when x"109" => DATA <= x"06"; + when x"10A" => DATA <= x"1F"; + when x"10B" => DATA <= x"98"; + when x"10C" => DATA <= x"8D"; + when x"10D" => DATA <= x"02"; + when x"10E" => DATA <= x"35"; + when x"10F" => DATA <= x"86"; + when x"110" => DATA <= x"34"; + when x"111" => DATA <= x"02"; + when x"112" => DATA <= x"44"; + when x"113" => DATA <= x"44"; + when x"114" => DATA <= x"44"; + when x"115" => DATA <= x"44"; + when x"116" => DATA <= x"8D"; + when x"117" => DATA <= x"06"; + when x"118" => DATA <= x"A6"; + when x"119" => DATA <= x"E4"; + when x"11A" => DATA <= x"8D"; + when x"11B" => DATA <= x"02"; + when x"11C" => DATA <= x"35"; + when x"11D" => DATA <= x"82"; + when x"11E" => DATA <= x"84"; + when x"11F" => DATA <= x"0F"; + when x"120" => DATA <= x"81"; + when x"121" => DATA <= x"0A"; + when x"122" => DATA <= x"25"; + when x"123" => DATA <= x"02"; + when x"124" => DATA <= x"8B"; + when x"125" => DATA <= x"07"; + when x"126" => DATA <= x"8B"; + when x"127" => DATA <= x"30"; + when x"128" => DATA <= x"7E"; + when x"129" => DATA <= x"FF"; + when x"12A" => DATA <= x"EE"; + when x"12B" => DATA <= x"35"; + when x"12C" => DATA <= x"10"; + when x"12D" => DATA <= x"8D"; + when x"12E" => DATA <= x"03"; + when x"12F" => DATA <= x"34"; + when x"130" => DATA <= x"10"; + when x"131" => DATA <= x"39"; + when x"132" => DATA <= x"A6"; + when x"133" => DATA <= x"80"; + when x"134" => DATA <= x"27"; + when x"135" => DATA <= x"FB"; + when x"136" => DATA <= x"BD"; + when x"137" => DATA <= x"FF"; + when x"138" => DATA <= x"E3"; + when x"139" => DATA <= x"20"; + when x"13A" => DATA <= x"F7"; + when x"13B" => DATA <= x"10"; + when x"13C" => DATA <= x"8E"; + when x"13D" => DATA <= x"00"; + when x"13E" => DATA <= x"00"; + when x"13F" => DATA <= x"A6"; + when x"140" => DATA <= x"80"; + when x"141" => DATA <= x"81"; + when x"142" => DATA <= x"30"; + when x"143" => DATA <= x"25"; + when x"144" => DATA <= x"2B"; + when x"145" => DATA <= x"81"; + when x"146" => DATA <= x"3A"; + when x"147" => DATA <= x"25"; + when x"148" => DATA <= x"0A"; + when x"149" => DATA <= x"84"; + when x"14A" => DATA <= x"DF"; + when x"14B" => DATA <= x"80"; + when x"14C" => DATA <= x"07"; + when x"14D" => DATA <= x"25"; + when x"14E" => DATA <= x"21"; + when x"14F" => DATA <= x"81"; + when x"150" => DATA <= x"40"; + when x"151" => DATA <= x"24"; + when x"152" => DATA <= x"1D"; + when x"153" => DATA <= x"84"; + when x"154" => DATA <= x"0F"; + when x"155" => DATA <= x"1E"; + when x"156" => DATA <= x"02"; + when x"157" => DATA <= x"58"; + when x"158" => DATA <= x"49"; + when x"159" => DATA <= x"58"; + when x"15A" => DATA <= x"49"; + when x"15B" => DATA <= x"58"; + when x"15C" => DATA <= x"49"; + when x"15D" => DATA <= x"58"; + when x"15E" => DATA <= x"49"; + when x"15F" => DATA <= x"1E"; + when x"160" => DATA <= x"12"; + when x"161" => DATA <= x"1E"; + when x"162" => DATA <= x"01"; + when x"163" => DATA <= x"1E"; + when x"164" => DATA <= x"89"; + when x"165" => DATA <= x"3A"; + when x"166" => DATA <= x"1E"; + when x"167" => DATA <= x"12"; + when x"168" => DATA <= x"20"; + when x"169" => DATA <= x"D5"; + when x"16A" => DATA <= x"A6"; + when x"16B" => DATA <= x"80"; + when x"16C" => DATA <= x"81"; + when x"16D" => DATA <= x"20"; + when x"16E" => DATA <= x"27"; + when x"16F" => DATA <= x"FA"; + when x"170" => DATA <= x"30"; + when x"171" => DATA <= x"1F"; + when x"172" => DATA <= x"81"; + when x"173" => DATA <= x"21"; + when x"174" => DATA <= x"39"; + when x"175" => DATA <= x"34"; + when x"176" => DATA <= x"7C"; + when x"177" => DATA <= x"10"; + when x"178" => DATA <= x"FF"; + when x"179" => DATA <= x"F9"; + when x"17A" => DATA <= x"83"; + when x"17B" => DATA <= x"10"; + when x"17C" => DATA <= x"CE"; + when x"17D" => DATA <= x"FF"; + when x"17E" => DATA <= x"28"; + when x"17F" => DATA <= x"8D"; + when x"180" => DATA <= x"0F"; + when x"181" => DATA <= x"10"; + when x"182" => DATA <= x"CE"; + when x"183" => DATA <= x"00"; + when x"184" => DATA <= x"00"; + when x"185" => DATA <= x"35"; + when x"186" => DATA <= x"FC"; + when x"187" => DATA <= x"48"; + when x"188" => DATA <= x"45"; + when x"189" => DATA <= x"4C"; + when x"18A" => DATA <= x"50"; + when x"18B" => DATA <= x"80"; + when x"18C" => DATA <= x"47"; + when x"18D" => DATA <= x"4F"; + when x"18E" => DATA <= x"81"; + when x"18F" => DATA <= x"00"; + when x"190" => DATA <= x"8D"; + when x"191" => DATA <= x"D8"; + when x"192" => DATA <= x"A6"; + when x"193" => DATA <= x"80"; + when x"194" => DATA <= x"81"; + when x"195" => DATA <= x"2A"; + when x"196" => DATA <= x"27"; + when x"197" => DATA <= x"F8"; + when x"198" => DATA <= x"30"; + when x"199" => DATA <= x"1F"; + when x"19A" => DATA <= x"34"; + when x"19B" => DATA <= x"10"; + when x"19C" => DATA <= x"A6"; + when x"19D" => DATA <= x"80"; + when x"19E" => DATA <= x"81"; + when x"19F" => DATA <= x"21"; + when x"1A0" => DATA <= x"24"; + when x"1A1" => DATA <= x"FA"; + when x"1A2" => DATA <= x"30"; + when x"1A3" => DATA <= x"1F"; + when x"1A4" => DATA <= x"8D"; + when x"1A5" => DATA <= x"C4"; + when x"1A6" => DATA <= x"BF"; + when x"1A7" => DATA <= x"FF"; + when x"1A8" => DATA <= x"86"; + when x"1A9" => DATA <= x"10"; + when x"1AA" => DATA <= x"8E"; + when x"1AB" => DATA <= x"F9"; + when x"1AC" => DATA <= x"87"; + when x"1AD" => DATA <= x"AE"; + when x"1AE" => DATA <= x"E4"; + when x"1AF" => DATA <= x"A6"; + when x"1B0" => DATA <= x"84"; + when x"1B1" => DATA <= x"81"; + when x"1B2" => DATA <= x"41"; + when x"1B3" => DATA <= x"25"; + when x"1B4" => DATA <= x"68"; + when x"1B5" => DATA <= x"A6"; + when x"1B6" => DATA <= x"80"; + when x"1B7" => DATA <= x"84"; + when x"1B8" => DATA <= x"DF"; + when x"1B9" => DATA <= x"A1"; + when x"1BA" => DATA <= x"A0"; + when x"1BB" => DATA <= x"27"; + when x"1BC" => DATA <= x"F8"; + when x"1BD" => DATA <= x"A6"; + when x"1BE" => DATA <= x"A2"; + when x"1BF" => DATA <= x"2B"; + when x"1C0" => DATA <= x"16"; + when x"1C1" => DATA <= x"A6"; + when x"1C2" => DATA <= x"1F"; + when x"1C3" => DATA <= x"81"; + when x"1C4" => DATA <= x"2E"; + when x"1C5" => DATA <= x"27"; + when x"1C6" => DATA <= x"0A"; + when x"1C7" => DATA <= x"A6"; + when x"1C8" => DATA <= x"A0"; + when x"1C9" => DATA <= x"2A"; + when x"1CA" => DATA <= x"FC"; + when x"1CB" => DATA <= x"A6"; + when x"1CC" => DATA <= x"A4"; + when x"1CD" => DATA <= x"26"; + when x"1CE" => DATA <= x"DE"; + when x"1CF" => DATA <= x"20"; + when x"1D0" => DATA <= x"4C"; + when x"1D1" => DATA <= x"A6"; + when x"1D2" => DATA <= x"A0"; + when x"1D3" => DATA <= x"2A"; + when x"1D4" => DATA <= x"FC"; + when x"1D5" => DATA <= x"20"; + when x"1D6" => DATA <= x"06"; + when x"1D7" => DATA <= x"E6"; + when x"1D8" => DATA <= x"82"; + when x"1D9" => DATA <= x"C1"; + when x"1DA" => DATA <= x"21"; + when x"1DB" => DATA <= x"24"; + when x"1DC" => DATA <= x"40"; + when x"1DD" => DATA <= x"81"; + when x"1DE" => DATA <= x"80"; + when x"1DF" => DATA <= x"27"; + when x"1E0" => DATA <= x"2D"; + when x"1E1" => DATA <= x"8D"; + when x"1E2" => DATA <= x"87"; + when x"1E3" => DATA <= x"10"; + when x"1E4" => DATA <= x"BE"; + when x"1E5" => DATA <= x"FF"; + when x"1E6" => DATA <= x"90"; + when x"1E7" => DATA <= x"81"; + when x"1E8" => DATA <= x"0D"; + when x"1E9" => DATA <= x"27"; + when x"1EA" => DATA <= x"18"; + when x"1EB" => DATA <= x"81"; + when x"1EC" => DATA <= x"3B"; + when x"1ED" => DATA <= x"27"; + when x"1EE" => DATA <= x"12"; + when x"1EF" => DATA <= x"BD"; + when x"1F0" => DATA <= x"FF"; + when x"1F1" => DATA <= x"9E"; + when x"1F2" => DATA <= x"24"; + when x"1F3" => DATA <= x"29"; + when x"1F4" => DATA <= x"BD"; + when x"1F5" => DATA <= x"F9"; + when x"1F6" => DATA <= x"6A"; + when x"1F7" => DATA <= x"81"; + when x"1F8" => DATA <= x"3B"; + when x"1F9" => DATA <= x"27"; + when x"1FA" => DATA <= x"06"; + when x"1FB" => DATA <= x"81"; + when x"1FC" => DATA <= x"0D"; + when x"1FD" => DATA <= x"26"; + when x"1FE" => DATA <= x"1E"; + when x"1FF" => DATA <= x"30"; + when x"200" => DATA <= x"1F"; + when x"201" => DATA <= x"30"; + when x"202" => DATA <= x"01"; + when x"203" => DATA <= x"BF"; + when x"204" => DATA <= x"FF"; + when x"205" => DATA <= x"86"; + when x"206" => DATA <= x"35"; + when x"207" => DATA <= x"10"; + when x"208" => DATA <= x"1F"; + when x"209" => DATA <= x"21"; + when x"20A" => DATA <= x"1A"; + when x"20B" => DATA <= x"01"; + when x"20C" => DATA <= x"20"; + when x"20D" => DATA <= x"23"; + when x"20E" => DATA <= x"BD"; + when x"20F" => DATA <= x"F9"; + when x"210" => DATA <= x"6A"; + when x"211" => DATA <= x"25"; + when x"212" => DATA <= x"04"; + when x"213" => DATA <= x"81"; + when x"214" => DATA <= x"2E"; + when x"215" => DATA <= x"26"; + when x"216" => DATA <= x"06"; + when x"217" => DATA <= x"8E"; + when x"218" => DATA <= x"F8"; + when x"219" => DATA <= x"16"; + when x"21A" => DATA <= x"BD"; + when x"21B" => DATA <= x"F9"; + when x"21C" => DATA <= x"32"; + when x"21D" => DATA <= x"35"; + when x"21E" => DATA <= x"10"; + when x"21F" => DATA <= x"86"; + when x"220" => DATA <= x"02"; + when x"221" => DATA <= x"BD"; + when x"222" => DATA <= x"FC"; + when x"223" => DATA <= x"D0"; + when x"224" => DATA <= x"BD"; + when x"225" => DATA <= x"FC"; + when x"226" => DATA <= x"94"; + when x"227" => DATA <= x"1A"; + when x"228" => DATA <= x"01"; + when x"229" => DATA <= x"BD"; + when x"22A" => DATA <= x"FA"; + when x"22B" => DATA <= x"AD"; + when x"22C" => DATA <= x"2A"; + when x"22D" => DATA <= x"51"; + when x"22E" => DATA <= x"BE"; + when x"22F" => DATA <= x"FF"; + when x"230" => DATA <= x"8E"; + when x"231" => DATA <= x"34"; + when x"232" => DATA <= x"01"; + when x"233" => DATA <= x"1F"; + when x"234" => DATA <= x"12"; + when x"235" => DATA <= x"E6"; + when x"236" => DATA <= x"07"; + when x"237" => DATA <= x"3A"; + when x"238" => DATA <= x"CE"; + when x"239" => DATA <= x"FA"; + when x"23A" => DATA <= x"8C"; + when x"23B" => DATA <= x"C6"; + when x"23C" => DATA <= x"04"; + when x"23D" => DATA <= x"A6"; + when x"23E" => DATA <= x"80"; + when x"23F" => DATA <= x"A1"; + when x"240" => DATA <= x"C2"; + when x"241" => DATA <= x"26"; + when x"242" => DATA <= x"3D"; + when x"243" => DATA <= x"5A"; + when x"244" => DATA <= x"26"; + when x"245" => DATA <= x"F7"; + when x"246" => DATA <= x"A6"; + when x"247" => DATA <= x"26"; + when x"248" => DATA <= x"48"; + when x"249" => DATA <= x"2A"; + when x"24A" => DATA <= x"41"; + when x"24B" => DATA <= x"84"; + when x"24C" => DATA <= x"1E"; + when x"24D" => DATA <= x"81"; + when x"24E" => DATA <= x"06"; + when x"24F" => DATA <= x"26"; + when x"250" => DATA <= x"3B"; + when x"251" => DATA <= x"30"; + when x"252" => DATA <= x"1C"; + when x"253" => DATA <= x"BF"; + when x"254" => DATA <= x"FF"; + when x"255" => DATA <= x"82"; + when x"256" => DATA <= x"FE"; + when x"257" => DATA <= x"FF"; + when x"258" => DATA <= x"90"; + when x"259" => DATA <= x"BE"; + when x"25A" => DATA <= x"FF"; + when x"25B" => DATA <= x"8A"; + when x"25C" => DATA <= x"35"; + when x"25D" => DATA <= x"02"; + when x"25E" => DATA <= x"34"; + when x"25F" => DATA <= x"50"; + when x"260" => DATA <= x"10"; + when x"261" => DATA <= x"8C"; + when x"262" => DATA <= x"80"; + when x"263" => DATA <= x"00"; + when x"264" => DATA <= x"25"; + when x"265" => DATA <= x"04"; + when x"266" => DATA <= x"10"; + when x"267" => DATA <= x"BF"; + when x"268" => DATA <= x"FF"; + when x"269" => DATA <= x"8A"; + when x"26A" => DATA <= x"46"; + when x"26B" => DATA <= x"10"; + when x"26C" => DATA <= x"BF"; + when x"26D" => DATA <= x"FF"; + when x"26E" => DATA <= x"90"; + when x"26F" => DATA <= x"BE"; + when x"270" => DATA <= x"FF"; + when x"271" => DATA <= x"86"; + when x"272" => DATA <= x"86"; + when x"273" => DATA <= x"01"; + when x"274" => DATA <= x"AD"; + when x"275" => DATA <= x"A4"; + when x"276" => DATA <= x"35"; + when x"277" => DATA <= x"60"; + when x"278" => DATA <= x"10"; + when x"279" => DATA <= x"BF"; + when x"27A" => DATA <= x"FF"; + when x"27B" => DATA <= x"8A"; + when x"27C" => DATA <= x"FF"; + when x"27D" => DATA <= x"FF"; + when x"27E" => DATA <= x"90"; + when x"27F" => DATA <= x"39"; + when x"280" => DATA <= x"BE"; + when x"281" => DATA <= x"FF"; + when x"282" => DATA <= x"86"; + when x"283" => DATA <= x"4F"; + when x"284" => DATA <= x"35"; + when x"285" => DATA <= x"01"; + when x"286" => DATA <= x"6E"; + when x"287" => DATA <= x"A4"; + when x"288" => DATA <= x"29"; + when x"289" => DATA <= x"43"; + when x"28A" => DATA <= x"28"; + when x"28B" => DATA <= x"00"; + when x"28C" => DATA <= x"35"; + when x"28D" => DATA <= x"01"; + when x"28E" => DATA <= x"10"; + when x"28F" => DATA <= x"24"; + when x"290" => DATA <= x"05"; + when x"291" => DATA <= x"27"; + when x"292" => DATA <= x"BD"; + when x"293" => DATA <= x"F8"; + when x"294" => DATA <= x"CB"; + when x"295" => DATA <= x"3F"; + when x"296" => DATA <= x"F9"; + when x"297" => DATA <= x"4E"; + when x"298" => DATA <= x"6F"; + when x"299" => DATA <= x"74"; + when x"29A" => DATA <= x"20"; + when x"29B" => DATA <= x"36"; + when x"29C" => DATA <= x"38"; + when x"29D" => DATA <= x"30"; + when x"29E" => DATA <= x"39"; + when x"29F" => DATA <= x"20"; + when x"2A0" => DATA <= x"63"; + when x"2A1" => DATA <= x"6F"; + when x"2A2" => DATA <= x"64"; + when x"2A3" => DATA <= x"65"; + when x"2A4" => DATA <= x"00"; + when x"2A5" => DATA <= x"4F"; + when x"2A6" => DATA <= x"BD"; + when x"2A7" => DATA <= x"FC"; + when x"2A8" => DATA <= x"D0"; + when x"2A9" => DATA <= x"8D"; + when x"2AA" => DATA <= x"02"; + when x"2AB" => DATA <= x"8B"; + when x"2AC" => DATA <= x"80"; + when x"2AD" => DATA <= x"B6"; + when x"2AE" => DATA <= x"FE"; + when x"2AF" => DATA <= x"E2"; + when x"2B0" => DATA <= x"2A"; + when x"2B1" => DATA <= x"FB"; + when x"2B2" => DATA <= x"B6"; + when x"2B3" => DATA <= x"FE"; + when x"2B4" => DATA <= x"E3"; + when x"2B5" => DATA <= x"39"; + when x"2B6" => DATA <= x"34"; + when x"2B7" => DATA <= x"06"; + when x"2B8" => DATA <= x"4D"; + when x"2B9" => DATA <= x"2B"; + when x"2BA" => DATA <= x"1A"; + when x"2BB" => DATA <= x"86"; + when x"2BC" => DATA <= x"04"; + when x"2BD" => DATA <= x"BD"; + when x"2BE" => DATA <= x"FC"; + when x"2BF" => DATA <= x"D0"; + when x"2C0" => DATA <= x"1F"; + when x"2C1" => DATA <= x"10"; + when x"2C2" => DATA <= x"BD"; + when x"2C3" => DATA <= x"FC"; + when x"2C4" => DATA <= x"CE"; + when x"2C5" => DATA <= x"35"; + when x"2C6" => DATA <= x"06"; + when x"2C7" => DATA <= x"34"; + when x"2C8" => DATA <= x"06"; + when x"2C9" => DATA <= x"BD"; + when x"2CA" => DATA <= x"FC"; + when x"2CB" => DATA <= x"D0"; + when x"2CC" => DATA <= x"8D"; + when x"2CD" => DATA <= x"DF"; + when x"2CE" => DATA <= x"1F"; + when x"2CF" => DATA <= x"89"; + when x"2D0" => DATA <= x"4F"; + when x"2D1" => DATA <= x"1F"; + when x"2D2" => DATA <= x"01"; + when x"2D3" => DATA <= x"35"; + when x"2D4" => DATA <= x"86"; + when x"2D5" => DATA <= x"81"; + when x"2D6" => DATA <= x"82"; + when x"2D7" => DATA <= x"27"; + when x"2D8" => DATA <= x"3B"; + when x"2D9" => DATA <= x"81"; + when x"2DA" => DATA <= x"83"; + when x"2DB" => DATA <= x"27"; + when x"2DC" => DATA <= x"39"; + when x"2DD" => DATA <= x"81"; + when x"2DE" => DATA <= x"84"; + when x"2DF" => DATA <= x"27"; + when x"2E0" => DATA <= x"35"; + when x"2E1" => DATA <= x"86"; + when x"2E2" => DATA <= x"06"; + when x"2E3" => DATA <= x"BD"; + when x"2E4" => DATA <= x"FC"; + when x"2E5" => DATA <= x"D0"; + when x"2E6" => DATA <= x"1F"; + when x"2E7" => DATA <= x"10"; + when x"2E8" => DATA <= x"BD"; + when x"2E9" => DATA <= x"FC"; + when x"2EA" => DATA <= x"CE"; + when x"2EB" => DATA <= x"BD"; + when x"2EC" => DATA <= x"FC"; + when x"2ED" => DATA <= x"CC"; + when x"2EE" => DATA <= x"35"; + when x"2EF" => DATA <= x"06"; + when x"2F0" => DATA <= x"BD"; + when x"2F1" => DATA <= x"FC"; + when x"2F2" => DATA <= x"D0"; + when x"2F3" => DATA <= x"81"; + when x"2F4" => DATA <= x"9D"; + when x"2F5" => DATA <= x"27"; + when x"2F6" => DATA <= x"BE"; + when x"2F7" => DATA <= x"81"; + when x"2F8" => DATA <= x"8E"; + when x"2F9" => DATA <= x"10"; + when x"2FA" => DATA <= x"27"; + when x"2FB" => DATA <= x"FF"; + when x"2FC" => DATA <= x"2A"; + when x"2FD" => DATA <= x"34"; + when x"2FE" => DATA <= x"06"; + when x"2FF" => DATA <= x"8D"; + when x"300" => DATA <= x"AC"; + when x"301" => DATA <= x"8B"; + when x"302" => DATA <= x"80"; + when x"303" => DATA <= x"34"; + when x"304" => DATA <= x"01"; + when x"305" => DATA <= x"8D"; + when x"306" => DATA <= x"A6"; + when x"307" => DATA <= x"1F"; + when x"308" => DATA <= x"89"; + when x"309" => DATA <= x"4F"; + when x"30A" => DATA <= x"1F"; + when x"30B" => DATA <= x"02"; + when x"30C" => DATA <= x"8D"; + when x"30D" => DATA <= x"9F"; + when x"30E" => DATA <= x"1E"; + when x"30F" => DATA <= x"89"; + when x"310" => DATA <= x"1F"; + when x"311" => DATA <= x"01"; + when x"312" => DATA <= x"35"; + when x"313" => DATA <= x"87"; + when x"314" => DATA <= x"86"; + when x"315" => DATA <= x"85"; + when x"316" => DATA <= x"48"; + when x"317" => DATA <= x"8E"; + when x"318" => DATA <= x"FF"; + when x"319" => DATA <= x"82"; + when x"31A" => DATA <= x"EC"; + when x"31B" => DATA <= x"84"; + when x"31C" => DATA <= x"1F"; + when x"31D" => DATA <= x"01"; + when x"31E" => DATA <= x"1F"; + when x"31F" => DATA <= x"89"; + when x"320" => DATA <= x"4F"; + when x"321" => DATA <= x"1F"; + when x"322" => DATA <= x"02"; + when x"323" => DATA <= x"35"; + when x"324" => DATA <= x"86"; + when x"325" => DATA <= x"4D"; + when x"326" => DATA <= x"27"; + when x"327" => DATA <= x"5C"; + when x"328" => DATA <= x"34"; + when x"329" => DATA <= x"26"; + when x"32A" => DATA <= x"34"; + when x"32B" => DATA <= x"10"; + when x"32C" => DATA <= x"1F"; + when x"32D" => DATA <= x"89"; + when x"32E" => DATA <= x"86"; + when x"32F" => DATA <= x"08"; + when x"330" => DATA <= x"BD"; + when x"331" => DATA <= x"FC"; + when x"332" => DATA <= x"D0"; + when x"333" => DATA <= x"BD"; + when x"334" => DATA <= x"FC"; + when x"335" => DATA <= x"CE"; + when x"336" => DATA <= x"5D"; + when x"337" => DATA <= x"2A"; + when x"338" => DATA <= x"04"; + when x"339" => DATA <= x"A6"; + when x"33A" => DATA <= x"84"; + when x"33B" => DATA <= x"20"; + when x"33C" => DATA <= x"0C"; + when x"33D" => DATA <= x"86"; + when x"33E" => DATA <= x"10"; + when x"33F" => DATA <= x"C1"; + when x"340" => DATA <= x"15"; + when x"341" => DATA <= x"24"; + when x"342" => DATA <= x"06"; + when x"343" => DATA <= x"8E"; + when x"344" => DATA <= x"FB"; + when x"345" => DATA <= x"B3"; + when x"346" => DATA <= x"3A"; + when x"347" => DATA <= x"A6"; + when x"348" => DATA <= x"84"; + when x"349" => DATA <= x"35"; + when x"34A" => DATA <= x"10"; + when x"34B" => DATA <= x"BD"; + when x"34C" => DATA <= x"FC"; + when x"34D" => DATA <= x"D0"; + when x"34E" => DATA <= x"1F"; + when x"34F" => DATA <= x"02"; + when x"350" => DATA <= x"1E"; + when x"351" => DATA <= x"89"; + when x"352" => DATA <= x"4F"; + when x"353" => DATA <= x"1E"; + when x"354" => DATA <= x"02"; + when x"355" => DATA <= x"4A"; + when x"356" => DATA <= x"2B"; + when x"357" => DATA <= x"03"; + when x"358" => DATA <= x"BD"; + when x"359" => DATA <= x"FC"; + when x"35A" => DATA <= x"9D"; + when x"35B" => DATA <= x"34"; + when x"35C" => DATA <= x"10"; + when x"35D" => DATA <= x"5D"; + when x"35E" => DATA <= x"2A"; + when x"35F" => DATA <= x"04"; + when x"360" => DATA <= x"A6"; + when x"361" => DATA <= x"01"; + when x"362" => DATA <= x"20"; + when x"363" => DATA <= x"0C"; + when x"364" => DATA <= x"86"; + when x"365" => DATA <= x"10"; + when x"366" => DATA <= x"C1"; + when x"367" => DATA <= x"15"; + when x"368" => DATA <= x"24"; + when x"369" => DATA <= x"06"; + when x"36A" => DATA <= x"8E"; + when x"36B" => DATA <= x"FB"; + when x"36C" => DATA <= x"C7"; + when x"36D" => DATA <= x"3A"; + when x"36E" => DATA <= x"A6"; + when x"36F" => DATA <= x"84"; + when x"370" => DATA <= x"35"; + when x"371" => DATA <= x"10"; + when x"372" => DATA <= x"BD"; + when x"373" => DATA <= x"FC"; + when x"374" => DATA <= x"D0"; + when x"375" => DATA <= x"1F"; + when x"376" => DATA <= x"02"; + when x"377" => DATA <= x"1E"; + when x"378" => DATA <= x"89"; + when x"379" => DATA <= x"4F"; + when x"37A" => DATA <= x"1E"; + when x"37B" => DATA <= x"02"; + when x"37C" => DATA <= x"4A"; + when x"37D" => DATA <= x"2B"; + when x"37E" => DATA <= x"03"; + when x"37F" => DATA <= x"BD"; + when x"380" => DATA <= x"FC"; + when x"381" => DATA <= x"AD"; + when x"382" => DATA <= x"35"; + when x"383" => DATA <= x"A6"; + when x"384" => DATA <= x"86"; + when x"385" => DATA <= x"0A"; + when x"386" => DATA <= x"BD"; + when x"387" => DATA <= x"FC"; + when x"388" => DATA <= x"D0"; + when x"389" => DATA <= x"30"; + when x"38A" => DATA <= x"02"; + when x"38B" => DATA <= x"10"; + when x"38C" => DATA <= x"8E"; + when x"38D" => DATA <= x"00"; + when x"38E" => DATA <= x"03"; + when x"38F" => DATA <= x"BD"; + when x"390" => DATA <= x"FC"; + when x"391" => DATA <= x"9D"; + when x"392" => DATA <= x"30"; + when x"393" => DATA <= x"1E"; + when x"394" => DATA <= x"86"; + when x"395" => DATA <= x"07"; + when x"396" => DATA <= x"BD"; + when x"397" => DATA <= x"FC"; + when x"398" => DATA <= x"D0"; + when x"399" => DATA <= x"4F"; + when x"39A" => DATA <= x"BD"; + when x"39B" => DATA <= x"FC"; + when x"39C" => DATA <= x"D0"; + when x"39D" => DATA <= x"BD"; + when x"39E" => DATA <= x"FA"; + when x"39F" => DATA <= x"AD"; + when x"3A0" => DATA <= x"8B"; + when x"3A1" => DATA <= x"80"; + when x"3A2" => DATA <= x"25"; + when x"3A3" => DATA <= x"0F"; + when x"3A4" => DATA <= x"AE"; + when x"3A5" => DATA <= x"84"; + when x"3A6" => DATA <= x"BD"; + when x"3A7" => DATA <= x"FA"; + when x"3A8" => DATA <= x"AD"; + when x"3A9" => DATA <= x"A7"; + when x"3AA" => DATA <= x"80"; + when x"3AB" => DATA <= x"31"; + when x"3AC" => DATA <= x"21"; + when x"3AD" => DATA <= x"81"; + when x"3AE" => DATA <= x"0D"; + when x"3AF" => DATA <= x"26"; + when x"3B0" => DATA <= x"F5"; + when x"3B1" => DATA <= x"31"; + when x"3B2" => DATA <= x"3F"; + when x"3B3" => DATA <= x"39"; + when x"3B4" => DATA <= x"00"; + when x"3B5" => DATA <= x"05"; + when x"3B6" => DATA <= x"00"; + when x"3B7" => DATA <= x"05"; + when x"3B8" => DATA <= x"04"; + when x"3B9" => DATA <= x"05"; + when x"3BA" => DATA <= x"08"; + when x"3BB" => DATA <= x"0E"; + when x"3BC" => DATA <= x"04"; + when x"3BD" => DATA <= x"01"; + when x"3BE" => DATA <= x"01"; + when x"3BF" => DATA <= x"05"; + when x"3C0" => DATA <= x"00"; + when x"3C1" => DATA <= x"10"; + when x"3C2" => DATA <= x"20"; + when x"3C3" => DATA <= x"10"; + when x"3C4" => DATA <= x"0D"; + when x"3C5" => DATA <= x"00"; + when x"3C6" => DATA <= x"04"; + when x"3C7" => DATA <= x"80"; + when x"3C8" => DATA <= x"05"; + when x"3C9" => DATA <= x"00"; + when x"3CA" => DATA <= x"05"; + when x"3CB" => DATA <= x"00"; + when x"3CC" => DATA <= x"05"; + when x"3CD" => DATA <= x"00"; + when x"3CE" => DATA <= x"00"; + when x"3CF" => DATA <= x"00"; + when x"3D0" => DATA <= x"05"; + when x"3D1" => DATA <= x"09"; + when x"3D2" => DATA <= x"05"; + when x"3D3" => DATA <= x"00"; + when x"3D4" => DATA <= x"08"; + when x"3D5" => DATA <= x"19"; + when x"3D6" => DATA <= x"00"; + when x"3D7" => DATA <= x"01"; + when x"3D8" => DATA <= x"0D"; + when x"3D9" => DATA <= x"80"; + when x"3DA" => DATA <= x"04"; + when x"3DB" => DATA <= x"80"; + when x"3DC" => DATA <= x"34"; + when x"3DD" => DATA <= x"26"; + when x"3DE" => DATA <= x"86"; + when x"3DF" => DATA <= x"0C"; + when x"3E0" => DATA <= x"BD"; + when x"3E1" => DATA <= x"FC"; + when x"3E2" => DATA <= x"D0"; + when x"3E3" => DATA <= x"BD"; + when x"3E4" => DATA <= x"FC"; + when x"3E5" => DATA <= x"CC"; + when x"3E6" => DATA <= x"10"; + when x"3E7" => DATA <= x"8E"; + when x"3E8" => DATA <= x"00"; + when x"3E9" => DATA <= x"04"; + when x"3EA" => DATA <= x"BD"; + when x"3EB" => DATA <= x"FC"; + when x"3EC" => DATA <= x"9D"; + when x"3ED" => DATA <= x"35"; + when x"3EE" => DATA <= x"06"; + when x"3EF" => DATA <= x"BD"; + when x"3F0" => DATA <= x"FC"; + when x"3F1" => DATA <= x"D0"; + when x"3F2" => DATA <= x"BD"; + when x"3F3" => DATA <= x"FA"; + when x"3F4" => DATA <= x"AD"; + when x"3F5" => DATA <= x"34"; + when x"3F6" => DATA <= x"02"; + when x"3F7" => DATA <= x"10"; + when x"3F8" => DATA <= x"8E"; + when x"3F9" => DATA <= x"00"; + when x"3FA" => DATA <= x"04"; + when x"3FB" => DATA <= x"BD"; + when x"3FC" => DATA <= x"FC"; + when x"3FD" => DATA <= x"AD"; + when x"3FE" => DATA <= x"35"; + when x"3FF" => DATA <= x"A2"; + when x"400" => DATA <= x"34"; + when x"401" => DATA <= x"04"; + when x"402" => DATA <= x"86"; + when x"403" => DATA <= x"0E"; + when x"404" => DATA <= x"BD"; + when x"405" => DATA <= x"FC"; + when x"406" => DATA <= x"D0"; + when x"407" => DATA <= x"BD"; + when x"408" => DATA <= x"FC"; + when x"409" => DATA <= x"CC"; + when x"40A" => DATA <= x"35"; + when x"40B" => DATA <= x"04"; + when x"40C" => DATA <= x"7E"; + when x"40D" => DATA <= x"FA"; + when x"40E" => DATA <= x"A9"; + when x"40F" => DATA <= x"34"; + when x"410" => DATA <= x"06"; + when x"411" => DATA <= x"86"; + when x"412" => DATA <= x"10"; + when x"413" => DATA <= x"BD"; + when x"414" => DATA <= x"FC"; + when x"415" => DATA <= x"D0"; + when x"416" => DATA <= x"BD"; + when x"417" => DATA <= x"FC"; + when x"418" => DATA <= x"CC"; + when x"419" => DATA <= x"35"; + when x"41A" => DATA <= x"06"; + when x"41B" => DATA <= x"34"; + when x"41C" => DATA <= x"06"; + when x"41D" => DATA <= x"BD"; + when x"41E" => DATA <= x"FC"; + when x"41F" => DATA <= x"D0"; + when x"420" => DATA <= x"BD"; + when x"421" => DATA <= x"FA"; + when x"422" => DATA <= x"AD"; + when x"423" => DATA <= x"35"; + when x"424" => DATA <= x"86"; + when x"425" => DATA <= x"34"; + when x"426" => DATA <= x"06"; + when x"427" => DATA <= x"86"; + when x"428" => DATA <= x"12"; + when x"429" => DATA <= x"BD"; + when x"42A" => DATA <= x"FC"; + when x"42B" => DATA <= x"D0"; + when x"42C" => DATA <= x"35"; + when x"42D" => DATA <= x"06"; + when x"42E" => DATA <= x"BD"; + when x"42F" => DATA <= x"FC"; + when x"430" => DATA <= x"D0"; + when x"431" => DATA <= x"4D"; + when x"432" => DATA <= x"27"; + when x"433" => DATA <= x"06"; + when x"434" => DATA <= x"BD"; + when x"435" => DATA <= x"FC"; + when x"436" => DATA <= x"94"; + when x"437" => DATA <= x"7E"; + when x"438" => DATA <= x"FA"; + when x"439" => DATA <= x"AD"; + when x"43A" => DATA <= x"34"; + when x"43B" => DATA <= x"04"; + when x"43C" => DATA <= x"BD"; + when x"43D" => DATA <= x"FC"; + when x"43E" => DATA <= x"CC"; + when x"43F" => DATA <= x"BD"; + when x"440" => DATA <= x"FA"; + when x"441" => DATA <= x"AD"; + when x"442" => DATA <= x"4F"; + when x"443" => DATA <= x"35"; + when x"444" => DATA <= x"84"; + when x"445" => DATA <= x"34"; + when x"446" => DATA <= x"32"; + when x"447" => DATA <= x"86"; + when x"448" => DATA <= x"14"; + when x"449" => DATA <= x"BD"; + when x"44A" => DATA <= x"FC"; + when x"44B" => DATA <= x"D0"; + when x"44C" => DATA <= x"30"; + when x"44D" => DATA <= x"02"; + when x"44E" => DATA <= x"10"; + when x"44F" => DATA <= x"8E"; + when x"450" => DATA <= x"00"; + when x"451" => DATA <= x"10"; + when x"452" => DATA <= x"BD"; + when x"453" => DATA <= x"FC"; + when x"454" => DATA <= x"9D"; + when x"455" => DATA <= x"30"; + when x"456" => DATA <= x"1E"; + when x"457" => DATA <= x"AE"; + when x"458" => DATA <= x"84"; + when x"459" => DATA <= x"BD"; + when x"45A" => DATA <= x"FC"; + when x"45B" => DATA <= x"94"; + when x"45C" => DATA <= x"35"; + when x"45D" => DATA <= x"02"; + when x"45E" => DATA <= x"BD"; + when x"45F" => DATA <= x"FC"; + when x"460" => DATA <= x"D0"; + when x"461" => DATA <= x"BD"; + when x"462" => DATA <= x"FA"; + when x"463" => DATA <= x"AD"; + when x"464" => DATA <= x"35"; + when x"465" => DATA <= x"10"; + when x"466" => DATA <= x"34"; + when x"467" => DATA <= x"02"; + when x"468" => DATA <= x"30"; + when x"469" => DATA <= x"02"; + when x"46A" => DATA <= x"10"; + when x"46B" => DATA <= x"8E"; + when x"46C" => DATA <= x"00"; + when x"46D" => DATA <= x"10"; + when x"46E" => DATA <= x"BD"; + when x"46F" => DATA <= x"FC"; + when x"470" => DATA <= x"AD"; + when x"471" => DATA <= x"30"; + when x"472" => DATA <= x"1E"; + when x"473" => DATA <= x"35"; + when x"474" => DATA <= x"A2"; + when x"475" => DATA <= x"34"; + when x"476" => DATA <= x"22"; + when x"477" => DATA <= x"86"; + when x"478" => DATA <= x"16"; + when x"479" => DATA <= x"BD"; + when x"47A" => DATA <= x"FC"; + when x"47B" => DATA <= x"D0"; + when x"47C" => DATA <= x"10"; + when x"47D" => DATA <= x"8E"; + when x"47E" => DATA <= x"00"; + when x"47F" => DATA <= x"0D"; + when x"480" => DATA <= x"BD"; + when x"481" => DATA <= x"FC"; + when x"482" => DATA <= x"9D"; + when x"483" => DATA <= x"35"; + when x"484" => DATA <= x"02"; + when x"485" => DATA <= x"BD"; + when x"486" => DATA <= x"FC"; + when x"487" => DATA <= x"D0"; + when x"488" => DATA <= x"10"; + when x"489" => DATA <= x"8E"; + when x"48A" => DATA <= x"00"; + when x"48B" => DATA <= x"0D"; + when x"48C" => DATA <= x"BD"; + when x"48D" => DATA <= x"FC"; + when x"48E" => DATA <= x"AD"; + when x"48F" => DATA <= x"35"; + when x"490" => DATA <= x"20"; + when x"491" => DATA <= x"7E"; + when x"492" => DATA <= x"FA"; + when x"493" => DATA <= x"A9"; + when x"494" => DATA <= x"A6"; + when x"495" => DATA <= x"80"; + when x"496" => DATA <= x"8D"; + when x"497" => DATA <= x"38"; + when x"498" => DATA <= x"81"; + when x"499" => DATA <= x"0D"; + when x"49A" => DATA <= x"26"; + when x"49B" => DATA <= x"F8"; + when x"49C" => DATA <= x"39"; + when x"49D" => DATA <= x"34"; + when x"49E" => DATA <= x"04"; + when x"49F" => DATA <= x"1F"; + when x"4A0" => DATA <= x"20"; + when x"4A1" => DATA <= x"3A"; + when x"4A2" => DATA <= x"35"; + when x"4A3" => DATA <= x"04"; + when x"4A4" => DATA <= x"A6"; + when x"4A5" => DATA <= x"82"; + when x"4A6" => DATA <= x"8D"; + when x"4A7" => DATA <= x"28"; + when x"4A8" => DATA <= x"31"; + when x"4A9" => DATA <= x"3F"; + when x"4AA" => DATA <= x"26"; + when x"4AB" => DATA <= x"F8"; + when x"4AC" => DATA <= x"39"; + when x"4AD" => DATA <= x"34"; + when x"4AE" => DATA <= x"04"; + when x"4AF" => DATA <= x"1F"; + when x"4B0" => DATA <= x"20"; + when x"4B1" => DATA <= x"3A"; + when x"4B2" => DATA <= x"35"; + when x"4B3" => DATA <= x"04"; + when x"4B4" => DATA <= x"BD"; + when x"4B5" => DATA <= x"FA"; + when x"4B6" => DATA <= x"AD"; + when x"4B7" => DATA <= x"A7"; + when x"4B8" => DATA <= x"82"; + when x"4B9" => DATA <= x"31"; + when x"4BA" => DATA <= x"3F"; + when x"4BB" => DATA <= x"26"; + when x"4BC" => DATA <= x"F7"; + when x"4BD" => DATA <= x"39"; + when x"4BE" => DATA <= x"34"; + when x"4BF" => DATA <= x"02"; + when x"4C0" => DATA <= x"B6"; + when x"4C1" => DATA <= x"FE"; + when x"4C2" => DATA <= x"E0"; + when x"4C3" => DATA <= x"48"; + when x"4C4" => DATA <= x"2A"; + when x"4C5" => DATA <= x"FA"; + when x"4C6" => DATA <= x"35"; + when x"4C7" => DATA <= x"02"; + when x"4C8" => DATA <= x"B7"; + when x"4C9" => DATA <= x"FE"; + when x"4CA" => DATA <= x"E1"; + when x"4CB" => DATA <= x"39"; + when x"4CC" => DATA <= x"1F"; + when x"4CD" => DATA <= x"20"; + when x"4CE" => DATA <= x"1F"; + when x"4CF" => DATA <= x"98"; + when x"4D0" => DATA <= x"34"; + when x"4D1" => DATA <= x"02"; + when x"4D2" => DATA <= x"B6"; + when x"4D3" => DATA <= x"FE"; + when x"4D4" => DATA <= x"E2"; + when x"4D5" => DATA <= x"48"; + when x"4D6" => DATA <= x"2A"; + when x"4D7" => DATA <= x"FA"; + when x"4D8" => DATA <= x"35"; + when x"4D9" => DATA <= x"02"; + when x"4DA" => DATA <= x"B7"; + when x"4DB" => DATA <= x"FE"; + when x"4DC" => DATA <= x"E3"; + when x"4DD" => DATA <= x"39"; + when x"4DE" => DATA <= x"34"; + when x"4DF" => DATA <= x"02"; + when x"4E0" => DATA <= x"B6"; + when x"4E1" => DATA <= x"FE"; + when x"4E2" => DATA <= x"E6"; + when x"4E3" => DATA <= x"2B"; + when x"4E4" => DATA <= x"51"; + when x"4E5" => DATA <= x"B6"; + when x"4E6" => DATA <= x"FE"; + when x"4E7" => DATA <= x"E0"; + when x"4E8" => DATA <= x"2B"; + when x"4E9" => DATA <= x"06"; + when x"4EA" => DATA <= x"35"; + when x"4EB" => DATA <= x"02"; + when x"4EC" => DATA <= x"6E"; + when x"4ED" => DATA <= x"9F"; + when x"4EE" => DATA <= x"FF"; + when x"4EF" => DATA <= x"B1"; + when x"4F0" => DATA <= x"B6"; + when x"4F1" => DATA <= x"FE"; + when x"4F2" => DATA <= x"E1"; + when x"4F3" => DATA <= x"2B"; + when x"4F4" => DATA <= x"1B"; + when x"4F5" => DATA <= x"35"; + when x"4F6" => DATA <= x"02"; + when x"4F7" => DATA <= x"34"; + when x"4F8" => DATA <= x"76"; + when x"4F9" => DATA <= x"8D"; + when x"4FA" => DATA <= x"1C"; + when x"4FB" => DATA <= x"1F"; + when x"4FC" => DATA <= x"89"; + when x"4FD" => DATA <= x"4F"; + when x"4FE" => DATA <= x"1F"; + when x"4FF" => DATA <= x"02"; + when x"500" => DATA <= x"8D"; + when x"501" => DATA <= x"15"; + when x"502" => DATA <= x"1F"; + when x"503" => DATA <= x"89"; + when x"504" => DATA <= x"4F"; + when x"505" => DATA <= x"1F"; + when x"506" => DATA <= x"01"; + when x"507" => DATA <= x"8D"; + when x"508" => DATA <= x"0E"; + when x"509" => DATA <= x"AD"; + when x"50A" => DATA <= x"9F"; + when x"50B" => DATA <= x"FF"; + when x"50C" => DATA <= x"FC"; + when x"50D" => DATA <= x"35"; + when x"50E" => DATA <= x"76"; + when x"50F" => DATA <= x"3B"; + when x"510" => DATA <= x"48"; + when x"511" => DATA <= x"B7"; + when x"512" => DATA <= x"FF"; + when x"513" => DATA <= x"80"; + when x"514" => DATA <= x"35"; + when x"515" => DATA <= x"02"; + when x"516" => DATA <= x"3B"; + when x"517" => DATA <= x"B6"; + when x"518" => DATA <= x"FE"; + when x"519" => DATA <= x"E6"; + when x"51A" => DATA <= x"2B"; + when x"51B" => DATA <= x"02"; + when x"51C" => DATA <= x"8D"; + when x"51D" => DATA <= x"12"; + when x"51E" => DATA <= x"B6"; + when x"51F" => DATA <= x"FE"; + when x"520" => DATA <= x"E0"; + when x"521" => DATA <= x"2A"; + when x"522" => DATA <= x"F4"; + when x"523" => DATA <= x"B6"; + when x"524" => DATA <= x"FE"; + when x"525" => DATA <= x"E1"; + when x"526" => DATA <= x"39"; + when x"527" => DATA <= x"B6"; + when x"528" => DATA <= x"FE"; + when x"529" => DATA <= x"E6"; + when x"52A" => DATA <= x"2A"; + when x"52B" => DATA <= x"FB"; + when x"52C" => DATA <= x"B6"; + when x"52D" => DATA <= x"FE"; + when x"52E" => DATA <= x"E7"; + when x"52F" => DATA <= x"39"; + when x"530" => DATA <= x"1C"; + when x"531" => DATA <= x"7F"; + when x"532" => DATA <= x"34"; + when x"533" => DATA <= x"01"; + when x"534" => DATA <= x"34"; + when x"535" => DATA <= x"02"; + when x"536" => DATA <= x"35"; + when x"537" => DATA <= x"02"; + when x"538" => DATA <= x"34"; + when x"539" => DATA <= x"16"; + when x"53A" => DATA <= x"B6"; + when x"53B" => DATA <= x"FE"; + when x"53C" => DATA <= x"E7"; + when x"53D" => DATA <= x"2A"; + when x"53E" => DATA <= x"22"; + when x"53F" => DATA <= x"10"; + when x"540" => DATA <= x"CE"; + when x"541" => DATA <= x"FF"; + when x"542" => DATA <= x"80"; + when x"543" => DATA <= x"8E"; + when x"544" => DATA <= x"FF"; + when x"545" => DATA <= x"00"; + when x"546" => DATA <= x"BD"; + when x"547" => DATA <= x"FA"; + when x"548" => DATA <= x"AD"; + when x"549" => DATA <= x"86"; + when x"54A" => DATA <= x"3F"; + when x"54B" => DATA <= x"A7"; + when x"54C" => DATA <= x"80"; + when x"54D" => DATA <= x"BD"; + when x"54E" => DATA <= x"FA"; + when x"54F" => DATA <= x"AD"; + when x"550" => DATA <= x"A7"; + when x"551" => DATA <= x"80"; + when x"552" => DATA <= x"BD"; + when x"553" => DATA <= x"FA"; + when x"554" => DATA <= x"AD"; + when x"555" => DATA <= x"A7"; + when x"556" => DATA <= x"80"; + when x"557" => DATA <= x"26"; + when x"558" => DATA <= x"F9"; + when x"559" => DATA <= x"8E"; + when x"55A" => DATA <= x"FF"; + when x"55B" => DATA <= x"01"; + when x"55C" => DATA <= x"34"; + when x"55D" => DATA <= x"10"; + when x"55E" => DATA <= x"7E"; + when x"55F" => DATA <= x"FF"; + when x"560" => DATA <= x"BC"; + when x"561" => DATA <= x"34"; + when x"562" => DATA <= x"02"; + when x"563" => DATA <= x"8D"; + when x"564" => DATA <= x"C2"; + when x"565" => DATA <= x"35"; + when x"566" => DATA <= x"02"; + when x"567" => DATA <= x"81"; + when x"568" => DATA <= x"05"; + when x"569" => DATA <= x"26"; + when x"56A" => DATA <= x"06"; + when x"56B" => DATA <= x"7F"; + when x"56C" => DATA <= x"FF"; + when x"56D" => DATA <= x"94"; + when x"56E" => DATA <= x"35"; + when x"56F" => DATA <= x"16"; + when x"570" => DATA <= x"3B"; + when x"571" => DATA <= x"34"; + when x"572" => DATA <= x"02"; + when x"573" => DATA <= x"8D"; + when x"574" => DATA <= x"B2"; + when x"575" => DATA <= x"B7"; + when x"576" => DATA <= x"FF"; + when x"577" => DATA <= x"8C"; + when x"578" => DATA <= x"8D"; + when x"579" => DATA <= x"AD"; + when x"57A" => DATA <= x"B7"; + when x"57B" => DATA <= x"FF"; + when x"57C" => DATA <= x"8D"; + when x"57D" => DATA <= x"8D"; + when x"57E" => DATA <= x"A8"; + when x"57F" => DATA <= x"B7"; + when x"580" => DATA <= x"FF"; + when x"581" => DATA <= x"8E"; + when x"582" => DATA <= x"8D"; + when x"583" => DATA <= x"A3"; + when x"584" => DATA <= x"B7"; + when x"585" => DATA <= x"FF"; + when x"586" => DATA <= x"8F"; + when x"587" => DATA <= x"8D"; + when x"588" => DATA <= x"9E"; + when x"589" => DATA <= x"86"; + when x"58A" => DATA <= x"FF"; + when x"58B" => DATA <= x"B7"; + when x"58C" => DATA <= x"FF"; + when x"58D" => DATA <= x"94"; + when x"58E" => DATA <= x"1C"; + when x"58F" => DATA <= x"BF"; + when x"590" => DATA <= x"BE"; + when x"591" => DATA <= x"FF"; + when x"592" => DATA <= x"8E"; + when x"593" => DATA <= x"A6"; + when x"594" => DATA <= x"E0"; + when x"595" => DATA <= x"27"; + when x"596" => DATA <= x"6C"; + when x"597" => DATA <= x"81"; + when x"598" => DATA <= x"02"; + when x"599" => DATA <= x"25"; + when x"59A" => DATA <= x"5B"; + when x"59B" => DATA <= x"27"; + when x"59C" => DATA <= x"49"; + when x"59D" => DATA <= x"81"; + when x"59E" => DATA <= x"04"; + when x"59F" => DATA <= x"25"; + when x"5A0" => DATA <= x"35"; + when x"5A1" => DATA <= x"27"; + when x"5A2" => DATA <= x"6E"; + when x"5A3" => DATA <= x"5F"; + when x"5A4" => DATA <= x"81"; + when x"5A5" => DATA <= x"07"; + when x"5A6" => DATA <= x"25"; + when x"5A7" => DATA <= x"11"; + when x"5A8" => DATA <= x"26"; + when x"5A9" => DATA <= x"67"; + when x"5AA" => DATA <= x"B6"; + when x"5AB" => DATA <= x"FE"; + when x"5AC" => DATA <= x"E4"; + when x"5AD" => DATA <= x"2A"; + when x"5AE" => DATA <= x"FB"; + when x"5AF" => DATA <= x"B6"; + when x"5B0" => DATA <= x"FE"; + when x"5B1" => DATA <= x"E5"; + when x"5B2" => DATA <= x"A7"; + when x"5B3" => DATA <= x"85"; + when x"5B4" => DATA <= x"5C"; + when x"5B5" => DATA <= x"26"; + when x"5B6" => DATA <= x"F3"; + when x"5B7" => DATA <= x"20"; + when x"5B8" => DATA <= x"17"; + when x"5B9" => DATA <= x"B6"; + when x"5BA" => DATA <= x"FE"; + when x"5BB" => DATA <= x"E4"; + when x"5BC" => DATA <= x"48"; + when x"5BD" => DATA <= x"2A"; + when x"5BE" => DATA <= x"FA"; + when x"5BF" => DATA <= x"A6"; + when x"5C0" => DATA <= x"85"; + when x"5C1" => DATA <= x"B7"; + when x"5C2" => DATA <= x"FE"; + when x"5C3" => DATA <= x"E5"; + when x"5C4" => DATA <= x"5C"; + when x"5C5" => DATA <= x"26"; + when x"5C6" => DATA <= x"F2"; + when x"5C7" => DATA <= x"B6"; + when x"5C8" => DATA <= x"FE"; + when x"5C9" => DATA <= x"E4"; + when x"5CA" => DATA <= x"48"; + when x"5CB" => DATA <= x"2A"; + when x"5CC" => DATA <= x"FA"; + when x"5CD" => DATA <= x"B7"; + when x"5CE" => DATA <= x"FE"; + when x"5CF" => DATA <= x"E5"; + when x"5D0" => DATA <= x"30"; + when x"5D1" => DATA <= x"89"; + when x"5D2" => DATA <= x"01"; + when x"5D3" => DATA <= x"00"; + when x"5D4" => DATA <= x"20"; + when x"5D5" => DATA <= x"38"; + when x"5D6" => DATA <= x"13"; + when x"5D7" => DATA <= x"B6"; + when x"5D8" => DATA <= x"FE"; + when x"5D9" => DATA <= x"E5"; + when x"5DA" => DATA <= x"F6"; + when x"5DB" => DATA <= x"FE"; + when x"5DC" => DATA <= x"E5"; + when x"5DD" => DATA <= x"ED"; + when x"5DE" => DATA <= x"81"; + when x"5DF" => DATA <= x"B6"; + when x"5E0" => DATA <= x"FF"; + when x"5E1" => DATA <= x"94"; + when x"5E2" => DATA <= x"26"; + when x"5E3" => DATA <= x"F2"; + when x"5E4" => DATA <= x"20"; + when x"5E5" => DATA <= x"28"; + when x"5E6" => DATA <= x"13"; + when x"5E7" => DATA <= x"EC"; + when x"5E8" => DATA <= x"81"; + when x"5E9" => DATA <= x"B7"; + when x"5EA" => DATA <= x"FE"; + when x"5EB" => DATA <= x"E5"; + when x"5EC" => DATA <= x"F7"; + when x"5ED" => DATA <= x"FE"; + when x"5EE" => DATA <= x"E5"; + when x"5EF" => DATA <= x"B6"; + when x"5F0" => DATA <= x"FF"; + when x"5F1" => DATA <= x"94"; + when x"5F2" => DATA <= x"26"; + when x"5F3" => DATA <= x"F2"; + when x"5F4" => DATA <= x"20"; + when x"5F5" => DATA <= x"18"; + when x"5F6" => DATA <= x"13"; + when x"5F7" => DATA <= x"B6"; + when x"5F8" => DATA <= x"FE"; + when x"5F9" => DATA <= x"E5"; + when x"5FA" => DATA <= x"A7"; + when x"5FB" => DATA <= x"80"; + when x"5FC" => DATA <= x"B6"; + when x"5FD" => DATA <= x"FF"; + when x"5FE" => DATA <= x"94"; + when x"5FF" => DATA <= x"26"; + when x"600" => DATA <= x"F5"; + when x"601" => DATA <= x"20"; + when x"602" => DATA <= x"0B"; + when x"603" => DATA <= x"13"; + when x"604" => DATA <= x"A6"; + when x"605" => DATA <= x"80"; + when x"606" => DATA <= x"B7"; + when x"607" => DATA <= x"FE"; + when x"608" => DATA <= x"E5"; + when x"609" => DATA <= x"B6"; + when x"60A" => DATA <= x"FF"; + when x"60B" => DATA <= x"94"; + when x"60C" => DATA <= x"26"; + when x"60D" => DATA <= x"F5"; + when x"60E" => DATA <= x"BF"; + when x"60F" => DATA <= x"FF"; + when x"610" => DATA <= x"8E"; + when x"611" => DATA <= x"35"; + when x"612" => DATA <= x"16"; + when x"613" => DATA <= x"3B"; + when x"614" => DATA <= x"32"; + when x"615" => DATA <= x"6A"; + when x"616" => DATA <= x"35"; + when x"617" => DATA <= x"10"; + when x"618" => DATA <= x"BF"; + when x"619" => DATA <= x"FF"; + when x"61A" => DATA <= x"82"; + when x"61B" => DATA <= x"1C"; + when x"61C" => DATA <= x"00"; + when x"61D" => DATA <= x"6E"; + when x"61E" => DATA <= x"9F"; + when x"61F" => DATA <= x"FF"; + when x"620" => DATA <= x"FA"; + when x"621" => DATA <= x"FF"; + when x"622" => DATA <= x"FF"; + when x"623" => DATA <= x"FF"; + when x"624" => DATA <= x"FF"; + when x"625" => DATA <= x"FF"; + when x"626" => DATA <= x"FF"; + when x"627" => DATA <= x"FF"; + when x"628" => DATA <= x"FF"; + when x"629" => DATA <= x"FF"; + when x"62A" => DATA <= x"FF"; + when x"62B" => DATA <= x"FF"; + when x"62C" => DATA <= x"FF"; + when x"62D" => DATA <= x"FF"; + when x"62E" => DATA <= x"FF"; + when x"62F" => DATA <= x"FF"; + when x"630" => DATA <= x"FF"; + when x"631" => DATA <= x"FF"; + when x"632" => DATA <= x"FF"; + when x"633" => DATA <= x"FF"; + when x"634" => DATA <= x"FF"; + when x"635" => DATA <= x"FF"; + when x"636" => DATA <= x"FF"; + when x"637" => DATA <= x"FF"; + when x"638" => DATA <= x"FF"; + when x"639" => DATA <= x"FF"; + when x"63A" => DATA <= x"FF"; + when x"63B" => DATA <= x"FF"; + when x"63C" => DATA <= x"FF"; + when x"63D" => DATA <= x"FF"; + when x"63E" => DATA <= x"FF"; + when x"63F" => DATA <= x"FF"; + when x"640" => DATA <= x"FF"; + when x"641" => DATA <= x"FF"; + when x"642" => DATA <= x"FF"; + when x"643" => DATA <= x"FF"; + when x"644" => DATA <= x"FF"; + when x"645" => DATA <= x"FF"; + when x"646" => DATA <= x"FF"; + when x"647" => DATA <= x"FF"; + when x"648" => DATA <= x"FF"; + when x"649" => DATA <= x"FF"; + when x"64A" => DATA <= x"FF"; + when x"64B" => DATA <= x"FF"; + when x"64C" => DATA <= x"FF"; + when x"64D" => DATA <= x"FF"; + when x"64E" => DATA <= x"FF"; + when x"64F" => DATA <= x"FF"; + when x"650" => DATA <= x"FF"; + when x"651" => DATA <= x"FF"; + when x"652" => DATA <= x"FF"; + when x"653" => DATA <= x"FF"; + when x"654" => DATA <= x"FF"; + when x"655" => DATA <= x"FF"; + when x"656" => DATA <= x"FF"; + when x"657" => DATA <= x"FF"; + when x"658" => DATA <= x"FF"; + when x"659" => DATA <= x"FF"; + when x"65A" => DATA <= x"FF"; + when x"65B" => DATA <= x"FF"; + when x"65C" => DATA <= x"FF"; + when x"65D" => DATA <= x"FF"; + when x"65E" => DATA <= x"FF"; + when x"65F" => DATA <= x"FF"; + when x"660" => DATA <= x"FF"; + when x"661" => DATA <= x"FF"; + when x"662" => DATA <= x"FF"; + when x"663" => DATA <= x"FF"; + when x"664" => DATA <= x"FF"; + when x"665" => DATA <= x"FF"; + when x"666" => DATA <= x"FF"; + when x"667" => DATA <= x"FF"; + when x"668" => DATA <= x"FF"; + when x"669" => DATA <= x"FF"; + when x"66A" => DATA <= x"FF"; + when x"66B" => DATA <= x"FF"; + when x"66C" => DATA <= x"FF"; + when x"66D" => DATA <= x"FF"; + when x"66E" => DATA <= x"FF"; + when x"66F" => DATA <= x"FF"; + when x"670" => DATA <= x"FF"; + when x"671" => DATA <= x"FF"; + when x"672" => DATA <= x"FF"; + when x"673" => DATA <= x"FF"; + when x"674" => DATA <= x"FF"; + when x"675" => DATA <= x"FF"; + when x"676" => DATA <= x"FF"; + when x"677" => DATA <= x"FF"; + when x"678" => DATA <= x"FF"; + when x"679" => DATA <= x"FF"; + when x"67A" => DATA <= x"FF"; + when x"67B" => DATA <= x"FF"; + when x"67C" => DATA <= x"FF"; + when x"67D" => DATA <= x"FF"; + when x"67E" => DATA <= x"FF"; + when x"67F" => DATA <= x"FF"; + when x"680" => DATA <= x"FF"; + when x"681" => DATA <= x"FF"; + when x"682" => DATA <= x"FF"; + when x"683" => DATA <= x"FF"; + when x"684" => DATA <= x"FF"; + when x"685" => DATA <= x"FF"; + when x"686" => DATA <= x"FF"; + when x"687" => DATA <= x"FF"; + when x"688" => DATA <= x"FF"; + when x"689" => DATA <= x"FF"; + when x"68A" => DATA <= x"FF"; + when x"68B" => DATA <= x"FF"; + when x"68C" => DATA <= x"FF"; + when x"68D" => DATA <= x"FF"; + when x"68E" => DATA <= x"FF"; + when x"68F" => DATA <= x"FF"; + when x"690" => DATA <= x"FF"; + when x"691" => DATA <= x"FF"; + when x"692" => DATA <= x"FF"; + when x"693" => DATA <= x"FF"; + when x"694" => DATA <= x"FF"; + when x"695" => DATA <= x"FF"; + when x"696" => DATA <= x"FF"; + when x"697" => DATA <= x"FF"; + when x"698" => DATA <= x"FF"; + when x"699" => DATA <= x"FF"; + when x"69A" => DATA <= x"FF"; + when x"69B" => DATA <= x"FF"; + when x"69C" => DATA <= x"FF"; + when x"69D" => DATA <= x"FF"; + when x"69E" => DATA <= x"FF"; + when x"69F" => DATA <= x"FF"; + when x"6A0" => DATA <= x"FF"; + when x"6A1" => DATA <= x"FF"; + when x"6A2" => DATA <= x"FF"; + when x"6A3" => DATA <= x"FF"; + when x"6A4" => DATA <= x"FF"; + when x"6A5" => DATA <= x"FF"; + when x"6A6" => DATA <= x"FF"; + when x"6A7" => DATA <= x"FF"; + when x"6A8" => DATA <= x"FF"; + when x"6A9" => DATA <= x"FF"; + when x"6AA" => DATA <= x"FF"; + when x"6AB" => DATA <= x"FF"; + when x"6AC" => DATA <= x"FF"; + when x"6AD" => DATA <= x"FF"; + when x"6AE" => DATA <= x"FF"; + when x"6AF" => DATA <= x"FF"; + when x"6B0" => DATA <= x"FF"; + when x"6B1" => DATA <= x"FF"; + when x"6B2" => DATA <= x"FF"; + when x"6B3" => DATA <= x"FF"; + when x"6B4" => DATA <= x"FF"; + when x"6B5" => DATA <= x"FF"; + when x"6B6" => DATA <= x"FF"; + when x"6B7" => DATA <= x"FF"; + when x"6B8" => DATA <= x"FF"; + when x"6B9" => DATA <= x"FF"; + when x"6BA" => DATA <= x"FF"; + when x"6BB" => DATA <= x"FF"; + when x"6BC" => DATA <= x"FF"; + when x"6BD" => DATA <= x"FF"; + when x"6BE" => DATA <= x"FF"; + when x"6BF" => DATA <= x"FF"; + when x"6C0" => DATA <= x"FF"; + when x"6C1" => DATA <= x"FF"; + when x"6C2" => DATA <= x"FF"; + when x"6C3" => DATA <= x"FF"; + when x"6C4" => DATA <= x"FF"; + when x"6C5" => DATA <= x"FF"; + when x"6C6" => DATA <= x"FF"; + when x"6C7" => DATA <= x"FF"; + when x"6C8" => DATA <= x"FF"; + when x"6C9" => DATA <= x"FF"; + when x"6CA" => DATA <= x"FF"; + when x"6CB" => DATA <= x"FF"; + when x"6CC" => DATA <= x"FF"; + when x"6CD" => DATA <= x"FF"; + when x"6CE" => DATA <= x"FF"; + when x"6CF" => DATA <= x"FF"; + when x"6D0" => DATA <= x"FF"; + when x"6D1" => DATA <= x"FF"; + when x"6D2" => DATA <= x"FF"; + when x"6D3" => DATA <= x"FF"; + when x"6D4" => DATA <= x"FF"; + when x"6D5" => DATA <= x"FF"; + when x"6D6" => DATA <= x"FF"; + when x"6D7" => DATA <= x"FF"; + when x"6D8" => DATA <= x"FF"; + when x"6D9" => DATA <= x"FF"; + when x"6DA" => DATA <= x"FF"; + when x"6DB" => DATA <= x"FF"; + when x"6DC" => DATA <= x"FF"; + when x"6DD" => DATA <= x"FF"; + when x"6DE" => DATA <= x"FF"; + when x"6DF" => DATA <= x"FF"; + when x"6E0" => DATA <= x"00"; + when x"6E1" => DATA <= x"00"; + when x"6E2" => DATA <= x"00"; + when x"6E3" => DATA <= x"00"; + when x"6E4" => DATA <= x"00"; + when x"6E5" => DATA <= x"00"; + when x"6E6" => DATA <= x"00"; + when x"6E7" => DATA <= x"00"; + when x"6E8" => DATA <= x"FF"; + when x"6E9" => DATA <= x"FF"; + when x"6EA" => DATA <= x"FF"; + when x"6EB" => DATA <= x"FF"; + when x"6EC" => DATA <= x"FF"; + when x"6ED" => DATA <= x"FF"; + when x"6EE" => DATA <= x"FF"; + when x"6EF" => DATA <= x"FF"; + when x"6F0" => DATA <= x"FE"; + when x"6F1" => DATA <= x"13"; + when x"6F2" => DATA <= x"FE"; + when x"6F3" => DATA <= x"13"; + when x"6F4" => DATA <= x"FE"; + when x"6F5" => DATA <= x"13"; + when x"6F6" => DATA <= x"FC"; + when x"6F7" => DATA <= x"DE"; + when x"6F8" => DATA <= x"FE"; + when x"6F9" => DATA <= x"13"; + when x"6FA" => DATA <= x"FE"; + when x"6FB" => DATA <= x"14"; + when x"6FC" => DATA <= x"FE"; + when x"6FD" => DATA <= x"13"; + when x"6FE" => DATA <= x"F8"; + when x"6FF" => DATA <= x"2B"; + when x"700" => DATA <= x"00"; + when x"701" => DATA <= x"00"; + when x"702" => DATA <= x"00"; + when x"703" => DATA <= x"00"; + when x"704" => DATA <= x"00"; + when x"705" => DATA <= x"00"; + when x"706" => DATA <= x"00"; + when x"707" => DATA <= x"00"; + when x"708" => DATA <= x"00"; + when x"709" => DATA <= x"00"; + when x"70A" => DATA <= x"00"; + when x"70B" => DATA <= x"00"; + when x"70C" => DATA <= x"00"; + when x"70D" => DATA <= x"00"; + when x"70E" => DATA <= x"00"; + when x"70F" => DATA <= x"00"; + when x"710" => DATA <= x"00"; + when x"711" => DATA <= x"00"; + when x"712" => DATA <= x"00"; + when x"713" => DATA <= x"00"; + when x"714" => DATA <= x"00"; + when x"715" => DATA <= x"00"; + when x"716" => DATA <= x"00"; + when x"717" => DATA <= x"00"; + when x"718" => DATA <= x"00"; + when x"719" => DATA <= x"00"; + when x"71A" => DATA <= x"00"; + when x"71B" => DATA <= x"00"; + when x"71C" => DATA <= x"00"; + when x"71D" => DATA <= x"00"; + when x"71E" => DATA <= x"00"; + when x"71F" => DATA <= x"00"; + when x"720" => DATA <= x"00"; + when x"721" => DATA <= x"00"; + when x"722" => DATA <= x"00"; + when x"723" => DATA <= x"00"; + when x"724" => DATA <= x"00"; + when x"725" => DATA <= x"00"; + when x"726" => DATA <= x"00"; + when x"727" => DATA <= x"00"; + when x"728" => DATA <= x"00"; + when x"729" => DATA <= x"00"; + when x"72A" => DATA <= x"00"; + when x"72B" => DATA <= x"00"; + when x"72C" => DATA <= x"00"; + when x"72D" => DATA <= x"00"; + when x"72E" => DATA <= x"00"; + when x"72F" => DATA <= x"00"; + when x"730" => DATA <= x"00"; + when x"731" => DATA <= x"00"; + when x"732" => DATA <= x"00"; + when x"733" => DATA <= x"00"; + when x"734" => DATA <= x"00"; + when x"735" => DATA <= x"00"; + when x"736" => DATA <= x"00"; + when x"737" => DATA <= x"00"; + when x"738" => DATA <= x"00"; + when x"739" => DATA <= x"00"; + when x"73A" => DATA <= x"00"; + when x"73B" => DATA <= x"00"; + when x"73C" => DATA <= x"00"; + when x"73D" => DATA <= x"00"; + when x"73E" => DATA <= x"00"; + when x"73F" => DATA <= x"00"; + when x"740" => DATA <= x"00"; + when x"741" => DATA <= x"00"; + when x"742" => DATA <= x"00"; + when x"743" => DATA <= x"00"; + when x"744" => DATA <= x"00"; + when x"745" => DATA <= x"00"; + when x"746" => DATA <= x"00"; + when x"747" => DATA <= x"00"; + when x"748" => DATA <= x"00"; + when x"749" => DATA <= x"00"; + when x"74A" => DATA <= x"00"; + when x"74B" => DATA <= x"00"; + when x"74C" => DATA <= x"00"; + when x"74D" => DATA <= x"00"; + when x"74E" => DATA <= x"00"; + when x"74F" => DATA <= x"00"; + when x"750" => DATA <= x"00"; + when x"751" => DATA <= x"00"; + when x"752" => DATA <= x"00"; + when x"753" => DATA <= x"00"; + when x"754" => DATA <= x"00"; + when x"755" => DATA <= x"00"; + when x"756" => DATA <= x"00"; + when x"757" => DATA <= x"00"; + when x"758" => DATA <= x"00"; + when x"759" => DATA <= x"00"; + when x"75A" => DATA <= x"00"; + when x"75B" => DATA <= x"00"; + when x"75C" => DATA <= x"00"; + when x"75D" => DATA <= x"00"; + when x"75E" => DATA <= x"00"; + when x"75F" => DATA <= x"00"; + when x"760" => DATA <= x"00"; + when x"761" => DATA <= x"00"; + when x"762" => DATA <= x"00"; + when x"763" => DATA <= x"00"; + when x"764" => DATA <= x"00"; + when x"765" => DATA <= x"00"; + when x"766" => DATA <= x"00"; + when x"767" => DATA <= x"00"; + when x"768" => DATA <= x"00"; + when x"769" => DATA <= x"00"; + when x"76A" => DATA <= x"00"; + when x"76B" => DATA <= x"00"; + when x"76C" => DATA <= x"00"; + when x"76D" => DATA <= x"00"; + when x"76E" => DATA <= x"00"; + when x"76F" => DATA <= x"00"; + when x"770" => DATA <= x"00"; + when x"771" => DATA <= x"00"; + when x"772" => DATA <= x"00"; + when x"773" => DATA <= x"00"; + when x"774" => DATA <= x"00"; + when x"775" => DATA <= x"00"; + when x"776" => DATA <= x"00"; + when x"777" => DATA <= x"00"; + when x"778" => DATA <= x"00"; + when x"779" => DATA <= x"00"; + when x"77A" => DATA <= x"00"; + when x"77B" => DATA <= x"00"; + when x"77C" => DATA <= x"00"; + when x"77D" => DATA <= x"00"; + when x"77E" => DATA <= x"00"; + when x"77F" => DATA <= x"00"; + when x"780" => DATA <= x"00"; + when x"781" => DATA <= x"00"; + when x"782" => DATA <= x"F8"; + when x"783" => DATA <= x"16"; + when x"784" => DATA <= x"F8"; + when x"785" => DATA <= x"AF"; + when x"786" => DATA <= x"F8"; + when x"787" => DATA <= x"16"; + when x"788" => DATA <= x"00"; + when x"789" => DATA <= x"00"; + when x"78A" => DATA <= x"F8"; + when x"78B" => DATA <= x"00"; + when x"78C" => DATA <= x"00"; + when x"78D" => DATA <= x"00"; + when x"78E" => DATA <= x"00"; + when x"78F" => DATA <= x"00"; + when x"790" => DATA <= x"FF"; + when x"791" => DATA <= x"B9"; + when x"792" => DATA <= x"FF"; + when x"793" => DATA <= x"00"; + when x"794" => DATA <= x"00"; + when x"795" => DATA <= x"7E"; + when x"796" => DATA <= x"FA"; + when x"797" => DATA <= x"7F"; + when x"798" => DATA <= x"7E"; + when x"799" => DATA <= x"F8"; + when x"79A" => DATA <= x"2B"; + when x"79B" => DATA <= x"7E"; + when x"79C" => DATA <= x"FA"; + when x"79D" => DATA <= x"7F"; + when x"79E" => DATA <= x"7E"; + when x"79F" => DATA <= x"F9"; + when x"7A0" => DATA <= x"3B"; + when x"7A1" => DATA <= x"7E"; + when x"7A2" => DATA <= x"FA"; + when x"7A3" => DATA <= x"7F"; + when x"7A4" => DATA <= x"7E"; + when x"7A5" => DATA <= x"FA"; + when x"7A6" => DATA <= x"7F"; + when x"7A7" => DATA <= x"7E"; + when x"7A8" => DATA <= x"F8"; + when x"7A9" => DATA <= x"70"; + when x"7AA" => DATA <= x"7E"; + when x"7AB" => DATA <= x"F9"; + when x"7AC" => DATA <= x"10"; + when x"7AD" => DATA <= x"7E"; + when x"7AE" => DATA <= x"F9"; + when x"7AF" => DATA <= x"04"; + when x"7B0" => DATA <= x"7E"; + when x"7B1" => DATA <= x"FA"; + when x"7B2" => DATA <= x"7F"; + when x"7B3" => DATA <= x"7E"; + when x"7B4" => DATA <= x"F9"; + when x"7B5" => DATA <= x"2B"; + when x"7B6" => DATA <= x"7E"; + when x"7B7" => DATA <= x"FA"; + when x"7B8" => DATA <= x"7F"; + when x"7B9" => DATA <= x"7E"; + when x"7BA" => DATA <= x"F8"; + when x"7BB" => DATA <= x"70"; + when x"7BC" => DATA <= x"7E"; + when x"7BD" => DATA <= x"FE"; + when x"7BE" => DATA <= x"16"; + when x"7BF" => DATA <= x"7E"; + when x"7C0" => DATA <= x"F8"; + when x"7C1" => DATA <= x"D1"; + when x"7C2" => DATA <= x"7E"; + when x"7C3" => DATA <= x"FA"; + when x"7C4" => DATA <= x"7F"; + when x"7C5" => DATA <= x"7E"; + when x"7C6" => DATA <= x"F9"; + when x"7C7" => DATA <= x"32"; + when x"7C8" => DATA <= x"7E"; + when x"7C9" => DATA <= x"FA"; + when x"7CA" => DATA <= x"7F"; + when x"7CB" => DATA <= x"7E"; + when x"7CC" => DATA <= x"FA"; + when x"7CD" => DATA <= x"7F"; + when x"7CE" => DATA <= x"7E"; + when x"7CF" => DATA <= x"FC"; + when x"7D0" => DATA <= x"25"; + when x"7D1" => DATA <= x"7E"; + when x"7D2" => DATA <= x"FC"; + when x"7D3" => DATA <= x"75"; + when x"7D4" => DATA <= x"7E"; + when x"7D5" => DATA <= x"FC"; + when x"7D6" => DATA <= x"0F"; + when x"7D7" => DATA <= x"7E"; + when x"7D8" => DATA <= x"FC"; + when x"7D9" => DATA <= x"00"; + when x"7DA" => DATA <= x"7E"; + when x"7DB" => DATA <= x"FB"; + when x"7DC" => DATA <= x"DC"; + when x"7DD" => DATA <= x"7E"; + when x"7DE" => DATA <= x"FC"; + when x"7DF" => DATA <= x"45"; + when x"7E0" => DATA <= x"7E"; + when x"7E1" => DATA <= x"FA"; + when x"7E2" => DATA <= x"A5"; + when x"7E3" => DATA <= x"81"; + when x"7E4" => DATA <= x"0D"; + when x"7E5" => DATA <= x"26"; + when x"7E6" => DATA <= x"07"; + when x"7E7" => DATA <= x"86"; + when x"7E8" => DATA <= x"0A"; + when x"7E9" => DATA <= x"BD"; + when x"7EA" => DATA <= x"FF"; + when x"7EB" => DATA <= x"EE"; + when x"7EC" => DATA <= x"86"; + when x"7ED" => DATA <= x"0D"; + when x"7EE" => DATA <= x"7E"; + when x"7EF" => DATA <= x"FC"; + when x"7F0" => DATA <= x"BE"; + when x"7F1" => DATA <= x"7E"; + when x"7F2" => DATA <= x"FB"; + when x"7F3" => DATA <= x"25"; + when x"7F4" => DATA <= x"7E"; + when x"7F5" => DATA <= x"FA"; + when x"7F6" => DATA <= x"B6"; + when x"7F7" => DATA <= x"7E"; + when x"7F8" => DATA <= x"F9"; + when x"7F9" => DATA <= x"75"; + when x"7FA" => DATA <= x"F8"; + when x"7FB" => DATA <= x"AF"; + when x"7FC" => DATA <= x"FA"; + when x"7FD" => DATA <= x"7F"; + when x"7FE" => DATA <= x"F8"; + when x"7FF" => DATA <= x"2B"; + when others => DATA <= (others => '0'); + end case; + end process; +end RTL; diff --git a/client/6809/100/Client09.bin b/client/6809/100/Client09.bin new file mode 100644 index 0000000000000000000000000000000000000000..be95b2a5e0ed1f9bde8ed67b40faa731bc5d0ba2 GIT binary patch literal 2048 zcmdT^Z*0_L7=K%O-JIOk4LA|!wKwkCaW|Kawa9JiKt+dw2T`LDj2a{oH6YOtKbX=U zM|In^E^#q@QD9{Z9JW^@odH} ziGg`N@{Jz$WsE|E{dW6;(Wkg~ZNttvtGRP=}tMP`fz5|g%6Vcy1ik|$ZD~)^igfzLGelk z7rTRk)G%j&h}*et!zT6VjE0P}fKCdI$Vv>%VsY>@Mno>9b!b zOFev=fAkf8&f+_hYjaVJ=G(>kQJnQ~?+EUeNof<4S5bmuMsfF3Fo0IqiDO6P*L@Af zy=hQnWMb!$6;CuGnPB1}&UVH+iqGx(fD4Y|wq0*-M;RbtkUi>*zRvKEzv$?obAf6gscO5NJ=R+Ygr+!?Gql>azd-_Ljt(%o|k<=`$G6ZGlgFz z+W5Lhl?daY?@t;BqFoT>V|{<8iL)~~mI&0czERjJ@e;#!>6PFO>%N+#tQ@ycXHG4N z)8_oCHY+Csp9?G*?aD;SXHpAn_o&49Fyb!k+`qwwWlOIDSCNFn<-3Vdy#i!Ebtrw0 zny5LRgUNu}5`&Gq+0v0lArzuQmDLnMgb>3qVMM8*f)}CCJt0(iKO({^rAoZM(2wGt zhtN>7qe1czOY+wO#jxBjQF?V5BU4IgP@;7|kDyRNX#ou#LhE&)4cs>hP{Do$f=IAOItgcWlFA6c%mJBY+1IVV{)`E6;~z4oE<&uZC2e zv_!F7n@m|*qp_vquIyJM3yQh4M8XBsnJmdfQO{+-M@^1}!S9}VS1N*n~e{uJL z2x(gT3*O{b{(4!0x!6S@ZuKI-{q0R&)rN2%f1PVwG^2rS&YLXDOMUx*>I*lydly+M z7y|(=aG<#IZ5g^WTaTb%CH#MTpb3KK4sS2!zwQi-4PMM?x?}(E{!YXhbRq~jWu7N7 zLP|+joF;#SulPtH?pBJmN-?B(F{K!ooZX5SSDdo}ru8=1ZB^WTiu<7ARx9&=DDLx0 d>04-?3b<78tR7a}F=ZaGwo=^V43>1K=^xJc>w*9P literal 0 HcmV?d00001 diff --git a/client/6809/100/Client09.lst b/client/6809/100/Client09.lst new file mode 100644 index 0000000..44ddc12 --- /dev/null +++ b/client/6809/100/Client09.lst @@ -0,0 +1,1503 @@ +AS09 Assembler for M6809 [1.40]. Copyright 1994-2005, Frank A. Kingswood Page 1 +---------------------------------------------------------- CLIENT09.SRC ---------------------------------------------------------- + +1494 lines read, no errors in pass 1. + ; 6809 Tube Client Code + ; ===================== + ; Copyright (C)1989, 2008, 2012, 2014 J.G.Harston + ; This can be assembled with: + ; DOS as9: as9 Client09.src -l now bin > errors.txt + ; Kingswood as09: as09-dos -i -lTube09.lst -oTube09.bin Client09.src + ; + ; v0.10 1989 JGH: Initial unfinished version. + ; v0.20 11-Mar-2008 JGH: Inspired by Johan Heuseveldt to complete + ; 12-Mar-2008 JGH: Fixed where A/B was wrong way around in D + ; OSBYTE &8E no longer ends with unbalanced stack + ; BYTE_HI sends X,Y correct way around + ; Internal variables at same address as Z80 + ; v0.21 07-Jan-2012 JGH: Added client error handler + ; v0.22 20-Nov-2014 DMB: Bugfix in FIRQ code from David Banks + ; JGH: Added PRHEX and HR2HEX, execute enters at PROGRAM + ; 25-Nov-2014 JGH: Added OSWORD <>0 handler, preparing to merge source + ; with 6809 Serial Tube client. Crunched some JSRs to BSRs. + ; Shorter FIRQ dispatch code. Moved text buffers to $FF00. + ; 28-Nov-2014 JGH: Replaced LDA #0 with CLRA, use returned flags from WAIT_BYTE. + ; STARTUP and OSCLI use internal stack. + ; MEMTOP moved below code if code is in high memory. + ; v0.23 30-Nov-2014 DMB: JSR [,X] should be JSR ,X in EXEC_ENTER. + ; JGH: Fixed off-by-one in PR_HEX and preserves A, added PR_STRING. + ; PULS reg followed by RTS merged into PULS reg,PC + ; 02-Dec-2014 JGH: Implemented KBDTST for 6809 BIOS calls. Execute checks code + ; header. WARM resets MEMBOT & MEMTOP. + ; v0.24 07-Dec-2014 JGH: EXECUTE enters code with A=1 or A=0, PROG saved and restored, + ; soft Break will re-enter at PROG. OSCLI saves all registers. + ; Bugfix: data transfer FIRQs corrupted foreground X and B. + ; DMB: Bugfix: EXECUTE should use ADDRESS+2 big-endian address. + ; JGH: Raw 6809 code is not made the current program. Supervisor + ; prompt makes itself current program. Full header (C) check. + ; RESET avoids overwriting PROG so Soft Reset will re-enter + ; current program. + ; 14-Dec-2014 JGH: When EXECUTE called on RESET, does not report 'Not 6809 code' + ; error, but jumps directly to CLICOM. Gives a cleaner startup + ; display, and this is hook for future check for booting disk + ; operating system. + ; DMB: Bug: Hangs on Ctrl-Break, but not on Soft-Break + ; v0.25 20-Dec-2014 JGH: Bugfix: Fixed hang on Ctrl-Break, FIRQ6/7 was wrong way around. + ; Added local *GO and *HELP commands, LPTR set to command line, + ; OSBYTE 142 sets null LPTR. OSBYTE $82-$84 return address/256 in Y. + ; Testing TxRDY uses ASLA instead of AND #$40. Squashed some JSRs + ; into BSRs. +0100 = VERSION: EQU $0100 + ; v1.00 01-Nov-2015 JGH: Rolled over to version 1.00. + ; + ; + ; This code may be freely reused. + ; + ; Acknowledgements to: + ; Johan Heuseveldt: mentioning 6809 CoPros on the BBC Mailing List inspired me to + ; complete the code. + ; David Banks: plenty of testing on the Matchbox CoPro "real" hardware. + ; + + ; Notes: + ; 07-Jan-2012: When I initially wrote this I didn't have any 6809 hardware, so don't know + ; if this executed. + ; 20-Nov-2014: DMB has tested this on Matchbox emulated hardware and shown it to work. + ; + ; Bugs, limitations: + ; CTRL not set to control block + ; + + + ; Memory layout: + ; +-------------+--------------------------------------------------------+ + ; | 0000- | vvv User memory vvv | + ; | | | + ; | -F7FF | ^^^ System stack ^^^ | + ; +-------------+--------------------------------------------------------+ + ; | F800-FFFF | Client ROM, copied to RAM on startup | + ; | F800-F814 | Monitor ROM entry vectors | + ; | | | + ; | FEE0-FEEF | Tube registers | + ; | FEF0-FEFF | Hardware vectors, remapped from &FFF0-&FFFF with BA/BS | + ; | FF00-FF7F | Text buffers and internal stack | + ; | FF80- | Internal variables | + ; | -FFCD | Tube Client entry block | + ; | FFCE-FFE7 | Standard BBC MOS entry block | + ; +-------------+--------------------------------------------------------+ + ; + ; BA/BS Signals are used to remap hardware vectors from &FFFx to &FEFx + ; ROM copied to RAM at startup, then ROM paged out by accessing any I/O. + ; Client error implemented with SWI (equivalent of 6502 BRK, Z80 RST &38, etc.) + ; SWI2 and SWI3 reserved for applications (eg FLEX, OS-9, etc) + + + ; START OF ROM CODE + ; ================= +f800 = ORG $F800 +f800 : ROMSTART: +0000 = RAMSTART: EQU $0000 +f800 = RAMEND: EQU ROMSTART + + + ; 6809 BIOS entry block always at F800 + ; ==================================== +f800 = ORG $F800 +f800 : f82c COLD: FDB RESET ; $F800 - cold start +f802 : f871 WARM: FDB WARMS ; $F802 - warm start +f804 : ffe0 INCH: FDB OSRDCH ; $F804 - char input +f806 : f8e0 INCHE: FDB INECHO ; $F806 - char input with echo +f808 : f8f4 INCHECK: FDB KBDTST ; $F808 - test for char input +f80a : ffee OUTCH: FDB OSWRCH ; $F80A - char output +f80c : f8e9 PDATA: FDB PRDAT ; $F80C - output string until EOT +f80e : ffe7 PCRLF: FDB OSNEWL ; $F80E - output CR/LF +f810 : f8e6 PSTRING: FDB PRTST ; $F810 - output CR/LF then string until EOT +f812 : f8df LRA: FDB LREAL ; $F812 - Load Real Address +f814 : 205b BRA WARMS ; $F814 - for FLEX compatibility + +f816 : BANNER: +f816 : 0d FCB 13 +f817 : 36383039205455.. FCC "6809 TUBE 64K " +f825 : 31 FCB ((VERSION >> 8) & 15) + $30 +f826 : 2e FCB "." +f827 : 30 FCB ((VERSION >> 4) & 15) +$30 +f828 : 30 FCB (VERSION & 15) + $30 +f829 : 200d00 FCB 32,13,0 +f82c : RESET: +f82c : 1a50 ORCC #$50 ; Ensure interupts disabled +f82e : 10cef800 LDS #RAMEND ; Put stack at top of RAM + IF RAMEND = ROMSTART +f832 : 1f41 TFR S,X ; Start copying from start of ROM + ELSE + LDX #ROMSTART ; Start copying from start of ROM + ENDIF +f834 : RESETLP1: +f834 : ec84 LDD ,X ; Get two bytes from ROM +f836 : ed81 STD ,X++ ; Store to RAM and increment X +f838 : 8cfec0 CMPX #IOADDRS +f83b : 2603 BNE RESETLP2 ; Loop until hit I/O space +f83d : 8efef0 LDX #ROMHIGH ; Point to ROM after I/O space +f840 : RESETLP2: +f840 : 8cff8c CMPX #ADDRESS ; Don't modify ADDRESS and PROG +f843 : 2603 BNE RESETLP3 +f845 : 8eff94 LDX #DMA_DONE +f848 : RESETLP3: +f848 : 8c0000 CMPX #0 +f84b : 26e7 BNE RESETLP1 ; Copy top part of ROM to RAM +f84d : b6fee0 LDA >TUBE1S ; Access I/O registers to page ROM out + ; Once ROM is paged out we can do subroutine calls + ; as we can now read from stack in RAM + + ; STARTUP + ; ======= + ; Tube data: via R1: string $00 -- via R2: $7F or $80 + ; +f850 : STARTUP: +f850 : 1a50 ORCC #$50 ; Disable interupts +f852 : 10ceff28 LDS #CLISTK ; Use internal stack +f856 : 8d68 BSR MEM_INIT ; Reset user memory limits and error handler +f858 : beff90 LDX PROGRAM ; Copy current PROGRAM to ADDRESS +f85b : bfff8e STX ADDRESS+2 ; so will re-enter on Soft Break +f85e : 1c00 ANDCC #$00 ; Clear all flags, enable interupts +f860 : 8ef816 LDX #BANNER ; Point to startup banner +f863 : bdf933 JSR SEND_TXT ; Print it via Tube WRCH protocol +f866 : bdffe7 JSR OSNEWL ; SEND_TXT will use 7 bytes on stack +f869 : 4f CLRA ; Set A to zero + ; STA >ESCFLG ; Clear Escape flag + ; ECSFLG will have been cleared when copying ROM/initialising workspace +f86a : bdffee JSR OSWRCH ; Send terminating zero byte + ; This will use 3 bytes on stack +f86d : 4f CLRA ; Carry Clear to indicate Reset +f86e : bdfa30 JSR CLI_WAIT ; Wait for result byte and enter code + ; This will use 14 bytes on stack including data transfer + ; Data transfer may happen while waiting + ; Fall through to CLICOM if nothing executed + + ; Command line prompt + ; =================== + ; Allow user to enter *command + ; +f871 : WARMS: +f871 : CLILOOP: +f871 : 10ceff28 LDS #CLISTK ; Initially use internal stack +f875 : 8d49 BSR COM_INIT ; Reset user memory limits and error handler +f877 : 10feff8a LDS MEMTOP ; Reset stack to top of user memory +f87b : 8effb9 LDX #CLICOM ; Make CLICOM the current program to re-enter +f87e : bfff90 STX PROGRAM ; on soft reset +f881 : 1c00 ANDCC #$00 ; Clear all flags, enable interupts +f883 : CLILOOP2: +f883 : 8ef896 LDX #PROMPT +f886 : bdf933 JSR SEND_TXT ; Display prompt + ; CLRA ; Set A to zero (SEND_TXT returned A=0) + ; LDX #COM_BLK ; Point to control block (SEND_TXT returned X=COM_BLK) +f889 : bdfff1 JSR OSWORD ; OSWORD &00 - Read a line of text +f88c : 2514 BCS COM_ESC ; Escape pressed +f88e : 8eff28 LDX #CLIBUF +f891 : bdfff7 JSR OS_CLI ; Execute command +f894 : 20ed BRA CLILOOP2 ; Loop back for another line +f896 : PROMPT: +f896 : 363830393e2a FCC "6809>*" ; Command prompt +f89c : 00 FCB 0 +f89d : COM_BLK: +f89d : ff28 FDB CLIBUF ; Input buffer +f89f : 57 FCB CLIEND-CLIBUF-1 ; Buffer size +f8a0 : 20 FCB 32 ; Lowest acceptable CHR$32 +f8a1 : ff FCB 255 ; Highest acceptable CHR$255 +f8a2 : COM_ESC: +f8a2 : 867e LDA #126 +f8a4 : bdfff4 JSR OSBYTE ; Acknowledge Escape +f8a7 : ESCAPE: +f8a7 : 3f SWI +f8a8 : 11 FCB 17 +f8a9 : 457363617065 FCC "Escape" +f8af : 00 FCB 0 + +f8b0 : COM_ERR: +f8b0 : 10feff8a LDS MEMTOP ; Reset stack to top of user memory +f8b4 : bdffe7 JSR OSNEWL +f8b7 : a680 LDA ,X+ ; Step X past error number +f8b9 : 8d78 BSR SEND_TXT ; Print text at X +f8bb : bdffe7 JSR OSNEWL +f8be : 20c3 BRA CLILOOP2 ; Return to command prompt + +f8c0 : MEM_INIT: +f8c0 : COM_INIT: + ; This has already been done by copying ROM to RAM. But, when entering + ; Supervisor we want to ensure full memory available. +f8c0 : cc0000 LDD #RAMSTART +f8c3 : fdff88 STD MEMBOT ; Initialise bottom of user memory +f8c6 : ccf800 LDD #RAMEND +f8c9 : fdff8a STD MEMTOP ; Initialise top of user memory +f8cc : COM_BRKV: +f8cc : ccf8b0 LDD #COM_ERR ; Get Supervisor error handler address +f8cf : fdfffa STD BRKV ; Set error handler +f8d2 : ERR_INIT: +f8d2 : ccfe22 LDD #SWI_HANDLE +f8d5 : fdfefa STD XSWIV ; Point SWI vector to error BRK handler +f8d8 : 8efffa LDX #BRKV +f8db : 108eff80 LDY #ESCFLG ; Return X=BRKV, Y=ESCFLG +f8df : PREND: +f8df : LREAL: +f8df : 39 RTS + + + ; FLEX/OS-9 BIOS code + ; =================== +f8e0 : bdffe0 INECHO: JSR OSRDCH +f8e3 : 7effee JMP OSWRCH +f8e6 : bdffe7 PRTST: JSR OSNEWL +f8e9 : a680 PRDAT: LDA ,X+ ; Get character +f8eb : 8104 CMPA #4 ; EOT character? +f8ed : 27f0 BEQ PREND ; End printing +f8ef : bdffee JSR OSWRCH ; Print character +f8f2 : 20f5 BRA PRDAT ; Loop to next +f8f4 : 3432 KBDTST: PSHS A,X,Y +f8f6 : 8680 LDA #$80 +f8f8 : 8effff LDX #$FFFF ; Should check ADVAL(-2) if Serial is current input stream +f8fb : 1f12 TFR X,Y +f8fd : bdfff4 JSR OSBYTE ; ADVAL(-1) - keyboard input buffer +f900 : 8c0000 CMPX #0 ; Set Z/NZ from X +f903 : 35b2 PULS A,X,Y,PC + + + ; ***************** + ; Printout Routines + ; ***************** + + ; Print X as 4-digit hex + ; ====================== + ; Preserves all registers +f905 : PR_2HEX: +f905 : 3406 PSHS D ; Save AB +f907 : 1f10 TFR X,D ; Copy X to D, so copy b16-b31 to A +f909 : 8d06 BSR PR_HEX ; Print it +f90b : 1f98 TFR B,A ; Copy other b0-b15 to A +f90d : 8d02 BSR PR_HEX ; Print it +f90f : 3586 PULS D,PC ; Restore AB and return + + ; Print A as 2-digit hex + ; ====================== + ; On exit: A corrupted + ; +f911 : PR_HEX: +f911 : 3402 PSHS A ; Standard hex-print code +f913 : 44 LSRA +f914 : 44 LSRA +f915 : 44 LSRA +f916 : 44 LSRA +f917 : 8d06 BSR PR_NYBBLE +f919 : a6e4 LDA ,S +f91b : 8d02 BSR PR_NYBBLE +f91d : 3582 PULS A,PC +f91f : PR_NYBBLE: +f91f : 840f ANDA #$0F +f921 : 810a CMPA #$0A +f923 : 2502 BCS PR_DIGIT +f925 : 8b07 ADDA #7 +f927 : PR_DIGIT: +f927 : 8b30 ADDA #$30 +f929 : 7effee JMP OSWRCH + + ; Print inline text + ; ================= + ; On exit: X= corrupted + ; A=$00 + ; +f92c : PR_TEXT: +f92c : 3510 PULS X ; Pop PC to X +f92e : 8d03 BSR SEND_TXT ; Print text +f930 : 3410 PSHS X ; Push updated X +f932 : SEND_END: +f932 : 39 RTS ; And return to it + + ; Print text string at X + ; ====================== + ; On entry: X=>zero-terminated text string + ; On exit: X=>byte after zero byte terminator + ; A=$00 + ; +f933 : SEND_TXT: +f933 : a680 LDA ,X+ ; Get byte from X, increment X +f935 : 27fb BEQ SEND_END ; End if $00 byte +f937 : bdffe3 JSR OSASCI ; Send to OSASCI +f93a : 20f7 BRA SEND_TXT ; Loop until $00 sent + + + ; ********************** + ; Line scanning Routines + ; ********************** + + ; Scan hex string + ; =============== + ; On entry, X=>start of hex string + ; On exit, X=>first non-hex character + ; Y=hex value + ; A=terminating character + ; B=corrupted + ; CS if number terminated, eg 123 X or 123 + ; CC if number not terminated, eg 123X + ; +f93c : RD_HEX: +f93c : 108e0000 LDY #0 ; Clear hex accumulator +f940 : RD_HEXLP: +f940 : a680 LDA ,X+ ; Get current character +f942 : 8130 CMPA #$30 ; <'0', exit +f944 : 252b BCS RD_HEXDONE +f946 : 813a CMPA #$3A ; '0'..'9', add to accumulator +f948 : 250a BCS RD_HEXADD +f94a : 84df ANDA #$DF ; Ensure upper case letter +f94c : 8007 SUBA #$07 ; Convert letter, if <'A', exit +f94e : 2521 BCS RD_HEXDONE +f950 : 8140 CMPA #$40 +f952 : 241d BCC RD_HEXDONE ; If >'F', exit +f954 : RD_HEXADD: +f954 : 840f ANDA #$0F ; AB=0Nxx, X=>line Y=acc +f956 : 1e02 EXG D,Y ; AB=acc, X=>line Y=0Nxx +f958 : 58 ASLB +f959 : 49 ROLA +f95a : 58 ASLB +f95b : 49 ROLA +f95c : 58 ASLB +f95d : 49 ROLA +f95e : 58 ASLB +f95f : 49 ROLA ; AB=acc*16, X=>line, Y=0Nxx +f960 : 1e12 EXG X,Y ; AB=acc*16, X=0Nxx, Y=>line +f962 : 1e01 EXG D,X ; AB=0Nxx, X=acc*16, Y=>line +f964 : 1e89 EXG A,B ; AB=xx0N, X=acc*16, Y=>line +f966 : 3a ABX ; AB=xx0N, X=acc*16+N, Y=>line +f967 : 1e12 EXG X,Y ; AB=xx0N, X=>line, Y=acc*16+N +f969 : 20d5 BRA RD_HEXLP ; Move to next character + + ; Skip spaces + ; =========== + ; On entry, X=>command line + ; On exit, X=>first non-space character + ; A=first non-space character +f96b : SKIPSPC: +f96b : a680 LDA ,X+ +f96d : 8120 CMPA #' ' +f96f : 27fa BEQ SKIPSPC ; Skip space characters +f971 : RD_HEXDONE: +f971 : 301f LEAX -1,X ; Point to non-hex/non-space char +f973 : 8121 CMPA #'!' ; Return CS if no following character +f975 : 39 RTS + + + ; ********************** + ; MOS Interface Routines + ; ********************** + + ; OSCLI - Execute command + ; ======================= + ; On entry: X=>command string + ; On exit: A holds any return value + ; + ; First check for local commands, then pass on to host + ; +f976 : CLI: +f976 : 347c PSHS B,DP,X,Y,U ; Save everything on users's stack, except A and CC +f978 : 118cf800 CMPS #ROMSTART ; Check where the stack is +f97c : 2408 BCC CLI_SYSSTK ; We're already using internal stack +f97e : 10fff98a STS STKSAVE-2 ; As a *command may result in data transfer, that +f982 : 10ceff28 LDS #CLISTK ; data may end up overwriting stack in user memory, +f986 : CLI_SYSSTK: ; so use a temporary stack to do OS_CLI. If OS_CLI +f986 : 8d0f BSR CLI_GO ; ends up jumping to a new process, new stack will +f988 : 10ce0000 LDS #0 ; be set up by that new process. +f98c : STKSAVE: +f98c : 35fc PULS B,DP,X,Y,U,PC ; Restore everything and return contents of A. + + ; Local *commands + ; --------------- +f98e : CLI_TABLE: +f98e : 48454c50 FCC "HELP" +f992 : 80 FCB $80 +f993 : 474f FCC "GO" +f995 : 81 FCB $81 +f996 : 00 FCB 0 + + ; OSCLI - Check for local commands + ; -------------------------------- + ; On entry: X=>command string + ; +f997 : CLI_GO: +f997 : CLI_LP1: +f997 : 8dd2 BSR SKIPSPC ; Skip leading spaces +f999 : a680 LDA ,X+ +f99b : 812a CMPA #'*' +f99d : 27f8 BEQ CLI_LP1 ; Skip leading '*'s +f99f : 301f LEAX -1,X +f9a1 : 3410 PSHS X ; Save start of command text +f9a3 : CLI_LP2: +f9a3 : a680 LDA ,X+ ; Step past command +f9a5 : 8121 CMPA #'!' +f9a7 : 24fa BCC CLI_LP2 +f9a9 : 301f LEAX -1,X +f9ab : 8dbe BSR SKIPSPC +f9ad : bfff86 STX LPTR ; Point LPTR to command parameters + +f9b0 : 108ef98e LDY #CLI_TABLE ; Point to command table +f9b4 : CLI_LOOP1: +f9b4 : aee4 LDX ,S ; Get start of command text back +f9b6 : a684 LDA ,X ; Get first character +f9b8 : 8141 CMPA #'A' +f9ba : 2568 BCS CLI_TUBE ; Not a letter, pass to host +f9bc : CLI_LOOP2: +f9bc : a680 LDA ,X+ ; Get character from command line +f9be : 84df ANDA #$DF ; Force to upper case +f9c0 : a1a0 CMPA ,Y+ ; Compare with table entry +f9c2 : 27f8 BEQ CLI_LOOP2 ; Characters match, check next +f9c4 : a6a2 LDA ,-Y ; Step to command token +f9c6 : 2b16 BMI CLI_MATCH ; Match +f9c8 : a61f LDA -1,X ; Get character from command line +f9ca : 812e CMPA #'.' +f9cc : 270a BEQ CLI_DOT ; Abbreviated command +f9ce : CLI_NEXT: +f9ce : a6a0 LDA ,Y+ ; Search for command token +f9d0 : 2afc BPL CLI_NEXT ; Step to end of table entry +f9d2 : a6a4 LDA ,Y +f9d4 : 26de BNE CLI_LOOP1 ; Not end of table +f9d6 : 204c BRA CLI_TUBE ; Pass to host +f9d8 : CLI_DOT: +f9d8 : a6a0 LDA ,Y+ ; Search for command token +f9da : 2afc BPL CLI_DOT ; Step to end of table entry +f9dc : 2006 BRA CLI_MATCH2 +f9de : CLI_MATCH: +f9de : e682 LDB ,-X ; Get current character +f9e0 : c121 CMPB #'!' +f9e2 : 2440 BCC CLI_TUBE ; Command line longer than table entry +f9e4 : CLI_MATCH2: +f9e4 : 8180 CMPA #$80 +f9e6 : 272d BEQ CMD_HELP + ; CMPA #$81 + ; BNE CLI_TUBE + + ; *GO ; parameters + ; ----------------------- +f9e8 : CMD_GO: +f9e8 : 8d81 BSR SKIPSPC +f9ea : 10beff90 LDY PROGRAM ; Default to re-enter current program +f9ee : 810d CMPA #13 +f9f0 : 2718 BEQ CLI_GO2 ; *GO - enter current program +f9f2 : 813b CMPA #';' +f9f4 : 2712 BEQ CLI_GO1 ; *GO ;params - enter current program +f9f6 : bdffa1 JSR SCANHEX ; Get hex address +f9f9 : 2429 BCC CLI_TUBE ; Malformed hex address, pass to host +f9fb : bdf96b BSR SKIPSPC +f9fe : 813b CMPA #';' ; Check for ';' parameter marker +fa00 : 2706 BEQ CLI_GO1 ; *GO ;params or *GO ;params +fa02 : 810d CMPA #13 +fa04 : 261e BNE CLI_TUBE ; *GO ... or *GO .... +fa06 : 301f LEAX -1,X ; Balance following 1,X +fa08 : CLI_GO1: +fa08 : 3001 LEAX 1,X ; Step past ';' +fa0a : CLI_GO2: +fa0a : bfff86 STX LPTR ; Save pointer to command parameters +fa0d : 3510 PULS X ; Drop old line pointer +fa0f : 1f21 TFR Y,X ; X=entry address +fa11 : 1a01 ORCC #$01 ; Set Carry to indicate OSCLI +fa13 : 2023 BRA EXECUTE2 + + ; *HELP () + ; --------------- +fa15 : CMD_HELP: +fa15 : bdf96b JSR SKIPSPC +fa18 : 2504 BCS CMD_HELP2 ; *HELP - display help +fa1a : 812e CMPA #'.' ; *HELP . - display help +fa1c : 2606 BNE CLI_TUBE ; Otherwise, pass stright to host +fa1e : CMD_HELP2: +fa1e : 8ef816 LDX #BANNER +fa21 : bdf933 JSR SEND_TXT ; Print banner as help message + ; Fall through to CLI_TUBE + + + ; OSCLI - Send command line to host + ; ================================= + ; On entry: stacked X=>command string + ; On exit: All registers possibly corrupted + ; Registers should be preserved by calling code + ; + ; Tube data: $02 string $0D -- $7F or $80 + ; +fa24 : CLI_TUBE: +fa24 : 3510 PULS X ; Get command string back +fa26 : 8602 LDA #2 +fa28 : bdfcde JSR SEND_CMD ; Send command $02 = OSCLI +fa2b : bdfca2 JSR SEND_STR ; Send string at X +fa2e : CLI_WAIT1: +fa2e : 1a01 ORCC #$01 ; Set Carry to indicate OSCLI +fa30 : CLI_WAIT: +fa30 : bdfab4 JSR WAIT_BYTE ; Wait for result via Tube R2 (preserves Cy) + ; Data transfer may happen while waiting + ; TSTA ; Check return code + ; WAIT_BYTE returns flags set from A +fa33 : 2a51 BPL CLI_DONE ; Nothing to execute, return + + + ; EXECUTE - Enter code at ADDRESS + ; =============================== + ; Checks for possible code header, makes code current PROGRAM. + ; On entry, ADDRESS=code entry address + ; CS=entering from OSCLI + ; CC=entering from RESET + ; + ; If code in high memory, MEMTOP moved to below code. + ; If code returns, MEMTOP and PROGRAM restored to previous value. + ; + ; If code has a header it is made the current program so it can be re-entered + ; at soft reset, and entered with A=1. If not, it is entered with A=0. Code + ; has a small initial stack with 20 bytes available on it (eg 10 subroutine + ; calls). Note: this small stack will be overwritten if the called code calls + ; OSCLI without first setting up a new stack. + ; + ; If called from RESET and not 6809 code, error not reported, jumps directly + ; to CLICOM. In future this is the point where a disk operating system would + ; be checked for and booted. + ; +fa35 : EXECUTE: +fa35 : beff8e LDX ADDRESS+2 ; Get transfer address, note: big-endian +fa38 : EXECUTE2: +fa38 : 3401 PSHS CC ; Save RESET/OSCLI flag +fa3a : 1f12 TFR X,Y ; Save address in Y +fa3c : e607 LDB 7,X ; Get (C) offset +fa3e : 3a ABX ; X=>(C) string +fa3f : cefa93 LDU #EXEC_CHK+4 ; U=>check string +fa42 : c604 LDB #4 ; 4 bytes to check +fa44 : EXEC_LP: +fa44 : a680 LDA ,X+ ; Get byte from header +fa46 : a1c2 CMPA ,-U ; Compare with check string +fa48 : 263d BNE EXEC_JUMP ; No match, enter as raw code +fa4a : 5a DECB +fa4b : 26f7 BNE EXEC_LP ; Loop to check all four bytes +fa4d : a626 LDA 6,Y ; Get code type +fa4f : 48 ASLA ; Check b6 by moving it into b7 +fa50 : 2a41 BPL ERR_NOTCODE +fa52 : 841e ANDA #2*15 ; Byte has been moved up, so mask and compare with 2*n +fa54 : 8106 CMPA #2*3 +fa56 : 263b BNE ERR_NOT6809 + ; Should also check entry opcode for BRA or JMP to + ; filter out 68000 code with ROMTYPE=3 +fa58 : 301c LEAX -4,X +fa5a : bfff82 STX FAULT ; Point FAULT to (C) string (should be version string) +fa5d : feff90 LDU PROGRAM +fa60 : beff8a LDX MEMTOP +fa63 : 3502 PULS A ; Get RESET/OSCLI flag to A +fa65 : 3450 PSHS X,U ; Save current MEMTOP and PROGRAM +fa67 : 108c8000 CMPY #$8000 +fa6b : 2504 BCS EXEC_ENTER ; Entering code in low memory, leave MEMTOP where it is +fa6d : 10bfff8a STY MEMTOP ; Entering in high memory, put MEMTOP below entered code +fa71 : EXEC_ENTER: +fa71 : 46 RORA ; Move RESET/OSCLI flag back into Carry +fa72 : 10bfff90 STY PROGRAM ; Set as current program +fa76 : beff86 LDX LPTR ; X=>command line +fa79 : 8601 LDA #1 ; A=1 for code with a header +fa7b : ada4 JSR ,Y ; Call program execution address +fa7d : 3560 PULS Y,U +fa7f : 10bfff8a STY MEMTOP ; Restore previous MEMTOP if code returns +fa83 : ffff90 STU PROGRAM ; Restore previous PROGRAM +fa86 : NULL: ; Null routines +fa86 : CLI_DONE: +fa86 : 39 RTS ; Return +fa87 : EXEC_JUMP: +fa87 : beff86 LDX LPTR ; X=>command line +fa8a : 4f CLRA ; A=0 for raw code +fa8b : 3501 PULS CC ; Get RESET/OSCLI flag +fa8d : 6ea4 JMP ,Y ; Enter raw code +fa8f : EXEC_CHK: +fa8f : 294328 FCC ")C(" ; Deliberately backwards so doesn't match itself +fa92 : 00 FCB 0 +fa93 : ERR_NOTCODE: + ; PULS CC ; Get RESET/OSCLI flag + ; LBCC CLICOM ; If called from RESET, drop straight into Supervisor + ; JSR COM_BRKV + ; SWI + ; FCB 249 + ; FCC "Not code" + ; FCB 0 +fa93 : ERR_NOT6809: +fa93 : 3501 PULS CC ; Get RESET/OSCLI flag +fa95 : 10240520 LBCC CLICOM ; If called from RESET, drop straight into Supervisor + ; Here is where we would check if this is hard reset, + ; and look for a disk operating system to boot instead. +fa99 : bdf8cc JSR COM_BRKV ; Error handler may have been overwritten, so set up +fa9c : 3f SWI ; Supervisor error handler +fa9d : f9 FCB 249 +fa9e : 4e6f7420363830.. FCC "Not 6809 code" +faab : 00 FCB 0 + + + ; OSRDCH - Wait for character from input stream + ; ============================================= + ; On exit: A=char, Cy=carry + ; + ; Tube data: $00 -- Carry Char + ; +faac : RDCH: +faac : 4f CLRA +faad : bdfcde JSR SEND_CMD ; Send command $00 - OSRDCH +fab0 : WAIT_CHAR: +fab0 : 8d02 BSR WAIT_BYTE ; Get returned byte +fab2 : 8b80 ADDA #$80 ; Copy b7 into Carry + ; Fall through to fetch byte from Tube R2 + + + ; Wait for a byte from Tube Register 2 + ; ==================================== + ; On exit: A=byte read + ; PL/MI, EQ/NE set from A + ; Other flags preserved + ; +fab4 : WAIT_BYTE: +fab4 : b6fee2 LDA >TUBE2S ; Read Tube R2 Status +fab7 : 2afb BPL WAIT_BYTE ; Wait for b7 set +fab9 : b6fee3 LDA >TUBE2 ; Get byte from Tube R2 +fabc : BYTE_DONE: +fabc : 39 RTS + + + ; OSBYTE + ; ====== + ; On entry: A,X,Y=OSBYTE parameters + ; On exit: A preserved + ; If A<$80, X=returned value + ; If A>$7F, X, Y, Carry=returned values + ; + ; Tube data: $04 X A -- X + ; $06 X Y A -- Cy Y X + ; +fabd : BYTE: +fabd : 3406 PSHS A,B +fabf : 4d TSTA +fac0 : 2b23 BMI BYTE_HI +fac2 : 8604 LDA #4 +fac4 : bdfcde JSR SEND_CMD ; Send command $04 - short BYTE +fac7 : 1f10 TFR X,D ; B=X +fac9 : bdfcdc JSR SEND_BYTEB ; Send second parameter from B +facc : 3506 PULS A,B +face : 3406 PSHS A,B +fad0 : bdfcde JSR SEND_BYTE ; Send first parameter +fad3 : 8ddf JSR WAIT_BYTE ; Wait for response +fad5 : 1f89 TFR A,B ; Move result to low byte +fad7 : 4f CLRA ; Ensure AB is only 8-bit value +fad8 : 1f01 TFR D,X +fada : 3586 PULS A,B,PC + +fadc : BYTE_WAIT: +fadc : 8ef816 LDX #BANNER ; Point LPTR to +fadf : bfff86 STX LPTR +fae2 : 7efa2e BRA CLI_WAIT1 ; Wait for program start + + ; OSBYTE >$7F + ; ----------- +fae5 : BYTE_HI: +fae5 : 8182 CMPA #$82 +fae7 : 2739 BEQ MEM82 ; Fetch address high word +fae9 : 8183 CMPA #$83 +faeb : 2737 BEQ MEM83 ; Fetch user memory low limit +faed : 8184 CMPA #$84 +faef : 2733 BEQ MEM84 ; Fetch user memory high limit +faf1 : 8606 LDA #6 +faf3 : bdfcde JSR SEND_CMD ; Send command $06 - long byte +faf6 : 1f10 TFR X,D ; B=X - second parameter +faf8 : bdfcdc JSR SEND_BYTEB ; Send second parameter from B +fafb : bdfcda JSR SEND_BYTEY ; Send third parameter from Y +fafe : 3506 PULS A,B +fb00 : bdfcde JSR SEND_BYTE ; Send first parameter +fb03 : 819d CMPA #$9D ; Was it fast BPUT? +fb05 : 27b5 BEQ BYTE_DONE ; Don't wait for response +fb07 : 818e CMPA #$8E ; Was it start language? +fb09 : 27d1 BEQ BYTE_WAIT ; Wait for program start +fb0b : 3406 PSHS A,B +fb0d : 8da5 JSR WAIT_BYTE ; Wait for response +fb0f : 8b80 ADDA #$80 ; Copy b7 into carry +fb11 : 3401 PSHS CC ; Save flags +fb13 : 8d9f JSR WAIT_BYTE ; Wait for response +fb15 : 1f89 TFR A,B ; Move result to low byte +fb17 : 4f CLRA ; Ensure AB is only 8-bit value +fb18 : 1f02 TFR D,Y ; Return result in Y +fb1a : 8d98 JSR WAIT_BYTE ; Wait for response, high byte still in B +fb1c : 1e89 EXG A,B ; Swap so high byte is Y, low byte is fetched byte +fb1e : 1f01 TFR D,X ; Return result in X as returned Y*256+X value +fb20 : 3587 PULS CC,A,B,PC ; Restore flags/A/B and return +fb22 : MEM82: +fb22 : 8685 LDA #$85 +fb24 : MEM83: +fb24 : MEM84: +fb24 : 48 ASLA ; A=6,8,10 +fb25 : 8eff82 LDX #MEMBOT-6 ; Point to addresses +fb28 : ec84 LDD ,X ; Fetch address value +fb2a : 1f01 TFR D,X ; Return X=address +fb2c : 1f89 TFR A,B ; Copy top byte to bottom byte +fb2e : 4f CLRA ; Clear top byte +fb2f : 1f02 TFR D,Y ; Return Y=address DIV 256 +fb31 : 3586 PULS A,B,PC + + + ; OSWORD + ; ====== + ; On entry: A=OSWORD number + ; X=>control block + ; +fb33 : WORD: +fb33 : 4d TSTA +fb34 : 275c BEQ RDLINE ; Jump with OSWORD 0 - RDLINE + + ; OSWORD <>&00 + ; ------------ + ; Tube data: &08 function in_length block out_length -- block + ; +fb36 : 3426 PSHS D,Y ; Save AB and Y +fb38 : 3410 PSHS X ; Save X=>control block +fb3a : 1f89 TFR A,B ; B=function +fb3c : 8608 LDA #$08 +fb3e : bdfcde JSR SEND_CMD ; Send command $08 - OSWORD +fb41 : bdfcdc JSR SEND_BYTEB ; Send OSWORD function in B +fb44 : 5d TSTB ; Check OSWORD function +fb45 : 2a04 BPL WORD_TXLO ; Jump with functions<&80 +fb47 : a684 LDA ,X ; Get block length from control block +fb49 : 200c BRA WORD_SEND ; Jump to send control block +fb4b : WORD_TXLO: +fb4b : 8610 LDA #$10 ; Default SendBlock length +fb4d : c115 CMPB #$15 ; Check OSWORD function +fb4f : 2406 BCC WORD_SEND ; Use 16 bytes for OSWORD &15 to &7F +fb51 : 8efbc1 LDX #WORDTX-1 ; X=>send length table +fb54 : 3a ABX ; X=X+B, X=>send length +fb55 : a684 LDA ,X ; Get send length for OSWORD &01 to &14 +fb57 : WORD_SEND: +fb57 : 3510 PULS X ; Get X=>control block back +fb59 : bdfcde JSR SEND_BYTE ; Send outward block length +fb5c : 1f02 TFR D,Y ; AB=length+function Y=length+function +fb5e : 1e89 EXG A,B ; AB=function+length Y=length+function +fb60 : 4f CLRA ; AB=00000000+length Y=length+function +fb61 : 1e02 EXG D,Y ; AB=length+function Y=000000+length +fb63 : 4a DECA ; Convert 0 to -1 +fb64 : 2b03 BMI WORD_NOTX ; Only send length 1 to 128 +fb66 : bdfcab JSR SEND_BLK ; Send control block +fb69 : WORD_NOTX: +fb69 : 3410 PSHS X ; Save X=>control block +fb6b : 5d TSTB ; Check OSWORD function +fb6c : 2a04 BPL WORD_RXLO ; Jump with functions<&80 +fb6e : a601 LDA 1,X ; Get block length from control block +fb70 : 200c BRA WORD_RECV ; Jump to send control block +fb72 : WORD_RXLO: +fb72 : 8610 LDA #$10 ; Default ReceiveBlock length +fb74 : c115 CMPB #$15 ; Check OSWORD function +fb76 : 2406 BCC WORD_RECV ; Use 16 bytes for OSWORD &15 to &7F +fb78 : 8efbd5 LDX #WORDRX-1 ; X=>receive length table +fb7b : 3a ABX ; X=X+B, X=>receive length +fb7c : a684 LDA ,X ; Get receive length for OSWORD &01 to &14 +fb7e : WORD_RECV: +fb7e : 3510 PULS X ; Get X=>control block back +fb80 : bdfcde JSR SEND_BYTE ; Send inward block length +fb83 : 1f02 TFR D,Y ; AB=length+function Y=length+function +fb85 : 1e89 EXG A,B ; AB=function+length Y=length+function +fb87 : 4f CLRA ; AB=00000000+length Y=length+function +fb88 : 1e02 EXG D,Y ; AB=length+function Y=000000+length +fb8a : 4a DECA ; Convert 0 to -1 +fb8b : 2b03 BMI WORD_NORX ; Only receive length 1 to 128 +fb8d : bdfcbb JSR WAIT_BLK ; Wait for returned control block +fb90 : WORD_NORX: +fb90 : 35a6 PULS Y,D,PC ; Restore Y and AB and return + + + ; OSWORD 0 - Read a line of text + ; ------------------------------ + ; On entry: X=>addr.hi, addr.lo, maxlen, charlo, charhi + ; On exit: Cy=0: Ok, Cy=1: Escape + ; Y=length of returned string in buffer at addr + ; + ; Note: Address of text string in control block is local big-endian address + ; All other MOS calls use little-endian addresses to match Host + ; + ; Tube data: $0A block -- $FF or $7F string $0D + ; +fb92 : RDLINE: +fb92 : 860a LDA #10 +fb94 : bdfcde JSR SEND_CMD ; Send command $0A - RDLINE +fb97 : 3002 LEAX 2,X ; X=X+2, point to parameters +fb99 : 108e0003 LDY #3 +fb9d : bdfcab JSR SEND_BLK ; Send 3-byte control block +fba0 : 301e LEAX -2,X ; X=X-2, point back to text pointer +fba2 : 8607 LDA #7 +fba4 : bdfcde JSR SEND_BYTE ; Send $0700 +fba7 : 4f CLRA +fba8 : bdfcde JSR SEND_BYTE +fbab : bdfab4 JSR WAIT_BYTE ; Wait for response +fbae : 8b80 ADDA #$80 ; Copy bit 7 into Carry +fbb0 : 250f BCS RD_DONE +fbb2 : ae84 LDX ,X ; Get text pointer from control block + ; LDY #0 ; Y=number received (Y already zero from SEND_BLK) +fbb4 : RD_STR: +fbb4 : bdfab4 JSR WAIT_BYTE ; Wait for bytes from Tube R2 +fbb7 : a780 STA ,X+ ; Store in text buffer, increment X +fbb9 : 3121 LEAY 1,Y ; Increment character count +fbbb : 810d CMPA #13 ; Check current byte +fbbd : 26f5 BNE RD_STR ; Loop until +fbbf : 313f LEAY -1,Y ; Decrement character count to balance + ; ANDCC #$FE ; Clear carry (already CC from CMPA #13) +fbc1 : RD_DONE: +fbc1 : 39 RTS + + ; Table of OSWORD control block lengths for &01-&14 + ; ------------------------------------------------- +fbc2 : WORDTX: +fbc2 : 0005000504 FCB $00,$05,$00,$05,$04 +fbc7 : 05080e0401 FCB $05,$08,$0E,$04,$01 +fbcc : 0105001020 FCB $01,$05,$00,$10,$20 +fbd1 : 100d000480 FCB $10,$0D,$00,$04,$80 +fbd6 : WORDRX: +fbd6 : 0500050005 FCB $05,$00,$05,$00,$05 +fbdb : 0000000509 FCB $00,$00,$00,$05,$09 +fbe0 : 0500081900 FCB $05,$00,$08,$19,$00 +fbe5 : 010d800480 FCB $01,$0D,$80,$04,$80 + + + ; OSARGS - Read info on open file + ; =============================== + ; On entry: A=action + ; X=>data (little-endian) + ; Y=handle + ; On exit: A=returned value + ; X preserved + ; X=>any returned data + ; Y preserved + ; + ; Tube Data: $0C handle block function -- result block + ; +fbea : ARGS: +fbea : 3426 PSHS Y,B,A ; Save handle, B and function +fbec : 860c LDA #$0C +fbee : bdfcde JSR SEND_CMD ; Send command $0C - OSARGS +fbf1 : bdfcda JSR SEND_BYTEY ; Send handle +fbf4 : 108e0004 LDY #4 +fbf8 : bdfcab JSR SEND_BLK ; Send four-byte control block +fbfb : 3506 PULS A,B ; Get action back and restore B +fbfd : bdfcde JSR SEND_BYTE ; Send action +fc00 : bdfab4 JSR WAIT_BYTE ; Wait for returned result +fc03 : 3402 PSHS A ; Save result +fc05 : 108e0004 LDY #4 +fc09 : bdfcbb JSR WAIT_BLK ; Wait for four-byte control block +fc0c : 35a2 PULS A,Y,PC ; Get result and original handle back, and return + + + ; OSBGet - Get a byte from open file + ; ================================== + ; On entry: Y=handle + ; On exit: A=byte Read + ; Y=preserved + ; Cy set if EOF + ; + ; Tube data: $0E handle -- Carry byte + ; +fc0e : BGet: +fc0e : 3404 PSHS B +fc10 : 860e LDA #$0E +fc12 : bdfcde JSR SEND_CMD ; Send command $0E - OSBGet +fc15 : bdfcda JSR SEND_BYTEY ; Send handle +fc18 : 3504 PULS B +fc1a : 7efab0 JMP WAIT_CHAR ; Wait for Carry, Byte + + + ; OSBPut - Put a byte to an open file + ; =================================== + ; On entry: A=byte to write + ; Y=handle + ; On exit: A=preserved + ; Y=preserved + ; + ; Tube data: $10 handle byte -- $7F + ; +fc1d : BPut: +fc1d : 3406 PSHS A,B ; Save byte and B +fc1f : 8610 LDA #$10 +fc21 : bdfcde JSR SEND_CMD ; Send command $10 - OSBPut +fc24 : bdfcda JSR SEND_BYTEY ; Send handle +fc27 : 3506 PULS A,B ; Get A and B back +fc29 : 3406 PSHS A,B +fc2b : bdfcde JSR SEND_BYTE ; Send byte to Tube +fc2e : bdfab4 JSR WAIT_BYTE ; Wait for acknowledgement +fc31 : 3586 PULS A,B,PC ; Restore A/B and return + + + ; OSFIND - Open or Close a file + ; ============================= + ; On entry: A=function + ; Y=handle or X=>filename + ; On exit: A=zero or handle + ; X,Y preserved + ; + ; Tube data: $12 function string $0D -- handle + ; $12 $00 handle -- $7F + ; +fc33 : FIND: +fc33 : 3406 PSHS A,B ; Save A +fc35 : 8612 LDA #$12 +fc37 : bdfcde JSR SEND_CMD ; Send command $12 - OSFIND +fc3a : 3506 PULS A,B ; Get function back +fc3c : bdfcde JSR SEND_BYTE ; Send function +fc3f : 4d TSTA ; Check function +fc40 : 2706 BEQ Close ; Jump to deal with Close +fc42 : bdfca2 JSR SEND_STR ; Send string at X +fc45 : 7efab4 JMP WAIT_BYTE ; Wait for returned handle +fc48 : Close: +fc48 : 3404 PSHS B +fc4a : bdfcda JSR SEND_BYTEY ; Send handle to Tube +fc4d : bdfab4 JSR WAIT_BYTE ; Wait for acknowledgement +fc50 : 4f CLRA ; Zero A +fc51 : 3584 PULS B,PC ; Restore B and return + + + ; OSFILE - Operate on whole files + ; =============================== + ; On entry: A=function + ; X=>control block + ; On exit: A=result + ; X preserved + ; control block updated + ; + ; Note: Address of text string in control block is local big-endian address + ; All other MOS calls use little-endian addresses to match Host + ; + ; Tube data: $14 block string function -- result block + ; +fc53 : FILE: +fc53 : 3432 PSHS Y,X,A ; Save Y, X and function +fc55 : 8614 LDA #$14 +fc57 : bdfcde JSR SEND_CMD ; Send command $14 - OSFILE +fc5a : 3002 LEAX 2,X ; Point to control block contents +fc5c : 108e0010 LDY #16 +fc60 : bdfcab JSR SEND_BLK ; Send 16-byte control block +fc63 : 301e LEAX -2,X ; Point to filename pointer +fc65 : ae84 LDX ,X ; Get filename pointer to X +fc67 : bdfca2 JSR SEND_STR ; Send filename string +fc6a : 3502 PULS A +fc6c : bdfcde JSR SEND_BYTE ; Send function +fc6f : bdfab4 JSR WAIT_BYTE ; Wait for returned result + ; Data transfer via interupts may happen while waiting +fc72 : 3510 PULS X ; Get control block pointer back +fc74 : 3402 PSHS A ; Save result +fc76 : 3002 LEAX 2,X ; Point to control block contents +fc78 : 108e0010 LDY #16 +fc7c : bdfcbb JSR WAIT_BLK ; Wait for 16-byte control block +fc7f : 301e LEAX -2,X ; Restore X +fc81 : 35a2 PULS A,Y,PC ; Get result and Y back and return + + + ; OSGBPB - Multiple byte Read and write + ; ===================================== + ; On entry: A=function + ; X=>control block + ; On exit: A=returned value + ; control block updated + ; + ; Tube data: $16 block function -- block Carry result + ; +fc83 : GBPB: +fc83 : 3422 PSHS A,Y ; Save Y and function +fc85 : 8616 LDA #$16 +fc87 : bdfcde JSR SEND_CMD ; Send command $16 - OSGBPB +fc8a : 108e000d LDY #13 +fc8e : bdfcab JSR SEND_BLK ; Send 13-byte control block +fc91 : 3502 PULS A +fc93 : bdfcde JSR SEND_BYTE ; Send function +fc96 : 108e000d LDY #13 +fc9a : bdfcbb JSR WAIT_BLK ; Wait for 13-byte control block +fc9d : 3520 PULS Y ; Get Y back +fc9f : 7efab0 JMP WAIT_CHAR ; Get Carry and result byte + + + ; ***************** + ; Tube I/O routines + ; ***************** + + ; Send cr-string at X to Tube Register 2 + ; ========================================= +fca2 : SEND_STR: +fca2 : a680 LDA ,X+ ; Get byte from X, increment X +fca4 : 8d38 BSR SEND_BYTE ; Send byte via Tube R2 +fca6 : 810d CMPA #13 ; Test current character +fca8 : 26f8 BNE SEND_STR ; Loop until CR sent +fcaa : 39 RTS + + + ; Send block at X to Tube Register 2, Y=block length + ; ================================================== +fcab : SEND_BLK: +fcab : 3404 PSHS B ; Save B +fcad : 1f20 TFR Y,D ; B=Y +fcaf : 3a ABX ; X=X+B, X points to end of block+1 +fcb0 : 3504 PULS B ; Restore B +fcb2 : SEND_BLKLP: +fcb2 : a682 LDA ,-X ; Decrement X, get byte from X +fcb4 : 8d28 BSR SEND_BYTE ; Send byte via Tube R2 +fcb6 : 313f LEAY -1,Y ; Decrement count of bytes to send +fcb8 : 26f8 BNE SEND_BLKLP ; Loop until all bytes sent +fcba : 39 RTS + + + ; Wait for block at X from Tube Register 2, Y=block length + ; ======================================================== +fcbb : WAIT_BLK: +fcbb : 3404 PSHS B ; Save B +fcbd : 1f20 TFR Y,D ; B=Y +fcbf : 3a ABX ; X=X+B, X points to end of block+1 +fcc0 : 3504 PULS B ; Restore B +fcc2 : WAIT_BLKLP: +fcc2 : bdfab4 JSR WAIT_BYTE ; Get byte via Tube R2 +fcc5 : a782 STA ,-X ; Decrement X, store byte at X +fcc7 : 313f LEAY -1,Y ; Decrement count of bytes +fcc9 : 26f7 BNE WAIT_BLKLP ; Loop until all bytes sent +fccb : 39 RTS + + + ; OSWRCH - Send character in A to Tube Register 1 + ; =============================================== + ; Preserves A, corrupts flags + ; +fccc : WRCH: +fccc : 3402 PSHS A ; Save A +fcce : SEND_R1LP: +fcce : b6fee0 LDA >TUBE1S ; Read Tube R1 status +fcd1 : 48 ASLA ; Move TxRDY from b6 to b7 +fcd2 : 2afa BPL SEND_R1LP ; Loop until TxRDY set +fcd4 : 3502 PULS A ; Get A back +fcd6 : b7fee1 STA >TUBE1 ; Send byte to Tube R1 +fcd9 : 39 RTS + + + ; Send byte in Y to Tube Register 2 via B + ; ======================================= +fcda : SEND_BYTEY: +fcda : 1f20 TFR Y,D + ; ; Fall through into SEND_BYTEB + + + ; Send byte in B to Tube Register 2 + ; ================================== +fcdc : SEND_BYTEB: +fcdc : 1f98 TFR B,A + ; ; Fall through into SendByte + + + ; Send byte in A to Tube Register 2 + ; ================================== + ; Preserves A, corrupts flags + ; +fcde : SEND_CMD: +fcde : SEND_BYTE: +fcde : 3402 PSHS A ; Save A +fce0 : SEND_BYTELP: +fce0 : b6fee2 LDA >TUBE2S ; Read Tube R2 status +fce3 : 48 ASLA ; Move TxRDY from b6 to b7 +fce4 : 2afa BPL SEND_BYTELP ; Loop until TxRDY set +fce6 : 3502 PULS A ; Get A back +fce8 : b7fee3 STA >TUBE2 ; Send byte to Tube R2 +fceb : 39 RTS + + + ; **************************************** + ; Host->Client communication via interupts + ; **************************************** + ; When Host sends a byte to R1 or R4 it generates a Client IRQ. + ; Data transfers are syncronised with client NMIs. Graham Toal's + ; design sends Tube IRQs to 6809 FIRQs and Tube NMIs to 6809 IRQs. + ; Transfers are synchronised with SYNC instruction waiting for IRQs. + ; + ; This code manually translated from Graham Toal's Skimp code + ; with half an eye on the PDP-11, Z80 and 6502 code. + ; Most code before this point translated from JGH PDP-11 client. + + + ; Interupt handler + ; ================ + ; Stack holds: CC with E=0, PC + ; CC has I and F set to disable further IRQs and FIRQs + ; +fcec : FIRQ_HANDLE: +fcec : 3402 PSHS A +fcee : b6fee6 LDA >TUBE4S ; Read Tube R4 status +fcf1 : 2b51 BMI FIRQ_R4 ; If data in Tube R4, jump to process errors and transfers +fcf3 : b6fee0 LDA >TUBE1S ; Read Tube R1 status +fcf6 : 2b06 BMI FIRQ_R1 ; If data in Tube R1, jump to process Escape and Events +fcf8 : 3502 PULS A ; Get A back +fcfa : 6e9fffb1 JMP [IRQ2V] ; Pass interupt onwards + + ; Interupt generated by data in Tube R1 + ; ------------------------------------- +fcfe : FIRQ_R1: +fcfe : b6fee1 LDA >TUBE1 +fd01 : 2b1b BMI FIRQ_Escape ; b7=1, jump to set Escape state + ; + ; A<$80 - Host event being passed to client + ; Tube data: via R1: $00 Y X A + ; +fd03 : 3502 PULS A ; Pop A to restack all registers +fd05 : 3476 PSHS A,B,X,Y,U ; Save everything +fd07 : 8d1c BSR Get_R1 ; Get event Y parameter +fd09 : 1f89 TFR A,B +fd0b : 4f CLRA ; Ensure AB is 8-bit value +fd0c : 1f02 TFR D,Y +fd0e : 8d15 BSR Get_R1 ; Get event X parameter +fd10 : 1f89 TFR A,B +fd12 : 4f CLRA ; Ensure AB is 8-bit value +fd13 : 1f01 TFR D,X +fd15 : 8d0e BSR Get_R1 ; Get event A parameter +fd17 : ad9ffffc JSR [EVENTV] ; Dispatch event +fd1b : 3576 PULS U,Y,X,B,A ; Restore registers +fd1d : 3b RTI ; Return from interupt + + ; A>$7F - Host changing Escape state + ; Tube data: via R1: flag, b7=1, b6=state + ; +fd1e : FIRQ_Escape: +fd1e : 48 ASLA ; Move b6 into b7 +fd1f : b7ff80 STA >ESCFLG ; Store Escape flag +fd22 : 3502 PULS A ; Restore A +fd24 : 3b RTI ; Return from interupt + + ; Read byte from Tube R1, allowing Tube R4 transfers to take place + ; ---------------------------------------------------------------- +fd25 : Get_R1: +fd25 : b6fee6 LDA >TUBE4S ; Read Tube R4 status +fd28 : 2b02 BMI NotFIRQ_R4 ; Pending R4 transfer higher priority than R1 transfer +fd2a : 8d12 BSR FIRQ_R4_CC ; Deal with R4 interupt +fd2c : NotFIRQ_R4: +fd2c : b6fee0 LDA >TUBE1S ; Read Tube R1 status +fd2f : 2af4 BPL Get_R1 ; Loop until b7 set +fd31 : b6fee1 LDA >TUBE1 ; Get byte from Tube R1 +fd34 : 39 RTS + + ; Read byte from Tube R4 + ; ---------------------- +fd35 : Get_R4: +fd35 : b6fee6 LDA >TUBE4S ; Read Tube R4 status +fd38 : 2afb BPL Get_R4 ; Loop until b7 set +fd3a : b6fee7 LDA >TUBE4 ; Get byte from Tube R4 +fd3d : 39 RTS + + ; Interrupt generated by data in Tube R4 + ; -------------------------------------- +fd3e : FIRQ_R4_CC: +fd3e : 1c7f ANDCC #$7F ; Clear 'all registers' bit +fd40 : 3401 PSHS CC ; Push CC to let this be a subroutine +fd42 : 3402 PSHS A ; Push A to balance following Pull +fd44 : FIRQ_R4: +fd44 : 3502 PULS A ; Pop A to restack registers +fd46 : 3416 PSHS A,B,X ; Rearrange stack contents +fd48 : b6fee7 LDA >TUBE4 +fd4b : 2a22 BPL FIRQ_Data ; b7=0, jump for data transfer + + ; A>$7F - Error occured + ; Tube data: via R2: $00 err string $00 + ; +fd4d : 10ceff80 LDS #ERRSTK ; Collapse stack +fd51 : 8eff00 LDX #ERRBLK ; Point to error buffer +fd54 : bdfab4 JSR WAIT_BYTE ; Wait for BRK error code +fd57 : 863f LDA #$3F ; SWI opcode +fd59 : a780 STA ,X+ ; Store SWI opcode +fd5b : bdfab4 JSR WAIT_BYTE ; Get error number +fd5e : a780 STA ,X+ ; Store error number +fd60 : FIRQ_R4LP: +fd60 : bdfab4 JSR WAIT_BYTE ; Wait for byte of error string +fd63 : a780 STA ,X+ ; Store in error buffer + ; WAIT_BYTE returns flags set from A +fd65 : 26f9 BNE FIRQ_R4LP ; Loop until terminating $00 received +fd67 : 8eff01 LDX #ERRBLK+1 ; Point to error block after SWI opcode +fd6a : 3410 PSHS X ; Push error pointer onto stack +fd6c : 7effbc JMP ERRJMP ; Jump to generate error + ; FIRQ and IRQ will be enabled by error handler + + ; Data transfer via FIRQs + ; ----------------------- + ; R4<$80 - Data transfer + ; Tube data: via R4: action ID block sync, via R3: data + ; + ; Cribbed from Graham Toal's Skimp code + ; +fd6f : FIRQ_Data: + ; A=transfer type + ; +fd6f : 3402 PSHS A ; Save transfer type +fd71 : 8dc2 BSR Get_R4 ; Wait for caller ID +fd73 : 3502 PULS A ; Get transfer type back +fd75 : 8105 CMPA #5 ; Is it 'release'? +fd77 : 2606 BNE FIRQ_NotDone; No, jump to do transfer DMB: fixed BEQ/BNE error +fd79 : 7fff94 CLR DMA_DONE ; Signal 'transfer done' +fd7c : 3516 PULS A,B,X ; Restore registers +fd7e : 3b RTI ; and return from interupt + ; +fd7f : FIRQ_NotDone: +fd7f : 3402 PSHS A ; Save transfer type again and save X and B +fd81 : 8db2 BSR Get_R4 ; Get data address MSB +fd83 : b7ff8c STA ADDRESS+0 ; Note - 6809 is big-endian +fd86 : 8dad BSR Get_R4 ; Get data address +fd88 : b7ff8d STA ADDRESS+1 +fd8b : 8da8 BSR Get_R4 ; Get data address +fd8d : b7ff8e STA ADDRESS+2 +fd90 : 8da3 BSR Get_R4 ; Get data address LSB +fd92 : b7ff8f STA ADDRESS+3 +fd95 : 8d9e BSR Get_R4 ; Get sync byte +fd97 : 86ff LDA #$FF +fd99 : b7ff94 STA DMA_DONE ; Signal 'transfer in progress' +fd9c : 1cbf ANDCC #$BF ; DMB: re-enable FIRQ interrupts to allow Release FIRQ + +fd9e : beff8e LDX ADDRESS+2 ; Prepare X with transfer address +fda1 : a6e0 LDA ,S+ ; Pop A from stack and set Z flag +fda3 : 276c BEQ FIRQ0 ; Dispatch to FIRQ subhandler +fda5 : 8102 CMPA #2 +fda7 : 255b BCS FIRQ1 +fda9 : 2749 BEQ FIRQ2 +fdab : 8104 CMPA #4 +fdad : 2535 BCS FIRQ3 +fdaf : 276e BEQ FIRQ4 +fdb1 : 5f CLRB ; B=offset from start address for 256-byte transfers +fdb2 : 8107 CMPA #7 ; We will never get a FIRQ5 here as filtered out earlier +fdb4 : 2511 BCS FIRQ6 +fdb6 : 2667 BNE FIRQ_EXIT + + ; 1-byte and 2-byte Tube R3 interrupts done via IRQ/SYNC mechanism + ; 256-byte transfers done by polling transfer register + + ; Transfer 7 - Multiple byte host -> parasite + ; ------------------------------------------- +fdb8 : FIRQ7: +fdb8 : FIRQ7lp: +fdb8 : b6fee4 LDA >TUBE3S ; Wait for Tube R3 ready +fdbb : 2afb BPL FIRQ7lp +fdbd : b6fee5 LDA >TUBE3 ; Get byte from Tube host via R3 +fdc0 : a785 STA B,X ; Store in parasite memory at (X+B) +fdc2 : 5c INCB ; Increment offset from X +fdc3 : 26f3 BNE FIRQ7lp ; Loop 256 times +fdc5 : 2017 BRA FIRQ67_DONE ; Update ADDRESS and exit + + ; Transfer 6 - Multiple byte parasite -> host + ; ------------------------------------------- +fdc7 : FIRQ6: +fdc7 : FIRQ6lp: +fdc7 : b6fee4 LDA >TUBE3S ; Wait for Tube R3 ready +fdca : 48 ASLA +fdcb : 2afa BPL FIRQ6lp +fdcd : a685 LDA B,X ; Get byte from parasite memory at (X+B) +fdcf : b7fee5 STA >TUBE3 ; Send to Tube host via R3 +fdd2 : 5c INCB ; Increment offset from X +fdd3 : 26f2 BNE FIRQ6lp ; Loop 256 times +fdd5 : FIRQ6lp2: +fdd5 : b6fee4 LDA >TUBE3S ; Wait for Tube R3 ready +fdd8 : 48 ASLA +fdd9 : 2afa BPL FIRQ6lp2 +fddb : b7fee5 STA >TUBE3 ; Send 257th byte to flush FIFO +fdde : FIRQ67_DONE: +fdde : 30890100 LEAX 256,X ; X=X+256 +fde2 : 2038 BRA FIRQ_DONE + + ; Transfer 3 - Double byte host -> parasite + ; ----------------------------------------- +fde4 : FIRQ3: +fde4 : FIRQ3lp: +fde4 : 13 SYNC ; Wait for IRQ +fde5 : b6fee5 LDA >TUBE3 ; Get two bytes from Tube host +fde8 : f6fee5 LDB >TUBE3 +fdeb : ed81 STD ,X++ ; Store them in parasite memory +fded : b6ff94 LDA DMA_DONE +fdf0 : 26f2 BNE FIRQ3lp +fdf2 : 2028 BRA FIRQ_DONE + + ; Transfer 2 - Double byte parasite -> host + ; ----------------------------------------- +fdf4 : FIRQ2: +fdf4 : FIRQ2lp: +fdf4 : 13 SYNC ; Wait for IRQ +fdf5 : ec81 LDD ,X++ ; Fetch two bytes from parasite memory +fdf7 : b7fee5 STA >TUBE3 ; Send them to Tube host +fdfa : f7fee5 STB >TUBE3 +fdfd : b6ff94 LDA DMA_DONE ; Has flag changed? +fe00 : 26f2 BNE FIRQ2lp ; Loop until FIRQ5 clears flag +fe02 : 2018 BRA FIRQ_DONE + + ; Transfer 1 - Single bytes host -> parasite + ; ------------------------------------------ +fe04 : FIRQ1: +fe04 : FIRQ1lp: +fe04 : 13 SYNC ; Wait for IRQ +fe05 : b6fee5 LDA >TUBE3 ; Get byte from Tube host +fe08 : a780 STA ,X+ ; Store in parasite memory +fe0a : b6ff94 LDA DMA_DONE ; Has flag changed? +fe0d : 26f5 BNE FIRQ1lp ; Loop until FIRQ5 clears flag +fe0f : 200b BRA FIRQ_DONE + + ; Transfer 0 - Single bytes parasite -> host + ; ------------------------------------------ +fe11 : FIRQ0: +fe11 : FIRQ0lp: +fe11 : 13 SYNC ; Wait for IRQ +fe12 : a680 LDA ,X+ ; Get byte from parasite memory +fe14 : b7fee5 STA >TUBE3 ; Send to Tube host +fe17 : b6ff94 LDA DMA_DONE ; Has flag changed? +fe1a : 26f5 BNE FIRQ0lp ; Loop until FIRQ5 clears flag +fe1c : FIRQ_DONE: +fe1c : bfff8e STX ADDRESS+2 ; Update transfer address + + ; Transfer 4 - Set program execute address + ; ---------------------------------------- +fe1f : FIRQ4: +fe1f : FIRQ_EXIT: +fe1f : 3516 PULS A,B,X + ; After a FIRQ4 the Host will then send a FIRQ5 to release the Tube and + ; clear DNA_DONE. OSCLI handler will pick up execution address and pass + ; it to PROGRAM. + + + ; Null interupt routines + ; ====================== + ; OS-9 and FLEX use a timer on IRQ to poll background processes + ; +fe21 : NULL_RTI: +fe21 : RES_HANDLE: +fe21 : SWI2_HANDLE: +fe21 : SWI3_HANDLE: +fe21 : IRQ_HANDLE: +fe21 : NMI_HANDLE: +fe21 : 3b RTI + + + ; SWI - Generate an error + ; ======================= +fe22 : SWI_HANDLE: +fe22 : 326a LEAS 10,S ; Point to stacked PC +fe24 : ERR_HANDLE: +fe24 : 3510 PULS X ; Pop address of error block after SWI opcode +fe26 : bfff82 STX FAULT ; Save pointer to last error +fe29 : 1c00 ANDCC #$00 ; Clear all flags, enable interupts +fe2b : 6e9ffffa JMP [BRKV] ; Jump to current error handler with X=>error + + + ; I/O address space + ; ================= + ; Add any extra I/O devices here by pulling IOADDRS backwards + ; For example: + ; $FECx VIA + ; $FEDx MMU + ; $FEEx TUBE + ; $FEFx VECTORS + ; +fec0 = ORG $FEC0 +fec0 : IOADDRS: +fee0 = ORG $FEE0 +fee0 : 00 TUBE1S: FCB 0 ; $FEE0 ; Tube registers +fee1 : 00 TUBE1: FCB 0 ; $FEE1 +fee2 : 00 TUBE2S: FCB 0 ; $FEE2 +fee3 : 00 TUBE2: FCB 0 ; $FEE3 +fee4 : 00 TUBE3S: FCB 0 ; $FEE4 +fee5 : 00 TUBE3: FCB 0 ; $FEE5 +fee6 : 00 TUBE4S: FCB 0 ; $FEE6 +fee7 : 00 TUBE4: FCB 0 ; $FEE7 + ; If Tube registers fully decoded, space for 8 I/O addresses here + ; For example: + ; $FEE8/9 ACIA + + + ; Remapped hardware vectors + ; ========================= + ; BA/BS decoded to toggle address line A8 to map hardware vectors to $FEF0 + ; +fef0 = ORG $FEF0 +fef0 : ROMHIGH: +fef0 : fe21 XRESV: FDB RES_HANDLE ; $FEF0 ; Hardware vectors, paged in to $FFFx +fef2 : fe21 XSWI3V: FDB SWI3_HANDLE ; $FEF2 +fef4 : fe21 XSWI2V: FDB SWI2_HANDLE ; $FEF4 +fef6 : fcec XFIRQV: FDB FIRQ_HANDLE ; $FEF6 +fef8 : fe21 XIRQV: FDB IRQ_HANDLE ; $FEF8 +fefa : fe22 XSWIV: FDB SWI_HANDLE ; $FEFA +fefc : fe21 XNMIV: FDB NMI_HANDLE ; $FEFC +fefe : f82c XRESETV: FDB RESET ; $FEFE + + + ; Text buffers + ; ============ +ff00 = ORG $FF00 +ff00 : 00000000000000.. ERRBLK: RMB 40 ; Buffer to store host error block +ff28 : CLISTK: ; Internal stack for CLI commands + ; as main memory may be overwritten +ff28 : 00000000000000.. CLIBUF: RMB 128-40 ; Space to enter command line from CLI prompt +ff80 : CLIEND: ;EQU ESCFLG +ff80 : ERRSTK: ; Internal stack for host errors + + + ; Tube system workspace and MOS entry block + ; ========================================= +ff80 = ORG $FF80 +ff80 : WORKSP: ; Use same addresses as Z80 +ff80 : 00 ESCFLG: FCB 0 ; $FF80 ; Escape flag +ff81 : 00 FCB 0 ; $FF81 ; TempA/Personality +ff82 : f816 FAULT: FDB BANNER ; $FF82 ; Last error message +ff84 : f8b0 DEFERR: FDB COM_ERR ; $FF84 ; Default error handler +ff86 : f816 LPTR: FDB BANNER ; $FF86 ; Command line tail +ff88 : 0000 MEMBOT: FDB RAMSTART ; $FF88 ; Bottom of user memory +ff8a : f800 MEMTOP: FDB RAMEND ; $FF8A ; Top of user memory +ff8c : 0000 ADDRESS: FDB 0 ; $FF8C ; Tube transfer address +ff8e : 0000 FDB 0 +ff90 : ffb9 PROGRAM: FDB CLICOM ; $FF90 ; Program entry address +ff92 : ff00 CTRL: FDB ERRBLK ; $FF92 ; Control block address +ff94 : 00 DMA_DONE: FCB 0 ; $FF94 ; Transfer completion flag + + ; Tube system entry points + ; ------------------------ +ff95 = ORG $FF95 +ff95 : 7efa86 JMP >NULL ; &FF95 ; Service +ff98 : 7ef82c JMP >RESET ; &FF98 ; Cold +ff9b : 7efa86 JMP >NULL ; &FF9B ; ReadDec +ff9e : 7efa86 JMP >NULL ; &FF9E ; +ffa1 : 7ef93c SCANHEX: JMP >RD_HEX ; &FFA1 ; ReadHex +ffa4 : 7efa86 DISKACC: JMP >NULL ; &FFA4 ; DiskAccess +ffa7 : 7ef871 OSQUIT: JMP >WARMS ; &FFA7 ; Quit current process +ffaa : 7ef911 PRHEX: JMP >PR_HEX ; &FFAA ; Print A as 8-bit hex +ffad : 7ef905 PR2HEX: JMP >PR_2HEX ; &FFAD ; Print X as 16-bit hex +ffb0 : 7efe21 USERINT: JMP >NULL_RTI ; &FFB0 ; Pass on FIRQs if not Tube FIRQ +ffb1 = IRQ2V: EQU USERINT+1 +ffb3 : 7ef92c PRTEXT: JMP >PR_TEXT ; &FFB3 ; Print inline ZASCII text +ffb6 : 7efa86 JMP >NULL ; &FFB6 ; VecDef/PrntC +ffb9 : 7ef871 CLICOM: JMP >CLILOOP ; &FFB9 ; Enter Supervisor *command prompt +ffbc : 7efe24 ERRJMP: JMP >ERR_HANDLE; &FFBC ; Generate an error +ffbf : 7ef8d2 INITERR: JMP >ERR_INIT ; &FFBF ; Initialise default error handler +ffc2 : 7efa86 DISKRST: JMP >NULL ; &FFC2 ; DiskReset +ffc5 : 7ef933 PRSTRING: JMP >SEND_TXT ; &FFC5 ; Print ZASCII text at X +ffc8 : 7efa86 JMP >NULL ; &FFC8 +ffcb : 7efa86 JMP >NULL ; &FFCB + + ; MOS file entry points + ; --------------------- +ffce : 7efc33 OSFIND: JMP >FIND ; $FFCE +ffd1 : 7efc83 OSGBPB: JMP >GBPB ; $FFD1 +ffd4 : 7efc1d OSBPUT: JMP >BPut ; $FFD4 +ffd7 : 7efc0e OSBGET: JMP >BGet ; $FFD7 +ffda : 7efbea OSARGS: JMP >ARGS ; $FFDA +ffdd : 7efc53 OSFILE: JMP >FILE ; $FFDD + + ; MOS character entry points + ; -------------------------- +ffe0 : 7efaac OSRDCH: JMP >RDCH ; $FFE0 +ffe3 : 810d OSASCI: CMPA #13 ; $FFE3 +ffe5 : 2607 BNE OSWRCH +ffe7 : 860a OSNEWL: LDA #10 ; $FFE7 +ffe9 : bdffee JSR OSWRCH +ffec : 860d OSWRCR: LDA #13 ; $FFEC +ffee : 7efccc OSWRCH: JMP >WRCH ; $FFEE + + ; MOS system entry points + ; ----------------------- +fff1 : 7efb33 OSWORD: JMP >WORD ; $FFF1 +fff4 : 7efabd OSBYTE: JMP >BYTE ; $FFF4 +fff7 : 7ef976 OS_CLI: JMP >CLI ; $FFF7 +fffa : f8b0 BRKV: FDB COM_ERR ; $FFFA ; Error handler +fffc : fa86 EVENTV: FDB NULL ; $FFFC ; Event vector +fffe : f82c L_FFFE: FDB RESET ; $FFFE ; Reset vector + + + ; Memory Mapping Unit/Dynamic Address Translation + ; =============================================== + ; SWTPC clones have an MMU/DAT at $FFF0 + + +No errors in pass 2. +Wrote binary from address $f800 through $ffff. +Total size 2048 bytes. + \ No newline at end of file diff --git a/client/6809/100/Client09.src b/client/6809/100/Client09.src new file mode 100644 index 0000000..bd709c0 --- /dev/null +++ b/client/6809/100/Client09.src @@ -0,0 +1,1494 @@ +; 6809 Tube Client Code +; ===================== +; Copyright (C)1989, 2008, 2012, 2014 J.G.Harston +; This can be assembled with: +; DOS as9: as9 Client09.src -l now bin > errors.txt +; Kingswood as09: as09-dos -i -lTube09.lst -oTube09.bin Client09.src +; +; v0.10 1989 JGH: Initial unfinished version. +; v0.20 11-Mar-2008 JGH: Inspired by Johan Heuseveldt to complete +; 12-Mar-2008 JGH: Fixed where A/B was wrong way around in D +; OSBYTE &8E no longer ends with unbalanced stack +; BYTE_HI sends X,Y correct way around +; Internal variables at same address as Z80 +; v0.21 07-Jan-2012 JGH: Added client error handler +; v0.22 20-Nov-2014 DMB: Bugfix in FIRQ code from David Banks +; JGH: Added PRHEX and HR2HEX, execute enters at PROGRAM +; 25-Nov-2014 JGH: Added OSWORD <>0 handler, preparing to merge source +; with 6809 Serial Tube client. Crunched some JSRs to BSRs. +; Shorter FIRQ dispatch code. Moved text buffers to $FF00. +; 28-Nov-2014 JGH: Replaced LDA #0 with CLRA, use returned flags from WAIT_BYTE. +; STARTUP and OSCLI use internal stack. +; MEMTOP moved below code if code is in high memory. +; v0.23 30-Nov-2014 DMB: JSR [,X] should be JSR ,X in EXEC_ENTER. +; JGH: Fixed off-by-one in PR_HEX and preserves A, added PR_STRING. +; PULS reg followed by RTS merged into PULS reg,PC +; 02-Dec-2014 JGH: Implemented KBDTST for 6809 BIOS calls. Execute checks code +; header. WARM resets MEMBOT & MEMTOP. +; v0.24 07-Dec-2014 JGH: EXECUTE enters code with A=1 or A=0, PROG saved and restored, +; soft Break will re-enter at PROG. OSCLI saves all registers. +; Bugfix: data transfer FIRQs corrupted foreground X and B. +; DMB: Bugfix: EXECUTE should use ADDRESS+2 big-endian address. +; JGH: Raw 6809 code is not made the current program. Supervisor +; prompt makes itself current program. Full header (C) check. +; RESET avoids overwriting PROG so Soft Reset will re-enter +; current program. +; 14-Dec-2014 JGH: When EXECUTE called on RESET, does not report 'Not 6809 code' +; error, but jumps directly to CLICOM. Gives a cleaner startup +; display, and this is hook for future check for booting disk +; operating system. +; DMB: Bug: Hangs on Ctrl-Break, but not on Soft-Break +; v0.25 20-Dec-2014 JGH: Bugfix: Fixed hang on Ctrl-Break, FIRQ6/7 was wrong way around. +; Added local *GO and *HELP commands, LPTR set to command line, +; OSBYTE 142 sets null LPTR. OSBYTE $82-$84 return address/256 in Y. +; Testing TxRDY uses ASLA instead of AND #$40. Squashed some JSRs +; into BSRs. +VERSION: EQU $0100 +; v1.00 01-Nov-2015 JGH: Rolled over to version 1.00. +; +; +; This code may be freely reused. +; +; Acknowledgements to: +; Johan Heuseveldt: mentioning 6809 CoPros on the BBC Mailing List inspired me to +; complete the code. +; David Banks: plenty of testing on the Matchbox CoPro "real" hardware. +; + +; Notes: +; 07-Jan-2012: When I initially wrote this I didn't have any 6809 hardware, so don't know +; if this executed. +; 20-Nov-2014: DMB has tested this on Matchbox emulated hardware and shown it to work. +; +; Bugs, limitations: +; CTRL not set to control block +; + + +; Memory layout: +; +-------------+--------------------------------------------------------+ +; | 0000- | vvv User memory vvv | +; | | | +; | -F7FF | ^^^ System stack ^^^ | +; +-------------+--------------------------------------------------------+ +; | F800-FFFF | Client ROM, copied to RAM on startup | +; | F800-F814 | Monitor ROM entry vectors | +; | | | +; | FEE0-FEEF | Tube registers | +; | FEF0-FEFF | Hardware vectors, remapped from &FFF0-&FFFF with BA/BS | +; | FF00-FF7F | Text buffers and internal stack | +; | FF80- | Internal variables | +; | -FFCD | Tube Client entry block | +; | FFCE-FFE7 | Standard BBC MOS entry block | +; +-------------+--------------------------------------------------------+ +; +; BA/BS Signals are used to remap hardware vectors from &FFFx to &FEFx +; ROM copied to RAM at startup, then ROM paged out by accessing any I/O. +; Client error implemented with SWI (equivalent of 6502 BRK, Z80 RST &38, etc.) +; SWI2 and SWI3 reserved for applications (eg FLEX, OS-9, etc) + + +; START OF ROM CODE +; ================= + ORG $F800 +ROMSTART: +RAMSTART: EQU $0000 +RAMEND: EQU ROMSTART + + +; 6809 BIOS entry block always at F800 +; ==================================== + ORG $F800 +COLD: FDB RESET ; $F800 - cold start +WARM: FDB WARMS ; $F802 - warm start +INCH: FDB OSRDCH ; $F804 - char input +INCHE: FDB INECHO ; $F806 - char input with echo +INCHECK: FDB KBDTST ; $F808 - test for char input +OUTCH: FDB OSWRCH ; $F80A - char output +PDATA: FDB PRDAT ; $F80C - output string until EOT +PCRLF: FDB OSNEWL ; $F80E - output CR/LF +PSTRING: FDB PRTST ; $F810 - output CR/LF then string until EOT +LRA: FDB LREAL ; $F812 - Load Real Address + BRA WARMS ; $F814 - for FLEX compatibility + +BANNER: + FCB 13 + FCC "6809 TUBE 64K " + FCB ((VERSION >> 8) & 15) + $30 + FCB "." + FCB ((VERSION >> 4) & 15) +$30 + FCB (VERSION & 15) + $30 + FCB 32,13,0 +RESET: + ORCC #$50 ; Ensure interupts disabled + LDS #RAMEND ; Put stack at top of RAM + IF RAMEND = ROMSTART + TFR S,X ; Start copying from start of ROM + ELSE + LDX #ROMSTART ; Start copying from start of ROM + ENDIF +RESETLP1: + LDD ,X ; Get two bytes from ROM + STD ,X++ ; Store to RAM and increment X + CMPX #IOADDRS + BNE RESETLP2 ; Loop until hit I/O space + LDX #ROMHIGH ; Point to ROM after I/O space +RESETLP2: + CMPX #ADDRESS ; Don't modify ADDRESS and PROG + BNE RESETLP3 + LDX #DMA_DONE +RESETLP3: + CMPX #0 + BNE RESETLP1 ; Copy top part of ROM to RAM + LDA >TUBE1S ; Access I/O registers to page ROM out + ; Once ROM is paged out we can do subroutine calls + ; as we can now read from stack in RAM + +; STARTUP +; ======= +; Tube data: via R1: string $00 -- via R2: $7F or $80 +; +STARTUP: + ORCC #$50 ; Disable interupts + LDS #CLISTK ; Use internal stack + BSR MEM_INIT ; Reset user memory limits and error handler + LDX PROGRAM ; Copy current PROGRAM to ADDRESS + STX ADDRESS+2 ; so will re-enter on Soft Break + ANDCC #$00 ; Clear all flags, enable interupts + LDX #BANNER ; Point to startup banner + JSR SEND_TXT ; Print it via Tube WRCH protocol + JSR OSNEWL ; SEND_TXT will use 7 bytes on stack + CLRA ; Set A to zero +; STA >ESCFLG ; Clear Escape flag +; ECSFLG will have been cleared when copying ROM/initialising workspace + JSR OSWRCH ; Send terminating zero byte + ; This will use 3 bytes on stack + CLRA ; Carry Clear to indicate Reset + JSR CLI_WAIT ; Wait for result byte and enter code + ; This will use 14 bytes on stack including data transfer + ; Data transfer may happen while waiting + ; Fall through to CLICOM if nothing executed + +; Command line prompt +; =================== +; Allow user to enter *command +; +WARMS: +CLILOOP: + LDS #CLISTK ; Initially use internal stack + BSR COM_INIT ; Reset user memory limits and error handler + LDS MEMTOP ; Reset stack to top of user memory + LDX #CLICOM ; Make CLICOM the current program to re-enter + STX PROGRAM ; on soft reset + ANDCC #$00 ; Clear all flags, enable interupts +CLILOOP2: + LDX #PROMPT + JSR SEND_TXT ; Display prompt +; CLRA ; Set A to zero (SEND_TXT returned A=0) +; LDX #COM_BLK ; Point to control block (SEND_TXT returned X=COM_BLK) + JSR OSWORD ; OSWORD &00 - Read a line of text + BCS COM_ESC ; Escape pressed + LDX #CLIBUF + JSR OS_CLI ; Execute command + BRA CLILOOP2 ; Loop back for another line +PROMPT: + FCC "6809>*" ; Command prompt + FCB 0 +COM_BLK: + FDB CLIBUF ; Input buffer + FCB CLIEND-CLIBUF-1 ; Buffer size + FCB 32 ; Lowest acceptable CHR$32 + FCB 255 ; Highest acceptable CHR$255 +COM_ESC: + LDA #126 + JSR OSBYTE ; Acknowledge Escape +ESCAPE: + SWI + FCB 17 + FCC "Escape" + FCB 0 + +COM_ERR: + LDS MEMTOP ; Reset stack to top of user memory + JSR OSNEWL + LDA ,X+ ; Step X past error number + BSR SEND_TXT ; Print text at X + JSR OSNEWL + BRA CLILOOP2 ; Return to command prompt + +MEM_INIT: +COM_INIT: +; This has already been done by copying ROM to RAM. But, when entering +; Supervisor we want to ensure full memory available. + LDD #RAMSTART + STD MEMBOT ; Initialise bottom of user memory + LDD #RAMEND + STD MEMTOP ; Initialise top of user memory +COM_BRKV: + LDD #COM_ERR ; Get Supervisor error handler address + STD BRKV ; Set error handler +ERR_INIT: + LDD #SWI_HANDLE + STD XSWIV ; Point SWI vector to error BRK handler + LDX #BRKV + LDY #ESCFLG ; Return X=BRKV, Y=ESCFLG +PREND: +LREAL: + RTS + + +; FLEX/OS-9 BIOS code +; =================== +INECHO: JSR OSRDCH + JMP OSWRCH +PRTST: JSR OSNEWL +PRDAT: LDA ,X+ ; Get character + CMPA #4 ; EOT character? + BEQ PREND ; End printing + JSR OSWRCH ; Print character + BRA PRDAT ; Loop to next +KBDTST: PSHS A,X,Y + LDA #$80 + LDX #$FFFF ; Should check ADVAL(-2) if Serial is current input stream + TFR X,Y + JSR OSBYTE ; ADVAL(-1) - keyboard input buffer + CMPX #0 ; Set Z/NZ from X + PULS A,X,Y,PC + + +; ***************** +; Printout Routines +; ***************** + +; Print X as 4-digit hex +; ====================== +; Preserves all registers +PR_2HEX: + PSHS D ; Save AB + TFR X,D ; Copy X to D, so copy b16-b31 to A + BSR PR_HEX ; Print it + TFR B,A ; Copy other b0-b15 to A + BSR PR_HEX ; Print it + PULS D,PC ; Restore AB and return + +; Print A as 2-digit hex +; ====================== +; On exit: A corrupted +; +PR_HEX: + PSHS A ; Standard hex-print code + LSRA + LSRA + LSRA + LSRA + BSR PR_NYBBLE + LDA ,S + BSR PR_NYBBLE + PULS A,PC +PR_NYBBLE: + ANDA #$0F + CMPA #$0A + BCS PR_DIGIT + ADDA #7 +PR_DIGIT: + ADDA #$30 + JMP OSWRCH + +; Print inline text +; ================= +; On exit: X= corrupted +; A=$00 +; +PR_TEXT: + PULS X ; Pop PC to X + BSR SEND_TXT ; Print text + PSHS X ; Push updated X +SEND_END: + RTS ; And return to it + +; Print text string at X +; ====================== +; On entry: X=>zero-terminated text string +; On exit: X=>byte after zero byte terminator +; A=$00 +; +SEND_TXT: + LDA ,X+ ; Get byte from X, increment X + BEQ SEND_END ; End if $00 byte + JSR OSASCI ; Send to OSASCI + BRA SEND_TXT ; Loop until $00 sent + + +; ********************** +; Line scanning Routines +; ********************** + +; Scan hex string +; =============== +; On entry, X=>start of hex string +; On exit, X=>first non-hex character +; Y=hex value +; A=terminating character +; B=corrupted +; CS if number terminated, eg 123 X or 123 +; CC if number not terminated, eg 123X +; +RD_HEX: + LDY #0 ; Clear hex accumulator +RD_HEXLP: + LDA ,X+ ; Get current character + CMPA #$30 ; <'0', exit + BCS RD_HEXDONE + CMPA #$3A ; '0'..'9', add to accumulator + BCS RD_HEXADD + ANDA #$DF ; Ensure upper case letter + SUBA #$07 ; Convert letter, if <'A', exit + BCS RD_HEXDONE + CMPA #$40 + BCC RD_HEXDONE ; If >'F', exit +RD_HEXADD: + ANDA #$0F ; AB=0Nxx, X=>line Y=acc + EXG D,Y ; AB=acc, X=>line Y=0Nxx + ASLB + ROLA + ASLB + ROLA + ASLB + ROLA + ASLB + ROLA ; AB=acc*16, X=>line, Y=0Nxx + EXG X,Y ; AB=acc*16, X=0Nxx, Y=>line + EXG D,X ; AB=0Nxx, X=acc*16, Y=>line + EXG A,B ; AB=xx0N, X=acc*16, Y=>line + ABX ; AB=xx0N, X=acc*16+N, Y=>line + EXG X,Y ; AB=xx0N, X=>line, Y=acc*16+N + BRA RD_HEXLP ; Move to next character + +; Skip spaces +; =========== +; On entry, X=>command line +; On exit, X=>first non-space character +; A=first non-space character +SKIPSPC: + LDA ,X+ + CMPA #' ' + BEQ SKIPSPC ; Skip space characters +RD_HEXDONE: + LEAX -1,X ; Point to non-hex/non-space char + CMPA #'!' ; Return CS if no following character + RTS + + +; ********************** +; MOS Interface Routines +; ********************** + +; OSCLI - Execute command +; ======================= +; On entry: X=>command string +; On exit: A holds any return value +; +; First check for local commands, then pass on to host +; +CLI: + PSHS B,DP,X,Y,U ; Save everything on users's stack, except A and CC + CMPS #ROMSTART ; Check where the stack is + BCC CLI_SYSSTK ; We're already using internal stack + STS STKSAVE-2 ; As a *command may result in data transfer, that + LDS #CLISTK ; data may end up overwriting stack in user memory, +CLI_SYSSTK: ; so use a temporary stack to do OS_CLI. If OS_CLI + BSR CLI_GO ; ends up jumping to a new process, new stack will + LDS #0 ; be set up by that new process. +STKSAVE: + PULS B,DP,X,Y,U,PC ; Restore everything and return contents of A. + +; Local *commands +; --------------- +CLI_TABLE: + FCC "HELP" + FCB $80 + FCC "GO" + FCB $81 + FCB 0 + +; OSCLI - Check for local commands +; -------------------------------- +; On entry: X=>command string +; +CLI_GO: +CLI_LP1: + BSR SKIPSPC ; Skip leading spaces + LDA ,X+ + CMPA #'*' + BEQ CLI_LP1 ; Skip leading '*'s + LEAX -1,X + PSHS X ; Save start of command text +CLI_LP2: + LDA ,X+ ; Step past command + CMPA #'!' + BCC CLI_LP2 + LEAX -1,X + BSR SKIPSPC + STX LPTR ; Point LPTR to command parameters + + LDY #CLI_TABLE ; Point to command table +CLI_LOOP1: + LDX ,S ; Get start of command text back + LDA ,X ; Get first character + CMPA #'A' + BCS CLI_TUBE ; Not a letter, pass to host +CLI_LOOP2: + LDA ,X+ ; Get character from command line + ANDA #$DF ; Force to upper case + CMPA ,Y+ ; Compare with table entry + BEQ CLI_LOOP2 ; Characters match, check next + LDA ,-Y ; Step to command token + BMI CLI_MATCH ; Match + LDA -1,X ; Get character from command line + CMPA #'.' + BEQ CLI_DOT ; Abbreviated command +CLI_NEXT: + LDA ,Y+ ; Search for command token + BPL CLI_NEXT ; Step to end of table entry + LDA ,Y + BNE CLI_LOOP1 ; Not end of table + BRA CLI_TUBE ; Pass to host +CLI_DOT: + LDA ,Y+ ; Search for command token + BPL CLI_DOT ; Step to end of table entry + BRA CLI_MATCH2 +CLI_MATCH: + LDB ,-X ; Get current character + CMPB #'!' + BCC CLI_TUBE ; Command line longer than table entry +CLI_MATCH2: + CMPA #$80 + BEQ CMD_HELP +; CMPA #$81 +; BNE CLI_TUBE + +; *GO ; parameters +; ----------------------- +CMD_GO: + BSR SKIPSPC + LDY PROGRAM ; Default to re-enter current program + CMPA #13 + BEQ CLI_GO2 ; *GO - enter current program + CMPA #';' + BEQ CLI_GO1 ; *GO ;params - enter current program + JSR SCANHEX ; Get hex address + BCC CLI_TUBE ; Malformed hex address, pass to host + BSR SKIPSPC + CMPA #';' ; Check for ';' parameter marker + BEQ CLI_GO1 ; *GO ;params or *GO ;params + CMPA #13 + BNE CLI_TUBE ; *GO ... or *GO .... + LEAX -1,X ; Balance following 1,X +CLI_GO1: + LEAX 1,X ; Step past ';' +CLI_GO2: + STX LPTR ; Save pointer to command parameters + PULS X ; Drop old line pointer + TFR Y,X ; X=entry address + ORCC #$01 ; Set Carry to indicate OSCLI + BRA EXECUTE2 + +; *HELP () +; --------------- +CMD_HELP: + JSR SKIPSPC + BCS CMD_HELP2 ; *HELP - display help + CMPA #'.' ; *HELP . - display help + BNE CLI_TUBE ; Otherwise, pass stright to host +CMD_HELP2: + LDX #BANNER + JSR SEND_TXT ; Print banner as help message + ; Fall through to CLI_TUBE + + +; OSCLI - Send command line to host +; ================================= +; On entry: stacked X=>command string +; On exit: All registers possibly corrupted +; Registers should be preserved by calling code +; +; Tube data: $02 string $0D -- $7F or $80 +; +CLI_TUBE: + PULS X ; Get command string back + LDA #2 + JSR SEND_CMD ; Send command $02 = OSCLI + JSR SEND_STR ; Send string at X +CLI_WAIT1: + ORCC #$01 ; Set Carry to indicate OSCLI +CLI_WAIT: + JSR WAIT_BYTE ; Wait for result via Tube R2 (preserves Cy) + ; Data transfer may happen while waiting +; TSTA ; Check return code + ; WAIT_BYTE returns flags set from A + BPL CLI_DONE ; Nothing to execute, return + + +; EXECUTE - Enter code at ADDRESS +; =============================== +; Checks for possible code header, makes code current PROGRAM. +; On entry, ADDRESS=code entry address +; CS=entering from OSCLI +; CC=entering from RESET +; +; If code in high memory, MEMTOP moved to below code. +; If code returns, MEMTOP and PROGRAM restored to previous value. +; +; If code has a header it is made the current program so it can be re-entered +; at soft reset, and entered with A=1. If not, it is entered with A=0. Code +; has a small initial stack with 20 bytes available on it (eg 10 subroutine +; calls). Note: this small stack will be overwritten if the called code calls +; OSCLI without first setting up a new stack. +; +; If called from RESET and not 6809 code, error not reported, jumps directly +; to CLICOM. In future this is the point where a disk operating system would +; be checked for and booted. +; +EXECUTE: + LDX ADDRESS+2 ; Get transfer address, note: big-endian +EXECUTE2: + PSHS CC ; Save RESET/OSCLI flag + TFR X,Y ; Save address in Y + LDB 7,X ; Get (C) offset + ABX ; X=>(C) string + LDU #EXEC_CHK+4 ; U=>check string + LDB #4 ; 4 bytes to check +EXEC_LP: + LDA ,X+ ; Get byte from header + CMPA ,-U ; Compare with check string + BNE EXEC_JUMP ; No match, enter as raw code + DECB + BNE EXEC_LP ; Loop to check all four bytes + LDA 6,Y ; Get code type + ASLA ; Check b6 by moving it into b7 + BPL ERR_NOTCODE + ANDA #2*15 ; Byte has been moved up, so mask and compare with 2*n + CMPA #2*3 + BNE ERR_NOT6809 + ; Should also check entry opcode for BRA or JMP to + ; filter out 68000 code with ROMTYPE=3 + LEAX -4,X + STX FAULT ; Point FAULT to (C) string (should be version string) + LDU PROGRAM + LDX MEMTOP + PULS A ; Get RESET/OSCLI flag to A + PSHS X,U ; Save current MEMTOP and PROGRAM + CMPY #$8000 + BCS EXEC_ENTER ; Entering code in low memory, leave MEMTOP where it is + STY MEMTOP ; Entering in high memory, put MEMTOP below entered code +EXEC_ENTER: + RORA ; Move RESET/OSCLI flag back into Carry + STY PROGRAM ; Set as current program + LDX LPTR ; X=>command line + LDA #1 ; A=1 for code with a header + JSR ,Y ; Call program execution address + PULS Y,U + STY MEMTOP ; Restore previous MEMTOP if code returns + STU PROGRAM ; Restore previous PROGRAM +NULL: ; Null routines +CLI_DONE: + RTS ; Return +EXEC_JUMP: + LDX LPTR ; X=>command line + CLRA ; A=0 for raw code + PULS CC ; Get RESET/OSCLI flag + JMP ,Y ; Enter raw code +EXEC_CHK: + FCC ")C(" ; Deliberately backwards so doesn't match itself + FCB 0 +ERR_NOTCODE: +; PULS CC ; Get RESET/OSCLI flag +; LBCC CLICOM ; If called from RESET, drop straight into Supervisor +; JSR COM_BRKV +; SWI +; FCB 249 +; FCC "Not code" +; FCB 0 +ERR_NOT6809: + PULS CC ; Get RESET/OSCLI flag + LBCC CLICOM ; If called from RESET, drop straight into Supervisor + ; Here is where we would check if this is hard reset, + ; and look for a disk operating system to boot instead. + JSR COM_BRKV ; Error handler may have been overwritten, so set up + SWI ; Supervisor error handler + FCB 249 + FCC "Not 6809 code" + FCB 0 + + +; OSRDCH - Wait for character from input stream +; ============================================= +; On exit: A=char, Cy=carry +; +; Tube data: $00 -- Carry Char +; +RDCH: + CLRA + JSR SEND_CMD ; Send command $00 - OSRDCH +WAIT_CHAR: + BSR WAIT_BYTE ; Get returned byte + ADDA #$80 ; Copy b7 into Carry + ; Fall through to fetch byte from Tube R2 + + +; Wait for a byte from Tube Register 2 +; ==================================== +; On exit: A=byte read +; PL/MI, EQ/NE set from A +; Other flags preserved +; +WAIT_BYTE: + LDA >TUBE2S ; Read Tube R2 Status + BPL WAIT_BYTE ; Wait for b7 set + LDA >TUBE2 ; Get byte from Tube R2 +BYTE_DONE: + RTS + + +; OSBYTE +; ====== +; On entry: A,X,Y=OSBYTE parameters +; On exit: A preserved +; If A<$80, X=returned value +; If A>$7F, X, Y, Carry=returned values +; +; Tube data: $04 X A -- X +; $06 X Y A -- Cy Y X +; +BYTE: + PSHS A,B + TSTA + BMI BYTE_HI + LDA #4 + JSR SEND_CMD ; Send command $04 - short BYTE + TFR X,D ; B=X + JSR SEND_BYTEB ; Send second parameter from B + PULS A,B + PSHS A,B + JSR SEND_BYTE ; Send first parameter + JSR WAIT_BYTE ; Wait for response + TFR A,B ; Move result to low byte + CLRA ; Ensure AB is only 8-bit value + TFR D,X + PULS A,B,PC + +BYTE_WAIT: + LDX #BANNER ; Point LPTR to + STX LPTR + BRA CLI_WAIT1 ; Wait for program start + +; OSBYTE >$7F +; ----------- +BYTE_HI: + CMPA #$82 + BEQ MEM82 ; Fetch address high word + CMPA #$83 + BEQ MEM83 ; Fetch user memory low limit + CMPA #$84 + BEQ MEM84 ; Fetch user memory high limit + LDA #6 + JSR SEND_CMD ; Send command $06 - long byte + TFR X,D ; B=X - second parameter + JSR SEND_BYTEB ; Send second parameter from B + JSR SEND_BYTEY ; Send third parameter from Y + PULS A,B + JSR SEND_BYTE ; Send first parameter + CMPA #$9D ; Was it fast BPUT? + BEQ BYTE_DONE ; Don't wait for response + CMPA #$8E ; Was it start language? + BEQ BYTE_WAIT ; Wait for program start + PSHS A,B + JSR WAIT_BYTE ; Wait for response + ADDA #$80 ; Copy b7 into carry + PSHS CC ; Save flags + JSR WAIT_BYTE ; Wait for response + TFR A,B ; Move result to low byte + CLRA ; Ensure AB is only 8-bit value + TFR D,Y ; Return result in Y + JSR WAIT_BYTE ; Wait for response, high byte still in B + EXG A,B ; Swap so high byte is Y, low byte is fetched byte + TFR D,X ; Return result in X as returned Y*256+X value + PULS CC,A,B,PC ; Restore flags/A/B and return +MEM82: + LDA #$85 +MEM83: +MEM84: + ASLA ; A=6,8,10 + LDX #MEMBOT-6 ; Point to addresses + LDD ,X ; Fetch address value + TFR D,X ; Return X=address + TFR A,B ; Copy top byte to bottom byte + CLRA ; Clear top byte + TFR D,Y ; Return Y=address DIV 256 + PULS A,B,PC + + +; OSWORD +; ====== +; On entry: A=OSWORD number +; X=>control block +; +WORD: + TSTA + BEQ RDLINE ; Jump with OSWORD 0 - RDLINE + +; OSWORD <>&00 +; ------------ +; Tube data: &08 function in_length block out_length -- block +; + PSHS D,Y ; Save AB and Y + PSHS X ; Save X=>control block + TFR A,B ; B=function + LDA #$08 + JSR SEND_CMD ; Send command $08 - OSWORD + JSR SEND_BYTEB ; Send OSWORD function in B + TSTB ; Check OSWORD function + BPL WORD_TXLO ; Jump with functions<&80 + LDA ,X ; Get block length from control block + BRA WORD_SEND ; Jump to send control block +WORD_TXLO: + LDA #$10 ; Default SendBlock length + CMPB #$15 ; Check OSWORD function + BCC WORD_SEND ; Use 16 bytes for OSWORD &15 to &7F + LDX #WORDTX-1 ; X=>send length table + ABX ; X=X+B, X=>send length + LDA ,X ; Get send length for OSWORD &01 to &14 +WORD_SEND: + PULS X ; Get X=>control block back + JSR SEND_BYTE ; Send outward block length + TFR D,Y ; AB=length+function Y=length+function + EXG A,B ; AB=function+length Y=length+function + CLRA ; AB=00000000+length Y=length+function + EXG D,Y ; AB=length+function Y=000000+length + DECA ; Convert 0 to -1 + BMI WORD_NOTX ; Only send length 1 to 128 + JSR SEND_BLK ; Send control block +WORD_NOTX: + PSHS X ; Save X=>control block + TSTB ; Check OSWORD function + BPL WORD_RXLO ; Jump with functions<&80 + LDA 1,X ; Get block length from control block + BRA WORD_RECV ; Jump to send control block +WORD_RXLO: + LDA #$10 ; Default ReceiveBlock length + CMPB #$15 ; Check OSWORD function + BCC WORD_RECV ; Use 16 bytes for OSWORD &15 to &7F + LDX #WORDRX-1 ; X=>receive length table + ABX ; X=X+B, X=>receive length + LDA ,X ; Get receive length for OSWORD &01 to &14 +WORD_RECV: + PULS X ; Get X=>control block back + JSR SEND_BYTE ; Send inward block length + TFR D,Y ; AB=length+function Y=length+function + EXG A,B ; AB=function+length Y=length+function + CLRA ; AB=00000000+length Y=length+function + EXG D,Y ; AB=length+function Y=000000+length + DECA ; Convert 0 to -1 + BMI WORD_NORX ; Only receive length 1 to 128 + JSR WAIT_BLK ; Wait for returned control block +WORD_NORX: + PULS Y,D,PC ; Restore Y and AB and return + + +; OSWORD 0 - Read a line of text +; ------------------------------ +; On entry: X=>addr.hi, addr.lo, maxlen, charlo, charhi +; On exit: Cy=0: Ok, Cy=1: Escape +; Y=length of returned string in buffer at addr +; +; Note: Address of text string in control block is local big-endian address +; All other MOS calls use little-endian addresses to match Host +; +; Tube data: $0A block -- $FF or $7F string $0D +; +RDLINE: + LDA #10 + JSR SEND_CMD ; Send command $0A - RDLINE + LEAX 2,X ; X=X+2, point to parameters + LDY #3 + JSR SEND_BLK ; Send 3-byte control block + LEAX -2,X ; X=X-2, point back to text pointer + LDA #7 + JSR SEND_BYTE ; Send $0700 + CLRA + JSR SEND_BYTE + JSR WAIT_BYTE ; Wait for response + ADDA #$80 ; Copy bit 7 into Carry + BCS RD_DONE + LDX ,X ; Get text pointer from control block +; LDY #0 ; Y=number received (Y already zero from SEND_BLK) +RD_STR: + JSR WAIT_BYTE ; Wait for bytes from Tube R2 + STA ,X+ ; Store in text buffer, increment X + LEAY 1,Y ; Increment character count + CMPA #13 ; Check current byte + BNE RD_STR ; Loop until + LEAY -1,Y ; Decrement character count to balance +; ANDCC #$FE ; Clear carry (already CC from CMPA #13) +RD_DONE: + RTS + +; Table of OSWORD control block lengths for &01-&14 +; ------------------------------------------------- +WORDTX: + FCB $00,$05,$00,$05,$04 + FCB $05,$08,$0E,$04,$01 + FCB $01,$05,$00,$10,$20 + FCB $10,$0D,$00,$04,$80 +WORDRX: + FCB $05,$00,$05,$00,$05 + FCB $00,$00,$00,$05,$09 + FCB $05,$00,$08,$19,$00 + FCB $01,$0D,$80,$04,$80 + + +; OSARGS - Read info on open file +; =============================== +; On entry: A=action +; X=>data (little-endian) +; Y=handle +; On exit: A=returned value +; X preserved +; X=>any returned data +; Y preserved +; +; Tube Data: $0C handle block function -- result block +; +ARGS: + PSHS Y,B,A ; Save handle, B and function + LDA #$0C + JSR SEND_CMD ; Send command $0C - OSARGS + JSR SEND_BYTEY ; Send handle + LDY #4 + JSR SEND_BLK ; Send four-byte control block + PULS A,B ; Get action back and restore B + JSR SEND_BYTE ; Send action + JSR WAIT_BYTE ; Wait for returned result + PSHS A ; Save result + LDY #4 + JSR WAIT_BLK ; Wait for four-byte control block + PULS A,Y,PC ; Get result and original handle back, and return + + +; OSBGet - Get a byte from open file +; ================================== +; On entry: Y=handle +; On exit: A=byte Read +; Y=preserved +; Cy set if EOF +; +; Tube data: $0E handle -- Carry byte +; +BGet: + PSHS B + LDA #$0E + JSR SEND_CMD ; Send command $0E - OSBGet + JSR SEND_BYTEY ; Send handle + PULS B + JMP WAIT_CHAR ; Wait for Carry, Byte + + +; OSBPut - Put a byte to an open file +; =================================== +; On entry: A=byte to write +; Y=handle +; On exit: A=preserved +; Y=preserved +; +; Tube data: $10 handle byte -- $7F +; +BPut: + PSHS A,B ; Save byte and B + LDA #$10 + JSR SEND_CMD ; Send command $10 - OSBPut + JSR SEND_BYTEY ; Send handle + PULS A,B ; Get A and B back + PSHS A,B + JSR SEND_BYTE ; Send byte to Tube + JSR WAIT_BYTE ; Wait for acknowledgement + PULS A,B,PC ; Restore A/B and return + + +; OSFIND - Open or Close a file +; ============================= +; On entry: A=function +; Y=handle or X=>filename +; On exit: A=zero or handle +; X,Y preserved +; +; Tube data: $12 function string $0D -- handle +; $12 $00 handle -- $7F +; +FIND: + PSHS A,B ; Save A + LDA #$12 + JSR SEND_CMD ; Send command $12 - OSFIND + PULS A,B ; Get function back + JSR SEND_BYTE ; Send function + TSTA ; Check function + BEQ Close ; Jump to deal with Close + JSR SEND_STR ; Send string at X + JMP WAIT_BYTE ; Wait for returned handle +Close: + PSHS B + JSR SEND_BYTEY ; Send handle to Tube + JSR WAIT_BYTE ; Wait for acknowledgement + CLRA ; Zero A + PULS B,PC ; Restore B and return + + +; OSFILE - Operate on whole files +; =============================== +; On entry: A=function +; X=>control block +; On exit: A=result +; X preserved +; control block updated +; +; Note: Address of text string in control block is local big-endian address +; All other MOS calls use little-endian addresses to match Host +; +; Tube data: $14 block string function -- result block +; +FILE: + PSHS Y,X,A ; Save Y, X and function + LDA #$14 + JSR SEND_CMD ; Send command $14 - OSFILE + LEAX 2,X ; Point to control block contents + LDY #16 + JSR SEND_BLK ; Send 16-byte control block + LEAX -2,X ; Point to filename pointer + LDX ,X ; Get filename pointer to X + JSR SEND_STR ; Send filename string + PULS A + JSR SEND_BYTE ; Send function + JSR WAIT_BYTE ; Wait for returned result + ; Data transfer via interupts may happen while waiting + PULS X ; Get control block pointer back + PSHS A ; Save result + LEAX 2,X ; Point to control block contents + LDY #16 + JSR WAIT_BLK ; Wait for 16-byte control block + LEAX -2,X ; Restore X + PULS A,Y,PC ; Get result and Y back and return + + +; OSGBPB - Multiple byte Read and write +; ===================================== +; On entry: A=function +; X=>control block +; On exit: A=returned value +; control block updated +; +; Tube data: $16 block function -- block Carry result +; +GBPB: + PSHS A,Y ; Save Y and function + LDA #$16 + JSR SEND_CMD ; Send command $16 - OSGBPB + LDY #13 + JSR SEND_BLK ; Send 13-byte control block + PULS A + JSR SEND_BYTE ; Send function + LDY #13 + JSR WAIT_BLK ; Wait for 13-byte control block + PULS Y ; Get Y back + JMP WAIT_CHAR ; Get Carry and result byte + + +; ***************** +; Tube I/O routines +; ***************** + +; Send cr-string at X to Tube Register 2 +; ========================================= +SEND_STR: + LDA ,X+ ; Get byte from X, increment X + BSR SEND_BYTE ; Send byte via Tube R2 + CMPA #13 ; Test current character + BNE SEND_STR ; Loop until CR sent + RTS + + +; Send block at X to Tube Register 2, Y=block length +; ================================================== +SEND_BLK: + PSHS B ; Save B + TFR Y,D ; B=Y + ABX ; X=X+B, X points to end of block+1 + PULS B ; Restore B +SEND_BLKLP: + LDA ,-X ; Decrement X, get byte from X + BSR SEND_BYTE ; Send byte via Tube R2 + LEAY -1,Y ; Decrement count of bytes to send + BNE SEND_BLKLP ; Loop until all bytes sent + RTS + + +; Wait for block at X from Tube Register 2, Y=block length +; ======================================================== +WAIT_BLK: + PSHS B ; Save B + TFR Y,D ; B=Y + ABX ; X=X+B, X points to end of block+1 + PULS B ; Restore B +WAIT_BLKLP: + JSR WAIT_BYTE ; Get byte via Tube R2 + STA ,-X ; Decrement X, store byte at X + LEAY -1,Y ; Decrement count of bytes + BNE WAIT_BLKLP ; Loop until all bytes sent + RTS + + +; OSWRCH - Send character in A to Tube Register 1 +; =============================================== +; Preserves A, corrupts flags +; +WRCH: + PSHS A ; Save A +SEND_R1LP: + LDA >TUBE1S ; Read Tube R1 status + ASLA ; Move TxRDY from b6 to b7 + BPL SEND_R1LP ; Loop until TxRDY set + PULS A ; Get A back + STA >TUBE1 ; Send byte to Tube R1 + RTS + + +; Send byte in Y to Tube Register 2 via B +; ======================================= +SEND_BYTEY: + TFR Y,D +; ; Fall through into SEND_BYTEB + + +; Send byte in B to Tube Register 2 +; ================================== +SEND_BYTEB: + TFR B,A +; ; Fall through into SendByte + + +; Send byte in A to Tube Register 2 +; ================================== +; Preserves A, corrupts flags +; +SEND_CMD: +SEND_BYTE: + PSHS A ; Save A +SEND_BYTELP: + LDA >TUBE2S ; Read Tube R2 status + ASLA ; Move TxRDY from b6 to b7 + BPL SEND_BYTELP ; Loop until TxRDY set + PULS A ; Get A back + STA >TUBE2 ; Send byte to Tube R2 + RTS + + +; **************************************** +; Host->Client communication via interupts +; **************************************** +; When Host sends a byte to R1 or R4 it generates a Client IRQ. +; Data transfers are syncronised with client NMIs. Graham Toal's +; design sends Tube IRQs to 6809 FIRQs and Tube NMIs to 6809 IRQs. +; Transfers are synchronised with SYNC instruction waiting for IRQs. +; +; This code manually translated from Graham Toal's Skimp code +; with half an eye on the PDP-11, Z80 and 6502 code. +; Most code before this point translated from JGH PDP-11 client. + + +; Interupt handler +; ================ +; Stack holds: CC with E=0, PC +; CC has I and F set to disable further IRQs and FIRQs +; +FIRQ_HANDLE: + PSHS A + LDA >TUBE4S ; Read Tube R4 status + BMI FIRQ_R4 ; If data in Tube R4, jump to process errors and transfers + LDA >TUBE1S ; Read Tube R1 status + BMI FIRQ_R1 ; If data in Tube R1, jump to process Escape and Events + PULS A ; Get A back + JMP [IRQ2V] ; Pass interupt onwards + +; Interupt generated by data in Tube R1 +; ------------------------------------- +FIRQ_R1: + LDA >TUBE1 + BMI FIRQ_Escape ; b7=1, jump to set Escape state +; +; A<$80 - Host event being passed to client +; Tube data: via R1: $00 Y X A +; + PULS A ; Pop A to restack all registers + PSHS A,B,X,Y,U ; Save everything + BSR Get_R1 ; Get event Y parameter + TFR A,B + CLRA ; Ensure AB is 8-bit value + TFR D,Y + BSR Get_R1 ; Get event X parameter + TFR A,B + CLRA ; Ensure AB is 8-bit value + TFR D,X + BSR Get_R1 ; Get event A parameter + JSR [EVENTV] ; Dispatch event + PULS U,Y,X,B,A ; Restore registers + RTI ; Return from interupt + +; A>$7F - Host changing Escape state +; Tube data: via R1: flag, b7=1, b6=state +; +FIRQ_Escape: + ASLA ; Move b6 into b7 + STA >ESCFLG ; Store Escape flag + PULS A ; Restore A + RTI ; Return from interupt + +; Read byte from Tube R1, allowing Tube R4 transfers to take place +; ---------------------------------------------------------------- +Get_R1: + LDA >TUBE4S ; Read Tube R4 status + BMI NotFIRQ_R4 ; Pending R4 transfer higher priority than R1 transfer + BSR FIRQ_R4_CC ; Deal with R4 interupt +NotFIRQ_R4: + LDA >TUBE1S ; Read Tube R1 status + BPL Get_R1 ; Loop until b7 set + LDA >TUBE1 ; Get byte from Tube R1 + RTS + +; Read byte from Tube R4 +; ---------------------- +Get_R4: + LDA >TUBE4S ; Read Tube R4 status + BPL Get_R4 ; Loop until b7 set + LDA >TUBE4 ; Get byte from Tube R4 + RTS + +; Interrupt generated by data in Tube R4 +; -------------------------------------- +FIRQ_R4_CC: + ANDCC #$7F ; Clear 'all registers' bit + PSHS CC ; Push CC to let this be a subroutine + PSHS A ; Push A to balance following Pull +FIRQ_R4: + PULS A ; Pop A to restack registers + PSHS A,B,X ; Rearrange stack contents + LDA >TUBE4 + BPL FIRQ_Data ; b7=0, jump for data transfer + +; A>$7F - Error occured +; Tube data: via R2: $00 err string $00 +; + LDS #ERRSTK ; Collapse stack + LDX #ERRBLK ; Point to error buffer + JSR WAIT_BYTE ; Wait for BRK error code + LDA #$3F ; SWI opcode + STA ,X+ ; Store SWI opcode + JSR WAIT_BYTE ; Get error number + STA ,X+ ; Store error number +FIRQ_R4LP: + JSR WAIT_BYTE ; Wait for byte of error string + STA ,X+ ; Store in error buffer + ; WAIT_BYTE returns flags set from A + BNE FIRQ_R4LP ; Loop until terminating $00 received + LDX #ERRBLK+1 ; Point to error block after SWI opcode + PSHS X ; Push error pointer onto stack + JMP ERRJMP ; Jump to generate error + ; FIRQ and IRQ will be enabled by error handler + +; Data transfer via FIRQs +; ----------------------- +; R4<$80 - Data transfer +; Tube data: via R4: action ID block sync, via R3: data +; +; Cribbed from Graham Toal's Skimp code +; +FIRQ_Data: +; A=transfer type +; + PSHS A ; Save transfer type + BSR Get_R4 ; Wait for caller ID + PULS A ; Get transfer type back + CMPA #5 ; Is it 'release'? + BNE FIRQ_NotDone; No, jump to do transfer DMB: fixed BEQ/BNE error + CLR DMA_DONE ; Signal 'transfer done' + PULS A,B,X ; Restore registers + RTI ; and return from interupt +; +FIRQ_NotDone: + PSHS A ; Save transfer type again and save X and B + BSR Get_R4 ; Get data address MSB + STA ADDRESS+0 ; Note - 6809 is big-endian + BSR Get_R4 ; Get data address + STA ADDRESS+1 + BSR Get_R4 ; Get data address + STA ADDRESS+2 + BSR Get_R4 ; Get data address LSB + STA ADDRESS+3 + BSR Get_R4 ; Get sync byte + LDA #$FF + STA DMA_DONE ; Signal 'transfer in progress' + ANDCC #$BF ; DMB: re-enable FIRQ interrupts to allow Release FIRQ + + LDX ADDRESS+2 ; Prepare X with transfer address + LDA ,S+ ; Pop A from stack and set Z flag + BEQ FIRQ0 ; Dispatch to FIRQ subhandler + CMPA #2 + BCS FIRQ1 + BEQ FIRQ2 + CMPA #4 + BCS FIRQ3 + BEQ FIRQ4 + CLRB ; B=offset from start address for 256-byte transfers + CMPA #7 ; We will never get a FIRQ5 here as filtered out earlier + BCS FIRQ6 + BNE FIRQ_EXIT + +; 1-byte and 2-byte Tube R3 interrupts done via IRQ/SYNC mechanism +; 256-byte transfers done by polling transfer register + +; Transfer 7 - Multiple byte host -> parasite +; ------------------------------------------- +FIRQ7: +FIRQ7lp: + LDA >TUBE3S ; Wait for Tube R3 ready + BPL FIRQ7lp + LDA >TUBE3 ; Get byte from Tube host via R3 + STA B,X ; Store in parasite memory at (X+B) + INCB ; Increment offset from X + BNE FIRQ7lp ; Loop 256 times + BRA FIRQ67_DONE ; Update ADDRESS and exit + +; Transfer 6 - Multiple byte parasite -> host +; ------------------------------------------- +FIRQ6: +FIRQ6lp: + LDA >TUBE3S ; Wait for Tube R3 ready + ASLA + BPL FIRQ6lp + LDA B,X ; Get byte from parasite memory at (X+B) + STA >TUBE3 ; Send to Tube host via R3 + INCB ; Increment offset from X + BNE FIRQ6lp ; Loop 256 times +FIRQ6lp2: + LDA >TUBE3S ; Wait for Tube R3 ready + ASLA + BPL FIRQ6lp2 + STA >TUBE3 ; Send 257th byte to flush FIFO +FIRQ67_DONE: + LEAX 256,X ; X=X+256 + BRA FIRQ_DONE + +; Transfer 3 - Double byte host -> parasite +; ----------------------------------------- +FIRQ3: +FIRQ3lp: + SYNC ; Wait for IRQ + LDA >TUBE3 ; Get two bytes from Tube host + LDB >TUBE3 + STD ,X++ ; Store them in parasite memory + LDA DMA_DONE + BNE FIRQ3lp + BRA FIRQ_DONE + +; Transfer 2 - Double byte parasite -> host +; ----------------------------------------- +FIRQ2: +FIRQ2lp: + SYNC ; Wait for IRQ + LDD ,X++ ; Fetch two bytes from parasite memory + STA >TUBE3 ; Send them to Tube host + STB >TUBE3 + LDA DMA_DONE ; Has flag changed? + BNE FIRQ2lp ; Loop until FIRQ5 clears flag + BRA FIRQ_DONE + +; Transfer 1 - Single bytes host -> parasite +; ------------------------------------------ +FIRQ1: +FIRQ1lp: + SYNC ; Wait for IRQ + LDA >TUBE3 ; Get byte from Tube host + STA ,X+ ; Store in parasite memory + LDA DMA_DONE ; Has flag changed? + BNE FIRQ1lp ; Loop until FIRQ5 clears flag + BRA FIRQ_DONE + +; Transfer 0 - Single bytes parasite -> host +; ------------------------------------------ +FIRQ0: +FIRQ0lp: + SYNC ; Wait for IRQ + LDA ,X+ ; Get byte from parasite memory + STA >TUBE3 ; Send to Tube host + LDA DMA_DONE ; Has flag changed? + BNE FIRQ0lp ; Loop until FIRQ5 clears flag +FIRQ_DONE: + STX ADDRESS+2 ; Update transfer address + +; Transfer 4 - Set program execute address +; ---------------------------------------- +FIRQ4: +FIRQ_EXIT: + PULS A,B,X +; After a FIRQ4 the Host will then send a FIRQ5 to release the Tube and +; clear DNA_DONE. OSCLI handler will pick up execution address and pass +; it to PROGRAM. + + +; Null interupt routines +; ====================== +; OS-9 and FLEX use a timer on IRQ to poll background processes +; +NULL_RTI: +RES_HANDLE: +SWI2_HANDLE: +SWI3_HANDLE: +IRQ_HANDLE: +NMI_HANDLE: + RTI + + +; SWI - Generate an error +; ======================= +SWI_HANDLE: + LEAS 10,S ; Point to stacked PC +ERR_HANDLE: + PULS X ; Pop address of error block after SWI opcode + STX FAULT ; Save pointer to last error + ANDCC #$00 ; Clear all flags, enable interupts + JMP [BRKV] ; Jump to current error handler with X=>error + + +; I/O address space +; ================= +; Add any extra I/O devices here by pulling IOADDRS backwards +; For example: +; $FECx VIA +; $FEDx MMU +; $FEEx TUBE +; $FEFx VECTORS +; + ORG $FEC0 +IOADDRS: + ORG $FEE0 +TUBE1S: FCB 0 ; $FEE0 ; Tube registers +TUBE1: FCB 0 ; $FEE1 +TUBE2S: FCB 0 ; $FEE2 +TUBE2: FCB 0 ; $FEE3 +TUBE3S: FCB 0 ; $FEE4 +TUBE3: FCB 0 ; $FEE5 +TUBE4S: FCB 0 ; $FEE6 +TUBE4: FCB 0 ; $FEE7 +; If Tube registers fully decoded, space for 8 I/O addresses here +; For example: +; $FEE8/9 ACIA + + +; Remapped hardware vectors +; ========================= +; BA/BS decoded to toggle address line A8 to map hardware vectors to $FEF0 +; + ORG $FEF0 +ROMHIGH: +XRESV: FDB RES_HANDLE ; $FEF0 ; Hardware vectors, paged in to $FFFx +XSWI3V: FDB SWI3_HANDLE ; $FEF2 +XSWI2V: FDB SWI2_HANDLE ; $FEF4 +XFIRQV: FDB FIRQ_HANDLE ; $FEF6 +XIRQV: FDB IRQ_HANDLE ; $FEF8 +XSWIV: FDB SWI_HANDLE ; $FEFA +XNMIV: FDB NMI_HANDLE ; $FEFC +XRESETV: FDB RESET ; $FEFE + + +; Text buffers +; ============ + ORG $FF00 +ERRBLK: RMB 40 ; Buffer to store host error block +CLISTK: ; Internal stack for CLI commands + ; as main memory may be overwritten +CLIBUF: RMB 128-40 ; Space to enter command line from CLI prompt +CLIEND: ;EQU ESCFLG +ERRSTK: ; Internal stack for host errors + + +; Tube system workspace and MOS entry block +; ========================================= + ORG $FF80 +WORKSP: ; Use same addresses as Z80 +ESCFLG: FCB 0 ; $FF80 ; Escape flag + FCB 0 ; $FF81 ; TempA/Personality +FAULT: FDB BANNER ; $FF82 ; Last error message +DEFERR: FDB COM_ERR ; $FF84 ; Default error handler +LPTR: FDB BANNER ; $FF86 ; Command line tail +MEMBOT: FDB RAMSTART ; $FF88 ; Bottom of user memory +MEMTOP: FDB RAMEND ; $FF8A ; Top of user memory +ADDRESS: FDB 0 ; $FF8C ; Tube transfer address + FDB 0 +PROGRAM: FDB CLICOM ; $FF90 ; Program entry address +CTRL: FDB ERRBLK ; $FF92 ; Control block address +DMA_DONE: FCB 0 ; $FF94 ; Transfer completion flag + +; Tube system entry points +; ------------------------ + ORG $FF95 + JMP >NULL ; &FF95 ; Service + JMP >RESET ; &FF98 ; Cold + JMP >NULL ; &FF9B ; ReadDec + JMP >NULL ; &FF9E ; +SCANHEX: JMP >RD_HEX ; &FFA1 ; ReadHex +DISKACC: JMP >NULL ; &FFA4 ; DiskAccess +OSQUIT: JMP >WARMS ; &FFA7 ; Quit current process +PRHEX: JMP >PR_HEX ; &FFAA ; Print A as 8-bit hex +PR2HEX: JMP >PR_2HEX ; &FFAD ; Print X as 16-bit hex +USERINT: JMP >NULL_RTI ; &FFB0 ; Pass on FIRQs if not Tube FIRQ +IRQ2V: EQU USERINT+1 +PRTEXT: JMP >PR_TEXT ; &FFB3 ; Print inline ZASCII text + JMP >NULL ; &FFB6 ; VecDef/PrntC +CLICOM: JMP >CLILOOP ; &FFB9 ; Enter Supervisor *command prompt +ERRJMP: JMP >ERR_HANDLE; &FFBC ; Generate an error +INITERR: JMP >ERR_INIT ; &FFBF ; Initialise default error handler +DISKRST: JMP >NULL ; &FFC2 ; DiskReset +PRSTRING: JMP >SEND_TXT ; &FFC5 ; Print ZASCII text at X + JMP >NULL ; &FFC8 + JMP >NULL ; &FFCB + +; MOS file entry points +; --------------------- +OSFIND: JMP >FIND ; $FFCE +OSGBPB: JMP >GBPB ; $FFD1 +OSBPUT: JMP >BPut ; $FFD4 +OSBGET: JMP >BGet ; $FFD7 +OSARGS: JMP >ARGS ; $FFDA +OSFILE: JMP >FILE ; $FFDD + +; MOS character entry points +; -------------------------- +OSRDCH: JMP >RDCH ; $FFE0 +OSASCI: CMPA #13 ; $FFE3 + BNE OSWRCH +OSNEWL: LDA #10 ; $FFE7 + JSR OSWRCH +OSWRCR: LDA #13 ; $FFEC +OSWRCH: JMP >WRCH ; $FFEE + +; MOS system entry points +; ----------------------- +OSWORD: JMP >WORD ; $FFF1 +OSBYTE: JMP >BYTE ; $FFF4 +OS_CLI: JMP >CLI ; $FFF7 +BRKV: FDB COM_ERR ; $FFFA ; Error handler +EVENTV: FDB NULL ; $FFFC ; Event vector +L_FFFE: FDB RESET ; $FFFE ; Reset vector + + +; Memory Mapping Unit/Dynamic Address Translation +; =============================================== +; SWTPC clones have an MMU/DAT at $FFF0 + diff --git a/client/6809/100/tuberom_6809.vhd b/client/6809/100/tuberom_6809.vhd new file mode 100644 index 0000000..19137a2 --- /dev/null +++ b/client/6809/100/tuberom_6809.vhd @@ -0,0 +1,2081 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tuberom_6809 is + port ( + CLK : in std_logic; + ADDR : in std_logic_vector(10 downto 0); + DATA : out std_logic_vector(7 downto 0) + ); +end; + +architecture RTL of tuberom_6809 is + + signal rom_addr : std_logic_vector(11 downto 0); + +begin + + p_addr : process(ADDR) + begin + rom_addr <= (others => '0'); + rom_addr(10 downto 0) <= ADDR; + end process; + + p_rom : process + begin + wait until rising_edge(CLK); + DATA <= (others => '0'); + case rom_addr is + when x"000" => DATA <= x"F8"; + when x"001" => DATA <= x"2C"; + when x"002" => DATA <= x"F8"; + when x"003" => DATA <= x"71"; + when x"004" => DATA <= x"FF"; + when x"005" => DATA <= x"E0"; + when x"006" => DATA <= x"F8"; + when x"007" => DATA <= x"E0"; + when x"008" => DATA <= x"F8"; + when x"009" => DATA <= x"F4"; + when x"00A" => DATA <= x"FF"; + when x"00B" => DATA <= x"EE"; + when x"00C" => DATA <= x"F8"; + when x"00D" => DATA <= x"E9"; + when x"00E" => DATA <= x"FF"; + when x"00F" => DATA <= x"E7"; + when x"010" => DATA <= x"F8"; + when x"011" => DATA <= x"E6"; + when x"012" => DATA <= x"F8"; + when x"013" => DATA <= x"DF"; + when x"014" => DATA <= x"20"; + when x"015" => DATA <= x"5B"; + when x"016" => DATA <= x"0D"; + when x"017" => DATA <= x"36"; + when x"018" => DATA <= x"38"; + when x"019" => DATA <= x"30"; + when x"01A" => DATA <= x"39"; + when x"01B" => DATA <= x"20"; + when x"01C" => DATA <= x"54"; + when x"01D" => DATA <= x"55"; + when x"01E" => DATA <= x"42"; + when x"01F" => DATA <= x"45"; + when x"020" => DATA <= x"20"; + when x"021" => DATA <= x"36"; + when x"022" => DATA <= x"34"; + when x"023" => DATA <= x"4B"; + when x"024" => DATA <= x"20"; + when x"025" => DATA <= x"31"; + when x"026" => DATA <= x"2E"; + when x"027" => DATA <= x"30"; + when x"028" => DATA <= x"30"; + when x"029" => DATA <= x"20"; + when x"02A" => DATA <= x"0D"; + when x"02B" => DATA <= x"00"; + when x"02C" => DATA <= x"1A"; + when x"02D" => DATA <= x"50"; + when x"02E" => DATA <= x"10"; + when x"02F" => DATA <= x"CE"; + when x"030" => DATA <= x"F8"; + when x"031" => DATA <= x"00"; + when x"032" => DATA <= x"1F"; + when x"033" => DATA <= x"41"; + when x"034" => DATA <= x"EC"; + when x"035" => DATA <= x"84"; + when x"036" => DATA <= x"ED"; + when x"037" => DATA <= x"81"; + when x"038" => DATA <= x"8C"; + when x"039" => DATA <= x"FE"; + when x"03A" => DATA <= x"C0"; + when x"03B" => DATA <= x"26"; + when x"03C" => DATA <= x"03"; + when x"03D" => DATA <= x"8E"; + when x"03E" => DATA <= x"FE"; + when x"03F" => DATA <= x"F0"; + when x"040" => DATA <= x"8C"; + when x"041" => DATA <= x"FF"; + when x"042" => DATA <= x"8C"; + when x"043" => DATA <= x"26"; + when x"044" => DATA <= x"03"; + when x"045" => DATA <= x"8E"; + when x"046" => DATA <= x"FF"; + when x"047" => DATA <= x"94"; + when x"048" => DATA <= x"8C"; + when x"049" => DATA <= x"00"; + when x"04A" => DATA <= x"00"; + when x"04B" => DATA <= x"26"; + when x"04C" => DATA <= x"E7"; + when x"04D" => DATA <= x"B6"; + when x"04E" => DATA <= x"FE"; + when x"04F" => DATA <= x"E0"; + when x"050" => DATA <= x"1A"; + when x"051" => DATA <= x"50"; + when x"052" => DATA <= x"10"; + when x"053" => DATA <= x"CE"; + when x"054" => DATA <= x"FF"; + when x"055" => DATA <= x"28"; + when x"056" => DATA <= x"8D"; + when x"057" => DATA <= x"68"; + when x"058" => DATA <= x"BE"; + when x"059" => DATA <= x"FF"; + when x"05A" => DATA <= x"90"; + when x"05B" => DATA <= x"BF"; + when x"05C" => DATA <= x"FF"; + when x"05D" => DATA <= x"8E"; + when x"05E" => DATA <= x"1C"; + when x"05F" => DATA <= x"00"; + when x"060" => DATA <= x"8E"; + when x"061" => DATA <= x"F8"; + when x"062" => DATA <= x"16"; + when x"063" => DATA <= x"BD"; + when x"064" => DATA <= x"F9"; + when x"065" => DATA <= x"33"; + when x"066" => DATA <= x"BD"; + when x"067" => DATA <= x"FF"; + when x"068" => DATA <= x"E7"; + when x"069" => DATA <= x"4F"; + when x"06A" => DATA <= x"BD"; + when x"06B" => DATA <= x"FF"; + when x"06C" => DATA <= x"EE"; + when x"06D" => DATA <= x"4F"; + when x"06E" => DATA <= x"BD"; + when x"06F" => DATA <= x"FA"; + when x"070" => DATA <= x"30"; + when x"071" => DATA <= x"10"; + when x"072" => DATA <= x"CE"; + when x"073" => DATA <= x"FF"; + when x"074" => DATA <= x"28"; + when x"075" => DATA <= x"8D"; + when x"076" => DATA <= x"49"; + when x"077" => DATA <= x"10"; + when x"078" => DATA <= x"FE"; + when x"079" => DATA <= x"FF"; + when x"07A" => DATA <= x"8A"; + when x"07B" => DATA <= x"8E"; + when x"07C" => DATA <= x"FF"; + when x"07D" => DATA <= x"B9"; + when x"07E" => DATA <= x"BF"; + when x"07F" => DATA <= x"FF"; + when x"080" => DATA <= x"90"; + when x"081" => DATA <= x"1C"; + when x"082" => DATA <= x"00"; + when x"083" => DATA <= x"8E"; + when x"084" => DATA <= x"F8"; + when x"085" => DATA <= x"96"; + when x"086" => DATA <= x"BD"; + when x"087" => DATA <= x"F9"; + when x"088" => DATA <= x"33"; + when x"089" => DATA <= x"BD"; + when x"08A" => DATA <= x"FF"; + when x"08B" => DATA <= x"F1"; + when x"08C" => DATA <= x"25"; + when x"08D" => DATA <= x"14"; + when x"08E" => DATA <= x"8E"; + when x"08F" => DATA <= x"FF"; + when x"090" => DATA <= x"28"; + when x"091" => DATA <= x"BD"; + when x"092" => DATA <= x"FF"; + when x"093" => DATA <= x"F7"; + when x"094" => DATA <= x"20"; + when x"095" => DATA <= x"ED"; + when x"096" => DATA <= x"36"; + when x"097" => DATA <= x"38"; + when x"098" => DATA <= x"30"; + when x"099" => DATA <= x"39"; + when x"09A" => DATA <= x"3E"; + when x"09B" => DATA <= x"2A"; + when x"09C" => DATA <= x"00"; + when x"09D" => DATA <= x"FF"; + when x"09E" => DATA <= x"28"; + when x"09F" => DATA <= x"57"; + when x"0A0" => DATA <= x"20"; + when x"0A1" => DATA <= x"FF"; + when x"0A2" => DATA <= x"86"; + when x"0A3" => DATA <= x"7E"; + when x"0A4" => DATA <= x"BD"; + when x"0A5" => DATA <= x"FF"; + when x"0A6" => DATA <= x"F4"; + when x"0A7" => DATA <= x"3F"; + when x"0A8" => DATA <= x"11"; + when x"0A9" => DATA <= x"45"; + when x"0AA" => DATA <= x"73"; + when x"0AB" => DATA <= x"63"; + when x"0AC" => DATA <= x"61"; + when x"0AD" => DATA <= x"70"; + when x"0AE" => DATA <= x"65"; + when x"0AF" => DATA <= x"00"; + when x"0B0" => DATA <= x"10"; + when x"0B1" => DATA <= x"FE"; + when x"0B2" => DATA <= x"FF"; + when x"0B3" => DATA <= x"8A"; + when x"0B4" => DATA <= x"BD"; + when x"0B5" => DATA <= x"FF"; + when x"0B6" => DATA <= x"E7"; + when x"0B7" => DATA <= x"A6"; + when x"0B8" => DATA <= x"80"; + when x"0B9" => DATA <= x"8D"; + when x"0BA" => DATA <= x"78"; + when x"0BB" => DATA <= x"BD"; + when x"0BC" => DATA <= x"FF"; + when x"0BD" => DATA <= x"E7"; + when x"0BE" => DATA <= x"20"; + when x"0BF" => DATA <= x"C3"; + when x"0C0" => DATA <= x"CC"; + when x"0C1" => DATA <= x"00"; + when x"0C2" => DATA <= x"00"; + when x"0C3" => DATA <= x"FD"; + when x"0C4" => DATA <= x"FF"; + when x"0C5" => DATA <= x"88"; + when x"0C6" => DATA <= x"CC"; + when x"0C7" => DATA <= x"F8"; + when x"0C8" => DATA <= x"00"; + when x"0C9" => DATA <= x"FD"; + when x"0CA" => DATA <= x"FF"; + when x"0CB" => DATA <= x"8A"; + when x"0CC" => DATA <= x"CC"; + when x"0CD" => DATA <= x"F8"; + when x"0CE" => DATA <= x"B0"; + when x"0CF" => DATA <= x"FD"; + when x"0D0" => DATA <= x"FF"; + when x"0D1" => DATA <= x"FA"; + when x"0D2" => DATA <= x"CC"; + when x"0D3" => DATA <= x"FE"; + when x"0D4" => DATA <= x"22"; + when x"0D5" => DATA <= x"FD"; + when x"0D6" => DATA <= x"FE"; + when x"0D7" => DATA <= x"FA"; + when x"0D8" => DATA <= x"8E"; + when x"0D9" => DATA <= x"FF"; + when x"0DA" => DATA <= x"FA"; + when x"0DB" => DATA <= x"10"; + when x"0DC" => DATA <= x"8E"; + when x"0DD" => DATA <= x"FF"; + when x"0DE" => DATA <= x"80"; + when x"0DF" => DATA <= x"39"; + when x"0E0" => DATA <= x"BD"; + when x"0E1" => DATA <= x"FF"; + when x"0E2" => DATA <= x"E0"; + when x"0E3" => DATA <= x"7E"; + when x"0E4" => DATA <= x"FF"; + when x"0E5" => DATA <= x"EE"; + when x"0E6" => DATA <= x"BD"; + when x"0E7" => DATA <= x"FF"; + when x"0E8" => DATA <= x"E7"; + when x"0E9" => DATA <= x"A6"; + when x"0EA" => DATA <= x"80"; + when x"0EB" => DATA <= x"81"; + when x"0EC" => DATA <= x"04"; + when x"0ED" => DATA <= x"27"; + when x"0EE" => DATA <= x"F0"; + when x"0EF" => DATA <= x"BD"; + when x"0F0" => DATA <= x"FF"; + when x"0F1" => DATA <= x"EE"; + when x"0F2" => DATA <= x"20"; + when x"0F3" => DATA <= x"F5"; + when x"0F4" => DATA <= x"34"; + when x"0F5" => DATA <= x"32"; + when x"0F6" => DATA <= x"86"; + when x"0F7" => DATA <= x"80"; + when x"0F8" => DATA <= x"8E"; + when x"0F9" => DATA <= x"FF"; + when x"0FA" => DATA <= x"FF"; + when x"0FB" => DATA <= x"1F"; + when x"0FC" => DATA <= x"12"; + when x"0FD" => DATA <= x"BD"; + when x"0FE" => DATA <= x"FF"; + when x"0FF" => DATA <= x"F4"; + when x"100" => DATA <= x"8C"; + when x"101" => DATA <= x"00"; + when x"102" => DATA <= x"00"; + when x"103" => DATA <= x"35"; + when x"104" => DATA <= x"B2"; + when x"105" => DATA <= x"34"; + when x"106" => DATA <= x"06"; + when x"107" => DATA <= x"1F"; + when x"108" => DATA <= x"10"; + when x"109" => DATA <= x"8D"; + when x"10A" => DATA <= x"06"; + when x"10B" => DATA <= x"1F"; + when x"10C" => DATA <= x"98"; + when x"10D" => DATA <= x"8D"; + when x"10E" => DATA <= x"02"; + when x"10F" => DATA <= x"35"; + when x"110" => DATA <= x"86"; + when x"111" => DATA <= x"34"; + when x"112" => DATA <= x"02"; + when x"113" => DATA <= x"44"; + when x"114" => DATA <= x"44"; + when x"115" => DATA <= x"44"; + when x"116" => DATA <= x"44"; + when x"117" => DATA <= x"8D"; + when x"118" => DATA <= x"06"; + when x"119" => DATA <= x"A6"; + when x"11A" => DATA <= x"E4"; + when x"11B" => DATA <= x"8D"; + when x"11C" => DATA <= x"02"; + when x"11D" => DATA <= x"35"; + when x"11E" => DATA <= x"82"; + when x"11F" => DATA <= x"84"; + when x"120" => DATA <= x"0F"; + when x"121" => DATA <= x"81"; + when x"122" => DATA <= x"0A"; + when x"123" => DATA <= x"25"; + when x"124" => DATA <= x"02"; + when x"125" => DATA <= x"8B"; + when x"126" => DATA <= x"07"; + when x"127" => DATA <= x"8B"; + when x"128" => DATA <= x"30"; + when x"129" => DATA <= x"7E"; + when x"12A" => DATA <= x"FF"; + when x"12B" => DATA <= x"EE"; + when x"12C" => DATA <= x"35"; + when x"12D" => DATA <= x"10"; + when x"12E" => DATA <= x"8D"; + when x"12F" => DATA <= x"03"; + when x"130" => DATA <= x"34"; + when x"131" => DATA <= x"10"; + when x"132" => DATA <= x"39"; + when x"133" => DATA <= x"A6"; + when x"134" => DATA <= x"80"; + when x"135" => DATA <= x"27"; + when x"136" => DATA <= x"FB"; + when x"137" => DATA <= x"BD"; + when x"138" => DATA <= x"FF"; + when x"139" => DATA <= x"E3"; + when x"13A" => DATA <= x"20"; + when x"13B" => DATA <= x"F7"; + when x"13C" => DATA <= x"10"; + when x"13D" => DATA <= x"8E"; + when x"13E" => DATA <= x"00"; + when x"13F" => DATA <= x"00"; + when x"140" => DATA <= x"A6"; + when x"141" => DATA <= x"80"; + when x"142" => DATA <= x"81"; + when x"143" => DATA <= x"30"; + when x"144" => DATA <= x"25"; + when x"145" => DATA <= x"2B"; + when x"146" => DATA <= x"81"; + when x"147" => DATA <= x"3A"; + when x"148" => DATA <= x"25"; + when x"149" => DATA <= x"0A"; + when x"14A" => DATA <= x"84"; + when x"14B" => DATA <= x"DF"; + when x"14C" => DATA <= x"80"; + when x"14D" => DATA <= x"07"; + when x"14E" => DATA <= x"25"; + when x"14F" => DATA <= x"21"; + when x"150" => DATA <= x"81"; + when x"151" => DATA <= x"40"; + when x"152" => DATA <= x"24"; + when x"153" => DATA <= x"1D"; + when x"154" => DATA <= x"84"; + when x"155" => DATA <= x"0F"; + when x"156" => DATA <= x"1E"; + when x"157" => DATA <= x"02"; + when x"158" => DATA <= x"58"; + when x"159" => DATA <= x"49"; + when x"15A" => DATA <= x"58"; + when x"15B" => DATA <= x"49"; + when x"15C" => DATA <= x"58"; + when x"15D" => DATA <= x"49"; + when x"15E" => DATA <= x"58"; + when x"15F" => DATA <= x"49"; + when x"160" => DATA <= x"1E"; + when x"161" => DATA <= x"12"; + when x"162" => DATA <= x"1E"; + when x"163" => DATA <= x"01"; + when x"164" => DATA <= x"1E"; + when x"165" => DATA <= x"89"; + when x"166" => DATA <= x"3A"; + when x"167" => DATA <= x"1E"; + when x"168" => DATA <= x"12"; + when x"169" => DATA <= x"20"; + when x"16A" => DATA <= x"D5"; + when x"16B" => DATA <= x"A6"; + when x"16C" => DATA <= x"80"; + when x"16D" => DATA <= x"81"; + when x"16E" => DATA <= x"20"; + when x"16F" => DATA <= x"27"; + when x"170" => DATA <= x"FA"; + when x"171" => DATA <= x"30"; + when x"172" => DATA <= x"1F"; + when x"173" => DATA <= x"81"; + when x"174" => DATA <= x"21"; + when x"175" => DATA <= x"39"; + when x"176" => DATA <= x"34"; + when x"177" => DATA <= x"7C"; + when x"178" => DATA <= x"11"; + when x"179" => DATA <= x"8C"; + when x"17A" => DATA <= x"F8"; + when x"17B" => DATA <= x"00"; + when x"17C" => DATA <= x"24"; + when x"17D" => DATA <= x"08"; + when x"17E" => DATA <= x"10"; + when x"17F" => DATA <= x"FF"; + when x"180" => DATA <= x"F9"; + when x"181" => DATA <= x"8A"; + when x"182" => DATA <= x"10"; + when x"183" => DATA <= x"CE"; + when x"184" => DATA <= x"FF"; + when x"185" => DATA <= x"28"; + when x"186" => DATA <= x"8D"; + when x"187" => DATA <= x"0F"; + when x"188" => DATA <= x"10"; + when x"189" => DATA <= x"CE"; + when x"18A" => DATA <= x"00"; + when x"18B" => DATA <= x"00"; + when x"18C" => DATA <= x"35"; + when x"18D" => DATA <= x"FC"; + when x"18E" => DATA <= x"48"; + when x"18F" => DATA <= x"45"; + when x"190" => DATA <= x"4C"; + when x"191" => DATA <= x"50"; + when x"192" => DATA <= x"80"; + when x"193" => DATA <= x"47"; + when x"194" => DATA <= x"4F"; + when x"195" => DATA <= x"81"; + when x"196" => DATA <= x"00"; + when x"197" => DATA <= x"8D"; + when x"198" => DATA <= x"D2"; + when x"199" => DATA <= x"A6"; + when x"19A" => DATA <= x"80"; + when x"19B" => DATA <= x"81"; + when x"19C" => DATA <= x"2A"; + when x"19D" => DATA <= x"27"; + when x"19E" => DATA <= x"F8"; + when x"19F" => DATA <= x"30"; + when x"1A0" => DATA <= x"1F"; + when x"1A1" => DATA <= x"34"; + when x"1A2" => DATA <= x"10"; + when x"1A3" => DATA <= x"A6"; + when x"1A4" => DATA <= x"80"; + when x"1A5" => DATA <= x"81"; + when x"1A6" => DATA <= x"21"; + when x"1A7" => DATA <= x"24"; + when x"1A8" => DATA <= x"FA"; + when x"1A9" => DATA <= x"30"; + when x"1AA" => DATA <= x"1F"; + when x"1AB" => DATA <= x"8D"; + when x"1AC" => DATA <= x"BE"; + when x"1AD" => DATA <= x"BF"; + when x"1AE" => DATA <= x"FF"; + when x"1AF" => DATA <= x"86"; + when x"1B0" => DATA <= x"10"; + when x"1B1" => DATA <= x"8E"; + when x"1B2" => DATA <= x"F9"; + when x"1B3" => DATA <= x"8E"; + when x"1B4" => DATA <= x"AE"; + when x"1B5" => DATA <= x"E4"; + when x"1B6" => DATA <= x"A6"; + when x"1B7" => DATA <= x"84"; + when x"1B8" => DATA <= x"81"; + when x"1B9" => DATA <= x"41"; + when x"1BA" => DATA <= x"25"; + when x"1BB" => DATA <= x"68"; + when x"1BC" => DATA <= x"A6"; + when x"1BD" => DATA <= x"80"; + when x"1BE" => DATA <= x"84"; + when x"1BF" => DATA <= x"DF"; + when x"1C0" => DATA <= x"A1"; + when x"1C1" => DATA <= x"A0"; + when x"1C2" => DATA <= x"27"; + when x"1C3" => DATA <= x"F8"; + when x"1C4" => DATA <= x"A6"; + when x"1C5" => DATA <= x"A2"; + when x"1C6" => DATA <= x"2B"; + when x"1C7" => DATA <= x"16"; + when x"1C8" => DATA <= x"A6"; + when x"1C9" => DATA <= x"1F"; + when x"1CA" => DATA <= x"81"; + when x"1CB" => DATA <= x"2E"; + when x"1CC" => DATA <= x"27"; + when x"1CD" => DATA <= x"0A"; + when x"1CE" => DATA <= x"A6"; + when x"1CF" => DATA <= x"A0"; + when x"1D0" => DATA <= x"2A"; + when x"1D1" => DATA <= x"FC"; + when x"1D2" => DATA <= x"A6"; + when x"1D3" => DATA <= x"A4"; + when x"1D4" => DATA <= x"26"; + when x"1D5" => DATA <= x"DE"; + when x"1D6" => DATA <= x"20"; + when x"1D7" => DATA <= x"4C"; + when x"1D8" => DATA <= x"A6"; + when x"1D9" => DATA <= x"A0"; + when x"1DA" => DATA <= x"2A"; + when x"1DB" => DATA <= x"FC"; + when x"1DC" => DATA <= x"20"; + when x"1DD" => DATA <= x"06"; + when x"1DE" => DATA <= x"E6"; + when x"1DF" => DATA <= x"82"; + when x"1E0" => DATA <= x"C1"; + when x"1E1" => DATA <= x"21"; + when x"1E2" => DATA <= x"24"; + when x"1E3" => DATA <= x"40"; + when x"1E4" => DATA <= x"81"; + when x"1E5" => DATA <= x"80"; + when x"1E6" => DATA <= x"27"; + when x"1E7" => DATA <= x"2D"; + when x"1E8" => DATA <= x"8D"; + when x"1E9" => DATA <= x"81"; + when x"1EA" => DATA <= x"10"; + when x"1EB" => DATA <= x"BE"; + when x"1EC" => DATA <= x"FF"; + when x"1ED" => DATA <= x"90"; + when x"1EE" => DATA <= x"81"; + when x"1EF" => DATA <= x"0D"; + when x"1F0" => DATA <= x"27"; + when x"1F1" => DATA <= x"18"; + when x"1F2" => DATA <= x"81"; + when x"1F3" => DATA <= x"3B"; + when x"1F4" => DATA <= x"27"; + when x"1F5" => DATA <= x"12"; + when x"1F6" => DATA <= x"BD"; + when x"1F7" => DATA <= x"FF"; + when x"1F8" => DATA <= x"A1"; + when x"1F9" => DATA <= x"24"; + when x"1FA" => DATA <= x"29"; + when x"1FB" => DATA <= x"BD"; + when x"1FC" => DATA <= x"F9"; + when x"1FD" => DATA <= x"6B"; + when x"1FE" => DATA <= x"81"; + when x"1FF" => DATA <= x"3B"; + when x"200" => DATA <= x"27"; + when x"201" => DATA <= x"06"; + when x"202" => DATA <= x"81"; + when x"203" => DATA <= x"0D"; + when x"204" => DATA <= x"26"; + when x"205" => DATA <= x"1E"; + when x"206" => DATA <= x"30"; + when x"207" => DATA <= x"1F"; + when x"208" => DATA <= x"30"; + when x"209" => DATA <= x"01"; + when x"20A" => DATA <= x"BF"; + when x"20B" => DATA <= x"FF"; + when x"20C" => DATA <= x"86"; + when x"20D" => DATA <= x"35"; + when x"20E" => DATA <= x"10"; + when x"20F" => DATA <= x"1F"; + when x"210" => DATA <= x"21"; + when x"211" => DATA <= x"1A"; + when x"212" => DATA <= x"01"; + when x"213" => DATA <= x"20"; + when x"214" => DATA <= x"23"; + when x"215" => DATA <= x"BD"; + when x"216" => DATA <= x"F9"; + when x"217" => DATA <= x"6B"; + when x"218" => DATA <= x"25"; + when x"219" => DATA <= x"04"; + when x"21A" => DATA <= x"81"; + when x"21B" => DATA <= x"2E"; + when x"21C" => DATA <= x"26"; + when x"21D" => DATA <= x"06"; + when x"21E" => DATA <= x"8E"; + when x"21F" => DATA <= x"F8"; + when x"220" => DATA <= x"16"; + when x"221" => DATA <= x"BD"; + when x"222" => DATA <= x"F9"; + when x"223" => DATA <= x"33"; + when x"224" => DATA <= x"35"; + when x"225" => DATA <= x"10"; + when x"226" => DATA <= x"86"; + when x"227" => DATA <= x"02"; + when x"228" => DATA <= x"BD"; + when x"229" => DATA <= x"FC"; + when x"22A" => DATA <= x"DE"; + when x"22B" => DATA <= x"BD"; + when x"22C" => DATA <= x"FC"; + when x"22D" => DATA <= x"A2"; + when x"22E" => DATA <= x"1A"; + when x"22F" => DATA <= x"01"; + when x"230" => DATA <= x"BD"; + when x"231" => DATA <= x"FA"; + when x"232" => DATA <= x"B4"; + when x"233" => DATA <= x"2A"; + when x"234" => DATA <= x"51"; + when x"235" => DATA <= x"BE"; + when x"236" => DATA <= x"FF"; + when x"237" => DATA <= x"8E"; + when x"238" => DATA <= x"34"; + when x"239" => DATA <= x"01"; + when x"23A" => DATA <= x"1F"; + when x"23B" => DATA <= x"12"; + when x"23C" => DATA <= x"E6"; + when x"23D" => DATA <= x"07"; + when x"23E" => DATA <= x"3A"; + when x"23F" => DATA <= x"CE"; + when x"240" => DATA <= x"FA"; + when x"241" => DATA <= x"93"; + when x"242" => DATA <= x"C6"; + when x"243" => DATA <= x"04"; + when x"244" => DATA <= x"A6"; + when x"245" => DATA <= x"80"; + when x"246" => DATA <= x"A1"; + when x"247" => DATA <= x"C2"; + when x"248" => DATA <= x"26"; + when x"249" => DATA <= x"3D"; + when x"24A" => DATA <= x"5A"; + when x"24B" => DATA <= x"26"; + when x"24C" => DATA <= x"F7"; + when x"24D" => DATA <= x"A6"; + when x"24E" => DATA <= x"26"; + when x"24F" => DATA <= x"48"; + when x"250" => DATA <= x"2A"; + when x"251" => DATA <= x"41"; + when x"252" => DATA <= x"84"; + when x"253" => DATA <= x"1E"; + when x"254" => DATA <= x"81"; + when x"255" => DATA <= x"06"; + when x"256" => DATA <= x"26"; + when x"257" => DATA <= x"3B"; + when x"258" => DATA <= x"30"; + when x"259" => DATA <= x"1C"; + when x"25A" => DATA <= x"BF"; + when x"25B" => DATA <= x"FF"; + when x"25C" => DATA <= x"82"; + when x"25D" => DATA <= x"FE"; + when x"25E" => DATA <= x"FF"; + when x"25F" => DATA <= x"90"; + when x"260" => DATA <= x"BE"; + when x"261" => DATA <= x"FF"; + when x"262" => DATA <= x"8A"; + when x"263" => DATA <= x"35"; + when x"264" => DATA <= x"02"; + when x"265" => DATA <= x"34"; + when x"266" => DATA <= x"50"; + when x"267" => DATA <= x"10"; + when x"268" => DATA <= x"8C"; + when x"269" => DATA <= x"80"; + when x"26A" => DATA <= x"00"; + when x"26B" => DATA <= x"25"; + when x"26C" => DATA <= x"04"; + when x"26D" => DATA <= x"10"; + when x"26E" => DATA <= x"BF"; + when x"26F" => DATA <= x"FF"; + when x"270" => DATA <= x"8A"; + when x"271" => DATA <= x"46"; + when x"272" => DATA <= x"10"; + when x"273" => DATA <= x"BF"; + when x"274" => DATA <= x"FF"; + when x"275" => DATA <= x"90"; + when x"276" => DATA <= x"BE"; + when x"277" => DATA <= x"FF"; + when x"278" => DATA <= x"86"; + when x"279" => DATA <= x"86"; + when x"27A" => DATA <= x"01"; + when x"27B" => DATA <= x"AD"; + when x"27C" => DATA <= x"A4"; + when x"27D" => DATA <= x"35"; + when x"27E" => DATA <= x"60"; + when x"27F" => DATA <= x"10"; + when x"280" => DATA <= x"BF"; + when x"281" => DATA <= x"FF"; + when x"282" => DATA <= x"8A"; + when x"283" => DATA <= x"FF"; + when x"284" => DATA <= x"FF"; + when x"285" => DATA <= x"90"; + when x"286" => DATA <= x"39"; + when x"287" => DATA <= x"BE"; + when x"288" => DATA <= x"FF"; + when x"289" => DATA <= x"86"; + when x"28A" => DATA <= x"4F"; + when x"28B" => DATA <= x"35"; + when x"28C" => DATA <= x"01"; + when x"28D" => DATA <= x"6E"; + when x"28E" => DATA <= x"A4"; + when x"28F" => DATA <= x"29"; + when x"290" => DATA <= x"43"; + when x"291" => DATA <= x"28"; + when x"292" => DATA <= x"00"; + when x"293" => DATA <= x"35"; + when x"294" => DATA <= x"01"; + when x"295" => DATA <= x"10"; + when x"296" => DATA <= x"24"; + when x"297" => DATA <= x"05"; + when x"298" => DATA <= x"20"; + when x"299" => DATA <= x"BD"; + when x"29A" => DATA <= x"F8"; + when x"29B" => DATA <= x"CC"; + when x"29C" => DATA <= x"3F"; + when x"29D" => DATA <= x"F9"; + when x"29E" => DATA <= x"4E"; + when x"29F" => DATA <= x"6F"; + when x"2A0" => DATA <= x"74"; + when x"2A1" => DATA <= x"20"; + when x"2A2" => DATA <= x"36"; + when x"2A3" => DATA <= x"38"; + when x"2A4" => DATA <= x"30"; + when x"2A5" => DATA <= x"39"; + when x"2A6" => DATA <= x"20"; + when x"2A7" => DATA <= x"63"; + when x"2A8" => DATA <= x"6F"; + when x"2A9" => DATA <= x"64"; + when x"2AA" => DATA <= x"65"; + when x"2AB" => DATA <= x"00"; + when x"2AC" => DATA <= x"4F"; + when x"2AD" => DATA <= x"BD"; + when x"2AE" => DATA <= x"FC"; + when x"2AF" => DATA <= x"DE"; + when x"2B0" => DATA <= x"8D"; + when x"2B1" => DATA <= x"02"; + when x"2B2" => DATA <= x"8B"; + when x"2B3" => DATA <= x"80"; + when x"2B4" => DATA <= x"B6"; + when x"2B5" => DATA <= x"FE"; + when x"2B6" => DATA <= x"E2"; + when x"2B7" => DATA <= x"2A"; + when x"2B8" => DATA <= x"FB"; + when x"2B9" => DATA <= x"B6"; + when x"2BA" => DATA <= x"FE"; + when x"2BB" => DATA <= x"E3"; + when x"2BC" => DATA <= x"39"; + when x"2BD" => DATA <= x"34"; + when x"2BE" => DATA <= x"06"; + when x"2BF" => DATA <= x"4D"; + when x"2C0" => DATA <= x"2B"; + when x"2C1" => DATA <= x"23"; + when x"2C2" => DATA <= x"86"; + when x"2C3" => DATA <= x"04"; + when x"2C4" => DATA <= x"BD"; + when x"2C5" => DATA <= x"FC"; + when x"2C6" => DATA <= x"DE"; + when x"2C7" => DATA <= x"1F"; + when x"2C8" => DATA <= x"10"; + when x"2C9" => DATA <= x"BD"; + when x"2CA" => DATA <= x"FC"; + when x"2CB" => DATA <= x"DC"; + when x"2CC" => DATA <= x"35"; + when x"2CD" => DATA <= x"06"; + when x"2CE" => DATA <= x"34"; + when x"2CF" => DATA <= x"06"; + when x"2D0" => DATA <= x"BD"; + when x"2D1" => DATA <= x"FC"; + when x"2D2" => DATA <= x"DE"; + when x"2D3" => DATA <= x"8D"; + when x"2D4" => DATA <= x"DF"; + when x"2D5" => DATA <= x"1F"; + when x"2D6" => DATA <= x"89"; + when x"2D7" => DATA <= x"4F"; + when x"2D8" => DATA <= x"1F"; + when x"2D9" => DATA <= x"01"; + when x"2DA" => DATA <= x"35"; + when x"2DB" => DATA <= x"86"; + when x"2DC" => DATA <= x"8E"; + when x"2DD" => DATA <= x"F8"; + when x"2DE" => DATA <= x"16"; + when x"2DF" => DATA <= x"BF"; + when x"2E0" => DATA <= x"FF"; + when x"2E1" => DATA <= x"86"; + when x"2E2" => DATA <= x"7E"; + when x"2E3" => DATA <= x"FA"; + when x"2E4" => DATA <= x"2E"; + when x"2E5" => DATA <= x"81"; + when x"2E6" => DATA <= x"82"; + when x"2E7" => DATA <= x"27"; + when x"2E8" => DATA <= x"39"; + when x"2E9" => DATA <= x"81"; + when x"2EA" => DATA <= x"83"; + when x"2EB" => DATA <= x"27"; + when x"2EC" => DATA <= x"37"; + when x"2ED" => DATA <= x"81"; + when x"2EE" => DATA <= x"84"; + when x"2EF" => DATA <= x"27"; + when x"2F0" => DATA <= x"33"; + when x"2F1" => DATA <= x"86"; + when x"2F2" => DATA <= x"06"; + when x"2F3" => DATA <= x"BD"; + when x"2F4" => DATA <= x"FC"; + when x"2F5" => DATA <= x"DE"; + when x"2F6" => DATA <= x"1F"; + when x"2F7" => DATA <= x"10"; + when x"2F8" => DATA <= x"BD"; + when x"2F9" => DATA <= x"FC"; + when x"2FA" => DATA <= x"DC"; + when x"2FB" => DATA <= x"BD"; + when x"2FC" => DATA <= x"FC"; + when x"2FD" => DATA <= x"DA"; + when x"2FE" => DATA <= x"35"; + when x"2FF" => DATA <= x"06"; + when x"300" => DATA <= x"BD"; + when x"301" => DATA <= x"FC"; + when x"302" => DATA <= x"DE"; + when x"303" => DATA <= x"81"; + when x"304" => DATA <= x"9D"; + when x"305" => DATA <= x"27"; + when x"306" => DATA <= x"B5"; + when x"307" => DATA <= x"81"; + when x"308" => DATA <= x"8E"; + when x"309" => DATA <= x"27"; + when x"30A" => DATA <= x"D1"; + when x"30B" => DATA <= x"34"; + when x"30C" => DATA <= x"06"; + when x"30D" => DATA <= x"8D"; + when x"30E" => DATA <= x"A5"; + when x"30F" => DATA <= x"8B"; + when x"310" => DATA <= x"80"; + when x"311" => DATA <= x"34"; + when x"312" => DATA <= x"01"; + when x"313" => DATA <= x"8D"; + when x"314" => DATA <= x"9F"; + when x"315" => DATA <= x"1F"; + when x"316" => DATA <= x"89"; + when x"317" => DATA <= x"4F"; + when x"318" => DATA <= x"1F"; + when x"319" => DATA <= x"02"; + when x"31A" => DATA <= x"8D"; + when x"31B" => DATA <= x"98"; + when x"31C" => DATA <= x"1E"; + when x"31D" => DATA <= x"89"; + when x"31E" => DATA <= x"1F"; + when x"31F" => DATA <= x"01"; + when x"320" => DATA <= x"35"; + when x"321" => DATA <= x"87"; + when x"322" => DATA <= x"86"; + when x"323" => DATA <= x"85"; + when x"324" => DATA <= x"48"; + when x"325" => DATA <= x"8E"; + when x"326" => DATA <= x"FF"; + when x"327" => DATA <= x"82"; + when x"328" => DATA <= x"EC"; + when x"329" => DATA <= x"84"; + when x"32A" => DATA <= x"1F"; + when x"32B" => DATA <= x"01"; + when x"32C" => DATA <= x"1F"; + when x"32D" => DATA <= x"89"; + when x"32E" => DATA <= x"4F"; + when x"32F" => DATA <= x"1F"; + when x"330" => DATA <= x"02"; + when x"331" => DATA <= x"35"; + when x"332" => DATA <= x"86"; + when x"333" => DATA <= x"4D"; + when x"334" => DATA <= x"27"; + when x"335" => DATA <= x"5C"; + when x"336" => DATA <= x"34"; + when x"337" => DATA <= x"26"; + when x"338" => DATA <= x"34"; + when x"339" => DATA <= x"10"; + when x"33A" => DATA <= x"1F"; + when x"33B" => DATA <= x"89"; + when x"33C" => DATA <= x"86"; + when x"33D" => DATA <= x"08"; + when x"33E" => DATA <= x"BD"; + when x"33F" => DATA <= x"FC"; + when x"340" => DATA <= x"DE"; + when x"341" => DATA <= x"BD"; + when x"342" => DATA <= x"FC"; + when x"343" => DATA <= x"DC"; + when x"344" => DATA <= x"5D"; + when x"345" => DATA <= x"2A"; + when x"346" => DATA <= x"04"; + when x"347" => DATA <= x"A6"; + when x"348" => DATA <= x"84"; + when x"349" => DATA <= x"20"; + when x"34A" => DATA <= x"0C"; + when x"34B" => DATA <= x"86"; + when x"34C" => DATA <= x"10"; + when x"34D" => DATA <= x"C1"; + when x"34E" => DATA <= x"15"; + when x"34F" => DATA <= x"24"; + when x"350" => DATA <= x"06"; + when x"351" => DATA <= x"8E"; + when x"352" => DATA <= x"FB"; + when x"353" => DATA <= x"C1"; + when x"354" => DATA <= x"3A"; + when x"355" => DATA <= x"A6"; + when x"356" => DATA <= x"84"; + when x"357" => DATA <= x"35"; + when x"358" => DATA <= x"10"; + when x"359" => DATA <= x"BD"; + when x"35A" => DATA <= x"FC"; + when x"35B" => DATA <= x"DE"; + when x"35C" => DATA <= x"1F"; + when x"35D" => DATA <= x"02"; + when x"35E" => DATA <= x"1E"; + when x"35F" => DATA <= x"89"; + when x"360" => DATA <= x"4F"; + when x"361" => DATA <= x"1E"; + when x"362" => DATA <= x"02"; + when x"363" => DATA <= x"4A"; + when x"364" => DATA <= x"2B"; + when x"365" => DATA <= x"03"; + when x"366" => DATA <= x"BD"; + when x"367" => DATA <= x"FC"; + when x"368" => DATA <= x"AB"; + when x"369" => DATA <= x"34"; + when x"36A" => DATA <= x"10"; + when x"36B" => DATA <= x"5D"; + when x"36C" => DATA <= x"2A"; + when x"36D" => DATA <= x"04"; + when x"36E" => DATA <= x"A6"; + when x"36F" => DATA <= x"01"; + when x"370" => DATA <= x"20"; + when x"371" => DATA <= x"0C"; + when x"372" => DATA <= x"86"; + when x"373" => DATA <= x"10"; + when x"374" => DATA <= x"C1"; + when x"375" => DATA <= x"15"; + when x"376" => DATA <= x"24"; + when x"377" => DATA <= x"06"; + when x"378" => DATA <= x"8E"; + when x"379" => DATA <= x"FB"; + when x"37A" => DATA <= x"D5"; + when x"37B" => DATA <= x"3A"; + when x"37C" => DATA <= x"A6"; + when x"37D" => DATA <= x"84"; + when x"37E" => DATA <= x"35"; + when x"37F" => DATA <= x"10"; + when x"380" => DATA <= x"BD"; + when x"381" => DATA <= x"FC"; + when x"382" => DATA <= x"DE"; + when x"383" => DATA <= x"1F"; + when x"384" => DATA <= x"02"; + when x"385" => DATA <= x"1E"; + when x"386" => DATA <= x"89"; + when x"387" => DATA <= x"4F"; + when x"388" => DATA <= x"1E"; + when x"389" => DATA <= x"02"; + when x"38A" => DATA <= x"4A"; + when x"38B" => DATA <= x"2B"; + when x"38C" => DATA <= x"03"; + when x"38D" => DATA <= x"BD"; + when x"38E" => DATA <= x"FC"; + when x"38F" => DATA <= x"BB"; + when x"390" => DATA <= x"35"; + when x"391" => DATA <= x"A6"; + when x"392" => DATA <= x"86"; + when x"393" => DATA <= x"0A"; + when x"394" => DATA <= x"BD"; + when x"395" => DATA <= x"FC"; + when x"396" => DATA <= x"DE"; + when x"397" => DATA <= x"30"; + when x"398" => DATA <= x"02"; + when x"399" => DATA <= x"10"; + when x"39A" => DATA <= x"8E"; + when x"39B" => DATA <= x"00"; + when x"39C" => DATA <= x"03"; + when x"39D" => DATA <= x"BD"; + when x"39E" => DATA <= x"FC"; + when x"39F" => DATA <= x"AB"; + when x"3A0" => DATA <= x"30"; + when x"3A1" => DATA <= x"1E"; + when x"3A2" => DATA <= x"86"; + when x"3A3" => DATA <= x"07"; + when x"3A4" => DATA <= x"BD"; + when x"3A5" => DATA <= x"FC"; + when x"3A6" => DATA <= x"DE"; + when x"3A7" => DATA <= x"4F"; + when x"3A8" => DATA <= x"BD"; + when x"3A9" => DATA <= x"FC"; + when x"3AA" => DATA <= x"DE"; + when x"3AB" => DATA <= x"BD"; + when x"3AC" => DATA <= x"FA"; + when x"3AD" => DATA <= x"B4"; + when x"3AE" => DATA <= x"8B"; + when x"3AF" => DATA <= x"80"; + when x"3B0" => DATA <= x"25"; + when x"3B1" => DATA <= x"0F"; + when x"3B2" => DATA <= x"AE"; + when x"3B3" => DATA <= x"84"; + when x"3B4" => DATA <= x"BD"; + when x"3B5" => DATA <= x"FA"; + when x"3B6" => DATA <= x"B4"; + when x"3B7" => DATA <= x"A7"; + when x"3B8" => DATA <= x"80"; + when x"3B9" => DATA <= x"31"; + when x"3BA" => DATA <= x"21"; + when x"3BB" => DATA <= x"81"; + when x"3BC" => DATA <= x"0D"; + when x"3BD" => DATA <= x"26"; + when x"3BE" => DATA <= x"F5"; + when x"3BF" => DATA <= x"31"; + when x"3C0" => DATA <= x"3F"; + when x"3C1" => DATA <= x"39"; + when x"3C2" => DATA <= x"00"; + when x"3C3" => DATA <= x"05"; + when x"3C4" => DATA <= x"00"; + when x"3C5" => DATA <= x"05"; + when x"3C6" => DATA <= x"04"; + when x"3C7" => DATA <= x"05"; + when x"3C8" => DATA <= x"08"; + when x"3C9" => DATA <= x"0E"; + when x"3CA" => DATA <= x"04"; + when x"3CB" => DATA <= x"01"; + when x"3CC" => DATA <= x"01"; + when x"3CD" => DATA <= x"05"; + when x"3CE" => DATA <= x"00"; + when x"3CF" => DATA <= x"10"; + when x"3D0" => DATA <= x"20"; + when x"3D1" => DATA <= x"10"; + when x"3D2" => DATA <= x"0D"; + when x"3D3" => DATA <= x"00"; + when x"3D4" => DATA <= x"04"; + when x"3D5" => DATA <= x"80"; + when x"3D6" => DATA <= x"05"; + when x"3D7" => DATA <= x"00"; + when x"3D8" => DATA <= x"05"; + when x"3D9" => DATA <= x"00"; + when x"3DA" => DATA <= x"05"; + when x"3DB" => DATA <= x"00"; + when x"3DC" => DATA <= x"00"; + when x"3DD" => DATA <= x"00"; + when x"3DE" => DATA <= x"05"; + when x"3DF" => DATA <= x"09"; + when x"3E0" => DATA <= x"05"; + when x"3E1" => DATA <= x"00"; + when x"3E2" => DATA <= x"08"; + when x"3E3" => DATA <= x"19"; + when x"3E4" => DATA <= x"00"; + when x"3E5" => DATA <= x"01"; + when x"3E6" => DATA <= x"0D"; + when x"3E7" => DATA <= x"80"; + when x"3E8" => DATA <= x"04"; + when x"3E9" => DATA <= x"80"; + when x"3EA" => DATA <= x"34"; + when x"3EB" => DATA <= x"26"; + when x"3EC" => DATA <= x"86"; + when x"3ED" => DATA <= x"0C"; + when x"3EE" => DATA <= x"BD"; + when x"3EF" => DATA <= x"FC"; + when x"3F0" => DATA <= x"DE"; + when x"3F1" => DATA <= x"BD"; + when x"3F2" => DATA <= x"FC"; + when x"3F3" => DATA <= x"DA"; + when x"3F4" => DATA <= x"10"; + when x"3F5" => DATA <= x"8E"; + when x"3F6" => DATA <= x"00"; + when x"3F7" => DATA <= x"04"; + when x"3F8" => DATA <= x"BD"; + when x"3F9" => DATA <= x"FC"; + when x"3FA" => DATA <= x"AB"; + when x"3FB" => DATA <= x"35"; + when x"3FC" => DATA <= x"06"; + when x"3FD" => DATA <= x"BD"; + when x"3FE" => DATA <= x"FC"; + when x"3FF" => DATA <= x"DE"; + when x"400" => DATA <= x"BD"; + when x"401" => DATA <= x"FA"; + when x"402" => DATA <= x"B4"; + when x"403" => DATA <= x"34"; + when x"404" => DATA <= x"02"; + when x"405" => DATA <= x"10"; + when x"406" => DATA <= x"8E"; + when x"407" => DATA <= x"00"; + when x"408" => DATA <= x"04"; + when x"409" => DATA <= x"BD"; + when x"40A" => DATA <= x"FC"; + when x"40B" => DATA <= x"BB"; + when x"40C" => DATA <= x"35"; + when x"40D" => DATA <= x"A2"; + when x"40E" => DATA <= x"34"; + when x"40F" => DATA <= x"04"; + when x"410" => DATA <= x"86"; + when x"411" => DATA <= x"0E"; + when x"412" => DATA <= x"BD"; + when x"413" => DATA <= x"FC"; + when x"414" => DATA <= x"DE"; + when x"415" => DATA <= x"BD"; + when x"416" => DATA <= x"FC"; + when x"417" => DATA <= x"DA"; + when x"418" => DATA <= x"35"; + when x"419" => DATA <= x"04"; + when x"41A" => DATA <= x"7E"; + when x"41B" => DATA <= x"FA"; + when x"41C" => DATA <= x"B0"; + when x"41D" => DATA <= x"34"; + when x"41E" => DATA <= x"06"; + when x"41F" => DATA <= x"86"; + when x"420" => DATA <= x"10"; + when x"421" => DATA <= x"BD"; + when x"422" => DATA <= x"FC"; + when x"423" => DATA <= x"DE"; + when x"424" => DATA <= x"BD"; + when x"425" => DATA <= x"FC"; + when x"426" => DATA <= x"DA"; + when x"427" => DATA <= x"35"; + when x"428" => DATA <= x"06"; + when x"429" => DATA <= x"34"; + when x"42A" => DATA <= x"06"; + when x"42B" => DATA <= x"BD"; + when x"42C" => DATA <= x"FC"; + when x"42D" => DATA <= x"DE"; + when x"42E" => DATA <= x"BD"; + when x"42F" => DATA <= x"FA"; + when x"430" => DATA <= x"B4"; + when x"431" => DATA <= x"35"; + when x"432" => DATA <= x"86"; + when x"433" => DATA <= x"34"; + when x"434" => DATA <= x"06"; + when x"435" => DATA <= x"86"; + when x"436" => DATA <= x"12"; + when x"437" => DATA <= x"BD"; + when x"438" => DATA <= x"FC"; + when x"439" => DATA <= x"DE"; + when x"43A" => DATA <= x"35"; + when x"43B" => DATA <= x"06"; + when x"43C" => DATA <= x"BD"; + when x"43D" => DATA <= x"FC"; + when x"43E" => DATA <= x"DE"; + when x"43F" => DATA <= x"4D"; + when x"440" => DATA <= x"27"; + when x"441" => DATA <= x"06"; + when x"442" => DATA <= x"BD"; + when x"443" => DATA <= x"FC"; + when x"444" => DATA <= x"A2"; + when x"445" => DATA <= x"7E"; + when x"446" => DATA <= x"FA"; + when x"447" => DATA <= x"B4"; + when x"448" => DATA <= x"34"; + when x"449" => DATA <= x"04"; + when x"44A" => DATA <= x"BD"; + when x"44B" => DATA <= x"FC"; + when x"44C" => DATA <= x"DA"; + when x"44D" => DATA <= x"BD"; + when x"44E" => DATA <= x"FA"; + when x"44F" => DATA <= x"B4"; + when x"450" => DATA <= x"4F"; + when x"451" => DATA <= x"35"; + when x"452" => DATA <= x"84"; + when x"453" => DATA <= x"34"; + when x"454" => DATA <= x"32"; + when x"455" => DATA <= x"86"; + when x"456" => DATA <= x"14"; + when x"457" => DATA <= x"BD"; + when x"458" => DATA <= x"FC"; + when x"459" => DATA <= x"DE"; + when x"45A" => DATA <= x"30"; + when x"45B" => DATA <= x"02"; + when x"45C" => DATA <= x"10"; + when x"45D" => DATA <= x"8E"; + when x"45E" => DATA <= x"00"; + when x"45F" => DATA <= x"10"; + when x"460" => DATA <= x"BD"; + when x"461" => DATA <= x"FC"; + when x"462" => DATA <= x"AB"; + when x"463" => DATA <= x"30"; + when x"464" => DATA <= x"1E"; + when x"465" => DATA <= x"AE"; + when x"466" => DATA <= x"84"; + when x"467" => DATA <= x"BD"; + when x"468" => DATA <= x"FC"; + when x"469" => DATA <= x"A2"; + when x"46A" => DATA <= x"35"; + when x"46B" => DATA <= x"02"; + when x"46C" => DATA <= x"BD"; + when x"46D" => DATA <= x"FC"; + when x"46E" => DATA <= x"DE"; + when x"46F" => DATA <= x"BD"; + when x"470" => DATA <= x"FA"; + when x"471" => DATA <= x"B4"; + when x"472" => DATA <= x"35"; + when x"473" => DATA <= x"10"; + when x"474" => DATA <= x"34"; + when x"475" => DATA <= x"02"; + when x"476" => DATA <= x"30"; + when x"477" => DATA <= x"02"; + when x"478" => DATA <= x"10"; + when x"479" => DATA <= x"8E"; + when x"47A" => DATA <= x"00"; + when x"47B" => DATA <= x"10"; + when x"47C" => DATA <= x"BD"; + when x"47D" => DATA <= x"FC"; + when x"47E" => DATA <= x"BB"; + when x"47F" => DATA <= x"30"; + when x"480" => DATA <= x"1E"; + when x"481" => DATA <= x"35"; + when x"482" => DATA <= x"A2"; + when x"483" => DATA <= x"34"; + when x"484" => DATA <= x"22"; + when x"485" => DATA <= x"86"; + when x"486" => DATA <= x"16"; + when x"487" => DATA <= x"BD"; + when x"488" => DATA <= x"FC"; + when x"489" => DATA <= x"DE"; + when x"48A" => DATA <= x"10"; + when x"48B" => DATA <= x"8E"; + when x"48C" => DATA <= x"00"; + when x"48D" => DATA <= x"0D"; + when x"48E" => DATA <= x"BD"; + when x"48F" => DATA <= x"FC"; + when x"490" => DATA <= x"AB"; + when x"491" => DATA <= x"35"; + when x"492" => DATA <= x"02"; + when x"493" => DATA <= x"BD"; + when x"494" => DATA <= x"FC"; + when x"495" => DATA <= x"DE"; + when x"496" => DATA <= x"10"; + when x"497" => DATA <= x"8E"; + when x"498" => DATA <= x"00"; + when x"499" => DATA <= x"0D"; + when x"49A" => DATA <= x"BD"; + when x"49B" => DATA <= x"FC"; + when x"49C" => DATA <= x"BB"; + when x"49D" => DATA <= x"35"; + when x"49E" => DATA <= x"20"; + when x"49F" => DATA <= x"7E"; + when x"4A0" => DATA <= x"FA"; + when x"4A1" => DATA <= x"B0"; + when x"4A2" => DATA <= x"A6"; + when x"4A3" => DATA <= x"80"; + when x"4A4" => DATA <= x"8D"; + when x"4A5" => DATA <= x"38"; + when x"4A6" => DATA <= x"81"; + when x"4A7" => DATA <= x"0D"; + when x"4A8" => DATA <= x"26"; + when x"4A9" => DATA <= x"F8"; + when x"4AA" => DATA <= x"39"; + when x"4AB" => DATA <= x"34"; + when x"4AC" => DATA <= x"04"; + when x"4AD" => DATA <= x"1F"; + when x"4AE" => DATA <= x"20"; + when x"4AF" => DATA <= x"3A"; + when x"4B0" => DATA <= x"35"; + when x"4B1" => DATA <= x"04"; + when x"4B2" => DATA <= x"A6"; + when x"4B3" => DATA <= x"82"; + when x"4B4" => DATA <= x"8D"; + when x"4B5" => DATA <= x"28"; + when x"4B6" => DATA <= x"31"; + when x"4B7" => DATA <= x"3F"; + when x"4B8" => DATA <= x"26"; + when x"4B9" => DATA <= x"F8"; + when x"4BA" => DATA <= x"39"; + when x"4BB" => DATA <= x"34"; + when x"4BC" => DATA <= x"04"; + when x"4BD" => DATA <= x"1F"; + when x"4BE" => DATA <= x"20"; + when x"4BF" => DATA <= x"3A"; + when x"4C0" => DATA <= x"35"; + when x"4C1" => DATA <= x"04"; + when x"4C2" => DATA <= x"BD"; + when x"4C3" => DATA <= x"FA"; + when x"4C4" => DATA <= x"B4"; + when x"4C5" => DATA <= x"A7"; + when x"4C6" => DATA <= x"82"; + when x"4C7" => DATA <= x"31"; + when x"4C8" => DATA <= x"3F"; + when x"4C9" => DATA <= x"26"; + when x"4CA" => DATA <= x"F7"; + when x"4CB" => DATA <= x"39"; + when x"4CC" => DATA <= x"34"; + when x"4CD" => DATA <= x"02"; + when x"4CE" => DATA <= x"B6"; + when x"4CF" => DATA <= x"FE"; + when x"4D0" => DATA <= x"E0"; + when x"4D1" => DATA <= x"48"; + when x"4D2" => DATA <= x"2A"; + when x"4D3" => DATA <= x"FA"; + when x"4D4" => DATA <= x"35"; + when x"4D5" => DATA <= x"02"; + when x"4D6" => DATA <= x"B7"; + when x"4D7" => DATA <= x"FE"; + when x"4D8" => DATA <= x"E1"; + when x"4D9" => DATA <= x"39"; + when x"4DA" => DATA <= x"1F"; + when x"4DB" => DATA <= x"20"; + when x"4DC" => DATA <= x"1F"; + when x"4DD" => DATA <= x"98"; + when x"4DE" => DATA <= x"34"; + when x"4DF" => DATA <= x"02"; + when x"4E0" => DATA <= x"B6"; + when x"4E1" => DATA <= x"FE"; + when x"4E2" => DATA <= x"E2"; + when x"4E3" => DATA <= x"48"; + when x"4E4" => DATA <= x"2A"; + when x"4E5" => DATA <= x"FA"; + when x"4E6" => DATA <= x"35"; + when x"4E7" => DATA <= x"02"; + when x"4E8" => DATA <= x"B7"; + when x"4E9" => DATA <= x"FE"; + when x"4EA" => DATA <= x"E3"; + when x"4EB" => DATA <= x"39"; + when x"4EC" => DATA <= x"34"; + when x"4ED" => DATA <= x"02"; + when x"4EE" => DATA <= x"B6"; + when x"4EF" => DATA <= x"FE"; + when x"4F0" => DATA <= x"E6"; + when x"4F1" => DATA <= x"2B"; + when x"4F2" => DATA <= x"51"; + when x"4F3" => DATA <= x"B6"; + when x"4F4" => DATA <= x"FE"; + when x"4F5" => DATA <= x"E0"; + when x"4F6" => DATA <= x"2B"; + when x"4F7" => DATA <= x"06"; + when x"4F8" => DATA <= x"35"; + when x"4F9" => DATA <= x"02"; + when x"4FA" => DATA <= x"6E"; + when x"4FB" => DATA <= x"9F"; + when x"4FC" => DATA <= x"FF"; + when x"4FD" => DATA <= x"B1"; + when x"4FE" => DATA <= x"B6"; + when x"4FF" => DATA <= x"FE"; + when x"500" => DATA <= x"E1"; + when x"501" => DATA <= x"2B"; + when x"502" => DATA <= x"1B"; + when x"503" => DATA <= x"35"; + when x"504" => DATA <= x"02"; + when x"505" => DATA <= x"34"; + when x"506" => DATA <= x"76"; + when x"507" => DATA <= x"8D"; + when x"508" => DATA <= x"1C"; + when x"509" => DATA <= x"1F"; + when x"50A" => DATA <= x"89"; + when x"50B" => DATA <= x"4F"; + when x"50C" => DATA <= x"1F"; + when x"50D" => DATA <= x"02"; + when x"50E" => DATA <= x"8D"; + when x"50F" => DATA <= x"15"; + when x"510" => DATA <= x"1F"; + when x"511" => DATA <= x"89"; + when x"512" => DATA <= x"4F"; + when x"513" => DATA <= x"1F"; + when x"514" => DATA <= x"01"; + when x"515" => DATA <= x"8D"; + when x"516" => DATA <= x"0E"; + when x"517" => DATA <= x"AD"; + when x"518" => DATA <= x"9F"; + when x"519" => DATA <= x"FF"; + when x"51A" => DATA <= x"FC"; + when x"51B" => DATA <= x"35"; + when x"51C" => DATA <= x"76"; + when x"51D" => DATA <= x"3B"; + when x"51E" => DATA <= x"48"; + when x"51F" => DATA <= x"B7"; + when x"520" => DATA <= x"FF"; + when x"521" => DATA <= x"80"; + when x"522" => DATA <= x"35"; + when x"523" => DATA <= x"02"; + when x"524" => DATA <= x"3B"; + when x"525" => DATA <= x"B6"; + when x"526" => DATA <= x"FE"; + when x"527" => DATA <= x"E6"; + when x"528" => DATA <= x"2B"; + when x"529" => DATA <= x"02"; + when x"52A" => DATA <= x"8D"; + when x"52B" => DATA <= x"12"; + when x"52C" => DATA <= x"B6"; + when x"52D" => DATA <= x"FE"; + when x"52E" => DATA <= x"E0"; + when x"52F" => DATA <= x"2A"; + when x"530" => DATA <= x"F4"; + when x"531" => DATA <= x"B6"; + when x"532" => DATA <= x"FE"; + when x"533" => DATA <= x"E1"; + when x"534" => DATA <= x"39"; + when x"535" => DATA <= x"B6"; + when x"536" => DATA <= x"FE"; + when x"537" => DATA <= x"E6"; + when x"538" => DATA <= x"2A"; + when x"539" => DATA <= x"FB"; + when x"53A" => DATA <= x"B6"; + when x"53B" => DATA <= x"FE"; + when x"53C" => DATA <= x"E7"; + when x"53D" => DATA <= x"39"; + when x"53E" => DATA <= x"1C"; + when x"53F" => DATA <= x"7F"; + when x"540" => DATA <= x"34"; + when x"541" => DATA <= x"01"; + when x"542" => DATA <= x"34"; + when x"543" => DATA <= x"02"; + when x"544" => DATA <= x"35"; + when x"545" => DATA <= x"02"; + when x"546" => DATA <= x"34"; + when x"547" => DATA <= x"16"; + when x"548" => DATA <= x"B6"; + when x"549" => DATA <= x"FE"; + when x"54A" => DATA <= x"E7"; + when x"54B" => DATA <= x"2A"; + when x"54C" => DATA <= x"22"; + when x"54D" => DATA <= x"10"; + when x"54E" => DATA <= x"CE"; + when x"54F" => DATA <= x"FF"; + when x"550" => DATA <= x"80"; + when x"551" => DATA <= x"8E"; + when x"552" => DATA <= x"FF"; + when x"553" => DATA <= x"00"; + when x"554" => DATA <= x"BD"; + when x"555" => DATA <= x"FA"; + when x"556" => DATA <= x"B4"; + when x"557" => DATA <= x"86"; + when x"558" => DATA <= x"3F"; + when x"559" => DATA <= x"A7"; + when x"55A" => DATA <= x"80"; + when x"55B" => DATA <= x"BD"; + when x"55C" => DATA <= x"FA"; + when x"55D" => DATA <= x"B4"; + when x"55E" => DATA <= x"A7"; + when x"55F" => DATA <= x"80"; + when x"560" => DATA <= x"BD"; + when x"561" => DATA <= x"FA"; + when x"562" => DATA <= x"B4"; + when x"563" => DATA <= x"A7"; + when x"564" => DATA <= x"80"; + when x"565" => DATA <= x"26"; + when x"566" => DATA <= x"F9"; + when x"567" => DATA <= x"8E"; + when x"568" => DATA <= x"FF"; + when x"569" => DATA <= x"01"; + when x"56A" => DATA <= x"34"; + when x"56B" => DATA <= x"10"; + when x"56C" => DATA <= x"7E"; + when x"56D" => DATA <= x"FF"; + when x"56E" => DATA <= x"BC"; + when x"56F" => DATA <= x"34"; + when x"570" => DATA <= x"02"; + when x"571" => DATA <= x"8D"; + when x"572" => DATA <= x"C2"; + when x"573" => DATA <= x"35"; + when x"574" => DATA <= x"02"; + when x"575" => DATA <= x"81"; + when x"576" => DATA <= x"05"; + when x"577" => DATA <= x"26"; + when x"578" => DATA <= x"06"; + when x"579" => DATA <= x"7F"; + when x"57A" => DATA <= x"FF"; + when x"57B" => DATA <= x"94"; + when x"57C" => DATA <= x"35"; + when x"57D" => DATA <= x"16"; + when x"57E" => DATA <= x"3B"; + when x"57F" => DATA <= x"34"; + when x"580" => DATA <= x"02"; + when x"581" => DATA <= x"8D"; + when x"582" => DATA <= x"B2"; + when x"583" => DATA <= x"B7"; + when x"584" => DATA <= x"FF"; + when x"585" => DATA <= x"8C"; + when x"586" => DATA <= x"8D"; + when x"587" => DATA <= x"AD"; + when x"588" => DATA <= x"B7"; + when x"589" => DATA <= x"FF"; + when x"58A" => DATA <= x"8D"; + when x"58B" => DATA <= x"8D"; + when x"58C" => DATA <= x"A8"; + when x"58D" => DATA <= x"B7"; + when x"58E" => DATA <= x"FF"; + when x"58F" => DATA <= x"8E"; + when x"590" => DATA <= x"8D"; + when x"591" => DATA <= x"A3"; + when x"592" => DATA <= x"B7"; + when x"593" => DATA <= x"FF"; + when x"594" => DATA <= x"8F"; + when x"595" => DATA <= x"8D"; + when x"596" => DATA <= x"9E"; + when x"597" => DATA <= x"86"; + when x"598" => DATA <= x"FF"; + when x"599" => DATA <= x"B7"; + when x"59A" => DATA <= x"FF"; + when x"59B" => DATA <= x"94"; + when x"59C" => DATA <= x"1C"; + when x"59D" => DATA <= x"BF"; + when x"59E" => DATA <= x"BE"; + when x"59F" => DATA <= x"FF"; + when x"5A0" => DATA <= x"8E"; + when x"5A1" => DATA <= x"A6"; + when x"5A2" => DATA <= x"E0"; + when x"5A3" => DATA <= x"27"; + when x"5A4" => DATA <= x"6C"; + when x"5A5" => DATA <= x"81"; + when x"5A6" => DATA <= x"02"; + when x"5A7" => DATA <= x"25"; + when x"5A8" => DATA <= x"5B"; + when x"5A9" => DATA <= x"27"; + when x"5AA" => DATA <= x"49"; + when x"5AB" => DATA <= x"81"; + when x"5AC" => DATA <= x"04"; + when x"5AD" => DATA <= x"25"; + when x"5AE" => DATA <= x"35"; + when x"5AF" => DATA <= x"27"; + when x"5B0" => DATA <= x"6E"; + when x"5B1" => DATA <= x"5F"; + when x"5B2" => DATA <= x"81"; + when x"5B3" => DATA <= x"07"; + when x"5B4" => DATA <= x"25"; + when x"5B5" => DATA <= x"11"; + when x"5B6" => DATA <= x"26"; + when x"5B7" => DATA <= x"67"; + when x"5B8" => DATA <= x"B6"; + when x"5B9" => DATA <= x"FE"; + when x"5BA" => DATA <= x"E4"; + when x"5BB" => DATA <= x"2A"; + when x"5BC" => DATA <= x"FB"; + when x"5BD" => DATA <= x"B6"; + when x"5BE" => DATA <= x"FE"; + when x"5BF" => DATA <= x"E5"; + when x"5C0" => DATA <= x"A7"; + when x"5C1" => DATA <= x"85"; + when x"5C2" => DATA <= x"5C"; + when x"5C3" => DATA <= x"26"; + when x"5C4" => DATA <= x"F3"; + when x"5C5" => DATA <= x"20"; + when x"5C6" => DATA <= x"17"; + when x"5C7" => DATA <= x"B6"; + when x"5C8" => DATA <= x"FE"; + when x"5C9" => DATA <= x"E4"; + when x"5CA" => DATA <= x"48"; + when x"5CB" => DATA <= x"2A"; + when x"5CC" => DATA <= x"FA"; + when x"5CD" => DATA <= x"A6"; + when x"5CE" => DATA <= x"85"; + when x"5CF" => DATA <= x"B7"; + when x"5D0" => DATA <= x"FE"; + when x"5D1" => DATA <= x"E5"; + when x"5D2" => DATA <= x"5C"; + when x"5D3" => DATA <= x"26"; + when x"5D4" => DATA <= x"F2"; + when x"5D5" => DATA <= x"B6"; + when x"5D6" => DATA <= x"FE"; + when x"5D7" => DATA <= x"E4"; + when x"5D8" => DATA <= x"48"; + when x"5D9" => DATA <= x"2A"; + when x"5DA" => DATA <= x"FA"; + when x"5DB" => DATA <= x"B7"; + when x"5DC" => DATA <= x"FE"; + when x"5DD" => DATA <= x"E5"; + when x"5DE" => DATA <= x"30"; + when x"5DF" => DATA <= x"89"; + when x"5E0" => DATA <= x"01"; + when x"5E1" => DATA <= x"00"; + when x"5E2" => DATA <= x"20"; + when x"5E3" => DATA <= x"38"; + when x"5E4" => DATA <= x"13"; + when x"5E5" => DATA <= x"B6"; + when x"5E6" => DATA <= x"FE"; + when x"5E7" => DATA <= x"E5"; + when x"5E8" => DATA <= x"F6"; + when x"5E9" => DATA <= x"FE"; + when x"5EA" => DATA <= x"E5"; + when x"5EB" => DATA <= x"ED"; + when x"5EC" => DATA <= x"81"; + when x"5ED" => DATA <= x"B6"; + when x"5EE" => DATA <= x"FF"; + when x"5EF" => DATA <= x"94"; + when x"5F0" => DATA <= x"26"; + when x"5F1" => DATA <= x"F2"; + when x"5F2" => DATA <= x"20"; + when x"5F3" => DATA <= x"28"; + when x"5F4" => DATA <= x"13"; + when x"5F5" => DATA <= x"EC"; + when x"5F6" => DATA <= x"81"; + when x"5F7" => DATA <= x"B7"; + when x"5F8" => DATA <= x"FE"; + when x"5F9" => DATA <= x"E5"; + when x"5FA" => DATA <= x"F7"; + when x"5FB" => DATA <= x"FE"; + when x"5FC" => DATA <= x"E5"; + when x"5FD" => DATA <= x"B6"; + when x"5FE" => DATA <= x"FF"; + when x"5FF" => DATA <= x"94"; + when x"600" => DATA <= x"26"; + when x"601" => DATA <= x"F2"; + when x"602" => DATA <= x"20"; + when x"603" => DATA <= x"18"; + when x"604" => DATA <= x"13"; + when x"605" => DATA <= x"B6"; + when x"606" => DATA <= x"FE"; + when x"607" => DATA <= x"E5"; + when x"608" => DATA <= x"A7"; + when x"609" => DATA <= x"80"; + when x"60A" => DATA <= x"B6"; + when x"60B" => DATA <= x"FF"; + when x"60C" => DATA <= x"94"; + when x"60D" => DATA <= x"26"; + when x"60E" => DATA <= x"F5"; + when x"60F" => DATA <= x"20"; + when x"610" => DATA <= x"0B"; + when x"611" => DATA <= x"13"; + when x"612" => DATA <= x"A6"; + when x"613" => DATA <= x"80"; + when x"614" => DATA <= x"B7"; + when x"615" => DATA <= x"FE"; + when x"616" => DATA <= x"E5"; + when x"617" => DATA <= x"B6"; + when x"618" => DATA <= x"FF"; + when x"619" => DATA <= x"94"; + when x"61A" => DATA <= x"26"; + when x"61B" => DATA <= x"F5"; + when x"61C" => DATA <= x"BF"; + when x"61D" => DATA <= x"FF"; + when x"61E" => DATA <= x"8E"; + when x"61F" => DATA <= x"35"; + when x"620" => DATA <= x"16"; + when x"621" => DATA <= x"3B"; + when x"622" => DATA <= x"32"; + when x"623" => DATA <= x"6A"; + when x"624" => DATA <= x"35"; + when x"625" => DATA <= x"10"; + when x"626" => DATA <= x"BF"; + when x"627" => DATA <= x"FF"; + when x"628" => DATA <= x"82"; + when x"629" => DATA <= x"1C"; + when x"62A" => DATA <= x"00"; + when x"62B" => DATA <= x"6E"; + when x"62C" => DATA <= x"9F"; + when x"62D" => DATA <= x"FF"; + when x"62E" => DATA <= x"FA"; + when x"62F" => DATA <= x"FF"; + when x"630" => DATA <= x"FF"; + when x"631" => DATA <= x"FF"; + when x"632" => DATA <= x"FF"; + when x"633" => DATA <= x"FF"; + when x"634" => DATA <= x"FF"; + when x"635" => DATA <= x"FF"; + when x"636" => DATA <= x"FF"; + when x"637" => DATA <= x"FF"; + when x"638" => DATA <= x"FF"; + when x"639" => DATA <= x"FF"; + when x"63A" => DATA <= x"FF"; + when x"63B" => DATA <= x"FF"; + when x"63C" => DATA <= x"FF"; + when x"63D" => DATA <= x"FF"; + when x"63E" => DATA <= x"FF"; + when x"63F" => DATA <= x"FF"; + when x"640" => DATA <= x"FF"; + when x"641" => DATA <= x"FF"; + when x"642" => DATA <= x"FF"; + when x"643" => DATA <= x"FF"; + when x"644" => DATA <= x"FF"; + when x"645" => DATA <= x"FF"; + when x"646" => DATA <= x"FF"; + when x"647" => DATA <= x"FF"; + when x"648" => DATA <= x"FF"; + when x"649" => DATA <= x"FF"; + when x"64A" => DATA <= x"FF"; + when x"64B" => DATA <= x"FF"; + when x"64C" => DATA <= x"FF"; + when x"64D" => DATA <= x"FF"; + when x"64E" => DATA <= x"FF"; + when x"64F" => DATA <= x"FF"; + when x"650" => DATA <= x"FF"; + when x"651" => DATA <= x"FF"; + when x"652" => DATA <= x"FF"; + when x"653" => DATA <= x"FF"; + when x"654" => DATA <= x"FF"; + when x"655" => DATA <= x"FF"; + when x"656" => DATA <= x"FF"; + when x"657" => DATA <= x"FF"; + when x"658" => DATA <= x"FF"; + when x"659" => DATA <= x"FF"; + when x"65A" => DATA <= x"FF"; + when x"65B" => DATA <= x"FF"; + when x"65C" => DATA <= x"FF"; + when x"65D" => DATA <= x"FF"; + when x"65E" => DATA <= x"FF"; + when x"65F" => DATA <= x"FF"; + when x"660" => DATA <= x"FF"; + when x"661" => DATA <= x"FF"; + when x"662" => DATA <= x"FF"; + when x"663" => DATA <= x"FF"; + when x"664" => DATA <= x"FF"; + when x"665" => DATA <= x"FF"; + when x"666" => DATA <= x"FF"; + when x"667" => DATA <= x"FF"; + when x"668" => DATA <= x"FF"; + when x"669" => DATA <= x"FF"; + when x"66A" => DATA <= x"FF"; + when x"66B" => DATA <= x"FF"; + when x"66C" => DATA <= x"FF"; + when x"66D" => DATA <= x"FF"; + when x"66E" => DATA <= x"FF"; + when x"66F" => DATA <= x"FF"; + when x"670" => DATA <= x"FF"; + when x"671" => DATA <= x"FF"; + when x"672" => DATA <= x"FF"; + when x"673" => DATA <= x"FF"; + when x"674" => DATA <= x"FF"; + when x"675" => DATA <= x"FF"; + when x"676" => DATA <= x"FF"; + when x"677" => DATA <= x"FF"; + when x"678" => DATA <= x"FF"; + when x"679" => DATA <= x"FF"; + when x"67A" => DATA <= x"FF"; + when x"67B" => DATA <= x"FF"; + when x"67C" => DATA <= x"FF"; + when x"67D" => DATA <= x"FF"; + when x"67E" => DATA <= x"FF"; + when x"67F" => DATA <= x"FF"; + when x"680" => DATA <= x"FF"; + when x"681" => DATA <= x"FF"; + when x"682" => DATA <= x"FF"; + when x"683" => DATA <= x"FF"; + when x"684" => DATA <= x"FF"; + when x"685" => DATA <= x"FF"; + when x"686" => DATA <= x"FF"; + when x"687" => DATA <= x"FF"; + when x"688" => DATA <= x"FF"; + when x"689" => DATA <= x"FF"; + when x"68A" => DATA <= x"FF"; + when x"68B" => DATA <= x"FF"; + when x"68C" => DATA <= x"FF"; + when x"68D" => DATA <= x"FF"; + when x"68E" => DATA <= x"FF"; + when x"68F" => DATA <= x"FF"; + when x"690" => DATA <= x"FF"; + when x"691" => DATA <= x"FF"; + when x"692" => DATA <= x"FF"; + when x"693" => DATA <= x"FF"; + when x"694" => DATA <= x"FF"; + when x"695" => DATA <= x"FF"; + when x"696" => DATA <= x"FF"; + when x"697" => DATA <= x"FF"; + when x"698" => DATA <= x"FF"; + when x"699" => DATA <= x"FF"; + when x"69A" => DATA <= x"FF"; + when x"69B" => DATA <= x"FF"; + when x"69C" => DATA <= x"FF"; + when x"69D" => DATA <= x"FF"; + when x"69E" => DATA <= x"FF"; + when x"69F" => DATA <= x"FF"; + when x"6A0" => DATA <= x"FF"; + when x"6A1" => DATA <= x"FF"; + when x"6A2" => DATA <= x"FF"; + when x"6A3" => DATA <= x"FF"; + when x"6A4" => DATA <= x"FF"; + when x"6A5" => DATA <= x"FF"; + when x"6A6" => DATA <= x"FF"; + when x"6A7" => DATA <= x"FF"; + when x"6A8" => DATA <= x"FF"; + when x"6A9" => DATA <= x"FF"; + when x"6AA" => DATA <= x"FF"; + when x"6AB" => DATA <= x"FF"; + when x"6AC" => DATA <= x"FF"; + when x"6AD" => DATA <= x"FF"; + when x"6AE" => DATA <= x"FF"; + when x"6AF" => DATA <= x"FF"; + when x"6B0" => DATA <= x"FF"; + when x"6B1" => DATA <= x"FF"; + when x"6B2" => DATA <= x"FF"; + when x"6B3" => DATA <= x"FF"; + when x"6B4" => DATA <= x"FF"; + when x"6B5" => DATA <= x"FF"; + when x"6B6" => DATA <= x"FF"; + when x"6B7" => DATA <= x"FF"; + when x"6B8" => DATA <= x"FF"; + when x"6B9" => DATA <= x"FF"; + when x"6BA" => DATA <= x"FF"; + when x"6BB" => DATA <= x"FF"; + when x"6BC" => DATA <= x"FF"; + when x"6BD" => DATA <= x"FF"; + when x"6BE" => DATA <= x"FF"; + when x"6BF" => DATA <= x"FF"; + when x"6C0" => DATA <= x"FF"; + when x"6C1" => DATA <= x"FF"; + when x"6C2" => DATA <= x"FF"; + when x"6C3" => DATA <= x"FF"; + when x"6C4" => DATA <= x"FF"; + when x"6C5" => DATA <= x"FF"; + when x"6C6" => DATA <= x"FF"; + when x"6C7" => DATA <= x"FF"; + when x"6C8" => DATA <= x"FF"; + when x"6C9" => DATA <= x"FF"; + when x"6CA" => DATA <= x"FF"; + when x"6CB" => DATA <= x"FF"; + when x"6CC" => DATA <= x"FF"; + when x"6CD" => DATA <= x"FF"; + when x"6CE" => DATA <= x"FF"; + when x"6CF" => DATA <= x"FF"; + when x"6D0" => DATA <= x"FF"; + when x"6D1" => DATA <= x"FF"; + when x"6D2" => DATA <= x"FF"; + when x"6D3" => DATA <= x"FF"; + when x"6D4" => DATA <= x"FF"; + when x"6D5" => DATA <= x"FF"; + when x"6D6" => DATA <= x"FF"; + when x"6D7" => DATA <= x"FF"; + when x"6D8" => DATA <= x"FF"; + when x"6D9" => DATA <= x"FF"; + when x"6DA" => DATA <= x"FF"; + when x"6DB" => DATA <= x"FF"; + when x"6DC" => DATA <= x"FF"; + when x"6DD" => DATA <= x"FF"; + when x"6DE" => DATA <= x"FF"; + when x"6DF" => DATA <= x"FF"; + when x"6E0" => DATA <= x"00"; + when x"6E1" => DATA <= x"00"; + when x"6E2" => DATA <= x"00"; + when x"6E3" => DATA <= x"00"; + when x"6E4" => DATA <= x"00"; + when x"6E5" => DATA <= x"00"; + when x"6E6" => DATA <= x"00"; + when x"6E7" => DATA <= x"00"; + when x"6E8" => DATA <= x"FF"; + when x"6E9" => DATA <= x"FF"; + when x"6EA" => DATA <= x"FF"; + when x"6EB" => DATA <= x"FF"; + when x"6EC" => DATA <= x"FF"; + when x"6ED" => DATA <= x"FF"; + when x"6EE" => DATA <= x"FF"; + when x"6EF" => DATA <= x"FF"; + when x"6F0" => DATA <= x"FE"; + when x"6F1" => DATA <= x"21"; + when x"6F2" => DATA <= x"FE"; + when x"6F3" => DATA <= x"21"; + when x"6F4" => DATA <= x"FE"; + when x"6F5" => DATA <= x"21"; + when x"6F6" => DATA <= x"FC"; + when x"6F7" => DATA <= x"EC"; + when x"6F8" => DATA <= x"FE"; + when x"6F9" => DATA <= x"21"; + when x"6FA" => DATA <= x"FE"; + when x"6FB" => DATA <= x"22"; + when x"6FC" => DATA <= x"FE"; + when x"6FD" => DATA <= x"21"; + when x"6FE" => DATA <= x"F8"; + when x"6FF" => DATA <= x"2C"; + when x"700" => DATA <= x"00"; + when x"701" => DATA <= x"00"; + when x"702" => DATA <= x"00"; + when x"703" => DATA <= x"00"; + when x"704" => DATA <= x"00"; + when x"705" => DATA <= x"00"; + when x"706" => DATA <= x"00"; + when x"707" => DATA <= x"00"; + when x"708" => DATA <= x"00"; + when x"709" => DATA <= x"00"; + when x"70A" => DATA <= x"00"; + when x"70B" => DATA <= x"00"; + when x"70C" => DATA <= x"00"; + when x"70D" => DATA <= x"00"; + when x"70E" => DATA <= x"00"; + when x"70F" => DATA <= x"00"; + when x"710" => DATA <= x"00"; + when x"711" => DATA <= x"00"; + when x"712" => DATA <= x"00"; + when x"713" => DATA <= x"00"; + when x"714" => DATA <= x"00"; + when x"715" => DATA <= x"00"; + when x"716" => DATA <= x"00"; + when x"717" => DATA <= x"00"; + when x"718" => DATA <= x"00"; + when x"719" => DATA <= x"00"; + when x"71A" => DATA <= x"00"; + when x"71B" => DATA <= x"00"; + when x"71C" => DATA <= x"00"; + when x"71D" => DATA <= x"00"; + when x"71E" => DATA <= x"00"; + when x"71F" => DATA <= x"00"; + when x"720" => DATA <= x"00"; + when x"721" => DATA <= x"00"; + when x"722" => DATA <= x"00"; + when x"723" => DATA <= x"00"; + when x"724" => DATA <= x"00"; + when x"725" => DATA <= x"00"; + when x"726" => DATA <= x"00"; + when x"727" => DATA <= x"00"; + when x"728" => DATA <= x"00"; + when x"729" => DATA <= x"00"; + when x"72A" => DATA <= x"00"; + when x"72B" => DATA <= x"00"; + when x"72C" => DATA <= x"00"; + when x"72D" => DATA <= x"00"; + when x"72E" => DATA <= x"00"; + when x"72F" => DATA <= x"00"; + when x"730" => DATA <= x"00"; + when x"731" => DATA <= x"00"; + when x"732" => DATA <= x"00"; + when x"733" => DATA <= x"00"; + when x"734" => DATA <= x"00"; + when x"735" => DATA <= x"00"; + when x"736" => DATA <= x"00"; + when x"737" => DATA <= x"00"; + when x"738" => DATA <= x"00"; + when x"739" => DATA <= x"00"; + when x"73A" => DATA <= x"00"; + when x"73B" => DATA <= x"00"; + when x"73C" => DATA <= x"00"; + when x"73D" => DATA <= x"00"; + when x"73E" => DATA <= x"00"; + when x"73F" => DATA <= x"00"; + when x"740" => DATA <= x"00"; + when x"741" => DATA <= x"00"; + when x"742" => DATA <= x"00"; + when x"743" => DATA <= x"00"; + when x"744" => DATA <= x"00"; + when x"745" => DATA <= x"00"; + when x"746" => DATA <= x"00"; + when x"747" => DATA <= x"00"; + when x"748" => DATA <= x"00"; + when x"749" => DATA <= x"00"; + when x"74A" => DATA <= x"00"; + when x"74B" => DATA <= x"00"; + when x"74C" => DATA <= x"00"; + when x"74D" => DATA <= x"00"; + when x"74E" => DATA <= x"00"; + when x"74F" => DATA <= x"00"; + when x"750" => DATA <= x"00"; + when x"751" => DATA <= x"00"; + when x"752" => DATA <= x"00"; + when x"753" => DATA <= x"00"; + when x"754" => DATA <= x"00"; + when x"755" => DATA <= x"00"; + when x"756" => DATA <= x"00"; + when x"757" => DATA <= x"00"; + when x"758" => DATA <= x"00"; + when x"759" => DATA <= x"00"; + when x"75A" => DATA <= x"00"; + when x"75B" => DATA <= x"00"; + when x"75C" => DATA <= x"00"; + when x"75D" => DATA <= x"00"; + when x"75E" => DATA <= x"00"; + when x"75F" => DATA <= x"00"; + when x"760" => DATA <= x"00"; + when x"761" => DATA <= x"00"; + when x"762" => DATA <= x"00"; + when x"763" => DATA <= x"00"; + when x"764" => DATA <= x"00"; + when x"765" => DATA <= x"00"; + when x"766" => DATA <= x"00"; + when x"767" => DATA <= x"00"; + when x"768" => DATA <= x"00"; + when x"769" => DATA <= x"00"; + when x"76A" => DATA <= x"00"; + when x"76B" => DATA <= x"00"; + when x"76C" => DATA <= x"00"; + when x"76D" => DATA <= x"00"; + when x"76E" => DATA <= x"00"; + when x"76F" => DATA <= x"00"; + when x"770" => DATA <= x"00"; + when x"771" => DATA <= x"00"; + when x"772" => DATA <= x"00"; + when x"773" => DATA <= x"00"; + when x"774" => DATA <= x"00"; + when x"775" => DATA <= x"00"; + when x"776" => DATA <= x"00"; + when x"777" => DATA <= x"00"; + when x"778" => DATA <= x"00"; + when x"779" => DATA <= x"00"; + when x"77A" => DATA <= x"00"; + when x"77B" => DATA <= x"00"; + when x"77C" => DATA <= x"00"; + when x"77D" => DATA <= x"00"; + when x"77E" => DATA <= x"00"; + when x"77F" => DATA <= x"00"; + when x"780" => DATA <= x"00"; + when x"781" => DATA <= x"00"; + when x"782" => DATA <= x"F8"; + when x"783" => DATA <= x"16"; + when x"784" => DATA <= x"F8"; + when x"785" => DATA <= x"B0"; + when x"786" => DATA <= x"F8"; + when x"787" => DATA <= x"16"; + when x"788" => DATA <= x"00"; + when x"789" => DATA <= x"00"; + when x"78A" => DATA <= x"F8"; + when x"78B" => DATA <= x"00"; + when x"78C" => DATA <= x"00"; + when x"78D" => DATA <= x"00"; + when x"78E" => DATA <= x"00"; + when x"78F" => DATA <= x"00"; + when x"790" => DATA <= x"FF"; + when x"791" => DATA <= x"B9"; + when x"792" => DATA <= x"FF"; + when x"793" => DATA <= x"00"; + when x"794" => DATA <= x"00"; + when x"795" => DATA <= x"7E"; + when x"796" => DATA <= x"FA"; + when x"797" => DATA <= x"86"; + when x"798" => DATA <= x"7E"; + when x"799" => DATA <= x"F8"; + when x"79A" => DATA <= x"2C"; + when x"79B" => DATA <= x"7E"; + when x"79C" => DATA <= x"FA"; + when x"79D" => DATA <= x"86"; + when x"79E" => DATA <= x"7E"; + when x"79F" => DATA <= x"FA"; + when x"7A0" => DATA <= x"86"; + when x"7A1" => DATA <= x"7E"; + when x"7A2" => DATA <= x"F9"; + when x"7A3" => DATA <= x"3C"; + when x"7A4" => DATA <= x"7E"; + when x"7A5" => DATA <= x"FA"; + when x"7A6" => DATA <= x"86"; + when x"7A7" => DATA <= x"7E"; + when x"7A8" => DATA <= x"F8"; + when x"7A9" => DATA <= x"71"; + when x"7AA" => DATA <= x"7E"; + when x"7AB" => DATA <= x"F9"; + when x"7AC" => DATA <= x"11"; + when x"7AD" => DATA <= x"7E"; + when x"7AE" => DATA <= x"F9"; + when x"7AF" => DATA <= x"05"; + when x"7B0" => DATA <= x"7E"; + when x"7B1" => DATA <= x"FE"; + when x"7B2" => DATA <= x"21"; + when x"7B3" => DATA <= x"7E"; + when x"7B4" => DATA <= x"F9"; + when x"7B5" => DATA <= x"2C"; + when x"7B6" => DATA <= x"7E"; + when x"7B7" => DATA <= x"FA"; + when x"7B8" => DATA <= x"86"; + when x"7B9" => DATA <= x"7E"; + when x"7BA" => DATA <= x"F8"; + when x"7BB" => DATA <= x"71"; + when x"7BC" => DATA <= x"7E"; + when x"7BD" => DATA <= x"FE"; + when x"7BE" => DATA <= x"24"; + when x"7BF" => DATA <= x"7E"; + when x"7C0" => DATA <= x"F8"; + when x"7C1" => DATA <= x"D2"; + when x"7C2" => DATA <= x"7E"; + when x"7C3" => DATA <= x"FA"; + when x"7C4" => DATA <= x"86"; + when x"7C5" => DATA <= x"7E"; + when x"7C6" => DATA <= x"F9"; + when x"7C7" => DATA <= x"33"; + when x"7C8" => DATA <= x"7E"; + when x"7C9" => DATA <= x"FA"; + when x"7CA" => DATA <= x"86"; + when x"7CB" => DATA <= x"7E"; + when x"7CC" => DATA <= x"FA"; + when x"7CD" => DATA <= x"86"; + when x"7CE" => DATA <= x"7E"; + when x"7CF" => DATA <= x"FC"; + when x"7D0" => DATA <= x"33"; + when x"7D1" => DATA <= x"7E"; + when x"7D2" => DATA <= x"FC"; + when x"7D3" => DATA <= x"83"; + when x"7D4" => DATA <= x"7E"; + when x"7D5" => DATA <= x"FC"; + when x"7D6" => DATA <= x"1D"; + when x"7D7" => DATA <= x"7E"; + when x"7D8" => DATA <= x"FC"; + when x"7D9" => DATA <= x"0E"; + when x"7DA" => DATA <= x"7E"; + when x"7DB" => DATA <= x"FB"; + when x"7DC" => DATA <= x"EA"; + when x"7DD" => DATA <= x"7E"; + when x"7DE" => DATA <= x"FC"; + when x"7DF" => DATA <= x"53"; + when x"7E0" => DATA <= x"7E"; + when x"7E1" => DATA <= x"FA"; + when x"7E2" => DATA <= x"AC"; + when x"7E3" => DATA <= x"81"; + when x"7E4" => DATA <= x"0D"; + when x"7E5" => DATA <= x"26"; + when x"7E6" => DATA <= x"07"; + when x"7E7" => DATA <= x"86"; + when x"7E8" => DATA <= x"0A"; + when x"7E9" => DATA <= x"BD"; + when x"7EA" => DATA <= x"FF"; + when x"7EB" => DATA <= x"EE"; + when x"7EC" => DATA <= x"86"; + when x"7ED" => DATA <= x"0D"; + when x"7EE" => DATA <= x"7E"; + when x"7EF" => DATA <= x"FC"; + when x"7F0" => DATA <= x"CC"; + when x"7F1" => DATA <= x"7E"; + when x"7F2" => DATA <= x"FB"; + when x"7F3" => DATA <= x"33"; + when x"7F4" => DATA <= x"7E"; + when x"7F5" => DATA <= x"FA"; + when x"7F6" => DATA <= x"BD"; + when x"7F7" => DATA <= x"7E"; + when x"7F8" => DATA <= x"F9"; + when x"7F9" => DATA <= x"76"; + when x"7FA" => DATA <= x"F8"; + when x"7FB" => DATA <= x"B0"; + when x"7FC" => DATA <= x"FA"; + when x"7FD" => DATA <= x"86"; + when x"7FE" => DATA <= x"F8"; + when x"7FF" => DATA <= x"2C"; + when others => DATA <= (others => '0'); + end case; + end process; +end RTL; diff --git a/src/ROM/tuberom_6809.vhd b/src/ROM/tuberom_6809.vhd index 035824e..19137a2 100644 --- a/src/ROM/tuberom_6809.vhd +++ b/src/ROM/tuberom_6809.vhd @@ -28,27 +28,27 @@ begin DATA <= (others => '0'); case rom_addr is when x"000" => DATA <= x"F8"; - when x"001" => DATA <= x"2B"; + when x"001" => DATA <= x"2C"; when x"002" => DATA <= x"F8"; - when x"003" => DATA <= x"70"; + when x"003" => DATA <= x"71"; when x"004" => DATA <= x"FF"; when x"005" => DATA <= x"E0"; when x"006" => DATA <= x"F8"; - when x"007" => DATA <= x"DF"; + when x"007" => DATA <= x"E0"; when x"008" => DATA <= x"F8"; - when x"009" => DATA <= x"F3"; + when x"009" => DATA <= x"F4"; when x"00A" => DATA <= x"FF"; when x"00B" => DATA <= x"EE"; when x"00C" => DATA <= x"F8"; - when x"00D" => DATA <= x"E8"; + when x"00D" => DATA <= x"E9"; when x"00E" => DATA <= x"FF"; when x"00F" => DATA <= x"E7"; when x"010" => DATA <= x"F8"; - when x"011" => DATA <= x"E5"; + when x"011" => DATA <= x"E6"; when x"012" => DATA <= x"F8"; - when x"013" => DATA <= x"DE"; + when x"013" => DATA <= x"DF"; when x"014" => DATA <= x"20"; - when x"015" => DATA <= x"5A"; + when x"015" => DATA <= x"5B"; when x"016" => DATA <= x"0D"; when x"017" => DATA <= x"36"; when x"018" => DATA <= x"38"; @@ -64,1552 +64,1552 @@ begin when x"022" => DATA <= x"34"; when x"023" => DATA <= x"4B"; when x"024" => DATA <= x"20"; - when x"025" => DATA <= x"30"; + when x"025" => DATA <= x"31"; when x"026" => DATA <= x"2E"; - when x"027" => DATA <= x"32"; - when x"028" => DATA <= x"35"; - when x"029" => DATA <= x"0D"; - when x"02A" => DATA <= x"00"; - when x"02B" => DATA <= x"1A"; - when x"02C" => DATA <= x"50"; - when x"02D" => DATA <= x"10"; - when x"02E" => DATA <= x"CE"; - when x"02F" => DATA <= x"F8"; - when x"030" => DATA <= x"00"; - when x"031" => DATA <= x"1F"; - when x"032" => DATA <= x"41"; - when x"033" => DATA <= x"EC"; - when x"034" => DATA <= x"84"; - when x"035" => DATA <= x"ED"; - when x"036" => DATA <= x"81"; - when x"037" => DATA <= x"8C"; - when x"038" => DATA <= x"FE"; - when x"039" => DATA <= x"C0"; - when x"03A" => DATA <= x"26"; - when x"03B" => DATA <= x"03"; - when x"03C" => DATA <= x"8E"; - when x"03D" => DATA <= x"FE"; - when x"03E" => DATA <= x"F0"; - when x"03F" => DATA <= x"8C"; - when x"040" => DATA <= x"FF"; - when x"041" => DATA <= x"8C"; - when x"042" => DATA <= x"26"; - when x"043" => DATA <= x"03"; - when x"044" => DATA <= x"8E"; - when x"045" => DATA <= x"FF"; - when x"046" => DATA <= x"94"; - when x"047" => DATA <= x"8C"; - when x"048" => DATA <= x"00"; + when x"027" => DATA <= x"30"; + when x"028" => DATA <= x"30"; + when x"029" => DATA <= x"20"; + when x"02A" => DATA <= x"0D"; + when x"02B" => DATA <= x"00"; + when x"02C" => DATA <= x"1A"; + when x"02D" => DATA <= x"50"; + when x"02E" => DATA <= x"10"; + when x"02F" => DATA <= x"CE"; + when x"030" => DATA <= x"F8"; + when x"031" => DATA <= x"00"; + when x"032" => DATA <= x"1F"; + when x"033" => DATA <= x"41"; + when x"034" => DATA <= x"EC"; + when x"035" => DATA <= x"84"; + when x"036" => DATA <= x"ED"; + when x"037" => DATA <= x"81"; + when x"038" => DATA <= x"8C"; + when x"039" => DATA <= x"FE"; + when x"03A" => DATA <= x"C0"; + when x"03B" => DATA <= x"26"; + when x"03C" => DATA <= x"03"; + when x"03D" => DATA <= x"8E"; + when x"03E" => DATA <= x"FE"; + when x"03F" => DATA <= x"F0"; + when x"040" => DATA <= x"8C"; + when x"041" => DATA <= x"FF"; + when x"042" => DATA <= x"8C"; + when x"043" => DATA <= x"26"; + when x"044" => DATA <= x"03"; + when x"045" => DATA <= x"8E"; + when x"046" => DATA <= x"FF"; + when x"047" => DATA <= x"94"; + when x"048" => DATA <= x"8C"; when x"049" => DATA <= x"00"; - when x"04A" => DATA <= x"26"; - when x"04B" => DATA <= x"E7"; - when x"04C" => DATA <= x"B6"; - when x"04D" => DATA <= x"FE"; - when x"04E" => DATA <= x"E0"; - when x"04F" => DATA <= x"1A"; - when x"050" => DATA <= x"50"; - when x"051" => DATA <= x"10"; - when x"052" => DATA <= x"CE"; - when x"053" => DATA <= x"FF"; - when x"054" => DATA <= x"28"; - when x"055" => DATA <= x"8D"; - when x"056" => DATA <= x"68"; - when x"057" => DATA <= x"BE"; - when x"058" => DATA <= x"FF"; - when x"059" => DATA <= x"90"; - when x"05A" => DATA <= x"BF"; - when x"05B" => DATA <= x"FF"; - when x"05C" => DATA <= x"8E"; - when x"05D" => DATA <= x"1C"; - when x"05E" => DATA <= x"00"; - when x"05F" => DATA <= x"8E"; - when x"060" => DATA <= x"F8"; - when x"061" => DATA <= x"16"; - when x"062" => DATA <= x"BD"; - when x"063" => DATA <= x"F9"; - when x"064" => DATA <= x"32"; - when x"065" => DATA <= x"BD"; - when x"066" => DATA <= x"FF"; - when x"067" => DATA <= x"E7"; - when x"068" => DATA <= x"4F"; - when x"069" => DATA <= x"BD"; - when x"06A" => DATA <= x"FF"; - when x"06B" => DATA <= x"EE"; - when x"06C" => DATA <= x"4F"; - when x"06D" => DATA <= x"BD"; - when x"06E" => DATA <= x"FA"; - when x"06F" => DATA <= x"29"; - when x"070" => DATA <= x"10"; - when x"071" => DATA <= x"CE"; - when x"072" => DATA <= x"FF"; - when x"073" => DATA <= x"28"; - when x"074" => DATA <= x"8D"; - when x"075" => DATA <= x"49"; - when x"076" => DATA <= x"10"; - when x"077" => DATA <= x"FE"; - when x"078" => DATA <= x"FF"; - when x"079" => DATA <= x"8A"; - when x"07A" => DATA <= x"8E"; - when x"07B" => DATA <= x"FF"; - when x"07C" => DATA <= x"B9"; - when x"07D" => DATA <= x"BF"; - when x"07E" => DATA <= x"FF"; - when x"07F" => DATA <= x"90"; - when x"080" => DATA <= x"1C"; - when x"081" => DATA <= x"00"; - when x"082" => DATA <= x"8E"; - when x"083" => DATA <= x"F8"; - when x"084" => DATA <= x"95"; - when x"085" => DATA <= x"BD"; - when x"086" => DATA <= x"F9"; - when x"087" => DATA <= x"32"; - when x"088" => DATA <= x"BD"; - when x"089" => DATA <= x"FF"; - when x"08A" => DATA <= x"F1"; - when x"08B" => DATA <= x"25"; - when x"08C" => DATA <= x"14"; - when x"08D" => DATA <= x"8E"; - when x"08E" => DATA <= x"FF"; - when x"08F" => DATA <= x"28"; - when x"090" => DATA <= x"BD"; - when x"091" => DATA <= x"FF"; - when x"092" => DATA <= x"F7"; - when x"093" => DATA <= x"20"; - when x"094" => DATA <= x"ED"; - when x"095" => DATA <= x"36"; - when x"096" => DATA <= x"38"; - when x"097" => DATA <= x"30"; - when x"098" => DATA <= x"39"; - when x"099" => DATA <= x"3E"; - when x"09A" => DATA <= x"2A"; - when x"09B" => DATA <= x"00"; - when x"09C" => DATA <= x"FF"; - when x"09D" => DATA <= x"28"; - when x"09E" => DATA <= x"57"; - when x"09F" => DATA <= x"20"; - when x"0A0" => DATA <= x"FF"; - when x"0A1" => DATA <= x"86"; - when x"0A2" => DATA <= x"7E"; - when x"0A3" => DATA <= x"BD"; - when x"0A4" => DATA <= x"FF"; - when x"0A5" => DATA <= x"F4"; - when x"0A6" => DATA <= x"3F"; - when x"0A7" => DATA <= x"11"; - when x"0A8" => DATA <= x"45"; - when x"0A9" => DATA <= x"73"; - when x"0AA" => DATA <= x"63"; - when x"0AB" => DATA <= x"61"; - when x"0AC" => DATA <= x"70"; - when x"0AD" => DATA <= x"65"; - when x"0AE" => DATA <= x"00"; - when x"0AF" => DATA <= x"10"; - when x"0B0" => DATA <= x"FE"; - when x"0B1" => DATA <= x"FF"; - when x"0B2" => DATA <= x"8A"; - when x"0B3" => DATA <= x"BD"; - when x"0B4" => DATA <= x"FF"; - when x"0B5" => DATA <= x"E7"; - when x"0B6" => DATA <= x"A6"; - when x"0B7" => DATA <= x"80"; - when x"0B8" => DATA <= x"8D"; - when x"0B9" => DATA <= x"78"; - when x"0BA" => DATA <= x"BD"; - when x"0BB" => DATA <= x"FF"; - when x"0BC" => DATA <= x"E7"; - when x"0BD" => DATA <= x"20"; - when x"0BE" => DATA <= x"C3"; - when x"0BF" => DATA <= x"CC"; - when x"0C0" => DATA <= x"00"; + when x"04A" => DATA <= x"00"; + when x"04B" => DATA <= x"26"; + when x"04C" => DATA <= x"E7"; + when x"04D" => DATA <= x"B6"; + when x"04E" => DATA <= x"FE"; + when x"04F" => DATA <= x"E0"; + when x"050" => DATA <= x"1A"; + when x"051" => DATA <= x"50"; + when x"052" => DATA <= x"10"; + when x"053" => DATA <= x"CE"; + when x"054" => DATA <= x"FF"; + when x"055" => DATA <= x"28"; + when x"056" => DATA <= x"8D"; + when x"057" => DATA <= x"68"; + when x"058" => DATA <= x"BE"; + when x"059" => DATA <= x"FF"; + when x"05A" => DATA <= x"90"; + when x"05B" => DATA <= x"BF"; + when x"05C" => DATA <= x"FF"; + when x"05D" => DATA <= x"8E"; + when x"05E" => DATA <= x"1C"; + when x"05F" => DATA <= x"00"; + when x"060" => DATA <= x"8E"; + when x"061" => DATA <= x"F8"; + when x"062" => DATA <= x"16"; + when x"063" => DATA <= x"BD"; + when x"064" => DATA <= x"F9"; + when x"065" => DATA <= x"33"; + when x"066" => DATA <= x"BD"; + when x"067" => DATA <= x"FF"; + when x"068" => DATA <= x"E7"; + when x"069" => DATA <= x"4F"; + when x"06A" => DATA <= x"BD"; + when x"06B" => DATA <= x"FF"; + when x"06C" => DATA <= x"EE"; + when x"06D" => DATA <= x"4F"; + when x"06E" => DATA <= x"BD"; + when x"06F" => DATA <= x"FA"; + when x"070" => DATA <= x"30"; + when x"071" => DATA <= x"10"; + when x"072" => DATA <= x"CE"; + when x"073" => DATA <= x"FF"; + when x"074" => DATA <= x"28"; + when x"075" => DATA <= x"8D"; + when x"076" => DATA <= x"49"; + when x"077" => DATA <= x"10"; + when x"078" => DATA <= x"FE"; + when x"079" => DATA <= x"FF"; + when x"07A" => DATA <= x"8A"; + when x"07B" => DATA <= x"8E"; + when x"07C" => DATA <= x"FF"; + when x"07D" => DATA <= x"B9"; + when x"07E" => DATA <= x"BF"; + when x"07F" => DATA <= x"FF"; + when x"080" => DATA <= x"90"; + when x"081" => DATA <= x"1C"; + when x"082" => DATA <= x"00"; + when x"083" => DATA <= x"8E"; + when x"084" => DATA <= x"F8"; + when x"085" => DATA <= x"96"; + when x"086" => DATA <= x"BD"; + when x"087" => DATA <= x"F9"; + when x"088" => DATA <= x"33"; + when x"089" => DATA <= x"BD"; + when x"08A" => DATA <= x"FF"; + when x"08B" => DATA <= x"F1"; + when x"08C" => DATA <= x"25"; + when x"08D" => DATA <= x"14"; + when x"08E" => DATA <= x"8E"; + when x"08F" => DATA <= x"FF"; + when x"090" => DATA <= x"28"; + when x"091" => DATA <= x"BD"; + when x"092" => DATA <= x"FF"; + when x"093" => DATA <= x"F7"; + when x"094" => DATA <= x"20"; + when x"095" => DATA <= x"ED"; + when x"096" => DATA <= x"36"; + when x"097" => DATA <= x"38"; + when x"098" => DATA <= x"30"; + when x"099" => DATA <= x"39"; + when x"09A" => DATA <= x"3E"; + when x"09B" => DATA <= x"2A"; + when x"09C" => DATA <= x"00"; + when x"09D" => DATA <= x"FF"; + when x"09E" => DATA <= x"28"; + when x"09F" => DATA <= x"57"; + when x"0A0" => DATA <= x"20"; + when x"0A1" => DATA <= x"FF"; + when x"0A2" => DATA <= x"86"; + when x"0A3" => DATA <= x"7E"; + when x"0A4" => DATA <= x"BD"; + when x"0A5" => DATA <= x"FF"; + when x"0A6" => DATA <= x"F4"; + when x"0A7" => DATA <= x"3F"; + when x"0A8" => DATA <= x"11"; + when x"0A9" => DATA <= x"45"; + when x"0AA" => DATA <= x"73"; + when x"0AB" => DATA <= x"63"; + when x"0AC" => DATA <= x"61"; + when x"0AD" => DATA <= x"70"; + when x"0AE" => DATA <= x"65"; + when x"0AF" => DATA <= x"00"; + when x"0B0" => DATA <= x"10"; + when x"0B1" => DATA <= x"FE"; + when x"0B2" => DATA <= x"FF"; + when x"0B3" => DATA <= x"8A"; + when x"0B4" => DATA <= x"BD"; + when x"0B5" => DATA <= x"FF"; + when x"0B6" => DATA <= x"E7"; + when x"0B7" => DATA <= x"A6"; + when x"0B8" => DATA <= x"80"; + when x"0B9" => DATA <= x"8D"; + when x"0BA" => DATA <= x"78"; + when x"0BB" => DATA <= x"BD"; + when x"0BC" => DATA <= x"FF"; + when x"0BD" => DATA <= x"E7"; + when x"0BE" => DATA <= x"20"; + when x"0BF" => DATA <= x"C3"; + when x"0C0" => DATA <= x"CC"; when x"0C1" => DATA <= x"00"; - when x"0C2" => DATA <= x"FD"; - when x"0C3" => DATA <= x"FF"; - when x"0C4" => DATA <= x"88"; - when x"0C5" => DATA <= x"CC"; - when x"0C6" => DATA <= x"F8"; - when x"0C7" => DATA <= x"00"; - when x"0C8" => DATA <= x"FD"; - when x"0C9" => DATA <= x"FF"; - when x"0CA" => DATA <= x"8A"; - when x"0CB" => DATA <= x"CC"; - when x"0CC" => DATA <= x"F8"; - when x"0CD" => DATA <= x"AF"; - when x"0CE" => DATA <= x"FD"; - when x"0CF" => DATA <= x"FF"; - when x"0D0" => DATA <= x"FA"; - when x"0D1" => DATA <= x"CC"; - when x"0D2" => DATA <= x"FE"; - when x"0D3" => DATA <= x"14"; - when x"0D4" => DATA <= x"FD"; - when x"0D5" => DATA <= x"FE"; - when x"0D6" => DATA <= x"FA"; - when x"0D7" => DATA <= x"8E"; - when x"0D8" => DATA <= x"FF"; - when x"0D9" => DATA <= x"FA"; - when x"0DA" => DATA <= x"10"; - when x"0DB" => DATA <= x"8E"; - when x"0DC" => DATA <= x"FF"; - when x"0DD" => DATA <= x"80"; - when x"0DE" => DATA <= x"39"; - when x"0DF" => DATA <= x"BD"; - when x"0E0" => DATA <= x"FF"; - when x"0E1" => DATA <= x"E0"; - when x"0E2" => DATA <= x"7E"; - when x"0E3" => DATA <= x"FF"; - when x"0E4" => DATA <= x"EE"; - when x"0E5" => DATA <= x"BD"; - when x"0E6" => DATA <= x"FF"; - when x"0E7" => DATA <= x"E7"; - when x"0E8" => DATA <= x"A6"; - when x"0E9" => DATA <= x"80"; - when x"0EA" => DATA <= x"81"; - when x"0EB" => DATA <= x"04"; - when x"0EC" => DATA <= x"27"; - when x"0ED" => DATA <= x"F0"; - when x"0EE" => DATA <= x"BD"; - when x"0EF" => DATA <= x"FF"; - when x"0F0" => DATA <= x"EE"; - when x"0F1" => DATA <= x"20"; - when x"0F2" => DATA <= x"F5"; - when x"0F3" => DATA <= x"34"; - when x"0F4" => DATA <= x"32"; - when x"0F5" => DATA <= x"86"; - when x"0F6" => DATA <= x"80"; - when x"0F7" => DATA <= x"8E"; - when x"0F8" => DATA <= x"FF"; + when x"0C2" => DATA <= x"00"; + when x"0C3" => DATA <= x"FD"; + when x"0C4" => DATA <= x"FF"; + when x"0C5" => DATA <= x"88"; + when x"0C6" => DATA <= x"CC"; + when x"0C7" => DATA <= x"F8"; + when x"0C8" => DATA <= x"00"; + when x"0C9" => DATA <= x"FD"; + when x"0CA" => DATA <= x"FF"; + when x"0CB" => DATA <= x"8A"; + when x"0CC" => DATA <= x"CC"; + when x"0CD" => DATA <= x"F8"; + when x"0CE" => DATA <= x"B0"; + when x"0CF" => DATA <= x"FD"; + when x"0D0" => DATA <= x"FF"; + when x"0D1" => DATA <= x"FA"; + when x"0D2" => DATA <= x"CC"; + when x"0D3" => DATA <= x"FE"; + when x"0D4" => DATA <= x"22"; + when x"0D5" => DATA <= x"FD"; + when x"0D6" => DATA <= x"FE"; + when x"0D7" => DATA <= x"FA"; + when x"0D8" => DATA <= x"8E"; + when x"0D9" => DATA <= x"FF"; + when x"0DA" => DATA <= x"FA"; + when x"0DB" => DATA <= x"10"; + when x"0DC" => DATA <= x"8E"; + when x"0DD" => DATA <= x"FF"; + when x"0DE" => DATA <= x"80"; + when x"0DF" => DATA <= x"39"; + when x"0E0" => DATA <= x"BD"; + when x"0E1" => DATA <= x"FF"; + when x"0E2" => DATA <= x"E0"; + when x"0E3" => DATA <= x"7E"; + when x"0E4" => DATA <= x"FF"; + when x"0E5" => DATA <= x"EE"; + when x"0E6" => DATA <= x"BD"; + when x"0E7" => DATA <= x"FF"; + when x"0E8" => DATA <= x"E7"; + when x"0E9" => DATA <= x"A6"; + when x"0EA" => DATA <= x"80"; + when x"0EB" => DATA <= x"81"; + when x"0EC" => DATA <= x"04"; + when x"0ED" => DATA <= x"27"; + when x"0EE" => DATA <= x"F0"; + when x"0EF" => DATA <= x"BD"; + when x"0F0" => DATA <= x"FF"; + when x"0F1" => DATA <= x"EE"; + when x"0F2" => DATA <= x"20"; + when x"0F3" => DATA <= x"F5"; + when x"0F4" => DATA <= x"34"; + when x"0F5" => DATA <= x"32"; + when x"0F6" => DATA <= x"86"; + when x"0F7" => DATA <= x"80"; + when x"0F8" => DATA <= x"8E"; when x"0F9" => DATA <= x"FF"; - when x"0FA" => DATA <= x"1F"; - when x"0FB" => DATA <= x"12"; - when x"0FC" => DATA <= x"BD"; - when x"0FD" => DATA <= x"FF"; - when x"0FE" => DATA <= x"F4"; - when x"0FF" => DATA <= x"8C"; - when x"100" => DATA <= x"00"; + when x"0FA" => DATA <= x"FF"; + when x"0FB" => DATA <= x"1F"; + when x"0FC" => DATA <= x"12"; + when x"0FD" => DATA <= x"BD"; + when x"0FE" => DATA <= x"FF"; + when x"0FF" => DATA <= x"F4"; + when x"100" => DATA <= x"8C"; when x"101" => DATA <= x"00"; - when x"102" => DATA <= x"35"; - when x"103" => DATA <= x"B2"; - when x"104" => DATA <= x"34"; - when x"105" => DATA <= x"06"; - when x"106" => DATA <= x"1F"; - when x"107" => DATA <= x"10"; - when x"108" => DATA <= x"8D"; - when x"109" => DATA <= x"06"; - when x"10A" => DATA <= x"1F"; - when x"10B" => DATA <= x"98"; - when x"10C" => DATA <= x"8D"; - when x"10D" => DATA <= x"02"; - when x"10E" => DATA <= x"35"; - when x"10F" => DATA <= x"86"; - when x"110" => DATA <= x"34"; - when x"111" => DATA <= x"02"; - when x"112" => DATA <= x"44"; + when x"102" => DATA <= x"00"; + when x"103" => DATA <= x"35"; + when x"104" => DATA <= x"B2"; + when x"105" => DATA <= x"34"; + when x"106" => DATA <= x"06"; + when x"107" => DATA <= x"1F"; + when x"108" => DATA <= x"10"; + when x"109" => DATA <= x"8D"; + when x"10A" => DATA <= x"06"; + when x"10B" => DATA <= x"1F"; + when x"10C" => DATA <= x"98"; + when x"10D" => DATA <= x"8D"; + when x"10E" => DATA <= x"02"; + when x"10F" => DATA <= x"35"; + when x"110" => DATA <= x"86"; + when x"111" => DATA <= x"34"; + when x"112" => DATA <= x"02"; when x"113" => DATA <= x"44"; when x"114" => DATA <= x"44"; when x"115" => DATA <= x"44"; - when x"116" => DATA <= x"8D"; - when x"117" => DATA <= x"06"; - when x"118" => DATA <= x"A6"; - when x"119" => DATA <= x"E4"; - when x"11A" => DATA <= x"8D"; - when x"11B" => DATA <= x"02"; - when x"11C" => DATA <= x"35"; - when x"11D" => DATA <= x"82"; - when x"11E" => DATA <= x"84"; - when x"11F" => DATA <= x"0F"; - when x"120" => DATA <= x"81"; - when x"121" => DATA <= x"0A"; - when x"122" => DATA <= x"25"; - when x"123" => DATA <= x"02"; - when x"124" => DATA <= x"8B"; - when x"125" => DATA <= x"07"; - when x"126" => DATA <= x"8B"; - when x"127" => DATA <= x"30"; - when x"128" => DATA <= x"7E"; - when x"129" => DATA <= x"FF"; - when x"12A" => DATA <= x"EE"; - when x"12B" => DATA <= x"35"; - when x"12C" => DATA <= x"10"; - when x"12D" => DATA <= x"8D"; - when x"12E" => DATA <= x"03"; - when x"12F" => DATA <= x"34"; - when x"130" => DATA <= x"10"; - when x"131" => DATA <= x"39"; - when x"132" => DATA <= x"A6"; - when x"133" => DATA <= x"80"; - when x"134" => DATA <= x"27"; - when x"135" => DATA <= x"FB"; - when x"136" => DATA <= x"BD"; - when x"137" => DATA <= x"FF"; - when x"138" => DATA <= x"E3"; - when x"139" => DATA <= x"20"; - when x"13A" => DATA <= x"F7"; - when x"13B" => DATA <= x"10"; - when x"13C" => DATA <= x"8E"; - when x"13D" => DATA <= x"00"; + when x"116" => DATA <= x"44"; + when x"117" => DATA <= x"8D"; + when x"118" => DATA <= x"06"; + when x"119" => DATA <= x"A6"; + when x"11A" => DATA <= x"E4"; + when x"11B" => DATA <= x"8D"; + when x"11C" => DATA <= x"02"; + when x"11D" => DATA <= x"35"; + when x"11E" => DATA <= x"82"; + when x"11F" => DATA <= x"84"; + when x"120" => DATA <= x"0F"; + when x"121" => DATA <= x"81"; + when x"122" => DATA <= x"0A"; + when x"123" => DATA <= x"25"; + when x"124" => DATA <= x"02"; + when x"125" => DATA <= x"8B"; + when x"126" => DATA <= x"07"; + when x"127" => DATA <= x"8B"; + when x"128" => DATA <= x"30"; + when x"129" => DATA <= x"7E"; + when x"12A" => DATA <= x"FF"; + when x"12B" => DATA <= x"EE"; + when x"12C" => DATA <= x"35"; + when x"12D" => DATA <= x"10"; + when x"12E" => DATA <= x"8D"; + when x"12F" => DATA <= x"03"; + when x"130" => DATA <= x"34"; + when x"131" => DATA <= x"10"; + when x"132" => DATA <= x"39"; + when x"133" => DATA <= x"A6"; + when x"134" => DATA <= x"80"; + when x"135" => DATA <= x"27"; + when x"136" => DATA <= x"FB"; + when x"137" => DATA <= x"BD"; + when x"138" => DATA <= x"FF"; + when x"139" => DATA <= x"E3"; + when x"13A" => DATA <= x"20"; + when x"13B" => DATA <= x"F7"; + when x"13C" => DATA <= x"10"; + when x"13D" => DATA <= x"8E"; when x"13E" => DATA <= x"00"; - when x"13F" => DATA <= x"A6"; - when x"140" => DATA <= x"80"; - when x"141" => DATA <= x"81"; - when x"142" => DATA <= x"30"; - when x"143" => DATA <= x"25"; - when x"144" => DATA <= x"2B"; - when x"145" => DATA <= x"81"; - when x"146" => DATA <= x"3A"; - when x"147" => DATA <= x"25"; - when x"148" => DATA <= x"0A"; - when x"149" => DATA <= x"84"; - when x"14A" => DATA <= x"DF"; - when x"14B" => DATA <= x"80"; - when x"14C" => DATA <= x"07"; - when x"14D" => DATA <= x"25"; - when x"14E" => DATA <= x"21"; - when x"14F" => DATA <= x"81"; - when x"150" => DATA <= x"40"; - when x"151" => DATA <= x"24"; - when x"152" => DATA <= x"1D"; - when x"153" => DATA <= x"84"; - when x"154" => DATA <= x"0F"; - when x"155" => DATA <= x"1E"; - when x"156" => DATA <= x"02"; - when x"157" => DATA <= x"58"; - when x"158" => DATA <= x"49"; - when x"159" => DATA <= x"58"; - when x"15A" => DATA <= x"49"; - when x"15B" => DATA <= x"58"; - when x"15C" => DATA <= x"49"; - when x"15D" => DATA <= x"58"; - when x"15E" => DATA <= x"49"; - when x"15F" => DATA <= x"1E"; - when x"160" => DATA <= x"12"; - when x"161" => DATA <= x"1E"; - when x"162" => DATA <= x"01"; - when x"163" => DATA <= x"1E"; - when x"164" => DATA <= x"89"; - when x"165" => DATA <= x"3A"; - when x"166" => DATA <= x"1E"; - when x"167" => DATA <= x"12"; - when x"168" => DATA <= x"20"; - when x"169" => DATA <= x"D5"; - when x"16A" => DATA <= x"A6"; - when x"16B" => DATA <= x"80"; - when x"16C" => DATA <= x"81"; - when x"16D" => DATA <= x"20"; - when x"16E" => DATA <= x"27"; - when x"16F" => DATA <= x"FA"; - when x"170" => DATA <= x"30"; - when x"171" => DATA <= x"1F"; - when x"172" => DATA <= x"81"; - when x"173" => DATA <= x"21"; - when x"174" => DATA <= x"39"; - when x"175" => DATA <= x"34"; - when x"176" => DATA <= x"7C"; - when x"177" => DATA <= x"10"; - when x"178" => DATA <= x"FF"; - when x"179" => DATA <= x"F9"; - when x"17A" => DATA <= x"83"; - when x"17B" => DATA <= x"10"; - when x"17C" => DATA <= x"CE"; - when x"17D" => DATA <= x"FF"; - when x"17E" => DATA <= x"28"; - when x"17F" => DATA <= x"8D"; - when x"180" => DATA <= x"0F"; - when x"181" => DATA <= x"10"; - when x"182" => DATA <= x"CE"; - when x"183" => DATA <= x"00"; - when x"184" => DATA <= x"00"; - when x"185" => DATA <= x"35"; - when x"186" => DATA <= x"FC"; - when x"187" => DATA <= x"48"; - when x"188" => DATA <= x"45"; - when x"189" => DATA <= x"4C"; - when x"18A" => DATA <= x"50"; - when x"18B" => DATA <= x"80"; - when x"18C" => DATA <= x"47"; - when x"18D" => DATA <= x"4F"; - when x"18E" => DATA <= x"81"; - when x"18F" => DATA <= x"00"; - when x"190" => DATA <= x"8D"; - when x"191" => DATA <= x"D8"; - when x"192" => DATA <= x"A6"; - when x"193" => DATA <= x"80"; - when x"194" => DATA <= x"81"; - when x"195" => DATA <= x"2A"; - when x"196" => DATA <= x"27"; - when x"197" => DATA <= x"F8"; - when x"198" => DATA <= x"30"; - when x"199" => DATA <= x"1F"; - when x"19A" => DATA <= x"34"; - when x"19B" => DATA <= x"10"; - when x"19C" => DATA <= x"A6"; - when x"19D" => DATA <= x"80"; - when x"19E" => DATA <= x"81"; - when x"19F" => DATA <= x"21"; - when x"1A0" => DATA <= x"24"; - when x"1A1" => DATA <= x"FA"; - when x"1A2" => DATA <= x"30"; - when x"1A3" => DATA <= x"1F"; - when x"1A4" => DATA <= x"8D"; - when x"1A5" => DATA <= x"C4"; - when x"1A6" => DATA <= x"BF"; - when x"1A7" => DATA <= x"FF"; - when x"1A8" => DATA <= x"86"; - when x"1A9" => DATA <= x"10"; - when x"1AA" => DATA <= x"8E"; - when x"1AB" => DATA <= x"F9"; - when x"1AC" => DATA <= x"87"; - when x"1AD" => DATA <= x"AE"; - when x"1AE" => DATA <= x"E4"; - when x"1AF" => DATA <= x"A6"; - when x"1B0" => DATA <= x"84"; - when x"1B1" => DATA <= x"81"; - when x"1B2" => DATA <= x"41"; - when x"1B3" => DATA <= x"25"; - when x"1B4" => DATA <= x"68"; - when x"1B5" => DATA <= x"A6"; - when x"1B6" => DATA <= x"80"; + when x"13F" => DATA <= x"00"; + when x"140" => DATA <= x"A6"; + when x"141" => DATA <= x"80"; + when x"142" => DATA <= x"81"; + when x"143" => DATA <= x"30"; + when x"144" => DATA <= x"25"; + when x"145" => DATA <= x"2B"; + when x"146" => DATA <= x"81"; + when x"147" => DATA <= x"3A"; + when x"148" => DATA <= x"25"; + when x"149" => DATA <= x"0A"; + when x"14A" => DATA <= x"84"; + when x"14B" => DATA <= x"DF"; + when x"14C" => DATA <= x"80"; + when x"14D" => DATA <= x"07"; + when x"14E" => DATA <= x"25"; + when x"14F" => DATA <= x"21"; + when x"150" => DATA <= x"81"; + when x"151" => DATA <= x"40"; + when x"152" => DATA <= x"24"; + when x"153" => DATA <= x"1D"; + when x"154" => DATA <= x"84"; + when x"155" => DATA <= x"0F"; + when x"156" => DATA <= x"1E"; + when x"157" => DATA <= x"02"; + when x"158" => DATA <= x"58"; + when x"159" => DATA <= x"49"; + when x"15A" => DATA <= x"58"; + when x"15B" => DATA <= x"49"; + when x"15C" => DATA <= x"58"; + when x"15D" => DATA <= x"49"; + when x"15E" => DATA <= x"58"; + when x"15F" => DATA <= x"49"; + when x"160" => DATA <= x"1E"; + when x"161" => DATA <= x"12"; + when x"162" => DATA <= x"1E"; + when x"163" => DATA <= x"01"; + when x"164" => DATA <= x"1E"; + when x"165" => DATA <= x"89"; + when x"166" => DATA <= x"3A"; + when x"167" => DATA <= x"1E"; + when x"168" => DATA <= x"12"; + when x"169" => DATA <= x"20"; + when x"16A" => DATA <= x"D5"; + when x"16B" => DATA <= x"A6"; + when x"16C" => DATA <= x"80"; + when x"16D" => DATA <= x"81"; + when x"16E" => DATA <= x"20"; + when x"16F" => DATA <= x"27"; + when x"170" => DATA <= x"FA"; + when x"171" => DATA <= x"30"; + when x"172" => DATA <= x"1F"; + when x"173" => DATA <= x"81"; + when x"174" => DATA <= x"21"; + when x"175" => DATA <= x"39"; + when x"176" => DATA <= x"34"; + when x"177" => DATA <= x"7C"; + when x"178" => DATA <= x"11"; + when x"179" => DATA <= x"8C"; + when x"17A" => DATA <= x"F8"; + when x"17B" => DATA <= x"00"; + when x"17C" => DATA <= x"24"; + when x"17D" => DATA <= x"08"; + when x"17E" => DATA <= x"10"; + when x"17F" => DATA <= x"FF"; + when x"180" => DATA <= x"F9"; + when x"181" => DATA <= x"8A"; + when x"182" => DATA <= x"10"; + when x"183" => DATA <= x"CE"; + when x"184" => DATA <= x"FF"; + when x"185" => DATA <= x"28"; + when x"186" => DATA <= x"8D"; + when x"187" => DATA <= x"0F"; + when x"188" => DATA <= x"10"; + when x"189" => DATA <= x"CE"; + when x"18A" => DATA <= x"00"; + when x"18B" => DATA <= x"00"; + when x"18C" => DATA <= x"35"; + when x"18D" => DATA <= x"FC"; + when x"18E" => DATA <= x"48"; + when x"18F" => DATA <= x"45"; + when x"190" => DATA <= x"4C"; + when x"191" => DATA <= x"50"; + when x"192" => DATA <= x"80"; + when x"193" => DATA <= x"47"; + when x"194" => DATA <= x"4F"; + when x"195" => DATA <= x"81"; + when x"196" => DATA <= x"00"; + when x"197" => DATA <= x"8D"; + when x"198" => DATA <= x"D2"; + when x"199" => DATA <= x"A6"; + when x"19A" => DATA <= x"80"; + when x"19B" => DATA <= x"81"; + when x"19C" => DATA <= x"2A"; + when x"19D" => DATA <= x"27"; + when x"19E" => DATA <= x"F8"; + when x"19F" => DATA <= x"30"; + when x"1A0" => DATA <= x"1F"; + when x"1A1" => DATA <= x"34"; + when x"1A2" => DATA <= x"10"; + when x"1A3" => DATA <= x"A6"; + when x"1A4" => DATA <= x"80"; + when x"1A5" => DATA <= x"81"; + when x"1A6" => DATA <= x"21"; + when x"1A7" => DATA <= x"24"; + when x"1A8" => DATA <= x"FA"; + when x"1A9" => DATA <= x"30"; + when x"1AA" => DATA <= x"1F"; + when x"1AB" => DATA <= x"8D"; + when x"1AC" => DATA <= x"BE"; + when x"1AD" => DATA <= x"BF"; + when x"1AE" => DATA <= x"FF"; + when x"1AF" => DATA <= x"86"; + when x"1B0" => DATA <= x"10"; + when x"1B1" => DATA <= x"8E"; + when x"1B2" => DATA <= x"F9"; + when x"1B3" => DATA <= x"8E"; + when x"1B4" => DATA <= x"AE"; + when x"1B5" => DATA <= x"E4"; + when x"1B6" => DATA <= x"A6"; when x"1B7" => DATA <= x"84"; - when x"1B8" => DATA <= x"DF"; - when x"1B9" => DATA <= x"A1"; - when x"1BA" => DATA <= x"A0"; - when x"1BB" => DATA <= x"27"; - when x"1BC" => DATA <= x"F8"; - when x"1BD" => DATA <= x"A6"; - when x"1BE" => DATA <= x"A2"; - when x"1BF" => DATA <= x"2B"; - when x"1C0" => DATA <= x"16"; - when x"1C1" => DATA <= x"A6"; - when x"1C2" => DATA <= x"1F"; - when x"1C3" => DATA <= x"81"; - when x"1C4" => DATA <= x"2E"; - when x"1C5" => DATA <= x"27"; - when x"1C6" => DATA <= x"0A"; - when x"1C7" => DATA <= x"A6"; - when x"1C8" => DATA <= x"A0"; - when x"1C9" => DATA <= x"2A"; - when x"1CA" => DATA <= x"FC"; - when x"1CB" => DATA <= x"A6"; - when x"1CC" => DATA <= x"A4"; - when x"1CD" => DATA <= x"26"; - when x"1CE" => DATA <= x"DE"; - when x"1CF" => DATA <= x"20"; - when x"1D0" => DATA <= x"4C"; - when x"1D1" => DATA <= x"A6"; - when x"1D2" => DATA <= x"A0"; - when x"1D3" => DATA <= x"2A"; - when x"1D4" => DATA <= x"FC"; - when x"1D5" => DATA <= x"20"; - when x"1D6" => DATA <= x"06"; - when x"1D7" => DATA <= x"E6"; - when x"1D8" => DATA <= x"82"; - when x"1D9" => DATA <= x"C1"; - when x"1DA" => DATA <= x"21"; - when x"1DB" => DATA <= x"24"; - when x"1DC" => DATA <= x"40"; - when x"1DD" => DATA <= x"81"; - when x"1DE" => DATA <= x"80"; - when x"1DF" => DATA <= x"27"; - when x"1E0" => DATA <= x"2D"; - when x"1E1" => DATA <= x"8D"; - when x"1E2" => DATA <= x"87"; - when x"1E3" => DATA <= x"10"; - when x"1E4" => DATA <= x"BE"; - when x"1E5" => DATA <= x"FF"; - when x"1E6" => DATA <= x"90"; - when x"1E7" => DATA <= x"81"; - when x"1E8" => DATA <= x"0D"; - when x"1E9" => DATA <= x"27"; - when x"1EA" => DATA <= x"18"; - when x"1EB" => DATA <= x"81"; - when x"1EC" => DATA <= x"3B"; - when x"1ED" => DATA <= x"27"; - when x"1EE" => DATA <= x"12"; - when x"1EF" => DATA <= x"BD"; - when x"1F0" => DATA <= x"FF"; - when x"1F1" => DATA <= x"9E"; - when x"1F2" => DATA <= x"24"; - when x"1F3" => DATA <= x"29"; - when x"1F4" => DATA <= x"BD"; - when x"1F5" => DATA <= x"F9"; - when x"1F6" => DATA <= x"6A"; - when x"1F7" => DATA <= x"81"; - when x"1F8" => DATA <= x"3B"; - when x"1F9" => DATA <= x"27"; - when x"1FA" => DATA <= x"06"; - when x"1FB" => DATA <= x"81"; - when x"1FC" => DATA <= x"0D"; - when x"1FD" => DATA <= x"26"; - when x"1FE" => DATA <= x"1E"; - when x"1FF" => DATA <= x"30"; - when x"200" => DATA <= x"1F"; - when x"201" => DATA <= x"30"; - when x"202" => DATA <= x"01"; - when x"203" => DATA <= x"BF"; - when x"204" => DATA <= x"FF"; - when x"205" => DATA <= x"86"; - when x"206" => DATA <= x"35"; - when x"207" => DATA <= x"10"; - when x"208" => DATA <= x"1F"; - when x"209" => DATA <= x"21"; - when x"20A" => DATA <= x"1A"; - when x"20B" => DATA <= x"01"; - when x"20C" => DATA <= x"20"; - when x"20D" => DATA <= x"23"; - when x"20E" => DATA <= x"BD"; - when x"20F" => DATA <= x"F9"; - when x"210" => DATA <= x"6A"; - when x"211" => DATA <= x"25"; - when x"212" => DATA <= x"04"; - when x"213" => DATA <= x"81"; - when x"214" => DATA <= x"2E"; - when x"215" => DATA <= x"26"; - when x"216" => DATA <= x"06"; - when x"217" => DATA <= x"8E"; - when x"218" => DATA <= x"F8"; - when x"219" => DATA <= x"16"; - when x"21A" => DATA <= x"BD"; - when x"21B" => DATA <= x"F9"; - when x"21C" => DATA <= x"32"; - when x"21D" => DATA <= x"35"; - when x"21E" => DATA <= x"10"; - when x"21F" => DATA <= x"86"; - when x"220" => DATA <= x"02"; + when x"1B8" => DATA <= x"81"; + when x"1B9" => DATA <= x"41"; + when x"1BA" => DATA <= x"25"; + when x"1BB" => DATA <= x"68"; + when x"1BC" => DATA <= x"A6"; + when x"1BD" => DATA <= x"80"; + when x"1BE" => DATA <= x"84"; + when x"1BF" => DATA <= x"DF"; + when x"1C0" => DATA <= x"A1"; + when x"1C1" => DATA <= x"A0"; + when x"1C2" => DATA <= x"27"; + when x"1C3" => DATA <= x"F8"; + when x"1C4" => DATA <= x"A6"; + when x"1C5" => DATA <= x"A2"; + when x"1C6" => DATA <= x"2B"; + when x"1C7" => DATA <= x"16"; + when x"1C8" => DATA <= x"A6"; + when x"1C9" => DATA <= x"1F"; + when x"1CA" => DATA <= x"81"; + when x"1CB" => DATA <= x"2E"; + when x"1CC" => DATA <= x"27"; + when x"1CD" => DATA <= x"0A"; + when x"1CE" => DATA <= x"A6"; + when x"1CF" => DATA <= x"A0"; + when x"1D0" => DATA <= x"2A"; + when x"1D1" => DATA <= x"FC"; + when x"1D2" => DATA <= x"A6"; + when x"1D3" => DATA <= x"A4"; + when x"1D4" => DATA <= x"26"; + when x"1D5" => DATA <= x"DE"; + when x"1D6" => DATA <= x"20"; + when x"1D7" => DATA <= x"4C"; + when x"1D8" => DATA <= x"A6"; + when x"1D9" => DATA <= x"A0"; + when x"1DA" => DATA <= x"2A"; + when x"1DB" => DATA <= x"FC"; + when x"1DC" => DATA <= x"20"; + when x"1DD" => DATA <= x"06"; + when x"1DE" => DATA <= x"E6"; + when x"1DF" => DATA <= x"82"; + when x"1E0" => DATA <= x"C1"; + when x"1E1" => DATA <= x"21"; + when x"1E2" => DATA <= x"24"; + when x"1E3" => DATA <= x"40"; + when x"1E4" => DATA <= x"81"; + when x"1E5" => DATA <= x"80"; + when x"1E6" => DATA <= x"27"; + when x"1E7" => DATA <= x"2D"; + when x"1E8" => DATA <= x"8D"; + when x"1E9" => DATA <= x"81"; + when x"1EA" => DATA <= x"10"; + when x"1EB" => DATA <= x"BE"; + when x"1EC" => DATA <= x"FF"; + when x"1ED" => DATA <= x"90"; + when x"1EE" => DATA <= x"81"; + when x"1EF" => DATA <= x"0D"; + when x"1F0" => DATA <= x"27"; + when x"1F1" => DATA <= x"18"; + when x"1F2" => DATA <= x"81"; + when x"1F3" => DATA <= x"3B"; + when x"1F4" => DATA <= x"27"; + when x"1F5" => DATA <= x"12"; + when x"1F6" => DATA <= x"BD"; + when x"1F7" => DATA <= x"FF"; + when x"1F8" => DATA <= x"A1"; + when x"1F9" => DATA <= x"24"; + when x"1FA" => DATA <= x"29"; + when x"1FB" => DATA <= x"BD"; + when x"1FC" => DATA <= x"F9"; + when x"1FD" => DATA <= x"6B"; + when x"1FE" => DATA <= x"81"; + when x"1FF" => DATA <= x"3B"; + when x"200" => DATA <= x"27"; + when x"201" => DATA <= x"06"; + when x"202" => DATA <= x"81"; + when x"203" => DATA <= x"0D"; + when x"204" => DATA <= x"26"; + when x"205" => DATA <= x"1E"; + when x"206" => DATA <= x"30"; + when x"207" => DATA <= x"1F"; + when x"208" => DATA <= x"30"; + when x"209" => DATA <= x"01"; + when x"20A" => DATA <= x"BF"; + when x"20B" => DATA <= x"FF"; + when x"20C" => DATA <= x"86"; + when x"20D" => DATA <= x"35"; + when x"20E" => DATA <= x"10"; + when x"20F" => DATA <= x"1F"; + when x"210" => DATA <= x"21"; + when x"211" => DATA <= x"1A"; + when x"212" => DATA <= x"01"; + when x"213" => DATA <= x"20"; + when x"214" => DATA <= x"23"; + when x"215" => DATA <= x"BD"; + when x"216" => DATA <= x"F9"; + when x"217" => DATA <= x"6B"; + when x"218" => DATA <= x"25"; + when x"219" => DATA <= x"04"; + when x"21A" => DATA <= x"81"; + when x"21B" => DATA <= x"2E"; + when x"21C" => DATA <= x"26"; + when x"21D" => DATA <= x"06"; + when x"21E" => DATA <= x"8E"; + when x"21F" => DATA <= x"F8"; + when x"220" => DATA <= x"16"; when x"221" => DATA <= x"BD"; - when x"222" => DATA <= x"FC"; - when x"223" => DATA <= x"D0"; - when x"224" => DATA <= x"BD"; - when x"225" => DATA <= x"FC"; - when x"226" => DATA <= x"94"; - when x"227" => DATA <= x"1A"; - when x"228" => DATA <= x"01"; - when x"229" => DATA <= x"BD"; - when x"22A" => DATA <= x"FA"; - when x"22B" => DATA <= x"AD"; - when x"22C" => DATA <= x"2A"; - when x"22D" => DATA <= x"51"; - when x"22E" => DATA <= x"BE"; - when x"22F" => DATA <= x"FF"; - when x"230" => DATA <= x"8E"; - when x"231" => DATA <= x"34"; - when x"232" => DATA <= x"01"; - when x"233" => DATA <= x"1F"; - when x"234" => DATA <= x"12"; - when x"235" => DATA <= x"E6"; - when x"236" => DATA <= x"07"; - when x"237" => DATA <= x"3A"; - when x"238" => DATA <= x"CE"; - when x"239" => DATA <= x"FA"; - when x"23A" => DATA <= x"8C"; - when x"23B" => DATA <= x"C6"; - when x"23C" => DATA <= x"04"; - when x"23D" => DATA <= x"A6"; - when x"23E" => DATA <= x"80"; - when x"23F" => DATA <= x"A1"; - when x"240" => DATA <= x"C2"; - when x"241" => DATA <= x"26"; - when x"242" => DATA <= x"3D"; - when x"243" => DATA <= x"5A"; - when x"244" => DATA <= x"26"; - when x"245" => DATA <= x"F7"; - when x"246" => DATA <= x"A6"; - when x"247" => DATA <= x"26"; - when x"248" => DATA <= x"48"; - when x"249" => DATA <= x"2A"; - when x"24A" => DATA <= x"41"; - when x"24B" => DATA <= x"84"; - when x"24C" => DATA <= x"1E"; - when x"24D" => DATA <= x"81"; - when x"24E" => DATA <= x"06"; - when x"24F" => DATA <= x"26"; - when x"250" => DATA <= x"3B"; - when x"251" => DATA <= x"30"; - when x"252" => DATA <= x"1C"; - when x"253" => DATA <= x"BF"; - when x"254" => DATA <= x"FF"; - when x"255" => DATA <= x"82"; - when x"256" => DATA <= x"FE"; - when x"257" => DATA <= x"FF"; - when x"258" => DATA <= x"90"; - when x"259" => DATA <= x"BE"; - when x"25A" => DATA <= x"FF"; - when x"25B" => DATA <= x"8A"; - when x"25C" => DATA <= x"35"; - when x"25D" => DATA <= x"02"; - when x"25E" => DATA <= x"34"; - when x"25F" => DATA <= x"50"; - when x"260" => DATA <= x"10"; - when x"261" => DATA <= x"8C"; - when x"262" => DATA <= x"80"; - when x"263" => DATA <= x"00"; - when x"264" => DATA <= x"25"; - when x"265" => DATA <= x"04"; - when x"266" => DATA <= x"10"; - when x"267" => DATA <= x"BF"; - when x"268" => DATA <= x"FF"; - when x"269" => DATA <= x"8A"; - when x"26A" => DATA <= x"46"; - when x"26B" => DATA <= x"10"; - when x"26C" => DATA <= x"BF"; - when x"26D" => DATA <= x"FF"; - when x"26E" => DATA <= x"90"; - when x"26F" => DATA <= x"BE"; - when x"270" => DATA <= x"FF"; - when x"271" => DATA <= x"86"; - when x"272" => DATA <= x"86"; - when x"273" => DATA <= x"01"; - when x"274" => DATA <= x"AD"; - when x"275" => DATA <= x"A4"; - when x"276" => DATA <= x"35"; - when x"277" => DATA <= x"60"; - when x"278" => DATA <= x"10"; - when x"279" => DATA <= x"BF"; - when x"27A" => DATA <= x"FF"; - when x"27B" => DATA <= x"8A"; - when x"27C" => DATA <= x"FF"; - when x"27D" => DATA <= x"FF"; - when x"27E" => DATA <= x"90"; - when x"27F" => DATA <= x"39"; - when x"280" => DATA <= x"BE"; + when x"222" => DATA <= x"F9"; + when x"223" => DATA <= x"33"; + when x"224" => DATA <= x"35"; + when x"225" => DATA <= x"10"; + when x"226" => DATA <= x"86"; + when x"227" => DATA <= x"02"; + when x"228" => DATA <= x"BD"; + when x"229" => DATA <= x"FC"; + when x"22A" => DATA <= x"DE"; + when x"22B" => DATA <= x"BD"; + when x"22C" => DATA <= x"FC"; + when x"22D" => DATA <= x"A2"; + when x"22E" => DATA <= x"1A"; + when x"22F" => DATA <= x"01"; + when x"230" => DATA <= x"BD"; + when x"231" => DATA <= x"FA"; + when x"232" => DATA <= x"B4"; + when x"233" => DATA <= x"2A"; + when x"234" => DATA <= x"51"; + when x"235" => DATA <= x"BE"; + when x"236" => DATA <= x"FF"; + when x"237" => DATA <= x"8E"; + when x"238" => DATA <= x"34"; + when x"239" => DATA <= x"01"; + when x"23A" => DATA <= x"1F"; + when x"23B" => DATA <= x"12"; + when x"23C" => DATA <= x"E6"; + when x"23D" => DATA <= x"07"; + when x"23E" => DATA <= x"3A"; + when x"23F" => DATA <= x"CE"; + when x"240" => DATA <= x"FA"; + when x"241" => DATA <= x"93"; + when x"242" => DATA <= x"C6"; + when x"243" => DATA <= x"04"; + when x"244" => DATA <= x"A6"; + when x"245" => DATA <= x"80"; + when x"246" => DATA <= x"A1"; + when x"247" => DATA <= x"C2"; + when x"248" => DATA <= x"26"; + when x"249" => DATA <= x"3D"; + when x"24A" => DATA <= x"5A"; + when x"24B" => DATA <= x"26"; + when x"24C" => DATA <= x"F7"; + when x"24D" => DATA <= x"A6"; + when x"24E" => DATA <= x"26"; + when x"24F" => DATA <= x"48"; + when x"250" => DATA <= x"2A"; + when x"251" => DATA <= x"41"; + when x"252" => DATA <= x"84"; + when x"253" => DATA <= x"1E"; + when x"254" => DATA <= x"81"; + when x"255" => DATA <= x"06"; + when x"256" => DATA <= x"26"; + when x"257" => DATA <= x"3B"; + when x"258" => DATA <= x"30"; + when x"259" => DATA <= x"1C"; + when x"25A" => DATA <= x"BF"; + when x"25B" => DATA <= x"FF"; + when x"25C" => DATA <= x"82"; + when x"25D" => DATA <= x"FE"; + when x"25E" => DATA <= x"FF"; + when x"25F" => DATA <= x"90"; + when x"260" => DATA <= x"BE"; + when x"261" => DATA <= x"FF"; + when x"262" => DATA <= x"8A"; + when x"263" => DATA <= x"35"; + when x"264" => DATA <= x"02"; + when x"265" => DATA <= x"34"; + when x"266" => DATA <= x"50"; + when x"267" => DATA <= x"10"; + when x"268" => DATA <= x"8C"; + when x"269" => DATA <= x"80"; + when x"26A" => DATA <= x"00"; + when x"26B" => DATA <= x"25"; + when x"26C" => DATA <= x"04"; + when x"26D" => DATA <= x"10"; + when x"26E" => DATA <= x"BF"; + when x"26F" => DATA <= x"FF"; + when x"270" => DATA <= x"8A"; + when x"271" => DATA <= x"46"; + when x"272" => DATA <= x"10"; + when x"273" => DATA <= x"BF"; + when x"274" => DATA <= x"FF"; + when x"275" => DATA <= x"90"; + when x"276" => DATA <= x"BE"; + when x"277" => DATA <= x"FF"; + when x"278" => DATA <= x"86"; + when x"279" => DATA <= x"86"; + when x"27A" => DATA <= x"01"; + when x"27B" => DATA <= x"AD"; + when x"27C" => DATA <= x"A4"; + when x"27D" => DATA <= x"35"; + when x"27E" => DATA <= x"60"; + when x"27F" => DATA <= x"10"; + when x"280" => DATA <= x"BF"; when x"281" => DATA <= x"FF"; - when x"282" => DATA <= x"86"; - when x"283" => DATA <= x"4F"; - when x"284" => DATA <= x"35"; - when x"285" => DATA <= x"01"; - when x"286" => DATA <= x"6E"; - when x"287" => DATA <= x"A4"; - when x"288" => DATA <= x"29"; - when x"289" => DATA <= x"43"; - when x"28A" => DATA <= x"28"; - when x"28B" => DATA <= x"00"; - when x"28C" => DATA <= x"35"; - when x"28D" => DATA <= x"01"; - when x"28E" => DATA <= x"10"; - when x"28F" => DATA <= x"24"; - when x"290" => DATA <= x"05"; - when x"291" => DATA <= x"27"; - when x"292" => DATA <= x"BD"; - when x"293" => DATA <= x"F8"; - when x"294" => DATA <= x"CB"; - when x"295" => DATA <= x"3F"; - when x"296" => DATA <= x"F9"; - when x"297" => DATA <= x"4E"; - when x"298" => DATA <= x"6F"; - when x"299" => DATA <= x"74"; - when x"29A" => DATA <= x"20"; - when x"29B" => DATA <= x"36"; - when x"29C" => DATA <= x"38"; - when x"29D" => DATA <= x"30"; - when x"29E" => DATA <= x"39"; - when x"29F" => DATA <= x"20"; - when x"2A0" => DATA <= x"63"; - when x"2A1" => DATA <= x"6F"; - when x"2A2" => DATA <= x"64"; - when x"2A3" => DATA <= x"65"; - when x"2A4" => DATA <= x"00"; - when x"2A5" => DATA <= x"4F"; - when x"2A6" => DATA <= x"BD"; - when x"2A7" => DATA <= x"FC"; - when x"2A8" => DATA <= x"D0"; - when x"2A9" => DATA <= x"8D"; - when x"2AA" => DATA <= x"02"; - when x"2AB" => DATA <= x"8B"; - when x"2AC" => DATA <= x"80"; - when x"2AD" => DATA <= x"B6"; - when x"2AE" => DATA <= x"FE"; - when x"2AF" => DATA <= x"E2"; - when x"2B0" => DATA <= x"2A"; - when x"2B1" => DATA <= x"FB"; - when x"2B2" => DATA <= x"B6"; - when x"2B3" => DATA <= x"FE"; - when x"2B4" => DATA <= x"E3"; - when x"2B5" => DATA <= x"39"; - when x"2B6" => DATA <= x"34"; - when x"2B7" => DATA <= x"06"; - when x"2B8" => DATA <= x"4D"; - when x"2B9" => DATA <= x"2B"; - when x"2BA" => DATA <= x"1A"; - when x"2BB" => DATA <= x"86"; - when x"2BC" => DATA <= x"04"; - when x"2BD" => DATA <= x"BD"; - when x"2BE" => DATA <= x"FC"; - when x"2BF" => DATA <= x"D0"; - when x"2C0" => DATA <= x"1F"; - when x"2C1" => DATA <= x"10"; - when x"2C2" => DATA <= x"BD"; - when x"2C3" => DATA <= x"FC"; - when x"2C4" => DATA <= x"CE"; - when x"2C5" => DATA <= x"35"; - when x"2C6" => DATA <= x"06"; - when x"2C7" => DATA <= x"34"; - when x"2C8" => DATA <= x"06"; + when x"282" => DATA <= x"8A"; + when x"283" => DATA <= x"FF"; + when x"284" => DATA <= x"FF"; + when x"285" => DATA <= x"90"; + when x"286" => DATA <= x"39"; + when x"287" => DATA <= x"BE"; + when x"288" => DATA <= x"FF"; + when x"289" => DATA <= x"86"; + when x"28A" => DATA <= x"4F"; + when x"28B" => DATA <= x"35"; + when x"28C" => DATA <= x"01"; + when x"28D" => DATA <= x"6E"; + when x"28E" => DATA <= x"A4"; + when x"28F" => DATA <= x"29"; + when x"290" => DATA <= x"43"; + when x"291" => DATA <= x"28"; + when x"292" => DATA <= x"00"; + when x"293" => DATA <= x"35"; + when x"294" => DATA <= x"01"; + when x"295" => DATA <= x"10"; + when x"296" => DATA <= x"24"; + when x"297" => DATA <= x"05"; + when x"298" => DATA <= x"20"; + when x"299" => DATA <= x"BD"; + when x"29A" => DATA <= x"F8"; + when x"29B" => DATA <= x"CC"; + when x"29C" => DATA <= x"3F"; + when x"29D" => DATA <= x"F9"; + when x"29E" => DATA <= x"4E"; + when x"29F" => DATA <= x"6F"; + when x"2A0" => DATA <= x"74"; + when x"2A1" => DATA <= x"20"; + when x"2A2" => DATA <= x"36"; + when x"2A3" => DATA <= x"38"; + when x"2A4" => DATA <= x"30"; + when x"2A5" => DATA <= x"39"; + when x"2A6" => DATA <= x"20"; + when x"2A7" => DATA <= x"63"; + when x"2A8" => DATA <= x"6F"; + when x"2A9" => DATA <= x"64"; + when x"2AA" => DATA <= x"65"; + when x"2AB" => DATA <= x"00"; + when x"2AC" => DATA <= x"4F"; + when x"2AD" => DATA <= x"BD"; + when x"2AE" => DATA <= x"FC"; + when x"2AF" => DATA <= x"DE"; + when x"2B0" => DATA <= x"8D"; + when x"2B1" => DATA <= x"02"; + when x"2B2" => DATA <= x"8B"; + when x"2B3" => DATA <= x"80"; + when x"2B4" => DATA <= x"B6"; + when x"2B5" => DATA <= x"FE"; + when x"2B6" => DATA <= x"E2"; + when x"2B7" => DATA <= x"2A"; + when x"2B8" => DATA <= x"FB"; + when x"2B9" => DATA <= x"B6"; + when x"2BA" => DATA <= x"FE"; + when x"2BB" => DATA <= x"E3"; + when x"2BC" => DATA <= x"39"; + when x"2BD" => DATA <= x"34"; + when x"2BE" => DATA <= x"06"; + when x"2BF" => DATA <= x"4D"; + when x"2C0" => DATA <= x"2B"; + when x"2C1" => DATA <= x"23"; + when x"2C2" => DATA <= x"86"; + when x"2C3" => DATA <= x"04"; + when x"2C4" => DATA <= x"BD"; + when x"2C5" => DATA <= x"FC"; + when x"2C6" => DATA <= x"DE"; + when x"2C7" => DATA <= x"1F"; + when x"2C8" => DATA <= x"10"; when x"2C9" => DATA <= x"BD"; when x"2CA" => DATA <= x"FC"; - when x"2CB" => DATA <= x"D0"; - when x"2CC" => DATA <= x"8D"; - when x"2CD" => DATA <= x"DF"; - when x"2CE" => DATA <= x"1F"; - when x"2CF" => DATA <= x"89"; - when x"2D0" => DATA <= x"4F"; - when x"2D1" => DATA <= x"1F"; - when x"2D2" => DATA <= x"01"; - when x"2D3" => DATA <= x"35"; - when x"2D4" => DATA <= x"86"; - when x"2D5" => DATA <= x"81"; - when x"2D6" => DATA <= x"82"; - when x"2D7" => DATA <= x"27"; - when x"2D8" => DATA <= x"3B"; - when x"2D9" => DATA <= x"81"; - when x"2DA" => DATA <= x"83"; - when x"2DB" => DATA <= x"27"; - when x"2DC" => DATA <= x"39"; - when x"2DD" => DATA <= x"81"; - when x"2DE" => DATA <= x"84"; - when x"2DF" => DATA <= x"27"; - when x"2E0" => DATA <= x"35"; + when x"2CB" => DATA <= x"DC"; + when x"2CC" => DATA <= x"35"; + when x"2CD" => DATA <= x"06"; + when x"2CE" => DATA <= x"34"; + when x"2CF" => DATA <= x"06"; + when x"2D0" => DATA <= x"BD"; + when x"2D1" => DATA <= x"FC"; + when x"2D2" => DATA <= x"DE"; + when x"2D3" => DATA <= x"8D"; + when x"2D4" => DATA <= x"DF"; + when x"2D5" => DATA <= x"1F"; + when x"2D6" => DATA <= x"89"; + when x"2D7" => DATA <= x"4F"; + when x"2D8" => DATA <= x"1F"; + when x"2D9" => DATA <= x"01"; + when x"2DA" => DATA <= x"35"; + when x"2DB" => DATA <= x"86"; + when x"2DC" => DATA <= x"8E"; + when x"2DD" => DATA <= x"F8"; + when x"2DE" => DATA <= x"16"; + when x"2DF" => DATA <= x"BF"; + when x"2E0" => DATA <= x"FF"; when x"2E1" => DATA <= x"86"; - when x"2E2" => DATA <= x"06"; - when x"2E3" => DATA <= x"BD"; - when x"2E4" => DATA <= x"FC"; - when x"2E5" => DATA <= x"D0"; - when x"2E6" => DATA <= x"1F"; - when x"2E7" => DATA <= x"10"; - when x"2E8" => DATA <= x"BD"; - when x"2E9" => DATA <= x"FC"; - when x"2EA" => DATA <= x"CE"; - when x"2EB" => DATA <= x"BD"; - when x"2EC" => DATA <= x"FC"; - when x"2ED" => DATA <= x"CC"; - when x"2EE" => DATA <= x"35"; - when x"2EF" => DATA <= x"06"; - when x"2F0" => DATA <= x"BD"; - when x"2F1" => DATA <= x"FC"; - when x"2F2" => DATA <= x"D0"; - when x"2F3" => DATA <= x"81"; - when x"2F4" => DATA <= x"9D"; - when x"2F5" => DATA <= x"27"; - when x"2F6" => DATA <= x"BE"; - when x"2F7" => DATA <= x"81"; - when x"2F8" => DATA <= x"8E"; - when x"2F9" => DATA <= x"10"; - when x"2FA" => DATA <= x"27"; - when x"2FB" => DATA <= x"FF"; - when x"2FC" => DATA <= x"2A"; - when x"2FD" => DATA <= x"34"; - when x"2FE" => DATA <= x"06"; - when x"2FF" => DATA <= x"8D"; - when x"300" => DATA <= x"AC"; - when x"301" => DATA <= x"8B"; - when x"302" => DATA <= x"80"; - when x"303" => DATA <= x"34"; - when x"304" => DATA <= x"01"; - when x"305" => DATA <= x"8D"; - when x"306" => DATA <= x"A6"; - when x"307" => DATA <= x"1F"; - when x"308" => DATA <= x"89"; - when x"309" => DATA <= x"4F"; - when x"30A" => DATA <= x"1F"; - when x"30B" => DATA <= x"02"; - when x"30C" => DATA <= x"8D"; - when x"30D" => DATA <= x"9F"; - when x"30E" => DATA <= x"1E"; - when x"30F" => DATA <= x"89"; - when x"310" => DATA <= x"1F"; - when x"311" => DATA <= x"01"; - when x"312" => DATA <= x"35"; - when x"313" => DATA <= x"87"; - when x"314" => DATA <= x"86"; - when x"315" => DATA <= x"85"; - when x"316" => DATA <= x"48"; - when x"317" => DATA <= x"8E"; - when x"318" => DATA <= x"FF"; - when x"319" => DATA <= x"82"; - when x"31A" => DATA <= x"EC"; - when x"31B" => DATA <= x"84"; - when x"31C" => DATA <= x"1F"; - when x"31D" => DATA <= x"01"; + when x"2E2" => DATA <= x"7E"; + when x"2E3" => DATA <= x"FA"; + when x"2E4" => DATA <= x"2E"; + when x"2E5" => DATA <= x"81"; + when x"2E6" => DATA <= x"82"; + when x"2E7" => DATA <= x"27"; + when x"2E8" => DATA <= x"39"; + when x"2E9" => DATA <= x"81"; + when x"2EA" => DATA <= x"83"; + when x"2EB" => DATA <= x"27"; + when x"2EC" => DATA <= x"37"; + when x"2ED" => DATA <= x"81"; + when x"2EE" => DATA <= x"84"; + when x"2EF" => DATA <= x"27"; + when x"2F0" => DATA <= x"33"; + when x"2F1" => DATA <= x"86"; + when x"2F2" => DATA <= x"06"; + when x"2F3" => DATA <= x"BD"; + when x"2F4" => DATA <= x"FC"; + when x"2F5" => DATA <= x"DE"; + when x"2F6" => DATA <= x"1F"; + when x"2F7" => DATA <= x"10"; + when x"2F8" => DATA <= x"BD"; + when x"2F9" => DATA <= x"FC"; + when x"2FA" => DATA <= x"DC"; + when x"2FB" => DATA <= x"BD"; + when x"2FC" => DATA <= x"FC"; + when x"2FD" => DATA <= x"DA"; + when x"2FE" => DATA <= x"35"; + when x"2FF" => DATA <= x"06"; + when x"300" => DATA <= x"BD"; + when x"301" => DATA <= x"FC"; + when x"302" => DATA <= x"DE"; + when x"303" => DATA <= x"81"; + when x"304" => DATA <= x"9D"; + when x"305" => DATA <= x"27"; + when x"306" => DATA <= x"B5"; + when x"307" => DATA <= x"81"; + when x"308" => DATA <= x"8E"; + when x"309" => DATA <= x"27"; + when x"30A" => DATA <= x"D1"; + when x"30B" => DATA <= x"34"; + when x"30C" => DATA <= x"06"; + when x"30D" => DATA <= x"8D"; + when x"30E" => DATA <= x"A5"; + when x"30F" => DATA <= x"8B"; + when x"310" => DATA <= x"80"; + when x"311" => DATA <= x"34"; + when x"312" => DATA <= x"01"; + when x"313" => DATA <= x"8D"; + when x"314" => DATA <= x"9F"; + when x"315" => DATA <= x"1F"; + when x"316" => DATA <= x"89"; + when x"317" => DATA <= x"4F"; + when x"318" => DATA <= x"1F"; + when x"319" => DATA <= x"02"; + when x"31A" => DATA <= x"8D"; + when x"31B" => DATA <= x"98"; + when x"31C" => DATA <= x"1E"; + when x"31D" => DATA <= x"89"; when x"31E" => DATA <= x"1F"; - when x"31F" => DATA <= x"89"; - when x"320" => DATA <= x"4F"; - when x"321" => DATA <= x"1F"; - when x"322" => DATA <= x"02"; - when x"323" => DATA <= x"35"; - when x"324" => DATA <= x"86"; - when x"325" => DATA <= x"4D"; - when x"326" => DATA <= x"27"; - when x"327" => DATA <= x"5C"; - when x"328" => DATA <= x"34"; - when x"329" => DATA <= x"26"; - when x"32A" => DATA <= x"34"; - when x"32B" => DATA <= x"10"; + when x"31F" => DATA <= x"01"; + when x"320" => DATA <= x"35"; + when x"321" => DATA <= x"87"; + when x"322" => DATA <= x"86"; + when x"323" => DATA <= x"85"; + when x"324" => DATA <= x"48"; + when x"325" => DATA <= x"8E"; + when x"326" => DATA <= x"FF"; + when x"327" => DATA <= x"82"; + when x"328" => DATA <= x"EC"; + when x"329" => DATA <= x"84"; + when x"32A" => DATA <= x"1F"; + when x"32B" => DATA <= x"01"; when x"32C" => DATA <= x"1F"; when x"32D" => DATA <= x"89"; - when x"32E" => DATA <= x"86"; - when x"32F" => DATA <= x"08"; - when x"330" => DATA <= x"BD"; - when x"331" => DATA <= x"FC"; - when x"332" => DATA <= x"D0"; - when x"333" => DATA <= x"BD"; - when x"334" => DATA <= x"FC"; - when x"335" => DATA <= x"CE"; - when x"336" => DATA <= x"5D"; - when x"337" => DATA <= x"2A"; - when x"338" => DATA <= x"04"; - when x"339" => DATA <= x"A6"; - when x"33A" => DATA <= x"84"; - when x"33B" => DATA <= x"20"; - when x"33C" => DATA <= x"0C"; - when x"33D" => DATA <= x"86"; - when x"33E" => DATA <= x"10"; - when x"33F" => DATA <= x"C1"; - when x"340" => DATA <= x"15"; - when x"341" => DATA <= x"24"; - when x"342" => DATA <= x"06"; - when x"343" => DATA <= x"8E"; - when x"344" => DATA <= x"FB"; - when x"345" => DATA <= x"B3"; - when x"346" => DATA <= x"3A"; + when x"32E" => DATA <= x"4F"; + when x"32F" => DATA <= x"1F"; + when x"330" => DATA <= x"02"; + when x"331" => DATA <= x"35"; + when x"332" => DATA <= x"86"; + when x"333" => DATA <= x"4D"; + when x"334" => DATA <= x"27"; + when x"335" => DATA <= x"5C"; + when x"336" => DATA <= x"34"; + when x"337" => DATA <= x"26"; + when x"338" => DATA <= x"34"; + when x"339" => DATA <= x"10"; + when x"33A" => DATA <= x"1F"; + when x"33B" => DATA <= x"89"; + when x"33C" => DATA <= x"86"; + when x"33D" => DATA <= x"08"; + when x"33E" => DATA <= x"BD"; + when x"33F" => DATA <= x"FC"; + when x"340" => DATA <= x"DE"; + when x"341" => DATA <= x"BD"; + when x"342" => DATA <= x"FC"; + when x"343" => DATA <= x"DC"; + when x"344" => DATA <= x"5D"; + when x"345" => DATA <= x"2A"; + when x"346" => DATA <= x"04"; when x"347" => DATA <= x"A6"; when x"348" => DATA <= x"84"; - when x"349" => DATA <= x"35"; - when x"34A" => DATA <= x"10"; - when x"34B" => DATA <= x"BD"; - when x"34C" => DATA <= x"FC"; - when x"34D" => DATA <= x"D0"; - when x"34E" => DATA <= x"1F"; - when x"34F" => DATA <= x"02"; - when x"350" => DATA <= x"1E"; - when x"351" => DATA <= x"89"; - when x"352" => DATA <= x"4F"; - when x"353" => DATA <= x"1E"; - when x"354" => DATA <= x"02"; - when x"355" => DATA <= x"4A"; - when x"356" => DATA <= x"2B"; - when x"357" => DATA <= x"03"; - when x"358" => DATA <= x"BD"; - when x"359" => DATA <= x"FC"; - when x"35A" => DATA <= x"9D"; - when x"35B" => DATA <= x"34"; - when x"35C" => DATA <= x"10"; - when x"35D" => DATA <= x"5D"; - when x"35E" => DATA <= x"2A"; - when x"35F" => DATA <= x"04"; - when x"360" => DATA <= x"A6"; - when x"361" => DATA <= x"01"; - when x"362" => DATA <= x"20"; - when x"363" => DATA <= x"0C"; - when x"364" => DATA <= x"86"; - when x"365" => DATA <= x"10"; - when x"366" => DATA <= x"C1"; - when x"367" => DATA <= x"15"; - when x"368" => DATA <= x"24"; - when x"369" => DATA <= x"06"; - when x"36A" => DATA <= x"8E"; - when x"36B" => DATA <= x"FB"; - when x"36C" => DATA <= x"C7"; - when x"36D" => DATA <= x"3A"; + when x"349" => DATA <= x"20"; + when x"34A" => DATA <= x"0C"; + when x"34B" => DATA <= x"86"; + when x"34C" => DATA <= x"10"; + when x"34D" => DATA <= x"C1"; + when x"34E" => DATA <= x"15"; + when x"34F" => DATA <= x"24"; + when x"350" => DATA <= x"06"; + when x"351" => DATA <= x"8E"; + when x"352" => DATA <= x"FB"; + when x"353" => DATA <= x"C1"; + when x"354" => DATA <= x"3A"; + when x"355" => DATA <= x"A6"; + when x"356" => DATA <= x"84"; + when x"357" => DATA <= x"35"; + when x"358" => DATA <= x"10"; + when x"359" => DATA <= x"BD"; + when x"35A" => DATA <= x"FC"; + when x"35B" => DATA <= x"DE"; + when x"35C" => DATA <= x"1F"; + when x"35D" => DATA <= x"02"; + when x"35E" => DATA <= x"1E"; + when x"35F" => DATA <= x"89"; + when x"360" => DATA <= x"4F"; + when x"361" => DATA <= x"1E"; + when x"362" => DATA <= x"02"; + when x"363" => DATA <= x"4A"; + when x"364" => DATA <= x"2B"; + when x"365" => DATA <= x"03"; + when x"366" => DATA <= x"BD"; + when x"367" => DATA <= x"FC"; + when x"368" => DATA <= x"AB"; + when x"369" => DATA <= x"34"; + when x"36A" => DATA <= x"10"; + when x"36B" => DATA <= x"5D"; + when x"36C" => DATA <= x"2A"; + when x"36D" => DATA <= x"04"; when x"36E" => DATA <= x"A6"; - when x"36F" => DATA <= x"84"; - when x"370" => DATA <= x"35"; - when x"371" => DATA <= x"10"; - when x"372" => DATA <= x"BD"; - when x"373" => DATA <= x"FC"; - when x"374" => DATA <= x"D0"; - when x"375" => DATA <= x"1F"; - when x"376" => DATA <= x"02"; - when x"377" => DATA <= x"1E"; - when x"378" => DATA <= x"89"; - when x"379" => DATA <= x"4F"; - when x"37A" => DATA <= x"1E"; - when x"37B" => DATA <= x"02"; - when x"37C" => DATA <= x"4A"; - when x"37D" => DATA <= x"2B"; - when x"37E" => DATA <= x"03"; - when x"37F" => DATA <= x"BD"; - when x"380" => DATA <= x"FC"; - when x"381" => DATA <= x"AD"; - when x"382" => DATA <= x"35"; - when x"383" => DATA <= x"A6"; - when x"384" => DATA <= x"86"; - when x"385" => DATA <= x"0A"; - when x"386" => DATA <= x"BD"; - when x"387" => DATA <= x"FC"; - when x"388" => DATA <= x"D0"; - when x"389" => DATA <= x"30"; - when x"38A" => DATA <= x"02"; - when x"38B" => DATA <= x"10"; - when x"38C" => DATA <= x"8E"; - when x"38D" => DATA <= x"00"; - when x"38E" => DATA <= x"03"; - when x"38F" => DATA <= x"BD"; - when x"390" => DATA <= x"FC"; - when x"391" => DATA <= x"9D"; - when x"392" => DATA <= x"30"; - when x"393" => DATA <= x"1E"; - when x"394" => DATA <= x"86"; - when x"395" => DATA <= x"07"; - when x"396" => DATA <= x"BD"; - when x"397" => DATA <= x"FC"; - when x"398" => DATA <= x"D0"; - when x"399" => DATA <= x"4F"; - when x"39A" => DATA <= x"BD"; - when x"39B" => DATA <= x"FC"; - when x"39C" => DATA <= x"D0"; + when x"36F" => DATA <= x"01"; + when x"370" => DATA <= x"20"; + when x"371" => DATA <= x"0C"; + when x"372" => DATA <= x"86"; + when x"373" => DATA <= x"10"; + when x"374" => DATA <= x"C1"; + when x"375" => DATA <= x"15"; + when x"376" => DATA <= x"24"; + when x"377" => DATA <= x"06"; + when x"378" => DATA <= x"8E"; + when x"379" => DATA <= x"FB"; + when x"37A" => DATA <= x"D5"; + when x"37B" => DATA <= x"3A"; + when x"37C" => DATA <= x"A6"; + when x"37D" => DATA <= x"84"; + when x"37E" => DATA <= x"35"; + when x"37F" => DATA <= x"10"; + when x"380" => DATA <= x"BD"; + when x"381" => DATA <= x"FC"; + when x"382" => DATA <= x"DE"; + when x"383" => DATA <= x"1F"; + when x"384" => DATA <= x"02"; + when x"385" => DATA <= x"1E"; + when x"386" => DATA <= x"89"; + when x"387" => DATA <= x"4F"; + when x"388" => DATA <= x"1E"; + when x"389" => DATA <= x"02"; + when x"38A" => DATA <= x"4A"; + when x"38B" => DATA <= x"2B"; + when x"38C" => DATA <= x"03"; + when x"38D" => DATA <= x"BD"; + when x"38E" => DATA <= x"FC"; + when x"38F" => DATA <= x"BB"; + when x"390" => DATA <= x"35"; + when x"391" => DATA <= x"A6"; + when x"392" => DATA <= x"86"; + when x"393" => DATA <= x"0A"; + when x"394" => DATA <= x"BD"; + when x"395" => DATA <= x"FC"; + when x"396" => DATA <= x"DE"; + when x"397" => DATA <= x"30"; + when x"398" => DATA <= x"02"; + when x"399" => DATA <= x"10"; + when x"39A" => DATA <= x"8E"; + when x"39B" => DATA <= x"00"; + when x"39C" => DATA <= x"03"; when x"39D" => DATA <= x"BD"; - when x"39E" => DATA <= x"FA"; - when x"39F" => DATA <= x"AD"; - when x"3A0" => DATA <= x"8B"; - when x"3A1" => DATA <= x"80"; - when x"3A2" => DATA <= x"25"; - when x"3A3" => DATA <= x"0F"; - when x"3A4" => DATA <= x"AE"; - when x"3A5" => DATA <= x"84"; - when x"3A6" => DATA <= x"BD"; - when x"3A7" => DATA <= x"FA"; - when x"3A8" => DATA <= x"AD"; - when x"3A9" => DATA <= x"A7"; - when x"3AA" => DATA <= x"80"; - when x"3AB" => DATA <= x"31"; - when x"3AC" => DATA <= x"21"; - when x"3AD" => DATA <= x"81"; - when x"3AE" => DATA <= x"0D"; - when x"3AF" => DATA <= x"26"; - when x"3B0" => DATA <= x"F5"; - when x"3B1" => DATA <= x"31"; - when x"3B2" => DATA <= x"3F"; - when x"3B3" => DATA <= x"39"; - when x"3B4" => DATA <= x"00"; - when x"3B5" => DATA <= x"05"; - when x"3B6" => DATA <= x"00"; - when x"3B7" => DATA <= x"05"; - when x"3B8" => DATA <= x"04"; - when x"3B9" => DATA <= x"05"; - when x"3BA" => DATA <= x"08"; - when x"3BB" => DATA <= x"0E"; - when x"3BC" => DATA <= x"04"; - when x"3BD" => DATA <= x"01"; - when x"3BE" => DATA <= x"01"; - when x"3BF" => DATA <= x"05"; - when x"3C0" => DATA <= x"00"; - when x"3C1" => DATA <= x"10"; - when x"3C2" => DATA <= x"20"; - when x"3C3" => DATA <= x"10"; - when x"3C4" => DATA <= x"0D"; - when x"3C5" => DATA <= x"00"; + when x"39E" => DATA <= x"FC"; + when x"39F" => DATA <= x"AB"; + when x"3A0" => DATA <= x"30"; + when x"3A1" => DATA <= x"1E"; + when x"3A2" => DATA <= x"86"; + when x"3A3" => DATA <= x"07"; + when x"3A4" => DATA <= x"BD"; + when x"3A5" => DATA <= x"FC"; + when x"3A6" => DATA <= x"DE"; + when x"3A7" => DATA <= x"4F"; + when x"3A8" => DATA <= x"BD"; + when x"3A9" => DATA <= x"FC"; + when x"3AA" => DATA <= x"DE"; + when x"3AB" => DATA <= x"BD"; + when x"3AC" => DATA <= x"FA"; + when x"3AD" => DATA <= x"B4"; + when x"3AE" => DATA <= x"8B"; + when x"3AF" => DATA <= x"80"; + when x"3B0" => DATA <= x"25"; + when x"3B1" => DATA <= x"0F"; + when x"3B2" => DATA <= x"AE"; + when x"3B3" => DATA <= x"84"; + when x"3B4" => DATA <= x"BD"; + when x"3B5" => DATA <= x"FA"; + when x"3B6" => DATA <= x"B4"; + when x"3B7" => DATA <= x"A7"; + when x"3B8" => DATA <= x"80"; + when x"3B9" => DATA <= x"31"; + when x"3BA" => DATA <= x"21"; + when x"3BB" => DATA <= x"81"; + when x"3BC" => DATA <= x"0D"; + when x"3BD" => DATA <= x"26"; + when x"3BE" => DATA <= x"F5"; + when x"3BF" => DATA <= x"31"; + when x"3C0" => DATA <= x"3F"; + when x"3C1" => DATA <= x"39"; + when x"3C2" => DATA <= x"00"; + when x"3C3" => DATA <= x"05"; + when x"3C4" => DATA <= x"00"; + when x"3C5" => DATA <= x"05"; when x"3C6" => DATA <= x"04"; - when x"3C7" => DATA <= x"80"; - when x"3C8" => DATA <= x"05"; - when x"3C9" => DATA <= x"00"; - when x"3CA" => DATA <= x"05"; - when x"3CB" => DATA <= x"00"; - when x"3CC" => DATA <= x"05"; - when x"3CD" => DATA <= x"00"; + when x"3C7" => DATA <= x"05"; + when x"3C8" => DATA <= x"08"; + when x"3C9" => DATA <= x"0E"; + when x"3CA" => DATA <= x"04"; + when x"3CB" => DATA <= x"01"; + when x"3CC" => DATA <= x"01"; + when x"3CD" => DATA <= x"05"; when x"3CE" => DATA <= x"00"; - when x"3CF" => DATA <= x"00"; - when x"3D0" => DATA <= x"05"; - when x"3D1" => DATA <= x"09"; - when x"3D2" => DATA <= x"05"; + when x"3CF" => DATA <= x"10"; + when x"3D0" => DATA <= x"20"; + when x"3D1" => DATA <= x"10"; + when x"3D2" => DATA <= x"0D"; when x"3D3" => DATA <= x"00"; - when x"3D4" => DATA <= x"08"; - when x"3D5" => DATA <= x"19"; - when x"3D6" => DATA <= x"00"; - when x"3D7" => DATA <= x"01"; - when x"3D8" => DATA <= x"0D"; - when x"3D9" => DATA <= x"80"; - when x"3DA" => DATA <= x"04"; - when x"3DB" => DATA <= x"80"; - when x"3DC" => DATA <= x"34"; - when x"3DD" => DATA <= x"26"; - when x"3DE" => DATA <= x"86"; - when x"3DF" => DATA <= x"0C"; - when x"3E0" => DATA <= x"BD"; - when x"3E1" => DATA <= x"FC"; - when x"3E2" => DATA <= x"D0"; - when x"3E3" => DATA <= x"BD"; - when x"3E4" => DATA <= x"FC"; - when x"3E5" => DATA <= x"CC"; - when x"3E6" => DATA <= x"10"; - when x"3E7" => DATA <= x"8E"; - when x"3E8" => DATA <= x"00"; - when x"3E9" => DATA <= x"04"; - when x"3EA" => DATA <= x"BD"; - when x"3EB" => DATA <= x"FC"; - when x"3EC" => DATA <= x"9D"; - when x"3ED" => DATA <= x"35"; - when x"3EE" => DATA <= x"06"; - when x"3EF" => DATA <= x"BD"; - when x"3F0" => DATA <= x"FC"; - when x"3F1" => DATA <= x"D0"; - when x"3F2" => DATA <= x"BD"; - when x"3F3" => DATA <= x"FA"; - when x"3F4" => DATA <= x"AD"; - when x"3F5" => DATA <= x"34"; - when x"3F6" => DATA <= x"02"; - when x"3F7" => DATA <= x"10"; - when x"3F8" => DATA <= x"8E"; - when x"3F9" => DATA <= x"00"; - when x"3FA" => DATA <= x"04"; - when x"3FB" => DATA <= x"BD"; - when x"3FC" => DATA <= x"FC"; - when x"3FD" => DATA <= x"AD"; - when x"3FE" => DATA <= x"35"; - when x"3FF" => DATA <= x"A2"; - when x"400" => DATA <= x"34"; - when x"401" => DATA <= x"04"; - when x"402" => DATA <= x"86"; - when x"403" => DATA <= x"0E"; - when x"404" => DATA <= x"BD"; - when x"405" => DATA <= x"FC"; - when x"406" => DATA <= x"D0"; - when x"407" => DATA <= x"BD"; - when x"408" => DATA <= x"FC"; - when x"409" => DATA <= x"CC"; - when x"40A" => DATA <= x"35"; - when x"40B" => DATA <= x"04"; - when x"40C" => DATA <= x"7E"; - when x"40D" => DATA <= x"FA"; - when x"40E" => DATA <= x"A9"; - when x"40F" => DATA <= x"34"; - when x"410" => DATA <= x"06"; - when x"411" => DATA <= x"86"; - when x"412" => DATA <= x"10"; - when x"413" => DATA <= x"BD"; - when x"414" => DATA <= x"FC"; - when x"415" => DATA <= x"D0"; - when x"416" => DATA <= x"BD"; - when x"417" => DATA <= x"FC"; - when x"418" => DATA <= x"CC"; - when x"419" => DATA <= x"35"; - when x"41A" => DATA <= x"06"; - when x"41B" => DATA <= x"34"; - when x"41C" => DATA <= x"06"; - when x"41D" => DATA <= x"BD"; - when x"41E" => DATA <= x"FC"; - when x"41F" => DATA <= x"D0"; - when x"420" => DATA <= x"BD"; - when x"421" => DATA <= x"FA"; - when x"422" => DATA <= x"AD"; - when x"423" => DATA <= x"35"; - when x"424" => DATA <= x"86"; - when x"425" => DATA <= x"34"; - when x"426" => DATA <= x"06"; - when x"427" => DATA <= x"86"; - when x"428" => DATA <= x"12"; - when x"429" => DATA <= x"BD"; - when x"42A" => DATA <= x"FC"; - when x"42B" => DATA <= x"D0"; - when x"42C" => DATA <= x"35"; - when x"42D" => DATA <= x"06"; + when x"3D4" => DATA <= x"04"; + when x"3D5" => DATA <= x"80"; + when x"3D6" => DATA <= x"05"; + when x"3D7" => DATA <= x"00"; + when x"3D8" => DATA <= x"05"; + when x"3D9" => DATA <= x"00"; + when x"3DA" => DATA <= x"05"; + when x"3DB" => DATA <= x"00"; + when x"3DC" => DATA <= x"00"; + when x"3DD" => DATA <= x"00"; + when x"3DE" => DATA <= x"05"; + when x"3DF" => DATA <= x"09"; + when x"3E0" => DATA <= x"05"; + when x"3E1" => DATA <= x"00"; + when x"3E2" => DATA <= x"08"; + when x"3E3" => DATA <= x"19"; + when x"3E4" => DATA <= x"00"; + when x"3E5" => DATA <= x"01"; + when x"3E6" => DATA <= x"0D"; + when x"3E7" => DATA <= x"80"; + when x"3E8" => DATA <= x"04"; + when x"3E9" => DATA <= x"80"; + when x"3EA" => DATA <= x"34"; + when x"3EB" => DATA <= x"26"; + when x"3EC" => DATA <= x"86"; + when x"3ED" => DATA <= x"0C"; + when x"3EE" => DATA <= x"BD"; + when x"3EF" => DATA <= x"FC"; + when x"3F0" => DATA <= x"DE"; + when x"3F1" => DATA <= x"BD"; + when x"3F2" => DATA <= x"FC"; + when x"3F3" => DATA <= x"DA"; + when x"3F4" => DATA <= x"10"; + when x"3F5" => DATA <= x"8E"; + when x"3F6" => DATA <= x"00"; + when x"3F7" => DATA <= x"04"; + when x"3F8" => DATA <= x"BD"; + when x"3F9" => DATA <= x"FC"; + when x"3FA" => DATA <= x"AB"; + when x"3FB" => DATA <= x"35"; + when x"3FC" => DATA <= x"06"; + when x"3FD" => DATA <= x"BD"; + when x"3FE" => DATA <= x"FC"; + when x"3FF" => DATA <= x"DE"; + when x"400" => DATA <= x"BD"; + when x"401" => DATA <= x"FA"; + when x"402" => DATA <= x"B4"; + when x"403" => DATA <= x"34"; + when x"404" => DATA <= x"02"; + when x"405" => DATA <= x"10"; + when x"406" => DATA <= x"8E"; + when x"407" => DATA <= x"00"; + when x"408" => DATA <= x"04"; + when x"409" => DATA <= x"BD"; + when x"40A" => DATA <= x"FC"; + when x"40B" => DATA <= x"BB"; + when x"40C" => DATA <= x"35"; + when x"40D" => DATA <= x"A2"; + when x"40E" => DATA <= x"34"; + when x"40F" => DATA <= x"04"; + when x"410" => DATA <= x"86"; + when x"411" => DATA <= x"0E"; + when x"412" => DATA <= x"BD"; + when x"413" => DATA <= x"FC"; + when x"414" => DATA <= x"DE"; + when x"415" => DATA <= x"BD"; + when x"416" => DATA <= x"FC"; + when x"417" => DATA <= x"DA"; + when x"418" => DATA <= x"35"; + when x"419" => DATA <= x"04"; + when x"41A" => DATA <= x"7E"; + when x"41B" => DATA <= x"FA"; + when x"41C" => DATA <= x"B0"; + when x"41D" => DATA <= x"34"; + when x"41E" => DATA <= x"06"; + when x"41F" => DATA <= x"86"; + when x"420" => DATA <= x"10"; + when x"421" => DATA <= x"BD"; + when x"422" => DATA <= x"FC"; + when x"423" => DATA <= x"DE"; + when x"424" => DATA <= x"BD"; + when x"425" => DATA <= x"FC"; + when x"426" => DATA <= x"DA"; + when x"427" => DATA <= x"35"; + when x"428" => DATA <= x"06"; + when x"429" => DATA <= x"34"; + when x"42A" => DATA <= x"06"; + when x"42B" => DATA <= x"BD"; + when x"42C" => DATA <= x"FC"; + when x"42D" => DATA <= x"DE"; when x"42E" => DATA <= x"BD"; - when x"42F" => DATA <= x"FC"; - when x"430" => DATA <= x"D0"; - when x"431" => DATA <= x"4D"; - when x"432" => DATA <= x"27"; - when x"433" => DATA <= x"06"; - when x"434" => DATA <= x"BD"; - when x"435" => DATA <= x"FC"; - when x"436" => DATA <= x"94"; - when x"437" => DATA <= x"7E"; - when x"438" => DATA <= x"FA"; - when x"439" => DATA <= x"AD"; - when x"43A" => DATA <= x"34"; - when x"43B" => DATA <= x"04"; + when x"42F" => DATA <= x"FA"; + when x"430" => DATA <= x"B4"; + when x"431" => DATA <= x"35"; + when x"432" => DATA <= x"86"; + when x"433" => DATA <= x"34"; + when x"434" => DATA <= x"06"; + when x"435" => DATA <= x"86"; + when x"436" => DATA <= x"12"; + when x"437" => DATA <= x"BD"; + when x"438" => DATA <= x"FC"; + when x"439" => DATA <= x"DE"; + when x"43A" => DATA <= x"35"; + when x"43B" => DATA <= x"06"; when x"43C" => DATA <= x"BD"; when x"43D" => DATA <= x"FC"; - when x"43E" => DATA <= x"CC"; - when x"43F" => DATA <= x"BD"; - when x"440" => DATA <= x"FA"; - when x"441" => DATA <= x"AD"; - when x"442" => DATA <= x"4F"; - when x"443" => DATA <= x"35"; - when x"444" => DATA <= x"84"; - when x"445" => DATA <= x"34"; - when x"446" => DATA <= x"32"; - when x"447" => DATA <= x"86"; - when x"448" => DATA <= x"14"; - when x"449" => DATA <= x"BD"; - when x"44A" => DATA <= x"FC"; - when x"44B" => DATA <= x"D0"; - when x"44C" => DATA <= x"30"; - when x"44D" => DATA <= x"02"; - when x"44E" => DATA <= x"10"; - when x"44F" => DATA <= x"8E"; - when x"450" => DATA <= x"00"; - when x"451" => DATA <= x"10"; - when x"452" => DATA <= x"BD"; - when x"453" => DATA <= x"FC"; - when x"454" => DATA <= x"9D"; - when x"455" => DATA <= x"30"; - when x"456" => DATA <= x"1E"; - when x"457" => DATA <= x"AE"; - when x"458" => DATA <= x"84"; - when x"459" => DATA <= x"BD"; - when x"45A" => DATA <= x"FC"; - when x"45B" => DATA <= x"94"; - when x"45C" => DATA <= x"35"; - when x"45D" => DATA <= x"02"; - when x"45E" => DATA <= x"BD"; - when x"45F" => DATA <= x"FC"; - when x"460" => DATA <= x"D0"; - when x"461" => DATA <= x"BD"; - when x"462" => DATA <= x"FA"; - when x"463" => DATA <= x"AD"; - when x"464" => DATA <= x"35"; - when x"465" => DATA <= x"10"; - when x"466" => DATA <= x"34"; - when x"467" => DATA <= x"02"; - when x"468" => DATA <= x"30"; - when x"469" => DATA <= x"02"; - when x"46A" => DATA <= x"10"; - when x"46B" => DATA <= x"8E"; - when x"46C" => DATA <= x"00"; - when x"46D" => DATA <= x"10"; - when x"46E" => DATA <= x"BD"; - when x"46F" => DATA <= x"FC"; - when x"470" => DATA <= x"AD"; - when x"471" => DATA <= x"30"; - when x"472" => DATA <= x"1E"; - when x"473" => DATA <= x"35"; - when x"474" => DATA <= x"A2"; - when x"475" => DATA <= x"34"; - when x"476" => DATA <= x"22"; - when x"477" => DATA <= x"86"; - when x"478" => DATA <= x"16"; - when x"479" => DATA <= x"BD"; - when x"47A" => DATA <= x"FC"; - when x"47B" => DATA <= x"D0"; - when x"47C" => DATA <= x"10"; - when x"47D" => DATA <= x"8E"; - when x"47E" => DATA <= x"00"; - when x"47F" => DATA <= x"0D"; - when x"480" => DATA <= x"BD"; - when x"481" => DATA <= x"FC"; - when x"482" => DATA <= x"9D"; - when x"483" => DATA <= x"35"; - when x"484" => DATA <= x"02"; - when x"485" => DATA <= x"BD"; - when x"486" => DATA <= x"FC"; - when x"487" => DATA <= x"D0"; - when x"488" => DATA <= x"10"; - when x"489" => DATA <= x"8E"; - when x"48A" => DATA <= x"00"; - when x"48B" => DATA <= x"0D"; - when x"48C" => DATA <= x"BD"; - when x"48D" => DATA <= x"FC"; - when x"48E" => DATA <= x"AD"; - when x"48F" => DATA <= x"35"; - when x"490" => DATA <= x"20"; - when x"491" => DATA <= x"7E"; - when x"492" => DATA <= x"FA"; - when x"493" => DATA <= x"A9"; - when x"494" => DATA <= x"A6"; - when x"495" => DATA <= x"80"; - when x"496" => DATA <= x"8D"; - when x"497" => DATA <= x"38"; - when x"498" => DATA <= x"81"; + when x"43E" => DATA <= x"DE"; + when x"43F" => DATA <= x"4D"; + when x"440" => DATA <= x"27"; + when x"441" => DATA <= x"06"; + when x"442" => DATA <= x"BD"; + when x"443" => DATA <= x"FC"; + when x"444" => DATA <= x"A2"; + when x"445" => DATA <= x"7E"; + when x"446" => DATA <= x"FA"; + when x"447" => DATA <= x"B4"; + when x"448" => DATA <= x"34"; + when x"449" => DATA <= x"04"; + when x"44A" => DATA <= x"BD"; + when x"44B" => DATA <= x"FC"; + when x"44C" => DATA <= x"DA"; + when x"44D" => DATA <= x"BD"; + when x"44E" => DATA <= x"FA"; + when x"44F" => DATA <= x"B4"; + when x"450" => DATA <= x"4F"; + when x"451" => DATA <= x"35"; + when x"452" => DATA <= x"84"; + when x"453" => DATA <= x"34"; + when x"454" => DATA <= x"32"; + when x"455" => DATA <= x"86"; + when x"456" => DATA <= x"14"; + when x"457" => DATA <= x"BD"; + when x"458" => DATA <= x"FC"; + when x"459" => DATA <= x"DE"; + when x"45A" => DATA <= x"30"; + when x"45B" => DATA <= x"02"; + when x"45C" => DATA <= x"10"; + when x"45D" => DATA <= x"8E"; + when x"45E" => DATA <= x"00"; + when x"45F" => DATA <= x"10"; + when x"460" => DATA <= x"BD"; + when x"461" => DATA <= x"FC"; + when x"462" => DATA <= x"AB"; + when x"463" => DATA <= x"30"; + when x"464" => DATA <= x"1E"; + when x"465" => DATA <= x"AE"; + when x"466" => DATA <= x"84"; + when x"467" => DATA <= x"BD"; + when x"468" => DATA <= x"FC"; + when x"469" => DATA <= x"A2"; + when x"46A" => DATA <= x"35"; + when x"46B" => DATA <= x"02"; + when x"46C" => DATA <= x"BD"; + when x"46D" => DATA <= x"FC"; + when x"46E" => DATA <= x"DE"; + when x"46F" => DATA <= x"BD"; + when x"470" => DATA <= x"FA"; + when x"471" => DATA <= x"B4"; + when x"472" => DATA <= x"35"; + when x"473" => DATA <= x"10"; + when x"474" => DATA <= x"34"; + when x"475" => DATA <= x"02"; + when x"476" => DATA <= x"30"; + when x"477" => DATA <= x"02"; + when x"478" => DATA <= x"10"; + when x"479" => DATA <= x"8E"; + when x"47A" => DATA <= x"00"; + when x"47B" => DATA <= x"10"; + when x"47C" => DATA <= x"BD"; + when x"47D" => DATA <= x"FC"; + when x"47E" => DATA <= x"BB"; + when x"47F" => DATA <= x"30"; + when x"480" => DATA <= x"1E"; + when x"481" => DATA <= x"35"; + when x"482" => DATA <= x"A2"; + when x"483" => DATA <= x"34"; + when x"484" => DATA <= x"22"; + when x"485" => DATA <= x"86"; + when x"486" => DATA <= x"16"; + when x"487" => DATA <= x"BD"; + when x"488" => DATA <= x"FC"; + when x"489" => DATA <= x"DE"; + when x"48A" => DATA <= x"10"; + when x"48B" => DATA <= x"8E"; + when x"48C" => DATA <= x"00"; + when x"48D" => DATA <= x"0D"; + when x"48E" => DATA <= x"BD"; + when x"48F" => DATA <= x"FC"; + when x"490" => DATA <= x"AB"; + when x"491" => DATA <= x"35"; + when x"492" => DATA <= x"02"; + when x"493" => DATA <= x"BD"; + when x"494" => DATA <= x"FC"; + when x"495" => DATA <= x"DE"; + when x"496" => DATA <= x"10"; + when x"497" => DATA <= x"8E"; + when x"498" => DATA <= x"00"; when x"499" => DATA <= x"0D"; - when x"49A" => DATA <= x"26"; - when x"49B" => DATA <= x"F8"; - when x"49C" => DATA <= x"39"; - when x"49D" => DATA <= x"34"; - when x"49E" => DATA <= x"04"; - when x"49F" => DATA <= x"1F"; - when x"4A0" => DATA <= x"20"; - when x"4A1" => DATA <= x"3A"; - when x"4A2" => DATA <= x"35"; - when x"4A3" => DATA <= x"04"; - when x"4A4" => DATA <= x"A6"; - when x"4A5" => DATA <= x"82"; - when x"4A6" => DATA <= x"8D"; - when x"4A7" => DATA <= x"28"; - when x"4A8" => DATA <= x"31"; - when x"4A9" => DATA <= x"3F"; - when x"4AA" => DATA <= x"26"; - when x"4AB" => DATA <= x"F8"; - when x"4AC" => DATA <= x"39"; - when x"4AD" => DATA <= x"34"; - when x"4AE" => DATA <= x"04"; - when x"4AF" => DATA <= x"1F"; - when x"4B0" => DATA <= x"20"; - when x"4B1" => DATA <= x"3A"; - when x"4B2" => DATA <= x"35"; - when x"4B3" => DATA <= x"04"; - when x"4B4" => DATA <= x"BD"; - when x"4B5" => DATA <= x"FA"; - when x"4B6" => DATA <= x"AD"; - when x"4B7" => DATA <= x"A7"; - when x"4B8" => DATA <= x"82"; - when x"4B9" => DATA <= x"31"; - when x"4BA" => DATA <= x"3F"; - when x"4BB" => DATA <= x"26"; - when x"4BC" => DATA <= x"F7"; - when x"4BD" => DATA <= x"39"; - when x"4BE" => DATA <= x"34"; - when x"4BF" => DATA <= x"02"; - when x"4C0" => DATA <= x"B6"; - when x"4C1" => DATA <= x"FE"; - when x"4C2" => DATA <= x"E0"; - when x"4C3" => DATA <= x"48"; - when x"4C4" => DATA <= x"2A"; - when x"4C5" => DATA <= x"FA"; - when x"4C6" => DATA <= x"35"; - when x"4C7" => DATA <= x"02"; - when x"4C8" => DATA <= x"B7"; - when x"4C9" => DATA <= x"FE"; - when x"4CA" => DATA <= x"E1"; + when x"49A" => DATA <= x"BD"; + when x"49B" => DATA <= x"FC"; + when x"49C" => DATA <= x"BB"; + when x"49D" => DATA <= x"35"; + when x"49E" => DATA <= x"20"; + when x"49F" => DATA <= x"7E"; + when x"4A0" => DATA <= x"FA"; + when x"4A1" => DATA <= x"B0"; + when x"4A2" => DATA <= x"A6"; + when x"4A3" => DATA <= x"80"; + when x"4A4" => DATA <= x"8D"; + when x"4A5" => DATA <= x"38"; + when x"4A6" => DATA <= x"81"; + when x"4A7" => DATA <= x"0D"; + when x"4A8" => DATA <= x"26"; + when x"4A9" => DATA <= x"F8"; + when x"4AA" => DATA <= x"39"; + when x"4AB" => DATA <= x"34"; + when x"4AC" => DATA <= x"04"; + when x"4AD" => DATA <= x"1F"; + when x"4AE" => DATA <= x"20"; + when x"4AF" => DATA <= x"3A"; + when x"4B0" => DATA <= x"35"; + when x"4B1" => DATA <= x"04"; + when x"4B2" => DATA <= x"A6"; + when x"4B3" => DATA <= x"82"; + when x"4B4" => DATA <= x"8D"; + when x"4B5" => DATA <= x"28"; + when x"4B6" => DATA <= x"31"; + when x"4B7" => DATA <= x"3F"; + when x"4B8" => DATA <= x"26"; + when x"4B9" => DATA <= x"F8"; + when x"4BA" => DATA <= x"39"; + when x"4BB" => DATA <= x"34"; + when x"4BC" => DATA <= x"04"; + when x"4BD" => DATA <= x"1F"; + when x"4BE" => DATA <= x"20"; + when x"4BF" => DATA <= x"3A"; + when x"4C0" => DATA <= x"35"; + when x"4C1" => DATA <= x"04"; + when x"4C2" => DATA <= x"BD"; + when x"4C3" => DATA <= x"FA"; + when x"4C4" => DATA <= x"B4"; + when x"4C5" => DATA <= x"A7"; + when x"4C6" => DATA <= x"82"; + when x"4C7" => DATA <= x"31"; + when x"4C8" => DATA <= x"3F"; + when x"4C9" => DATA <= x"26"; + when x"4CA" => DATA <= x"F7"; when x"4CB" => DATA <= x"39"; - when x"4CC" => DATA <= x"1F"; - when x"4CD" => DATA <= x"20"; - when x"4CE" => DATA <= x"1F"; - when x"4CF" => DATA <= x"98"; - when x"4D0" => DATA <= x"34"; - when x"4D1" => DATA <= x"02"; - when x"4D2" => DATA <= x"B6"; - when x"4D3" => DATA <= x"FE"; - when x"4D4" => DATA <= x"E2"; - when x"4D5" => DATA <= x"48"; - when x"4D6" => DATA <= x"2A"; - when x"4D7" => DATA <= x"FA"; - when x"4D8" => DATA <= x"35"; - when x"4D9" => DATA <= x"02"; - when x"4DA" => DATA <= x"B7"; - when x"4DB" => DATA <= x"FE"; - when x"4DC" => DATA <= x"E3"; - when x"4DD" => DATA <= x"39"; + when x"4CC" => DATA <= x"34"; + when x"4CD" => DATA <= x"02"; + when x"4CE" => DATA <= x"B6"; + when x"4CF" => DATA <= x"FE"; + when x"4D0" => DATA <= x"E0"; + when x"4D1" => DATA <= x"48"; + when x"4D2" => DATA <= x"2A"; + when x"4D3" => DATA <= x"FA"; + when x"4D4" => DATA <= x"35"; + when x"4D5" => DATA <= x"02"; + when x"4D6" => DATA <= x"B7"; + when x"4D7" => DATA <= x"FE"; + when x"4D8" => DATA <= x"E1"; + when x"4D9" => DATA <= x"39"; + when x"4DA" => DATA <= x"1F"; + when x"4DB" => DATA <= x"20"; + when x"4DC" => DATA <= x"1F"; + when x"4DD" => DATA <= x"98"; when x"4DE" => DATA <= x"34"; when x"4DF" => DATA <= x"02"; when x"4E0" => DATA <= x"B6"; when x"4E1" => DATA <= x"FE"; - when x"4E2" => DATA <= x"E6"; - when x"4E3" => DATA <= x"2B"; - when x"4E4" => DATA <= x"51"; - when x"4E5" => DATA <= x"B6"; - when x"4E6" => DATA <= x"FE"; - when x"4E7" => DATA <= x"E0"; - when x"4E8" => DATA <= x"2B"; - when x"4E9" => DATA <= x"06"; - when x"4EA" => DATA <= x"35"; - when x"4EB" => DATA <= x"02"; - when x"4EC" => DATA <= x"6E"; - when x"4ED" => DATA <= x"9F"; - when x"4EE" => DATA <= x"FF"; - when x"4EF" => DATA <= x"B1"; - when x"4F0" => DATA <= x"B6"; - when x"4F1" => DATA <= x"FE"; - when x"4F2" => DATA <= x"E1"; - when x"4F3" => DATA <= x"2B"; - when x"4F4" => DATA <= x"1B"; - when x"4F5" => DATA <= x"35"; - when x"4F6" => DATA <= x"02"; - when x"4F7" => DATA <= x"34"; - when x"4F8" => DATA <= x"76"; - when x"4F9" => DATA <= x"8D"; - when x"4FA" => DATA <= x"1C"; - when x"4FB" => DATA <= x"1F"; - when x"4FC" => DATA <= x"89"; - when x"4FD" => DATA <= x"4F"; - when x"4FE" => DATA <= x"1F"; - when x"4FF" => DATA <= x"02"; - when x"500" => DATA <= x"8D"; - when x"501" => DATA <= x"15"; - when x"502" => DATA <= x"1F"; - when x"503" => DATA <= x"89"; - when x"504" => DATA <= x"4F"; - when x"505" => DATA <= x"1F"; - when x"506" => DATA <= x"01"; + when x"4E2" => DATA <= x"E2"; + when x"4E3" => DATA <= x"48"; + when x"4E4" => DATA <= x"2A"; + when x"4E5" => DATA <= x"FA"; + when x"4E6" => DATA <= x"35"; + when x"4E7" => DATA <= x"02"; + when x"4E8" => DATA <= x"B7"; + when x"4E9" => DATA <= x"FE"; + when x"4EA" => DATA <= x"E3"; + when x"4EB" => DATA <= x"39"; + when x"4EC" => DATA <= x"34"; + when x"4ED" => DATA <= x"02"; + when x"4EE" => DATA <= x"B6"; + when x"4EF" => DATA <= x"FE"; + when x"4F0" => DATA <= x"E6"; + when x"4F1" => DATA <= x"2B"; + when x"4F2" => DATA <= x"51"; + when x"4F3" => DATA <= x"B6"; + when x"4F4" => DATA <= x"FE"; + when x"4F5" => DATA <= x"E0"; + when x"4F6" => DATA <= x"2B"; + when x"4F7" => DATA <= x"06"; + when x"4F8" => DATA <= x"35"; + when x"4F9" => DATA <= x"02"; + when x"4FA" => DATA <= x"6E"; + when x"4FB" => DATA <= x"9F"; + when x"4FC" => DATA <= x"FF"; + when x"4FD" => DATA <= x"B1"; + when x"4FE" => DATA <= x"B6"; + when x"4FF" => DATA <= x"FE"; + when x"500" => DATA <= x"E1"; + when x"501" => DATA <= x"2B"; + when x"502" => DATA <= x"1B"; + when x"503" => DATA <= x"35"; + when x"504" => DATA <= x"02"; + when x"505" => DATA <= x"34"; + when x"506" => DATA <= x"76"; when x"507" => DATA <= x"8D"; - when x"508" => DATA <= x"0E"; - when x"509" => DATA <= x"AD"; - when x"50A" => DATA <= x"9F"; - when x"50B" => DATA <= x"FF"; - when x"50C" => DATA <= x"FC"; - when x"50D" => DATA <= x"35"; - when x"50E" => DATA <= x"76"; - when x"50F" => DATA <= x"3B"; - when x"510" => DATA <= x"48"; - when x"511" => DATA <= x"B7"; - when x"512" => DATA <= x"FF"; - when x"513" => DATA <= x"80"; - when x"514" => DATA <= x"35"; - when x"515" => DATA <= x"02"; - when x"516" => DATA <= x"3B"; - when x"517" => DATA <= x"B6"; - when x"518" => DATA <= x"FE"; - when x"519" => DATA <= x"E6"; - when x"51A" => DATA <= x"2B"; - when x"51B" => DATA <= x"02"; - when x"51C" => DATA <= x"8D"; - when x"51D" => DATA <= x"12"; - when x"51E" => DATA <= x"B6"; - when x"51F" => DATA <= x"FE"; - when x"520" => DATA <= x"E0"; - when x"521" => DATA <= x"2A"; - when x"522" => DATA <= x"F4"; - when x"523" => DATA <= x"B6"; - when x"524" => DATA <= x"FE"; - when x"525" => DATA <= x"E1"; - when x"526" => DATA <= x"39"; - when x"527" => DATA <= x"B6"; - when x"528" => DATA <= x"FE"; - when x"529" => DATA <= x"E6"; - when x"52A" => DATA <= x"2A"; - when x"52B" => DATA <= x"FB"; + when x"508" => DATA <= x"1C"; + when x"509" => DATA <= x"1F"; + when x"50A" => DATA <= x"89"; + when x"50B" => DATA <= x"4F"; + when x"50C" => DATA <= x"1F"; + when x"50D" => DATA <= x"02"; + when x"50E" => DATA <= x"8D"; + when x"50F" => DATA <= x"15"; + when x"510" => DATA <= x"1F"; + when x"511" => DATA <= x"89"; + when x"512" => DATA <= x"4F"; + when x"513" => DATA <= x"1F"; + when x"514" => DATA <= x"01"; + when x"515" => DATA <= x"8D"; + when x"516" => DATA <= x"0E"; + when x"517" => DATA <= x"AD"; + when x"518" => DATA <= x"9F"; + when x"519" => DATA <= x"FF"; + when x"51A" => DATA <= x"FC"; + when x"51B" => DATA <= x"35"; + when x"51C" => DATA <= x"76"; + when x"51D" => DATA <= x"3B"; + when x"51E" => DATA <= x"48"; + when x"51F" => DATA <= x"B7"; + when x"520" => DATA <= x"FF"; + when x"521" => DATA <= x"80"; + when x"522" => DATA <= x"35"; + when x"523" => DATA <= x"02"; + when x"524" => DATA <= x"3B"; + when x"525" => DATA <= x"B6"; + when x"526" => DATA <= x"FE"; + when x"527" => DATA <= x"E6"; + when x"528" => DATA <= x"2B"; + when x"529" => DATA <= x"02"; + when x"52A" => DATA <= x"8D"; + when x"52B" => DATA <= x"12"; when x"52C" => DATA <= x"B6"; when x"52D" => DATA <= x"FE"; - when x"52E" => DATA <= x"E7"; - when x"52F" => DATA <= x"39"; - when x"530" => DATA <= x"1C"; - when x"531" => DATA <= x"7F"; - when x"532" => DATA <= x"34"; - when x"533" => DATA <= x"01"; - when x"534" => DATA <= x"34"; - when x"535" => DATA <= x"02"; - when x"536" => DATA <= x"35"; - when x"537" => DATA <= x"02"; - when x"538" => DATA <= x"34"; - when x"539" => DATA <= x"16"; + when x"52E" => DATA <= x"E0"; + when x"52F" => DATA <= x"2A"; + when x"530" => DATA <= x"F4"; + when x"531" => DATA <= x"B6"; + when x"532" => DATA <= x"FE"; + when x"533" => DATA <= x"E1"; + when x"534" => DATA <= x"39"; + when x"535" => DATA <= x"B6"; + when x"536" => DATA <= x"FE"; + when x"537" => DATA <= x"E6"; + when x"538" => DATA <= x"2A"; + when x"539" => DATA <= x"FB"; when x"53A" => DATA <= x"B6"; when x"53B" => DATA <= x"FE"; when x"53C" => DATA <= x"E7"; - when x"53D" => DATA <= x"2A"; - when x"53E" => DATA <= x"22"; - when x"53F" => DATA <= x"10"; - when x"540" => DATA <= x"CE"; - when x"541" => DATA <= x"FF"; - when x"542" => DATA <= x"80"; - when x"543" => DATA <= x"8E"; - when x"544" => DATA <= x"FF"; - when x"545" => DATA <= x"00"; - when x"546" => DATA <= x"BD"; - when x"547" => DATA <= x"FA"; - when x"548" => DATA <= x"AD"; - when x"549" => DATA <= x"86"; - when x"54A" => DATA <= x"3F"; - when x"54B" => DATA <= x"A7"; - when x"54C" => DATA <= x"80"; - when x"54D" => DATA <= x"BD"; - when x"54E" => DATA <= x"FA"; - when x"54F" => DATA <= x"AD"; - when x"550" => DATA <= x"A7"; - when x"551" => DATA <= x"80"; - when x"552" => DATA <= x"BD"; - when x"553" => DATA <= x"FA"; - when x"554" => DATA <= x"AD"; - when x"555" => DATA <= x"A7"; - when x"556" => DATA <= x"80"; - when x"557" => DATA <= x"26"; - when x"558" => DATA <= x"F9"; - when x"559" => DATA <= x"8E"; - when x"55A" => DATA <= x"FF"; - when x"55B" => DATA <= x"01"; - when x"55C" => DATA <= x"34"; - when x"55D" => DATA <= x"10"; - when x"55E" => DATA <= x"7E"; - when x"55F" => DATA <= x"FF"; - when x"560" => DATA <= x"BC"; - when x"561" => DATA <= x"34"; - when x"562" => DATA <= x"02"; - when x"563" => DATA <= x"8D"; - when x"564" => DATA <= x"C2"; - when x"565" => DATA <= x"35"; - when x"566" => DATA <= x"02"; - when x"567" => DATA <= x"81"; - when x"568" => DATA <= x"05"; - when x"569" => DATA <= x"26"; - when x"56A" => DATA <= x"06"; - when x"56B" => DATA <= x"7F"; - when x"56C" => DATA <= x"FF"; - when x"56D" => DATA <= x"94"; - when x"56E" => DATA <= x"35"; - when x"56F" => DATA <= x"16"; - when x"570" => DATA <= x"3B"; - when x"571" => DATA <= x"34"; - when x"572" => DATA <= x"02"; - when x"573" => DATA <= x"8D"; - when x"574" => DATA <= x"B2"; - when x"575" => DATA <= x"B7"; - when x"576" => DATA <= x"FF"; - when x"577" => DATA <= x"8C"; - when x"578" => DATA <= x"8D"; - when x"579" => DATA <= x"AD"; - when x"57A" => DATA <= x"B7"; - when x"57B" => DATA <= x"FF"; - when x"57C" => DATA <= x"8D"; - when x"57D" => DATA <= x"8D"; - when x"57E" => DATA <= x"A8"; - when x"57F" => DATA <= x"B7"; - when x"580" => DATA <= x"FF"; - when x"581" => DATA <= x"8E"; - when x"582" => DATA <= x"8D"; - when x"583" => DATA <= x"A3"; - when x"584" => DATA <= x"B7"; - when x"585" => DATA <= x"FF"; - when x"586" => DATA <= x"8F"; - when x"587" => DATA <= x"8D"; - when x"588" => DATA <= x"9E"; - when x"589" => DATA <= x"86"; - when x"58A" => DATA <= x"FF"; - when x"58B" => DATA <= x"B7"; - when x"58C" => DATA <= x"FF"; - when x"58D" => DATA <= x"94"; - when x"58E" => DATA <= x"1C"; - when x"58F" => DATA <= x"BF"; - when x"590" => DATA <= x"BE"; - when x"591" => DATA <= x"FF"; - when x"592" => DATA <= x"8E"; - when x"593" => DATA <= x"A6"; - when x"594" => DATA <= x"E0"; - when x"595" => DATA <= x"27"; - when x"596" => DATA <= x"6C"; - when x"597" => DATA <= x"81"; - when x"598" => DATA <= x"02"; - when x"599" => DATA <= x"25"; - when x"59A" => DATA <= x"5B"; - when x"59B" => DATA <= x"27"; - when x"59C" => DATA <= x"49"; - when x"59D" => DATA <= x"81"; - when x"59E" => DATA <= x"04"; - when x"59F" => DATA <= x"25"; - when x"5A0" => DATA <= x"35"; - when x"5A1" => DATA <= x"27"; - when x"5A2" => DATA <= x"6E"; - when x"5A3" => DATA <= x"5F"; - when x"5A4" => DATA <= x"81"; - when x"5A5" => DATA <= x"07"; - when x"5A6" => DATA <= x"25"; - when x"5A7" => DATA <= x"11"; - when x"5A8" => DATA <= x"26"; - when x"5A9" => DATA <= x"67"; - when x"5AA" => DATA <= x"B6"; - when x"5AB" => DATA <= x"FE"; - when x"5AC" => DATA <= x"E4"; - when x"5AD" => DATA <= x"2A"; - when x"5AE" => DATA <= x"FB"; - when x"5AF" => DATA <= x"B6"; - when x"5B0" => DATA <= x"FE"; - when x"5B1" => DATA <= x"E5"; - when x"5B2" => DATA <= x"A7"; - when x"5B3" => DATA <= x"85"; - when x"5B4" => DATA <= x"5C"; - when x"5B5" => DATA <= x"26"; - when x"5B6" => DATA <= x"F3"; - when x"5B7" => DATA <= x"20"; - when x"5B8" => DATA <= x"17"; - when x"5B9" => DATA <= x"B6"; - when x"5BA" => DATA <= x"FE"; - when x"5BB" => DATA <= x"E4"; - when x"5BC" => DATA <= x"48"; - when x"5BD" => DATA <= x"2A"; - when x"5BE" => DATA <= x"FA"; - when x"5BF" => DATA <= x"A6"; - when x"5C0" => DATA <= x"85"; - when x"5C1" => DATA <= x"B7"; - when x"5C2" => DATA <= x"FE"; - when x"5C3" => DATA <= x"E5"; - when x"5C4" => DATA <= x"5C"; - when x"5C5" => DATA <= x"26"; - when x"5C6" => DATA <= x"F2"; + when x"53D" => DATA <= x"39"; + when x"53E" => DATA <= x"1C"; + when x"53F" => DATA <= x"7F"; + when x"540" => DATA <= x"34"; + when x"541" => DATA <= x"01"; + when x"542" => DATA <= x"34"; + when x"543" => DATA <= x"02"; + when x"544" => DATA <= x"35"; + when x"545" => DATA <= x"02"; + when x"546" => DATA <= x"34"; + when x"547" => DATA <= x"16"; + when x"548" => DATA <= x"B6"; + when x"549" => DATA <= x"FE"; + when x"54A" => DATA <= x"E7"; + when x"54B" => DATA <= x"2A"; + when x"54C" => DATA <= x"22"; + when x"54D" => DATA <= x"10"; + when x"54E" => DATA <= x"CE"; + when x"54F" => DATA <= x"FF"; + when x"550" => DATA <= x"80"; + when x"551" => DATA <= x"8E"; + when x"552" => DATA <= x"FF"; + when x"553" => DATA <= x"00"; + when x"554" => DATA <= x"BD"; + when x"555" => DATA <= x"FA"; + when x"556" => DATA <= x"B4"; + when x"557" => DATA <= x"86"; + when x"558" => DATA <= x"3F"; + when x"559" => DATA <= x"A7"; + when x"55A" => DATA <= x"80"; + when x"55B" => DATA <= x"BD"; + when x"55C" => DATA <= x"FA"; + when x"55D" => DATA <= x"B4"; + when x"55E" => DATA <= x"A7"; + when x"55F" => DATA <= x"80"; + when x"560" => DATA <= x"BD"; + when x"561" => DATA <= x"FA"; + when x"562" => DATA <= x"B4"; + when x"563" => DATA <= x"A7"; + when x"564" => DATA <= x"80"; + when x"565" => DATA <= x"26"; + when x"566" => DATA <= x"F9"; + when x"567" => DATA <= x"8E"; + when x"568" => DATA <= x"FF"; + when x"569" => DATA <= x"01"; + when x"56A" => DATA <= x"34"; + when x"56B" => DATA <= x"10"; + when x"56C" => DATA <= x"7E"; + when x"56D" => DATA <= x"FF"; + when x"56E" => DATA <= x"BC"; + when x"56F" => DATA <= x"34"; + when x"570" => DATA <= x"02"; + when x"571" => DATA <= x"8D"; + when x"572" => DATA <= x"C2"; + when x"573" => DATA <= x"35"; + when x"574" => DATA <= x"02"; + when x"575" => DATA <= x"81"; + when x"576" => DATA <= x"05"; + when x"577" => DATA <= x"26"; + when x"578" => DATA <= x"06"; + when x"579" => DATA <= x"7F"; + when x"57A" => DATA <= x"FF"; + when x"57B" => DATA <= x"94"; + when x"57C" => DATA <= x"35"; + when x"57D" => DATA <= x"16"; + when x"57E" => DATA <= x"3B"; + when x"57F" => DATA <= x"34"; + when x"580" => DATA <= x"02"; + when x"581" => DATA <= x"8D"; + when x"582" => DATA <= x"B2"; + when x"583" => DATA <= x"B7"; + when x"584" => DATA <= x"FF"; + when x"585" => DATA <= x"8C"; + when x"586" => DATA <= x"8D"; + when x"587" => DATA <= x"AD"; + when x"588" => DATA <= x"B7"; + when x"589" => DATA <= x"FF"; + when x"58A" => DATA <= x"8D"; + when x"58B" => DATA <= x"8D"; + when x"58C" => DATA <= x"A8"; + when x"58D" => DATA <= x"B7"; + when x"58E" => DATA <= x"FF"; + when x"58F" => DATA <= x"8E"; + when x"590" => DATA <= x"8D"; + when x"591" => DATA <= x"A3"; + when x"592" => DATA <= x"B7"; + when x"593" => DATA <= x"FF"; + when x"594" => DATA <= x"8F"; + when x"595" => DATA <= x"8D"; + when x"596" => DATA <= x"9E"; + when x"597" => DATA <= x"86"; + when x"598" => DATA <= x"FF"; + when x"599" => DATA <= x"B7"; + when x"59A" => DATA <= x"FF"; + when x"59B" => DATA <= x"94"; + when x"59C" => DATA <= x"1C"; + when x"59D" => DATA <= x"BF"; + when x"59E" => DATA <= x"BE"; + when x"59F" => DATA <= x"FF"; + when x"5A0" => DATA <= x"8E"; + when x"5A1" => DATA <= x"A6"; + when x"5A2" => DATA <= x"E0"; + when x"5A3" => DATA <= x"27"; + when x"5A4" => DATA <= x"6C"; + when x"5A5" => DATA <= x"81"; + when x"5A6" => DATA <= x"02"; + when x"5A7" => DATA <= x"25"; + when x"5A8" => DATA <= x"5B"; + when x"5A9" => DATA <= x"27"; + when x"5AA" => DATA <= x"49"; + when x"5AB" => DATA <= x"81"; + when x"5AC" => DATA <= x"04"; + when x"5AD" => DATA <= x"25"; + when x"5AE" => DATA <= x"35"; + when x"5AF" => DATA <= x"27"; + when x"5B0" => DATA <= x"6E"; + when x"5B1" => DATA <= x"5F"; + when x"5B2" => DATA <= x"81"; + when x"5B3" => DATA <= x"07"; + when x"5B4" => DATA <= x"25"; + when x"5B5" => DATA <= x"11"; + when x"5B6" => DATA <= x"26"; + when x"5B7" => DATA <= x"67"; + when x"5B8" => DATA <= x"B6"; + when x"5B9" => DATA <= x"FE"; + when x"5BA" => DATA <= x"E4"; + when x"5BB" => DATA <= x"2A"; + when x"5BC" => DATA <= x"FB"; + when x"5BD" => DATA <= x"B6"; + when x"5BE" => DATA <= x"FE"; + when x"5BF" => DATA <= x"E5"; + when x"5C0" => DATA <= x"A7"; + when x"5C1" => DATA <= x"85"; + when x"5C2" => DATA <= x"5C"; + when x"5C3" => DATA <= x"26"; + when x"5C4" => DATA <= x"F3"; + when x"5C5" => DATA <= x"20"; + when x"5C6" => DATA <= x"17"; when x"5C7" => DATA <= x"B6"; when x"5C8" => DATA <= x"FE"; when x"5C9" => DATA <= x"E4"; when x"5CA" => DATA <= x"48"; when x"5CB" => DATA <= x"2A"; when x"5CC" => DATA <= x"FA"; - when x"5CD" => DATA <= x"B7"; - when x"5CE" => DATA <= x"FE"; - when x"5CF" => DATA <= x"E5"; - when x"5D0" => DATA <= x"30"; - when x"5D1" => DATA <= x"89"; - when x"5D2" => DATA <= x"01"; - when x"5D3" => DATA <= x"00"; - when x"5D4" => DATA <= x"20"; - when x"5D5" => DATA <= x"38"; - when x"5D6" => DATA <= x"13"; - when x"5D7" => DATA <= x"B6"; - when x"5D8" => DATA <= x"FE"; - when x"5D9" => DATA <= x"E5"; - when x"5DA" => DATA <= x"F6"; - when x"5DB" => DATA <= x"FE"; - when x"5DC" => DATA <= x"E5"; - when x"5DD" => DATA <= x"ED"; - when x"5DE" => DATA <= x"81"; - when x"5DF" => DATA <= x"B6"; - when x"5E0" => DATA <= x"FF"; - when x"5E1" => DATA <= x"94"; - when x"5E2" => DATA <= x"26"; - when x"5E3" => DATA <= x"F2"; - when x"5E4" => DATA <= x"20"; - when x"5E5" => DATA <= x"28"; - when x"5E6" => DATA <= x"13"; - when x"5E7" => DATA <= x"EC"; - when x"5E8" => DATA <= x"81"; - when x"5E9" => DATA <= x"B7"; - when x"5EA" => DATA <= x"FE"; - when x"5EB" => DATA <= x"E5"; - when x"5EC" => DATA <= x"F7"; - when x"5ED" => DATA <= x"FE"; - when x"5EE" => DATA <= x"E5"; - when x"5EF" => DATA <= x"B6"; - when x"5F0" => DATA <= x"FF"; - when x"5F1" => DATA <= x"94"; - when x"5F2" => DATA <= x"26"; - when x"5F3" => DATA <= x"F2"; - when x"5F4" => DATA <= x"20"; - when x"5F5" => DATA <= x"18"; - when x"5F6" => DATA <= x"13"; - when x"5F7" => DATA <= x"B6"; + when x"5CD" => DATA <= x"A6"; + when x"5CE" => DATA <= x"85"; + when x"5CF" => DATA <= x"B7"; + when x"5D0" => DATA <= x"FE"; + when x"5D1" => DATA <= x"E5"; + when x"5D2" => DATA <= x"5C"; + when x"5D3" => DATA <= x"26"; + when x"5D4" => DATA <= x"F2"; + when x"5D5" => DATA <= x"B6"; + when x"5D6" => DATA <= x"FE"; + when x"5D7" => DATA <= x"E4"; + when x"5D8" => DATA <= x"48"; + when x"5D9" => DATA <= x"2A"; + when x"5DA" => DATA <= x"FA"; + when x"5DB" => DATA <= x"B7"; + when x"5DC" => DATA <= x"FE"; + when x"5DD" => DATA <= x"E5"; + when x"5DE" => DATA <= x"30"; + when x"5DF" => DATA <= x"89"; + when x"5E0" => DATA <= x"01"; + when x"5E1" => DATA <= x"00"; + when x"5E2" => DATA <= x"20"; + when x"5E3" => DATA <= x"38"; + when x"5E4" => DATA <= x"13"; + when x"5E5" => DATA <= x"B6"; + when x"5E6" => DATA <= x"FE"; + when x"5E7" => DATA <= x"E5"; + when x"5E8" => DATA <= x"F6"; + when x"5E9" => DATA <= x"FE"; + when x"5EA" => DATA <= x"E5"; + when x"5EB" => DATA <= x"ED"; + when x"5EC" => DATA <= x"81"; + when x"5ED" => DATA <= x"B6"; + when x"5EE" => DATA <= x"FF"; + when x"5EF" => DATA <= x"94"; + when x"5F0" => DATA <= x"26"; + when x"5F1" => DATA <= x"F2"; + when x"5F2" => DATA <= x"20"; + when x"5F3" => DATA <= x"28"; + when x"5F4" => DATA <= x"13"; + when x"5F5" => DATA <= x"EC"; + when x"5F6" => DATA <= x"81"; + when x"5F7" => DATA <= x"B7"; when x"5F8" => DATA <= x"FE"; when x"5F9" => DATA <= x"E5"; - when x"5FA" => DATA <= x"A7"; - when x"5FB" => DATA <= x"80"; - when x"5FC" => DATA <= x"B6"; - when x"5FD" => DATA <= x"FF"; - when x"5FE" => DATA <= x"94"; - when x"5FF" => DATA <= x"26"; - when x"600" => DATA <= x"F5"; - when x"601" => DATA <= x"20"; - when x"602" => DATA <= x"0B"; - when x"603" => DATA <= x"13"; - when x"604" => DATA <= x"A6"; - when x"605" => DATA <= x"80"; - when x"606" => DATA <= x"B7"; - when x"607" => DATA <= x"FE"; - when x"608" => DATA <= x"E5"; - when x"609" => DATA <= x"B6"; - when x"60A" => DATA <= x"FF"; - when x"60B" => DATA <= x"94"; - when x"60C" => DATA <= x"26"; - when x"60D" => DATA <= x"F5"; - when x"60E" => DATA <= x"BF"; - when x"60F" => DATA <= x"FF"; - when x"610" => DATA <= x"8E"; - when x"611" => DATA <= x"35"; - when x"612" => DATA <= x"16"; - when x"613" => DATA <= x"3B"; - when x"614" => DATA <= x"32"; - when x"615" => DATA <= x"6A"; - when x"616" => DATA <= x"35"; - when x"617" => DATA <= x"10"; - when x"618" => DATA <= x"BF"; - when x"619" => DATA <= x"FF"; - when x"61A" => DATA <= x"82"; - when x"61B" => DATA <= x"1C"; - when x"61C" => DATA <= x"00"; - when x"61D" => DATA <= x"6E"; - when x"61E" => DATA <= x"9F"; - when x"61F" => DATA <= x"FF"; - when x"620" => DATA <= x"FA"; - when x"621" => DATA <= x"FF"; - when x"622" => DATA <= x"FF"; - when x"623" => DATA <= x"FF"; - when x"624" => DATA <= x"FF"; - when x"625" => DATA <= x"FF"; - when x"626" => DATA <= x"FF"; + when x"5FA" => DATA <= x"F7"; + when x"5FB" => DATA <= x"FE"; + when x"5FC" => DATA <= x"E5"; + when x"5FD" => DATA <= x"B6"; + when x"5FE" => DATA <= x"FF"; + when x"5FF" => DATA <= x"94"; + when x"600" => DATA <= x"26"; + when x"601" => DATA <= x"F2"; + when x"602" => DATA <= x"20"; + when x"603" => DATA <= x"18"; + when x"604" => DATA <= x"13"; + when x"605" => DATA <= x"B6"; + when x"606" => DATA <= x"FE"; + when x"607" => DATA <= x"E5"; + when x"608" => DATA <= x"A7"; + when x"609" => DATA <= x"80"; + when x"60A" => DATA <= x"B6"; + when x"60B" => DATA <= x"FF"; + when x"60C" => DATA <= x"94"; + when x"60D" => DATA <= x"26"; + when x"60E" => DATA <= x"F5"; + when x"60F" => DATA <= x"20"; + when x"610" => DATA <= x"0B"; + when x"611" => DATA <= x"13"; + when x"612" => DATA <= x"A6"; + when x"613" => DATA <= x"80"; + when x"614" => DATA <= x"B7"; + when x"615" => DATA <= x"FE"; + when x"616" => DATA <= x"E5"; + when x"617" => DATA <= x"B6"; + when x"618" => DATA <= x"FF"; + when x"619" => DATA <= x"94"; + when x"61A" => DATA <= x"26"; + when x"61B" => DATA <= x"F5"; + when x"61C" => DATA <= x"BF"; + when x"61D" => DATA <= x"FF"; + when x"61E" => DATA <= x"8E"; + when x"61F" => DATA <= x"35"; + when x"620" => DATA <= x"16"; + when x"621" => DATA <= x"3B"; + when x"622" => DATA <= x"32"; + when x"623" => DATA <= x"6A"; + when x"624" => DATA <= x"35"; + when x"625" => DATA <= x"10"; + when x"626" => DATA <= x"BF"; when x"627" => DATA <= x"FF"; - when x"628" => DATA <= x"FF"; - when x"629" => DATA <= x"FF"; - when x"62A" => DATA <= x"FF"; - when x"62B" => DATA <= x"FF"; - when x"62C" => DATA <= x"FF"; + when x"628" => DATA <= x"82"; + when x"629" => DATA <= x"1C"; + when x"62A" => DATA <= x"00"; + when x"62B" => DATA <= x"6E"; + when x"62C" => DATA <= x"9F"; when x"62D" => DATA <= x"FF"; - when x"62E" => DATA <= x"FF"; + when x"62E" => DATA <= x"FA"; when x"62F" => DATA <= x"FF"; when x"630" => DATA <= x"FF"; when x"631" => DATA <= x"FF"; @@ -1804,21 +1804,21 @@ begin when x"6EE" => DATA <= x"FF"; when x"6EF" => DATA <= x"FF"; when x"6F0" => DATA <= x"FE"; - when x"6F1" => DATA <= x"13"; + when x"6F1" => DATA <= x"21"; when x"6F2" => DATA <= x"FE"; - when x"6F3" => DATA <= x"13"; + when x"6F3" => DATA <= x"21"; when x"6F4" => DATA <= x"FE"; - when x"6F5" => DATA <= x"13"; + when x"6F5" => DATA <= x"21"; when x"6F6" => DATA <= x"FC"; - when x"6F7" => DATA <= x"DE"; + when x"6F7" => DATA <= x"EC"; when x"6F8" => DATA <= x"FE"; - when x"6F9" => DATA <= x"13"; + when x"6F9" => DATA <= x"21"; when x"6FA" => DATA <= x"FE"; - when x"6FB" => DATA <= x"14"; + when x"6FB" => DATA <= x"22"; when x"6FC" => DATA <= x"FE"; - when x"6FD" => DATA <= x"13"; + when x"6FD" => DATA <= x"21"; when x"6FE" => DATA <= x"F8"; - when x"6FF" => DATA <= x"2B"; + when x"6FF" => DATA <= x"2C"; when x"700" => DATA <= x"00"; when x"701" => DATA <= x"00"; when x"702" => DATA <= x"00"; @@ -1952,7 +1952,7 @@ begin when x"782" => DATA <= x"F8"; when x"783" => DATA <= x"16"; when x"784" => DATA <= x"F8"; - when x"785" => DATA <= x"AF"; + when x"785" => DATA <= x"B0"; when x"786" => DATA <= x"F8"; when x"787" => DATA <= x"16"; when x"788" => DATA <= x"00"; @@ -1970,82 +1970,82 @@ begin when x"794" => DATA <= x"00"; when x"795" => DATA <= x"7E"; when x"796" => DATA <= x"FA"; - when x"797" => DATA <= x"7F"; + when x"797" => DATA <= x"86"; when x"798" => DATA <= x"7E"; when x"799" => DATA <= x"F8"; - when x"79A" => DATA <= x"2B"; + when x"79A" => DATA <= x"2C"; when x"79B" => DATA <= x"7E"; when x"79C" => DATA <= x"FA"; - when x"79D" => DATA <= x"7F"; + when x"79D" => DATA <= x"86"; when x"79E" => DATA <= x"7E"; - when x"79F" => DATA <= x"F9"; - when x"7A0" => DATA <= x"3B"; + when x"79F" => DATA <= x"FA"; + when x"7A0" => DATA <= x"86"; when x"7A1" => DATA <= x"7E"; - when x"7A2" => DATA <= x"FA"; - when x"7A3" => DATA <= x"7F"; + when x"7A2" => DATA <= x"F9"; + when x"7A3" => DATA <= x"3C"; when x"7A4" => DATA <= x"7E"; when x"7A5" => DATA <= x"FA"; - when x"7A6" => DATA <= x"7F"; + when x"7A6" => DATA <= x"86"; when x"7A7" => DATA <= x"7E"; when x"7A8" => DATA <= x"F8"; - when x"7A9" => DATA <= x"70"; + when x"7A9" => DATA <= x"71"; when x"7AA" => DATA <= x"7E"; when x"7AB" => DATA <= x"F9"; - when x"7AC" => DATA <= x"10"; + when x"7AC" => DATA <= x"11"; when x"7AD" => DATA <= x"7E"; when x"7AE" => DATA <= x"F9"; - when x"7AF" => DATA <= x"04"; + when x"7AF" => DATA <= x"05"; when x"7B0" => DATA <= x"7E"; - when x"7B1" => DATA <= x"FA"; - when x"7B2" => DATA <= x"7F"; + when x"7B1" => DATA <= x"FE"; + when x"7B2" => DATA <= x"21"; when x"7B3" => DATA <= x"7E"; when x"7B4" => DATA <= x"F9"; - when x"7B5" => DATA <= x"2B"; + when x"7B5" => DATA <= x"2C"; when x"7B6" => DATA <= x"7E"; when x"7B7" => DATA <= x"FA"; - when x"7B8" => DATA <= x"7F"; + when x"7B8" => DATA <= x"86"; when x"7B9" => DATA <= x"7E"; when x"7BA" => DATA <= x"F8"; - when x"7BB" => DATA <= x"70"; + when x"7BB" => DATA <= x"71"; when x"7BC" => DATA <= x"7E"; when x"7BD" => DATA <= x"FE"; - when x"7BE" => DATA <= x"16"; + when x"7BE" => DATA <= x"24"; when x"7BF" => DATA <= x"7E"; when x"7C0" => DATA <= x"F8"; - when x"7C1" => DATA <= x"D1"; + when x"7C1" => DATA <= x"D2"; when x"7C2" => DATA <= x"7E"; when x"7C3" => DATA <= x"FA"; - when x"7C4" => DATA <= x"7F"; + when x"7C4" => DATA <= x"86"; when x"7C5" => DATA <= x"7E"; when x"7C6" => DATA <= x"F9"; - when x"7C7" => DATA <= x"32"; + when x"7C7" => DATA <= x"33"; when x"7C8" => DATA <= x"7E"; when x"7C9" => DATA <= x"FA"; - when x"7CA" => DATA <= x"7F"; + when x"7CA" => DATA <= x"86"; when x"7CB" => DATA <= x"7E"; when x"7CC" => DATA <= x"FA"; - when x"7CD" => DATA <= x"7F"; + when x"7CD" => DATA <= x"86"; when x"7CE" => DATA <= x"7E"; when x"7CF" => DATA <= x"FC"; - when x"7D0" => DATA <= x"25"; + when x"7D0" => DATA <= x"33"; when x"7D1" => DATA <= x"7E"; when x"7D2" => DATA <= x"FC"; - when x"7D3" => DATA <= x"75"; + when x"7D3" => DATA <= x"83"; when x"7D4" => DATA <= x"7E"; when x"7D5" => DATA <= x"FC"; - when x"7D6" => DATA <= x"0F"; + when x"7D6" => DATA <= x"1D"; when x"7D7" => DATA <= x"7E"; when x"7D8" => DATA <= x"FC"; - when x"7D9" => DATA <= x"00"; + when x"7D9" => DATA <= x"0E"; when x"7DA" => DATA <= x"7E"; when x"7DB" => DATA <= x"FB"; - when x"7DC" => DATA <= x"DC"; + when x"7DC" => DATA <= x"EA"; when x"7DD" => DATA <= x"7E"; when x"7DE" => DATA <= x"FC"; - when x"7DF" => DATA <= x"45"; + when x"7DF" => DATA <= x"53"; when x"7E0" => DATA <= x"7E"; when x"7E1" => DATA <= x"FA"; - when x"7E2" => DATA <= x"A5"; + when x"7E2" => DATA <= x"AC"; when x"7E3" => DATA <= x"81"; when x"7E4" => DATA <= x"0D"; when x"7E5" => DATA <= x"26"; @@ -2059,22 +2059,22 @@ begin when x"7ED" => DATA <= x"0D"; when x"7EE" => DATA <= x"7E"; when x"7EF" => DATA <= x"FC"; - when x"7F0" => DATA <= x"BE"; + when x"7F0" => DATA <= x"CC"; when x"7F1" => DATA <= x"7E"; when x"7F2" => DATA <= x"FB"; - when x"7F3" => DATA <= x"25"; + when x"7F3" => DATA <= x"33"; when x"7F4" => DATA <= x"7E"; when x"7F5" => DATA <= x"FA"; - when x"7F6" => DATA <= x"B6"; + when x"7F6" => DATA <= x"BD"; when x"7F7" => DATA <= x"7E"; when x"7F8" => DATA <= x"F9"; - when x"7F9" => DATA <= x"75"; + when x"7F9" => DATA <= x"76"; when x"7FA" => DATA <= x"F8"; - when x"7FB" => DATA <= x"AF"; + when x"7FB" => DATA <= x"B0"; when x"7FC" => DATA <= x"FA"; - when x"7FD" => DATA <= x"7F"; + when x"7FD" => DATA <= x"86"; when x"7FE" => DATA <= x"F8"; - when x"7FF" => DATA <= x"2B"; + when x"7FF" => DATA <= x"2C"; when others => DATA <= (others => '0'); end case; end process; diff --git a/src/ROM/tuberom_pdp11.vhd b/src/ROM/tuberom_pdp11.vhd index 7e8fff0..095886f 100644 --- a/src/ROM/tuberom_pdp11.vhd +++ b/src/ROM/tuberom_pdp11.vhd @@ -38,7 +38,7 @@ begin when x"008" => DATA <= x"3436"; when x"009" => DATA <= x"204b"; when x"00a" => DATA <= x"2e30"; - when x"00b" => DATA <= x"3332"; + when x"00b" => DATA <= x"3035"; when x"00c" => DATA <= x"0d20"; when x"00d" => DATA <= x"000d"; when x"00e" => DATA <= x"15c6"; @@ -765,7 +765,7 @@ begin when x"2df" => DATA <= x"02fd"; when x"2e0" => DATA <= x"0087"; when x"2e1" => DATA <= x"f83e"; - when x"2e2" => DATA <= x"0000"; + when x"2e2" => DATA <= x"0050"; when x"2e3" => DATA <= x"f890"; when x"2e4" => DATA <= x"f5ff"; when x"2e5" => DATA <= x"f87a";