trunk/src/emu/bus/dmv/dmvbus.h
| r32247 | r32248 | |
| 34 | 34 | // slot 7 and 7A |
| 35 | 35 | virtual bool av16bit() { return false; } |
| 36 | 36 | virtual void hold_w(int state) { } |
| 37 | virtual void switch16_w(int state) { } |
| 37 | 38 | virtual void irq0_w(int state) { } |
| 38 | 39 | virtual void irq1_w(int state) { } |
| 39 | 40 | virtual void irq2_w(int state) { } |
| r32247 | r32248 | |
| 58 | 59 | template<class _Object> static devcb_base &set_prog_read_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_prog_read_cb.set_callback(object); } |
| 59 | 60 | template<class _Object> static devcb_base &set_prog_write_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_prog_write_cb.set_callback(object); } |
| 60 | 61 | template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_irq_cb.set_callback(object); } |
| 62 | template<class _Object> static devcb_base &set_out_thold_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_thold_cb.set_callback(object); } |
| 61 | 63 | |
| 62 | 64 | // device-level overrides |
| 63 | 65 | virtual void device_start(); |
| r32247 | r32248 | |
| 70 | 72 | virtual void io_read(address_space &space, int ifsel, offs_t offset, UINT8 &data); |
| 71 | 73 | virtual void io_write(address_space &space, int ifsel, offs_t offset, UINT8 data); |
| 72 | 74 | virtual void hold_w(int state); |
| 75 | virtual void switch16_w(int state); |
| 73 | 76 | virtual void irq0_w(int state); |
| 74 | 77 | virtual void irq1_w(int state); |
| 75 | 78 | virtual void irq2_w(int state); |
| r32247 | r32248 | |
| 84 | 87 | devcb_read8 m_prog_read_cb; |
| 85 | 88 | devcb_write8 m_prog_write_cb; |
| 86 | 89 | devcb_write_line m_out_irq_cb; |
| 90 | devcb_write_line m_out_thold_cb; |
| 87 | 91 | device_dmvslot_interface* m_cart; |
| 88 | 92 | }; |
| 89 | 93 | |
| r32247 | r32248 | |
| 103 | 107 | #define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \ |
| 104 | 108 | devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); |
| 105 | 109 | |
| 110 | #define MCFG_DMVCART_SLOT_OUT_THOLD_CB(_devcb) \ |
| 111 | devcb = &dmvcart_slot_device::set_out_thold_callback(*device, DEVCB_##_devcb); |
| 112 | |
| 106 | 113 | #endif /* __DMV_CART_H__ */ |
trunk/src/emu/bus/dmv/k230.c
| r32247 | r32248 | |
| 4 | 4 | |
| 5 | 5 | K230 Internal 8088 module without interrupt controller |
| 6 | 6 | K231 External 8088 module without interrupt controller |
| 7 | K234 External 68008 module |
| 7 | 8 | K235 Internal 8088 module with interrupt controller |
| 8 | 9 | |
| 9 | 10 | ***************************************************************************/ |
| r32247 | r32248 | |
| 43 | 44 | AM_RANGE( 0x00, 0xff ) AM_READWRITE(io_r, io_w) |
| 44 | 45 | ADDRESS_MAP_END |
| 45 | 46 | |
| 47 | static ADDRESS_MAP_START(k234_mem, AS_PROGRAM, 8, dmv_k230_device) |
| 48 | ADDRESS_MAP_UNMAP_HIGH |
| 49 | AM_RANGE( 0x00000, 0x7ffff ) AM_READWRITE(program_r, program_w) |
| 50 | AM_RANGE( 0xfff00, 0xfffff ) AM_READWRITE(io_r, io_w) |
| 51 | ADDRESS_MAP_END |
| 46 | 52 | |
| 47 | 53 | static ADDRESS_MAP_START(k235_io, AS_IO, 8, dmv_k230_device) |
| 48 | 54 | ADDRESS_MAP_UNMAP_HIGH |
| r32247 | r32248 | |
| 52 | 58 | ADDRESS_MAP_END |
| 53 | 59 | |
| 54 | 60 | static MACHINE_CONFIG_FRAGMENT( dmv_k230 ) |
| 55 | | MCFG_CPU_ADD("maincpu", I8088, XTAL_24MHz / 6) |
| 61 | MCFG_CPU_ADD("maincpu", I8088, XTAL_15MHz / 3) |
| 56 | 62 | MCFG_CPU_PROGRAM_MAP(k230_mem) |
| 57 | 63 | MCFG_CPU_IO_MAP(k230_io) |
| 58 | 64 | MACHINE_CONFIG_END |
| 59 | 65 | |
| 66 | static MACHINE_CONFIG_FRAGMENT( dmv_k234 ) |
| 67 | MCFG_CPU_ADD("maincpu", M68008, XTAL_16MHz / 2) |
| 68 | MCFG_CPU_PROGRAM_MAP(k234_mem) |
| 69 | MACHINE_CONFIG_END |
| 70 | |
| 60 | 71 | static MACHINE_CONFIG_FRAGMENT( dmv_k235 ) |
| 61 | | MCFG_CPU_ADD("maincpu", V20, XTAL_24MHz / 6) |
| 72 | MCFG_CPU_ADD("maincpu", V20, XTAL_15MHz / 3) |
| 62 | 73 | MCFG_CPU_PROGRAM_MAP(k230_mem) |
| 63 | 74 | MCFG_CPU_IO_MAP(k235_io) |
| 64 | 75 | MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb) |
| r32247 | r32248 | |
| 73 | 84 | |
| 74 | 85 | const device_type DMV_K230 = &device_creator<dmv_k230_device>; |
| 75 | 86 | const device_type DMV_K231 = &device_creator<dmv_k231_device>; |
| 87 | const device_type DMV_K234 = &device_creator<dmv_k234_device>; |
| 76 | 88 | const device_type DMV_K235 = &device_creator<dmv_k235_device>; |
| 77 | 89 | |
| 78 | 90 | //************************************************************************** |
| r32247 | r32248 | |
| 109 | 121 | } |
| 110 | 122 | |
| 111 | 123 | //------------------------------------------------- |
| 124 | // dmv_k234_device - constructor |
| 125 | //------------------------------------------------- |
| 126 | |
| 127 | dmv_k234_device::dmv_k234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 128 | : dmv_k230_device(mconfig, DMV_K234, "K234 68008", tag, owner, clock, "dmv_k234", __FILE__) |
| 129 | { |
| 130 | } |
| 131 | |
| 132 | //------------------------------------------------- |
| 112 | 133 | // dmv_k235_device - constructor |
| 113 | 134 | //------------------------------------------------- |
| 114 | 135 | |
| r32247 | r32248 | |
| 129 | 150 | m_io = &machine().device<cpu_device>("maincpu")->space(AS_IO); |
| 130 | 151 | } |
| 131 | 152 | |
| 153 | void dmv_k234_device::device_start() |
| 154 | { |
| 155 | dmv_k230_device::device_start(); |
| 156 | m_io->install_readwrite_handler(0xd8, 0xdf, 0, 0, read8_delegate(FUNC(dmv_k234_device::snr_r), this), write8_delegate(FUNC(dmv_k234_device::snr_w), this), 0); |
| 157 | } |
| 158 | |
| 132 | 159 | //------------------------------------------------- |
| 133 | 160 | // device_reset - device-specific reset |
| 134 | 161 | //------------------------------------------------- |
| 135 | 162 | |
| 136 | 163 | void dmv_k230_device::device_reset() |
| 137 | 164 | { |
| 165 | m_switch16 = 0; |
| 166 | m_hold = 0; |
| 138 | 167 | } |
| 139 | 168 | |
| 169 | void dmv_k234_device::device_reset() |
| 170 | { |
| 171 | dmv_k230_device::device_reset(); |
| 172 | m_snr = 0; |
| 173 | } |
| 174 | |
| 140 | 175 | //------------------------------------------------- |
| 141 | 176 | // machine_config_additions - device-specific |
| 142 | 177 | // machine configurations |
| r32247 | r32248 | |
| 147 | 182 | return MACHINE_CONFIG_NAME( dmv_k230 ); |
| 148 | 183 | } |
| 149 | 184 | |
| 185 | machine_config_constructor dmv_k234_device::device_mconfig_additions() const |
| 186 | { |
| 187 | return MACHINE_CONFIG_NAME( dmv_k234 ); |
| 188 | } |
| 189 | |
| 150 | 190 | machine_config_constructor dmv_k235_device::device_mconfig_additions() const |
| 151 | 191 | { |
| 152 | 192 | return MACHINE_CONFIG_NAME( dmv_k235 ); |
| r32247 | r32248 | |
| 166 | 206 | return ROM_NAME( dmv_k231 ); |
| 167 | 207 | } |
| 168 | 208 | |
| 209 | const rom_entry *dmv_k234_device::device_rom_region() const |
| 210 | { |
| 211 | return NULL; |
| 212 | } |
| 213 | |
| 169 | 214 | const rom_entry *dmv_k235_device::device_rom_region() const |
| 170 | 215 | { |
| 171 | 216 | return ROM_NAME( dmv_k235 ); |
| r32247 | r32248 | |
| 178 | 223 | |
| 179 | 224 | void dmv_k230_device::hold_w(int state) |
| 180 | 225 | { |
| 181 | | m_maincpu->set_input_line(INPUT_LINE_HALT, state); |
| 226 | m_hold = state; |
| 227 | m_maincpu->set_input_line(INPUT_LINE_HALT, (m_hold || !m_switch16) ? ASSERT_LINE : CLEAR_LINE); |
| 182 | 228 | } |
| 183 | 229 | |
| 230 | void dmv_k230_device::switch16_w(int state) |
| 231 | { |
| 232 | m_switch16 = state; |
| 233 | m_maincpu->set_input_line(INPUT_LINE_HALT, (m_hold || !m_switch16) ? ASSERT_LINE : CLEAR_LINE); |
| 234 | } |
| 235 | |
| 184 | 236 | READ8_MEMBER(dmv_k230_device::rom_r) |
| 185 | 237 | { |
| 186 | 238 | return m_rom->base()[offset & 0x0fff]; |
| r32247 | r32248 | |
| 194 | 246 | WRITE8_MEMBER( dmv_k230_device::io_w ) |
| 195 | 247 | { |
| 196 | 248 | m_io->write_byte(offset, data); |
| 197 | | }; |
| 249 | } |
| 198 | 250 | |
| 199 | 251 | READ8_MEMBER( dmv_k230_device::program_r ) |
| 200 | 252 | { |
| 201 | 253 | return m_bus->m_prog_read_cb(space, offset); |
| 202 | | }; |
| 254 | } |
| 203 | 255 | |
| 204 | 256 | WRITE8_MEMBER( dmv_k230_device::program_w ) |
| 205 | 257 | { |
| 206 | 258 | m_bus->m_prog_write_cb(space, offset, data); |
| 207 | | }; |
| 259 | } |
| 260 | |
| 261 | void dmv_k234_device::hold_w(int state) |
| 262 | { |
| 263 | m_hold = state; |
| 264 | m_maincpu->set_input_line(INPUT_LINE_HALT, (m_hold || !m_snr) ? ASSERT_LINE : CLEAR_LINE); |
| 265 | } |
| 266 | |
| 267 | void dmv_k234_device::switch16_w(int state) |
| 268 | { |
| 269 | if (m_switch16 != state) |
| 270 | { |
| 271 | m_snr = CLEAR_LINE; |
| 272 | m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
| 273 | m_bus->m_out_thold_cb(CLEAR_LINE); |
| 274 | m_switch16 = state; |
| 275 | } |
| 276 | } |
| 277 | |
| 278 | READ8_MEMBER( dmv_k234_device::snr_r ) |
| 279 | { |
| 280 | m_snr = ASSERT_LINE; |
| 281 | m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); |
| 282 | m_maincpu->reset(); |
| 283 | m_bus->m_out_thold_cb(ASSERT_LINE); |
| 284 | |
| 285 | return 0xff; |
| 286 | } |
| 287 | |
| 288 | WRITE8_MEMBER( dmv_k234_device::snr_w ) |
| 289 | { |
| 290 | m_snr = ASSERT_LINE; |
| 291 | m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); |
| 292 | m_maincpu->reset(); |
| 293 | m_bus->m_out_thold_cb(ASSERT_LINE); |
| 294 | } |
trunk/src/emu/bus/dmv/k233.c
| r0 | r32248 | |
| 1 | // license:BSD-3-Clause |
| 2 | // copyright-holders:Sandro Ronco |
| 3 | /*************************************************************************** |
| 4 | |
| 5 | K233 16K Shared RAM |
| 6 | |
| 7 | ***************************************************************************/ |
| 8 | |
| 9 | #include "emu.h" |
| 10 | #include "k233.h" |
| 11 | |
| 12 | |
| 13 | /*************************************************************************** |
| 14 | IMPLEMENTATION |
| 15 | ***************************************************************************/ |
| 16 | |
| 17 | //************************************************************************** |
| 18 | // GLOBAL VARIABLES |
| 19 | //************************************************************************** |
| 20 | |
| 21 | const device_type DMV_K233 = &device_creator<dmv_k233_device>; |
| 22 | |
| 23 | //************************************************************************** |
| 24 | // LIVE DEVICE |
| 25 | //************************************************************************** |
| 26 | |
| 27 | //------------------------------------------------- |
| 28 | // dmv_k233_device - constructor |
| 29 | //------------------------------------------------- |
| 30 | |
| 31 | dmv_k233_device::dmv_k233_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 32 | : device_t(mconfig, DMV_K233, "K233 16K Shared RAM", tag, owner, clock, "dmv_k233", __FILE__), |
| 33 | device_dmvslot_interface( mconfig, *this ) |
| 34 | { |
| 35 | } |
| 36 | |
| 37 | //------------------------------------------------- |
| 38 | // device_start - device-specific startup |
| 39 | //------------------------------------------------- |
| 40 | |
| 41 | void dmv_k233_device::device_start() |
| 42 | { |
| 43 | m_ram = machine().memory().region_alloc( "sharedram", 0x4000, 1, ENDIANNESS_LITTLE )->base(); |
| 44 | } |
| 45 | |
| 46 | //------------------------------------------------- |
| 47 | // device_reset - device-specific reset |
| 48 | //------------------------------------------------- |
| 49 | |
| 50 | void dmv_k233_device::device_reset() |
| 51 | { |
| 52 | m_enabled = false; |
| 53 | } |
| 54 | |
| 55 | void dmv_k233_device::io_write(address_space &space, int ifsel, offs_t offset, UINT8 data) |
| 56 | { |
| 57 | if (ifsel == 1) |
| 58 | m_enabled = !m_enabled; |
| 59 | } |
| 60 | |
| 61 | //------------------------------------------------- |
| 62 | // read |
| 63 | //------------------------------------------------- |
| 64 | |
| 65 | bool dmv_k233_device::read(offs_t offset, UINT8 &data) |
| 66 | { |
| 67 | if (m_enabled && offset >= 0xc000 && offset < 0x10000) |
| 68 | { |
| 69 | data = m_ram[offset & 0x3fff]; |
| 70 | return true; |
| 71 | } |
| 72 | |
| 73 | return false; |
| 74 | } |
| 75 | |
| 76 | //------------------------------------------------- |
| 77 | // write |
| 78 | //------------------------------------------------- |
| 79 | |
| 80 | bool dmv_k233_device::write(offs_t offset, UINT8 data) |
| 81 | { |
| 82 | if (m_enabled && offset >= 0xc000 && offset < 0x10000) |
| 83 | { |
| 84 | m_ram[offset & 0x3fff] = data; |
| 85 | return true; |
| 86 | } |
| 87 | |
| 88 | return false; |
| 89 | } |
trunk/src/emu/bus/dmv/k230.h
| r32247 | r32248 | |
| 9 | 9 | #include "dmvbus.h" |
| 10 | 10 | #include "cpu/i86/i86.h" |
| 11 | 11 | |
| 12 | // K234 |
| 13 | #include "cpu/m68000/m68000.h" |
| 14 | |
| 12 | 15 | // K235 |
| 13 | 16 | #include "cpu/nec/nec.h" |
| 14 | 17 | #include "machine/pic8259.h" |
| r32247 | r32248 | |
| 46 | 49 | |
| 47 | 50 | // dmvcart_interface overrides |
| 48 | 51 | virtual void hold_w(int state); |
| 52 | virtual void switch16_w(int state); |
| 49 | 53 | virtual bool av16bit(); |
| 50 | 54 | |
| 51 | | private: |
| 55 | protected: |
| 52 | 56 | required_device<cpu_device> m_maincpu; |
| 53 | | required_memory_region m_rom; |
| 57 | optional_memory_region m_rom; |
| 54 | 58 | dmvcart_slot_device * m_bus; |
| 55 | 59 | address_space * m_io; |
| 60 | int m_switch16; |
| 61 | int m_hold; |
| 56 | 62 | }; |
| 57 | 63 | |
| 58 | 64 | |
| r32247 | r32248 | |
| 70 | 76 | }; |
| 71 | 77 | |
| 72 | 78 | |
| 79 | // ======================> dmv_k234_device |
| 80 | |
| 81 | class dmv_k234_device : |
| 82 | public dmv_k230_device |
| 83 | { |
| 84 | public: |
| 85 | // construction/destruction |
| 86 | dmv_k234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 87 | |
| 88 | DECLARE_READ8_MEMBER(snr_r); |
| 89 | DECLARE_WRITE8_MEMBER(snr_w); |
| 90 | |
| 91 | protected: |
| 92 | // optional information overrides |
| 93 | virtual const rom_entry *device_rom_region() const; |
| 94 | virtual machine_config_constructor device_mconfig_additions() const; |
| 95 | |
| 96 | // device-level overrides |
| 97 | virtual void device_start(); |
| 98 | virtual void device_reset(); |
| 99 | |
| 100 | // dmvcart_interface overrides |
| 101 | virtual void hold_w(int state); |
| 102 | virtual void switch16_w(int state); |
| 103 | |
| 104 | private: |
| 105 | int m_snr; |
| 106 | }; |
| 107 | |
| 108 | |
| 73 | 109 | // ======================> dmv_k235_device |
| 74 | 110 | |
| 75 | 111 | class dmv_k235_device : |
| r32247 | r32248 | |
| 100 | 136 | // device type definition |
| 101 | 137 | extern const device_type DMV_K230; |
| 102 | 138 | extern const device_type DMV_K231; |
| 139 | extern const device_type DMV_K234; |
| 103 | 140 | extern const device_type DMV_K235; |
| 104 | 141 | |
| 105 | 142 | #endif /* __DMV_K230_H__ */ |
trunk/src/mess/drivers/dmv.c
| r32247 | r32248 | |
| 24 | 24 | #include "bus/dmv/dmvbus.h" |
| 25 | 25 | #include "bus/dmv/k220.h" |
| 26 | 26 | #include "bus/dmv/k230.h" |
| 27 | #include "bus/dmv/k233.h" |
| 27 | 28 | #include "bus/dmv/k806.h" |
| 28 | 29 | #include "bus/dmv/ram.h" |
| 29 | 30 | |
| r32247 | r32248 | |
| 100 | 101 | DECLARE_READ8_MEMBER(sys_status_r); |
| 101 | 102 | DECLARE_WRITE8_MEMBER(tc_set_w); |
| 102 | 103 | DECLARE_WRITE8_MEMBER(switch16_w); |
| 104 | DECLARE_READ8_MEMBER(ramsel_r); |
| 105 | DECLARE_READ8_MEMBER(romsel_r); |
| 103 | 106 | DECLARE_WRITE8_MEMBER(ramsel_w); |
| 104 | 107 | DECLARE_WRITE8_MEMBER(romsel_w); |
| 105 | 108 | DECLARE_READ8_MEMBER(kb_mcu_port1_r); |
| r32247 | r32248 | |
| 110 | 113 | DECLARE_WRITE8_MEMBER(program_w); |
| 111 | 114 | DECLARE_READ8_MEMBER(exp_program_r); |
| 112 | 115 | DECLARE_WRITE8_MEMBER(exp_program_w); |
| 116 | DECLARE_WRITE_LINE_MEMBER(thold7_w); |
| 117 | DECLARE_WRITE_LINE_MEMBER(busint_w); |
| 113 | 118 | DECLARE_FLOPPY_FORMATS( floppy_formats ); |
| 114 | 119 | |
| 115 | 120 | UINT8 program_read(address_space &space, int cas, offs_t offset); |
| r32247 | r32248 | |
| 133 | 138 | |
| 134 | 139 | bool m_ramoutdis; |
| 135 | 140 | int m_switch16; |
| 141 | int m_thold7; |
| 136 | 142 | int m_dma_hrq; |
| 137 | 143 | int m_ram_bank; |
| 138 | 144 | bool m_color_mode; |
| r32247 | r32248 | |
| 173 | 179 | output_set_led_value(8-i, BIT(data, i)); |
| 174 | 180 | } |
| 175 | 181 | |
| 182 | READ8_MEMBER(dmv_state::ramsel_r) |
| 183 | { |
| 184 | m_ramoutdis = false; |
| 185 | return 0; |
| 186 | } |
| 187 | |
| 188 | READ8_MEMBER(dmv_state::romsel_r) |
| 189 | { |
| 190 | m_ramoutdis = true; |
| 191 | return 0; |
| 192 | } |
| 193 | |
| 176 | 194 | WRITE8_MEMBER(dmv_state::ramsel_w) |
| 177 | 195 | { |
| 178 | 196 | m_ramoutdis = false; |
| r32247 | r32248 | |
| 348 | 366 | return program_read(space, m_ram_bank, offset); |
| 349 | 367 | } |
| 350 | 368 | |
| 369 | WRITE_LINE_MEMBER( dmv_state::thold7_w ) |
| 370 | { |
| 371 | if (m_thold7 != state) |
| 372 | { |
| 373 | m_thold7 = state; |
| 374 | update_halt_line(); |
| 375 | } |
| 376 | } |
| 377 | |
| 378 | WRITE_LINE_MEMBER( dmv_state::busint_w ) |
| 379 | { |
| 380 | m_slot7a->irq2_w(state); |
| 381 | m_slot7->irq2_w(state); |
| 382 | } |
| 383 | |
| 351 | 384 | void dmv_state::program_write(address_space &space, int cas, offs_t offset, UINT8 data) |
| 352 | 385 | { |
| 353 | 386 | bool tramd = false; |
| r32247 | r32248 | |
| 399 | 432 | ADDRESS_MAP_UNMAP_HIGH |
| 400 | 433 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 401 | 434 | AM_RANGE(0x00, 0x00) AM_WRITE(leds_w) |
| 402 | | AM_RANGE(0x10, 0x10) AM_WRITE(ramsel_w) |
| 403 | | AM_RANGE(0x11, 0x11) AM_WRITE(romsel_w) |
| 435 | AM_RANGE(0x10, 0x10) AM_READWRITE(ramsel_r, ramsel_w) |
| 436 | AM_RANGE(0x11, 0x11) AM_READWRITE(romsel_r, romsel_w) |
| 404 | 437 | AM_RANGE(0x12, 0x12) AM_WRITE(tc_set_w) |
| 405 | 438 | AM_RANGE(0x13, 0x13) AM_READ(sys_status_r) |
| 406 | 439 | AM_RANGE(0x14, 0x14) AM_WRITE(fdd_motor_w) |
| r32247 | r32248 | |
| 470 | 503 | m_sd_poll_state = 0; |
| 471 | 504 | m_floppy_motor = 1; |
| 472 | 505 | m_switch16 = 0; |
| 506 | m_thold7 = 0; |
| 473 | 507 | m_dma_hrq = 0; |
| 474 | 508 | |
| 475 | 509 | update_halt_line(); |
| r32247 | r32248 | |
| 477 | 511 | |
| 478 | 512 | void dmv_state::update_halt_line() |
| 479 | 513 | { |
| 480 | | m_slot7->hold_w(!m_switch16 || m_dma_hrq ? ASSERT_LINE : CLEAR_LINE); |
| 481 | | m_slot7a->hold_w(!m_switch16 || m_dma_hrq ? ASSERT_LINE : CLEAR_LINE); |
| 482 | | m_maincpu->set_input_line(INPUT_LINE_HALT, m_switch16 || m_dma_hrq ? ASSERT_LINE : CLEAR_LINE); |
| 514 | m_slot7->hold_w(m_dma_hrq); |
| 515 | m_slot7->switch16_w(m_switch16); |
| 516 | m_slot7a->hold_w(m_dma_hrq); |
| 517 | m_slot7a->switch16_w(m_switch16); |
| 518 | |
| 519 | m_maincpu->set_input_line(INPUT_LINE_HALT, (m_thold7 || m_switch16 || m_dma_hrq) ? ASSERT_LINE : CLEAR_LINE); |
| 483 | 520 | } |
| 484 | 521 | |
| 485 | 522 | /* F4 Character Displayer */ |
| r32247 | r32248 | |
| 568 | 605 | SLOT_INTERFACE_END |
| 569 | 606 | |
| 570 | 607 | static SLOT_INTERFACE_START(dmv_slot2_6) |
| 608 | SLOT_INTERFACE("k233", DMV_K233) // K233 16K Shared RAM |
| 571 | 609 | SLOT_INTERFACE("k806", DMV_K806) // K806 Mouse module |
| 572 | 610 | SLOT_INTERFACE_END |
| 573 | 611 | |
| 574 | 612 | static SLOT_INTERFACE_START(dmv_slot7) |
| 575 | 613 | SLOT_INTERFACE("k220", DMV_K220) // K220 Diagnostic Module |
| 576 | 614 | SLOT_INTERFACE("k231", DMV_K231) // K231 External 8088 module without interrupt controller |
| 615 | SLOT_INTERFACE("k234", DMV_K234) // K234 External 68008 module |
| 577 | 616 | SLOT_INTERFACE_END |
| 578 | 617 | |
| 579 | 618 | |
| r32247 | r32248 | |
| 667 | 706 | MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0) |
| 668 | 707 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, NULL, false) |
| 669 | 708 | MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w)) |
| 709 | MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w)) |
| 710 | MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w)) |
| 670 | 711 | MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0) |
| 671 | 712 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false) |
| 672 | 713 | MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w)) |
| 714 | MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w)) |
| 715 | MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w)) |
| 673 | 716 | |
| 674 | 717 | MACHINE_CONFIG_END |
| 675 | 718 | |