Project

General

Profile

« Previous | Next » 

Revision 1351

Added by markw over 3 years ago

Writes still allowed when disabled!

View differences:

atari_chips/pokeyv2/pokeymax.vhd
-- capability restriction
signal RESTRICT_CAPABILITY_REG : std_logic_vector(4 downto 0);
signal RESTRICT_CAPABILITY_NEXT : std_logic_vector(4 downto 0);
signal readreq_s : std_logic;
signal writereq_s : std_logic;
-- 0=stereo off
-- 1=quad off
-- 2=sid off
......
CONFIG_DO,
write_n,
request,
RESTRICT_CAPABILITY_REG
RESTRICT_CAPABILITY_REG, readreq_s, writereq_s
)
variable writereq : std_logic;
variable readreq : std_logic;
......
when "0001" =>
enable_region := RESTRICT_CAPABILITY_REG(0) or RESTRICT_CAPABILITY_REG(1);
DO_MUX <= POKEY_DO(1);
POKEY_WRITE_ENABLE(1) <= writereq;
POKEY_WRITE_ENABLE(1) <= writereq_s;
when "0010" =>
enable_region := RESTRICT_CAPABILITY_REG(1);
DO_MUX <= POKEY_DO(2);
POKEY_WRITE_ENABLE(2) <= writereq;
POKEY_WRITE_ENABLE(2) <= writereq_s;
when "0011" =>
enable_region := RESTRICT_CAPABILITY_REG(1);
DO_MUX <= POKEY_DO(3);
POKEY_WRITE_ENABLE(3) <= writereq;
POKEY_WRITE_ENABLE(3) <= writereq_s;
when "0100"|"0101" =>
enable_region := RESTRICT_CAPABILITY_REG(2);
DO_MUX <= SID_DO(0);
DRIVE_DO_MUX <= SID_DRIVE_DO(0);
SID_WRITE_ENABLE(0) <= writereq;
SID_READ_ENABLE(0) <= readreq;
SID_WRITE_ENABLE(0) <= writereq_s;
SID_READ_ENABLE(0) <= readreq_s;
when "0110"|"0111" =>
enable_region := RESTRICT_CAPABILITY_REG(2);
DO_MUX <= SID_DO(1);
DRIVE_DO_MUX <= SID_DRIVE_DO(1);
SID_WRITE_ENABLE(1) <= writereq;
SID_READ_ENABLE(0) <= readreq;
SID_WRITE_ENABLE(1) <= writereq_s;
SID_READ_ENABLE(0) <= readreq_s;
when "1000"|"1001" =>
enable_region := RESTRICT_CAPABILITY_REG(4);
DO_MUX <= SAMPLE_DO;
SAMPLE_WRITE_ENABLE <= writereq;
SAMPLE_WRITE_ENABLE <= writereq_s;
when "1010" =>
enable_region := RESTRICT_CAPABILITY_REG(3);
DO_MUX <= PSG_DO(0);
PSG_WRITE_ENABLE(0) <= writereq;
PSG_WRITE_ENABLE(0) <= writereq_s;
when "1011" =>
enable_region := RESTRICT_CAPABILITY_REG(3);
DO_MUX <= PSG_DO(1);
PSG_WRITE_ENABLE(1) <= writereq;
PSG_WRITE_ENABLE(1) <= writereq_s;
when "1111" =>
enable_region := '1';
DO_MUX <= CONFIG_DO;
CONFIG_WRITE_ENABLE <= writereq;
CONFIG_WRITE_ENABLE <= writereq_s;
when others =>
end case;
readreq_s <= readreq and enable_region;
writereq_s <= writereq and enable_region;
if enable_region='0' then
DO_MUX <= POKEY_DO(0);
POKEY_WRITE_ENABLE(0) <= writereq;

Also available in: Unified diff