/**************************************************************************
**
**	FILE        :  @(#)s1c88349.cpu	1.2
**
**	VERSION     :  01/05/19
**
**	DESCRIPTION :  CPU description for S1C88349.
**		       - MCU mode (default)
**		       - MPU mode
**
**	COPYRIGHT   :  2000 SEIKO EPSON CORPORATION
**
**************************************************************************/

cpu {
////////////////////////////////////////////////////////////////////////
//
//	 A D R E S S I N G   M O D E S 
//	(MPU and MCU)
//

	/////////////////////////////////////////////////////////
	//
	// program memory short
	// - Section CODE SHORT (object format id-nbr Y3)
	// - 8 bits addressable
	// - 0-32k address range mapped to 0-32k address space
	//         (via addressing mode code)
	//          
	amode code_short {
		attribute Y3;
		mau 8;
		map src=0 size=32k dst=0 amode=code;
	}

	/////////////////////////////////////////////////////////
	//
	// program memory/ constant rom data
	// - Section CODE (object format id-nbr Y1)
	// - 8 bits addressable
	// - 0-8M address range mapped to 0-8M address space
	//        (via addressing mode data)
	//
	amode code {
		attribute Y1;
		mau 8;
		map src=0 size=8M dst=0 space=SMC88_space;
	}

	/////////////////////////////////////////////////////////
	//  data memory tiny
	// - Section DATA TINY (object format id-nbr Y5)
	// - 8 bits addressable
	// - 0-256 address range mapped to address space
	//         (via addressing mode data_short)
	//          
	amode data_tiny {
		attribute Y5;
		mau 8;
		map src=0 size=0x100 align=0x100 amode=data_short;
	}

	/////////////////////////////////////////////////////////
	//
	// data memory short
	// - Section DATA SHORT (object format id-nbr Y4)
	// - 8 bits addressable
	// - 0-64k address range mapped to 0-64k address space 
	//	   (via adressing mode data)
	//
	amode data_short {
		attribute Y4;
		mau 8;
		map src=0 size=64k dst=0 amode=data;
	}

	/////////////////////////////////////////////////////////
	//
	// data memory 
	// - Section DATA (object format id-nbr Y2)
	// - 8 bits addressable
	// - 0-16M address range mapped to 0-16M address space
	//
	amode data {
		attribute Y2;
		mau 8;
		map src=0 size=16M dst=0 space=SMC88_space;
	}


///////////////////////////////////////////////////////////////////////
//
//	S P A C E 
//	(MPU and MCU)
//
	
	/////////////////////////////////////////////////////////
	//
	// address space 
	// - 8 bits addressable
	// - 0-16M address range mapped to 0-16M bus
	//
	space SMC88_space {
		mau 8;
		map src=0 size=16M dst=0 bus=SMC88_bus label=total_range;
	}


////////////////////////////////////////////////////////////////////////
//
//	B U S
//      MCU configuration
//

	/////////////////////////////////////////////////////////
	//
	// bus 
	// - 8 bits addressable
	// - 0-48k address range mapped to 0-48k internal bus
	// - 48k-60k address range mapped to 48k-60k external bus
	// - 60k-64k address range mapped to 60k-64k internal bus
	// - 64k-16M address range mapped to 64k-16M external bus 
	// ( external bus is specified in s1c88349.mem )
	//
	bus SMC88_bus {
		mau 8;
		map src=0       size=0x10000   dst=0       bus=internal_bus;
		map src=0x10000 size=0xff0000 dst=0x10000 bus=external_bus;
	}

	bus internal_bus {
		mau 8;
		mem addr=0      chips=i_rom;
		mem addr=0xf000 chips=i_ram;
		mem addr=0xf800 chips=dis_mem;
		mem addr=0xff00 chips=io_mem;
	}

////////////////////////////////////////////////////////////////////////
//
//	I N T E R N A L   C H I P S
//	MCU configuration
//

	/////////////////////////////////////////////////////////
	// internal rom 
	// read-only
	// 8 bits addressable
	// 4000(hex) size
	//
	chips	i_rom	attr=r mau=8 size=0xC000;

	/////////////////////////////////////////////////////////
	// internal ram 
	// writable
	// 8 bits addressable
	// 800(hex) size
	//
	chips	i_ram	attr=w mau=8 size=0x800;

	/////////////////////////////////////////////////////////
	// display memory 
	// special (cannot allocate in this area)
	// 8 bits addressable
	// 542(hex) size
	//
	chips	dis_mem	attr=s mau=8 size=0x542;

	/////////////////////////////////////////////////////////
	// i/o memory
	// special (cannot allocate in this area)
	// 8 bits addressable
	// 100(hex) size
	//	
	chips	io_mem	attr=s mau=8 size=0x100;



////////////////////////////////////////////////////////////////////////
//
//	B U S
//      MPU configuration
//

	/////////////////////////////////////////////////////////
	//
	// bus 
	// - 8 bits addressable
	// - 0-60k address range mapped to 0-60k external bus
	// - 60k-64k address range mapped to 60k-64k internal bus
	// - 64k-16M address range mapped to 64k-16M external bus 
	// ( external bus is specified in s1c88349.mem )
	//
  //	bus SMC88_bus {
  //		mau 8;
  //		map src=0       size=0xf000   dst=0       bus=external_bus;
  //		map src=0xf000  size=0x1000   dst=0xf000  bus=internal_bus;
  //		map src=0x10000 size=0xff0000 dst=0x10000 bus=external_bus;
  //	}

  //	bus internal_bus {
  //		mau 8;
  //		mem addr=0xf000 chips=i_ram;
  //		mem addr=0xf800 chips=dis_mem;
  //		mem addr=0xff00 chips=io_mem;
  //	}

////////////////////////////////////////////////////////////////////////
//
//	I N T E R N A L   C H I P S
//	MPU configuration
//

	/////////////////////////////////////////////////////////
	// internal ram 
	// writable
	// 8 bits addressable
	// 800(hex) size
	//
  //	chips	i_ram	attr=w mau=8 size=0x800;

	/////////////////////////////////////////////////////////
	// display memory 
	// special (cannot allocate in this area)
	// 8 bits addressable
	// 542(hex) size
	//
  //	chips	dis_mem	attr=s mau=8 size=0x542;

	/////////////////////////////////////////////////////////
	// i/o memory
	// special (cannot allocate in this area)
	// 8 bits addressable
	// 100(hex) size
	//	
  //	chips	io_mem	attr=s mau=8 size=0x100;

////////////////////////////////////////////////////////////////////////
//
//	D E B U G G E R   R E G I S T E R   D E F I N I T I O N S
//	
	/////////////////////////////////////////////////////////
	// currently, no derivatives have special names for
	// their sfr's. Therefore all processors currently use
	// the default register definition file.
	regsfr	reg88.dat
}
