/***************************************************************************

    Midway 8080-based black and white hardware

****************************************************************************/

#include "driver.h"
#include "mb14241.h"


#define MAX_MB14241  1

struct MB14241
{
	UINT16 shift_data;	/* 15 bits only */
	UINT8 shift_count;	/* 3 bits */
};

static struct MB14241 chips[MAX_MB14241];


static void mb14241_shift_count_w(int num, UINT8 data)
{
	chips[num].shift_count = ~data & 0x07;
}

WRITE8_HANDLER( mb14241_0_shift_count_w ) { mb14241_shift_count_w(0, data); }


static void mb14241_shift_data_w(int num, UINT8 data)
{
	chips[num].shift_data = (chips[num].shift_data >> 8) | ((UINT16)data << 7);
}

WRITE8_HANDLER( mb14241_0_shift_data_w ) { mb14241_shift_data_w(0, data); }


static UINT8 mb14241_shift_result_r(int num)
{
	return chips[num].shift_data >> chips[num].shift_count;
}

READ8_HANDLER( mb14241_0_shift_result_r ) { return mb14241_shift_result_r(0); }


void mb14241_init(running_machine *machine,int num)
{
	state_save_register_item(machine, "mb14241", NULL, num, chips[num].shift_data);
	state_save_register_item(machine, "mb14241", NULL, num, chips[num].shift_count);
}
