The slot
This is the pinout of the cartridge slot:
Pin Side A SideB
--------------------------------------------------------------
1 A10 ................... GND
2 A9 GND
3 A11 A23
4 A8 A22
5 A12 ................... A21
6 A7 A20
7 A13 A19
8 A6 GND
9 A14 n.c.?
10 A5 ................... GND
11 A15 n.c.?
12 A4 GND
N/A N/A
N/A N/A
15 A16 ................... A1
16 A3 A0
17 A17 GND or 68000 HALT???
18 A2 /RES
19 A18 /WR (RAM U23 Pin 12)
20 /ROM (CPU CE (U1..U4) Pin 57) ??? (RAM U24 Pin 12)
21 GND /DIR (68000 R/W)
22 D31 /ROM2 (CPU OE(LowWORD))
23 D16 /ROM1 (CPU OE(HighWORD))
24 D23 GND
25 D24 ................... INT0 (DSP Pin ?)
26 D30 INT1 (DSP Pin ?)
27 D17 +10V (DIRECT)
28 D22 n.c.
29 D25 GND
30 D29 ................... n.c.
31 D18 DSP Pin ?
32 D21 GND
33 D26 68000 /RESETIN
34 D28 CARD INSERT A
35 D19 ................... CARD INSERT B
36 D20 VCC
37 D27 VCC
38 VCC ?
39 D15 n.c.
40 D0 ................... EEPROM SERIAL DATA/STATUS
41 D7 n.c.
42 D8 /GPIO0 (EEPROM CLOCK)
43 D14 /GPIO1 (EEPROM SELECT)
44 D1 /GPIO2 (DSP Pin ?)
45 D6 ................... /GPIO3 (*DSP Pin ?)
46 D9 /GPIO4 (DSP Pin ?)
47 D13 DSP Pin ?
48 D2 DSP Pin ?
49 D5 DSP Pin ?
50 D10 ................... DSP Pin ?
51 D12 GND
52 D3 68000 CLOCK 13.295453MHz
53 D4 GND
54 D11 ................... GND
The 16bit-ROM
Here is the pinout of the 42-leg ROM IC:
----u----
A18 1=| |=42 VCC?
A17 2=| |=41 A 8
A 7 3=| |=40 A 9
A 6 4=| |=39 A10
A 5 5=| |=38 A11
A 4 6=| |=37 A12
A 3 7=| |=36 A13
A 2 8=| |=35 A14
A 1 9=| |=34 A15
A 0 10=| |=33 A16
!CE 11=| |=32 !BYTE
GND 12=| |=31 GND
!OE 13=| |=30 D15
D 0 14=| |=29 D 7
D 8 15=| |=28 D14
D 1 16=| |=27 D 6
D 9 17=| |=26 D13
D 2 18=| |=25 D 5
D10 19=| |=24 D12
D 3 20=| |=23 D 4
D11 21=| |=22 VCC
---------
The 128K*8bit ROM
Here is the pinout of the 32-leg ROM IC:
----u----
Vpp 1=| |=32 VCC
A16 2=| |=31 PGM
A15 3=| |=30 NC
A12 4=| |=29 A14
A 7 5=| |=28 A13
A 6 6=| |=27 A 8
A 5 7=| |=26 A 9
A 4 8=| |=25 A11
A 3 9=| |=24 /OE
A 2 10=| |=23 A10
A 1 11=| |=22 /CE
A 0 12=| |=21 D 7
D 0 13=| |=20 D 6
D 1 14=| |=19 D 5
D 2 15=| |=18 D 4
GND 16=| |=17 D 3
---------
The 512K*8bit ROM
Here is the pinout of the 32-leg ROM IC:
----u----
VPP 1=| |=32 VCC
A16 2=| |=31 A18
A15 3=| |=30 A17
A12 4=| |=29 A14
A 7 5=| |=28 A13
A 6 6=| |=27 A 8
A 5 7=| |=26 A 9
A 4 8=| |=25 A11
A 3 9=| |=24 /OE
A 2 10=| |=23 A10
A 1 11=| |=22 /CE
A 0 12=| |=21 D 7
D 0 13=| |=20 D 6
D 1 14=| |=19 D 5
D 2 15=| |=18 D 4
GND 16=| |=17 D 3
---------
The EEPROM
The chip in the cartridge, that is used to save highscores or small
amounts of save game data is a National Semiconductor NM93C14
compatible chip.
This EEPROM has 128 bytes, which is organized as 64 16 bit words.
Each cell is addressed by a number from $0 to $3F. The chip can be
accessed with a maximum speed of 1 MHz and promises to have a
lifespan of 15 years.
It is advertised to sustain at least 100000 read/write accesses.
This means (according to National Semiconductor, who I asked about
this) datachanges on the whole chip. This isn't a whole lot really;
running a tight loop you can exhaust this in approximately 3 seconds.
Or to put this in another perspective, if you had a video game that
would update the complete EEPROM after each game, you could play -safely-
ca. 1500 games.
It is therefore smart to minimize accesses to the EEPROM. I suggest
that at the start of your code, you read the values from all of the
cells that you are going to use (not all of the EEPROM) completely
and keep a local copy.
When ever you need to save changes, compare your data with the
previous shadow copy and only update those cells that need it.
The 128K*8 Flash-PEROM
Here is the pinout of the ATMEL 29C010 12JC (PLCC32):
A12 A16 Vcc NC
| | | |
|A15| NC|/WE|
| | | | 3 3 3
4 3 2 1 2 1 0
- - - - - - -
A 7 5=| o |=29 A14
A 6 6=| |=28 A13
A 5 7=| |=27 A 8
A 4 8=| |=26 A 9
A 3 9=| |=25 A11
A 2 10=| |=24 /OE
A 1 11=| |=23 A10
A 0 12=| |=22 /CE
D 0 13=| |=21 D 7
- - - - - - -
1 1 1 1 1 1 2
4 5 6 7 8 9 0
| D2| D3| D5|
| | | |
D1 GND D4 D6