Previous 199869 Revisions Next

r26391 Sunday 24th November, 2013 at 10:32:38 UTC by Osso
Updated bfm fruit drivers to use the n68681 device. (nw)
[src/emu/machine]68307.c 68307.h 68307ser.c 68307ser.h
[src/mame/drivers]bfm_sc4h.c bfm_sc5.c
[src/mame/includes]bfm_sc45.h bfm_sc5.h

trunk/src/mame/drivers/bfm_sc4h.c
r26390r26391
213213         if ((offset>=base) && (offset<end))
214214         {
215215            offset-=base;
216            return duart68681_r(m_duart,space,offset);
216            return m_duart->read(space,offset);
217217         }
218218         else
219219         {
r26390r26391
364364         if ((offset>=base) && (offset<end))
365365         {
366366            offset-=base;
367            duart68681_w(m_duart,space,offset,data&0x00ff);
367            m_duart->write(space,offset,data&0x00ff);
368368         }
369369         else
370370         {
r26390r26391
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("m68307_68681"));
613   m68307_set_duart68681(m_maincpu,machine().device<duartn68681_device>("m68307_68681"));
614614
615615
616616
r26390r26391
631631
632632
633633
634void bfm_sc4_duart_irq_handler(device_t *device, int state, UINT8 vector)
634WRITE_LINE_MEMBER(sc4_state::bfm_sc4_duart_irq_handler)
635635{
636   sc4_state *drvstate = device->machine().driver_data<sc4_state>();
637636   // triggers after reel tests on luckb, at the start on dnd...
638637   // not sure this is right, causes some games to crash
639638   logerror("bfm_sc4_duart_irq_handler\n");
640639   if (state == ASSERT_LINE)
641640   {
642      m68307_licr2_interrupt(drvstate->m_maincpu);
641      m68307_licr2_interrupt(m_maincpu);
643642   }
644};
643}
645644
646void bfm_sc4_duart_tx(device_t *device, int channel, UINT8 data)
645WRITE_LINE_MEMBER(sc4_state::bfm_sc4_duart_txa)
647646{
648647   logerror("bfm_sc4_duart_tx\n");
649};
648}
650649
651650
652651
653UINT8 bfm_sc4_duart_input_r(device_t *device)
652READ8_MEMBER(sc4_state::bfm_sc4_duart_input_r)
654653{
655   sc4_state *state = device->machine().driver_data<sc4_state>();
656//  printf("bfm_sc4_duart_input_r\n");
657   return state->m_optic_pattern;
654   //  printf("bfm_sc4_duart_input_r\n");
655   return m_optic_pattern;
658656}
659657
660void bfm_sc4_duart_output_w(device_t *device, UINT8 data)
658WRITE8_MEMBER(sc4_state::bfm_sc4_duart_output_w)
661659{
662660//  logerror("bfm_sc4_duart_output_w\n");
663   sc4_state *state = device->machine().driver_data<sc4_state>();
661   m_reel56_latch = data;
664662
665   state->m_reel56_latch = data;
663   if ( stepper_update(4, data&0x0f   ) ) m_reel_changed |= 0x10;
664   if ( stepper_update(5, (data>>4)&0x0f) ) m_reel_changed |= 0x20;
666665
667   if ( stepper_update(4, data&0x0f   ) ) state->m_reel_changed |= 0x10;
668   if ( stepper_update(5, (data>>4)&0x0f) ) state->m_reel_changed |= 0x20;
666   if ( stepper_optic_state(4) ) m_optic_pattern |=  0x10;
667   else                          m_optic_pattern &= ~0x10;
668   if ( stepper_optic_state(5) ) m_optic_pattern |=  0x20;
669   else                          m_optic_pattern &= ~0x20;
669670
670   if ( stepper_optic_state(4) ) state->m_optic_pattern |=  0x10;
671   else                          state->m_optic_pattern &= ~0x10;
672   if ( stepper_optic_state(5) ) state->m_optic_pattern |=  0x20;
673   else                          state->m_optic_pattern &= ~0x20;
674
675671   awp_draw_reel(4);
676672   awp_draw_reel(5);
677673}
678674
679675
680static const duart68681_config bfm_sc4_duart68681_config =
676static const duartn68681_config bfm_sc4_duart68681_config =
681677{
682   bfm_sc4_duart_irq_handler,
683   bfm_sc4_duart_tx,
684   bfm_sc4_duart_input_r,
685   bfm_sc4_duart_output_w,
678   DEVCB_DRIVER_LINE_MEMBER(sc4_state, bfm_sc4_duart_irq_handler),
679   DEVCB_DRIVER_LINE_MEMBER(sc4_state, bfm_sc4_duart_txa),
680   DEVCB_NULL,
681   DEVCB_DRIVER_MEMBER(sc4_state, bfm_sc4_duart_input_r),
682   DEVCB_DRIVER_MEMBER(sc4_state, bfm_sc4_duart_output_w),
686683   // TODO: What are the actual frequencies?
687684   XTAL_16MHz/2/8,     /* IP2/RxCB clock */
688685   XTAL_16MHz/2/16,    /* IP3/TxCA clock */
r26390r26391
692689
693690
694691
695void m68307_duart_irq_handler(device_t *device, int state, UINT8 vector)
692WRITE_LINE_MEMBER(sc4_state::m68307_duart_irq_handler)
696693{
697   sc4_state *drvstate = device->machine().driver_data<sc4_state>();
698694   logerror("m68307_duart_irq_handler\n");
699695   if (state == ASSERT_LINE)
700696   {
701      m68307_serial_interrupt(drvstate->m_maincpu, vector);
697      m68307_serial_interrupt(m_maincpu, machine().device<duartn68681_device>("m68307_68681")->get_irq_vector());
702698   }
703};
699}
704700
705void m68307_duart_tx(device_t *device, int channel, UINT8 data)
701WRITE_LINE_MEMBER(sc4_state::m68307_duart_txa)
706702{
707   if (channel==0)
708   {
709      logerror("m68307_duart_tx %02x\n",data);
710   }
711   else
712   {
713      printf("(illegal channel 1) m68307_duart_tx %02x\n",data);
714   }
715};
703   logerror("m68307_duart_tx %02x\n", state);
704}
716705
717UINT8 m68307_duart_input_r(device_t *device)
706WRITE_LINE_MEMBER(sc4_state::m68307_duart_txb)
718707{
708   printf("(illegal channel 1) m68307_duart_tx %02x\n", state);
709}
710
711READ8_MEMBER(sc4_state::m68307_duart_input_r)
712{
719713   logerror("m68307_duart_input_r\n");
720714   return 0x00;
721715}
722716
723void m68307_duart_output_w(device_t *device, UINT8 data)
717WRITE8_MEMBER(sc4_state::m68307_duart_output_w)
724718{
725719   logerror("m68307_duart_output_w %02x\n", data);
726720}
727721
728722
729723
730static const duart68681_config m68307_duart68681_config =
724static const duartn68681_config m68307_duart68681_config =
731725{
732   m68307_duart_irq_handler,
733   m68307_duart_tx,
734   m68307_duart_input_r,
735   m68307_duart_output_w
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)
736731};
737732
738733/* default dmd */
r26390r26391
753748   MCFG_CPU_PROGRAM_MAP(sc4_map)
754749
755750   // internal duart of the 68307... paired in machine start
756   MCFG_DUART68681_ADD("m68307_68681", 16000000/4, m68307_duart68681_config) // ?? Mhz
751   MCFG_DUARTN68681_ADD("m68307_68681", 16000000/4, m68307_duart68681_config) // ?? Mhz
757752
758753   MCFG_MACHINE_START_OVERRIDE(sc4_state, sc4 )
759754   MCFG_MACHINE_RESET_OVERRIDE(sc4_state, sc4 )
r26390r26391
763758
764759   MCFG_NVRAM_ADD_1FILL("nvram")
765760
766   MCFG_DUART68681_ADD("duart68681", 16000000/4, bfm_sc4_duart68681_config) // ?? Mhz
761   MCFG_DUARTN68681_ADD("duart68681", 16000000/4, bfm_sc4_duart68681_config) // ?? Mhz
767762
768763   MCFG_BFMBDA_ADD("vfd0",0)
769764
trunk/src/mame/drivers/bfm_sc5.c
r26390r26391
2727
2828   if (mem_mask &0xff00)
2929   {
30      duart68681_w(m_duart,space,offset,(data>>8)&0x00ff);
30      m_duart->write(space,offset,(data>>8)&0x00ff);
3131   }
3232   else
3333   {
r26390r26391
193193
194194
195195
196void bfm_sc5_duart_irq_handler(device_t *device, int state, UINT8 vector)
196WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_duart_irq_handler)
197197{
198198   printf("bfm_sc5_duart_irq_handler\n");
199};
199}
200200
201void bfm_sc5_duart_tx(device_t *device, int channel, UINT8 data)
201WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_duart_txa)
202202{
203203   logerror("bfm_sc5_duart_tx\n");
204};
204}
205205
206
207
208UINT8 bfm_sc5_duart_input_r(device_t *device)
206READ8_MEMBER(bfm_sc5_state::bfm_sc5_duart_input_r)
209207{
210   //bfm_sc5_state *state = device->machine().driver_data<bfm_sc5_state>();
211208   printf("bfm_sc5_duart_input_r\n");
212209   return 0xff;
213210}
214211
215void bfm_sc5_duart_output_w(device_t *device, UINT8 data)
212WRITE8_MEMBER(bfm_sc5_state::bfm_sc5_duart_output_w)
216213{
217214   logerror("bfm_sc5_duart_output_w\n");
218215}
219216
220217
221static const duart68681_config bfm_sc5_duart68681_config =
218static const duartn68681_config bfm_sc5_duart68681_config =
222219{
223   bfm_sc5_duart_irq_handler,
224   bfm_sc5_duart_tx,
225   bfm_sc5_duart_input_r,
226   bfm_sc5_duart_output_w,
220   DEVCB_DRIVER_LINE_MEMBER(bfm_sc5_state, bfm_sc5_duart_irq_handler),
221   DEVCB_DRIVER_LINE_MEMBER(bfm_sc5_state, bfm_sc5_duart_txa),
222   DEVCB_NULL,
223   DEVCB_DRIVER_MEMBER(bfm_sc5_state, bfm_sc5_duart_input_r),
224   DEVCB_DRIVER_MEMBER(bfm_sc5_state, bfm_sc5_duart_output_w),
227225   // TODO: What are the actual frequencies?
228226   16000000/2/8,     /* IP2/RxCB clock */
229227   16000000/2/16,    /* IP3/TxCA clock */
r26390r26391
240238   /* sound hardware */
241239   MCFG_SPEAKER_STANDARD_MONO("mono")
242240
243   MCFG_DUART68681_ADD("duart68681", 16000000/4, bfm_sc5_duart68681_config) // ?? Mhz
241   MCFG_DUARTN68681_ADD("duart68681", 16000000/4, bfm_sc5_duart68681_config) // ?? Mhz
244242
245243
246244   MCFG_BFMBDA_ADD("vfd0",0)
trunk/src/mame/includes/bfm_sc5.h
r26390r26391
2424   DECLARE_READ8_MEMBER( sc5_mux1_r );
2525   DECLARE_WRITE8_MEMBER( sc5_mux1_w );
2626   DECLARE_WRITE8_MEMBER( sc5_mux2_w );
27
28
27   
28   DECLARE_WRITE_LINE_MEMBER(bfm_sc5_duart_irq_handler);
29   DECLARE_WRITE_LINE_MEMBER(bfm_sc5_duart_txa);
30   DECLARE_READ8_MEMBER(bfm_sc5_duart_input_r);
31   DECLARE_WRITE8_MEMBER(bfm_sc5_duart_output_w);
2932};
trunk/src/mame/includes/bfm_sc45.h
r26390r26391
77#include "machine/bfm_bda.h"
88
99#include "sound/ymz280b.h"
10#include "machine/68681.h"
10#include "machine/n68681.h"
1111#include "machine/nvram.h"
1212#include "machine/68307.h"
1313#include "machine/68340.h"
r26390r26391
2828
2929public:
3030
31   required_device<duart68681_device> m_duart;
31   required_device<duartn68681_device> m_duart;
3232   optional_device<bfm_bda_t> m_vfd0;
3333   optional_device<bfmdm01_device> m_dm01;
3434   required_device<ymz280b_device> m_ymz;
r26390r26391
103103   DECLARE_WRITE16_MEMBER(sc4_mem_w);
104104
105105   DECLARE_READ16_MEMBER(sc4_cs1_r);
106   
107   DECLARE_WRITE_LINE_MEMBER(bfm_sc4_duart_irq_handler);
108   DECLARE_WRITE_LINE_MEMBER(bfm_sc4_duart_txa);
109   DECLARE_READ8_MEMBER(bfm_sc4_duart_input_r);
110   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);
106117
107118   DECLARE_DRIVER_INIT(sc4);
108119   DECLARE_DRIVER_INIT(sc4mbus);
trunk/src/emu/machine/68307.c
r26390r26391
137137   device->m_m68307_portb_w = portb_w;
138138}
139139
140void m68307_set_duart68681(m68307cpu_device* cpudev, device_t* duart68681)
140void m68307_set_duart68681(m68307cpu_device* cpudev, duartn68681_device *duart68681)
141141{
142142   if (cpudev->m68307SERIAL)
143143      cpudev->m68307SERIAL->m68307ser_set_duart68681(duart68681);
trunk/src/emu/machine/68307.h
r26390r26391
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, device_t* duart68681);
91extern void m68307_set_duart68681(m68307cpu_device* cpudev, duartn68681_device *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
r26390r26391
2424      // if we're piggybacking on the existing 68681 implementation...
2525      if (serial->m_duart68681)
2626      {
27         if (offset&1) return duart68681_r(serial->m_duart68681, *m68k->program, offset>>1);
27         if (offset&1) return serial->m_duart68681->read(*m68k->program, offset>>1);
2828      }
2929      else
3030      {
r26390r26391
103103      // if we're piggybacking on the existing 68681 implementation...
104104      if (serial->m_duart68681)
105105      {
106         if (offset&1) duart68681_w(serial->m_duart68681, *m68k->program, offset>>1, data);
106         if (offset&1) serial->m_duart68681->write(*m68k->program, offset>>1, data);
107107      }
108108      else
109109      {
trunk/src/emu/machine/68307ser.h
r26390r26391
11#include "cpu/m68000/m68000.h"
2#include "machine/68681.h"
2#include "machine/n68681.h"
33
44#define m68307SER_UMR1_UMR2  (0x01)
55#define m68307SER_USR_UCSR   (0x03)
r26390r26391
2424   void reset(void);
2525   UINT8 m_uivr;
2626
27   void m68307ser_set_duart68681(device_t* duart68681)
27   void m68307ser_set_duart68681(duartn68681_device *duart68681)
2828   {
2929      m_duart68681 = duart68681;
3030   }
3131
32   device_t* m_duart68681;
32   duartn68681_device * m_duart68681;
3333};

Previous 199869 Revisions Next


© 1997-2024 The MAME Team