trunk/src/mess/drivers/crvision.c
| r17623 | r17624 | |
| 497 | 497 | TMS9928a_interface tms9918_intf |
| 498 | 498 | -------------------------------------------------*/ |
| 499 | 499 | |
| 500 | | static WRITE_LINE_DEVICE_HANDLER(crvision_vdp_interrupt) |
| 500 | static TMS9928A_INTERFACE( vdp_intf ) |
| 501 | 501 | { |
| 502 | | cputag_set_input_line(device->machine(), M6502_TAG, INPUT_LINE_IRQ0, state); |
| 503 | | } |
| 504 | | |
| 505 | | static TMS9928A_INTERFACE(crvision_tms9928a_interface) |
| 506 | | { |
| 507 | | "screen", |
| 502 | SCREEN_TAG, |
| 508 | 503 | 0x4000, |
| 509 | | DEVCB_LINE(crvision_vdp_interrupt) |
| 504 | DEVCB_CPU_INPUT_LINE(M6502_TAG, INPUT_LINE_IRQ0) |
| 510 | 505 | }; |
| 511 | 506 | |
| 512 | 507 | /*------------------------------------------------- |
| r17623 | r17624 | |
| 616 | 611 | DEVCB_DRIVER_MEMBER(crvision_state, pia_pa_r), // input A |
| 617 | 612 | DEVCB_DRIVER_MEMBER(crvision_state, pia_pb_r), // input B |
| 618 | 613 | DEVCB_LINE_VCC, // input CA1 (+5V) |
| 619 | | DEVCB_DEVICE_LINE(SN76489_TAG, sn76496_ready_r), // input CB1 |
| 614 | DEVCB_DEVICE_LINE_MEMBER(SN76489_TAG, sn76496_base_device, ready_r), // input CB1 |
| 620 | 615 | DEVCB_LINE_VCC, // input CA2 (+5V) |
| 621 | 616 | DEVCB_LINE_VCC, // input CB2 (+5V) |
| 622 | 617 | DEVCB_DRIVER_MEMBER(crvision_state, pia_pa_w), // output A |
| 623 | | DEVCB_DEVICE_HANDLER(SN76489_TAG, sn76496_w), // output B |
| 618 | DEVCB_DEVICE_MEMBER(SN76489_TAG, sn76496_base_device, write), // output B |
| 624 | 619 | DEVCB_NULL, // output CA2 |
| 625 | 620 | DEVCB_NULL, // output CB2 (SN76489 pin CE_) |
| 626 | 621 | DEVCB_NULL, // irq A |
| r17623 | r17624 | |
| 723 | 718 | READ_LINE_MEMBER( laser2001_state::pia_cb1_r ) |
| 724 | 719 | { |
| 725 | 720 | /* actually this is a diode-AND (READY & _BUSY), but ctronics.c returns busy status if printer image is not mounted -> Manager won't boot */ |
| 726 | | return sn76496_ready_r(m_psg) & (m_centronics->not_busy_r() | m_pia->ca2_output_z()); |
| 721 | return m_psg->ready_r() && (m_centronics->not_busy_r() || m_pia->ca2_output_z()); |
| 727 | 722 | } |
| 728 | 723 | |
| 729 | 724 | WRITE_LINE_MEMBER( laser2001_state::pia_cb2_w ) |
| 730 | 725 | { |
| 731 | 726 | if (m_pia->ca2_output_z()) |
| 732 | 727 | { |
| 733 | | if (!state) sn76496_w(m_psg, 0, m_keylatch); |
| 728 | if (!state) m_psg->write(m_keylatch); |
| 734 | 729 | } |
| 735 | 730 | else |
| 736 | 731 | { |
| r17623 | r17624 | |
| 808 | 803 | DEVCB_DEVICE_LINE_MEMBER(PIA6821_TAG, pia6821_device, cb1_w) |
| 809 | 804 | }; |
| 810 | 805 | |
| 806 | /*------------------------------------------------- |
| 807 | sn76496_config psg_intf |
| 808 | -------------------------------------------------*/ |
| 809 | |
| 810 | static const sn76496_config psg_intf = |
| 811 | { |
| 812 | DEVCB_NULL |
| 813 | }; |
| 814 | |
| 811 | 815 | /*************************************************************************** |
| 812 | 816 | MACHINE INITIALIZATION |
| 813 | 817 | ***************************************************************************/ |
| r17623 | r17624 | |
| 972 | 976 | |
| 973 | 977 | // sound hardware |
| 974 | 978 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 975 | | MCFG_SOUND_ADD(SN76489_TAG, SN76489, XTAL_2MHz) |
| 979 | MCFG_SOUND_ADD(SN76489_TAG, SN76489A_NEW, XTAL_2MHz) |
| 980 | MCFG_SOUND_CONFIG(psg_intf) |
| 976 | 981 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 977 | 982 | |
| 978 | 983 | MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) |
| r17623 | r17624 | |
| 1000 | 1005 | |
| 1001 | 1006 | static MACHINE_CONFIG_DERIVED( ntsc, creativision ) |
| 1002 | 1007 | // video hardware |
| 1003 | | MCFG_TMS9928A_ADD( TMS9929_TAG, TMS9918, crvision_tms9928a_interface ) |
| 1004 | | MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) |
| 1008 | MCFG_TMS9928A_ADD( TMS9929_TAG, TMS9918, vdp_intf ) |
| 1009 | MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) |
| 1005 | 1010 | MCFG_SCREEN_UPDATE_DEVICE( TMS9929_TAG, tms9918_device, screen_update ) |
| 1006 | 1011 | MACHINE_CONFIG_END |
| 1007 | 1012 | |
| r17623 | r17624 | |
| 1011 | 1016 | |
| 1012 | 1017 | static MACHINE_CONFIG_DERIVED_CLASS( pal, creativision, crvision_pal_state ) |
| 1013 | 1018 | // video hardware |
| 1014 | | MCFG_TMS9928A_ADD( TMS9929_TAG, TMS9929, crvision_tms9928a_interface ) |
| 1015 | | MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) |
| 1019 | MCFG_TMS9928A_ADD( TMS9929_TAG, TMS9929, vdp_intf ) |
| 1020 | MCFG_TMS9928A_SCREEN_ADD_PAL( SCREEN_TAG ) |
| 1016 | 1021 | MCFG_SCREEN_UPDATE_DEVICE( TMS9929_TAG, tms9929_device, screen_update ) |
| 1017 | 1022 | MACHINE_CONFIG_END |
| 1018 | 1023 | |
| r17623 | r17624 | |
| 1022 | 1027 | |
| 1023 | 1028 | static MACHINE_CONFIG_START( lasr2001, laser2001_state ) |
| 1024 | 1029 | // basic machine hardware |
| 1025 | | MCFG_CPU_ADD(M6502_TAG, M6502, 17734470/9) |
| 1030 | MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_17_73447MHz/9) |
| 1026 | 1031 | MCFG_CPU_PROGRAM_MAP(lasr2001_map) |
| 1027 | 1032 | |
| 1028 | 1033 | // devices |
| r17623 | r17624 | |
| 1032 | 1037 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, lasr2001_centronics_intf) |
| 1033 | 1038 | |
| 1034 | 1039 | // video hardware |
| 1035 | | MCFG_TMS9928A_ADD( TMS9929_TAG, TMS9929A, crvision_tms9928a_interface ) |
| 1036 | | MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) |
| 1040 | MCFG_TMS9928A_ADD( TMS9929_TAG, TMS9929A, vdp_intf ) |
| 1041 | MCFG_TMS9928A_SCREEN_ADD_PAL( SCREEN_TAG ) |
| 1037 | 1042 | MCFG_SCREEN_UPDATE_DEVICE( TMS9929_TAG, tms9929a_device, screen_update ) |
| 1038 | 1043 | |
| 1039 | 1044 | // sound hardware |
| 1040 | 1045 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1041 | | MCFG_SOUND_ADD(SN76489_TAG, SN76489A, 17734470/9) |
| 1046 | MCFG_SOUND_ADD(SN76489_TAG, SN76489A_NEW, XTAL_17_73447MHz/9) |
| 1047 | MCFG_SOUND_CONFIG(psg_intf) |
| 1042 | 1048 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 1043 | 1049 | |
| 1044 | 1050 | MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) |