Revision 687
Added by markw over 7 years ago
ultimate_cart/veronica/config_regs_6502.vhd | ||
---|---|---|
BANK_HALF_SELECT: out std_logic;
|
||
BANK_SELECT: out std_logic;
|
||
ENABLE_65816: out std_logic;
|
||
|
||
|
||
SEM_WRITE_65816 : in std_logic;
|
||
SEM_VALUE_65816 : in std_logic;
|
||
|
||
DATA_IN: in std_logic_vector(7 downto 0);
|
||
DATA_OUT: out std_logic_vector(7 downto 0);
|
||
RW_N: in std_logic
|
||
... | ... | |
end if;
|
||
end process;
|
||
|
||
process(data_in,rw_n,sem_reg,banka_enable_reg,bank8_enable_reg,bank_half_reg,bank_select_reg,enable_65816_reg)
|
||
process(data_in,rw_n,sem_reg,banka_enable_reg,bank8_enable_reg,bank_half_reg,bank_select_reg,enable_65816_reg,sem_write_65816,sem_value_65816)
|
||
begin
|
||
sem_next <= sem_reg;
|
||
banka_enable_next <= banka_enable_reg;
|
||
... | ... | |
bank_select_next <= data_in(1);
|
||
enable_65816_next <= data_in(0);
|
||
end if;
|
||
|
||
if (sem_write_65816='1') then
|
||
sem_next <= sem_value_65816;
|
||
end if;
|
||
end process;
|
||
|
||
data_out <= sem_reg&'1'&banka_enable_reg&bank8_enable_reg&bank_half_reg&'1'&bank_select_reg&enable_65816_reg;
|
ultimate_cart/veronica/config_regs_veronica.vhd | ||
---|---|---|
WINDOW_ADDRESS: out std_logic;
|
||
BANK_HALF_SELECT: out std_logic;
|
||
|
||
SEM_WRITE : out std_logic;
|
||
SEM_VALUE : out std_logic;
|
||
|
||
DATA_IN: in std_logic_vector(7 downto 0);
|
||
DATA_OUT: out std_logic_vector(7 downto 0);
|
||
RW_N: in std_logic
|
||
... | ... | |
begin
|
||
window_address_next <= window_address_reg;
|
||
bank_half_next <= bank_half_reg;
|
||
sem_write <= '0';
|
||
sem_value <= '0'; -- Not important
|
||
|
||
if (rw_n='0') then
|
||
window_address_next <= data_in(6);
|
||
bank_half_next <= data_in(5);
|
||
sem_write <= '1';
|
||
sem_value <= not(data_in(7));
|
||
end if;
|
||
end process;
|
||
|
ultimate_cart/veronica/veronica.vhd | ||
---|---|---|
-- Some unknown inputs
|
||
abort : in std_logic; -- another interrupt (active low)
|
||
be : in std_logic; -- bus enable (active high)
|
||
err_i : in std_logic; -- set to 0 in example
|
||
rty_i : in std_logic; -- set to 0 in example
|
||
err_i : in std_logic; -- set to 1 in example
|
||
rty_i : in std_logic; -- set to 1 in example
|
||
|
||
-- Some unknown outputs
|
||
vpa : out std_logic; -- valid program address
|
||
... | ... | |
signal atari_bank_half_select : std_logic;
|
||
signal atari_config_data : std_logic_vector(7 downto 0);
|
||
|
||
-- common config
|
||
-- common config
|
||
signal common_bank_select : std_logic;
|
||
|
||
-- semaphora
|
||
signal common_sem : std_logic;
|
||
signal common_bank_select : std_logic;
|
||
signal veronica_sem_write : std_logic;
|
||
signal veronica_sem_value : std_logic;
|
||
|
||
-- cart driving
|
||
signal cart_bus_data_out : std_logic_vector(7 downto 0);
|
||
... | ... | |
sem_in => common_sem,
|
||
window_address => veronica_window_address,
|
||
bank_half_select => veronica_bank_half_select,
|
||
sem_write => veronica_sem_write,
|
||
sem_value => veronica_sem_value,
|
||
|
||
data_in => veronica_write_data,
|
||
data_out => veronica_config_data,
|
||
... | ... | |
bank_half_select => atari_bank_half_select,
|
||
bank_select => common_bank_select,
|
||
enable_65816 => veronica_reset,
|
||
sem_write_65816 => veronica_sem_write,
|
||
sem_value_65816 => veronica_sem_value,
|
||
|
||
data_in => atari_write_data,
|
||
data_out => atari_config_data,
|
Also available in: Unified diff
Veronica should be able to change the semaphore too.