diff options
author | 2013-04-17 08:30:36 +0000 | |
---|---|---|
committer | 2013-04-17 08:30:36 +0000 | |
commit | 5d8cdfb2e55fe1f6d5fa50af34226b1b0d73a9ca (patch) | |
tree | 258368d589d6cca18b52607c0c7b7a9f90a259f4 /src/mess/machine | |
parent | 521b0c7c86836dcb844412bc173b8030e0be4905 (diff) |
(MESS) cassette cleanup (nw)
Diffstat (limited to 'src/mess/machine')
32 files changed, 91 insertions, 154 deletions
diff --git a/src/mess/machine/ac1.c b/src/mess/machine/ac1.c index ab7bcb95f23..9f0cc450353 100644 --- a/src/mess/machine/ac1.c +++ b/src/mess/machine/ac1.c @@ -114,5 +114,4 @@ DRIVER_INIT_MEMBER(ac1_state,ac1) void ac1_state::machine_reset() { - m_cassette = machine().device<cassette_image_device>(CASSETTE_TAG); } diff --git a/src/mess/machine/adam_ddp.c b/src/mess/machine/adam_ddp.c index a2352b74aa7..3a3db705b49 100644 --- a/src/mess/machine/adam_ddp.c +++ b/src/mess/machine/adam_ddp.c @@ -100,8 +100,8 @@ static MACHINE_CONFIG_FRAGMENT( adam_ddp ) MCFG_CPU_PROGRAM_MAP(adam_ddp_mem) MCFG_CPU_IO_MAP(adam_ddp_io) - MCFG_CASSETTE_ADD(CASSETTE_TAG, adam_cassette_interface) - MCFG_CASSETTE_ADD(CASSETTE2_TAG, adam_cassette_interface) + MCFG_CASSETTE_ADD("cassette", adam_cassette_interface) + MCFG_CASSETTE_ADD("cassette2", adam_cassette_interface) MACHINE_CONFIG_END @@ -129,8 +129,8 @@ adam_digital_data_pack_device::adam_digital_data_pack_device(const machine_confi : device_t(mconfig, ADAM_DDP, "Adam DDP", tag, owner, clock, "adam_ddp", __FILE__), device_adamnet_card_interface(mconfig, *this), m_maincpu(*this, M6801_TAG), - m_ddp0(*this, CASSETTE_TAG), - m_ddp1(*this, CASSETTE2_TAG) + m_ddp0(*this, "cassette"), + m_ddp1(*this, "cassette2") { } diff --git a/src/mess/machine/aim65.c b/src/mess/machine/aim65.c index 22c6d7e33b6..257a049a8d3 100644 --- a/src/mess/machine/aim65.c +++ b/src/mess/machine/aim65.c @@ -181,24 +181,24 @@ WRITE8_MEMBER( aim65_state::aim65_pb_w ) if (BIT(bits, 7)) { - m_cass1->output(BIT(data, 7) ? -1.0 : +1.0); - m_cass2->output(BIT(data, 7) ? -1.0 : +1.0); + m_cassette1->output(BIT(data, 7) ? -1.0 : +1.0); + m_cassette2->output(BIT(data, 7) ? -1.0 : +1.0); } if (BIT(bits, 5)) { if (BIT(data, 5)) - m_cass2->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); + m_cassette2->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); else - m_cass2->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); + m_cassette2->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); } if (BIT(bits, 4)) { if (BIT(data, 4)) - m_cass1->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); + m_cassette1->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); else - m_cass1->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); + m_cassette1->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); } } @@ -212,7 +212,7 @@ READ8_MEMBER( aim65_state::aim65_pb_r ) */ UINT8 data = ioport("switches")->read(); - data |= (m_cass1->input() > +0.03) ? 0x80 : 0; + data |= (m_cassette1->input() > +0.03) ? 0x80 : 0; data |= 0x40; // TTY must be H if not used. data |= m_pb_save & 0x37; return data; diff --git a/src/mess/machine/apple1.c b/src/mess/machine/apple1.c index 81b3b786caf..4612d96037f 100644 --- a/src/mess/machine/apple1.c +++ b/src/mess/machine/apple1.c @@ -480,11 +480,6 @@ TIMER_CALLBACK_MEMBER(apple1_state::apple1_dsp_ready_end) ** could be placed on a single tape. *****************************************************************************/ -static cassette_image_device *cassette_device_image(running_machine &machine) -{ - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - /* The cassette output signal for writing tapes is generated by a flip-flop which is toggled to produce the output waveform. Any access to the cassette I/O range, whether a read or a write, @@ -493,7 +488,7 @@ static void cassette_toggle_output(running_machine &machine) { apple1_state *state = machine.driver_data<apple1_state>(); state->m_cassette_output_flipflop = !state->m_cassette_output_flipflop; - cassette_device_image(machine)->output(state->m_cassette_output_flipflop ? 1.0 : -1.0); + state->m_cassette->output(state->m_cassette_output_flipflop ? 1.0 : -1.0); } READ8_MEMBER(apple1_state::apple1_cassette_r) @@ -524,7 +519,7 @@ READ8_MEMBER(apple1_state::apple1_cassette_r) /* (Don't try putting a non-zero "noise threshhold" here, because it can cause tape header bits on real cassette images to be misread as data bits.) */ - if (cassette_device_image(machine())->input() > 0.0) + if (m_cassette->input() > 0.0) return space.read_byte(0xc100 + (offset & ~1)); else return space.read_byte(0xc100 + offset); diff --git a/src/mess/machine/apple2.c b/src/mess/machine/apple2.c index 1971bef1a8e..a0503949c4b 100644 --- a/src/mess/machine/apple2.c +++ b/src/mess/machine/apple2.c @@ -1812,11 +1812,6 @@ WRITE8_MEMBER ( apple2_state::apple2_c05x_w ) apple2_c06x_r ***************************************************************************/ -static cassette_image_device *cassette_device_image(running_machine &machine) -{ - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - READ8_MEMBER ( apple2_state::apple2_c06x_r ) { int result = 0; @@ -1827,11 +1822,9 @@ READ8_MEMBER ( apple2_state::apple2_c06x_r ) case 0x00: /* Cassette input */ { - cassette_image_device *dev = cassette_device_image(space.machine()); - - if (dev) + if (m_cassette) { - result = dev->input() > 0.0 ? 0x80 : 0; + result = m_cassette->input() > 0.0 ? 0x80 : 0; } else { diff --git a/src/mess/machine/bbc.c b/src/mess/machine/bbc.c index f7d01aa2038..95cbf7f5090 100644 --- a/src/mess/machine/bbc.c +++ b/src/mess/machine/bbc.c @@ -1310,8 +1310,7 @@ static void MC6850_Receive_Clock(running_machine &machine, int new_clock) TIMER_CALLBACK_MEMBER(bbc_state::bbc_tape_timer_cb) { - double dev_val; - dev_val=machine().device<cassette_image_device>(CASSETTE_TAG)->input(); + double dev_val = m_cassette->input(); // look for rising edges on the cassette wave if (((dev_val>=0.0) && (m_last_dev_val<0.0)) || ((dev_val<0.0) && (m_last_dev_val>=0.0))) @@ -1371,12 +1370,12 @@ static void BBC_Cassette_motor(running_machine &machine, unsigned char status) bbc_state *state = machine.driver_data<bbc_state>(); if (status) { - machine.device<cassette_image_device>(CASSETTE_TAG)->change_state(CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); + state->m_cassette->change_state(CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); state->m_tape_timer->adjust(attotime::zero, 0, attotime::from_hz(44100)); } else { - machine.device<cassette_image_device>(CASSETTE_TAG)->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); + state->m_cassette->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); state->m_tape_timer->reset(); state->m_len0 = 0; state->m_len1 = 0; diff --git a/src/mess/machine/bk.c b/src/mess/machine/bk.c index 6536e84a268..6a040116e3f 100644 --- a/src/mess/machine/bk.c +++ b/src/mess/machine/bk.c @@ -101,7 +101,7 @@ READ16_MEMBER(bk_state::bk_vid_scrool_r) READ16_MEMBER(bk_state::bk_key_press_r) { - double level = (machine().device<cassette_image_device>(CASSETTE_TAG)->input()); + double level = m_cassette->input(); UINT16 cas; if (level < 0) { diff --git a/src/mess/machine/c2n.c b/src/mess/machine/c2n.c index 1692ae590cb..a6b8c1ca75d 100644 --- a/src/mess/machine/c2n.c +++ b/src/mess/machine/c2n.c @@ -11,13 +11,6 @@ -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define CASSETTE_TAG "cassette" - - //************************************************************************** // DEVICE DEFINITIONS @@ -47,7 +40,7 @@ const cassette_interface cbm_cassette_interface = //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( c2n ) - MCFG_CASSETTE_ADD(CASSETTE_TAG, cbm_cassette_interface ) + MCFG_CASSETTE_ADD("cassette", cbm_cassette_interface ) MACHINE_CONFIG_END @@ -74,14 +67,14 @@ machine_config_constructor c2n_device::device_mconfig_additions() const c2n_device::c2n_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source), device_pet_datassette_port_interface(mconfig, *this), - m_cassette(*this, CASSETTE_TAG) + m_cassette(*this, "cassette") { } c2n_device::c2n_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, C2N, "C2N", tag, owner, clock, "c2n", __FILE__), device_pet_datassette_port_interface(mconfig, *this), - m_cassette(*this, CASSETTE_TAG) + m_cassette(*this, "cassette") { } diff --git a/src/mess/machine/cgenie.c b/src/mess/machine/cgenie.c index 0584b9e1f55..81ca866cd03 100644 --- a/src/mess/machine/cgenie.c +++ b/src/mess/machine/cgenie.c @@ -34,7 +34,7 @@ TIMER_CALLBACK_MEMBER(cgenie_state::handle_cassette_input) { - UINT8 new_level = ( (machine().device<cassette_image_device>(CASSETTE_TAG)->input()) > 0.0 ) ? 1 : 0; + UINT8 new_level = ( (m_cassette->input()) > 0.0 ) ? 1 : 0; if ( new_level != m_cass_level ) { @@ -175,7 +175,7 @@ WRITE8_HANDLER( cgenie_port_ff_w ) cgenie_state *state = space.machine().driver_data<cgenie_state>(); int port_ff_changed = state->m_port_ff ^ data; - space.machine().device<cassette_image_device>(CASSETTE_TAG)->output(data & 0x01 ? -1.0 : 1.0 ); + state->m_cassette->output(data & 0x01 ? -1.0 : 1.0 ); /* background bits changed ? */ if( port_ff_changed & FF_BGD ) diff --git a/src/mess/machine/coco.c b/src/mess/machine/coco.c index 2942a8e9916..bfd94159605 100644 --- a/src/mess/machine/coco.c +++ b/src/mess/machine/coco.c @@ -87,7 +87,7 @@ coco_state::coco_state(const machine_config &mconfig, device_type type, const ch m_wave(*this, WAVE_TAG), m_cococart(*this, CARTRIDGE_TAG), m_ram(*this, RAM_TAG), - m_cassette(*this, CASSETTE_TAG), + m_cassette(*this, "cassette"), m_bitbanger(*this, BITBANGER_TAG), m_vhd_0(*this, VHD0_TAG), m_vhd_1(*this, VHD1_TAG) diff --git a/src/mess/machine/dai.c b/src/mess/machine/dai.c index 228984fed77..08067357dab 100644 --- a/src/mess/machine/dai.c +++ b/src/mess/machine/dai.c @@ -164,7 +164,7 @@ READ8_MEMBER(dai_state::dai_io_discrete_devices_r) data |= 0x08; // serial ready if (machine().rand()&0x01) data |= 0x40; // random number generator - if (machine().device<cassette_image_device>(CASSETTE_TAG)->input() > 0.01) + if (m_cassette->input() > 0.01) data |= 0x80; // tape input break; @@ -197,8 +197,8 @@ WRITE8_MEMBER(dai_state::dai_io_discrete_devices_w) m_paddle_enable = (data&0x08)>>3; m_cassette_motor[0] = (data&0x10)>>4; m_cassette_motor[1] = (data&0x20)>>5; - machine().device<cassette_image_device>(CASSETTE_TAG)->change_state(m_cassette_motor[0]?CASSETTE_MOTOR_DISABLED:CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); - machine().device<cassette_image_device>(CASSETTE_TAG)->output((data & 0x01) ? -1.0 : 1.0); + m_cassette->change_state(m_cassette_motor[0]?CASSETTE_MOTOR_DISABLED:CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); + m_cassette->output((data & 0x01) ? -1.0 : 1.0); dai_update_memory (machine(), (data&0xc0)>>6); LOG_DAI_PORT_W (offset, (data&0x06)>>2, "discrete devices - paddle select"); LOG_DAI_PORT_W (offset, (data&0x08)>>3, "discrete devices - paddle enable"); diff --git a/src/mess/machine/electron.c b/src/mess/machine/electron.c index cdf69781220..472e83134a7 100644 --- a/src/mess/machine/electron.c +++ b/src/mess/machine/electron.c @@ -12,12 +12,6 @@ #include "sound/beep.h" #include "imagedev/cassette.h" - -static cassette_image_device *cassette_device_image( running_machine &machine ) -{ - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - void electron_state::electron_tape_start() { if (m_ula.tape_running ) @@ -46,7 +40,7 @@ TIMER_CALLBACK_MEMBER(electron_state::electron_tape_timer_handler) if ( m_ula.cassette_motor_mode ) { double tap_val; - tap_val = cassette_device_image(machine())->input(); + tap_val = m_cassette->input(); if ( tap_val < -0.5 ) { m_ula.tape_value = ( m_ula.tape_value << 8 ) | TAPE_LOW; @@ -267,7 +261,7 @@ WRITE8_MEMBER(electron_state::electron_ula_w) m_ula.vram = (UINT8 *)space.get_read_ptr(m_ula.screen_base ); logerror( "ULA: screen mode set to %d\n", m_ula.screen_mode ); m_ula.cassette_motor_mode = ( data >> 6 ) & 0x01; - cassette_device_image(machine())->change_state(m_ula.cassette_motor_mode ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MOTOR_DISABLED ); + m_cassette->change_state(m_ula.cassette_motor_mode ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MOTOR_DISABLED ); m_ula.capslock_mode = ( data >> 7 ) & 0x01; break; case 0x08: case 0x0A: case 0x0C: case 0x0E: diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index 3d174ad1543..95e4e77823d 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -708,7 +708,7 @@ static const cassette_interface ibm5150_cassette_interface = static MACHINE_CONFIG_FRAGMENT( ibm5150_mb_config ) MCFG_FRAGMENT_ADD(ibm5160_mb_config) - MCFG_CASSETTE_ADD( CASSETTE_TAG, ibm5150_cassette_interface ) + MCFG_CASSETTE_ADD( "cassette", ibm5150_cassette_interface ) MACHINE_CONFIG_END @@ -732,7 +732,7 @@ machine_config_constructor ibm5150_mb_device::device_mconfig_additions() const ibm5150_mb_device::ibm5150_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : ibm5160_mb_device(mconfig, tag, owner, clock), - m_cassette(*this, CASSETTE_TAG) + m_cassette(*this, "cassette") { } diff --git a/src/mess/machine/hec2hrp.c b/src/mess/machine/hec2hrp.c index aad95422efb..c8cfbb2e802 100644 --- a/src/mess/machine/hec2hrp.c +++ b/src/mess/machine/hec2hrp.c @@ -56,8 +56,6 @@ static void Mise_A_Jour_Etat(running_machine &machine, int Adresse, int Value ); static void Update_Sound(address_space &space, UINT8 data); -static cassette_image_device *cassette_device_image(running_machine &machine); - /* machine List hec2hrp victor @@ -334,7 +332,7 @@ READ8_MEMBER(hec2hrp_state::hector_cassette_r) if (m_write_cassette == 0) { /* Accee a la cassette*/ - level = (cassette_device_image(machine())->input()); + level = m_cassette->input(); /* Travail du 741 en trigger*/ if (level < -0.08) @@ -375,15 +373,15 @@ WRITE8_MEMBER(hec2hrp_state::hector_color_a_w) /* Bit 6 => motor ON/OFF => for cassette state!*/ if (m_write_cassette==0) { - cassette_device_image(machine())->change_state( + m_cassette->change_state( CASSETTE_MOTOR_ENABLED , CASSETTE_MASK_MOTOR); - // cassette_device_image(machine())->set_state((cassette_state)(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED )); + // m_cassette->set_state((cassette_state)(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED )); } } else { /* stop motor*/ - cassette_device_image(machine())->set_state(CASSETTE_STOPPED); + m_cassette->set_state(CASSETTE_STOPPED); m_write_cassette=0; m_counter_write =0; } @@ -398,15 +396,15 @@ WRITE8_MEMBER(hec2hrp_state::hector_color_a_w) m_counter_write = 6; if (m_write_cassette==0) { /* C'est la 1er fois => record*/ - cassette_device_image(machine())->change_state( + m_cassette->change_state( CASSETTE_MOTOR_ENABLED , CASSETTE_MASK_MOTOR); - cassette_device_image(machine())->set_state(CASSETTE_RECORD); + m_cassette->set_state(CASSETTE_RECORD); m_write_cassette=1; } } /* cassette data */ - cassette_device_image(machine())->output(((data & 0x80) == 0x80) ? -1.0 : +1.0); + m_cassette->output(((data & 0x80) == 0x80) ? -1.0 : +1.0); } /* Other bit : color definition*/ @@ -430,16 +428,6 @@ WRITE8_MEMBER(hec2hrp_state::hector_color_b_w) } -/****************************************************************************** - Cassette Handling -******************************************************************************/ - -static cassette_image_device *cassette_device_image(running_machine &machine) -{ - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - - /******************************************************************************** Port Handling ********************************************************************************/ diff --git a/src/mess/machine/lviv.c b/src/mess/machine/lviv.c index 15dff21e5a4..478be330915 100644 --- a/src/mess/machine/lviv.c +++ b/src/mess/machine/lviv.c @@ -66,7 +66,7 @@ READ8_MEMBER(lviv_state::lviv_ppi_0_portb_r) READ8_MEMBER(lviv_state::lviv_ppi_0_portc_r) { UINT8 data = m_ppi_port_outputs[0][2] & 0x0f; - if (machine().device<cassette_image_device>(CASSETTE_TAG)->input() > 0.038) + if (m_cassette->input() > 0.038) data |= 0x10; if (m_ppi_port_outputs[0][0] & ioport("JOY")->read()) data |= 0x80; @@ -89,7 +89,7 @@ WRITE8_MEMBER(lviv_state::lviv_ppi_0_portc_w)/* tape in/out, video memory on/off m_ppi_port_outputs[0][2] = data; if (m_ppi_port_outputs[0][1]&0x80) speaker_level_w(m_speaker, data&0x01); - machine().device<cassette_image_device>(CASSETTE_TAG)->output((data & 0x01) ? -1.0 : 1.0); + m_cassette->output((data & 0x01) ? -1.0 : 1.0); lviv_update_memory(machine()); } diff --git a/src/mess/machine/mbee.c b/src/mess/machine/mbee.c index bc0d224f542..e94dfbcd9f5 100644 --- a/src/mess/machine/mbee.c +++ b/src/mess/machine/mbee.c @@ -42,7 +42,7 @@ WRITE8_MEMBER( mbee_state::pio_port_b_w ) d1 cass out and (on 256tc) keyboard irq d0 cass in */ - m_cass->output((data & 0x02) ? -1.0 : +1.0); + m_cassette->output((data & 0x02) ? -1.0 : +1.0); speaker_level_w(m_speaker, BIT(data, 6)); }; @@ -51,7 +51,7 @@ READ8_MEMBER( mbee_state::pio_port_b_r ) { UINT8 data = 0; - if (m_cass->input() > 0.03) data |= 1; + if (m_cassette->input() > 0.03) data |= 1; data |= m_clock_pulse; data |= m_mbee256_key_available; diff --git a/src/mess/machine/microtan.c b/src/mess/machine/microtan.c index 270df945820..18e719118f7 100644 --- a/src/mess/machine/microtan.c +++ b/src/mess/machine/microtan.c @@ -153,11 +153,6 @@ static void microtan_set_irq_line(running_machine &machine) state->m_maincpu->set_input_line(0, state->m_via_0_irq_line | state->m_via_1_irq_line | state->m_kbd_irq_line); } -static cassette_image_device *cassette_device_image(running_machine &machine) -{ - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - /************************************************************** * VIA callback functions for VIA #0 **************************************************************/ @@ -212,7 +207,7 @@ WRITE8_MEMBER(microtan_state::via_0_out_b) { LOG(("microtan_via_0_out_b %02X\n", data)); /* bit #7 is the cassette output signal */ - cassette_device_image(machine())->output(data & 0x80 ? +1.0 : -1.0); + m_cassette->output(data & 0x80 ? +1.0 : -1.0); } WRITE8_MEMBER(microtan_state::via_0_out_ca2) @@ -333,7 +328,7 @@ const via6522_interface microtan_via6522_1 = TIMER_CALLBACK_MEMBER(microtan_state::microtan_read_cassette) { - double level = (cassette_device_image(machine()))->input(); + double level = m_cassette->input(); via6522_device *via_0 = machine().device<via6522_device>("via6522_0"); LOG(("microtan_read_cassette: %g\n", level)); diff --git a/src/mess/machine/msx.c b/src/mess/machine/msx.c index a7e769fef1f..2e15237d838 100644 --- a/src/mess/machine/msx.c +++ b/src/mess/machine/msx.c @@ -546,7 +546,7 @@ READ8_MEMBER(msx_state::msx_psg_port_a_r) { UINT8 data; - data = (m_cass->input() > 0.0038 ? 0x80 : 0); + data = (m_cassette->input() > 0.0038 ? 0x80 : 0); if ( (m_psg_b ^ m_io_dsw->read() ) & 0x40) { @@ -770,11 +770,11 @@ WRITE8_MEMBER( msx_state::msx_ppi_port_c_w ) /* cassette motor on/off */ if ( BIT(m_port_c_old ^ data, 4) ) - m_cass->change_state(BIT(data, 4) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); + m_cassette->change_state(BIT(data, 4) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR); /* cassette signal write */ if ( BIT(m_port_c_old ^ data, 5) ) - m_cass->output(BIT(data, 5) ? -1.0 : 1.0); + m_cassette->output(BIT(data, 5) ? -1.0 : 1.0); m_port_c_old = data; } diff --git a/src/mess/machine/mtx.c b/src/mess/machine/mtx.c index 8a67ae69503..f06b98242e9 100644 --- a/src/mess/machine/mtx.c +++ b/src/mess/machine/mtx.c @@ -135,7 +135,7 @@ WRITE8_MEMBER(mtx_state::mtx_sound_latch_w) WRITE8_MEMBER(mtx_state::mtx_cst_w) { - dynamic_cast<cassette_image_device *>(machine().device(CASSETTE_TAG))->output( BIT(data, 0) ? -1 : 1); + m_cassette->output( BIT(data, 0) ? -1 : 1); } /*------------------------------------------------- @@ -372,7 +372,6 @@ MACHINE_START_MEMBER(mtx_state,mtx512) /* find devices */ m_z80ctc = machine().device<z80ctc_device>(Z80CTC_TAG); m_z80dart = machine().device(Z80DART_TAG); - m_cassette = machine().device<cassette_image_device>(CASSETTE_TAG); /* configure memory */ membank("bank1")->set_base(memregion("user1")->base()); diff --git a/src/mess/machine/mz700.c b/src/mess/machine/mz700.c index 5ff14e8f781..65b2a86c7e9 100644 --- a/src/mess/machine/mz700.c +++ b/src/mess/machine/mz700.c @@ -450,14 +450,13 @@ READ8_MEMBER(mz_state::pio_port_b_r) */ READ8_MEMBER(mz_state::pio_port_c_r) { - cassette_image_device *cas = machine().device<cassette_image_device>(CASSETTE_TAG); UINT8 data = 0; /* note: this is actually connected to Q output of the motor-control flip-flop (see below) */ - if ((cas->get_state() & CASSETTE_MASK_UISTATE) != CASSETTE_STOPPED) + if ((m_cassette->get_state() & CASSETTE_MASK_UISTATE) != CASSETTE_STOPPED) data |= 0x10; - if ((cas)->input() > 0.0038) + if ((m_cassette)->input() > 0.0038) data |= 0x20; /* set the RDATA status */ data |= m_cursor_timer << 6; @@ -493,7 +492,7 @@ WRITE8_MEMBER(mz_state::pio_port_c_w) * bit 0 out unused */ -// UINT8 state = cassette_get_state(machine().device<cassette_image_device>(CASSETTE_TAG)); +// UINT8 state = cassette_get_state(m_cassette); // UINT8 action = ((~pio_port_c_output & 8) & (data & 8)); /* detect low-to-high transition */ /* The motor control circuit consists of a resistor, capacitor, invertor, nand-gate, and D flip-flop. @@ -506,7 +505,7 @@ WRITE8_MEMBER(mz_state::pio_port_c_w) If you load from the command-line or the software-picker, type in L <enter> immediately. */ #if 0 - machine().device<cassette_image_device>(CASSETTE_TAG)->change_state( + m_cassette->change_state( ((data & 0x08) && mz700_motor_on) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MOTOR_DISABLED); @@ -514,7 +513,7 @@ WRITE8_MEMBER(mz_state::pio_port_c_w) LOG(2,"mz700_pio_port_c_w",("%02X\n", data),machine()); - machine().device<cassette_image_device>(CASSETTE_TAG)->output((data & 0x02) ? +1.0 : -1.0); + m_cassette->output((data & 0x02) ? +1.0 : -1.0); } diff --git a/src/mess/machine/mz80.c b/src/mess/machine/mz80.c index 6b9a2090950..2a243c2e683 100644 --- a/src/mess/machine/mz80.c +++ b/src/mess/machine/mz80.c @@ -38,9 +38,9 @@ READ8_MEMBER( mz80_state::mz80k_8255_portc_r ) UINT8 val = 0; val |= m_mz80k_vertical ? 0x80 : 0x00; val |= ((m_mz80k_cursor_cnt & 0x3f) > 31) ? 0x40 : 0x00; - val |= (m_cass->get_state() & CASSETTE_MASK_UISTATE)== CASSETTE_PLAY ? 0x10 : 0x00; + val |= (m_cassette->get_state() & CASSETTE_MASK_UISTATE)== CASSETTE_PLAY ? 0x10 : 0x00; - if (m_cass->input() > 0.00) + if (m_cassette->input() > 0.00) val |= 0x20; return val; diff --git a/src/mess/machine/nascom1.c b/src/mess/machine/nascom1.c index d82efa9e50a..d13d64088d5 100644 --- a/src/mess/machine/nascom1.c +++ b/src/mess/machine/nascom1.c @@ -110,7 +110,7 @@ READ8_MEMBER(nascom1_state::nascom1_port_00_r) WRITE8_MEMBER(nascom1_state::nascom1_port_00_w) { - machine().device<cassette_image_device>(CASSETTE_TAG)->change_state( + m_cassette->change_state( ( data & 0x10 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR ); if (!(data & NASCOM1_KEY_RESET)) diff --git a/src/mess/machine/orao.c b/src/mess/machine/orao.c index 7bdd8d801ff..105c9cf5986 100644 --- a/src/mess/machine/orao.c +++ b/src/mess/machine/orao.c @@ -56,7 +56,7 @@ READ8_MEMBER(orao_state::orao_io_r) case 0x03FF : return ioport("LINE19")->read(); /* Tape */ case 0x07FF : - level = (machine().device<cassette_image_device>(CASSETTE_TAG)->input()); + level = m_cassette->input(); if (level < 0) { return 0x00; } diff --git a/src/mess/machine/pc.c b/src/mess/machine/pc.c index 36c467272fd..a89a8a4bb3d 100644 --- a/src/mess/machine/pc.c +++ b/src/mess/machine/pc.c @@ -983,7 +983,7 @@ READ8_MEMBER(pc_state::mc1502_ppi_portc_r) { int timer2_output = pit8253_get_output( machine().device("pit8253"), 2 ); int data = 0xff; - double tap_val = (machine().device<cassette_image_device>(CASSETTE_TAG)->input()); + double tap_val = m_cassette->input(); // 0x80 -- serial RxD // 0x40 -- CASS IN, also loops back T2OUT (gated by CASWR) @@ -1046,7 +1046,7 @@ WRITE8_MEMBER(pc_state::pcjr_ppi_portb_w) pit8253_gate2_w(machine().device("pit8253"), BIT(data, 0)); pc_speaker_set_spkrdata( machine(), data & 0x02 ); - machine().device<cassette_image_device>(CASSETTE_TAG)->change_state(( data & 0x08 ) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); + m_cassette->change_state(( data & 0x08 ) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); } @@ -1086,7 +1086,7 @@ READ8_MEMBER(pc_state::pcjr_ppi_portc_r) data = ( data & ~0x01 ) | ( pcjr_keyb.latch ? 0x01: 0x00 ); if ( ! ( m_ppi_portb & 0x08 ) ) { - double tap_val = (machine().device<cassette_image_device>(CASSETTE_TAG)->input()); + double tap_val = m_cassette->input(); if ( tap_val < 0 ) { diff --git a/src/mess/machine/primo.c b/src/mess/machine/primo.c index f702b348308..74d3e6c6f41 100644 --- a/src/mess/machine/primo.c +++ b/src/mess/machine/primo.c @@ -90,7 +90,7 @@ READ8_MEMBER(primo_state::primo_be_1_r) // bit 3 - I3 (external bus) // bit 2 - cassette - data |= ((machine().device<cassette_image_device>(CASSETTE_TAG))->input() < 0.1) ? 0x04 : 0x00; + data |= (m_cassette->input() < 0.1) ? 0x04 : 0x00; // bit 1 - reset button data |= (ioport("RESET")->read()) ? 0x02 : 0x00; @@ -155,14 +155,14 @@ WRITE8_MEMBER(primo_state::primo_ki_1_w) switch (data & 0x03) { case 0: - machine().device<cassette_image_device>(CASSETTE_TAG)->output(-1.0); + m_cassette->output(-1.0); break; case 1: case 2: - machine().device<cassette_image_device>(CASSETTE_TAG)->output(0.0); + m_cassette->output(0.0); break; case 3: - machine().device<cassette_image_device>(CASSETTE_TAG)->output(1.0); + m_cassette->output(1.0); break; } } diff --git a/src/mess/machine/sorcerer.c b/src/mess/machine/sorcerer.c index aa1bf2993d0..60e1ab6a767 100644 --- a/src/mess/machine/sorcerer.c +++ b/src/mess/machine/sorcerer.c @@ -29,18 +29,6 @@ TIMER_CALLBACK_MEMBER(sorcerer_state::sorcerer_serial_tc) /* timer to read cassette waveforms */ - -static cassette_image_device *cassette_device_image(running_machine &machine) -{ - sorcerer_state *state = machine.driver_data<sorcerer_state>(); - if (state->m_fe & 0x20) - return machine.device<cassette_image_device>(CASSETTE2_TAG); - else - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - - - TIMER_CALLBACK_MEMBER(sorcerer_state::sorcerer_cassette_tc) { UINT8 cass_ws = 0; @@ -53,7 +41,7 @@ TIMER_CALLBACK_MEMBER(sorcerer_state::sorcerer_cassette_tc) m_cass_data.input.length++; - cass_ws = ((cassette_device_image(machine()))->input() > +0.02) ? 1 : 0; + cass_ws = ((((m_fe & 0x20) ? m_cassette2 : m_cassette1))->input() > +0.02) ? 1 : 0; if (cass_ws != m_cass_data.input.level) { @@ -82,7 +70,7 @@ TIMER_CALLBACK_MEMBER(sorcerer_state::sorcerer_cassette_tc) if (!((m_cass_data.output.bit == 0) && (m_cass_data.output.length & 4))) { m_cass_data.output.level ^= 1; // toggle output this, except on 2nd half of low bit - cassette_device_image(machine())->output(m_cass_data.output.level ? -1.0 : +1.0); + ((m_fe & 0x20) ? m_cassette2 : m_cassette1)->output(m_cass_data.output.level ? -1.0 : +1.0); } } return; @@ -91,7 +79,7 @@ TIMER_CALLBACK_MEMBER(sorcerer_state::sorcerer_cassette_tc) /* loading a tape */ m_cass_data.input.length++; - cass_ws = ((cassette_device_image(machine()))->input() > +0.02) ? 1 : 0; + cass_ws = ((((m_fe & 0x20) ? m_cassette2 : m_cassette1))->input() > +0.02) ? 1 : 0; if (cass_ws != m_cass_data.input.level || m_cass_data.input.length == 10) { @@ -122,7 +110,7 @@ TIMER_CALLBACK_MEMBER(sorcerer_state::sorcerer_cassette_tc) if (!((m_cass_data.output.bit == 0) && (m_cass_data.output.length & 8))) { m_cass_data.output.level ^= 1; // toggle output this, except on 2nd half of low bit - cassette_device_image(machine())->output(m_cass_data.output.level ? -1.0 : +1.0); + ((m_fe & 0x20) ? m_cassette2 : m_cassette1)->output(m_cass_data.output.level ? -1.0 : +1.0); } } return; @@ -176,18 +164,18 @@ WRITE8_MEMBER(sorcerer_state::sorcerer_fe_w) bool sound = BIT(m_iop_config->read(), 3); - m_cass1->change_state( + m_cassette1->change_state( (BIT(data,4) & sound) ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED, CASSETTE_MASK_SPEAKER); - m_cass2->change_state( + m_cassette2->change_state( (BIT(data,5) & sound) ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED, CASSETTE_MASK_SPEAKER); /* cassette 1 motor */ - m_cass1->change_state( + m_cassette1->change_state( (BIT(data,4)) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); /* cassette 2 motor */ - m_cass2->change_state( + m_cassette2->change_state( (BIT(data,5)) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); if (data & 0x30) diff --git a/src/mess/machine/special.c b/src/mess/machine/special.c index 5e564fc3b81..821cccb95e6 100644 --- a/src/mess/machine/special.c +++ b/src/mess/machine/special.c @@ -56,7 +56,7 @@ READ8_MEMBER( special_state::specialist_8255_portb_r ) dat = (dat << 2) ^0xff; if (m_io_line12->read()!=0xff) dat ^= 0x02; - level = m_cass->input(); + level = m_cassette->input(); if (level >= 0) dat ^= 0x01; @@ -86,7 +86,7 @@ WRITE8_MEMBER( special_state::specialist_8255_portc_w ) { m_specialist_8255_portc = data; - m_cass->output(BIT(data, 7) ? 1 : -1); + m_cassette->output(BIT(data, 7) ? 1 : -1); m_dac->write_unsigned8(BIT(data, 5)); //beeper } diff --git a/src/mess/machine/super80.c b/src/mess/machine/super80.c index 8f25391b1f4..73c5649985b 100644 --- a/src/mess/machine/super80.c +++ b/src/mess/machine/super80.c @@ -53,15 +53,15 @@ static void super80_cassette_motor( running_machine &machine, UINT8 data ) { super80_state *state = machine.driver_data<super80_state>(); if (data) - state->m_cass->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); + state->m_cassette->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); else - state->m_cass->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); + state->m_cassette->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); /* does user want to hear the sound? */ if BIT(state->m_io_config->read(), 3) - state->m_cass->change_state(CASSETTE_SPEAKER_ENABLED,CASSETTE_MASK_SPEAKER); + state->m_cassette->change_state(CASSETTE_SPEAKER_ENABLED,CASSETTE_MASK_SPEAKER); else - state->m_cass->change_state(CASSETTE_SPEAKER_MUTED,CASSETTE_MASK_SPEAKER); + state->m_cassette->change_state(CASSETTE_SPEAKER_MUTED,CASSETTE_MASK_SPEAKER); } /********************************************* TIMER ************************************************/ @@ -90,7 +90,7 @@ TIMER_CALLBACK_MEMBER(super80_state::super80_timer) UINT8 cass_ws=0; m_cass_data[1]++; - cass_ws = ((m_cass)->input() > +0.03) ? 4 : 0; + cass_ws = ((m_cassette)->input() > +0.03) ? 4 : 0; if (cass_ws != m_cass_data[0]) { @@ -185,7 +185,7 @@ WRITE8_MEMBER( super80_state::super80_f0_w ) m_shared = data; speaker_level_w(m_speaker, BIT(data, 3)); /* bit 3 - speaker */ if (BIT(bits, 1)) super80_cassette_motor(machine(), BIT(data, 1)); /* bit 1 - cassette motor */ - m_cass->output( BIT(data, 0) ? -1.0 : +1.0); /* bit 0 - cass out */ + m_cassette->output( BIT(data, 0) ? -1.0 : +1.0); /* bit 0 - cass out */ m_last_data = data; } @@ -196,7 +196,7 @@ WRITE8_MEMBER( super80_state::super80r_f0_w ) m_shared = data | 0x14; speaker_level_w(m_speaker, BIT(data, 3)); /* bit 3 - speaker */ if (BIT(bits, 1)) super80_cassette_motor(machine(), BIT(data, 1)); /* bit 1 - cassette motor */ - m_cass->output( BIT(data, 0) ? -1.0 : +1.0); /* bit 0 - cass out */ + m_cassette->output( BIT(data, 0) ? -1.0 : +1.0); /* bit 0 - cass out */ m_last_data = data; } diff --git a/src/mess/machine/trs80.c b/src/mess/machine/trs80.c index 5d14d2dcfdd..623a79a88ec 100644 --- a/src/mess/machine/trs80.c +++ b/src/mess/machine/trs80.c @@ -27,7 +27,7 @@ TIMER_CALLBACK_MEMBER(trs80_state::cassette_data_callback) /* This does all baud rates. 250 baud (trs80), and 500 baud (all others) set bit 7 of "cassette_data". 1500 baud (trs80m3, trs80m4) is interrupt-driven and uses bit 0 of "cassette_data" */ - double new_val = (m_cass->input()); + double new_val = (m_cassette->input()); /* Check for HI-LO transition */ if ( m_old_cassette_val > -0.2 && new_val < -0.2 ) @@ -483,7 +483,7 @@ WRITE8_MEMBER( trs80_state::trs80m4_ec_w ) m_mode = (m_mode & 0xde) | ((data & 4) ? 1 : 0) | ((data & 8) ? 0x20 : 0); - m_cass->change_state(( data & 2 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR ); + m_cassette->change_state(( data & 2 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR ); m_port_ec = data & 0x7e; } @@ -594,8 +594,8 @@ WRITE8_MEMBER( trs80_state::trs80_ff_w ) static const double levels[4] = { 0.0, -1.0, 0.0, 1.0 }; - m_cass->change_state(( data & 4 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR ); - m_cass->output(levels[data & 3]); + m_cassette->change_state(( data & 4 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR ); + m_cassette->output(levels[data & 3]); m_cassette_data &= ~0x80; m_mode = (m_mode & 0xfe) | ((data & 8) >> 3); @@ -611,7 +611,7 @@ WRITE8_MEMBER( trs80_state::trs80m4_ff_w ) d1, d0 Cassette output */ static const double levels[4] = { 0.0, -1.0, 0.0, 1.0 }; - m_cass->output(levels[data & 3]); + m_cassette->output(levels[data & 3]); m_cassette_data &= ~0x80; } diff --git a/src/mess/machine/ut88.c b/src/mess/machine/ut88.c index dcd2a623fa4..33fe96d9b94 100644 --- a/src/mess/machine/ut88.c +++ b/src/mess/machine/ut88.c @@ -96,13 +96,13 @@ WRITE8_MEMBER( ut88_state::ut88_keyboard_w ) WRITE8_MEMBER( ut88_state::ut88_sound_w ) { m_dac->write_unsigned8(data); //beeper - m_cass->output(BIT(data, 0) ? 1 : -1); + m_cassette->output(BIT(data, 0) ? 1 : -1); } READ8_MEMBER( ut88_state::ut88_tape_r ) { - double level = m_cass->input(); + double level = m_cassette->input(); return (level < 0) ? 0 : 0xff; } diff --git a/src/mess/machine/vector06.c b/src/mess/machine/vector06.c index 2ac6b26ea3a..597fac60848 100644 --- a/src/mess/machine/vector06.c +++ b/src/mess/machine/vector06.c @@ -28,7 +28,7 @@ READ8_MEMBER( vector06_state::vector06_8255_portc_r ) { UINT8 ret = ioport("LINE8")->read(); - if (m_cass->input() > 0) + if (m_cassette->input() > 0) ret |= 0x10; return ret; diff --git a/src/mess/machine/vtech2.c b/src/mess/machine/vtech2.c index c5532718c7f..45d9248c97e 100644 --- a/src/mess/machine/vtech2.c +++ b/src/mess/machine/vtech2.c @@ -174,11 +174,6 @@ WRITE8_MEMBER(vtech2_state::laser_bank_select_w) } } -static cassette_image_device *vtech2_cassette_image(running_machine &machine) -{ - return machine.device<cassette_image_device>(CASSETTE_TAG); -} - /************************************************* * memory mapped I/O read * bit function @@ -253,7 +248,7 @@ int vtech2_state::mra_bank(int bank, int offs) } /* what's bit 7 good for? tape input maybe? */ - level = (vtech2_cassette_image(machine()))->input() * 65536.0; + level = m_cassette->input() * 65536.0; if( level < m_level_old - 511 ) m_cassette_bit = 0x00; if( level > m_level_old + 511 ) |