@@ -160,6 +160,7 @@ m68hc05_device::m68hc05_device(
160160 , m_port_irq_state(false )
161161 , m_irq_line_state(false )
162162 , m_irq_latch(0 )
163+ , m_baud(0x00 )
163164 , m_sccr1(0x00 )
164165 , m_tcmp_cb(*this )
165166 , m_tcap_state(false )
@@ -412,6 +413,16 @@ u8 m68hc05_device::timer_r(offs_t offset)
412413}
413414
414415
416+ u8 m68hc05_device::baud_r ()
417+ {
418+ return m_baud & 0x37 ;
419+ }
420+
421+ void m68hc05_device::baud_w (u8 data)
422+ {
423+ m_baud = data & 0x37 ;
424+ }
425+
415426u8 m68hc05_device::sccr1_r ()
416427{
417428 return m_sccr1 & 0xd1 ;
@@ -490,6 +501,7 @@ void m68hc05_device::device_start()
490501 save_item (NAME (m_trl_buf));
491502 save_item (NAME (m_trl_latched));
492503
504+ save_item (NAME (m_baud));
493505 save_item (NAME (m_sccr1));
494506 // save COP watchdogs
495507 save_item (NAME (m_pcop_cnt));
@@ -533,6 +545,9 @@ void m68hc05_device::device_reset()
533545 m_irq_latch = 0 ;
534546 update_port_irq ();
535547
548+ // SCI reset
549+ m_baud &= 0x07 ;
550+
536551 // timer reset
537552 m_tcr &= 0x02 ;
538553 m_tsr_seen = 0x00 ;
@@ -715,6 +730,7 @@ void m68hc05_device::add_port_state(std::array<bool, PORT_COUNT> const &ddr)
715730
716731void m68hc05_device::add_sci_state ()
717732{
733+ state_add (M68HC05_BAUD , " BAUD" , m_baud).mask (0x37 );
718734 state_add (M68HC05_SCCR1 , " SCCR1" , m_sccr1).mask (0xd1 );
719735}
720736
@@ -801,7 +817,7 @@ void m68hc05c4_device::c4_map(address_map &map)
801817 // 0x000a SPCR
802818 // 0x000b SPSR
803819 // 0x000c SPDR
804- // 0x000d BAUD
820+ map ( 0x000d , 0x000d ). rw ( FUNC (m68hc05c4_device::baud_r), FUNC (m68hc05c4_device::baud_w));
805821 map (0x000e , 0x000e ).rw (FUNC (m68hc05c4_device::sccr1_r), FUNC (m68hc05c4_device::sccr1_w));
806822 // 0x000f SCCR2
807823 // 0x0010 SCSR
@@ -869,7 +885,7 @@ void m68hc05c8_device::c8_map(address_map &map)
869885 // 0x000a SPCR
870886 // 0x000b SPSR
871887 // 0x000c SPDR
872- // 0x000d BAUD
888+ map ( 0x000d , 0x000d ). rw ( FUNC (m68hc05c8_device::baud_r), FUNC (m68hc05c8_device::baud_w));
873889 map (0x000e , 0x000e ).rw (FUNC (m68hc05c8_device::sccr1_r), FUNC (m68hc05c8_device::sccr1_w));
874890 // 0x000f SCCR2
875891 // 0x0010 SCSR
@@ -937,7 +953,7 @@ void m68hc705c4a_device::c4a_map(address_map &map)
937953 // 0x000a SPCR
938954 // 0x000b SPSR
939955 // 0x000c SPDR
940- // 0x000d BAUD
956+ map ( 0x000d , 0x000d ). rw ( FUNC (m68hc705c4a_device::baud_r), FUNC (m68hc705c4a_device::baud_w));
941957 map (0x000e , 0x000e ).rw (FUNC (m68hc705c4a_device::sccr1_r), FUNC (m68hc705c4a_device::sccr1_w));
942958 // 0x000f SCCR2
943959 // 0x0010 SCSR
@@ -1031,7 +1047,7 @@ void m68hc705c8a_device::c8a_map(address_map &map)
10311047 // 0x000a SPCR
10321048 // 0x000b SPSR
10331049 // 0x000c SPDR
1034- // 0x000d BAUD
1050+ map ( 0x000d , 0x000d ). rw ( FUNC (m68hc705c8a_device::baud_r), FUNC (m68hc705c8a_device::baud_w));
10351051 map (0x000e , 0x000e ).rw (FUNC (m68hc705c8a_device::sccr1_r), FUNC (m68hc705c8a_device::sccr1_w));
10361052 // 0x000f SCCR2
10371053 // 0x0010 SCSR
@@ -1226,7 +1242,7 @@ void m68hc05l9_device::l9_map(address_map &map)
12261242 // 0x0009-0x000a configuration
12271243 // 0x000b minute alarm
12281244 // 0x000c hour alarm
1229- // 0x000d BAUD
1245+ map ( 0x000d , 0x000d ). rw ( FUNC (m68hc05l9_device::baud_r), FUNC (m68hc05l9_device::baud_w));
12301246 map (0x000e , 0x000e ).rw (FUNC (m68hc05l9_device::sccr1_r), FUNC (m68hc05l9_device::sccr1_w));
12311247 // 0x000f SCCR2
12321248 // 0x0010 SCSR
@@ -1299,7 +1315,7 @@ void m68hc05l11_device::l11_map(address_map &map)
12991315 // 0x000a port F direction
13001316 // 0x000b minute alarm
13011317 // 0x000c hour alarm
1302- // 0x000d BAUD
1318+ map ( 0x000d , 0x000d ). rw ( FUNC (m68hc05l11_device::baud_r), FUNC (m68hc05l11_device::baud_w));
13031319 map (0x000e , 0x000e ).rw (FUNC (m68hc05l11_device::sccr1_r), FUNC (m68hc05l11_device::sccr1_w));
13041320 // 0x000f SCCR2
13051321 // 0x0010 SCSR
0 commit comments