trunk/src/emu/devcb.c
| r22525 | r22526 | |
| 70 | 70 | static ioport_port *resolve_port(const char *tag, device_t ¤t); |
| 71 | 71 | static device_t *resolve_device(int index, const char *tag, device_t ¤t); |
| 72 | 72 | static device_execute_interface *resolve_execute_interface(const char *tag, device_t ¤t); |
| 73 | | static address_space &resolve_space(int index, const char *tag, device_t ¤t); |
| 74 | 73 | }; |
| 75 | 74 | |
| 76 | 75 | |
| r22525 | r22526 | |
| 130 | 129 | } |
| 131 | 130 | |
| 132 | 131 | |
| 133 | | //------------------------------------------------- |
| 134 | | // resolve_space - resolve to an address space |
| 135 | | // given a device tag and a space index |
| 136 | | //------------------------------------------------- |
| 137 | | |
| 138 | | address_space &devcb_resolver::resolve_space(int index, const char *tag, device_t ¤t) |
| 139 | | { |
| 140 | | // find our target device |
| 141 | | device_t *targetdev = current.siblingdevice(tag); |
| 142 | | if (targetdev == NULL) |
| 143 | | throw emu_fatalerror("Unable to resolve device '%s' (requested by %s '%s')", tag, current.name(), current.tag()); |
| 144 | | |
| 145 | | // make sure the target device has a memory interface |
| 146 | | device_memory_interface *memory; |
| 147 | | if (!targetdev->interface(memory)) |
| 148 | | throw emu_fatalerror("Device '%s' (requested by %s '%s') has no memory interface", tag, current.name(), current.tag()); |
| 149 | | |
| 150 | | // set the real target and function, then prime a delegate |
| 151 | | if (!memory->has_space(index)) |
| 152 | | throw emu_fatalerror("Unable to find device '%s' space %d (requested by %s '%s')", tag, index, current.name(), current.tag()); |
| 153 | | return memory->space(index); |
| 154 | | } |
| 155 | | |
| 156 | | |
| 157 | | |
| 158 | 132 | //************************************************************************** |
| 159 | 133 | // DEVCB RESOLVED READ LINE |
| 160 | 134 | //************************************************************************** |
| r22525 | r22526 | |
| 202 | 176 | } |
| 203 | 177 | break; |
| 204 | 178 | |
| 205 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 206 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 207 | | m_helper.read8_space = desc.readspace; |
| 208 | | *static_cast<devcb_read_line_delegate *>(this) = devcb_read_line_delegate(&devcb_resolved_read_line::from_read8, desc.name, this); |
| 209 | | break; |
| 210 | | |
| 211 | 179 | case DEVCB_TYPE_CONSTANT: |
| 212 | 180 | m_object.constant = desc.index; |
| 213 | 181 | *static_cast<devcb_read_line_delegate *>(this) = devcb_read_line_delegate(&devcb_resolved_read_line::from_constant, "constant", this); |
| r22525 | r22526 | |
| 313 | 281 | } |
| 314 | 282 | break; |
| 315 | 283 | |
| 316 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 317 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 318 | | m_helper.write8_space = desc.writespace; |
| 319 | | *static_cast<devcb_write_line_delegate *>(this) = devcb_write_line_delegate(&devcb_resolved_write_line::to_write8, desc.name, this); |
| 320 | | break; |
| 321 | | |
| 322 | 284 | case DEVCB_TYPE_INPUT_LINE: |
| 323 | 285 | m_object.execute = devcb_resolver::resolve_execute_interface(desc.tag, device); |
| 324 | 286 | m_helper.input_line = desc.index; |
| r22525 | r22526 | |
| 437 | 399 | } |
| 438 | 400 | break; |
| 439 | 401 | |
| 440 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 441 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 442 | | m_helper.read8_space = desc.readspace; |
| 443 | | *static_cast<devcb_read8_delegate *>(this) = devcb_read8_delegate(&devcb_resolved_read8::from_read8space, desc.name, this); |
| 444 | | break; |
| 445 | | |
| 446 | 402 | case DEVCB_TYPE_CONSTANT: |
| 447 | 403 | m_object.constant = desc.index; |
| 448 | 404 | *static_cast<devcb_read8_delegate *>(this) = devcb_read8_delegate(&devcb_resolved_read8::from_constant, "constant", this); |
| r22525 | r22526 | |
| 572 | 528 | } |
| 573 | 529 | break; |
| 574 | 530 | |
| 575 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 576 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 577 | | m_helper.write8_space = desc.writespace; |
| 578 | | *static_cast<devcb_write8_delegate *>(this) = devcb_write8_delegate(&devcb_resolved_write8::to_write8space, desc.name, this); |
| 579 | | break; |
| 580 | | |
| 581 | 531 | case DEVCB_TYPE_INPUT_LINE: |
| 582 | 532 | m_object.execute = devcb_resolver::resolve_execute_interface(desc.tag, device); |
| 583 | 533 | m_helper.input_line = desc.index; |
| r22525 | r22526 | |
| 719 | 669 | } |
| 720 | 670 | break; |
| 721 | 671 | |
| 722 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 723 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 724 | | *static_cast<devcb_read16_delegate *>(this) = devcb_read16_delegate(desc.readspace, desc.name, m_object.space); |
| 725 | | break; |
| 726 | | |
| 727 | 672 | case DEVCB_TYPE_CONSTANT: |
| 728 | 673 | m_object.constant = desc.index; |
| 729 | 674 | *static_cast<devcb_read16_delegate *>(this) = devcb_read16_delegate(&devcb_resolved_read16::from_constant, "constant", this); |
| r22525 | r22526 | |
| 842 | 787 | } |
| 843 | 788 | break; |
| 844 | 789 | |
| 845 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 846 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 847 | | *static_cast<devcb_write16_delegate *>(this) = devcb_write16_delegate(desc.writespace, desc.name, m_object.space); |
| 848 | | break; |
| 849 | | |
| 850 | 790 | case DEVCB_TYPE_INPUT_LINE: |
| 851 | 791 | m_object.execute = devcb_resolver::resolve_execute_interface(desc.tag, device); |
| 852 | 792 | m_helper.input_line = desc.index; |
| r22525 | r22526 | |
| 976 | 916 | } |
| 977 | 917 | break; |
| 978 | 918 | |
| 979 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 980 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 981 | | *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(desc.readspace, desc.name, m_object.space); |
| 982 | | break; |
| 983 | | |
| 984 | 919 | case DEVCB_TYPE_CONSTANT: |
| 985 | 920 | m_object.constant = desc.index; |
| 986 | 921 | *static_cast<devcb_read32_delegate *>(this) = devcb_read32_delegate(&devcb_resolved_read32::from_constant, "constant", this); |
| r22525 | r22526 | |
| 1099 | 1034 | } |
| 1100 | 1035 | break; |
| 1101 | 1036 | |
| 1102 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 1103 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 1104 | | *static_cast<devcb_write32_delegate *>(this) = devcb_write32_delegate(desc.writespace, desc.name, m_object.space); |
| 1105 | | break; |
| 1106 | | |
| 1107 | 1037 | case DEVCB_TYPE_INPUT_LINE: |
| 1108 | 1038 | m_object.execute = devcb_resolver::resolve_execute_interface(desc.tag, device); |
| 1109 | 1039 | m_helper.input_line = desc.index; |
| r22525 | r22526 | |
| 1233 | 1163 | } |
| 1234 | 1164 | break; |
| 1235 | 1165 | |
| 1236 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 1237 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 1238 | | *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(desc.readspace, desc.name, m_object.space); |
| 1239 | | break; |
| 1240 | | |
| 1241 | 1166 | case DEVCB_TYPE_CONSTANT: |
| 1242 | 1167 | m_object.constant = desc.index; |
| 1243 | 1168 | *static_cast<devcb_read64_delegate *>(this) = devcb_read64_delegate(&devcb_resolved_read64::from_constant, "constant", this); |
| r22525 | r22526 | |
| 1356 | 1281 | } |
| 1357 | 1282 | break; |
| 1358 | 1283 | |
| 1359 | | case DEVCB_TYPE_LEGACY_SPACE: |
| 1360 | | m_object.space = &devcb_resolver::resolve_space(desc.index, desc.tag, device); |
| 1361 | | *static_cast<devcb_write64_delegate *>(this) = devcb_write64_delegate(desc.writespace, desc.name, m_object.space); |
| 1362 | | break; |
| 1363 | | |
| 1364 | 1284 | case DEVCB_TYPE_INPUT_LINE: |
| 1365 | 1285 | m_object.execute = devcb_resolver::resolve_execute_interface(desc.tag, device); |
| 1366 | 1286 | m_helper.input_line = desc.index; |
trunk/src/mess/machine/lux21046.c
| r22525 | r22526 | |
| 219 | 219 | m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_fdc_irq || m_dma_irq); |
| 220 | 220 | } |
| 221 | 221 | |
| 222 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 223 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 222 | READ8_MEMBER(luxor_55_21046_device::memory_read_byte) |
| 223 | { |
| 224 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 225 | return prog_space.read_byte(offset); |
| 226 | } |
| 224 | 227 | |
| 228 | WRITE8_MEMBER(luxor_55_21046_device::memory_write_byte) |
| 229 | { |
| 230 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 231 | return prog_space.write_byte(offset, data); |
| 232 | } |
| 233 | |
| 234 | READ8_MEMBER(luxor_55_21046_device::io_read_byte) |
| 235 | { |
| 236 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 237 | return prog_space.read_byte(offset); |
| 238 | } |
| 239 | |
| 240 | WRITE8_MEMBER(luxor_55_21046_device::io_write_byte) |
| 241 | { |
| 242 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 243 | return prog_space.write_byte(offset, data); |
| 244 | } |
| 245 | |
| 225 | 246 | static Z80DMA_INTERFACE( dma_intf ) |
| 226 | 247 | { |
| 227 | 248 | DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_HALT), |
| 228 | 249 | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, luxor_55_21046_device, dma_int_w), |
| 229 | 250 | DEVCB_NULL, |
| 230 | | DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_read_byte), |
| 231 | | DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_write_byte), |
| 232 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), |
| 233 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) |
| 251 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, luxor_55_21046_device, memory_read_byte), |
| 252 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, luxor_55_21046_device, memory_write_byte), |
| 253 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, luxor_55_21046_device, io_read_byte), |
| 254 | DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, luxor_55_21046_device, io_write_byte), |
| 234 | 255 | }; |
| 235 | 256 | |
| 236 | 257 | |
trunk/src/mess/machine/radio86.c
| r22525 | r22526 | |
| 134 | 134 | m_dma8257->i8257_hlda_w(state); |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 138 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 137 | READ8_MEMBER(radio86_state::memory_read_byte) |
| 138 | { |
| 139 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 140 | return prog_space.read_byte(offset); |
| 141 | } |
| 139 | 142 | |
| 143 | WRITE8_MEMBER(radio86_state::memory_write_byte) |
| 144 | { |
| 145 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 146 | return prog_space.write_byte(offset, data); |
| 147 | } |
| 148 | |
| 140 | 149 | I8257_INTERFACE( radio86_dma ) |
| 141 | 150 | { |
| 142 | 151 | DEVCB_DRIVER_LINE_MEMBER(radio86_state,hrq_w), |
| 143 | 152 | DEVCB_NULL, |
| 144 | 153 | DEVCB_NULL, |
| 145 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 146 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 154 | DEVCB_DRIVER_MEMBER(radio86_state, memory_read_byte), |
| 155 | DEVCB_DRIVER_MEMBER(radio86_state, memory_write_byte), |
| 147 | 156 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, |
| 148 | 157 | { DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_MEMBER("i8275", i8275_device, dack_w), DEVCB_NULL } |
| 149 | 158 | }; |
trunk/src/mess/drivers/bigbord2.c
| r22525 | r22526 | |
| 147 | 147 | DECLARE_DRIVER_INIT(bigbord2); |
| 148 | 148 | TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); |
| 149 | 149 | DECLARE_WRITE_LINE_MEMBER(bigbord2_interrupt); |
| 150 | DECLARE_READ8_MEMBER(memory_read_byte); |
| 151 | DECLARE_WRITE8_MEMBER(memory_write_byte); |
| 152 | DECLARE_READ8_MEMBER(io_read_byte); |
| 153 | DECLARE_WRITE8_MEMBER(io_write_byte); |
| 150 | 154 | }; |
| 151 | 155 | |
| 152 | 156 | /* Status port |
| r22525 | r22526 | |
| 211 | 215 | /* Z80 DMA */ |
| 212 | 216 | |
| 213 | 217 | |
| 214 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 215 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 218 | READ8_MEMBER(bigbord2_state::memory_read_byte) |
| 219 | { |
| 220 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 221 | return prog_space.read_byte(offset); |
| 222 | } |
| 216 | 223 | |
| 224 | WRITE8_MEMBER(bigbord2_state::memory_write_byte) |
| 225 | { |
| 226 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 227 | return prog_space.write_byte(offset, data); |
| 228 | } |
| 229 | |
| 230 | READ8_MEMBER(bigbord2_state::io_read_byte) |
| 231 | { |
| 232 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 233 | return prog_space.read_byte(offset); |
| 234 | } |
| 235 | |
| 236 | WRITE8_MEMBER(bigbord2_state::io_write_byte) |
| 237 | { |
| 238 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 239 | return prog_space.write_byte(offset, data); |
| 240 | } |
| 241 | |
| 217 | 242 | static Z80DMA_INTERFACE( dma_intf ) |
| 218 | 243 | { |
| 219 | 244 | DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_HALT), // actually BUSRQ |
| 220 | 245 | DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), |
| 221 | 246 | DEVCB_NULL, |
| 222 | | DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_read_byte), |
| 223 | | DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_write_byte), |
| 224 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), |
| 225 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) |
| 247 | DEVCB_DRIVER_MEMBER(bigbord2_state, memory_read_byte), |
| 248 | DEVCB_DRIVER_MEMBER(bigbord2_state, memory_write_byte), |
| 249 | DEVCB_DRIVER_MEMBER(bigbord2_state, io_read_byte), |
| 250 | DEVCB_DRIVER_MEMBER(bigbord2_state, io_write_byte), |
| 251 | |
| 226 | 252 | }; |
| 227 | 253 | |
| 228 | 254 | |
trunk/src/mess/drivers/x1.c
| r22525 | r22526 | |
| 1895 | 1895 | NULL /* update address callback */ |
| 1896 | 1896 | }; |
| 1897 | 1897 | |
| 1898 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 1899 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 1898 | READ8_MEMBER(x1_state::memory_read_byte) |
| 1899 | { |
| 1900 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 1901 | return prog_space.read_byte(offset); |
| 1902 | } |
| 1900 | 1903 | |
| 1904 | WRITE8_MEMBER(x1_state::memory_write_byte) |
| 1905 | { |
| 1906 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 1907 | return prog_space.write_byte(offset, data); |
| 1908 | } |
| 1909 | |
| 1910 | READ8_MEMBER(x1_state::io_read_byte) |
| 1911 | { |
| 1912 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 1913 | return prog_space.read_byte(offset); |
| 1914 | } |
| 1915 | |
| 1916 | WRITE8_MEMBER(x1_state::io_write_byte) |
| 1917 | { |
| 1918 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 1919 | return prog_space.write_byte(offset, data); |
| 1920 | } |
| 1921 | |
| 1901 | 1922 | static Z80DMA_INTERFACE( x1_dma ) |
| 1902 | 1923 | { |
| 1903 | 1924 | DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_HALT), |
| 1904 | 1925 | DEVCB_CPU_INPUT_LINE("x1_cpu", INPUT_LINE_IRQ0), |
| 1905 | 1926 | DEVCB_NULL, |
| 1906 | | DEVCB_MEMORY_HANDLER("x1_cpu", PROGRAM, memory_read_byte), |
| 1907 | | DEVCB_MEMORY_HANDLER("x1_cpu", PROGRAM, memory_write_byte), |
| 1908 | | DEVCB_MEMORY_HANDLER("x1_cpu", IO, memory_read_byte), |
| 1909 | | DEVCB_MEMORY_HANDLER("x1_cpu", IO, memory_write_byte) |
| 1927 | DEVCB_DRIVER_MEMBER(x1_state, memory_read_byte), |
| 1928 | DEVCB_DRIVER_MEMBER(x1_state, memory_write_byte), |
| 1929 | DEVCB_DRIVER_MEMBER(x1_state, io_read_byte), |
| 1930 | DEVCB_DRIVER_MEMBER(x1_state, io_write_byte) |
| 1910 | 1931 | }; |
| 1911 | 1932 | |
| 1912 | 1933 | /************************************* |
| r22525 | r22526 | |
| 1917 | 1938 | |
| 1918 | 1939 | INPUT_CHANGED_MEMBER(x1_state::ipl_reset) |
| 1919 | 1940 | { |
| 1920 | | m_x1_cpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); |
| 1941 | m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); |
| 1921 | 1942 | |
| 1922 | 1943 | m_ram_bank = 0x00; |
| 1923 | 1944 | if(m_is_turbo) { m_ex_bank = 0x10; } |
| r22525 | r22526 | |
| 1927 | 1948 | /* Apparently most games doesn't support this (not even the Konami ones!), one that does is...177 :o */ |
| 1928 | 1949 | INPUT_CHANGED_MEMBER(x1_state::nmi_reset) |
| 1929 | 1950 | { |
| 1930 | | m_x1_cpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE); |
| 1951 | m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE); |
| 1931 | 1952 | } |
| 1932 | 1953 | |
| 1933 | 1954 | INPUT_PORTS_START( x1 ) |
| r22525 | r22526 | |
| 2368 | 2389 | |
| 2369 | 2390 | TIMER_DEVICE_CALLBACK_MEMBER(x1_state::x1_keyboard_callback) |
| 2370 | 2391 | { |
| 2371 | | address_space &space = m_x1_cpu->space(AS_PROGRAM); |
| 2392 | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 2372 | 2393 | UINT32 key1 = ioport("key1")->read(); |
| 2373 | 2394 | UINT32 key2 = ioport("key2")->read(); |
| 2374 | 2395 | UINT32 key3 = ioport("key3")->read(); |
| r22525 | r22526 | |
| 2386 | 2407 | x1_sub_io_w(space,0,0xe6); |
| 2387 | 2408 | m_irq_vector = m_key_irq_vector; |
| 2388 | 2409 | m_key_irq_flag = 1; |
| 2389 | | m_x1_cpu->set_input_line(0,ASSERT_LINE); |
| 2410 | m_maincpu->set_input_line(0,ASSERT_LINE); |
| 2390 | 2411 | m_old_key1 = key1; |
| 2391 | 2412 | m_old_key2 = key2; |
| 2392 | 2413 | m_old_key3 = key3; |
trunk/src/mess/drivers/p8k.c
| r22525 | r22526 | |
| 107 | 107 | DECLARE_WRITE_LINE_MEMBER( p8k_16_daisy_interrupt ); |
| 108 | 108 | DECLARE_WRITE16_MEMBER( pk8_16_sio_0_serial_transmit ); |
| 109 | 109 | DECLARE_WRITE16_MEMBER( pk8_16_sio_1_serial_transmit ); |
| 110 | DECLARE_READ8_MEMBER(memory_read_byte); |
| 111 | DECLARE_WRITE8_MEMBER(memory_write_byte); |
| 112 | DECLARE_READ8_MEMBER(io_read_byte); |
| 113 | DECLARE_WRITE8_MEMBER(io_write_byte); |
| 110 | 114 | }; |
| 111 | 115 | |
| 112 | 116 | /*************************************************************************** |
| r22525 | r22526 | |
| 241 | 245 | p8k_daisy_interrupt(state); |
| 242 | 246 | } |
| 243 | 247 | |
| 244 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 245 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 248 | READ8_MEMBER(p8k_state::memory_read_byte) |
| 249 | { |
| 250 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 251 | return prog_space.read_byte(offset); |
| 252 | } |
| 246 | 253 | |
| 254 | WRITE8_MEMBER(p8k_state::memory_write_byte) |
| 255 | { |
| 256 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 257 | return prog_space.write_byte(offset, data); |
| 258 | } |
| 259 | |
| 260 | READ8_MEMBER(p8k_state::io_read_byte) |
| 261 | { |
| 262 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 263 | return prog_space.read_byte(offset); |
| 264 | } |
| 265 | |
| 266 | WRITE8_MEMBER(p8k_state::io_write_byte) |
| 267 | { |
| 268 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 269 | return prog_space.write_byte(offset, data); |
| 270 | } |
| 271 | |
| 247 | 272 | static Z80DMA_INTERFACE( p8k_dma_intf ) |
| 248 | 273 | { |
| 249 | 274 | DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_dma_irq_w), |
| 250 | 275 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), |
| 251 | 276 | DEVCB_NULL, |
| 252 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 253 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 254 | | DEVCB_MEMORY_HANDLER("maincpu", IO, memory_read_byte), |
| 255 | | DEVCB_MEMORY_HANDLER("maincpu", IO, memory_write_byte) |
| 277 | DEVCB_DRIVER_MEMBER(p8k_state, memory_read_byte), |
| 278 | DEVCB_DRIVER_MEMBER(p8k_state, memory_write_byte), |
| 279 | DEVCB_DRIVER_MEMBER(p8k_state, io_read_byte), |
| 280 | DEVCB_DRIVER_MEMBER(p8k_state, io_write_byte) |
| 256 | 281 | }; |
| 257 | 282 | |
| 258 | 283 | /* Z80 CTC 0 */ |
trunk/src/mess/drivers/dmv.c
| r22525 | r22526 | |
| 48 | 48 | DECLARE_WRITE8_MEMBER(kb_ctrl_mcu_w); |
| 49 | 49 | DECLARE_READ8_MEMBER(fdc_dma_r); |
| 50 | 50 | DECLARE_WRITE8_MEMBER(fdc_dma_w); |
| 51 | DECLARE_READ8_MEMBER(memory_read_byte); |
| 52 | DECLARE_WRITE8_MEMBER(memory_write_byte); |
| 51 | 53 | |
| 52 | 54 | void fdc_irq(bool state); |
| 53 | 55 | void fdc_drq(bool state); |
| r22525 | r22526 | |
| 283 | 285 | m_dmac->i8237_hlda_w(state); |
| 284 | 286 | } |
| 285 | 287 | |
| 286 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 287 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 288 | READ8_MEMBER(dmv_state::memory_read_byte) |
| 289 | { |
| 290 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 291 | return prog_space.read_byte(offset); |
| 292 | } |
| 288 | 293 | |
| 294 | WRITE8_MEMBER(dmv_state::memory_write_byte) |
| 295 | { |
| 296 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 297 | return prog_space.write_byte(offset, data); |
| 298 | } |
| 299 | |
| 289 | 300 | static I8237_INTERFACE( dmv_dma8237_config ) |
| 290 | 301 | { |
| 291 | 302 | DEVCB_DRIVER_LINE_MEMBER(dmv_state, dma_hrq_changed), |
| 292 | 303 | DEVCB_NULL, |
| 293 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 294 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 304 | DEVCB_DRIVER_MEMBER(dmv_state, memory_read_byte), |
| 305 | DEVCB_DRIVER_MEMBER(dmv_state, memory_write_byte), |
| 295 | 306 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(dmv_state, fdc_dma_r) }, |
| 296 | 307 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(dmv_state, fdc_dma_w) }, |
| 297 | 308 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
trunk/src/mess/drivers/b16.c
| r22525 | r22526 | |
| 36 | 36 | DECLARE_WRITE8_MEMBER(b16_6845_data_w); |
| 37 | 37 | DECLARE_READ8_MEMBER(unk_dev_r); |
| 38 | 38 | DECLARE_WRITE8_MEMBER(unk_dev_w); |
| 39 | DECLARE_READ8_MEMBER(memory_read_byte); |
| 40 | DECLARE_WRITE8_MEMBER(memory_write_byte); |
| 39 | 41 | |
| 40 | 42 | virtual void video_start(); |
| 41 | 43 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| r22525 | r22526 | |
| 264 | 266 | NULL /* update address callback */ |
| 265 | 267 | }; |
| 266 | 268 | |
| 267 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 268 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 269 | READ8_MEMBER(b16_state::memory_read_byte) |
| 270 | { |
| 271 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 272 | return prog_space.read_byte(offset); |
| 273 | } |
| 269 | 274 | |
| 275 | WRITE8_MEMBER(b16_state::memory_write_byte) |
| 276 | { |
| 277 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 278 | return prog_space.write_byte(offset, data); |
| 279 | } |
| 280 | |
| 270 | 281 | static I8237_INTERFACE( b16_dma8237_interface ) |
| 271 | 282 | { |
| 272 | 283 | DEVCB_NULL, |
| 273 | 284 | DEVCB_NULL, |
| 274 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 275 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 285 | DEVCB_DRIVER_MEMBER(b16_state, memory_read_byte), |
| 286 | DEVCB_DRIVER_MEMBER(b16_state, memory_write_byte), |
| 276 | 287 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, |
| 277 | 288 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, |
| 278 | 289 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
trunk/src/mess/drivers/trs80m2.c
| r22525 | r22526 | |
| 525 | 525 | // Z80DMA_INTERFACE( dma_intf ) |
| 526 | 526 | //------------------------------------------------- |
| 527 | 527 | |
| 528 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 529 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 528 | READ8_MEMBER(trs80m2_state::io_read_byte) |
| 529 | { |
| 530 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 531 | return prog_space.read_byte(offset); |
| 532 | } |
| 530 | 533 | |
| 534 | WRITE8_MEMBER(trs80m2_state::io_write_byte) |
| 535 | { |
| 536 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 537 | return prog_space.write_byte(offset, data); |
| 538 | } |
| 539 | |
| 531 | 540 | static Z80DMA_INTERFACE( dma_intf ) |
| 532 | 541 | { |
| 533 | 542 | DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_HALT), |
| r22525 | r22526 | |
| 535 | 544 | DEVCB_NULL, |
| 536 | 545 | DEVCB_DRIVER_MEMBER(trs80m2_state, read), |
| 537 | 546 | DEVCB_DRIVER_MEMBER(trs80m2_state, write), |
| 538 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), |
| 539 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) |
| 547 | DEVCB_DRIVER_MEMBER(trs80m2_state, io_read_byte), |
| 548 | DEVCB_DRIVER_MEMBER(trs80m2_state, io_write_byte), |
| 540 | 549 | }; |
| 541 | 550 | |
| 542 | 551 | |
trunk/src/mess/drivers/super6.c
| r22525 | r22526 | |
| 391 | 391 | // Z80DMA_INTERFACE( dma_intf ) |
| 392 | 392 | //------------------------------------------------- |
| 393 | 393 | |
| 394 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 395 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 394 | READ8_MEMBER(super6_state::memory_read_byte) |
| 395 | { |
| 396 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 397 | return prog_space.read_byte(offset); |
| 398 | } |
| 396 | 399 | |
| 400 | WRITE8_MEMBER(super6_state::memory_write_byte) |
| 401 | { |
| 402 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 403 | return prog_space.write_byte(offset, data); |
| 404 | } |
| 405 | |
| 406 | READ8_MEMBER(super6_state::io_read_byte) |
| 407 | { |
| 408 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 409 | return prog_space.read_byte(offset); |
| 410 | } |
| 411 | |
| 412 | WRITE8_MEMBER(super6_state::io_write_byte) |
| 413 | { |
| 414 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 415 | return prog_space.write_byte(offset, data); |
| 416 | } |
| 417 | |
| 397 | 418 | static Z80DMA_INTERFACE( dma_intf ) |
| 398 | 419 | { |
| 399 | 420 | DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_HALT), |
| 400 | 421 | DEVCB_DEVICE_LINE_MEMBER(Z80CTC_TAG, z80ctc_device, trg2), |
| 401 | 422 | DEVCB_NULL, |
| 402 | | DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_read_byte), |
| 403 | | DEVCB_MEMORY_HANDLER(Z80_TAG, PROGRAM, memory_write_byte), |
| 404 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), |
| 405 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) |
| 423 | DEVCB_DRIVER_MEMBER(super6_state, memory_read_byte), |
| 424 | DEVCB_DRIVER_MEMBER(super6_state, memory_write_byte), |
| 425 | DEVCB_DRIVER_MEMBER(super6_state, io_read_byte), |
| 426 | DEVCB_DRIVER_MEMBER(super6_state, io_write_byte), |
| 406 | 427 | }; |
| 407 | 428 | |
| 408 | 429 | |
trunk/src/mess/drivers/qx10.c
| r22525 | r22526 | |
| 115 | 115 | DECLARE_WRITE8_MEMBER( vram_bank_w ); |
| 116 | 116 | DECLARE_READ8_MEMBER( vram_r ); |
| 117 | 117 | DECLARE_WRITE8_MEMBER( vram_w ); |
| 118 | DECLARE_READ8_MEMBER(memory_read_byte); |
| 119 | DECLARE_WRITE8_MEMBER(memory_write_byte); |
| 118 | 120 | |
| 119 | 121 | UINT8 *m_char_rom; |
| 120 | 122 | |
| r22525 | r22526 | |
| 392 | 394 | Channel 2: GDC |
| 393 | 395 | Channel 3: Option slots |
| 394 | 396 | */ |
| 395 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 396 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 397 | READ8_MEMBER(qx10_state::memory_read_byte) |
| 398 | { |
| 399 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 400 | return prog_space.read_byte(offset); |
| 401 | } |
| 397 | 402 | |
| 403 | WRITE8_MEMBER(qx10_state::memory_write_byte) |
| 404 | { |
| 405 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 406 | return prog_space.write_byte(offset, data); |
| 407 | } |
| 408 | |
| 398 | 409 | static I8237_INTERFACE( qx10_dma8237_1_interface ) |
| 399 | 410 | { |
| 400 | 411 | DEVCB_DRIVER_LINE_MEMBER(qx10_state,dma_hrq_changed), |
| 401 | 412 | DEVCB_DRIVER_LINE_MEMBER(qx10_state, tc_w), |
| 402 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 403 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 413 | DEVCB_DRIVER_MEMBER(qx10_state, memory_read_byte), |
| 414 | DEVCB_DRIVER_MEMBER(qx10_state, memory_write_byte), |
| 404 | 415 | { DEVCB_DRIVER_MEMBER(qx10_state, fdc_dma_r), DEVCB_DRIVER_MEMBER(qx10_state, gdc_dack_r),/*DEVCB_DEVICE_HANDLER("upd7220", upd7220_dack_r)*/ DEVCB_NULL, DEVCB_NULL }, |
| 405 | 416 | { DEVCB_DRIVER_MEMBER(qx10_state, fdc_dma_w), DEVCB_DRIVER_MEMBER(qx10_state, gdc_dack_w),/*DEVCB_DEVICE_HANDLER("upd7220", upd7220_dack_w)*/ DEVCB_NULL, DEVCB_NULL }, |
| 406 | 417 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
trunk/src/mess/drivers/bullet.c
| r22525 | r22526 | |
| 847 | 847 | } |
| 848 | 848 | } |
| 849 | 849 | |
| 850 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 851 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 850 | READ8_MEMBER(bullet_state::io_read_byte) |
| 851 | { |
| 852 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 853 | return prog_space.read_byte(offset); |
| 854 | } |
| 852 | 855 | |
| 856 | WRITE8_MEMBER(bullet_state::io_write_byte) |
| 857 | { |
| 858 | address_space& prog_space = m_maincpu->space(AS_IO); |
| 859 | return prog_space.write_byte(offset, data); |
| 860 | } |
| 861 | |
| 862 | |
| 853 | 863 | static Z80DMA_INTERFACE( dma_intf ) |
| 854 | 864 | { |
| 855 | 865 | DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_HALT), |
| r22525 | r22526 | |
| 857 | 867 | DEVCB_NULL, |
| 858 | 868 | DEVCB_DRIVER_MEMBER(bullet_state, dma_mreq_r), |
| 859 | 869 | DEVCB_DRIVER_MEMBER(bullet_state, dma_mreq_w), |
| 860 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), |
| 861 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) |
| 870 | DEVCB_DRIVER_MEMBER(bullet_state, io_read_byte), |
| 871 | DEVCB_DRIVER_MEMBER(bullet_state, io_write_byte) |
| 862 | 872 | }; |
| 863 | 873 | |
| 864 | 874 | |
| r22525 | r22526 | |
| 899 | 909 | DEVCB_NULL, |
| 900 | 910 | DEVCB_DRIVER_MEMBER(bulletf_state, dma_mreq_r), |
| 901 | 911 | DEVCB_DRIVER_MEMBER(bulletf_state, dma_mreq_w), |
| 902 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_read_byte), |
| 903 | | DEVCB_MEMORY_HANDLER(Z80_TAG, IO, memory_write_byte) |
| 912 | DEVCB_DRIVER_MEMBER(bullet_state, io_read_byte), |
| 913 | DEVCB_DRIVER_MEMBER(bullet_state, io_write_byte) |
| 904 | 914 | }; |
| 905 | 915 | |
| 906 | 916 | |
trunk/src/mame/drivers/dkong.c
| r22525 | r22526 | |
| 330 | 330 | |
| 331 | 331 | #define COMBINE_TYPE_PC(_tyn, _pc) ((_tyn)<<16 | (_pc)) |
| 332 | 332 | |
| 333 | | /************************************* |
| 334 | | * |
| 335 | | * Prototypes |
| 336 | | * |
| 337 | | *************************************/ |
| 338 | 333 | |
| 339 | | |
| 340 | | |
| 341 | | |
| 342 | | |
| 343 | | |
| 344 | 334 | /************************************* |
| 345 | 335 | * |
| 346 | 336 | * statics |
| 347 | 337 | * |
| 348 | 338 | *************************************/ |
| 349 | 339 | |
| 350 | | static UINT8 memory_read_byte(address_space &space, offs_t address, UINT8 mem_mask) { return space.read_byte(address); } |
| 351 | | static void memory_write_byte(address_space &space, offs_t address, UINT8 data, UINT8 mem_mask) { space.write_byte(address, data); } |
| 340 | READ8_MEMBER(dkong_state::memory_read_byte) |
| 341 | { |
| 342 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 343 | return prog_space.read_byte(offset); |
| 344 | } |
| 352 | 345 | |
| 346 | WRITE8_MEMBER(dkong_state::memory_write_byte) |
| 347 | { |
| 348 | address_space& prog_space = m_maincpu->space(AS_PROGRAM); |
| 349 | return prog_space.write_byte(offset, data); |
| 350 | } |
| 351 | |
| 353 | 352 | static Z80DMA_INTERFACE( dk3_dma ) |
| 354 | 353 | { |
| 355 | 354 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT), |
| 356 | 355 | DEVCB_NULL, |
| 357 | 356 | DEVCB_NULL, |
| 358 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 359 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 357 | DEVCB_DRIVER_MEMBER(dkong_state, memory_read_byte), |
| 358 | DEVCB_DRIVER_MEMBER(dkong_state, memory_write_byte), |
| 360 | 359 | DEVCB_NULL, |
| 361 | 360 | DEVCB_NULL |
| 362 | 361 | }; |
| r22525 | r22526 | |
| 366 | 365 | DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT), |
| 367 | 366 | DEVCB_NULL, |
| 368 | 367 | DEVCB_NULL, |
| 369 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte), |
| 370 | | DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte), |
| 368 | DEVCB_DRIVER_MEMBER(dkong_state, memory_read_byte), |
| 369 | DEVCB_DRIVER_MEMBER(dkong_state, memory_write_byte), |
| 371 | 370 | { DEVCB_NULL, DEVCB_DRIVER_MEMBER(dkong_state,p8257_ctl_r), DEVCB_NULL, DEVCB_NULL }, |
| 372 | 371 | { DEVCB_DRIVER_MEMBER(dkong_state,p8257_ctl_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
| 373 | 372 | }; |