[stella] RAMCART PCB

Subject: [stella] RAMCART PCB
From: "Eric Ball" <eball@xxxxxxxxxx>
Date: Wed, 2 Oct 2002 14:59:51 -0400
Although there has been a discussion on stellalist about RAMcarts, I
haven't been able to track down a PCB design.  The following is my final
attempt at creating one, and I am fairly certain it will work.  However, I
have not actually made and tested one for cost reasons.  I also have based
the cartridge edge connector on the pictures of the Pixels Past PCBs.

The following picture is taken from the ExpressPCB.com "free" PCB layout
tool.  ExpressPCB will manufacture 3 of the PCB for US$62 including
shipping.  I've posted the picture rather than the file so people may use
other PCB layout tools (like Protel's EasyTrax for DOS) to generate
industry standard gerber files.  If anyone is interested, I will gladly
provide either the ExpressPCB or EasyTrax files.  And if anyone wants to go
the ExpressPCB route, let me know and I might buy one of the PCBs off you.

(See attached file: RAMCART.gif)

(Yes, I know all about the GIF patent issues, but it is still an extremely
common and well documented format with a good compression ratio.)

The PCB is a 2 layer design.  Since this picture is from ExpressPCB, the
PCB conforms to the 3.8"x2.5" miniboard size.  Optimally, the edge
connector should be longer.  The width of the PCB was determined by the
size of the DB25 parallel port connector.  Naturally, the final PCB will
need to be trimmed for the edge connector.  Those of you who do PCB layout
will notice that this design is a little unusual.  However, one of my
objectives was to avoid any vias other than those required for the
components.  This has also meant that bit order is not preserved with
respect to the parallel port.  (But since a program will be generating the
bits, a simple table lookup will fix that problem.)

Components required:
1 x DB25 male, right-angle (parallel port connector)
1 x DS1225 8Kx8 NV-SRAM or equivalent
2 x 74LS374 Octal D flip flop
1 x 74LS04 Hex inverter

(Note: although an 8kbyte SRAM is used, only 4kbyte is accessible.
Bankswitching would require a PAL or FPGA.  A switch could be wired in to
select the banks.)

To provide power to the PCB when it is connected to the PC (since the PC
parallel port doesn't have a power pin), you will need the following
components:
1 x Atari cartridge connector
1 x DB15 male and wire or a dead joystick

1 2 3 4 5 6 7 8
 F E D C A B 9

Connect the four outside (1, F, 8 & 9) pins of the DB15 to pin 11 of one
side (top) the Atari cartridge connector (power)
Connect the three inside (4, D & C) pins of the DB15 to pin 1 of the other
side (bottom) on the Atari cartridge connector (ground)

To program the RAMcart you will need to do a little programming.  (If
someone gets this far, and I get one, I can probably write it.)  But the C
code goes something like this:

fp = fopen( "2600cart.bin", "rb" );
for ( msb = 0; msb < 16; msb++ ) {
  _outp( 0x378, xmsb[msb] );
  wait 0.5 uSec
  _outp( 0x37A, 0x02);
  wait 0.5 uSec
  _outp( 0x37A, 0x00);
  wait 0.5 uSec
  for ( lsb = 0; lsb < 256; lsb++ ) {
    _outp( 0x378, xlsb[lsb] );
    wait 0.5 uSec
    _outp( 0x37A, 0x08);
    wait 0.5 uSec
    _outp( 0x37A, 0x00);
    wait 0.5 uSec
    _outp( 0x378, xdata[fgetc(fp)] );
    wait 0.5 uSec
    _outp( 0x37A, 0x01);
    wait 0.5 uSec
    _outp( 0x37A, 0x00);
    wait 0.5 uSec
  }
}
fclose( fp );

For the translation tables:

76543210 outp
  3 2 10 xmsb
10325476 xlsb
34251607 xdata


Attachment: RAMCART.gif
Description: GIF image

Current Thread