* * Keyboard * *************************************************************/ READ8_MEMBER(pcat_base_state::get_out2) { return m_pit8254->get_output(2); } static const struct kbdc8042_interface at8042 = { KBDC8042_AT386, DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_RESET), DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_A20), DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir1_w), DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pcat_base_state,get_out2) }; ADDRESS_MAP_START( pcat32_io_common, AS_IO, 32, pcat_base_state ) AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff) AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0xffffffff) AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff) AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffffffff) AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0xffffffff) AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffff) AM_RANGE(0x00c0, 0x00df) AM_READWRITE8(at_dma8237_2_r, at_dma8237_2_w, 0xffffffff)
port B: bits 7-0: input/output: pbus port C: CA1: N/C CA2: input: "TDISP" (one of the higher bits in the video line counter, a mirror of the D5 bit from beezer_line_r), done in /video/beezer.c CB1: ASH1 to via 1 CB2: ASH2 to via 1 /IRQ: to main m6809 cpu /RES: from main reset generator/watchdog/button TODO: find a better way to attach ca2 read to beezer_line_r */ const via6522_interface b_via_0_interface = { /*inputs : A/B */ DEVCB_HANDLER(b_via_0_pa_r), DEVCB_HANDLER(b_via_0_pb_r), /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca2), DEVCB_LINE(b_via_0_ca2_r), DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca1), /*outputs: A/B */ DEVCB_HANDLER(b_via_0_pa_w), DEVCB_HANDLER(b_via_0_pb_w), /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, write_ca1), /*irq */ DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) }; /* VIA 1 (U18 @3C on schematics) port A: bits 7-0: input/output: pbus port B: bit 7: output: TIMER1 OUT (used to gate NOISE (see below) to clock channel 1 of 6840, plus acts as channel 0 by itself) bit 6: input: NOISE (from mm5837 14-bit LFSR, which also connects to clock above) bit 5: output?: N/C bit 4: output?: FMSEL1 (does not appear elsewhere on schematics! what does this do? needs tracing) - always 0? bit 3: output?: FMSEL0 (does not appear elsewhere on schematics! what does this do? needs tracing) - always 0? bit 2: output?: AM (does not appear elsewhere on schematics! what does this do? needs tracing) - always 0?
static GFXDECODE_START( pcmda ) GFXDECODE_ENTRY( "mda:gfx1", 0x0000, pc_16_charlayout, 1, 1 ) GFXDECODE_ENTRY( "mda:gfx1", 0x1000, pc_8_charlayout, 1, 1 ) GFXDECODE_END static const mc6845_interface mc6845_mda_intf = { MDA_SCREEN_NAME, /* screen number */ 9, /* number of pixels per video memory address */ NULL, /* begin_update */ mda_update_row, /* update_row */ NULL, /* end_update */ DEVCB_NULL, /* on_de_changed */ DEVCB_NULL, /* on_cur_changed */ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_mda_device, hsync_changed), /* on_hsync_changed */ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_mda_device, vsync_changed), /* on_vsync_changed */ NULL }; static WRITE_LINE_DEVICE_HANDLER(pc_cpu_line) { isa8_mda_device *mda = downcast<isa8_mda_device *>(device->owner()); mda->m_isa->irq7_w(state); } static const pc_lpt_interface pc_lpt_config = { DEVCB_LINE(pc_cpu_line) };
/* 1f */ "RESERVED" }; 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) },
} static const huc6270_interface pce_huc6270_config = { 0x10000, DEVCB_DRIVER_LINE_MEMBER(pce_state,pce_irq_changed) }; static const huc6260_interface pce_huc6260_config = { "screen", DEVCB_DEVICE_MEMBER16( "huc6270", huc6270_device, next_pixel ), DEVCB_DEVICE_MEMBER16( "huc6270", huc6270_device, time_until_next_event ), DEVCB_DEVICE_LINE_MEMBER( "huc6270", huc6270_device, vsync_changed ), DEVCB_DEVICE_LINE_MEMBER( "huc6270", huc6270_device, hsync_changed ) }; static const huc6270_interface sgx_huc6270_0_config = { 0x10000, DEVCB_DRIVER_LINE_MEMBER(pce_state,pce_irq_changed) }; static const huc6270_interface sgx_huc6270_1_config = { 0x10000, DEVCB_DRIVER_LINE_MEMBER(pce_state,pce_irq_changed)
static const i8271_interface fdc_intf = { atom_8271_interrupt_callback, NULL, { FLOPPY_0, FLOPPY_1 } }; /*------------------------------------------------- centronics_interface atom_centronics_config -------------------------------------------------*/ static const centronics_interface atom_centronics_config = { FALSE, DEVCB_DEVICE_LINE_MEMBER(R6522_TAG, via6522_device, write_ca1), DEVCB_NULL, DEVCB_NULL }; /*------------------------------------------------- FLOPPY_OPTIONS( atom ) -------------------------------------------------*/ static FLOPPY_OPTIONS_START( atom ) FLOPPY_OPTION(atom, "dsk,40t", "Atom disk image", basicdsk_identify_default, basicdsk_construct_default, NULL, HEADS([1]) TRACKS([40]) SECTORS([10]) SECTOR_LENGTH([256]) FIRST_SECTOR_ID([0]))
#include "machine/null_modem.h" const device_type NULL_MODEM = &device_creator<null_modem_device>; null_modem_device::null_modem_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, NULL_MODEM, "Null Modem", tag, owner, clock), device_serial_port_interface(mconfig, *this), m_bitbanger(*this, "bitbanger") { } static struct _bitbanger_config null_modem_image_config = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, null_modem_device, read), BITBANGER_MODEM, BITBANGER_9600, BITBANGER_0PERCENT }; static MACHINE_CONFIG_FRAGMENT(null_modem_config) MCFG_BITBANGER_ADD("bitbanger", null_modem_image_config); MACHINE_CONFIG_END machine_config_constructor null_modem_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME(null_modem_config); }
WRITE_LINE_MEMBER( poly880_state::ctc_z0_w ) { // SEND } WRITE_LINE_MEMBER( poly880_state::ctc_z1_w ) { } static Z80CTC_INTERFACE( ctc_intf ) { DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* interrupt handler */ DEVCB_DRIVER_LINE_MEMBER(poly880_state, ctc_z0_w), /* ZC/TO0 callback */ DEVCB_DRIVER_LINE_MEMBER(poly880_state, ctc_z1_w), /* ZC/TO1 callback */ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF,z80ctc_device, trg3) /* ZC/TO2 callback */ }; /* Z80-PIO Interface */ WRITE8_MEMBER( poly880_state::pio1_pa_w ) { /* bit signal description PA0 SD0 segment E PA1 SD1 segment D PA2 SD2 segment C PA3 SD3 segment P PA4 SD4 segment G
} WRITE_LINE_MEMBER( pc1512_state::fdc_drq_w ) { m_ddrq = state; update_fdc_drq(); } //------------------------------------------------- // ins8250_interface uart_intf //------------------------------------------------- static const ins8250_interface uart_intf = { DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, write_txd), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, write_dtr), DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, write_rts), DEVCB_DEVICE_LINE_MEMBER(I8259A2_TAG, pic8259_device, ir4_w), DEVCB_NULL, DEVCB_NULL }; //------------------------------------------------- // centronics_interface centronics_intf //------------------------------------------------- void pc1512_state::update_ack() { if (m_ack_int_enable)
*/ WRITE_LINE_MEMBER( s100_wunderbus_device::pic_int_w ) { m_bus->int_w(state); } //------------------------------------------------- // ins8250_interface ace1_intf //------------------------------------------------- static ins8250_interface ace1_intf = { DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w), DEVCB_NULL, DEVCB_NULL }; //------------------------------------------------- // ins8250_interface ace2_intf //------------------------------------------------- static ins8250_interface ace2_intf = { DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
/* Z80-CTC Interface */ WRITE_LINE_MEMBER(amu880_state::ctc_z0_w) { } WRITE_LINE_MEMBER(amu880_state::ctc_z2_w) { /* cassette transmit/receive clock */ } static Z80CTC_INTERFACE( ctc_intf ) { DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* interrupt handler */ DEVCB_DRIVER_LINE_MEMBER(amu880_state,ctc_z0_w), /* ZC/TO0 callback */ DEVCB_DEVICE_LINE_MEMBER(Z80SIO_TAG, z80dart_device, rxtxcb_w), /* ZC/TO1 callback */ DEVCB_DRIVER_LINE_MEMBER(amu880_state,ctc_z2_w) /* ZC/TO2 callback */ }; /* Z80-PIO Interface */ static Z80PIO_INTERFACE( pio1_intf ) { DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ DEVCB_NULL, /* port A read callback */ DEVCB_NULL, /* port A write callback */ DEVCB_NULL, /* portA ready active callback */ DEVCB_NULL, /* port B read callback */ DEVCB_NULL, /* port B write callback */ DEVCB_NULL /* portB ready active callback */ };
WRITE_LINE_MEMBER( wangpc_state::pit2_w ) { if (state) { m_timer2_irq = 0; check_level1_interrupts(); } } static const struct pit8253_interface pit_intf = { { { 500000, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir0_w) }, { 2000000, DEVCB_LINE_VCC, DEVCB_NULL }, { 500000, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(wangpc_state, pit2_w) } } }; //------------------------------------------------- // IM6402_INTERFACE( uart_intf )
/* on line */ data |= m_centronics_select << 4; /* busy */ data |= m_centronics_busy << 5; return data; } static I8255A_INTERFACE( printer_8255_intf ) { DEVCB_NULL, DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(CENTRONICS_TAG, centronics_device, write_strobe), DEVCB_DRIVER_MEMBER(xor100_state, i8255_pc_r), DEVCB_NULL }; /* Z80-CTC Interface */ WRITE_LINE_MEMBER( xor100_state::ctc_z0_w ) { } WRITE_LINE_MEMBER( xor100_state::ctc_z1_w ) { } WRITE_LINE_MEMBER( xor100_state::ctc_z2_w )
} else if(m_dma_channel == channel) { m_dma_channel = -1; if(m_cur_eop) m_isabus->eop_w(channel, CLEAR_LINE ); } } WRITE_LINE_MEMBER( ibm5160_mb_device::pc_dack0_w ) { pc_select_dma_channel(0, state); } WRITE_LINE_MEMBER( ibm5160_mb_device::pc_dack1_w ) { pc_select_dma_channel(1, state); } WRITE_LINE_MEMBER( ibm5160_mb_device::pc_dack2_w ) { pc_select_dma_channel(2, state); } WRITE_LINE_MEMBER( ibm5160_mb_device::pc_dack3_w ) { pc_select_dma_channel(3, state); } I8237_INTERFACE( pc_dma8237_config ) { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma_hrq_changed), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_out_eop), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma_read_byte), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma_write_byte), { DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_1_dack_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_2_dack_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_3_dack_r) }, { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_0_dack_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_1_dack_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_2_dack_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_dma8237_3_dack_w) },
set_sby(state); } WRITE_LINE_MEMBER(cpc_dkspeech_device::lrq_cb) { set_lrq(state); } WRITE_LINE_MEMBER(cpc_dkspeech_device::sby_cb) { set_sby(state); } static sp0256_interface sp0256_intf = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,cpc_ssa1_device,lrq_cb), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,cpc_ssa1_device,sby_cb) }; static sp0256_interface sp0256_dk_intf = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,cpc_dkspeech_device,lrq_cb), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,cpc_dkspeech_device,sby_cb) }; //------------------------------------------------- // Device ROM definition //------------------------------------------------- // Has no actual ROM, just that internal to the SP0256 ROM_START( cpc_ssa1 )
} WRITE_LINE_MEMBER( c2040_device::rw_sel_w ) { // read/write select m_rw = state; update_gcr_data(); m_via->write_cb1(ERROR); } static const via6522_interface via_intf = { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, via_pa_r), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, ready_r), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, err_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, via_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, mode_sel_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2040_device, rw_sel_w), DEVCB_NULL };
} WRITE_LINE_MEMBER(pc_state::ibm5150_pit8253_out2_changed) { pc_speaker_set_input( state ); } const struct pit8253_interface ibm5150_pit8253_config = { { { XTAL_14_31818MHz/12, /* heartbeat IRQ */ DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { XTAL_14_31818MHz/12, /* dram refresh */ DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(pc_state,ibm5150_pit8253_out1_changed) }, { XTAL_14_31818MHz/12, /* pio port c pin 4, and speaker polling enough */ DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(pc_state,ibm5150_pit8253_out2_changed) } } }; /* On the PC Jr the input for clock 1 seems to be selectable
} static I8255A_INTERFACE( ppi8255_intf_2 ) { DEVCB_NULL, /* Port A read */ DEVCB_NULL, /* Port A write */ DEVCB_NULL, /* Port B read */ DEVCB_NULL, /* Port B write */ DEVCB_DRIVER_MEMBER(pasopia_state, rombank_r), /* Port C read */ DEVCB_NULL /* Port C write */ }; static Z80CTC_INTERFACE( ctc_intf ) { DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt handler DEVCB_DEVICE_LINE_MEMBER("z80ctc", z80ctc_device, trg1), // ZC/TO0 callback DEVCB_DEVICE_LINE_MEMBER("z80ctc", z80ctc_device, trg2), // ZC/TO1 callback, beep interface DEVCB_DEVICE_LINE_MEMBER("z80ctc", z80ctc_device, trg3) // ZC/TO2 callback }; READ8_MEMBER( pasopia_state::mux_r ) { return m_mux_data; } READ8_MEMBER( pasopia_state::keyb_r ) { const char *const keynames[3][4] = { { "KEY0", "KEY1", "KEY2", "KEY3" }, { "KEY4", "KEY5", "KEY6", "KEY7" }, { "KEY8", "KEY9", "KEYA", "KEYB" } }; int i,j;
ISA 8 bit Generic Communication Card ***************************************************************************/ #include "isa_com.h" #include "machine/ser_mouse.h" #include "machine/terminal.h" #include "machine/null_modem.h" #include "machine/serial.h" #include "machine/ins8250.h" static const ins8250_interface genpc_com_interface[2]= { { DEVCB_DEVICE_LINE_MEMBER("serport0", serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER("serport0", rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER("serport0", rs232_port_device, rts_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_com_device, pc_com_interrupt_1), DEVCB_NULL, DEVCB_NULL }, { DEVCB_DEVICE_LINE_MEMBER("serport1", serial_port_device, tx), DEVCB_DEVICE_LINE_MEMBER("serport1", rs232_port_device, dtr_w), DEVCB_DEVICE_LINE_MEMBER("serport1", rs232_port_device, rts_w), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_com_device, pc_com_interrupt_2), DEVCB_NULL, DEVCB_NULL }/*, {
video_ram_addr &= 0xfff; } } } static MC6845_INTERFACE( hd46505s_intf ) { false, 10, NULL, victor9k_update_row, NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w), NULL }; //------------------------------------------------- // pit8253_interface pit_intf //------------------------------------------------- WRITE_LINE_MEMBER(victor9k_state::mux_serial_b_w) { } WRITE_LINE_MEMBER(victor9k_state::mux_serial_a_w) { }
static ADDRESS_MAP_START( ct486_map, AS_PROGRAM, 32, ct486_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( ct486_io, AS_IO, 32, ct486_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_END //************************************************************************** // MACHINE DRIVERS //************************************************************************** static const at_keyboard_controller_interface keybc_intf = { DEVCB_DEVICE_LINE_MEMBER("cs4031", cs4031_device, kbrst_w), DEVCB_DEVICE_LINE_MEMBER("cs4031", cs4031_device, gatea20_w), DEVCB_DEVICE_LINE_MEMBER("cs4031", cs4031_device, irq01_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb), DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb) }; static const pc_kbdc_interface pc_kbdc_intf = { DEVCB_DEVICE_LINE_MEMBER("keybc", at_keyboard_controller_device, keyboard_clock_w), DEVCB_DEVICE_LINE_MEMBER("keybc", at_keyboard_controller_device, keyboard_data_w) }; static const isa16bus_interface isabus_intf = {
#include "emu.h" #include "machine/ne2000.h" static const dp8390_interface ne2000_dp8390_interface = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ne2000_device, ne2000_irq_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne2000_device, ne2000_mem_read), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne2000_device, ne2000_mem_write) }; static MACHINE_CONFIG_FRAGMENT(ne2000_config) MCFG_DP8390D_ADD("dp8390d", ne2000_dp8390_interface) MACHINE_CONFIG_END const device_type NE2000 = &device_creator<ne2000_device>; machine_config_constructor ne2000_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME(ne2000_config); } ne2000_device::ne2000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, NE2000, "NE2000 Network Adapter", tag, owner, clock), device_isa16_card_interface(mconfig, *this), m_dp8390(*this, "dp8390d") { } void ne2000_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);
//------------------------------------------------- // Z80DART_INTERFACE( abc800_dart_intf ) //------------------------------------------------- static Z80DART_INTERFACE( abc800_dart_intf ) { 0, 0, 0, 0, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(ABC800_KEYBOARD_TAG, abc800_keyboard_device, txd_r), DEVCB_DEVICE_LINE_MEMBER(ABC800_KEYBOARD_TAG, abc800_keyboard_device, rxd_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0) }; //------------------------------------------------- // Z80DART_INTERFACE( abc802_dart_intf ) //------------------------------------------------- WRITE_LINE_MEMBER( abc802_state::lrs_w )
static GROM_CONFIG(grom2_config) { false, 2, region_grom, 0x4000, 0x1800, DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_grom), GROMFREQ }; static GROMPORT_CONFIG(console_cartslot) { DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_cart), DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_reset) }; static PERIBOX_CONFIG( peribox_conf ) { DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, extint), // INTA DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, notconnected), // INTB DEVCB_DEVICE_LINE_MEMBER(DATAMUX_TAG, ti99_datamux_device, ready_line), // READY 0x70000 // Address bus prefix (AMA/AMB/AMC) }; static TI_SOUND_CONFIG( sound_conf ) { DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_sound) // READY }; READ8_MEMBER( ti99_4x_state::cruread ) { // if (TRACE_CRU) LOG("read access to CRU address %04x\n", offset << 4); UINT8 value = 0; // Similar to the bus8z_devices, just let the gromport and the p-box // decide whether they want to change the value at the CRU address
//------------------------------------------------- // MC146818_INTERFACE( rtc_intf ) //------------------------------------------------- WRITE_LINE_MEMBER( e01_device::rtc_irq_w ) { m_rtc_irq = state; update_interrupts(); } static mc146818_interface rtc_intf = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, rtc_irq_w) }; //------------------------------------------------- // mc6854_interface adlc_intf //------------------------------------------------- WRITE_LINE_MEMBER( e01_device::adlc_irq_w ) { m_adlc_irq = state; update_interrupts(); } READ_LINE_MEMBER( e01_device::econet_data_r )
} TIMER_DEVICE_CALLBACK_MEMBER(h89_state::h89_irq_timer) { if (m_port_f2 & 0x02) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); } WRITE8_MEMBER( h89_state::port_f2_w ) { m_port_f2 = data; } static const serial_terminal_interface terminal_intf = { DEVCB_DEVICE_LINE_MEMBER("ins8250", ins8250_uart_device, rx_w) }; static const ins8250_interface h89_ins8250_interface = { DEVCB_DEVICE_LINE_MEMBER(TERMINAL_TAG, serial_terminal_device, rx_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }; static MACHINE_CONFIG_START( h89, h89_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_12_288MHz / 6)
DEVCB_DRIVER_MEMBER(iq151_state, ppi_portc_r), DEVCB_DRIVER_MEMBER(iq151_state, ppi_portc_w) }; static const cassette_interface iq151_cassette_interface = { cassette_default_formats, NULL, (cassette_state)(CASSETTE_STOPPED), "iq151_cass", NULL }; static const iq151cart_interface iq151_cart_interface = { DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w), DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w), DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w), DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w), DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w), DEVCB_NULL }; static SLOT_INTERFACE_START(iq151_cart) SLOT_INTERFACE("video32", IQ151_VIDEO32) // video32 SLOT_INTERFACE("video64", IQ151_VIDEO64) // video64 SLOT_INTERFACE("grafik" , IQ151_GRAFIK) // Grafik SLOT_INTERFACE("disc2" , IQ151_DISC2) // Disc 2 SLOT_INTERFACE("minigraf" , IQ151_MINIGRAF) // Aritma Minigraf 0507 SLOT_INTERFACE("ms151a" , IQ151_MS151A) // MS151A XY Plotter SLOT_INTERFACE("staper" , IQ151_STAPER) // STAPER
}; WRITE_LINE_MEMBER( apricot_state::apricot_pit8253_out1 ) { /* connected to the rs232c interface */ } WRITE_LINE_MEMBER( apricot_state::apricot_pit8253_out2 ) { /* connected to the rs232c interface */ } static const struct pit8253_interface apricot_pit8253_intf = { { { XTAL_4MHz / 16, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("ic31", pic8259_device, ir6_w) }, { 0 /*XTAL_4MHz / 2*/, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_pit8253_out1) }, { 0 /*XTAL_4MHz / 2*/, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_pit8253_out2) } } }; WRITE_LINE_MEMBER(apricot_state::apricot_sio_irq_w) { m_pic->ir5_w(state); } static Z80SIO_INTERFACE( apricot_z80sio_intf ) { 0, 0, 0, 0, DEVCB_NULL,
} void ti_video_device::device_reset(void) { } /**************************************************************************/ /* Sound subsystem. TODO: Seriously consider to simplify this by connecting to the datamux directly. We don't do anything reasonable here. */ static const sn76496_config sound_config = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ti_sound_system_device, sound_ready), }; WRITE8_MEMBER( ti_sound_system_device::write ) { if (space.debugger_access()) return; m_sound_chip->write(space, 0, data); } void ti_sound_system_device::device_start(void) { const ti_sound_config *conf = reinterpret_cast<const ti_sound_config *>(static_config()); m_console_ready.resolve(conf->ready, *this); m_sound_chip = subdevice<sn76496_base_device>(TISOUNDCHIP_TAG); }
READ_LINE_MEMBER( c2031_device::via0_ca1_r ) { return !m_bus->atn_r(); } READ_LINE_MEMBER( c2031_device::via0_ca2_r ) { return get_device_number(); } static const via6522_interface via0_intf = { DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pa_r), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pb_r), DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_ca1_r), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_ca2_r), DEVCB_NULL, DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pa_w), DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, // PLL SYN DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c2031_device, via0_irq_w) };