(MESS) vtech2 (Laser350/500/700): added cassette save/load

This commit is contained in:
Robbbert 2014-03-24 10:14:14 +00:00
parent 87bd8e7e7f
commit 32e5a050b1

View File

@ -187,7 +187,7 @@ WRITE8_MEMBER(vtech2_state::laser_bank_select_w)
************************************************/ ************************************************/
int vtech2_state::mra_bank(int bank, int offs) int vtech2_state::mra_bank(int bank, int offs)
{ {
int level, data = 0xff; UINT8 data = 0x7f;
/* Laser 500/700 only: keyboard rows A through D */ /* Laser 500/700 only: keyboard rows A through D */
if( (offs & 0x00ff) == 0x00ff ) if( (offs & 0x00ff) == 0x00ff )
@ -246,16 +246,9 @@ int vtech2_state::mra_bank(int bank, int offs)
data &= ioport("ROW7")->read(); data &= ioport("ROW7")->read();
} }
/* what's bit 7 good for? tape input maybe? */ /* BIT 7 - tape input */
level = m_cassette->input() * 65536.0;
if( level < m_level_old - 511 )
m_cassette_bit = 0x00;
if( level > m_level_old + 511 )
m_cassette_bit = 0x80;
m_level_old = level;
data &= ~m_cassette_bit; data |= (m_cassette->input() > +0.02) ? 0x80 : 0;
// logerror("bank #%d keyboard_r [$%04X] $%02X\n", bank, offs, data);
return data; return data;
} }
@ -289,6 +282,7 @@ void vtech2_state::mwa_bank(int bank, int offs, int data)
m_speaker->level_w(data & 1); m_speaker->level_w(data & 1);
m_laser_latch = data; m_laser_latch = data;
} }
m_cassette->output( BIT(data, 2) ? -1.0 : +1.0);
break; break;
case 12: /* ext. ROM #1 */ case 12: /* ext. ROM #1 */
case 13: /* ext. ROM #2 */ case 13: /* ext. ROM #2 */