rdhays82604 #1 Posted August 10, 2007 I was wondering if there has been work done on implementing the functions of ANTIC, GTIA, POKEY and other custom ATARI 8-bit integrated circuits on programmable devices? Quote Share this post Link to post Share on other sites
jaybird3rd #2 Posted August 10, 2007 I heard some years ago that some work was being done on an Atari 800 core for the C-One. Quote Share this post Link to post Share on other sites
Rybags #3 Posted August 10, 2007 The VBXE add-on (thread elsewhere) supposedly takes over (at least) the graphics generating functionality of GTIA. A Flashback 3 (if it were 800/XL/5200 based) would need such hardware to take over all the custom chip functions. PIA isn't much of an issue - it's just a simple 16 bit I/O device with a few extra lines to allow for control and interrupt passing. Quote Share this post Link to post Share on other sites
Beetle #4 Posted August 10, 2007 Pokey is partly done in VHDL for FPGAs by FPGA Arcade. They make emulations of arcades work in FPGA and needed the sound portion of the pokey for the linked asteroids. snippet of VDHL code use work.pkg_asteroids.all; entity ASTEROIDS_POKEY is port ( ADDR : in std_logic_vector(3 downto 0); DIN : in std_logic_vector(7 downto 0); DOUT : out std_logic_vector(7 downto 0); DOUT_OE_L : out std_logic; RW_L : in std_logic; CS : in std_logic; -- used as enable CS_L : in std_logic; -- AUDIO_OUT : out std_logic_vector(7 downto 0); -- PIN : in std_logic_vector(7 downto 0); ENA : in std_logic; CLK : in std_logic -- note 6 Mhz ); end; architecture RTL of ASTEROIDS_POKEY is type array_8x8 is array (0 to 7) of std_logic_vector(7 downto 0); type array_4x8 is array (1 to 4) of std_logic_vector(7 downto 0); type array_4x4 is array (1 to 4) of std_logic_vector(3 downto 0); type array_4x9 is array (1 to 4) of std_logic_vector(8 downto 0); type array_2x17 is array (1 to 2) of std_logic_vector(16 downto 0); type bool_4 is array (1 to 4) of boolean; signal we : std_logic; signal oe : std_logic; -- signal ena_64k_15k : std_logic; signal cnt_64k : std_logic_vector(4 downto 0) := (others => '0'); signal ena_64k : std_logic; signal cnt_15k : std_logic_vector(6 downto 0) := (others => '0'); signal ena_15k : std_logic; -- signal poly4 : std_logic_vector(3 downto 0) := (others => '0'); signal poly5 : std_logic_vector(4 downto 0) := (others => '0'); signal poly9 : std_logic_vector(8 downto 0) := (others => '0'); signal poly17 : std_logic_vector(16 downto 0) := (others => '0'); signal poly_17_9 : std_logic; -- registers signal audf : array_4x8 := (x"00",x"00",x"00",x"00"); signal audc : array_4x8 := (x"00",x"00",x"00",x"00"); signal audctl : std_logic_vector(7 downto 0) := "00000000"; signal stimer : std_logic_vector(7 downto 0); signal skres : std_logic_vector(7 downto 0); signal potgo : std_logic; signal serout : std_logic_vector(7 downto 0); signal irqen : std_logic_vector(7 downto 0); signal skctls : std_logic_vector(7 downto 0); signal reset : std_logic; -- Quote Share this post Link to post Share on other sites
ethierbach #5 Posted August 10, 2007 It's been done for the Amiga: http://home.hetnet.nl/~weeren001/minimig.html It took Dennis well over 2 years to get Minimig to its current state, and it's been well-received in the Amiga community (set aside several hours and search for "minimig" on amiga.org). I'm not an FPGA wonk, but I would think that if the tech info is available, in writing or in the person of those who know such things, it could be done for A8 as well. Maybe. I do see a few potential challenges, though. On A8, much good stuff gets done by direct memory access (peeks and pokes to magic locations), whereas the Amiga is library-based and ends up going through the Kickstart ROM (which Dennis doesn't attempt to emulate). I have no clue whether that can be done in an FPGA. Also, are 6502-compatible processors still being made? Anyway, it sure would be great to be able to homebrew "new" A8 systems! -Ed- Quote Share this post Link to post Share on other sites
Bryan #6 Posted August 10, 2007 I do see a few potential challenges, though. On A8, much good stuff gets done by direct memory access (peeks and pokes to magic locations), whereas the Amiga is library-based and ends up going through the Kickstart ROM (which Dennis doesn't attempt to emulate). I have no clue whether that can be done in an FPGA. Also, are 6502-compatible processors still being made? If you use the FPGA to implement the hardware of a system, then doing things like PEEKs and POKEs shouldn't be a problem if the design is compatible and runs ML code already. It isn't really emulation, but rather an implementation of the same logic on a different (reconfigurable) device. You can think of it like a sculpture where you chip away everything that isn't your final shape. So an FPGA can be thought of as a vast array of interconnected electronic components, and you turn off everything that isn't an Antic or Pokey or whatever. Modern devices are actually look-up-table based, which makes implementing RAM or ROM much easier. Quote Share this post Link to post Share on other sites
ethierbach #7 Posted August 11, 2007 If you use the FPGA to implement the hardware of a system, then doing things like PEEKs and POKEs shouldn't be a problem if the design is compatible and runs ML code already. It isn't really emulation, but rather an implementation of the same logic on a different (reconfigurable) device. You can think of it like a sculpture where you chip away everything that isn't your final shape. So an FPGA can be thought of as a vast array of interconnected electronic components, and you turn off everything that isn't an Antic or Pokey or whatever. Modern devices are actually look-up-table based, which makes implementing RAM or ROM much easier. Thanks; that helps me understand the FPGA thing a bit more. Also, a little bit of Googling answered my question about 6502 availability: http://www.6502.org/ I guess it seems doable. Maybe someday I'll have a Minimig and Minitari side by side on my desk. Quote Share this post Link to post Share on other sites
peteym5 #8 Posted August 11, 2007 It would be cool to have someone make a new version of the Antic, GTIA, and Pokey and have it backward compatible with the old chip. With Antic, maybe provide switches for doubling, quadrupling, or more the memory per line for higher res and more colors. Antic has a maximum of 40 bytes/line, going to 80 (80 column text mode), 160, or an even 256 bytes would be a great improvement. Add a switch to do this. Then the GTIA 16 hue/luma modes would be more useful. Maybe have a full 256 color more. GTIA, more PMGs and sprites. Pokey, - do duel pokey and quad pokey on one chip. Add waveforms. These chips use the first 16 bytes (32 for GTIA) of a 256 byte page, and there is room there. I think this is something Atari should have considered back in the 80's. I know Video Board XE would be a great replacement for the GTIA chip also. Like I say, would be great to add functions to Antic as well. Quote Share this post Link to post Share on other sites