const float cs4031_device::m_dma_clock_divider[] = { 10, 8, 6, 0, 0, 0, 0, 0, 5, 4, 3, 2.5, 2, 1.5, 0, 0 }; //------------------------------------------------- // machine_config_additions - device-specific // machine configurations //------------------------------------------------- I8237_INTERFACE( dma1_config ) { DEVCB_DEVICE_LINE_MEMBER("dma2", am9517a_device, dreq0_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_eop_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma_read_byte), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma_write_byte), { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_ior0_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_ior1_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_ior2_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_ior3_r) }, { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_iow0_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_iow1_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_iow2_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_iow3_w) }, { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, cs4031_device, dma1_dack0_w),
update_iec(); } READ_LINE_MEMBER( base_c1571_device::atn_in_r ) { return !m_bus->atn_r(); } READ_LINE_MEMBER( base_c1571_device::wprt_r ) { return !floppy_wpt_r(m_image); } static const via6522_interface via0_intf = { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_pa_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_pb_r), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, atn_in_r), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, wprt_r), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_pa_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_irq_w) };
WRITE8_MEMBER(mz_state::mz800_z80pio_port_a_w) { centronics_device *centronics = machine().device<centronics_device>("centronics"); centronics->init_prime_w(BIT(data, 6)); centronics->strobe_w(BIT(data, 7)); } const z80pio_interface mz800_z80pio_config = { DEVCB_DEVICE_LINE("z80pio", mz800_z80pio_irq), DEVCB_DRIVER_MEMBER(mz_state,mz800_z80pio_port_a_r), DEVCB_DRIVER_MEMBER(mz_state,mz800_z80pio_port_a_w), DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_MEMBER("centronics", centronics_device, write), DEVCB_NULL, }; /* port CE */ READ8_MEMBER(mz_state::mz800_crtc_r) { UINT8 data = 0x00; LOG(1,"mz800_crtc_r",("%02X\n",data),machine()); return data; }
0 1 DIRECTION IN 2 -HSXSTB 3 STEP 4 HEAD SEL 2^0 5 HEAD SEL 2^1 6 HEAD SEL 2^2 7 REDUCE WR CURRENT */ } static Z80PIO_INTERFACE( pio0_intf ) { DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pa_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pa_w), DEVCB_DEVICE_LINE_MEMBER(Z80PIO_0_TAG, z80pio_device, strobe_a), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pb_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pb_w), DEVCB_DEVICE_LINE_MEMBER(Z80PIO_0_TAG, z80pio_device, strobe_b) }; //------------------------------------------------- // Z80PIO_INTERFACE( pio2_intf ) //------------------------------------------------- READ8_MEMBER( imi5000h_device::pio2_pa_r ) { /*
return 0xff; } WRITE8_MEMBER(pc9801_86_device::opn_portb_w){ m_joy_sel = data; } WRITE_LINE_MEMBER(pc9801_86_device::pc9801_sound_irq) { /* TODO: seems to die very often */ machine().device<pic8259_device>(":pic8259_slave")->ir4_w(state); } static const ay8910_interface ay8910_config = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pc9801_86_device,opn_porta_r), DEVCB_NULL,//(pc9801_state,opn_portb_r), DEVCB_NULL,//(pc9801_state,opn_porta_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pc9801_86_device,opn_portb_w), }; static MACHINE_CONFIG_FRAGMENT( pc9801_86_config ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("opna", YM2608, MAIN_CLOCK_X1*4) // unknown clock / divider MCFG_YM2608_IRQ_HANDLER(WRITELINE(pc9801_86_device, pc9801_sound_irq)) MCFG_YM2608_AY8910_INTF(&ay8910_config) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END //------------------------------------------------- // machine_config_additions - device-specific
WRITE_LINE_MEMBER( tek4051_state::gpib_pia_irqa_w ) { m_gpib_pia_irqa = state; update_irq(); } WRITE_LINE_MEMBER( tek4051_state::gpib_pia_irqb_w ) { m_gpib_pia_irqb = state; update_irq(); } static const pia6821_interface gpib_pia_intf = { DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_r), DEVCB_DRIVER_MEMBER(tek4051_state, gpib_pia_pb_r), DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, eoi_r), DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, srq_r), DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(tek4051_state, dio_w), DEVCB_DRIVER_MEMBER(tek4051_state, gpib_pia_pb_w), DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(tek4051_state, talk_w), DEVCB_DRIVER_LINE_MEMBER(tek4051_state, gpib_pia_irqa_w), DEVCB_DRIVER_LINE_MEMBER(tek4051_state, gpib_pia_irqb_w) }; //-------------------------------------------------
} READ8_MEMBER( hardbox_device::ppi0_pc_r ) { UINT8 data = ioport("SW1")->read(); /* DIP switches on PC1,PC2,PC3 configure the IEEE-488 primary address. We get the address from m_address instead. */ data |= ((m_slot->get_address() - 8) << 1) ^ 0xff; return data; } static I8255A_INTERFACE( ppi0_intf ) { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, hardbox_device, ppi0_pa_r), DEVCB_NULL, // Port A write DEVCB_NULL, // Port B read DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, hardbox_device, ppi0_pb_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, hardbox_device, ppi0_pc_r), DEVCB_NULL // Port C write }; //------------------------------------------------- // I8255A_INTERFACE( ppi1_intf ) //------------------------------------------------- READ8_MEMBER( hardbox_device::ppi1_pa_r ) { /*
m_fdc->reset(); } /* ROM selection */ membank("bank1")->set_entry(BIT(data, 6)); /* printer strobe */ m_centronics->strobe_w(BIT(data, 7)); } static I8255_INTERFACE( sf7000_ppi_intf ) { DEVCB_DRIVER_MEMBER(sf7000_state, ppi_pa_r), // Port A read DEVCB_NULL, // Port A write DEVCB_NULL, // Port B read DEVCB_DEVICE_MEMBER(CENTRONICS_TAG, centronics_device, write), // Port B write DEVCB_NULL, // Port C read DEVCB_DRIVER_MEMBER(sf7000_state, ppi_pc_w) // Port C write }; //------------------------------------------------- // i8251_interface usart_intf //------------------------------------------------- static const i8251_interface usart_intf = { DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
PB2 DO2 PB3 DO3 PB4 DO4 PB5 DO5 PB6 DO6 PB7 DO7 */ m_bus->dio_w(this, data); } static const riot6532_interface riot0_intf = { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, dio_r), DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, dio_w), DEVCB_NULL }; //------------------------------------------------- // riot6532_interface riot1_intf //------------------------------------------------- READ8_MEMBER( base_d9060_device::riot1_pa_r ) { /*
Currently only the printer is emulated ***************************************************************************/ #include "emu.h" #include "iq151_staper.h" /*************************************************************************** IMPLEMENTATION ***************************************************************************/ static I8255_INTERFACE( iq151_staper_ppi_intf ) { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, iq151_staper_device, ppi_porta_r), DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, iq151_staper_device, ppi_portb_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, iq151_staper_device, ppi_portc_w) }; static MACHINE_CONFIG_FRAGMENT( iq151_staper ) MCFG_I8255A_ADD("ppi8255", iq151_staper_ppi_intf) MCFG_PRINTER_ADD("printer") MACHINE_CONFIG_END //************************************************************************** // GLOBAL VARIABLES
} WRITE8_MEMBER( wdxt_gen_device::ram_w ) { m_ram[offset] = data; } static WD11C00_17_INTERFACE( host_intf ) { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, irq5_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, drq3_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, mr_w), DEVCB_NULL, DEVCB_NULL, DEVCB_CPU_INPUT_LINE(WD1015_TAG, MCS48_INPUT_IRQ), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, rd322_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, ram_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, ram_w), DEVCB_DEVICE_MEMBER(WD2010A_TAG, wd2010_device, read), DEVCB_DEVICE_MEMBER(WD2010A_TAG, wd2010_device, write) }; //------------------------------------------------- // WD2010_INTERFACE( hdc_intf ) //------------------------------------------------- static WD2010_INTERFACE( hdc_intf ) { DEVCB_NULL, DEVCB_NULL,
ca2 ndac out cb1 srq in cb2 dav out */ WRITE_LINE_MEMBER(pet_state::pia1_irq_w) { m_pia1_irq = state; int level = (m_pia0_irq | m_pia1_irq | m_via_irq) ? ASSERT_LINE : CLEAR_LINE; machine().firstcpu->set_input_line(INPUT_LINE_IRQ0, level); } const pia6821_interface pet_pia1 = { DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_r),/* in_a_func */ DEVCB_NULL, /* in_b_func */ DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, atn_r), /* in_ca1_func */ DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, srq_r), /* in_cb1_func */ DEVCB_NULL, /* in_ca2_func */ DEVCB_NULL, /* in_cb2_func */ DEVCB_NULL, /* out_a_func */ DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_w), /* out_b_func */ DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ndac_w), /* out_ca2_func */ DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, dav_w), /* out_cb2_func */ DEVCB_DRIVER_LINE_MEMBER(pet_state,pia1_irq_w), /* irq_a_func */ DEVCB_DRIVER_LINE_MEMBER(pet_state,pia1_irq_w) /* irq_b_func */ }; /* userport, cassettes, rest ieee488 ca1 userport
{ DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pa_r), // Port A read DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pa_w), // Port A write DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pb_r), // Port B read DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pb_w), // Port B write DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pc_r), // Port C read DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pc_w), // Port C write }; static const ay8910_interface ay8910_intf = { AY8910_LEGACY_OUTPUT, // flags AY8910_DEFAULT_LOADS, // channel load in ohms DEVCB_NULL, // port A read DEVCB_INPUT_PORT("DSW1"), // port B read DEVCB_DEVICE_MEMBER("votrax", votrax_sc01_device, write), // port A write DEVCB_NULL // port B write }; static struct votrax_sc01_interface votrax_interface = { }; WRITE8_MEMBER( votrpss_state::kbd_put ) { m_term_data = data; } static GENERIC_TERMINAL_INTERFACE( terminal_intf ) { DEVCB_DRIVER_MEMBER(votrpss_state, kbd_put)
/* initialize the cdrom controller */ MACHINE_RESET_CALL( amigacd ); } static const mos6526_interface cia_0_ntsc_intf = { 60, /* tod_clock */ DEVCB_DEVICE_LINE("cia_0", amiga_cia_0_irq), /* irq_func */ DEVCB_DEVICE_LINE_MEMBER("centronics", centronics_device, strobe_w), /* pc_func */ DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_r), DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_w), /* port A */ DEVCB_NULL, DEVCB_DEVICE_MEMBER("centronics", centronics_device, write) /* port B */ }; static const mos6526_interface cia_0_pal_intf = { 50, /* tod_clock */ DEVCB_DEVICE_LINE("cia_0", amiga_cia_0_irq), /* irq_func */ DEVCB_DEVICE_LINE_MEMBER("centronics", centronics_device, strobe_w), /* pc_func */ DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_r), DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_w), /* port A */ DEVCB_NULL, DEVCB_DEVICE_MEMBER("centronics", centronics_device, write) /* port B */ };
m_centronics->write_init(BIT(data, 3)); } WRITE_LINE_MEMBER( trs80m2_state::strobe_w ) { m_centronics->write_strobe(!state); } static Z80PIO_INTERFACE( pio_intf ) { DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), // interrupt callback DEVCB_DRIVER_MEMBER(trs80m2_state, pio_pa_r), // port A read callback DEVCB_DRIVER_MEMBER(trs80m2_state, pio_pa_w), // port A write callback DEVCB_NULL, // port A ready callback DEVCB_NULL, // port B read callback DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), // port B write callback DEVCB_DRIVER_LINE_MEMBER(trs80m2_state, strobe_w) // port B ready callback }; //------------------------------------------------- // Z80SIO_INTERFACE( sio_intf ) //------------------------------------------------- static Z80SIO_INTERFACE( sio_intf ) { 0, 0, 0, 0, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
MACHINE_RESET_CALL_MEMBER( amiga ); /* initialize the cdrom controller */ MACHINE_RESET_CALL_LEGACY( amigacd ); } static const legacy_mos6526_interface cia_0_ntsc_intf = { DEVCB_DRIVER_LINE_MEMBER(amiga_state, amiga_cia_0_irq), /* irq_func */ DEVCB_DEVICE_LINE_MEMBER("centronics", centronics_device, write_strobe), /* pc_func */ DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_r), DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_w), /* port A */ DEVCB_NULL, DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write) /* port B */ }; static const legacy_mos6526_interface cia_0_pal_intf = { DEVCB_DRIVER_LINE_MEMBER(amiga_state, amiga_cia_0_irq), /* irq_func */ DEVCB_DEVICE_LINE_MEMBER("centronics", centronics_device, write_strobe), /* pc_func */ DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_r), DEVCB_DEVICE_HANDLER("cia_0", amiga_cia_0_portA_w), /* port A */ DEVCB_NULL, DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write) /* port B */ }; static const legacy_mos6526_interface cia_1_intf =
// ASCII_KEYBOARD_INTERFACE( kb_intf ) //------------------------------------------------- WRITE8_MEMBER( vp620_device::kb_w ) { m_keydata = data; m_slot->inst_w(0); m_slot->inst_w(1); m_keystb = ASSERT_LINE; } static ASCII_KEYBOARD_INTERFACE( kb_intf ) { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, vp620_device, kb_w) }; //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( vp620 ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( vp620 ) MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf) MACHINE_CONFIG_END //------------------------------------------------- // machine_config_additions - device-specific // machine configurations
if (!state) m_dack = 2; } WRITE_LINE_MEMBER( wangpc_state::dack3_w ) { if (!state) m_dack = 3; } static AM9517A_INTERFACE( dmac_intf ) { DEVCB_DRIVER_LINE_MEMBER(wangpc_state, hrq_w), DEVCB_DRIVER_LINE_MEMBER(wangpc_state, eop_w), DEVCB_DRIVER_MEMBER(wangpc_state, memr_r), DEVCB_DRIVER_MEMBER(wangpc_state, memw_w), { DEVCB_NULL, DEVCB_DEVICE_MEMBER(WANGPC_BUS_TAG, wangpcbus_device, dack1_r), DEVCB_DRIVER_MEMBER(wangpc_state, ior2_r), DEVCB_DEVICE_MEMBER(WANGPC_BUS_TAG, wangpcbus_device, dack3_r) }, { DEVCB_NULL, DEVCB_DEVICE_MEMBER(WANGPC_BUS_TAG, wangpcbus_device, dack1_w), DEVCB_DRIVER_MEMBER(wangpc_state, iow2_w), DEVCB_DEVICE_MEMBER(WANGPC_BUS_TAG, wangpcbus_device, dack3_w) }, { DEVCB_DRIVER_LINE_MEMBER(wangpc_state, dack0_w), DEVCB_DRIVER_LINE_MEMBER(wangpc_state, dack1_w), DEVCB_DRIVER_LINE_MEMBER(wangpc_state, dack2_w), DEVCB_DRIVER_LINE_MEMBER(wangpc_state, dack3_w) } }; //------------------------------------------------- // pic8259_interface pic_intf
WRITE8_MEMBER(bking_state::port_b_w) { /* don't know what this is... could be a filter */ if (data != 0x00) logerror("port_b = %02x\n", data); } static const ay8910_interface ay8910_config = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_MEMBER("dac", dac_device, write_signed8), DEVCB_DRIVER_MEMBER(bking_state,port_b_w) }; static MACHINE_START( bking ) { bking_state *state = machine.driver_data<bking_state>(); state->m_audiocpu = machine.device("audiocpu"); /* video */ state->save_item(NAME(state->m_pc3259_output)); state->save_item(NAME(state->m_pc3259_mask)); state->save_item(NAME(state->m_xld1)); state->save_item(NAME(state->m_xld2)); state->save_item(NAME(state->m_xld3));
} WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::tpi_ca_w ) { m_tpi_pc6 = state; } WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::tpi_cb_w ) { m_exrom = state; } static const tpi6525_interface tpi_intf = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_irq_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_pa_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_pa_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_pb_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_ca_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, tpi_cb_w), }; //------------------------------------------------- // t6721_interface //------------------------------------------------- WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::phi2_w )
update_iec(); } READ_LINE_MEMBER( c1571_device::atn_in_r ) { return !m_bus->atn_r(); } READ_LINE_MEMBER( c1571_device::wprt_r ) { return !floppy_wpt_r(m_image); } static const via6522_interface via0_intf = { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pa_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pb_r), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, atn_in_r), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, wprt_r), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pa_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c1571_device, via0_irq_w) };
if (BIT(m_keylatch, 2)) data &= read_keyboard(2); if (BIT(m_keylatch, 3)) data &= read_keyboard(3); return data; } static const pia6821_interface pia_intf = { DEVCB_DRIVER_MEMBER(crvision_state, pia_pa_r), // input A DEVCB_DRIVER_MEMBER(crvision_state, pia_pb_r), // input B DEVCB_LINE_VCC, // input CA1 (+5V) DEVCB_DEVICE_LINE_MEMBER(SN76489_TAG, sn76496_base_device, ready_r), // input CB1 DEVCB_LINE_VCC, // input CA2 (+5V) DEVCB_LINE_VCC, // input CB2 (+5V) DEVCB_DRIVER_MEMBER(crvision_state, pia_pa_w), // output A DEVCB_DEVICE_MEMBER(SN76489_TAG, sn76496_base_device, write), // output B DEVCB_NULL, // output CA2 DEVCB_NULL, // output CB2 (SN76489 pin CE_) DEVCB_NULL, // irq A DEVCB_NULL // irq B }; /*------------------------------------------------- pia6821_interface lasr2001_pia_intf -------------------------------------------------*/ READ8_MEMBER( laser2001_state::pia_pa_r ) { /* Signal Description
m_slot->nmi_w(state); } WRITE_LINE_MEMBER( c64_tdos_cartridge_device::dma_w ) { m_slot->dma_w(state); } WRITE_LINE_MEMBER( c64_tdos_cartridge_device::reset_w ) { m_slot->reset_w(state); } static C64_EXPANSION_INTERFACE( expansion_intf ) { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, dma_cd_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, dma_cd_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, irq_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, nmi_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, dma_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, reset_w) }; //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( c64_multiscreen ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( c64_tdos ) MCFG_MC6852_ADD(MC68A52P_TAG, XTAL_6_5MHz, ssda_intf) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, tdos_floppy_interface)
static const huc6270_interface sgx_huc6270_1_config = { 0x10000, DEVCB_DRIVER_LINE_MEMBER(pce_state,pce_irq_changed) }; static const huc6202_interface sgx_huc6202_config = { DEVCB_DEVICE_MEMBER16( "huc6270_0", huc6270_device, next_pixel ), DEVCB_DEVICE_MEMBER16( "huc6270_0", huc6270_device, time_until_next_event ), DEVCB_DEVICE_LINE_MEMBER( "huc6270_0", huc6270_device, vsync_changed ), DEVCB_DEVICE_LINE_MEMBER( "huc6270_0", huc6270_device, hsync_changed ), DEVCB_DEVICE_MEMBER( "huc6270_0", huc6270_device, read ), DEVCB_DEVICE_MEMBER( "huc6270_0", huc6270_device, write ), DEVCB_DEVICE_MEMBER16( "huc6270_1", huc6270_device, next_pixel ), DEVCB_DEVICE_MEMBER16( "huc6270_1", huc6270_device, time_until_next_event ), DEVCB_DEVICE_LINE_MEMBER( "huc6270_1", huc6270_device, vsync_changed ), DEVCB_DEVICE_LINE_MEMBER( "huc6270_1", huc6270_device, hsync_changed ), DEVCB_DEVICE_MEMBER( "huc6270_1", huc6270_device, read ), DEVCB_DEVICE_MEMBER( "huc6270_1", huc6270_device, write ), }; static const huc6260_interface sgx_huc6260_config = { DEVCB_DEVICE_MEMBER16( "huc6202", huc6202_device, next_pixel ), DEVCB_DEVICE_MEMBER16( "huc6202", huc6202_device, time_until_next_event ), DEVCB_DEVICE_LINE_MEMBER( "huc6202", huc6202_device, vsync_changed ),
FssD0000 - 64k RAM buffer (used as DP83902 DMA target) FssE0000 - DP83902 registers ***************************************************************************/ #include "emu.h" #include "machine/nubus_asntmc3b.h" #define MAC8390_ROM_REGION "asntm3b_rom" #define MAC8390_839X "dp83902" static const dp8390_interface dp8390_interface = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, nubus_mac8390_device, dp_irq_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, nubus_mac8390_device, dp_mem_read), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, nubus_mac8390_device, dp_mem_write) }; MACHINE_CONFIG_FRAGMENT( asntm3b ) MCFG_DP8390D_ADD(MAC8390_839X, dp8390_interface) MACHINE_CONFIG_END ROM_START( asntm3nb ) ROM_REGION(0x4000, MAC8390_ROM_REGION, 0) ROM_LOAD( "asante_mc3b.bin", 0x000000, 0x004000, CRC(4f86d451) SHA1(d0a41df667e6b51fbc63f9251d593f4fc49104ba) ) ROM_END ROM_START( appleenet ) ROM_REGION(0x4000, MAC8390_ROM_REGION, 0) ROM_LOAD( "aenet1", 0x000000, 0x004000, CRC(e3ae8c26) SHA1(01ddc15ee84b17128203cb812f29bac6b20fd642) )
#include "emu.h" #include "machine/ne1000.h" static const dp8390_interface ne1000_dp8390_interface = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ne1000_device, ne1000_irq_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne1000_device, ne1000_mem_read), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne1000_device, ne1000_mem_write) }; static MACHINE_CONFIG_FRAGMENT(ne1000_config) MCFG_DP8390D_ADD("dp8390d", ne1000_dp8390_interface) MACHINE_CONFIG_END const device_type NE1000 = &device_creator<ne1000_device>; machine_config_constructor ne1000_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME(ne1000_config); } ne1000_device::ne1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, NE1000, "NE1000 Network Adapter", tag, owner, clock), device_isa8_card_interface(mconfig, *this), m_dp8390(*this, "dp8390d") { } void ne1000_device::device_start() { char mac[7]; UINT32 num = rand(); memset(m_prom, 0x57, 16); sprintf(mac+2, "\x1b%c%c%c", (num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff);
}; static const tmsprom_interface prom_intf = { "5110ctrl", /* prom memory region - sound region is automatically assigned */ 0x1000, /* individual rom_size */ 1, /* bit # of pdc line */ /* virtual bit 8: constant 0, virtual bit 9:constant 1 */ 8, /* bit # of ctl1 line */ 2, /* bit # of ctl2 line */ 8, /* bit # of ctl4 line */ 2, /* bit # of ctl8 line */ 6, /* bit # of rom reset */ 7, /* bit # of stop */ DEVCB_DEVICE_LINE_MEMBER("tms", tms5110_device, pdc_w), /* tms pdc func */ DEVCB_DEVICE_MEMBER("tms", tms5110_device, ctl_w) /* tms ctl func */ }; static const tms5110_interface bagman_tms5110_interface = { /* legacy interface */ NULL, /* function to be called when chip requests another bit */ NULL, /* speech ROM load address callback */ /* new rom controller interface */ DEVCB_DEVICE_LINE_MEMBER("tmsprom", tmsprom_device, m0_w), /* the M0 line */ DEVCB_NULL, /* the M1 line */ DEVCB_NULL, /* Write to ADD1,2,4,8 - 4 address bits */ DEVCB_DEVICE_LINE_MEMBER("tmsprom", tmsprom_device, data_r), /* Read one bit from ADD8/Data - voice data */ DEVCB_NULL /* rom clock - Only used to drive the data lines */ };
m_sti->i4_w(m_ib); // keyboard buffer full m_kbf = BIT(data, 1); // PROF-80 interrupt m_ia = BIT(data, 3); m_sti->i7_w(m_ia); // PROF-80 handshaking m_ppi_pc = (!BIT(data, 7) << 7) | (!BIT(data, 5) << 6) | (m_ppi->pa_r() & 0x3f); } static I8255A_INTERFACE( ppi_intf ) { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, grip_device, ppi_pa_r), // Port A read DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, grip_device, ppi_pa_w), // Port A write DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, grip_device, ppi_pb_r), // Port B read DEVCB_NULL, // Port B write DEVCB_NULL, // Port C read DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, grip_device, ppi_pc_w) // Port C write }; //------------------------------------------------- // Z80STI_INTERFACE( sti_intf ) //------------------------------------------------- READ8_MEMBER( grip_device::sti_gpio_r ) { /*
WRITE_LINE_MEMBER( tmc1800_state::q_w ) { m_cassette->output(state ? 1.0 : -1.0); } static COSMAC_INTERFACE( tmc1800_config ) { DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, clear_r), DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, ef2_r), DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, ef3_r), DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(tmc1800_state, q_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER(CDP1861_TAG, cdp1861_device, dma_w), NULL, DEVCB_NULL, DEVCB_NULL }; // Oscom 1000B READ_LINE_MEMBER( osc1000b_state::clear_r ) { return BIT(m_run->read(), 0); } READ_LINE_MEMBER( osc1000b_state::ef2_r ) { return m_cassette->input() < 0;