Files
vhdl/projects/cpu/src/systest/counter_irom_ld.vhdl
T
jens ea60299d26 - added
git-svn-id: http://moon:8086/svn/vhdl/trunk@1414 cc03376c-175c-47c8-b038-4cd826a8556b
2021-03-21 10:47:01 +00:00

1183 lines
39 KiB
VHDL

-------------------------------------------------------------------------
-- Project: JCPU, a portable 8-bit RISC CPU written in VHDL
-- This file: loadable ROM
-- Copyright (C) 2007 J. Ahrensfeld
-- This library 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 library 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 library; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-- For questions and ideas, please contact the author at jens@jayfield.org
-----------------------------------------------------------------------
LIBRARY ieee;
use IEEE.STD_LOGIC_1164.ALL;
USE ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.VComponents.all;
library work;
use work.cpu_pkg.all;
ENTITY irom IS
Port (
clk : in STD_LOGIC;
ce : in STD_LOGIC;
addr : in inst_addr_t;
dout : out inst_t
);
END irom;
ARCHITECTURE loadable OF irom IS
-- JASM_ROM_INSERT_HERE
-- Assembled from counter.jsm
type imem_rom_t is array (0 to 1023) of inst_t;
signal imem_rom : imem_rom_t :=
(
"110000" & X"3FF", -- 0x000: JMP 0x3FF
"111100" & X"000", -- 0x001: PUSH R00
"111100" & X"001", -- 0x002: PUSH R01
"111100" & X"002", -- 0x003: PUSH R02
"111100" & X"003", -- 0x004: PUSH R03
"111100" & X"004", -- 0x005: PUSH R04
"111100" & X"005", -- 0x006: PUSH R05
"111100" & X"006", -- 0x007: PUSH R06
"111100" & X"007", -- 0x008: PUSH R07
"111100" & X"008", -- 0x009: PUSH R08
"111100" & X"009", -- 0x00A: PUSH R09
"111100" & X"00A", -- 0x00B: PUSH R10
"111100" & X"00B", -- 0x00C: PUSH R11
"111100" & X"00C", -- 0x00D: PUSH R12
"111100" & X"00D", -- 0x00E: PUSH R13
"111100" & X"00E", -- 0x00F: PUSH R14
"111100" & X"00F", -- 0x010: PUSH R15
"101000" & X"060", -- 0x011: XIN R00, (0x06)
"011001" & X"100", -- 0x012: AND R00, 0x10
"110001" & X"020", -- 0x013: JZ 0x020
"101000" & X"020", -- 0x014: XIN R00, (0x02)
"001111" & X"0D0", -- 0x015: CMP R00, 0x0D
"111001" & X"01B", -- 0x016: JEQ 0x01B
"001010" & X"1E1", -- 0x017: MOVC R01, (0x1E)
"001011" & X"010", -- 0x018: MOVC (R00), R01
"001111" & X"1D1", -- 0x019: CMP R01, 0x1D
"110101" & X"01E", -- 0x01A: JLT 0x01E
"000011" & X"0E1", -- 0x01B: MOV R01, 0x0E
"010101" & X"011", -- 0x01C: DEC R01
"001101" & X"1F1", -- 0x01D: MOVC (0x1F), R01
"010001" & X"011", -- 0x01E: INC R01
"001101" & X"1E1", -- 0x01F: MOVC (0x1E), R01
"111011" & X"098", -- 0x020: CALL 0x098
"111101" & X"00F", -- 0x021: POP R15
"111101" & X"00E", -- 0x022: POP R14
"111101" & X"00D", -- 0x023: POP R13
"111101" & X"00C", -- 0x024: POP R12
"111101" & X"00B", -- 0x025: POP R11
"111101" & X"00A", -- 0x026: POP R10
"111101" & X"009", -- 0x027: POP R09
"111101" & X"008", -- 0x028: POP R08
"111101" & X"007", -- 0x029: POP R07
"111101" & X"006", -- 0x02A: POP R06
"111101" & X"005", -- 0x02B: POP R05
"111101" & X"004", -- 0x02C: POP R04
"111101" & X"003", -- 0x02D: POP R03
"111101" & X"002", -- 0x02E: POP R02
"111101" & X"001", -- 0x02F: POP R01
"111101" & X"000", -- 0x030: POP R00
"111111" & X"000", -- 0x031: RETI
"111011" & X"092", -- 0x032: CALL 0x092
"111011" & X"0C8", -- 0x033: CALL 0x0C8
"000011" & X"000", -- 0x034: MOV R00, 0x00
"001101" & X"0C0", -- 0x035: MOVC (0x0C), R00
"100100" & X"010", -- 0x036: XOUT (0x01), R00
"001101" & X"1F0", -- 0x037: MOVC (0x1F), R00
"101000" & X"001", -- 0x038: XIN R01, (0x00)
"011011" & X"801", -- 0x039: OR R01, 0x80
"001101" & X"0D1", -- 0x03A: MOVC (0x0D), R01
"000011" & X"0E0", -- 0x03B: MOV R00, 0x0E
"001101" & X"1E0", -- 0x03C: MOVC (0x1E), R00
"000011" & X"040", -- 0x03D: MOV R00, 0x04
"100101" & X"020", -- 0x03E: XOUT (R00), 0x02
"100101" & X"030", -- 0x03F: XOUT (R00), 0x03
"000011" & X"640", -- 0x040: MOV R00, 0x64
"001101" & X"0C0", -- 0x041: MOVC (0x0C), R00
"000011" & X"030", -- 0x042: MOV R00, 0x03
"100110" & X"030", -- 0x043: COUT (0x03), R00
"000011" & X"010", -- 0x044: MOV R00, 0x01
"111011" & X"0E5", -- 0x045: CALL 0x0E5
"000011" & X"001", -- 0x046: MOV R01, 0x00
"111011" & X"0EA", -- 0x047: CALL 0x0EA
"101001" & X"000", -- 0x048: CIN R00, (0x00)
"010001" & X"300", -- 0x049: ADD R00, 0x30
"111011" & X"0FC", -- 0x04A: CALL 0x0FC
"000011" & X"000", -- 0x04B: MOV R00, 0x00
"100110" & X"010", -- 0x04C: COUT (0x01), R00
"000011" & X"001", -- 0x04D: MOV R01, 0x00
"001101" & X"201", -- 0x04E: MOVC (0x20), R01
"000011" & X"010", -- 0x04F: MOV R00, 0x01
"100110" & X"010", -- 0x050: COUT (0x01), R00
"000011" & X"AA1", -- 0x051: MOV R01, 0xAA
"001101" & X"201", -- 0x052: MOVC (0x20), R01
"000011" & X"000", -- 0x053: MOV R00, 0x00
"100110" & X"010", -- 0x054: COUT (0x01), R00
"001010" & X"200", -- 0x055: MOVC R00, (0x20)
"001111" & X"AA0", -- 0x056: CMP R00, 0xAA
"111001" & X"05D", -- 0x057: JEQ 0x05D
"000011" & X"010", -- 0x058: MOV R00, 0x01
"100110" & X"010", -- 0x059: COUT (0x01), R00
"001010" & X"200", -- 0x05A: MOVC R00, (0x20)
"001111" & X"AA0", -- 0x05B: CMP R00, 0xAA
"111001" & X"05E", -- 0x05C: JEQ 0x05E
"110000" & X"05D", -- 0x05D: JMP 0x05D
"000011" & X"000", -- 0x05E: MOV R00, 0x00
"100110" & X"010", -- 0x05F: COUT (0x01), R00
"000001" & X"000", -- 0x060: HALT
"001010" & X"0C0", -- 0x061: MOVC R00, (0x0C)
"010101" & X"010", -- 0x062: DEC R00
"001101" & X"0C0", -- 0x063: MOVC (0x0C), R00
"110010" & X"060", -- 0x064: JNZ 0x060
"000011" & X"647", -- 0x065: MOV R07, 0x64
"001010" & X"041", -- 0x066: MOVC R01, (0x04)
"001010" & X"052", -- 0x067: MOVC R02, (0x05)
"101010" & X"001", -- 0x068: SWAP R01
"011100" & X"021", -- 0x069: XOR R01, R02
"011001" & X"021", -- 0x06A: AND R01, 0x02
"110010" & X"06F", -- 0x06B: JNZ 0x06F
"010101" & X"017", -- 0x06C: DEC R07
"000011" & X"2D0", -- 0x06D: MOV R00, 0x2D
"110000" & X"071", -- 0x06E: JMP 0x071
"010001" & X"017", -- 0x06F: INC R07
"000011" & X"2B0", -- 0x070: MOV R00, 0x2B
"001101" & X"0C7", -- 0x071: MOVC (0x0C), R07
"111011" & X"0BA", -- 0x072: CALL 0x0BA
"001010" & X"0D0", -- 0x073: MOVC R00, (0x0D)
"100000" & X"000", -- 0x074: ROL R00
"001101" & X"0D0", -- 0x075: MOVC (0x0D), R00
"100100" & X"010", -- 0x076: XOUT (0x01), R00
"001010" & X"1F0", -- 0x077: MOVC R00, (0x1F)
"000011" & X"001", -- 0x078: MOV R01, 0x00
"001101" & X"1F1", -- 0x079: MOVC (0x1F), R01
"001111" & X"000", -- 0x07A: TST R00
"110001" & X"082", -- 0x07B: JZ 0x082
"000011" & X"0E1", -- 0x07C: MOV R01, 0x0E
"001001" & X"010", -- 0x07D: MOVC R00, (R01)
"111011" & X"0FC", -- 0x07E: CALL 0x0FC
"010001" & X"011", -- 0x07F: INC R01
"001111" & X"1D1", -- 0x080: CMP R01, 0x1D
"110111" & X"07D", -- 0x081: JLE 0x07D
"111011" & X"0A2", -- 0x082: CALL 0x0A2
"000011" & X"C00", -- 0x083: MOV R00, 0xC0
"111011" & X"0E5", -- 0x084: CALL 0x0E5
"000011" & X"0B1", -- 0x085: MOV R01, 0x0B
"001001" & X"010", -- 0x086: MOVC R00, (R01)
"111011" & X"0BA", -- 0x087: CALL 0x0BA
"111011" & X"0FC", -- 0x088: CALL 0x0FC
"001111" & X"041", -- 0x089: CMP R01, 0x04
"111001" & X"08D", -- 0x08A: JEQ 0x08D
"010101" & X"011", -- 0x08B: DEC R01
"110000" & X"086", -- 0x08C: JMP 0x086
"000011" & X"0D0", -- 0x08D: MOV R00, 0x0D
"111011" & X"0BA", -- 0x08E: CALL 0x0BA
"000011" & X"0A0", -- 0x08F: MOV R00, 0x0A
"111011" & X"0BA", -- 0x090: CALL 0x0BA
"110000" & X"060", -- 0x091: JMP 0x060
"000011" & X"000", -- 0x092: MOV R00, 0x00
"001101" & X"000", -- 0x093: MOVC (0x00), R00
"001101" & X"010", -- 0x094: MOVC (0x01), R00
"001101" & X"020", -- 0x095: MOVC (0x02), R00
"001101" & X"030", -- 0x096: MOVC (0x03), R00
"111110" & X"000", -- 0x097: RET
"000011" & X"000", -- 0x098: MOV R00, 0x00
"001001" & X"001", -- 0x099: MOVC R01, (R00)
"010001" & X"011", -- 0x09A: INC R01
"001011" & X"001", -- 0x09B: MOVC (R01), R00
"110100" & X"0A1", -- 0x09C: JNC 0x0A1
"001111" & X"030", -- 0x09D: CMP R00, 0x03
"111001" & X"0A1", -- 0x09E: JEQ 0x0A1
"010001" & X"010", -- 0x09F: INC R00
"110000" & X"099", -- 0x0A0: JMP 0x099
"111110" & X"000", -- 0x0A1: RET
"000011" & X"042", -- 0x0A2: MOV R02, 0x04
"000011" & X"000", -- 0x0A3: MOV R00, 0x00
"001001" & X"001", -- 0x0A4: MOVC R01, (R00)
"011001" & X"0F1", -- 0x0A5: AND R01, 0x0F
"001111" & X"0A1", -- 0x0A6: CMP R01, 0x0A
"110101" & X"0A9", -- 0x0A7: JLT 0x0A9
"010001" & X"071", -- 0x0A8: ADD R01, 0x07
"010001" & X"301", -- 0x0A9: ADD R01, 0x30
"001011" & X"021", -- 0x0AA: MOVC (R01), R02
"010001" & X"012", -- 0x0AB: INC R02
"001001" & X"001", -- 0x0AC: MOVC R01, (R00)
"101010" & X"001", -- 0x0AD: SWAP R01
"011001" & X"0F1", -- 0x0AE: AND R01, 0x0F
"001111" & X"0A1", -- 0x0AF: CMP R01, 0x0A
"110101" & X"0B2", -- 0x0B0: JLT 0x0B2
"010001" & X"071", -- 0x0B1: ADD R01, 0x07
"010001" & X"301", -- 0x0B2: ADD R01, 0x30
"001011" & X"021", -- 0x0B3: MOVC (R01), R02
"001111" & X"030", -- 0x0B4: CMP R00, 0x03
"111001" & X"0B9", -- 0x0B5: JEQ 0x0B9
"010001" & X"010", -- 0x0B6: INC R00
"010001" & X"012", -- 0x0B7: INC R02
"110000" & X"0A4", -- 0x0B8: JMP 0x0A4
"111110" & X"000", -- 0x0B9: RET
"111100" & X"001", -- 0x0BA: PUSH R01
"101000" & X"061", -- 0x0BB: XIN R01, (0x06)
"011001" & X"021", -- 0x0BC: AND R01, 0x02
"110010" & X"0BB", -- 0x0BD: JNZ 0x0BB
"100100" & X"020", -- 0x0BE: XOUT (0x02), R00
"111101" & X"001", -- 0x0BF: POP R01
"111110" & X"000", -- 0x0C0: RET
"111100" & X"001", -- 0x0C1: PUSH R01
"101000" & X"061", -- 0x0C2: XIN R01, (0x06)
"011001" & X"101", -- 0x0C3: AND R01, 0x10
"110010" & X"0C2", -- 0x0C4: JNZ 0x0C2
"101000" & X"020", -- 0x0C5: XIN R00, (0x02)
"111101" & X"001", -- 0x0C6: POP R01
"111110" & X"000", -- 0x0C7: RET
"000011" & X"002", -- 0x0C8: MOV R02, 0x00
"000011" & X"030", -- 0x0C9: MOV R00, 0x03
"111011" & X"114", -- 0x0CA: CALL 0x114
"111011" & X"147", -- 0x0CB: CALL 0x147
"000011" & X"002", -- 0x0CC: MOV R02, 0x00
"000011" & X"030", -- 0x0CD: MOV R00, 0x03
"111011" & X"114", -- 0x0CE: CALL 0x114
"111011" & X"147", -- 0x0CF: CALL 0x147
"000011" & X"002", -- 0x0D0: MOV R02, 0x00
"000011" & X"020", -- 0x0D1: MOV R00, 0x02
"111011" & X"114", -- 0x0D2: CALL 0x114
"111011" & X"14E", -- 0x0D3: CALL 0x14E
"000011" & X"280", -- 0x0D4: MOV R00, 0x28
"111011" & X"0E5", -- 0x0D5: CALL 0x0E5
"000011" & X"0C0", -- 0x0D6: MOV R00, 0x0C
"111011" & X"0E5", -- 0x0D7: CALL 0x0E5
"000011" & X"060", -- 0x0D8: MOV R00, 0x06
"111011" & X"0E5", -- 0x0D9: CALL 0x0E5
"000011" & X"010", -- 0x0DA: MOV R00, 0x01
"111011" & X"0E5", -- 0x0DB: CALL 0x0E5
"111110" & X"000", -- 0x0DC: RET
"111100" & X"000", -- 0x0DD: PUSH R00
"111011" & X"108", -- 0x0DE: CALL 0x108
"011001" & X"800", -- 0x0DF: AND R00, 0x80
"110001" & X"0E3", -- 0x0E0: JZ 0x0E3
"111011" & X"165", -- 0x0E1: CALL 0x165
"110000" & X"0DE", -- 0x0E2: JMP 0x0DE
"111101" & X"000", -- 0x0E3: POP R00
"111110" & X"000", -- 0x0E4: RET
"111100" & X"002", -- 0x0E5: PUSH R02
"000011" & X"002", -- 0x0E6: MOV R02, 0x00
"111011" & X"101", -- 0x0E7: CALL 0x101
"111101" & X"002", -- 0x0E8: POP R02
"111110" & X"000", -- 0x0E9: RET
"111100" & X"000", -- 0x0EA: PUSH R00
"000100" & X"010", -- 0x0EB: MOVX R00, (R01)
"010001" & X"011", -- 0x0EC: INC R01
"001111" & X"000", -- 0x0ED: TST R00
"110001" & X"0F1", -- 0x0EE: JZ 0x0F1
"111011" & X"0FC", -- 0x0EF: CALL 0x0FC
"110000" & X"0EB", -- 0x0F0: JMP 0x0EB
"111101" & X"000", -- 0x0F1: POP R00
"111110" & X"000", -- 0x0F2: RET
"111100" & X"000", -- 0x0F3: PUSH R00
"001001" & X"010", -- 0x0F4: MOVC R00, (R01)
"010001" & X"011", -- 0x0F5: INC R01
"001111" & X"000", -- 0x0F6: TST R00
"110001" & X"0FA", -- 0x0F7: JZ 0x0FA
"111011" & X"0FC", -- 0x0F8: CALL 0x0FC
"110000" & X"0F4", -- 0x0F9: JMP 0x0F4
"111101" & X"000", -- 0x0FA: POP R00
"111110" & X"000", -- 0x0FB: RET
"111100" & X"002", -- 0x0FC: PUSH R02
"000011" & X"402", -- 0x0FD: MOV R02, 0x40
"111011" & X"101", -- 0x0FE: CALL 0x101
"111101" & X"002", -- 0x0FF: POP R02
"111110" & X"000", -- 0x100: RET
"111011" & X"0DD", -- 0x101: CALL 0x0DD
"111100" & X"000", -- 0x102: PUSH R00
"101010" & X"000", -- 0x103: SWAP R00
"111011" & X"114", -- 0x104: CALL 0x114
"111101" & X"000", -- 0x105: POP R00
"111011" & X"114", -- 0x106: CALL 0x114
"111110" & X"000", -- 0x107: RET
"111100" & X"002", -- 0x108: PUSH R02
"000011" & X"002", -- 0x109: MOV R02, 0x00
"111011" & X"10D", -- 0x10A: CALL 0x10D
"111101" & X"002", -- 0x10B: POP R02
"111110" & X"000", -- 0x10C: RET
"111011" & X"127", -- 0x10D: CALL 0x127
"101010" & X"000", -- 0x10E: SWAP R00
"111100" & X"000", -- 0x10F: PUSH R00
"111011" & X"127", -- 0x110: CALL 0x127
"111101" & X"002", -- 0x111: POP R02
"011010" & X"020", -- 0x112: OR R00, R02
"111110" & X"000", -- 0x113: RET
"111100" & X"001", -- 0x114: PUSH R01
"011001" & X"0F0", -- 0x115: AND R00, 0x0F
"000010" & X"001", -- 0x116: MOV R01, R00
"011010" & X"021", -- 0x117: OR R01, R02
"100100" & X"031", -- 0x118: XOUT (0x03), R01
"111011" & X"165", -- 0x119: CALL 0x165
"000010" & X"001", -- 0x11A: MOV R01, R00
"011010" & X"021", -- 0x11B: OR R01, R02
"011011" & X"801", -- 0x11C: OR R01, 0x80
"100100" & X"031", -- 0x11D: XOUT (0x03), R01
"111011" & X"165", -- 0x11E: CALL 0x165
"000010" & X"001", -- 0x11F: MOV R01, R00
"011010" & X"021", -- 0x120: OR R01, R02
"100100" & X"031", -- 0x121: XOUT (0x03), R01
"111011" & X"165", -- 0x122: CALL 0x165
"011011" & X"201", -- 0x123: OR R01, 0x20
"100100" & X"031", -- 0x124: XOUT (0x03), R01
"111101" & X"001", -- 0x125: POP R01
"111110" & X"000", -- 0x126: RET
"111100" & X"001", -- 0x127: PUSH R01
"000011" & X"201", -- 0x128: MOV R01, 0x20
"011010" & X"021", -- 0x129: OR R01, R02
"100100" & X"031", -- 0x12A: XOUT (0x03), R01
"111011" & X"165", -- 0x12B: CALL 0x165
"000011" & X"201", -- 0x12C: MOV R01, 0x20
"011010" & X"021", -- 0x12D: OR R01, R02
"011011" & X"801", -- 0x12E: OR R01, 0x80
"100100" & X"031", -- 0x12F: XOUT (0x03), R01
"111011" & X"165", -- 0x130: CALL 0x165
"101000" & X"030", -- 0x131: XIN R00, (0x03)
"011001" & X"0F0", -- 0x132: AND R00, 0x0F
"000011" & X"201", -- 0x133: MOV R01, 0x20
"011010" & X"021", -- 0x134: OR R01, R02
"100100" & X"031", -- 0x135: XOUT (0x03), R01
"111011" & X"165", -- 0x136: CALL 0x165
"111101" & X"001", -- 0x137: POP R01
"111110" & X"000", -- 0x138: RET
"111100" & X"00F", -- 0x139: PUSH R15
"000011" & X"0AF", -- 0x13A: MOV R15, 0x0A
"111011" & X"140", -- 0x13B: CALL 0x140
"010101" & X"01F", -- 0x13C: DEC R15
"110010" & X"13B", -- 0x13D: JNZ 0x13B
"111101" & X"00F", -- 0x13E: POP R15
"111110" & X"000", -- 0x13F: RET
"111100" & X"00F", -- 0x140: PUSH R15
"000011" & X"0AF", -- 0x141: MOV R15, 0x0A
"111011" & X"147", -- 0x142: CALL 0x147
"010101" & X"01F", -- 0x143: DEC R15
"110010" & X"142", -- 0x144: JNZ 0x142
"111101" & X"00F", -- 0x145: POP R15
"111110" & X"000", -- 0x146: RET
"111100" & X"00F", -- 0x147: PUSH R15
"000011" & X"0AF", -- 0x148: MOV R15, 0x0A
"111011" & X"14E", -- 0x149: CALL 0x14E
"010101" & X"01F", -- 0x14A: DEC R15
"110010" & X"149", -- 0x14B: JNZ 0x149
"111101" & X"00F", -- 0x14C: POP R15
"111110" & X"000", -- 0x14D: RET
"111100" & X"00F", -- 0x14E: PUSH R15
"000011" & X"0AF", -- 0x14F: MOV R15, 0x0A
"111011" & X"155", -- 0x150: CALL 0x155
"010101" & X"01F", -- 0x151: DEC R15
"110010" & X"150", -- 0x152: JNZ 0x150
"111101" & X"00F", -- 0x153: POP R15
"111110" & X"000", -- 0x154: RET
"111100" & X"00F", -- 0x155: PUSH R15
"000011" & X"0AF", -- 0x156: MOV R15, 0x0A
"111011" & X"15C", -- 0x157: CALL 0x15C
"010101" & X"01F", -- 0x158: DEC R15
"110010" & X"157", -- 0x159: JNZ 0x157
"111101" & X"00F", -- 0x15A: POP R15
"111110" & X"000", -- 0x15B: RET
"111100" & X"00F", -- 0x15C: PUSH R15
"000011" & X"63F", -- 0x15D: MOV R15, 0x63
"000000" & X"000", -- 0x15E: NOP
"000000" & X"000", -- 0x15F: NOP
"000000" & X"000", -- 0x160: NOP
"010101" & X"01F", -- 0x161: DEC R15
"110010" & X"15E", -- 0x162: JNZ 0x15E
"111101" & X"00F", -- 0x163: POP R15
"111110" & X"000", -- 0x164: RET
"111100" & X"00F", -- 0x165: PUSH R15
"000011" & X"09F", -- 0x166: MOV R15, 0x09
"000000" & X"000", -- 0x167: NOP
"000000" & X"000", -- 0x168: NOP
"000000" & X"000", -- 0x169: NOP
"010101" & X"01F", -- 0x16A: DEC R15
"110010" & X"167", -- 0x16B: JNZ 0x167
"111101" & X"00F", -- 0x16C: POP R15
"111110" & X"000", -- 0x16D: RET
"000000" & X"000", -- 0x16E:
"000000" & X"000", -- 0x16F:
"000000" & X"000", -- 0x170:
"000000" & X"000", -- 0x171:
"000000" & X"000", -- 0x172:
"000000" & X"000", -- 0x173:
"000000" & X"000", -- 0x174:
"000000" & X"000", -- 0x175:
"000000" & X"000", -- 0x176:
"000000" & X"000", -- 0x177:
"000000" & X"000", -- 0x178:
"000000" & X"000", -- 0x179:
"000000" & X"000", -- 0x17A:
"000000" & X"000", -- 0x17B:
"000000" & X"000", -- 0x17C:
"000000" & X"000", -- 0x17D:
"000000" & X"000", -- 0x17E:
"000000" & X"000", -- 0x17F:
"000000" & X"000", -- 0x180:
"000000" & X"000", -- 0x181:
"000000" & X"000", -- 0x182:
"000000" & X"000", -- 0x183:
"000000" & X"000", -- 0x184:
"000000" & X"000", -- 0x185:
"000000" & X"000", -- 0x186:
"000000" & X"000", -- 0x187:
"000000" & X"000", -- 0x188:
"000000" & X"000", -- 0x189:
"000000" & X"000", -- 0x18A:
"000000" & X"000", -- 0x18B:
"000000" & X"000", -- 0x18C:
"000000" & X"000", -- 0x18D:
"000000" & X"000", -- 0x18E:
"000000" & X"000", -- 0x18F:
"000000" & X"000", -- 0x190:
"000000" & X"000", -- 0x191:
"000000" & X"000", -- 0x192:
"000000" & X"000", -- 0x193:
"000000" & X"000", -- 0x194:
"000000" & X"000", -- 0x195:
"000000" & X"000", -- 0x196:
"000000" & X"000", -- 0x197:
"000000" & X"000", -- 0x198:
"000000" & X"000", -- 0x199:
"000000" & X"000", -- 0x19A:
"000000" & X"000", -- 0x19B:
"000000" & X"000", -- 0x19C:
"000000" & X"000", -- 0x19D:
"000000" & X"000", -- 0x19E:
"000000" & X"000", -- 0x19F:
"000000" & X"000", -- 0x1A0:
"000000" & X"000", -- 0x1A1:
"000000" & X"000", -- 0x1A2:
"000000" & X"000", -- 0x1A3:
"000000" & X"000", -- 0x1A4:
"000000" & X"000", -- 0x1A5:
"000000" & X"000", -- 0x1A6:
"000000" & X"000", -- 0x1A7:
"000000" & X"000", -- 0x1A8:
"000000" & X"000", -- 0x1A9:
"000000" & X"000", -- 0x1AA:
"000000" & X"000", -- 0x1AB:
"000000" & X"000", -- 0x1AC:
"000000" & X"000", -- 0x1AD:
"000000" & X"000", -- 0x1AE:
"000000" & X"000", -- 0x1AF:
"000000" & X"000", -- 0x1B0:
"000000" & X"000", -- 0x1B1:
"000000" & X"000", -- 0x1B2:
"000000" & X"000", -- 0x1B3:
"000000" & X"000", -- 0x1B4:
"000000" & X"000", -- 0x1B5:
"000000" & X"000", -- 0x1B6:
"000000" & X"000", -- 0x1B7:
"000000" & X"000", -- 0x1B8:
"000000" & X"000", -- 0x1B9:
"000000" & X"000", -- 0x1BA:
"000000" & X"000", -- 0x1BB:
"000000" & X"000", -- 0x1BC:
"000000" & X"000", -- 0x1BD:
"000000" & X"000", -- 0x1BE:
"000000" & X"000", -- 0x1BF:
"000000" & X"000", -- 0x1C0:
"000000" & X"000", -- 0x1C1:
"000000" & X"000", -- 0x1C2:
"000000" & X"000", -- 0x1C3:
"000000" & X"000", -- 0x1C4:
"000000" & X"000", -- 0x1C5:
"000000" & X"000", -- 0x1C6:
"000000" & X"000", -- 0x1C7:
"000000" & X"000", -- 0x1C8:
"000000" & X"000", -- 0x1C9:
"000000" & X"000", -- 0x1CA:
"000000" & X"000", -- 0x1CB:
"000000" & X"000", -- 0x1CC:
"000000" & X"000", -- 0x1CD:
"000000" & X"000", -- 0x1CE:
"000000" & X"000", -- 0x1CF:
"000000" & X"000", -- 0x1D0:
"000000" & X"000", -- 0x1D1:
"000000" & X"000", -- 0x1D2:
"000000" & X"000", -- 0x1D3:
"000000" & X"000", -- 0x1D4:
"000000" & X"000", -- 0x1D5:
"000000" & X"000", -- 0x1D6:
"000000" & X"000", -- 0x1D7:
"000000" & X"000", -- 0x1D8:
"000000" & X"000", -- 0x1D9:
"000000" & X"000", -- 0x1DA:
"000000" & X"000", -- 0x1DB:
"000000" & X"000", -- 0x1DC:
"000000" & X"000", -- 0x1DD:
"000000" & X"000", -- 0x1DE:
"000000" & X"000", -- 0x1DF:
"000000" & X"000", -- 0x1E0:
"000000" & X"000", -- 0x1E1:
"000000" & X"000", -- 0x1E2:
"000000" & X"000", -- 0x1E3:
"000000" & X"000", -- 0x1E4:
"000000" & X"000", -- 0x1E5:
"000000" & X"000", -- 0x1E6:
"000000" & X"000", -- 0x1E7:
"000000" & X"000", -- 0x1E8:
"000000" & X"000", -- 0x1E9:
"000000" & X"000", -- 0x1EA:
"000000" & X"000", -- 0x1EB:
"000000" & X"000", -- 0x1EC:
"000000" & X"000", -- 0x1ED:
"000000" & X"000", -- 0x1EE:
"000000" & X"000", -- 0x1EF:
"000000" & X"000", -- 0x1F0:
"000000" & X"000", -- 0x1F1:
"000000" & X"000", -- 0x1F2:
"000000" & X"000", -- 0x1F3:
"000000" & X"000", -- 0x1F4:
"000000" & X"000", -- 0x1F5:
"000000" & X"000", -- 0x1F6:
"000000" & X"000", -- 0x1F7:
"000000" & X"000", -- 0x1F8:
"000000" & X"000", -- 0x1F9:
"000000" & X"000", -- 0x1FA:
"000000" & X"000", -- 0x1FB:
"000000" & X"000", -- 0x1FC:
"000000" & X"000", -- 0x1FD:
"000000" & X"000", -- 0x1FE:
"000000" & X"000", -- 0x1FF:
"000000" & X"000", -- 0x200:
"000000" & X"000", -- 0x201:
"000000" & X"000", -- 0x202:
"000000" & X"000", -- 0x203:
"000000" & X"000", -- 0x204:
"000000" & X"000", -- 0x205:
"000000" & X"000", -- 0x206:
"000000" & X"000", -- 0x207:
"000000" & X"000", -- 0x208:
"000000" & X"000", -- 0x209:
"000000" & X"000", -- 0x20A:
"000000" & X"000", -- 0x20B:
"000000" & X"000", -- 0x20C:
"000000" & X"000", -- 0x20D:
"000000" & X"000", -- 0x20E:
"000000" & X"000", -- 0x20F:
"000000" & X"000", -- 0x210:
"000000" & X"000", -- 0x211:
"000000" & X"000", -- 0x212:
"000000" & X"000", -- 0x213:
"000000" & X"000", -- 0x214:
"000000" & X"000", -- 0x215:
"000000" & X"000", -- 0x216:
"000000" & X"000", -- 0x217:
"000000" & X"000", -- 0x218:
"000000" & X"000", -- 0x219:
"000000" & X"000", -- 0x21A:
"000000" & X"000", -- 0x21B:
"000000" & X"000", -- 0x21C:
"000000" & X"000", -- 0x21D:
"000000" & X"000", -- 0x21E:
"000000" & X"000", -- 0x21F:
"000000" & X"000", -- 0x220:
"000000" & X"000", -- 0x221:
"000000" & X"000", -- 0x222:
"000000" & X"000", -- 0x223:
"000000" & X"000", -- 0x224:
"000000" & X"000", -- 0x225:
"000000" & X"000", -- 0x226:
"000000" & X"000", -- 0x227:
"000000" & X"000", -- 0x228:
"000000" & X"000", -- 0x229:
"000000" & X"000", -- 0x22A:
"000000" & X"000", -- 0x22B:
"000000" & X"000", -- 0x22C:
"000000" & X"000", -- 0x22D:
"000000" & X"000", -- 0x22E:
"000000" & X"000", -- 0x22F:
"000000" & X"000", -- 0x230:
"000000" & X"000", -- 0x231:
"000000" & X"000", -- 0x232:
"000000" & X"000", -- 0x233:
"000000" & X"000", -- 0x234:
"000000" & X"000", -- 0x235:
"000000" & X"000", -- 0x236:
"000000" & X"000", -- 0x237:
"000000" & X"000", -- 0x238:
"000000" & X"000", -- 0x239:
"000000" & X"000", -- 0x23A:
"000000" & X"000", -- 0x23B:
"000000" & X"000", -- 0x23C:
"000000" & X"000", -- 0x23D:
"000000" & X"000", -- 0x23E:
"000000" & X"000", -- 0x23F:
"000000" & X"000", -- 0x240:
"000000" & X"000", -- 0x241:
"000000" & X"000", -- 0x242:
"000000" & X"000", -- 0x243:
"000000" & X"000", -- 0x244:
"000000" & X"000", -- 0x245:
"000000" & X"000", -- 0x246:
"000000" & X"000", -- 0x247:
"000000" & X"000", -- 0x248:
"000000" & X"000", -- 0x249:
"000000" & X"000", -- 0x24A:
"000000" & X"000", -- 0x24B:
"000000" & X"000", -- 0x24C:
"000000" & X"000", -- 0x24D:
"000000" & X"000", -- 0x24E:
"000000" & X"000", -- 0x24F:
"000000" & X"000", -- 0x250:
"000000" & X"000", -- 0x251:
"000000" & X"000", -- 0x252:
"000000" & X"000", -- 0x253:
"000000" & X"000", -- 0x254:
"000000" & X"000", -- 0x255:
"000000" & X"000", -- 0x256:
"000000" & X"000", -- 0x257:
"000000" & X"000", -- 0x258:
"000000" & X"000", -- 0x259:
"000000" & X"000", -- 0x25A:
"000000" & X"000", -- 0x25B:
"000000" & X"000", -- 0x25C:
"000000" & X"000", -- 0x25D:
"000000" & X"000", -- 0x25E:
"000000" & X"000", -- 0x25F:
"000000" & X"000", -- 0x260:
"000000" & X"000", -- 0x261:
"000000" & X"000", -- 0x262:
"000000" & X"000", -- 0x263:
"000000" & X"000", -- 0x264:
"000000" & X"000", -- 0x265:
"000000" & X"000", -- 0x266:
"000000" & X"000", -- 0x267:
"000000" & X"000", -- 0x268:
"000000" & X"000", -- 0x269:
"000000" & X"000", -- 0x26A:
"000000" & X"000", -- 0x26B:
"000000" & X"000", -- 0x26C:
"000000" & X"000", -- 0x26D:
"000000" & X"000", -- 0x26E:
"000000" & X"000", -- 0x26F:
"000000" & X"000", -- 0x270:
"000000" & X"000", -- 0x271:
"000000" & X"000", -- 0x272:
"000000" & X"000", -- 0x273:
"000000" & X"000", -- 0x274:
"000000" & X"000", -- 0x275:
"000000" & X"000", -- 0x276:
"000000" & X"000", -- 0x277:
"000000" & X"000", -- 0x278:
"000000" & X"000", -- 0x279:
"000000" & X"000", -- 0x27A:
"000000" & X"000", -- 0x27B:
"000000" & X"000", -- 0x27C:
"000000" & X"000", -- 0x27D:
"000000" & X"000", -- 0x27E:
"000000" & X"000", -- 0x27F:
"000000" & X"000", -- 0x280:
"000000" & X"000", -- 0x281:
"000000" & X"000", -- 0x282:
"000000" & X"000", -- 0x283:
"000000" & X"000", -- 0x284:
"000000" & X"000", -- 0x285:
"000000" & X"000", -- 0x286:
"000000" & X"000", -- 0x287:
"000000" & X"000", -- 0x288:
"000000" & X"000", -- 0x289:
"000000" & X"000", -- 0x28A:
"000000" & X"000", -- 0x28B:
"000000" & X"000", -- 0x28C:
"000000" & X"000", -- 0x28D:
"000000" & X"000", -- 0x28E:
"000000" & X"000", -- 0x28F:
"000000" & X"000", -- 0x290:
"000000" & X"000", -- 0x291:
"000000" & X"000", -- 0x292:
"000000" & X"000", -- 0x293:
"000000" & X"000", -- 0x294:
"000000" & X"000", -- 0x295:
"000000" & X"000", -- 0x296:
"000000" & X"000", -- 0x297:
"000000" & X"000", -- 0x298:
"000000" & X"000", -- 0x299:
"000000" & X"000", -- 0x29A:
"000000" & X"000", -- 0x29B:
"000000" & X"000", -- 0x29C:
"000000" & X"000", -- 0x29D:
"000000" & X"000", -- 0x29E:
"000000" & X"000", -- 0x29F:
"000000" & X"000", -- 0x2A0:
"000000" & X"000", -- 0x2A1:
"000000" & X"000", -- 0x2A2:
"000000" & X"000", -- 0x2A3:
"000000" & X"000", -- 0x2A4:
"000000" & X"000", -- 0x2A5:
"000000" & X"000", -- 0x2A6:
"000000" & X"000", -- 0x2A7:
"000000" & X"000", -- 0x2A8:
"000000" & X"000", -- 0x2A9:
"000000" & X"000", -- 0x2AA:
"000000" & X"000", -- 0x2AB:
"000000" & X"000", -- 0x2AC:
"000000" & X"000", -- 0x2AD:
"000000" & X"000", -- 0x2AE:
"000000" & X"000", -- 0x2AF:
"000000" & X"000", -- 0x2B0:
"000000" & X"000", -- 0x2B1:
"000000" & X"000", -- 0x2B2:
"000000" & X"000", -- 0x2B3:
"000000" & X"000", -- 0x2B4:
"000000" & X"000", -- 0x2B5:
"000000" & X"000", -- 0x2B6:
"000000" & X"000", -- 0x2B7:
"000000" & X"000", -- 0x2B8:
"000000" & X"000", -- 0x2B9:
"000000" & X"000", -- 0x2BA:
"000000" & X"000", -- 0x2BB:
"000000" & X"000", -- 0x2BC:
"000000" & X"000", -- 0x2BD:
"000000" & X"000", -- 0x2BE:
"000000" & X"000", -- 0x2BF:
"000000" & X"000", -- 0x2C0:
"000000" & X"000", -- 0x2C1:
"000000" & X"000", -- 0x2C2:
"000000" & X"000", -- 0x2C3:
"000000" & X"000", -- 0x2C4:
"000000" & X"000", -- 0x2C5:
"000000" & X"000", -- 0x2C6:
"000000" & X"000", -- 0x2C7:
"000000" & X"000", -- 0x2C8:
"000000" & X"000", -- 0x2C9:
"000000" & X"000", -- 0x2CA:
"000000" & X"000", -- 0x2CB:
"000000" & X"000", -- 0x2CC:
"000000" & X"000", -- 0x2CD:
"000000" & X"000", -- 0x2CE:
"000000" & X"000", -- 0x2CF:
"000000" & X"000", -- 0x2D0:
"000000" & X"000", -- 0x2D1:
"000000" & X"000", -- 0x2D2:
"000000" & X"000", -- 0x2D3:
"000000" & X"000", -- 0x2D4:
"000000" & X"000", -- 0x2D5:
"000000" & X"000", -- 0x2D6:
"000000" & X"000", -- 0x2D7:
"000000" & X"000", -- 0x2D8:
"000000" & X"000", -- 0x2D9:
"000000" & X"000", -- 0x2DA:
"000000" & X"000", -- 0x2DB:
"000000" & X"000", -- 0x2DC:
"000000" & X"000", -- 0x2DD:
"000000" & X"000", -- 0x2DE:
"000000" & X"000", -- 0x2DF:
"000000" & X"000", -- 0x2E0:
"000000" & X"000", -- 0x2E1:
"000000" & X"000", -- 0x2E2:
"000000" & X"000", -- 0x2E3:
"000000" & X"000", -- 0x2E4:
"000000" & X"000", -- 0x2E5:
"000000" & X"000", -- 0x2E6:
"000000" & X"000", -- 0x2E7:
"000000" & X"000", -- 0x2E8:
"000000" & X"000", -- 0x2E9:
"000000" & X"000", -- 0x2EA:
"000000" & X"000", -- 0x2EB:
"000000" & X"000", -- 0x2EC:
"000000" & X"000", -- 0x2ED:
"000000" & X"000", -- 0x2EE:
"000000" & X"000", -- 0x2EF:
"000000" & X"000", -- 0x2F0:
"000000" & X"000", -- 0x2F1:
"000000" & X"000", -- 0x2F2:
"000000" & X"000", -- 0x2F3:
"000000" & X"000", -- 0x2F4:
"000000" & X"000", -- 0x2F5:
"000000" & X"000", -- 0x2F6:
"000000" & X"000", -- 0x2F7:
"000000" & X"000", -- 0x2F8:
"000000" & X"000", -- 0x2F9:
"000000" & X"000", -- 0x2FA:
"000000" & X"000", -- 0x2FB:
"000000" & X"000", -- 0x2FC:
"000000" & X"000", -- 0x2FD:
"000000" & X"000", -- 0x2FE:
"000000" & X"000", -- 0x2FF:
"000000" & X"000", -- 0x300:
"000000" & X"000", -- 0x301:
"000000" & X"000", -- 0x302:
"000000" & X"000", -- 0x303:
"000000" & X"000", -- 0x304:
"000000" & X"000", -- 0x305:
"000000" & X"000", -- 0x306:
"000000" & X"000", -- 0x307:
"000000" & X"000", -- 0x308:
"000000" & X"000", -- 0x309:
"000000" & X"000", -- 0x30A:
"000000" & X"000", -- 0x30B:
"000000" & X"000", -- 0x30C:
"000000" & X"000", -- 0x30D:
"000000" & X"000", -- 0x30E:
"000000" & X"000", -- 0x30F:
"000000" & X"000", -- 0x310:
"000000" & X"000", -- 0x311:
"000000" & X"000", -- 0x312:
"000000" & X"000", -- 0x313:
"000000" & X"000", -- 0x314:
"000000" & X"000", -- 0x315:
"000000" & X"000", -- 0x316:
"000000" & X"000", -- 0x317:
"000000" & X"000", -- 0x318:
"000000" & X"000", -- 0x319:
"000000" & X"000", -- 0x31A:
"000000" & X"000", -- 0x31B:
"000000" & X"000", -- 0x31C:
"000000" & X"000", -- 0x31D:
"000000" & X"000", -- 0x31E:
"000000" & X"000", -- 0x31F:
"000000" & X"000", -- 0x320:
"000000" & X"000", -- 0x321:
"000000" & X"000", -- 0x322:
"000000" & X"000", -- 0x323:
"000000" & X"000", -- 0x324:
"000000" & X"000", -- 0x325:
"000000" & X"000", -- 0x326:
"000000" & X"000", -- 0x327:
"000000" & X"000", -- 0x328:
"000000" & X"000", -- 0x329:
"000000" & X"000", -- 0x32A:
"000000" & X"000", -- 0x32B:
"000000" & X"000", -- 0x32C:
"000000" & X"000", -- 0x32D:
"000000" & X"000", -- 0x32E:
"000000" & X"000", -- 0x32F:
"000000" & X"000", -- 0x330:
"000000" & X"000", -- 0x331:
"000000" & X"000", -- 0x332:
"000000" & X"000", -- 0x333:
"000000" & X"000", -- 0x334:
"000000" & X"000", -- 0x335:
"000000" & X"000", -- 0x336:
"000000" & X"000", -- 0x337:
"000000" & X"000", -- 0x338:
"000000" & X"000", -- 0x339:
"000000" & X"000", -- 0x33A:
"000000" & X"000", -- 0x33B:
"000000" & X"000", -- 0x33C:
"000000" & X"000", -- 0x33D:
"000000" & X"000", -- 0x33E:
"000000" & X"000", -- 0x33F:
"000000" & X"000", -- 0x340:
"000000" & X"000", -- 0x341:
"000000" & X"000", -- 0x342:
"000000" & X"000", -- 0x343:
"000000" & X"000", -- 0x344:
"000000" & X"000", -- 0x345:
"000000" & X"000", -- 0x346:
"000000" & X"000", -- 0x347:
"000000" & X"000", -- 0x348:
"000000" & X"000", -- 0x349:
"000000" & X"000", -- 0x34A:
"000000" & X"000", -- 0x34B:
"000000" & X"000", -- 0x34C:
"000000" & X"000", -- 0x34D:
"000000" & X"000", -- 0x34E:
"000000" & X"000", -- 0x34F:
"000000" & X"000", -- 0x350:
"000000" & X"000", -- 0x351:
"000000" & X"000", -- 0x352:
"000000" & X"000", -- 0x353:
"000000" & X"000", -- 0x354:
"000000" & X"000", -- 0x355:
"000000" & X"000", -- 0x356:
"000000" & X"000", -- 0x357:
"000000" & X"000", -- 0x358:
"000000" & X"000", -- 0x359:
"000000" & X"000", -- 0x35A:
"000000" & X"000", -- 0x35B:
"000000" & X"000", -- 0x35C:
"000000" & X"000", -- 0x35D:
"000000" & X"000", -- 0x35E:
"000000" & X"000", -- 0x35F:
"000000" & X"000", -- 0x360:
"000000" & X"000", -- 0x361:
"000000" & X"000", -- 0x362:
"000000" & X"000", -- 0x363:
"000000" & X"000", -- 0x364:
"000000" & X"000", -- 0x365:
"000000" & X"000", -- 0x366:
"000000" & X"000", -- 0x367:
"000000" & X"000", -- 0x368:
"000000" & X"000", -- 0x369:
"000000" & X"000", -- 0x36A:
"000000" & X"000", -- 0x36B:
"000000" & X"000", -- 0x36C:
"000000" & X"000", -- 0x36D:
"000000" & X"000", -- 0x36E:
"000000" & X"000", -- 0x36F:
"000000" & X"000", -- 0x370:
"000000" & X"000", -- 0x371:
"000000" & X"000", -- 0x372:
"000000" & X"000", -- 0x373:
"000000" & X"000", -- 0x374:
"000000" & X"000", -- 0x375:
"000000" & X"000", -- 0x376:
"000000" & X"000", -- 0x377:
"000000" & X"000", -- 0x378:
"000000" & X"000", -- 0x379:
"000000" & X"000", -- 0x37A:
"000000" & X"000", -- 0x37B:
"000000" & X"000", -- 0x37C:
"000000" & X"000", -- 0x37D:
"000000" & X"000", -- 0x37E:
"000000" & X"000", -- 0x37F:
"000000" & X"000", -- 0x380:
"000000" & X"000", -- 0x381:
"000000" & X"000", -- 0x382:
"000000" & X"000", -- 0x383:
"000000" & X"000", -- 0x384:
"000000" & X"000", -- 0x385:
"000000" & X"000", -- 0x386:
"000000" & X"000", -- 0x387:
"000000" & X"000", -- 0x388:
"000000" & X"000", -- 0x389:
"000000" & X"000", -- 0x38A:
"000000" & X"000", -- 0x38B:
"000000" & X"000", -- 0x38C:
"000000" & X"000", -- 0x38D:
"000000" & X"000", -- 0x38E:
"000000" & X"000", -- 0x38F:
"000000" & X"000", -- 0x390:
"000000" & X"000", -- 0x391:
"000000" & X"000", -- 0x392:
"000000" & X"000", -- 0x393:
"000000" & X"000", -- 0x394:
"000000" & X"000", -- 0x395:
"000000" & X"000", -- 0x396:
"000000" & X"000", -- 0x397:
"000000" & X"000", -- 0x398:
"000000" & X"000", -- 0x399:
"000000" & X"000", -- 0x39A:
"000000" & X"000", -- 0x39B:
"000000" & X"000", -- 0x39C:
"000000" & X"000", -- 0x39D:
"000000" & X"000", -- 0x39E:
"000000" & X"000", -- 0x39F:
"000000" & X"000", -- 0x3A0:
"000000" & X"000", -- 0x3A1:
"000000" & X"000", -- 0x3A2:
"000000" & X"000", -- 0x3A3:
"000000" & X"000", -- 0x3A4:
"000000" & X"000", -- 0x3A5:
"000000" & X"000", -- 0x3A6:
"000000" & X"000", -- 0x3A7:
"000000" & X"000", -- 0x3A8:
"000000" & X"000", -- 0x3A9:
"000000" & X"000", -- 0x3AA:
"000000" & X"000", -- 0x3AB:
"000000" & X"000", -- 0x3AC:
"000000" & X"000", -- 0x3AD:
"000000" & X"000", -- 0x3AE:
"000000" & X"000", -- 0x3AF:
"000000" & X"000", -- 0x3B0:
"000000" & X"000", -- 0x3B1:
"000000" & X"000", -- 0x3B2:
"000000" & X"000", -- 0x3B3:
"000000" & X"000", -- 0x3B4:
"000000" & X"000", -- 0x3B5:
"000000" & X"000", -- 0x3B6:
"000000" & X"000", -- 0x3B7:
"000000" & X"000", -- 0x3B8:
"000000" & X"000", -- 0x3B9:
"000000" & X"000", -- 0x3BA:
"000000" & X"000", -- 0x3BB:
"000000" & X"000", -- 0x3BC:
"000000" & X"000", -- 0x3BD:
"000000" & X"000", -- 0x3BE:
"000000" & X"000", -- 0x3BF:
"000000" & X"000", -- 0x3C0:
"000000" & X"000", -- 0x3C1:
"000000" & X"000", -- 0x3C2:
"000000" & X"000", -- 0x3C3:
"000000" & X"000", -- 0x3C4:
"000000" & X"000", -- 0x3C5:
"000000" & X"000", -- 0x3C6:
"000000" & X"000", -- 0x3C7:
"000000" & X"000", -- 0x3C8:
"000000" & X"000", -- 0x3C9:
"000000" & X"000", -- 0x3CA:
"000000" & X"000", -- 0x3CB:
"000000" & X"000", -- 0x3CC:
"000000" & X"000", -- 0x3CD:
"000000" & X"000", -- 0x3CE:
"000000" & X"000", -- 0x3CF:
"000000" & X"000", -- 0x3D0:
"000000" & X"000", -- 0x3D1:
"000000" & X"000", -- 0x3D2:
"000000" & X"000", -- 0x3D3:
"000000" & X"000", -- 0x3D4:
"000000" & X"000", -- 0x3D5:
"000000" & X"000", -- 0x3D6:
"000000" & X"000", -- 0x3D7:
"000000" & X"000", -- 0x3D8:
"000000" & X"000", -- 0x3D9:
"000000" & X"000", -- 0x3DA:
"000000" & X"000", -- 0x3DB:
"000000" & X"000", -- 0x3DC:
"000000" & X"000", -- 0x3DD:
"000000" & X"000", -- 0x3DE:
"000000" & X"000", -- 0x3DF:
"000000" & X"000", -- 0x3E0:
"000000" & X"000", -- 0x3E1:
"000000" & X"000", -- 0x3E2:
"000000" & X"000", -- 0x3E3:
"000000" & X"000", -- 0x3E4:
"000000" & X"000", -- 0x3E5:
"000000" & X"000", -- 0x3E6:
"000000" & X"000", -- 0x3E7:
"000000" & X"000", -- 0x3E8:
"000000" & X"000", -- 0x3E9:
"000000" & X"000", -- 0x3EA:
"000000" & X"000", -- 0x3EB:
"000000" & X"000", -- 0x3EC:
"000000" & X"000", -- 0x3ED:
"000000" & X"000", -- 0x3EE:
"000000" & X"000", -- 0x3EF:
"000000" & X"000", -- 0x3F0:
"000000" & X"000", -- 0x3F1:
"000000" & X"000", -- 0x3F2:
"000000" & X"000", -- 0x3F3:
"000000" & X"000", -- 0x3F4:
"000000" & X"000", -- 0x3F5:
"000000" & X"000", -- 0x3F6:
"000000" & X"000", -- 0x3F7:
"000000" & X"000", -- 0x3F8:
"000000" & X"000", -- 0x3F9:
"000000" & X"000", -- 0x3FA:
"000000" & X"000", -- 0x3FB:
"000000" & X"000", -- 0x3FC:
"000000" & X"000", -- 0x3FD:
"000000" & X"000", -- 0x3FE:
"110000" & X"032" -- 0x3FF: JMP 0x032
);
signal jtag_ld_clk : STD_LOGIC;
signal jtag_ld_we : STD_LOGIC;
signal jtag_ld_addr : inst_addr_t;
signal jtag_ld_dout : inst_t;
signal jtag_ld_din : inst_t;
signal bs_rst, bs_sel, bs_shift, bs_tdi, bs_tdo : std_logic;
signal bs_capture, bs_clk0, bs_clk1, bs_update0, bs_update1 : std_logic;
signal user_regi, user_rego : unsigned (31 downto 0);
constant id : unsigned (31 downto 0) := X"BABE" & X"BEEF";
begin
--------------------------------------------------------------------------
-- Virtex-4: JTAG Loader
--------------------------------------------------------------------------
i00_BUFG : BUFG
port map
(
O => bs_clk1,
I => bs_clk0
);
i01_BUFG : BUFG
port map
(
O => bs_update1,
I => bs_update0
);
BSCAN_VIRTEX4_inst1 : BSCAN_VIRTEX4
generic map
(
JTAG_CHAIN => 1 -- Value to set BSCAN site of device. Possible values: (1,2,3 or 4)
)
port map
(
CAPTURE => bs_capture, -- CAPTURE output from TAP controller
DRCK => bs_clk0, -- Data register output for USER functions
RESET => bs_rst, -- Reset output from TAP controller
SEL => bs_sel, -- USER active output
SHIFT => bs_shift, -- SHIFT output from TAP controller
TDI => bs_tdi, -- TDI output from TAP controller
UPDATE => bs_update0, -- UPDATE output from TAP controller
TDO => bs_tdo -- Data input for USER function
);
jtag_ld_addr <= user_regi(user_regi'left downto user_regi'left-inst_addr_t'length+1);
jtag_ld_din <= user_regi(inst_t'length-1 downto 0);
jtag_ld_clk <= bs_update1;
jtag_ld_we <= bs_sel;
sipo:
process (bs_rst, bs_clk1, bs_tdi, bs_shift)
begin
if bs_rst = '1' then
user_regi <= (others => '0');
elsif rising_edge(bs_clk1) then
if bs_shift = '1' then
user_regi <= bs_tdi & user_regi(user_regi'left downto 1);
end if;
end if;
end process;
piso:
process (bs_rst, bs_clk1, bs_shift, user_rego)
begin
bs_tdo <= user_rego(0);
if bs_rst = '1' then
user_rego <= (others => '0');
elsif rising_edge(bs_clk1) then
if bs_shift = '1' then
user_rego <= user_rego(0) & user_rego(user_rego'left downto 1);
else
user_rego <= (user_rego'left downto inst_t'length => '0') & jtag_ld_dout;
-- user_rego <= id;
end if;
end if;
end process;
--------------------------------------------------------------------------
-- ROM Read/Write
--------------------------------------------------------------------------
PROM_READ:
process(clk, ce)
begin
if rising_edge(clk) and ce = '1' then
dout <= imem_rom(to_integer(addr));
end if;
end process;
PROM_WRITE:
process(jtag_ld_clk, jtag_ld_we)
begin
if rising_edge(jtag_ld_clk) then
if jtag_ld_we = '1' then
imem_rom(to_integer(jtag_ld_addr)) <= jtag_ld_din;
else
jtag_ld_dout <= imem_rom(to_integer(jtag_ld_addr));
end if;
end if;
end process;
--------------------------------------------------------------------------
end loadable;