Eric Hornchek edh@netcom.com 7/12/94 REV 1.0 SEE ASSOCIATED SCHEMATIC DRAWING AVAILABLE IN POSTSCRIPT FORMAT AS: ATARI.PS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OVERVIEW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A circuit is described which will allow Atari 2600 owners to archive their aging ROM cartridges to PC storage devices. It will also allow these data dumps to be downloaded to an SRAM device for play. The following cartridge copier/emulator circuit was implemented using an old IBM XT and a Keithley/Metrabyte PIO-12 card. This card is simply a 24 bit parallel digital I/O interface based around the 8255-5 PPI chip and a couple logic chips for address decoding. The apparatus has worked for all 2k and 4k carts I've tried except for Ms. Pac Man ... if anyone knows the trick to dumping this let me know. The 8255 has 4 registers, BASE+0 PA (read/write data for the 8 bit PA port) BASE+1 PB (read/write data for the 8 bit PB port) BASE+2 PC (read/write data for the 8 bit PC port) BASE+3 SR (status register - sets read/write modes) SR BIT0: 0=PC0-3 OUTPUT 1=PC0-3 INPUT BIT1: 0=PB OUTPUT 1=PB INPUT BIT2: 0=MODE 0 PB/PC 1=MODE 1 (USE MODE 0) BIT3: 0=PC4-7 OUTPUT 1=PC4-7 INPUT BIT4: 0=PA OUTPUT 1=PA INPUT BIT5/6:00=MODE 0 for PA/PC4-7 (USE 00) 01=MODE 1 for PA/PC4-7 10=MODE 2 for PA/PC4-7 BIT7: 0=RESET MODE 1=MODE SET ACTIVE (always set bit 7 when changing i/o states) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DUMPING DATA FROM CART TO PC: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Make sure atari is off. * Set: Port A: set to output (controls A0-A7 ) Port C: set to output (controls A9-A11, A12 [chip select]) Port B: set to input (data D0-D7) * Loop through addresses 0-4095 reading data at each. Chip select is active high for Atari cartridges. If a 2k cartridge is being read, data from 2048-4096 will be identical to data from 0-2047. Dump the data to a sequential binary file. Turn all lines to read mode after dumping cart. * Make sure to force PC5 (R/W) LOW in order to prevent the SRAM from writing to the data bus during rom acquire. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PLAYING FROM A ROM IMAGE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Make sure atari is off. * Set: Port A: output Port B: output Port C: output * Loop through addresses 0-4095 At each address, start with chip select (PC4) low: -set low address byte -set data byte -set high address byte and bring chip select high (and PC5 LOW). -short delay -set chip select low and loop back to step 1. * If you are dumping a 2k image, repeat image twice. * SET ALL PORTS TO READ. * Turn on the atari and play. The pull up resistor connected to the R/W logic will cause the SRAM to default to READ mode, and the inverter presents a compatible CS signal from the Atari to the SRAM. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPERATING PRECAUTIONS: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (1) KEEP ATARI OFF DURING ROM READ or SRAM PROGRAMMING (2) RESET 8255 TO ALL READ MODE TO AVOID BUS CONFLICTS BEFORE POWERING UP THE ATARI (3) DON'T CONNECT THE +5 AT THE ATARI SIDE. THE POWER FROM THE PC WILL KEEP THE SRAM CONFIGURATION WHILE THE ATARI IS POWERED DOWN. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BILL OF MATERIALS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (1) 7404 Hex Inverter $1.00 (1) 76C256AL-70 SRAM $3.49 for 2 (FRY'S ELECTRONICS) (1) 34 PIN HDD Cable with pin header and edge card conn. $3.00 (1) 34 Pin socket $3.00 (1) Old atari cartridge $.50 (thrift store) (1) 24 bit digital I/O device $???? (1) Prototyping board $????? ( ) Wire (1) Pull up resistor \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Please feel free to report any obvious documentation errors to me. I suspect that few people will be using the same exact setup I am, so I did not include source code for downloading/uploading rom images. If you would like sample code to get you started (Borland C), let me know... edh@netcom.com //////////////////////////////////////////////////////////////////// -- ------------------------------------------------------------ Eric Hornchek San Jose, CA edh@netcom.com ------------------------------------------------------------