Previous 199869 Revisions Next

r31826 Friday 29th August, 2014 at 03:17:18 UTC by hap
added mb8421 to segaybd.c pdriftl. untested, since linkcpu doesnt enable interrupts?
[src/emu/machine]mb8421.c
[src/mame/drivers]segaybd.c taitojc.c
[src/mame/includes]segaybd.h

trunk/src/emu/machine/mb8421.c
r31825r31826
44
55    Fujitsu MB8421/22/31/32-90/-90L/-90LL/-12/-12L/-12LL
66    CMOS 16K-bit (2KB) dual-port SRAM
7   
8    MB84x2 lacks interrupt pins, it's basically as simple as AM_RAM AM_SHARE("x")
9    MB843x is same as MB842x, except that it supports slave mode. It makes
10    sure there are no clashes, with the _BUSY pin.
711
812**********************************************************************/
913
trunk/src/mame/drivers/segaybd.c
r31825r31826
3030#include "cpu/z80/z80.h"
3131#include "includes/segaybd.h"
3232#include "cpu/m68000/m68000.h"
33#include "machine/mb8421.h"
3334#include "machine/segaic16.h"
3435#include "machine/nvram.h"
3536#include "sound/2151intf.h"
r31825r31826
4546
4647const UINT32 MASTER_CLOCK = 50000000;
4748const UINT32 SOUND_CLOCK = 32215900;
48const UINT32 LINK_CLOCK = XTAL_16MHz;
4949
5050// use this to fiddle with the IRQ2 timing
5151#define TWEAK_IRQ2_SCANLINE     (0)
r31825r31826
651651}
652652
653653
654READ16_MEMBER(segaybd_state::link_r)
655{
656   return rand();
657}
658
659READ16_MEMBER(segaybd_state::link2_r)
660{
661   return 0x0000;
662}
663
664WRITE16_MEMBER(segaybd_state::link2_w)
665{
666   data &= mem_mask;
667   logerror("link2_w %04x\n", data);
668}
669
670READ8_MEMBER(segaybd_state::linkram_r)
671{
672   return m_linkram[offset];
673}
674
675WRITE8_MEMBER(segaybd_state::linkram_w)
676{
677   m_linkram[offset] = data;
678}
679
680654//**************************************************************************
681655//  MAIN CPU ADDRESS MAPS
682656//**************************************************************************
r31825r31826
695669   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
696670ADDRESS_MAP_END
697671
698static ADDRESS_MAP_START( main_map_link, AS_PROGRAM, 16, segaybd_state )
699   AM_RANGE(0x190000, 0x190fff) AM_READWRITE8(linkram_r, linkram_w, 0x00ff) // ram to share with link CPU?
700   AM_RANGE(0x191000, 0x191001) AM_READ(link_r)
701   AM_RANGE(0x192000, 0x192001) AM_READWRITE(link2_r, link2_w)
702672
703   AM_IMPORT_FROM(main_map)
704ADDRESS_MAP_END
705
706673//**************************************************************************
707674//  SUB CPU ADDRESS MAPS
708675//**************************************************************************
r31825r31826
734701ADDRESS_MAP_END
735702
736703
737
738704//**************************************************************************
739705//  Z80 SOUND CPU ADDRESS MAPS
740706//**************************************************************************
r31825r31826
753719   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
754720ADDRESS_MAP_END
755721
722
756723//**************************************************************************
757//  Z80 LINK BOARD CPU ADDRESS MAPS
724//  LINK BOARD
758725//**************************************************************************
759726
727WRITE_LINE_MEMBER(segaybd_state::mb8421_intl)
728{
729   // shared ram interrupt request from linkcpu side
730   // unused?
731}
732
733WRITE_LINE_MEMBER(segaybd_state::mb8421_intr)
734{
735   // shared ram interrupt request from maincpu side
736   m_linkcpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0xef); // RST $28
737}
738
739
740READ16_MEMBER(segaybd_state::link_r)
741{
742   return rand();
743}
744
745READ16_MEMBER(segaybd_state::link2_r)
746{
747   return 0x0000;
748}
749
750WRITE16_MEMBER(segaybd_state::link2_w)
751{
752   data &= mem_mask;
753   logerror("link2_w %04x\n", data);
754}
755
756static ADDRESS_MAP_START( main_map_link, AS_PROGRAM, 16, segaybd_state )
757   AM_RANGE(0x190000, 0x190fff) AM_DEVREADWRITE8("mb8421", mb8421_device, left_r, left_w, 0x00ff)
758   AM_RANGE(0x191000, 0x191001) AM_READ(link_r)
759   AM_RANGE(0x192000, 0x192001) AM_READWRITE(link2_r, link2_w)
760
761   AM_IMPORT_FROM(main_map)
762ADDRESS_MAP_END
763
764
760765static ADDRESS_MAP_START( link_map, AS_PROGRAM, 8, segaybd_state )
761766   ADDRESS_MAP_UNMAP_HIGH
762767   AM_RANGE(0x0000, 0x0fff) AM_ROM
763768   AM_RANGE(0x2000, 0x3fff) AM_RAM
764   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("linkram") // MB8421
769   AM_RANGE(0x4000, 0x47ff) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w)
765770ADDRESS_MAP_END
766771
767772READ8_MEMBER(segaybd_state::link_portc0_r)
r31825r31826
773778   ADDRESS_MAP_UNMAP_HIGH
774779   ADDRESS_MAP_GLOBAL_MASK(0xff)
775780
776//   AM_RANGE(0x40, 0x40) AM_READ_PORT("LinkDSW")
781//   AM_RANGE(0x40, 0x40) AM_READ_PORT("LinkDSW")
777782   AM_RANGE(0xc0, 0xc0) AM_READ(link_portc0_r)
778   
779783ADDRESS_MAP_END
780784
785
781786//**************************************************************************
782787//  GENERIC PORT DEFINITIONS
783788//**************************************************************************
r31825r31826
13361341   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
13371342MACHINE_CONFIG_END
13381343
1339// LINK PCB is 834-6740
1340// has 1x 8 switch dip bank, z80E CPU, ribbon connector? (to main board?), RX/TX ports, 16Mhz OSC
1344// LINK PCB is 834-6740, similar to the one for Super Monaco GP
1345// has 1x 8 switch dip bank, Z80E CPU, ribbon connector? (to main board?), RX/TX ports, 16Mhz OSC,
1346// MB8421 DPSRAM, MB89372 (UART?)
1347// irq at 0x28 is from mb8421, and irq at 0x38 probably from uart?
13411348static MACHINE_CONFIG_DERIVED( yboard_link, yboard )
1349
1350   // basic machine hardware
13421351   MCFG_CPU_MODIFY("maincpu")
13431352   MCFG_CPU_PROGRAM_MAP(main_map_link)
13441353
1345   MCFG_CPU_ADD("linkcpu", Z80, LINK_CLOCK/2 ) // 8 mhz?
1354   MCFG_CPU_ADD("linkcpu", Z80, XTAL_16MHz/2 ) // 8 mhz?
13461355   MCFG_CPU_PROGRAM_MAP(link_map)
13471356   MCFG_CPU_IO_MAP(link_portmap)
1348   // valid code at 0x28 and 0x38
1357
1358   MCFG_DEVICE_ADD("mb8421", MB8421, 0)
1359   MCFG_MB8421_INTL_HANDLER(WRITELINE(segaybd_state, mb8421_intl))
1360   MCFG_MB8421_INTR_HANDLER(WRITELINE(segaybd_state, mb8421_intr))
13491361MACHINE_CONFIG_END
13501362
13511363//**************************************************************************
trunk/src/mame/drivers/taitojc.c
r31825r31826
457457
458458WRITE_LINE_MEMBER(taitojc_state::mb8421_intl)
459459{
460   // shared ram interrupt request from dsp side
460461   m_maincpu->set_input_line(6, state ? ASSERT_LINE : CLEAR_LINE);
461462}
462463
463464WRITE_LINE_MEMBER(taitojc_state::mb8421_intr)
464465{
466   // shared ram interrupt request from maincpu side
465467   // this is hacky, acquiring the internal dsp romdump should allow it to be cleaned up
466468   if (state)
467469   {
trunk/src/mame/includes/segaybd.h
r31825r31826
2525         m_subx(*this, "subx"),
2626         m_suby(*this, "suby"),
2727         m_soundcpu(*this, "soundcpu"),
28         m_linkcpu(*this, "linkcpu"),
2829         m_bsprites(*this, "bsprites"),
2930         m_ysprites(*this, "ysprites"),
3031         m_segaic16vid(*this, "segaic16vid"),
r31825r31826
3334         m_irq2_scanline(0),
3435         m_timer_irq_state(0),
3536         m_vblank_irq_state(0),
36         m_tmp_bitmap(512, 512),
37         m_linkram(*this, "linkram")
37         m_tmp_bitmap(512, 512)
3838   {
3939      memset(m_analog_data, 0, sizeof(m_analog_data));
4040      memset(m_misc_io_data, 0, sizeof(m_misc_io_data));
r31825r31826
5353   // sound Z80 CPU read/write handlers
5454   DECLARE_READ8_MEMBER( sound_data_r );
5555
56   // linked cabinet specific handlers
57   DECLARE_WRITE_LINE_MEMBER( mb8421_intl );
58   DECLARE_WRITE_LINE_MEMBER( mb8421_intr );
59   DECLARE_READ16_MEMBER( link_r );
60   DECLARE_READ16_MEMBER( link2_r );
61   DECLARE_WRITE16_MEMBER( link2_w );
62   DECLARE_READ8_MEMBER( link_portc0_r );
63
5664   // game-specific output handlers
5765   void gforce2_output_cb2(UINT16 data);
5866   void gloc_output_cb1(UINT16 data);
r31825r31826
97105   required_device<m68000_device> m_subx;
98106   required_device<m68000_device> m_suby;
99107   required_device<z80_device> m_soundcpu;
108   optional_device<z80_device> m_linkcpu;
100109   required_device<sega_sys16b_sprite_device> m_bsprites;
101110   required_device<sega_yboard_sprite_device> m_ysprites;
102111   required_device<segaic16_video_device> m_segaic16vid;
r31825r31826
114123   UINT8           m_vblank_irq_state;
115124   UINT8           m_misc_io_data[0x10];
116125   bitmap_ind16    m_tmp_bitmap;
117
118public:
119   // linkpcb support
120   DECLARE_READ16_MEMBER(link_r);
121   DECLARE_READ16_MEMBER(link2_r);
122   DECLARE_WRITE16_MEMBER(link2_w);
123
124   DECLARE_READ8_MEMBER(linkram_r);
125   DECLARE_WRITE8_MEMBER(linkram_w);
126
127   DECLARE_READ8_MEMBER(link_portc0_r);
128
129   optional_shared_ptr<UINT8> m_linkram;
130126};

Previous 199869 Revisions Next


© 1997-2024 The MAME Team