Previous 199869 Revisions Next

r22564 Friday 26th April, 2013 at 18:42:24 UTC by Wilbert Pol
serproc bit 6 switches between cassette and rs423. (nw)
[src/mess/includes]bbc.h
[src/mess/machine]bbc.c

trunk/src/mess/machine/bbc.c
r22563r22564
12921292
12931293void bbc_state::MC6850_Receive_Clock(int new_clock)
12941294{
1295   m_rxd = new_clock;
1295   m_rxd_cass = new_clock;
12961296
12971297   //
12981298   // Somehow the "serial processor" generates 16 clock signals towards
r22563r22564
13171317         //this is to long to recive anything so reset the serial IC. This is a hack, this should be done as a timer in the MC6850 code.
13181318         logerror ("Cassette length %d\n",m_wav_len);
13191319         m_nr_high_tones = 0;
1320         m_dcd = 0;
1320         m_dcd_cass = 0;
13211321         m_len0=0;
13221322         m_len1=0;
13231323         m_len2=0;
r22563r22564
13391339         /* Clock a 0 onto the serial line */
13401340         logerror("Serial value 0\n");
13411341         m_nr_high_tones = 0;
1342         m_dcd = 0;
1342         m_dcd_cass = 0;
13431343         MC6850_Receive_Clock(0);
13441344         m_len0=0;
13451345         m_len1=0;
r22563r22564
13541354         m_nr_high_tones++;
13551355         if ( m_nr_high_tones > 100 )
13561356         {
1357            m_dcd = 1;
1357            m_dcd_cass = 1;
13581358         }
13591359         MC6850_Receive_Clock(1);
13601360         m_len0=0;
r22563r22564
19871987DRIVER_INIT_MEMBER(bbc_state,bbc)
19881988{
19891989   m_Master=0;
1990   m_rxd = 0;
1991   m_dcd = 0;
1992   m_txd = 0;
1993   m_cts = 1;
1990   m_rxd_cass = 0;
1991   m_rxd_rs423 = 0;
1992   m_dcd_cass = 0;
1993   m_cts_rs423 = 1;
19941994   m_nr_high_tones = 0;
19951995   m_serproc_data = 0;
19961996   m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this));
r22563r22564
19991999DRIVER_INIT_MEMBER(bbc_state,bbcm)
20002000{
20012001   m_Master=1;
2002   m_rxd = 0;
2003   m_dcd = 0;
2004   m_txd = 0;
2005   m_cts = 1;
2002   m_rxd_cass = 0;
2003   m_rxd_rs423 = 0;
2004   m_dcd_cass = 0;
2005   m_cts_rs423 = 1;
20062006   m_nr_high_tones = 0;
20072007   m_serproc_data = 0;
20082008   m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this));
trunk/src/mess/includes/bbc.h
r22563r22564
161161   int m_len3;
162162   int m_mc6850_clock;
163163   UINT8 m_serproc_data;
164   int m_dcd;
165   int m_rxd;
166   int m_txd;
167   int m_cts;
164   int m_dcd_cass;
165   int m_rxd_cass;
166   int m_rxd_rs423;
167   int m_cts_rs423;
168168   UINT32 m_nr_high_tones;
169169   emu_timer *m_tape_timer;
170170
r22563r22564
327327   DECLARE_WRITE_LINE_MEMBER(bbc_wd177x_intrq_w);
328328   DECLARE_WRITE_LINE_MEMBER(bbc_wd177x_drq_w);
329329   DECLARE_WRITE_LINE_MEMBER(bbc_vsync);
330   DECLARE_READ_LINE_MEMBER(bbc_rxd_r) { return m_rxd; }
331   DECLARE_READ_LINE_MEMBER(bbc_dcd_r) { return m_dcd; }
332   DECLARE_READ_LINE_MEMBER(bbc_cts_r) { return m_cts; }
330   DECLARE_READ_LINE_MEMBER(bbc_rxd_r) { return ( m_serproc_data & 0x40 ) ? m_rxd_rs423 : m_rxd_cass; }
331   DECLARE_READ_LINE_MEMBER(bbc_dcd_r) { return ( m_serproc_data & 0x40 ) ? 0 : m_dcd_cass; }
332   DECLARE_READ_LINE_MEMBER(bbc_cts_r) { return ( m_serproc_data & 0x40 ) ? m_cts_rs423 : 1; }
333333
334334   DECLARE_DEVICE_IMAGE_LOAD_MEMBER( bbcb_cart );
335335

Previous 199869 Revisions Next


© 1997-2024 The MAME Team