diff --git a/VHDL/AddressDecoder.vhd b/VHDL/AddressDecoder.vhd index 95760f2..550a336 100644 --- a/VHDL/AddressDecoder.vhd +++ b/VHDL/AddressDecoder.vhd @@ -51,7 +51,7 @@ architecture Behavioral of AddressDecoder is signal ndev_sel_int : std_logic; signal nio_sel_int : std_logic; signal nio_stb_int : std_logic; - signal ncs : std_logic; -- $C800 - $CFFF enabled + signal ncs : std_logic; -- $C800 - $CFFE enabled signal a_int : std_logic_vector (11 downto 8); begin @@ -78,11 +78,13 @@ begin or (ndev_sel_int and nio_sel_int and ncs) or not PHI0; NOE <= not RNW - or not NDEV_SEL - or (not NIO_STB and ncs); + or (not NIO_SEL and not NIO_STB) + or (NIO_SEL and NIO_STB) + or (NIO_SEL and ncs); NWE <= RNW - or not NDEV_SEL - or (not NIO_STB and ncs); + or (not NIO_SEL and not NIO_STB) + or (NIO_SEL and NIO_STB) + or (NIO_SEL and ncs); cfxx <= a_int(8) and a_int(9) and a_int(10) and not nio_stb_int; diff --git a/VHDL/AddressDecoder_Test.vhd b/VHDL/AddressDecoder_Test.vhd index 5cbc589..c562fda 100644 --- a/VHDL/AddressDecoder_Test.vhd +++ b/VHDL/AddressDecoder_Test.vhd @@ -137,12 +137,37 @@ BEGIN NDEV_SEL <= '0'; wait until falling_edge(PHI0); NDEV_SEL <= '1'; + wait until rising_edge(PHI0); + + -- C0nX access, write + -- NG must be '0" + -- NOE must be '1' + -- NWE must be '1' + RNW <= '0'; + A <= "0000"; -- must become "000" + wait until rising_edge(PHI0); + NDEV_SEL <= '0'; + wait until falling_edge(PHI0); + NDEV_SEL <= '1'; wait until rising_edge(PHI0); -- CnXX access, select -- NG must be '0' -- NOE must be '0' - -- NWE must be '1' + -- NWE must be '1' + RNW <= '1'; + A <= "0100"; -- must become "000" + wait until rising_edge(PHI0); + NIO_SEL <= '0'; + wait until falling_edge(PHI0); + NIO_SEL <= '1'; + wait until rising_edge(PHI0); + + -- CnXX access, write, select + -- NG must be '0' + -- NOE must be '1' + -- NWE must be '0' + RNW <= '0'; A <= "0100"; -- must become "000" wait until rising_edge(PHI0); NIO_SEL <= '0'; @@ -153,7 +178,8 @@ BEGIN -- C8xx access, selected -- NG must be '0' -- NOE must be '0' - -- NWE must be '1' + -- NWE must be '1' + RNW <= '1'; A <= "1000"; -- must become "001" wait until rising_edge(PHI0); NIO_STB <= '0'; @@ -227,6 +253,18 @@ BEGIN NIO_STB <= '0'; wait until falling_edge(PHI0); NIO_STB <= '1'; + wait until rising_edge(PHI0); + + -- C8xx access write, unselected + -- NG must be '1' + -- NOE must be '1' + -- NWE must be '1' + RNW <= '0'; + A <= "1000"; -- must become "001" + wait until rising_edge(PHI0); + NIO_STB <= '0'; + wait until falling_edge(PHI0); + NIO_STB <= '1'; wait until rising_edge(PHI0); wait; diff --git a/VHDL/AppleIISd.jed b/VHDL/AppleIISd.jed index e9f8145..9a26c6e 100644 --- a/VHDL/AppleIISd.jed +++ b/VHDL/AppleIISd.jed @@ -1,5 +1,5 @@ Programmer Jedec Bit Map -Date Extracted: Thu Feb 14 20:47:09 2019 +Date Extracted: Thu Feb 14 23:27:44 2019 QF46656* QP44* @@ -104,7 +104,7 @@ L0001656 000000 000000 000000 000000* L0001680 000000 000000 000000 000000* L0001704 000000 000000 000000 000000* L0001728 00000000 00000000 00000000 00000000* -L0001760 00000000 10000000 00000000 00000000* +L0001760 00000000 00000000 00000000 00000000* L0001792 10000000 00000000 00000000 00000000* L0001824 00000000 00000000 00000000 00000000* L0001856 00000000 00000000 00000000 00000000* @@ -114,7 +114,7 @@ L0001952 00000000 00000000 00000000 00000000* L0001984 00000000 00000000 00000000 00000000* L0002016 000000 000000 000000 000000* L0002040 000000 000000 000000 000000* -L0002064 000000 000000 000000 000000* +L0002064 000000 100000 000000 000000* L0002088 000000 000000 000000 000000* L0002112 000000 000000 000000 000000* L0002136 000000 000000 000000 000000* @@ -195,7 +195,7 @@ L0004272 000000 000000 000000 000000* L0004296 000000 000000 000000 000000* L0004320 00000000 00000000 00000000 00000000* L0004352 00000000 00000000 00000000 00000000* -L0004384 00000000 00000000 01000000 01000000* +L0004384 00000000 10000000 01000000 01000000* L0004416 00000000 00000000 00000000 00000000* L0004448 00000000 00000000 00000000 00000000* L0004480 00000000 00000000 00000000 00000000* @@ -205,7 +205,7 @@ L0004576 00000000 00000000 00100000 00000000* L0004608 000000 000000 000000 000000* L0004632 000000 000000 000000 000000* L0004656 000000 000000 000000 000000* -L0004680 000000 100000 000000 110000* +L0004680 000000 000000 000000 110000* L0004704 000000 000000 000000 000000* L0004728 000000 000000 000000 000000* L0004752 00000000 00000000 00000000 00000000* @@ -224,7 +224,7 @@ L0005112 000000 000000 000000 000000* L0005136 000000 000000 000000 000001* L0005160 000000 000000 000000 000000* L0005184 00000011 00000001 00000011 00000011* -L0005216 00000011 00000011 00000011 00000011* +L0005216 00000011 10000011 00000011 00000011* L0005248 00000011 00000011 00000011 00000011* L0005280 00000011 00000011 00000011 00000011* L0005312 00000011 00000011 00000011 00000011* @@ -234,7 +234,7 @@ L0005408 00000011 00000011 00000011 00000011* L0005440 00000011 00000011 00000011 00000011* L0005472 000000 000000 000000 000000* L0005496 000000 000000 000000 000000* -L0005520 000000 100000 000000 000000* +L0005520 000000 000000 000000 000000* L0005544 000000 000000 000000 000000* L0005568 000000 000000 000000 000000* L0005592 000000 000000 000000 000000* @@ -404,8 +404,8 @@ L0010296 000000 000000 000000 000000* L0010320 000000 000000 000000 000000* L0010344 000000 000000 000000 000000* L0010368 00000000 00000000 00000000 00000000* -L0010400 00000000 10000010 00000000 00000000* -L0010432 00000000 10000000 00000000 00000000* +L0010400 00000000 00000010 00000000 00000000* +L0010432 00000000 00000000 00000000 00000000* L0010464 00000000 00000000 00000000 00000000* L0010496 00000000 00000000 00000000 00000000* L0010528 00000000 00000000 00000000 00000000* @@ -414,13 +414,13 @@ L0010592 00000000 00000000 00000000 00000000* L0010624 00000000 00000000 00000000 00000000* L0010656 000000 100000 000000 000000* L0010680 000000 000000 000000 000000* -L0010704 000000 000000 000100 000000* -L0010728 000000 000000 000000 000000* +L0010704 000000 100000 000100 000000* +L0010728 000000 100000 000000 000000* L0010752 000000 000000 000000 000000* L0010776 000000 000000 000000 000000* L0010800 00000000 10000000 00000000 00000000* -L0010832 01001000 00000000 00000000 00000000* -L0010864 00000000 00000010 00000000 00000000* +L0010832 01001000 10000000 00000000 00000000* +L0010864 00000000 10000010 00000000 00000000* L0010896 00000000 00000000 00000000 00000000* L0010928 00000000 00000000 00000000 00000000* L0010960 00000000 00000000 00000000 00000000* @@ -429,8 +429,8 @@ L0011024 00000000 10000000 00000000 00000000* L0011056 00000000 00000000 00000000 00000000* L0011088 000000 000000 000000 000000* L0011112 000000 000000 000100 000000* -L0011136 000010 100000 000000 000000* -L0011160 000000 100000 000000 000000* +L0011136 000010 000000 000000 000000* +L0011160 000000 000000 000000 000000* L0011184 000000 000000 000000 000000* L0011208 000000 000000 000000 000000* L0011232 00000011 00000001 00000011 00000011* @@ -588,7 +588,7 @@ L0015584 00000010 00000000 00000000 00000001* L0015616 00000010 00000000 00000000 00000010* L0015648 00000010 00000000 00000010 00000010* L0015680 00000000 00000000 00000000 00000000* -L0015712 00000000 01111000 00000000 00000010* +L0015712 01000000 01111000 00000000 10000010* L0015744 00000010 00000000 00000000 00000000* L0015776 00000000 00000000 00000000 00000000* L0015808 00000000 00000000 00000000 00000000* @@ -604,7 +604,7 @@ L0016048 00000001 00000001 00000000 00000000* L0016080 00000001 00000001 00000001 00000000* L0016112 00000000 00000001 00000001 00000000* L0016144 00000001 00000101 00010001 00000000* -L0016176 00000001 00000000 00000001 00000011* +L0016176 01000001 00000000 00000001 10000011* L0016208 00000000 00000010 00000000 00000000* L0016240 00000001 00000010 00000001 00000011* L0016272 000000 000000 000000 000000* @@ -709,7 +709,7 @@ L0019072 00000000 00000000 00000000 00000000* L0019104 00000000 00000000 00000000 00000000* L0019136 00000011 00000000 00000010 00000011* L0019168 00000010 00000000 00000000 00000000* -L0019200 00000000 00000000 00000000 00000000* +L0019200 01000000 00000000 00000000 10000000* L0019232 00000011 00000000 00000011 00000011* L0019264 00000010 00000000 00000000 00000000* L0019296 000000 000000 000000 000000* @@ -1065,7 +1065,7 @@ L0029328 000000 000000 000000 000000* L0029352 000000 000000 000000 000000* L0029376 00000000 00000001 00000000 00000000* L0029408 00000001 00000010 00000010 00000000* -L0029440 00000000 00000000 00000000 00000000* +L0029440 00000010 00000000 00000000 00000010* L0029472 00000000 00000000 00000000 00000000* L0029504 00000001 00000001 00000000 00000000* L0029536 00000000 00000000 00000000 00000000* @@ -1233,8 +1233,8 @@ L0034160 00000000 00000000 00100000 00000000* L0034192 00000000 00000000 00000000 00000000* L0034224 00000000 00000000 00000000 00000000* L0034256 00000000 00000000 00000000 00000000* -L0034288 11000000 00000000 00000000 10010000* -L0034320 01000000 00000000 00000000 10000000* +L0034288 10000000 00000000 00000000 00010000* +L0034320 00000000 00000000 00000000 00000000* L0034352 00000000 00000000 00000000 00000000* L0034384 00000000 00000000 00000000 00000000* L0034416 000000 000000 000000 000000* @@ -1335,7 +1335,7 @@ L0037104 000000 000000 000000 000000* L0037128 000000 000000 000000 000000* L0037152 00000000 00000000 00000000 00000000* L0037184 00000000 00000000 00000000 00000000* -L0037216 00000000 10000000 00000000 00000000* +L0037216 00000000 00000000 00000000 00000000* L0037248 00000000 00000000 00000000 00000000* L0037280 00000000 00000000 00000000 00000000* L0037312 00000000 00000000 00000000 00000000* @@ -1345,7 +1345,7 @@ L0037408 00000000 00000000 00000000 00000000* L0037440 000000 000000 000000 000000* L0037464 000000 000000 000000 000000* L0037488 000000 000000 000000 000000* -L0037512 000000 000000 000000 000000* +L0037512 000000 100000 000000 000000* L0037536 000000 000000 000000 000000* L0037560 000000 000000 000000 000000* L0037584 00000000 00000000 00000000 00000000* @@ -1663,5 +1663,5 @@ L0046560 000000 000000 000000 000000* L0046584 000000 000000 000000 000000* L0046608 000000 000000 000000 000000* L0046632 000000 000000 000000 000000* -CCD41* -1E18 +CCDC4* +1E2E