trunk/src/emu/bus/ep64/exp.h
| r28721 | r28722 | |
| 67 | 67 | // INTERFACE CONFIGURATION MACROS |
| 68 | 68 | //************************************************************************** |
| 69 | 69 | |
| 70 | | #define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _dave_tag, _def_slot) \ |
| 70 | #define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _def_slot) \ |
| 71 | 71 | MCFG_DEVICE_ADD(_tag, EP64_EXPANSION_BUS_SLOT, 0) \ |
| 72 | 72 | MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false) \ |
| 73 | | downcast<ep64_expansion_bus_slot_device *>(device)->set_dave_tag(_dave_tag); |
| 74 | 73 | |
| 75 | | #define MCFG_EP64_EXPANSION_BUS_CALLBACKS(_irq, _nmi, _wait) \ |
| 76 | | downcast<ep64_expansion_bus_slot_device *>(device)->set_irq_callback(DEVCB2_##_irq); \ |
| 77 | | downcast<ep64_expansion_bus_slot_device *>(device)->set_nmi_callback(DEVCB2_##_nmi); \ |
| 78 | | downcast<ep64_expansion_bus_slot_device *>(device)->set_wait_callback(DEVCB2_##_wait); |
| 79 | 74 | |
| 75 | #define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \ |
| 76 | ep64_expansion_bus_slot_device::static_set_dave_tag(*device, "^"_tag); |
| 80 | 77 | |
| 78 | #define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \ |
| 79 | devcb = &ep64_expansion_bus_slot_device::set_irq_wr_callback(*device, DEVCB2_##_write); |
| 81 | 80 | |
| 81 | #define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \ |
| 82 | devcb = &ep64_expansion_bus_slot_device::set_nmi_wr_callback(*device, DEVCB2_##_write); |
| 83 | |
| 84 | #define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \ |
| 85 | devcb = &ep64_expansion_bus_slot_device::set_wait_wr_callback(*device, DEVCB2_##_write); |
| 86 | |
| 87 | |
| 88 | |
| 82 | 89 | //************************************************************************** |
| 83 | 90 | // TYPE DEFINITIONS |
| 84 | 91 | //************************************************************************** |
| r28721 | r28722 | |
| 88 | 95 | class device_ep64_expansion_bus_card_interface; |
| 89 | 96 | |
| 90 | 97 | class ep64_expansion_bus_slot_device : public device_t, |
| 91 | | public device_slot_interface |
| 98 | public device_slot_interface |
| 92 | 99 | { |
| 93 | 100 | friend class device_ep64_expansion_bus_card_interface; |
| 94 | 101 | |
| r28721 | r28722 | |
| 96 | 103 | // construction/destruction |
| 97 | 104 | ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 98 | 105 | |
| 99 | | void set_dave_tag(const char* dave_tag) { m_dave_tag = dave_tag; } |
| 100 | | template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); } |
| 101 | | template<class _nmi> void set_nmi_callback(_nmi nmi) { m_write_nmi.set_callback(nmi); } |
| 102 | | template<class _wait> void set_wait_callback(_wait wait) { m_write_wait.set_callback(wait); } |
| 106 | static void static_set_dave_tag(device_t &device, const char* tag) { downcast<ep64_expansion_bus_slot_device &>(device).m_dave.set_tag(tag); } |
| 107 | template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_irq.set_callback(object); } |
| 108 | template<class _Object> static devcb2_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_nmi.set_callback(object); } |
| 109 | template<class _Object> static devcb2_base &set_wait_wr_callback(device_t &device, _Object object) { return downcast<ep64_expansion_bus_slot_device &>(device).m_write_wait.set_callback(object); } |
| 103 | 110 | |
| 104 | 111 | DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); } |
| 105 | 112 | DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); } |
| r28721 | r28722 | |
| 118 | 125 | devcb2_write_line m_write_nmi; |
| 119 | 126 | devcb2_write_line m_write_wait; |
| 120 | 127 | |
| 121 | | const char *m_dave_tag; |
| 122 | | dave_device *m_dave; |
| 128 | required_device<dave_device> m_dave; |
| 123 | 129 | |
| 124 | 130 | device_ep64_expansion_bus_card_interface *m_card; |
| 125 | 131 | }; |
trunk/src/mess/drivers/ep64.c
| r28721 | r28722 | |
| 525 | 525 | MCFG_CPU_IO_MAP(ep64_io) |
| 526 | 526 | |
| 527 | 527 | // video hardware |
| 528 | | MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL_8MHz, DEVWRITELINE(DAVE_TAG, dave_device, int1_w)) |
| 528 | MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL_8MHz) |
| 529 | MCFG_NICK_VIRQ_CALLBACK(DEVWRITELINE(DAVE_TAG, dave_device, int1_w)) |
| 529 | 530 | |
| 530 | 531 | // sound hardware |
| 531 | | MCFG_DAVE_ADD(DAVE_TAG, XTAL_8MHz, INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), dave_64k_mem, dave_io) |
| 532 | MCFG_DAVE_ADD(DAVE_TAG, XTAL_8MHz, dave_64k_mem, dave_io) |
| 533 | MCFG_DAVE_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) |
| 532 | 534 | |
| 533 | 535 | // devices |
| 534 | | MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, DAVE_TAG, NULL) |
| 535 | | MCFG_EP64_EXPANSION_BUS_CALLBACKS(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), INPUTLINE(Z80_TAG, INPUT_LINE_NMI), INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT)) |
| 536 | MCFG_EP64_EXPANSION_BUS_SLOT_ADD(EP64_EXPANSION_BUS_TAG, NULL) |
| 537 | MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(DAVE_TAG) |
| 538 | MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) |
| 539 | MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI)) |
| 540 | MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT)) |
| 536 | 541 | |
| 537 | 542 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "image") |
| 538 | 543 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ep64_state, write_centronics_busy)) |
| 539 | | |
| 540 | 544 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
| 541 | 545 | |
| 542 | 546 | MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) |
trunk/src/mess/audio/dave.h
| r28721 | r28722 | |
| 26 | 26 | // INTERFACE CONFIGURATION MACROS |
| 27 | 27 | ///************************************************************************* |
| 28 | 28 | |
| 29 | | #define MCFG_DAVE_ADD(_tag, _clock, _irq, _program_map, _io_map) \ |
| 29 | #define MCFG_DAVE_ADD(_tag, _clock, _program_map, _io_map) \ |
| 30 | 30 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") \ |
| 31 | 31 | MCFG_SOUND_ADD(_tag, DAVE, _clock) \ |
| 32 | 32 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) \ |
| 33 | 33 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) \ |
| 34 | 34 | MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, _program_map) \ |
| 35 | | MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map) \ |
| 36 | | downcast<dave_device *>(device)->set_irq_callback(DEVCB2_##_irq); |
| 35 | MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map) |
| 37 | 36 | |
| 38 | 37 | |
| 38 | #define MCFG_DAVE_IRQ_CALLBACK(_write) \ |
| 39 | devcb = &dave_device::set_irq_wr_callback(*device, DEVCB2_##_write); |
| 39 | 40 | |
| 41 | #define MCFG_DAVE_LH_CALLBACK(_write) \ |
| 42 | devcb = &dave_device::set_lh_wr_callback(*device, DEVCB2_##_write); |
| 43 | |
| 44 | #define MCFG_DAVE_RH_CALLBACK(_write) \ |
| 45 | devcb = &dave_device::set_rh_wr_callback(*device, DEVCB2_##_write); |
| 46 | |
| 47 | |
| 48 | |
| 40 | 49 | ///************************************************************************* |
| 41 | 50 | // TYPE DEFINITIONS |
| 42 | 51 | ///************************************************************************* |
| r28721 | r28722 | |
| 50 | 59 | public: |
| 51 | 60 | dave_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 52 | 61 | |
| 53 | | template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); } |
| 54 | | template<class _lh, class _rh> void set_dac_callbacks(_lh lh, _rh rh) { |
| 55 | | m_write_lh.set_callback(lh); |
| 56 | | m_write_rh.set_callback(rh); |
| 57 | | } |
| 62 | template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_irq.set_callback(object); } |
| 63 | template<class _Object> static devcb2_base &set_lh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_lh.set_callback(object); } |
| 64 | template<class _Object> static devcb2_base &set_rh_wr_callback(device_t &device, _Object object) { return downcast<dave_device &>(device).m_write_rh.set_callback(object); } |
| 58 | 65 | |
| 59 | 66 | virtual DECLARE_ADDRESS_MAP(z80_program_map, 8); |
| 60 | 67 | virtual DECLARE_ADDRESS_MAP(z80_io_map, 8); |
trunk/src/mess/video/nick.h
| r28721 | r28722 | |
| 22 | 22 | // INTERFACE CONFIGURATION MACROS |
| 23 | 23 | ///************************************************************************* |
| 24 | 24 | |
| 25 | | #define MCFG_NICK_ADD(_tag, _screen_tag, _clock, _virq) \ |
| 25 | #define MCFG_NICK_ADD(_tag, _screen_tag, _clock) \ |
| 26 | 26 | MCFG_SCREEN_ADD(_screen_tag, RASTER) \ |
| 27 | 27 | MCFG_SCREEN_REFRESH_RATE(50) \ |
| 28 | 28 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \ |
| r28721 | r28722 | |
| 30 | 30 | MCFG_SCREEN_VISIBLE_AREA(0, ENTERPRISE_SCREEN_WIDTH-1, 0, ENTERPRISE_SCREEN_HEIGHT-1) \ |
| 31 | 31 | MCFG_SCREEN_UPDATE_DEVICE(_tag, nick_device, screen_update) \ |
| 32 | 32 | MCFG_DEVICE_ADD(_tag, NICK, _clock) \ |
| 33 | | MCFG_VIDEO_SET_SCREEN(_screen_tag) \ |
| 34 | | downcast<nick_device *>(device)->set_virq_callback(DEVCB2_##_virq); |
| 33 | MCFG_VIDEO_SET_SCREEN(_screen_tag) |
| 35 | 34 | |
| 36 | 35 | |
| 36 | #define MCFG_NICK_VIRQ_CALLBACK(_write) \ |
| 37 | devcb = &nick_device::set_virq_wr_callback(*device, DEVCB2_##_write); |
| 38 | |
| 39 | |
| 37 | 40 | /* there are 64us per line, although in reality |
| 38 | 41 | about 50 are visible. */ |
| 39 | 42 | #define ENTERPRISE_SCREEN_WIDTH (50*16) |
| r28721 | r28722 | |
| 73 | 76 | // construction/destruction |
| 74 | 77 | nick_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 75 | 78 | |
| 76 | | template<class _virq> void set_virq_callback(_virq virq) { m_write_virq.set_callback(virq); } |
| 79 | template<class _Object> static devcb2_base &set_virq_wr_callback(device_t &device, _Object object) { return downcast<nick_device &>(device).m_write_virq.set_callback(object); } |
| 77 | 80 | |
| 78 | 81 | virtual DECLARE_ADDRESS_MAP(vram_map, 8); |
| 79 | 82 | virtual DECLARE_ADDRESS_MAP(vio_map, 8); |