public static void gtmr_mcu_run()
	{
		int mcu_command	=	mcu_ram.READ_WORD(0x0010);
		int mcu_offset	=	mcu_ram.READ_WORD(0x0012);
		int mcu_data	=	mcu_ram.READ_WORD(0x0014);
	
		if (errorlog!=null) fprintf(errorlog,
		 "CPU #0 PC %06X : MCU executed command: %04X %04X %04X\n",cpu_get_pc(),mcu_command,mcu_offset,mcu_data);
	
		switch (mcu_command >> 8)
		{
	
			case 0x02:	// Read from NVRAM
			{
				Object f;
				if ((f = osd_fopen(Machine.gamedrv.name,null,OSD_FILETYPE_NVRAM,0)) != null)
				{
					osd_fread(f,mcu_ram,mcu_offset, 128);
					osd_fclose(f);
				}
			}
			break;
	
			case 0x42:	// Write to NVRAM
			{
				Object f;
				if ((f = osd_fopen(Machine.gamedrv.name,null,OSD_FILETYPE_NVRAM,1)) != null)
				{
					osd_fwrite(f,mcu_ram,mcu_offset, 128);
					osd_fclose(f);
				}
			}
			break;
	
			case 0x03:	// DSW
			{
				mcu_ram.WRITE_WORD(mcu_offset, readinputport(4));
			}
			break;
	
			case 0x04:	// TEST (2 versions)
			{
				if (Machine.gamedrv == driver_gtmr)
				{
					/* MCU writes the string "MM0525-TOYBOX199" to shared ram */
					mcu_ram.WRITE_WORD(mcu_offset+0x00, 0x4d4d );
					mcu_ram.WRITE_WORD(mcu_offset+0x02, 0x3035 );
					mcu_ram.WRITE_WORD(mcu_offset+0x04, 0x3235 );
					mcu_ram.WRITE_WORD(mcu_offset+0x06, 0x2d54 );
					mcu_ram.WRITE_WORD(mcu_offset+0x08, 0x4f59 );
					mcu_ram.WRITE_WORD(mcu_offset+0x0a, 0x424f );
					mcu_ram.WRITE_WORD(mcu_offset+0x0c, 0x5831 );
					mcu_ram.WRITE_WORD(mcu_offset+0x0e, 0x3939 );
				}
	
				if (Machine.gamedrv == driver_gtmre)
				{
					/* MCU writes the string "USMM0713-TB1994 " to shared ram */
					mcu_ram.WRITE_WORD(mcu_offset+0x00, 0x5553 );
					mcu_ram.WRITE_WORD(mcu_offset+0x02, 0x4d4d );
					mcu_ram.WRITE_WORD(mcu_offset+0x04, 0x3037 );
					mcu_ram.WRITE_WORD(mcu_offset+0x06, 0x3133 );
					mcu_ram.WRITE_WORD(mcu_offset+0x08, 0x2d54 );
					mcu_ram.WRITE_WORD(mcu_offset+0x0a, 0x4231 );
					mcu_ram.WRITE_WORD(mcu_offset+0x0c, 0x3939 );
					mcu_ram.WRITE_WORD(mcu_offset+0x0e, 0x3420 );
				}
			}
			break;
		}
	
	}