prom / chips.c

phooky 9472c41 



































phooky d59ac8b 

phooky 9472c41 














phooky d59ac8b 


phooky 9472c41 














phooky d59ac8b 


phooky 9472c41 

phooky a630abe 


















phooky 9472c41 















phooky d59ac8b 


phooky 9472c41 














phooky d59ac8b 


phooky 9472c41 


















phooky d59ac8b 


phooky 9472c41 














phooky d59ac8b 


phooky 9472c41 


























































phooky d59ac8b 


phooky 9472c41 








































phooky d59ac8b 


phooky 9472c41 



















phooky d59ac8b 


phooky 9472c41 


















phooky d59ac8b 


phooky 9472c41 


















phooky d59ac8b 


phooky 9472c41 



















phooky d59ac8b 


phooky 9472c41 

























phooky d59ac8b 


phooky 9472c41 


#include "chips.h"
#include "bits.h"

const prom_t proms[] = {
{
	// Default is to leave everything in tristate mode
	.name		= "NONE",
	.pins		= 28,

	.addr_width	= 0,
	.addr_pins	= {
	},

	.data_width	= 0,
	.data_pins	= {
	},

	.hi_pins	= { },
	.lo_pins	= { },
},
{
	.name		= "M27C512",
	.pins		= 28,

	.addr_width	= 16,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2, 26, 27, 1,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},

	.hi_pins	= { 28, },
	.lo_pins	= { 22, 20, 14, },
	.vcc		= 28,
	.gnd		= 14,
},
{
	.name		= "M27C256",
	.pins		= 28,
	.addr_width	= 15,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2, 26, 27,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= { 28, 1 },
	.lo_pins	= { 22, 20, 14, },

	.vcc		= 28,
	.gnd		= 14,
},
{
	.name		= "M27C128",
	.pins		= 28,
	.addr_width	= 14,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2, 26,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= { 28, 1, 27, },
	.lo_pins	= { 22, 20, 14, },

	.vcc		= 28,
	.gnd		= 14,
},
{
	.name		= "AM27C040",
	.pins		= 32,
	.addr_width	= 19,
	.addr_pins	= {
    12, 11, 10, 9, 8, 7, 6, 5, 
    27, 26, 23, 25, 4, 28, 29, 3,
    2, 30, 31, 
  },
	.data_width	= 8,
	.data_pins	= {
    13, 14, 15, 17, 18, 19, 20, 21,
	},
	.hi_pins	= { },
	.lo_pins	= { 1, 22, 24, },

	.vcc		= 32,
	.gnd		= 16,
},
{
	.name		= "LH-535618",
    .options 	= OPTIONS_PULLUPS | OPTIONS_LATCH,
	.pins		= 28,
	.addr_width	= 15,
	.addr_pins	= {
    10, 9, 8, 7, 6, 5, 4, 3, 26, 25, 2, 20, 24, 22, 28,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= { 1, },
	.lo_pins	= { 
    [LATCH_PIN] = 23,
    21, 27, 14, },

	.vcc		= 1,
	.gnd		= 14,
},
{
	.name		= "M27C64",
	.pins		= 28,
	.addr_width	= 13,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= { 28, 1, 27 },
	.lo_pins	= { 22, 20, 14, },

	.vcc		= 28,
	.gnd		= 14,
},
{
	.name		= "87C64",
	.options 	= OPTIONS_PULLUPS | OPTIONS_LATCH,
	.pins		= 28,
	.addr_width	= 13,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= { 28, 1, 27 },
	.lo_pins	= { 
		[LATCH_PIN] = 20,
		22, 14, 
	},

	.vcc		= 28,
	.gnd		= 14,
},
{
	.name		= "C64-2732",
	.pins		= 24,
	.addr_width	= 12,
	.addr_pins	= {
		8, 7, 6, 5, 4, 3, 2, 1, 23, 22, 19, 18,
	},

	.data_width	= 8,
	.data_pins	= {
		9, 10, 11, 13, 14, 15, 16, 17,
	},
	.hi_pins	= { 24, 21 },
	.lo_pins	= { 12, 20, },

	.vcc		= 24,
	.gnd		= 12,
},
{
	/** 512x8 PROM -- UNTESTED */	
	.name		= "TBP28S42",
	.pins		= 20,
	.addr_width	= 9,
	.addr_pins	= {
		1, 2, 3, 4, 5, 16, 17, 18, 19,
	},
	.data_width	= 8,
	.data_pins	= {
		6, 7, 8, 9, 11, 12, 13, 14,
	},
	.hi_pins	= { 20 },
	.lo_pins	= { 10, 15 },
},

{
	/** 8192x8 UV EEPROM, found in DX synth */
	.name		= "MBM2764-30",
	.pins		= 28,
	.addr_width	= 13,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2,
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= {
		//28, // vdd, disabled since external power must be used
		27, // pgm
		1,  // vpp
	},
	.lo_pins	= { 22, 20, 14, }, // !oe, !cs, gnd
},
{
	// C64 kernel and basic ROMs
	.name		= "27C210",
	.pins		= 40,
	.addr_width	= 16,
	.addr_pins	= {
    21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37,
	},
	.data_width	= 16,
	.data_pins	= {
    19, 18, 17, 16, 15, 14, 13, 12, 10,  9,  8,  7,  6,  5,  4,  3,
	},
	.hi_pins	= {
    40, // VCC
    1,  // VPP
    39, // PGM'
	},
	.lo_pins	= {
    2, // E'
    11, 30, // GND
    20, // G'
	},

	.vcc		= 40,
	.gnd		= 11,
},
{
	/** Apple Mac SE PROM chips
	 * Similar to a M27C512, but with the 17th address line
	 * on 22 instead of Vpp, allowing 128 KB of data.
	 */
	.name		= "APPLE PROM",
	.pins		= 28,
	.addr_width	= 17,
	.addr_pins	= {
		10, 9, 8, 7, 6, 5, 4, 3, 25, 24, 21, 23, 2, 26, 27, 1, 22
	},

	.data_width	= 8,
	.data_pins	= {
		11, 12, 13, 15, 16, 17, 18, 19,
	},
	.hi_pins	= { 28, },
	.lo_pins	= { 20, 14, },
},
{
	.name		= "28F512 (untstd)",
	.pins		= 32,
	.addr_width	= 16,
	.addr_pins	= {
		12, 11, 10, 9, 8, 7, 6, 5, 27, 26, 23, 25, 4, 28, 29, 15
	},
	.data_width	= 8,
	.data_pins	= {
		13, 14, 15, 17, 18, 19, 20, 21,
	},
	.hi_pins	= {
		32, // vcc
		31, // !we
		1, // Vpp
	},
	.lo_pins	= {
		16, // gnd
		24, // !oe
		22, // !ce
	},

	.vcc		= 32,
	.gnd		= 16,
},
{
	// C64 kernel and basic ROMs
	.name		= "2364A",
	.pins		= 24,
	.addr_width	= 13,
	.addr_pins	= {
		8, 7, 6, 5, 4, 3, 2, 1, 23, 22, 19, 18, 21,
	},
	.data_width	= 8,
	.data_pins	= {
		9, 10, 11, 13, 14, 15, 16, 17,
	},
	.hi_pins	= {
		24,
	},
	.lo_pins	= {
		12, // gnd
		20, // !cs
	},

	.vcc		= 24,
	.gnd		= 12,
},
{
	/** 2716 mask ROM used in video games.
	 * \note: Not tested yet.
	 */
	.name		= "2716 (untested)",
	.pins		= 24,
	.addr_width	= 11,
	.addr_pins	= {
		8, 7, 6, 5, 4, 3, 2, 1, 23, 22, 19,
	},

	.data_width	= 8,
	.data_pins	= {
		9, 10, 11, 13, 14, 15, 16, 17
	},

	.hi_pins	= { 24, 21, },
	.lo_pins	= { 12, 20, 18 },

	.vcc		= 24,
	.gnd		= 12,
},
{
	/** 9316 mask ROM used in video games.
	 * \note: Not tested yet.
	 */
	.name		= "9316 (untested)",
	.pins		= 24,
	.addr_width	= 11,
	.addr_pins	= {
		8, 7, 6, 5, 4, 3, 2, 1, 23, 22, 19,
	},

	.data_width	= 8,
	.data_pins	= {
		9, 10, 11, 13, 14, 15, 16, 17
	},

	.hi_pins	= { 24, 18, },
	.lo_pins	= { 12, 21, 20 },

	.vcc		= 24,
	.gnd		= 12,
},
{
	.name		= "HN462732",
	.pins		= 24,
	.addr_width	= 12,
	.addr_pins	= {
		8, 7, 6, 5, 4, 3, 2, 1, 23, 22, 19, 21,
	},
	.data_width	= 8,
	.data_pins	= {
		9, 10, 11, 13, 14, 15, 16, 17,
	},
	.hi_pins	= {
		24, // vcc
	},
	.lo_pins	= {
		12, // gnd
		20, // !oe
		18, // !ce
	},

	.vcc		= 24,
	.gnd		= 12,
},
{
	/** atmega8.
	 * Not an EEPROM, but a chip to read via ISP.
	 * data_width / addr_width == 0 to indicate that this is not eeprom
	 */
	.name		= "ATMega8",
	.pins		= 28,
	.addr_width	= 13,
	.addr_pins	= {
		[ISP_MOSI] = 17, // from the reader to the chip
		[ISP_SCK] = 19, // SCK,
		[ISP_RESET] = 1, // reset
		[ISP_XTAL] = 9, // xtal
	},
	.data_pins	= {
		[ISP_MISO] = 18, // from the chip back to the reader
	},
	.lo_pins	= {
		8, // gnd
		22, // gnd
	},
	.hi_pins	= {
		7, // vcc
		20, // avcc
	},

	.vcc		= 7,
	.gnd		= 8,
},
};

const uint16_t proms_count = array_count(proms);
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.