diff -N -u -r dodiff/xmame-0.37b13.2/mess/includes/pc8201.h xmame-0.37b13.2/mess/includes/pc8201.h
--- dodiff/xmame-0.37b13.2/mess/includes/pc8201.h	Thu Jan  1 10:00:00 1970
+++ xmame-0.37b13.2/mess/includes/pc8201.h	Fri Jan  4 19:57:13 2002
@@ -0,0 +1,20 @@
+#include "driver.h"
+
+#define PC8201_NUM_COLOURS 2
+
+#define PC8201_SCREEN_WIDTH        240
+#define PC8201_SCREEN_HEIGHT       64
+
+int pc8201_vh_start(void);
+void pc8201_vh_stop(void);
+void pc8201_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
+void pc8201_init_palette(unsigned char *sys_palette, unsigned short *sys_colortable, const unsigned char *color_prom);
+
+#define PC8201_AWAKE	0
+#define PC8201_SNOOZE	1
+#define PC8201_COMA	2
+
+#define PC8201_SNOOZE_TRIGGER 2
+
+extern unsigned char pc8201_lcd[11][256];
+
diff -N -u -r dodiff/xmame-0.37b13.2/mess/system.c xmame-0.37b13.2/mess/system.c
--- dodiff/xmame-0.37b13.2/mess/system.c	Sun Apr  8 05:30:04 2001
+++ xmame-0.37b13.2/mess/system.c	Fri Jan  4 04:34:29 2002
@@ -96,7 +96,7 @@
 	DRIVER( nespal )	/* Nintendo Entertainment System				  */
 	DRIVER( famicom )
 	DRIVER( gameboy )	/* Nintendo GameBoy Handheld					  */
-	DRIVER (snes)		/* Nintendo Super Nintendo						  */
+/*	DRIVER (snes)	*/	/* Nintendo Super Nintendo						  */
 /*	DRIVER (vboy)	*/	/* Nintendo Virtual Boy 						  */
 #endif
 
@@ -179,6 +179,8 @@
 #endif
 
 /****************COMPUTERS****************************************************/
+    DRIVER( pc8201 )	/* NEC/Kyocera PC-8201				  */
+
     /* ACORN */
 #ifndef MESS_EXCLUDE_ACORN
     DRIVER( atom )      /* 1979 Acorn Atom                                */
diff -N -u -r dodiff/xmame-0.37b13.2/mess/systems/pc8201.c xmame-0.37b13.2/mess/systems/pc8201.c
--- dodiff/xmame-0.37b13.2/mess/systems/pc8201.c	Thu Jan  1 10:00:00 1970
+++ xmame-0.37b13.2/mess/systems/pc8201.c	Fri Jan  4 22:21:13 2002
@@ -0,0 +1,428 @@
+/*
+ *
+ */
+
+#include "driver.h"
+#include "includes/pc8201.h"
+
+unsigned char *pc8201_memory = NULL;
+
+int pc8201_lcd_bank = 0;
+unsigned char pc8201_lcd[11][256];
+unsigned char pc8201_lcd_addr[10];
+
+/* load image */
+void pc8201_dump_ram(void)
+{
+	void *file;
+
+	file = osd_fopen(Machine->gamedrv->name, "pc8201.ram", OSD_FILETYPE_MEMCARD,OSD_FOPEN_WRITE);
+ 
+	if (file)
+	{
+		int i;
+		for (i=32768; i<65536; i++)
+		{
+			char data;
+
+			data = cpu_readmem16(i);
+
+			osd_fwrite(file, &data, 1);
+
+		}
+
+		/* close file */
+		osd_fclose(file);
+	}
+
+}
+
+static mem_read_handler pc8201_read_handler[] =
+{
+ MRA_BANK1, MRA_BANK2, MRA_BANK3, MRA_BANK4, MRA_BANK5
+};
+
+
+static mem_write_handler pc8201_write_handler[] =
+{
+ MWA_BANK6, MWA_BANK7, MWA_BANK8, MWA_BANK9, MWA_BANK10
+};
+
+void pc8201_init_machine(void)
+{
+	pc8201_memory = malloc(32*1024);
+
+	if (pc8201_memory)
+	{
+		memset(pc8201_memory, 0x0ff, 32*1024);
+	}
+
+	memory_set_bankhandler_r(1, 0, MRA_BANK1);
+	memory_set_bankhandler_r(2, 0, MRA_BANK2);
+	memory_set_bankhandler_r(3, 0, MRA_BANK3);
+	memory_set_bankhandler_r(4, 0, MRA_BANK4);
+	memory_set_bankhandler_r(5, 0, MRA_BANK5);
+
+	memory_set_bankhandler_w(6, 0, MWA_BANK6);
+	memory_set_bankhandler_w(7, 0, MWA_BANK7);
+	memory_set_bankhandler_w(8, 0, MWA_BANK8);
+	memory_set_bankhandler_w(9, 0, MWA_BANK9);
+	memory_set_bankhandler_w(10, 0, MWA_BANK10);
+
+}
+
+
+void pc8201_shutdown_machine(void)
+{
+	if (pc8201_memory!=NULL)
+	{
+		free(pc8201_memory);
+		pc8201_memory = NULL;
+	}
+}
+
+
+static MEMORY_READ_START (readmem_pc8201)
+        {0x00000, 0x07fff, MRA_BANK1},	/* System ROM */
+	{0x08000, 0x0bfff, MRA_BANK2},	/* Empty */
+        {0x0c000, 0x0ffff, MRA_BANK3},	/* Ram */
+MEMORY_END
+
+static MEMORY_WRITE_START (writemem_pc8201)
+        {0x00000, 0x07fff, MWA_BANK6},
+        {0x08000, 0x0bfff, MWA_BANK7},
+        {0x0c000, 0x0ffff, MWA_BANK8},
+MEMORY_END
+
+static unsigned char port_a = 0;	/* General data - Printer Data, Clock Data, Keyb/LCD strobe */
+static unsigned char port_b = 0;
+static unsigned char port_c = 0;
+
+WRITE_HANDLER(pc8201_port_w)
+{
+	unsigned char port;
+	int setbank;
+	int addr;
+	int ok;
+
+	ok=1;
+	setbank=0;
+	port = offset & 0x0ff;
+
+	switch (port)
+	{
+		case 0xb9:	
+			port_a = data;
+			setbank=1;
+			break;
+		case 0xba:
+			port_b = data;
+			setbank=1;
+			break;
+		case 0xbb:
+			port_c = data;
+			ok=0;
+			break;
+		case 0xfe:	/* LCD command */
+			pc8201_lcd_addr[pc8201_lcd_bank] = data;
+			/* fprintf(stderr,"pc8201: LCDCM = 0x%02x\n",data); */
+			break;
+		case 0xff:	/* LCD data */
+			addr = pc8201_lcd_addr[pc8201_lcd_bank]++;
+			pc8201_lcd[pc8201_lcd_bank][addr] = data;
+			/* fprintf(stderr,"pc8201: LCD [%i][%02x] = 0x%02x\n",pc8201_lcd_bank,addr,data); */
+			break;
+		default:
+			ok=0;
+	}
+
+
+	if (setbank) {
+		/* FIXME - could optimize this */
+		/* FIXME - might need to emulate multiple banks selected */
+		switch (port_a | ( (port_b & 3) << 8 )) {
+			case 0:		pc8201_lcd_bank = 0; break;
+			case 0x01:	pc8201_lcd_bank = 1; break;
+			case 0x02:	pc8201_lcd_bank = 2; break;
+			case 0x04:	pc8201_lcd_bank = 3; break;
+			case 0x08:	pc8201_lcd_bank = 4; break;
+			case 0x10:	pc8201_lcd_bank = 5; break;
+			case 0x20:	pc8201_lcd_bank = 6; break;
+			case 0x40:	pc8201_lcd_bank = 7; break;
+			case 0x80:	pc8201_lcd_bank = 8; break;
+			case 0x100:	pc8201_lcd_bank = 9; break;
+			case 0x200:	pc8201_lcd_bank = 10; break;
+		}
+		/* fprintf(stderr,"pc8201: _lcd_bank = %i\n",pc8201_lcd_bank); */
+
+		ok=0;
+	}
+
+	if (!ok)
+		fprintf(stderr,"pc8201: portw [%02x] = 0x%02x\n",port,data);
+
+/* logerror("port w: %04x %02x\n", offset, data); */
+
+}
+
+READ_HANDLER(pc8201_port_r)
+{
+	unsigned char port;
+	unsigned char data;
+
+	int ok;
+	int addr;
+
+	port = offset & 0x0ff;
+	
+	data = 0xff;
+	ok=0;
+
+	switch (port)
+	{
+		case 0xA0:	/* IOCNT read status */
+			data=0; /* FIXME */
+			break;
+		case 0xb9:
+			data=port_a;
+			break;
+		case 0xba:
+			data=port_b;
+			break;
+		case 0xbb:
+			data=port_c;
+			break;
+		case 0xe8:	/* read keyboard */
+			data =0;
+			if ((port_a & 0x01)==0x01) data |= readinputport(0);
+			if ((port_a & 0x02)==0x02) data |= readinputport(1);
+			if ((port_a & 0x04)==0x04) data |= readinputport(2);
+			if ((port_a & 0x08)==0x08) data |= readinputport(3);
+			if ((port_a & 0x10)==0x10) data |= readinputport(4);
+			if ((port_a & 0x20)==0x20) data |= readinputport(5);
+			if ((port_a & 0x40)==0x40) data |= readinputport(6);
+			if ((port_a & 0x80)==0x80) data |= readinputport(7);
+			break;
+		case 0xfe:	/* LCD status */
+			/* fprintf(stderr,"pc8201: LCDST = 0\n"); */
+			data=0;	/* currently we are always ready */
+			ok=1;
+			break;
+		case 0xff:	/* LCD data */
+			addr = pc8201_lcd_addr[pc8201_lcd_bank]++;
+			data = pc8201_lcd[pc8201_lcd_bank][addr];
+			/* fprintf(stderr,"pc8201: LCD [%i][%02x] read 0x%02x\n",pc8201_lcd_bank,addr,data); */
+			break;
+	}
+
+/*	logerror("port r: %04x \n", offset); */
+
+	if (!ok)
+		fprintf(stderr,"pc8201: portr [%02x] = 0x%02x\n",port,data);
+
+	return data;
+}
+
+
+static PORT_READ_START (readport_pc8201)
+	{0x0000, 0x0ffff, pc8201_port_r},
+PORT_END
+
+static PORT_WRITE_START (writeport_pc8201)
+	{0x0000, 0x0ffff, pc8201_port_w},
+PORT_END
+
+static struct Speaker_interface pc8201_speaker_interface=
+{
+  1,
+  {50}
+};
+
+/*
+
+"Model 100" - must verify for pc8201
+Data
+(@ E0)	7 | L  A  I  ?  *  -> Ent f8   Brk
+	6 | M  S  U  >  & <-  Prt f7
+	5 | N  D  Y  <  ^  Up Lbl f6   Cap
+	4 | B  F  T  "  % Dwn Pst f5   Num
+	3 | V  G  R  :  $  +  Esc f4   Cde
+	2 | C  H  E  ]  #  -  Tab f3   Gph
+	1 | X  J  W  P  @  )  Del f2   Ctl
+	0 | Z  K  Q  O  !  (  Spc f1   Sft
+--------------------------------------------------
+Strobe      0  1  2  3  4  5  6  7  |  0  Strobe
+(from				    |     (from B2)
+ B1)
+*/
+
+INPUT_PORTS_START(pc8201)
+	/* 0 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"L", KEYCODE_L, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"M", KEYCODE_M, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"N", KEYCODE_N, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"B", KEYCODE_B, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"V", KEYCODE_V, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"C", KEYCODE_C, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"X", KEYCODE_X, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"Z", KEYCODE_Z, IP_JOY_NONE)
+	/* 1 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"A", KEYCODE_A, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"S", KEYCODE_S, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"D", KEYCODE_D, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"F", KEYCODE_F, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"G", KEYCODE_G, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"H", KEYCODE_H, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"J", KEYCODE_J, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"K", KEYCODE_K, IP_JOY_NONE)
+	/* 2 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"I", KEYCODE_I, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"U", KEYCODE_U, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"Y", KEYCODE_Y, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"T", KEYCODE_T, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"R", KEYCODE_R, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"E", KEYCODE_E, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"W", KEYCODE_W, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"Q", KEYCODE_Q, IP_JOY_NONE)
+	/* 3 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"?", KEYCODE_SLASH, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,">", KEYCODE_STOP, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"<", KEYCODE_COMMA, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"\"", KEYCODE_QUOTE, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,":", KEYCODE_COLON, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"]", KEYCODE_CLOSEBRACE, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"P", KEYCODE_P, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"O", KEYCODE_O, IP_JOY_NONE)
+	/* 4 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"*", KEYCODE_8, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"&", KEYCODE_7, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"^", KEYCODE_6, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"%", KEYCODE_5, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"$", KEYCODE_4, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"#", KEYCODE_3, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"@", KEYCODE_2, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"!", KEYCODE_1, IP_JOY_NONE)
+	/* 5 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"RIGHT", KEYCODE_RIGHT, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"LEFT", KEYCODE_LEFT, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"UP", KEYCODE_UP, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"DOWN", KEYCODE_DOWN, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"+", KEYCODE_EQUALS, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"-", KEYCODE_MINUS, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,")", KEYCODE_0, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"(", KEYCODE_9, IP_JOY_NONE)
+	/* 6 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"ENT", KEYCODE_ENTER, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"PRT", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"LBL", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"PST", KEYCODE_INSERT, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"ESC", KEYCODE_ESC, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"TAB", KEYCODE_TAB, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"DEL", KEYCODE_DEL, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"SPACE", KEYCODE_SPACE, IP_JOY_NONE) 
+	/* 7 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"F8", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD,"F7", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"F6", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"F5", KEYCODE_F5, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"F4", KEYCODE_F4, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"F3", KEYCODE_F3, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"F2", KEYCODE_F2, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"F1", KEYCODE_F1, IP_JOY_NONE)
+	/* 8 */
+	PORT_START
+	PORT_BITX(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD,"BRK", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD,"CAP", KEYCODE_CAPSLOCK, IP_JOY_NONE)
+	PORT_BITX(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD,"NUM", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD,"CDE", KEYCODE_NONE, IP_JOY_NONE)
+	PORT_BITX(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD,"GPH", KEYCODE_LALT, IP_JOY_NONE)
+	PORT_BITX(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD,"CTL", KEYCODE_LCONTROL, IP_JOY_NONE)
+	PORT_BITX(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD,"SFT", KEYCODE_LSHIFT, IP_JOY_NONE)
+
+INPUT_PORTS_END
+
+static struct MachineDriver machine_driver_pc8201 =
+{
+	/* basic machine hardware */
+	{
+		/* MachineCPU */
+		{
+                        CPU_8085A,  /* type */
+                        3276800, /* clock */
+                        readmem_pc8201,                   /* MemoryReadAddress */
+                        writemem_pc8201,                  /* MemoryWriteAddress */
+                        readport_pc8201,                  /* IOReadPort */
+                        writeport_pc8201,                 /* IOWritePort */
+			0,						   /*amstrad_frame_interrupt, *//* VBlank
+										* Interrupt */
+			0 /*1 */ ,				   /* vblanks per frame */
+                        0, 0,   /* every scanline */
+		},
+	},
+        10,                                                     /* frames per second */
+	DEFAULT_60HZ_VBLANK_DURATION,	   /* vblank duration */
+	1,								   /* cpu slices per frame */
+        pc8201_init_machine,                      /* init machine */
+        pc8201_shutdown_machine,
+	/* video hardware */
+        320, /* screen width */
+        260,  /* screen height */
+        {0, (320 - 1), 0, (260 - 1)},        /* rectangle: visible_area */
+	0,								   /*amstrad_gfxdecodeinfo, 			 *//* graphics
+										* decode info */
+        2,                                                        /* total colours */
+        2,                                                        /* color table len */
+        pc8201_init_palette,                      /* init palette */
+
+        VIDEO_TYPE_RASTER,                                  /* video attributes */
+        0,                                                                 /* MachineLayer */
+        pc8201_vh_start,
+        pc8201_vh_stop,
+        pc8201_vh_screenrefresh,
+
+		/* sound hardware */
+	0,								   /* sh init */
+	0,								   /* sh start */
+	0,								   /* sh stop */
+	0,								   /* sh update */
+    {
+		{
+			SOUND_SPEAKER,
+			&pc8201_speaker_interface,
+        }
+    }
+
+};
+
+
+
+
+/***************************************************************************
+
+  Game driver(s)
+
+***************************************************************************/
+
+ROM_START(pc8201)
+    ROM_REGION((64*1024), REGION_CPU1,0)
+    ROM_LOAD("pc8201.rom", 0x0, 0x8000, 0)
+ROM_END
+
+static const struct IODevice io_pc8201[] =
+{
+
+	{IO_END}
+};
+
+
+/*	  YEAR	NAME	PARENT	MACHINE		INPUT		INIT		COMPANY					FULLNAME */
+COMP ( 1983,	pc8201,	0,		pc8201,		pc8201,		0,			"NEC",	"pc8201")
+
diff -N -u -r dodiff/xmame-0.37b13.2/mess/vidhrdw/pc8201.c xmame-0.37b13.2/mess/vidhrdw/pc8201.c
--- dodiff/xmame-0.37b13.2/mess/vidhrdw/pc8201.c	Thu Jan  1 10:00:00 1970
+++ xmame-0.37b13.2/mess/vidhrdw/pc8201.c	Fri Jan  4 19:56:54 2002
@@ -0,0 +1,135 @@
+/***************************************************************************
+
+  z88.c
+
+  Functions to emulate the video hardware of the Acorn Z88
+  
+***************************************************************************/
+
+#include "driver.h"
+#include "vidhrdw/generic.h"
+#include "includes/pc8201.h"
+
+/***************************************************************************
+  Start the video hardware emulation.
+***************************************************************************/
+
+int pc8201_vh_start(void)
+{
+
+	return 0;
+}
+
+void    pc8201_vh_stop(void)
+{
+}
+
+/* two colours */
+static unsigned short pc8201_colour_table[PC8201_NUM_COLOURS] =
+{
+	0, 1
+};
+
+/* black/white */
+static unsigned char pc8201_palette[PC8201_NUM_COLOURS * 3] =
+{
+	0x000, 0x000, 0x000,
+	0x0ff, 0x0ff, 0x0ff
+};
+
+
+/* Initialise the palette */
+void pc8201_init_palette(unsigned char *sys_palette, unsigned short *sys_colortable, const unsigned char *color_prom)
+{
+        memcpy(sys_palette, pc8201_palette, sizeof (pc8201_palette));
+        memcpy(sys_colortable, pc8201_colour_table, sizeof (pc8201_colour_table));
+}
+
+extern unsigned char *pc8201_memory;
+
+/***************************************************************************
+  Draw the game screen in the given osd_bitmap.
+  Do NOT call osd_update_display() from this function,
+  it will be called by the main emulation engine.
+***************************************************************************/
+
+void pc8201_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh)
+{
+#if 1
+	int x,y;
+	int bank;
+	int row,col;
+	int addr;
+	int bit;
+	unsigned char b;
+
+	int pen1,pen0;
+
+	pen0 = Machine->pens[0];
+	pen1 = Machine->pens[1];
+
+	for (y=0;y<64;y+=8) {
+		for (x=0;x<240;x++) {
+			bank = x/50;
+			row = x%50;
+			col = y/8;
+			if (col>3) {
+				col -= 4;
+				bank+= 5;
+			}
+
+			addr = col*64 + row;
+
+			b = pc8201_lcd[bank+1][addr];
+
+			/*fprintf(stderr,"pc8201: vid [%i][%02x] = 0x%02x (%i,%i)\n",bank,addr,b,x,y); */
+
+#define PP(yoff,pen)	plot_pixel(bitmap,x,y+yoff,(pen)?pen0:pen1);
+
+			PP(0,(b&1)==1);
+			PP(1,(b&2)==2);
+			PP(2,(b&4)==4);
+			PP(3,(b&8)==8);
+			PP(4,(b&16)==16);
+			PP(5,(b&32)==32);
+			PP(6,(b&64)==64);
+			PP(7,(b&128)==128);
+		}
+	}
+#else
+	int bank;
+	int row,col;
+	int bit;
+	unsigned char b;
+	int xbank,ybank;
+	int pen0,pen1;
+	
+	pen0 = Machine->pens[0];
+	pen1 = Machine->pens[1];
+	
+	for (bank=0;bank<10;bank++) {
+		if (bank < 5) {
+			xbank = bank*50;
+			ybank = 0;
+		} else {
+			xbank = (bank-5)*50;
+			ybank = 32;
+		}
+	
+		for(row=0;row<4;row++) {
+			for(col=0;col<50;col++) {
+				b = pc8201_lcd[bank][(row*64)+col];
+				
+				for (bit=0;bit<8;bit++) {
+					if (b&&1)
+						plot_pixel(bitmap,xbank+col,ybank+(row*8)+bit,pen0);
+					else
+						plot_pixel(bitmap,xbank+col,ybank+(row*8)+bit,pen1);
+
+					b = b>>1;
+				}
+			}
+		}
+	}
+#endif
+}
diff -N -u -r dodiff/xmame-0.37b13.2/src/mess.mak xmame-0.37b13.2/src/mess.mak
--- dodiff/xmame-0.37b13.2/src/mess.mak	Sun Apr  8 05:30:05 2001
+++ xmame-0.37b13.2/src/mess.mak	Fri Jan  4 14:34:50 2002
@@ -30,7 +30,7 @@
 endif
 CPUS+=CDP1802@
 #CPUS+=8080@
-#CPUS+=8085A@
+CPUS+=8085A@
 CPUS+=M6502@
 CPUS+=M65C02@
 CPUS+=M65SC02@
@@ -96,7 +96,7 @@
 CPUS+=SH2@
 CPUS+=SC61860@
 CPUS+=ARM@
-CPUS+=G65816@
+#CPUS+=G65816@
 #CPUS+=SPC700@
 #CPUS+=SATURN@
 #CPUS+=LH5801@
@@ -200,7 +200,8 @@
 		$(OBJ)/teamconc.a \
 		$(OBJ)/motorola.a \
 		$(OBJ)/exidy.a    \
-		$(OBJ)/svi.a
+		$(OBJ)/svi.a	\
+		$(OBJ)/pc8201.a
 
 # not working yet, cpu core not submitted yet
 #		$(OBJ)/hp48.a \
@@ -336,14 +337,14 @@
 	  $(OBJ)/mess/vidhrdw/gb.o	 \
 	  $(OBJ)/mess/machine/gb.o	 \
 	  $(OBJ)/mess/systems/gb.o	 \
-	  $(OBJ)/mess/sndhrdw/snes.o	 \
-	  $(OBJ)/mess/vidhrdw/snes.o	 \
-	  $(OBJ)/mess/machine/snes.o	 \
-	  $(OBJ)/mess/systems/snes.o	 \
 	  $(OBJ)/mess/machine/nes_mmc.o  \
 	  $(OBJ)/mess/vidhrdw/nes.o	 \
 	  $(OBJ)/mess/machine/nes.o	 \
 	  $(OBJ)/mess/systems/nes.o	 \
+#	  $(OBJ)/mess/sndhrdw/snes.o	 \
+#	  $(OBJ)/mess/vidhrdw/snes.o	 \
+#	  $(OBJ)/mess/machine/snes.o	 \
+#	  $(OBJ)/mess/systems/snes.o
 
 $(OBJ)/amiga.a: \
 	  $(OBJ)/mess/vidhrdw/amiga.o	 \
@@ -416,6 +417,10 @@
 	  $(OBJ)/mess/vidhrdw/pdp1.o	 \
 	  $(OBJ)/mess/machine/pdp1.o	 \
 	  $(OBJ)/mess/systems/pdp1.o
+
+$(OBJ)/pc8201.a:	\
+	  $(OBJ)/mess/systems/pc8201.o	\
+	  $(OBJ)/mess/vidhrdw/pc8201.o
 
 $(OBJ)/apexc.a:     \
 	  $(OBJ)/mess/systems/apexc.o
diff -N -u -r dodiff/xmame-0.37b13.2/src/unix/unix.mak xmame-0.37b13.2/src/unix/unix.mak
--- dodiff/xmame-0.37b13.2/src/unix/unix.mak	Mon Apr  9 11:54:42 2001
+++ xmame-0.37b13.2/src/unix/unix.mak	Fri Jan  4 15:21:32 2002
@@ -160,7 +160,7 @@
 
 ifdef MAME_DEBUG
 MY_CFLAGS += -DMAME_DEBUG -DMESS_DEBUG
-MY_LIBS   += -lcurses
+MY_LIBS   += -lncurses
 endif
    
 # CONFIG are the cflags used to build the unix tree, this is were most defines
