Previous 199869 Revisions Next

r26537 Sunday 8th December, 2013 at 11:38:21 UTC by Osso
Partial revert of r26391 to avoid regression. (nw)
[src/emu/machine]68307.c 68307.h 68307ser.c 68307ser.h
[src/mame/drivers]bfm_sc4h.c
[src/mame/includes]bfm_sc45.h

trunk/src/emu/machine/68307.c
r26536r26537
137137   device->m_m68307_portb_w = portb_w;
138138}
139139
140void m68307_set_duart68681(m68307cpu_device* cpudev, duartn68681_device *duart68681)
140void m68307_set_duart68681(m68307cpu_device* cpudev, device_t *duart68681)
141141{
142142   if (cpudev->m68307SERIAL)
143143      cpudev->m68307SERIAL->m68307ser_set_duart68681(duart68681);
trunk/src/emu/machine/68307.h
r26536r26537
8888static const device_type M68307 = &device_creator<m68307cpu_device>;
8989
9090extern void m68307_set_port_callbacks(m68307cpu_device *device, m68307_porta_read_callback porta_r, m68307_porta_write_callback porta_w, m68307_portb_read_callback portb_r, m68307_portb_write_callback portb_w);
91extern void m68307_set_duart68681(m68307cpu_device* cpudev, duartn68681_device *duart68681);
91extern void m68307_set_duart68681(m68307cpu_device* cpudev, device_t *duart68681);
9292extern UINT16 m68307_get_cs(m68307cpu_device *device, offs_t address);
9393extern void m68307_timer0_interrupt(m68307cpu_device *cpudev);
9494extern void m68307_timer1_interrupt(m68307cpu_device *cpudev);
trunk/src/emu/machine/68307ser.c
r26536r26537
2424      // if we're piggybacking on the existing 68681 implementation...
2525      if (serial->m_duart68681)
2626      {
27         if (offset&1) return serial->m_duart68681->read(*m68k->program, offset>>1);
27         if (offset&1) return duart68681_r(serial->m_duart68681, *m68k->program, offset>>1);
2828      }
2929      else
3030      {
r26536r26537
103103      // if we're piggybacking on the existing 68681 implementation...
104104      if (serial->m_duart68681)
105105      {
106         if (offset&1) serial->m_duart68681->write(*m68k->program, offset>>1, data);
106         if (offset&1) duart68681_w(serial->m_duart68681, *m68k->program, offset>>1, data);
107107      }
108108      else
109109      {
trunk/src/emu/machine/68307ser.h
r26536r26537
11#include "cpu/m68000/m68000.h"
2#include "machine/n68681.h"
2#include "machine/68681.h"
33
44#define m68307SER_UMR1_UMR2  (0x01)
55#define m68307SER_USR_UCSR   (0x03)
r26536r26537
2424   void reset(void);
2525   UINT8 m_uivr;
2626
27   void m68307ser_set_duart68681(duartn68681_device *duart68681)
27   void m68307ser_set_duart68681(device_t *duart68681)
2828   {
2929      m_duart68681 = duart68681;
3030   }
3131
32   duartn68681_device * m_duart68681;
32   device_t * m_duart68681;
3333};
trunk/src/mame/drivers/bfm_sc4h.c
r26536r26537
610610      bfm_sc4_68307_porta_w,
611611      bfm_sc4_68307_portb_r,
612612      bfm_sc4_68307_portb_w );
613   m68307_set_duart68681(m_maincpu,machine().device<duartn68681_device>("m68307_68681"));
613   m68307_set_duart68681(m_maincpu,machine().device("m68307_68681"));
614614
615615
616616
r26536r26537
689689
690690
691691
692WRITE_LINE_MEMBER(sc4_state::m68307_duart_irq_handler)
692void m68307_duart_irq_handler(device_t *device, int state, UINT8 vector)
693693{
694   sc4_state *drvstate = device->machine().driver_data<sc4_state>();
694695   logerror("m68307_duart_irq_handler\n");
695696   if (state == ASSERT_LINE)
696697   {
697      m68307_serial_interrupt(m_maincpu, machine().device<duartn68681_device>("m68307_68681")->get_irq_vector());
698      m68307_serial_interrupt(drvstate->m_maincpu, vector);
698699   }
699700}
700701
701WRITE_LINE_MEMBER(sc4_state::m68307_duart_txa)
702void m68307_duart_tx(device_t *device, int channel, UINT8 data)
702703{
703   logerror("m68307_duart_tx %02x\n", state);
704   if (channel==0)
705    {
706      logerror("m68307_duart_tx %02x\n",data);
707   }
708   else
709   {
710      printf("(illegal channel 1) m68307_duart_tx %02x\n",data);
711   }
704712}
705713
706WRITE_LINE_MEMBER(sc4_state::m68307_duart_txb)
714UINT8 m68307_duart_input_r(device_t *device)
707715{
708   printf("(illegal channel 1) m68307_duart_tx %02x\n", state);
709}
710
711READ8_MEMBER(sc4_state::m68307_duart_input_r)
712{
713716   logerror("m68307_duart_input_r\n");
714717   return 0x00;
715718}
716719
717WRITE8_MEMBER(sc4_state::m68307_duart_output_w)
720void m68307_duart_output_w(device_t *device, UINT8 data)
718721{
719722   logerror("m68307_duart_output_w %02x\n", data);
720723}
721724
722
723
724static const duartn68681_config m68307_duart68681_config =
725static const duart68681_config m68307_duart68681_config =
725726{
726   DEVCB_DRIVER_LINE_MEMBER(sc4_state, m68307_duart_irq_handler),
727   DEVCB_DRIVER_LINE_MEMBER(sc4_state, m68307_duart_txa),
728   DEVCB_DRIVER_LINE_MEMBER(sc4_state, m68307_duart_txb),
729   DEVCB_DRIVER_MEMBER(sc4_state, m68307_duart_input_r),
730   DEVCB_DRIVER_MEMBER(sc4_state, m68307_duart_output_w)
727   m68307_duart_irq_handler,
728   m68307_duart_tx,
729   m68307_duart_input_r,
730   m68307_duart_output_w
731731};
732732
733733/* default dmd */
r26536r26537
748748   MCFG_CPU_PROGRAM_MAP(sc4_map)
749749
750750   // internal duart of the 68307... paired in machine start
751   MCFG_DUARTN68681_ADD("m68307_68681", 16000000/4, m68307_duart68681_config) // ?? Mhz
751   MCFG_DUART68681_ADD("m68307_68681", 16000000/4, m68307_duart68681_config) // ?? Mhz
752752
753753   MCFG_MACHINE_START_OVERRIDE(sc4_state, sc4 )
754754   MCFG_MACHINE_RESET_OVERRIDE(sc4_state, sc4 )
trunk/src/mame/includes/bfm_sc45.h
r26536r26537
108108   DECLARE_WRITE_LINE_MEMBER(bfm_sc4_duart_txa);
109109   DECLARE_READ8_MEMBER(bfm_sc4_duart_input_r);
110110   DECLARE_WRITE8_MEMBER(bfm_sc4_duart_output_w);
111   
112   DECLARE_WRITE_LINE_MEMBER(m68307_duart_irq_handler);
113   DECLARE_WRITE_LINE_MEMBER(m68307_duart_txa);
114   DECLARE_WRITE_LINE_MEMBER(m68307_duart_txb);
115   DECLARE_READ8_MEMBER(m68307_duart_input_r);
116   DECLARE_WRITE8_MEMBER(m68307_duart_output_w);
117111
118112   DECLARE_DRIVER_INIT(sc4);
119113   DECLARE_DRIVER_INIT(sc4mbus);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team