trunk/src/mame/drivers/vamphalf.c
| r28734 | r28735 | |
| 945 | 945 | GFXDECODE_END |
| 946 | 946 | |
| 947 | 947 | |
| 948 | | |
| 949 | | |
| 950 | | static QS1000_INTERFACE( qs1000_intf ) |
| 951 | | { |
| 952 | | /* External ROM */ |
| 953 | | true, |
| 954 | | |
| 955 | | /* P1-P3 read handlers */ |
| 956 | | DEVCB_DRIVER_MEMBER(vamphalf_state, qs1000_p1_r), |
| 957 | | DEVCB_NULL, |
| 958 | | DEVCB_NULL, |
| 959 | | |
| 960 | | /* P1-P3 write handlers */ |
| 961 | | DEVCB_NULL, |
| 962 | | DEVCB_NULL, |
| 963 | | DEVCB_DRIVER_MEMBER(vamphalf_state, qs1000_p3_w), |
| 964 | | }; |
| 965 | | |
| 966 | | |
| 967 | | |
| 968 | | |
| 969 | | |
| 970 | 948 | static MACHINE_CONFIG_START( common, vamphalf_state ) |
| 971 | 949 | MCFG_CPU_ADD("maincpu", E116T, 50000000) /* 50 MHz */ |
| 972 | 950 | MCFG_CPU_PROGRAM_MAP(common_map) |
| r28734 | r28735 | |
| 1018 | 996 | /* sound hardware */ |
| 1019 | 997 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1020 | 998 | |
| 1021 | | MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf) |
| 999 | MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz) |
| 1000 | MCFG_QS1000_EXTERNAL_ROM(true) |
| 1001 | MCFG_QS1000_IN_P1_CB(READ8(vamphalf_state, qs1000_p1_r)) |
| 1002 | MCFG_QS1000_OUT_P3_CB(WRITE8(vamphalf_state, qs1000_p3_w)) |
| 1022 | 1003 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1023 | 1004 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1024 | 1005 | MACHINE_CONFIG_END |
trunk/src/mame/drivers/limenko.c
| r28734 | r28735 | |
| 711 | 711 | |
| 712 | 712 | |
| 713 | 713 | /***************************************************************************************************** |
| 714 | | INTERFACES |
| 715 | | *****************************************************************************************************/ |
| 716 | | |
| 717 | | static QS1000_INTERFACE( qs1000_intf ) |
| 718 | | { |
| 719 | | /* External ROM */ |
| 720 | | true, |
| 721 | | |
| 722 | | /* P1-P3 read handlers */ |
| 723 | | DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p1_r), |
| 724 | | DEVCB_NULL, |
| 725 | | DEVCB_NULL, |
| 726 | | |
| 727 | | /* P1-P3 write handlers */ |
| 728 | | DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p1_w), |
| 729 | | DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p2_w), |
| 730 | | DEVCB_DRIVER_MEMBER(limenko_state, qs1000_p3_w), |
| 731 | | }; |
| 732 | | |
| 733 | | /***************************************************************************************************** |
| 734 | 714 | MACHINE DRIVERS |
| 735 | 715 | *****************************************************************************************************/ |
| 736 | 716 | |
| r28734 | r28735 | |
| 759 | 739 | /* sound hardware */ |
| 760 | 740 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 761 | 741 | |
| 762 | | MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf) |
| 742 | MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz) |
| 743 | MCFG_QS1000_EXTERNAL_ROM(true) |
| 744 | MCFG_QS1000_IN_P1_CB(READ8(limenko_state, qs1000_p1_r)) |
| 745 | MCFG_QS1000_OUT_P1_CB(WRITE8(limenko_state, qs1000_p1_w)) |
| 746 | MCFG_QS1000_OUT_P2_CB(WRITE8(limenko_state, qs1000_p2_w)) |
| 747 | MCFG_QS1000_OUT_P3_CB(WRITE8(limenko_state, qs1000_p3_w)) |
| 763 | 748 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 764 | 749 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 765 | 750 | MACHINE_CONFIG_END |
trunk/src/mame/drivers/ghosteo.c
| r28734 | r28735 | |
| 625 | 625 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(FUNC(ghosteo_state::bballoon_speedup_r), this)); |
| 626 | 626 | } |
| 627 | 627 | |
| 628 | | static QS1000_INTERFACE( qs1000_intf ) |
| 629 | | { |
| 630 | | /* External ROM */ |
| 631 | | true, |
| 632 | | |
| 633 | | /* P1-P3 read handlers */ |
| 634 | | DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_r), |
| 635 | | DEVCB_NULL, |
| 636 | | DEVCB_NULL, |
| 637 | | |
| 638 | | /* P1-P3 write handlers */ |
| 639 | | DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_w), |
| 640 | | DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p2_w), |
| 641 | | DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p3_w) |
| 642 | | }; |
| 643 | | |
| 644 | 628 | static MACHINE_CONFIG_START( ghosteo, ghosteo_state ) |
| 645 | 629 | |
| 646 | 630 | /* basic machine hardware */ |
| r28734 | r28735 | |
| 666 | 650 | /* sound hardware */ |
| 667 | 651 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 668 | 652 | |
| 669 | | MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf) |
| 653 | MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz) |
| 654 | MCFG_QS1000_EXTERNAL_ROM(true) |
| 655 | MCFG_QS1000_IN_P1_CB(READ8(ghosteo_state, qs1000_p1_r)) |
| 656 | MCFG_QS1000_OUT_P1_CB(WRITE8(ghosteo_state, qs1000_p1_w)) |
| 657 | MCFG_QS1000_OUT_P2_CB(WRITE8(ghosteo_state, qs1000_p2_w)) |
| 658 | MCFG_QS1000_OUT_P3_CB(WRITE8(ghosteo_state, qs1000_p3_w)) |
| 670 | 659 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 671 | 660 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 672 | 661 | MACHINE_CONFIG_END |
trunk/src/mame/drivers/eolith.c
| r28734 | r28735 | |
| 539 | 539 | |
| 540 | 540 | /************************************* |
| 541 | 541 | * |
| 542 | | * QS1000 interface |
| 543 | | * |
| 544 | | *************************************/ |
| 545 | | |
| 546 | | static QS1000_INTERFACE( qs1000_intf ) |
| 547 | | { |
| 548 | | /* External ROM */ |
| 549 | | true, |
| 550 | | |
| 551 | | /* P1-P3 read handlers */ |
| 552 | | DEVCB_DRIVER_MEMBER(eolith_state, qs1000_p1_r), |
| 553 | | DEVCB_NULL, |
| 554 | | DEVCB_NULL, |
| 555 | | |
| 556 | | /* P1-P3 write handlers */ |
| 557 | | DEVCB_DRIVER_MEMBER(eolith_state, qs1000_p1_w), |
| 558 | | DEVCB_NULL, |
| 559 | | DEVCB_NULL, |
| 560 | | }; |
| 561 | | |
| 562 | | |
| 563 | | /************************************* |
| 564 | | * |
| 565 | 542 | * Machine driver |
| 566 | 543 | * |
| 567 | 544 | *************************************/ |
| r28734 | r28735 | |
| 600 | 577 | /* sound hardware */ |
| 601 | 578 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 602 | 579 | |
| 603 | | MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf) |
| 580 | MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz) |
| 581 | MCFG_QS1000_EXTERNAL_ROM(true) |
| 582 | MCFG_QS1000_IN_P1_CB(READ8(eolith_state, qs1000_p1_r)) |
| 583 | MCFG_QS1000_OUT_P1_CB(WRITE8(eolith_state, qs1000_p1_w)) |
| 604 | 584 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 605 | 585 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 606 | 586 | MACHINE_CONFIG_END |
trunk/src/mame/drivers/vegaeo.c
| r28734 | r28735 | |
| 222 | 222 | } |
| 223 | 223 | |
| 224 | 224 | |
| 225 | | |
| 226 | | /************************************* |
| 227 | | * |
| 228 | | * QS1000 interface |
| 229 | | * |
| 230 | | *************************************/ |
| 231 | | |
| 232 | | static QS1000_INTERFACE( qs1000_intf ) |
| 233 | | { |
| 234 | | /* External ROM */ |
| 235 | | true, |
| 236 | | |
| 237 | | /* P1-P3 read handlers */ |
| 238 | | DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p1_r), |
| 239 | | DEVCB_NULL, |
| 240 | | DEVCB_NULL, |
| 241 | | |
| 242 | | /* P1-P3 write handlers */ |
| 243 | | DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p1_w), |
| 244 | | DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p2_w), |
| 245 | | DEVCB_DRIVER_MEMBER(vegaeo_state, qs1000_p3_w) |
| 246 | | }; |
| 247 | | |
| 248 | | |
| 249 | 225 | static MACHINE_CONFIG_START( vega, vegaeo_state ) |
| 250 | 226 | MCFG_CPU_ADD("maincpu", GMS30C2132, XTAL_55MHz) |
| 251 | 227 | MCFG_CPU_PROGRAM_MAP(vega_map) |
| r28734 | r28735 | |
| 270 | 246 | /* sound hardware */ |
| 271 | 247 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 272 | 248 | |
| 273 | | MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf) |
| 249 | MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz) |
| 250 | MCFG_QS1000_EXTERNAL_ROM(true) |
| 251 | MCFG_QS1000_IN_P1_CB(READ8(vegaeo_state, qs1000_p1_r)) |
| 252 | MCFG_QS1000_OUT_P1_CB(WRITE8(vegaeo_state, qs1000_p1_w)) |
| 253 | MCFG_QS1000_OUT_P2_CB(WRITE8(vegaeo_state, qs1000_p2_w)) |
| 254 | MCFG_QS1000_OUT_P3_CB(WRITE8(vegaeo_state, qs1000_p3_w)) |
| 274 | 255 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 275 | 256 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 276 | 257 | MACHINE_CONFIG_END |
trunk/src/emu/sound/qs1000.c
| r28734 | r28735 | |
| 183 | 183 | : device_t(mconfig, QS1000, "QS1000", tag, owner, clock, "qs1000", __FILE__), |
| 184 | 184 | device_sound_interface(mconfig, *this), |
| 185 | 185 | device_memory_interface(mconfig, *this), |
| 186 | m_external_rom(false), |
| 187 | m_in_p1_cb(*this), |
| 188 | m_in_p2_cb(*this), |
| 189 | m_in_p3_cb(*this), |
| 190 | m_out_p1_cb(*this), |
| 191 | m_out_p2_cb(*this), |
| 192 | m_out_p3_cb(*this), |
| 193 | //m_serial_w_cb(*this), |
| 186 | 194 | m_space_config("samples", ENDIANNESS_LITTLE, 8, 24, 0, NULL), |
| 187 | 195 | m_stream(NULL), |
| 188 | 196 | m_direct(NULL), |
| r28734 | r28735 | |
| 226 | 234 | m_stream = stream_alloc(0, 2, clock() / 32); |
| 227 | 235 | |
| 228 | 236 | // Resolve CPU port callbacks |
| 229 | | m_p1_r_func.resolve(m_in_p1_cb, *this); |
| 230 | | m_p2_r_func.resolve(m_in_p2_cb, *this); |
| 231 | | m_p3_r_func.resolve(m_in_p3_cb, *this); |
| 237 | m_in_p1_cb.resolve_safe(0); |
| 238 | m_in_p2_cb.resolve_safe(0); |
| 239 | m_in_p3_cb.resolve_safe(0); |
| 232 | 240 | |
| 233 | | m_p1_w_func.resolve(m_out_p1_cb, *this); |
| 234 | | m_p2_w_func.resolve(m_out_p2_cb, *this); |
| 235 | | m_p3_w_func.resolve(m_out_p3_cb, *this); |
| 241 | m_out_p1_cb.resolve_safe(); |
| 242 | m_out_p2_cb.resolve_safe(); |
| 243 | m_out_p3_cb.resolve_safe(); |
| 244 | |
| 245 | //m_serial_w_cb.resolve_safe(); |
| 236 | 246 | |
| 237 | 247 | m_cpu->i8051_set_serial_rx_callback(read8_delegate(FUNC(qs1000_device::data_to_i8052),this)); |
| 238 | 248 | |
| r28734 | r28735 | |
| 274 | 284 | |
| 275 | 285 | |
| 276 | 286 | //------------------------------------------------- |
| 277 | | // device_config_complete |
| 278 | | //------------------------------------------------- |
| 279 | | void qs1000_device::device_config_complete() |
| 280 | | { |
| 281 | | const qs1000_interface *intf = reinterpret_cast<const qs1000_interface *>(static_config()); |
| 282 | | |
| 283 | | if (intf != NULL) |
| 284 | | *static_cast<qs1000_interface *>(this) = *intf; |
| 285 | | } |
| 286 | | |
| 287 | | |
| 288 | | //------------------------------------------------- |
| 289 | 287 | // device_reset - device-specific reset |
| 290 | 288 | //------------------------------------------------- |
| 291 | 289 | void qs1000_device::device_reset() |
| r28734 | r28735 | |
| 330 | 328 | //------------------------------------------------- |
| 331 | 329 | READ8_MEMBER( qs1000_device::p1_r ) |
| 332 | 330 | { |
| 333 | | return m_p1_r_func(0); |
| 331 | return m_in_p1_cb(0); |
| 334 | 332 | } |
| 335 | 333 | |
| 336 | 334 | |
| r28734 | r28735 | |
| 339 | 337 | //------------------------------------------------- |
| 340 | 338 | READ8_MEMBER( qs1000_device::p2_r ) |
| 341 | 339 | { |
| 342 | | return m_p2_r_func(0); |
| 340 | return m_in_p2_cb(0); |
| 343 | 341 | } |
| 344 | 342 | |
| 345 | 343 | |
| r28734 | r28735 | |
| 348 | 346 | //------------------------------------------------- |
| 349 | 347 | READ8_MEMBER( qs1000_device::p3_r ) |
| 350 | 348 | { |
| 351 | | return m_p3_r_func(0); |
| 349 | return m_in_p3_cb(0); |
| 352 | 350 | } |
| 353 | 351 | |
| 354 | 352 | |
| 355 | 353 | //------------------------------------------------- |
| 356 | | // p1_w |
| 354 | // p0_w |
| 357 | 355 | //------------------------------------------------- |
| 358 | 356 | WRITE8_MEMBER( qs1000_device::p0_w ) |
| 359 | 357 | { |
| r28734 | r28735 | |
| 366 | 364 | |
| 367 | 365 | WRITE8_MEMBER( qs1000_device::p1_w ) |
| 368 | 366 | { |
| 369 | | m_p1_w_func(0, data); |
| 367 | m_out_p1_cb((offs_t)0, data); |
| 370 | 368 | } |
| 371 | 369 | |
| 372 | 370 | |
| r28734 | r28735 | |
| 376 | 374 | |
| 377 | 375 | WRITE8_MEMBER( qs1000_device::p2_w ) |
| 378 | 376 | { |
| 379 | | m_p2_w_func(0, data); |
| 377 | m_out_p2_cb((offs_t)0, data); |
| 380 | 378 | } |
| 381 | 379 | |
| 382 | 380 | |
| r28734 | r28735 | |
| 386 | 384 | |
| 387 | 385 | WRITE8_MEMBER( qs1000_device::p3_w ) |
| 388 | 386 | { |
| 389 | | m_p3_w_func(0, data); |
| 387 | m_out_p3_cb((offs_t)0, data); |
| 390 | 388 | } |
| 391 | 389 | |
| 392 | 390 | |
trunk/src/emu/sound/qs1000.h
| r28734 | r28735 | |
| 18 | 18 | // INTERFACE CONFIGURATION MACROS |
| 19 | 19 | //************************************************************************** |
| 20 | 20 | |
| 21 | | #define MCFG_QS1000_ADD(_tag, _clock, _config) \ |
| 22 | | MCFG_DEVICE_ADD(_tag, QS1000, _clock) \ |
| 23 | | MCFG_DEVICE_CONFIG(_config) |
| 21 | #define MCFG_QS1000_EXTERNAL_ROM(_bool) \ |
| 22 | qs1000_device::set_external_rom(*device, _bool); |
| 24 | 23 | |
| 25 | | #define QS1000_INTERFACE(name) \ |
| 26 | | const qs1000_interface (name) = |
| 24 | #define MCFG_QS1000_IN_P1_CB(_devcb) \ |
| 25 | devcb = &qs1000_device::set_in_p1_callback(*device, DEVCB2_##_devcb); |
| 27 | 26 | |
| 27 | #define MCFG_QS1000_IN_P2_CB(_devcb) \ |
| 28 | devcb = &qs1000_device::set_in_p2_callback(*device, DEVCB2_##_devcb); |
| 28 | 29 | |
| 30 | #define MCFG_QS1000_IN_P3_CB(_devcb) \ |
| 31 | devcb = &qs1000_device::set_in_p3_callback(*device, DEVCB2_##_devcb); |
| 29 | 32 | |
| 33 | #define MCFG_QS1000_OUT_P1_CB(_devcb) \ |
| 34 | devcb = &qs1000_device::set_out_p1_callback(*device, DEVCB2_##_devcb); |
| 35 | |
| 36 | #define MCFG_QS1000_OUT_P2_CB(_devcb) \ |
| 37 | devcb = &qs1000_device::set_out_p2_callback(*device, DEVCB2_##_devcb); |
| 38 | |
| 39 | #define MCFG_QS1000_OUT_P3_CB(_devcb) \ |
| 40 | devcb = &qs1000_device::set_out_p3_callback(*device, DEVCB2_##_devcb); |
| 41 | |
| 42 | /*#define MCFG_QS1000_SERIAL_W_CB(_devcb) \ |
| 43 | devcb = &qs1000_device::set_serial_w_callback(*device, DEVCB2_##_devcb);*/ |
| 44 | |
| 30 | 45 | //************************************************************************** |
| 31 | 46 | // TYPE DEFINITIONS |
| 32 | 47 | //************************************************************************** |
| r28734 | r28735 | |
| 34 | 49 | #define QS1000_CHANNELS 32 |
| 35 | 50 | #define QS1000_ADDRESS_MASK 0xffffff |
| 36 | 51 | |
| 37 | | class qs1000_device; |
| 38 | | |
| 39 | | |
| 40 | | struct qs1000_interface |
| 41 | | { |
| 42 | | bool m_external_rom; |
| 43 | | |
| 44 | | devcb_read8 m_in_p1_cb; |
| 45 | | devcb_read8 m_in_p2_cb; |
| 46 | | devcb_read8 m_in_p3_cb; |
| 47 | | |
| 48 | | devcb_write8 m_out_p1_cb; |
| 49 | | devcb_write8 m_out_p2_cb; |
| 50 | | devcb_write8 m_out_p3_cb; |
| 51 | | |
| 52 | | devcb_write8 m_serial_w; |
| 53 | | }; |
| 54 | | |
| 55 | 52 | // ======================> qs1000_device |
| 56 | 53 | |
| 57 | 54 | class qs1000_device : public device_t, |
| 58 | 55 | public device_sound_interface, |
| 59 | | public device_memory_interface, |
| 60 | | public qs1000_interface |
| 56 | public device_memory_interface |
| 61 | 57 | { |
| 62 | 58 | public: |
| 63 | 59 | // construction/destruction |
| 64 | 60 | qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 65 | 61 | |
| 62 | static void set_external_rom(device_t &device, bool external_rom) { downcast<qs1000_device &>(device).m_external_rom = external_rom; } |
| 63 | template<class _Object> static devcb2_base &set_in_p1_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p1_cb.set_callback(object); } |
| 64 | template<class _Object> static devcb2_base &set_in_p2_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p2_cb.set_callback(object); } |
| 65 | template<class _Object> static devcb2_base &set_in_p3_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_in_p3_cb.set_callback(object); } |
| 66 | template<class _Object> static devcb2_base &set_out_p1_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p1_cb.set_callback(object); } |
| 67 | template<class _Object> static devcb2_base &set_out_p2_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p2_cb.set_callback(object); } |
| 68 | template<class _Object> static devcb2_base &set_out_p3_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_out_p3_cb.set_callback(object); } |
| 69 | //template<class _Object> static devcb2_base &set_serial_w_callback(device_t &device, _Object object) { return downcast<qs1000_device &>(device).m_serial_w_cb.set_callback(object); } |
| 70 | |
| 66 | 71 | // external |
| 67 | 72 | void serial_in(UINT8 data); |
| 68 | 73 | void set_irq(int state); |
| r28734 | r28735 | |
| 71 | 76 | // device-level overrides |
| 72 | 77 | virtual const rom_entry *device_rom_region() const; |
| 73 | 78 | virtual machine_config_constructor device_mconfig_additions() const; |
| 74 | | virtual void device_config_complete(); |
| 75 | 79 | virtual void device_start(); |
| 76 | 80 | virtual void device_reset(); |
| 77 | 81 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| r28734 | r28735 | |
| 108 | 112 | void start_voice(int ch); |
| 109 | 113 | void set_voice_regs(int ch); |
| 110 | 114 | |
| 115 | bool m_external_rom; |
| 116 | |
| 111 | 117 | // Callbacks |
| 112 | | devcb_resolved_read8 m_p1_r_func; |
| 113 | | devcb_resolved_read8 m_p2_r_func; |
| 114 | | devcb_resolved_read8 m_p3_r_func; |
| 115 | | devcb_resolved_write8 m_p1_w_func; |
| 116 | | devcb_resolved_write8 m_p2_w_func; |
| 117 | | devcb_resolved_write8 m_p3_w_func; |
| 118 | devcb2_read8 m_in_p1_cb; |
| 119 | devcb2_read8 m_in_p2_cb; |
| 120 | devcb2_read8 m_in_p3_cb; |
| 118 | 121 | |
| 122 | devcb2_write8 m_out_p1_cb; |
| 123 | devcb2_write8 m_out_p2_cb; |
| 124 | devcb2_write8 m_out_p3_cb; |
| 125 | |
| 126 | //devcb2_write8 m_serial_w_cb; |
| 127 | |
| 119 | 128 | // Internal state |
| 120 | 129 | const address_space_config m_space_config; |
| 121 | 130 | sound_stream * m_stream; |