mame/src/mess/machine/mc80.c
Fabio Priuli 25b6f6a58d z80ctc: converted to use devcb2. nw.
Notes:
- for whatever reason the tlcs_z80 internal CTC fails to recognize/find its owner tag, 
does anyone know how to fix this? it's probably trivial, but I need an helping hand 
or pve500 cannot be launched anymore...
- @Haze: can you check your inder_sb.c code? your CTC interface was wrong,
judging from the comments in the source (the first cb was for the interrupt, and no 
callback was present by default for the ZC/TO3...) and I'm not sure what the code is 
intended to actually do
2014-04-28 18:41:16 +00:00

190 lines
3.9 KiB
C

/***************************************************************************
MC-80.xx by Miodrag Milanovic
15/05/2009 Initial implementation
12/05/2009 Skeleton driver.
****************************************************************************/
#include "includes/mc80.h"
/*****************************************************************************/
/* Implementation for MC80.2x */
/*****************************************************************************/
IRQ_CALLBACK_MEMBER(mc80_state::mc8020_irq_callback)
{
return 0x00;
}
MACHINE_RESET_MEMBER(mc80_state,mc8020)
{
}
WRITE_LINE_MEMBER( mc80_state::ctc_z0_w )
{
}
WRITE_LINE_MEMBER( mc80_state::ctc_z1_w )
{
}
WRITE_LINE_MEMBER(mc80_state::ctc_z2_w)
{
downcast<z80ctc_device *>(machine().device("z80ctc"))->trg0(state);
downcast<z80ctc_device *>(machine().device("z80ctc"))->trg1(state);
}
READ8_MEMBER( mc80_state::mc80_port_b_r )
{
return 0;
}
READ8_MEMBER( mc80_state::mc80_port_a_r )
{
return 0;
}
WRITE8_MEMBER( mc80_state::mc80_port_a_w )
{
}
WRITE8_MEMBER( mc80_state::mc80_port_b_w )
{
}
Z80PIO_INTERFACE( mc8020_z80pio_intf )
{
DEVCB_NULL, /* callback when change interrupt status */
DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_a_r),
DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_a_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_b_r),
DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_b_w),
DEVCB_NULL
};
/*****************************************************************************/
/* Implementation for MC80.3x */
/*****************************************************************************/
WRITE8_MEMBER( mc80_state::mc8030_zve_write_protect_w )
{
}
WRITE8_MEMBER( mc80_state::mc8030_vis_w )
{
// reg C
// 7 6 5 4 -- module
// 3 - 0 left half, 1 right half
// 2 1 0
// =====
// 0 0 0 - dark
// 0 0 1 - light
// 0 1 0 - in reg pixel
// 0 1 1 - negate in reg pixel
// 1 0 x - operation code in B reg
// reg B
//
UINT16 addr = ((offset & 0xff00) >> 2) | ((offset & 0x08) << 2) | (data >> 3);
static const UINT8 val[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
int c = offset & 1;
m_p_videoram[addr] = m_p_videoram[addr] | (val[data & 7]*c);
}
WRITE8_MEMBER( mc80_state::mc8030_eprom_prog_w )
{
}
IRQ_CALLBACK_MEMBER(mc80_state::mc8030_irq_callback )
{
return 0x20;
}
MACHINE_RESET_MEMBER(mc80_state,mc8030)
{
}
READ8_MEMBER( mc80_state::zve_port_a_r )
{
return 0xff;
}
READ8_MEMBER( mc80_state::zve_port_b_r )
{
return 0xff;
}
WRITE8_MEMBER( mc80_state::zve_port_a_w )
{
}
WRITE8_MEMBER( mc80_state::zve_port_b_w )
{
}
Z80PIO_INTERFACE( mc8030_zve_z80pio_intf )
{
DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */
DEVCB_DRIVER_MEMBER(mc80_state, zve_port_a_r),
DEVCB_DRIVER_MEMBER(mc80_state, zve_port_a_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(mc80_state, zve_port_b_r),
DEVCB_DRIVER_MEMBER(mc80_state, zve_port_b_w),
DEVCB_NULL
};
READ8_MEMBER( mc80_state::asp_port_a_r )
{
return 0xff;
}
READ8_MEMBER( mc80_state::asp_port_b_r )
{
return 0xff;
}
WRITE8_MEMBER( mc80_state::asp_port_a_w )
{
}
WRITE8_MEMBER( mc80_state::asp_port_b_w )
{
}
Z80PIO_INTERFACE( mc8030_asp_z80pio_intf )
{
DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */
DEVCB_DRIVER_MEMBER(mc80_state, asp_port_a_r),
DEVCB_DRIVER_MEMBER(mc80_state, asp_port_a_w),
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(mc80_state, asp_port_b_r),
DEVCB_DRIVER_MEMBER(mc80_state, asp_port_b_w),
DEVCB_NULL
};
// SIO CH A in = keyboard; out = beeper; CH B = IFSS (??)
Z80SIO_INTERFACE( mc8030_asp_z80sio_intf )
{
0, 0, 0, 0,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};