Line 128... |
Line 128... |
constant OP_LDA : OPCODE_TYPE := "11101";
|
constant OP_LDA : OPCODE_TYPE := "11101";
|
constant OP_LDX : OPCODE_TYPE := "11110";
|
constant OP_LDX : OPCODE_TYPE := "11110";
|
constant OP_LDO : OPCODE_TYPE := "11111";
|
constant OP_LDO : OPCODE_TYPE := "11111";
|
|
|
-- OP_STK uses the lower 3 bits to further refine the instruction by
|
-- OP_STK uses the lower 3 bits to further refine the instruction by
|
-- repurposing the source register field. These "sub opcodes" are
|
-- repurposing the source register field. These "sub opcodes" take
|
-- take the place of the register select for the OP_STK opcode
|
-- the place of the register select for the OP_STK opcode
|
constant SOP_RSP : SUBOP_TYPE := "000";
|
constant SOP_RSP : SUBOP_TYPE := "000";
|
constant SOP_RTS : SUBOP_TYPE := "001";
|
constant SOP_RTS : SUBOP_TYPE := "001";
|
constant SOP_RTI : SUBOP_TYPE := "010";
|
constant SOP_RTI : SUBOP_TYPE := "010";
|
constant SOP_BRK : SUBOP_TYPE := "011";
|
constant SOP_BRK : SUBOP_TYPE := "011";
|
constant SOP_JMP : SUBOP_TYPE := "100";
|
constant SOP_JMP : SUBOP_TYPE := "100";
|
Line 154... |
Line 154... |
-- 2-cycle math
|
-- 2-cycle math
|
MUL_C1, UPP_C1,
|
MUL_C1, UPP_C1,
|
-- Stack
|
-- Stack
|
PSH_C1, POP_C1, POP_C2, POP_C3, POP_C4,
|
PSH_C1, POP_C1, POP_C2, POP_C3, POP_C4,
|
-- Subroutines & Interrupts
|
-- Subroutines & Interrupts
|
WAIT_FOR_INT, ISR_C1, ISR_C2, ISR_C3, JSR_C1, JSR_C2,
|
WAIT_FOR_INT,
|
|
ISR_C1, ISR_C2, ISR_C3, JSR_C1, JSR_C2,
|
RTS_C1, RTS_C2, RTS_C3, RTS_C4, RTS_C5, RTI_C6,
|
RTS_C1, RTS_C2, RTS_C3, RTS_C4, RTS_C5, RTI_C6,
|
-- Debugging
|
-- Debugging
|
BRK_C1 );
|
BRK_C1 );
|
|
|
type CACHE_MODES is (CACHE_IDLE, CACHE_INSTR, CACHE_OPER1, CACHE_OPER2,
|
type CACHE_MODES is (CACHE_IDLE, CACHE_INSTR, CACHE_OPER1, CACHE_OPER2,
|
Line 236... |
Line 237... |
constant PSR_Z : integer := 0;
|
constant PSR_Z : integer := 0;
|
constant PSR_C : integer := 1;
|
constant PSR_C : integer := 1;
|
constant PSR_N : integer := 2;
|
constant PSR_N : integer := 2;
|
constant PSR_I : integer := 3;
|
constant PSR_I : integer := 3;
|
constant PSR_GP4 : integer := 4;
|
constant PSR_GP4 : integer := 4;
|
constant PSR_GP5 :
|
|
No newline at end of file
|
No newline at end of file
|
|
constant PSR_GP5 : integer := 5;
|
|
constant PSR_GP6 : integer := 6;
|
|
constant PSR_GP7 : integer := 7;
|
|
|
|
type ALU_CTRL_TYPE is record
|
|
Oper : OPCODE_TYPE;
|
|
Reg : SUBOP_TYPE;
|
|
end record;
|
|
|
|
constant ACCUM : SUBOP_TYPE := "000";
|
|
|
|
type REGFILE_TYPE is array (0 to 7) of DATA_TYPE;
|
|
|
|
subtype FLAG_TYPE is DATA_TYPE;
|
|
|
|
end Open8_pkg;
|
|
|
|
package body Open8_pkg is
|
|
end package body;
|
|
|
No newline at end of file
|
No newline at end of file
|