Previous 199869 Revisions Next

r26427 Tuesday 26th November, 2013 at 01:19:26 UTC by Angelo Salese
Death to m68kfmly.c/.h, hooked parallel port to TMP68301 (very preliminary)
[src/emu/machine]tmp68301.c tmp68301.h
[src/mame]mame.mak
[src/mame/drivers]csplayh5.c niyanpai.c realbrk.c seta2.c
[src/mame/includes]niyanpai.h
[src/mame/machine]m68kfmly.c m68kfmly.h

trunk/src/emu/machine/tmp68301.c
r26426r26427
1818   AM_RANGE(0x094,0x095) AM_READWRITE(imr_r,imr_w)
1919   AM_RANGE(0x098,0x099) AM_READWRITE(iisr_r,iisr_w)
2020
21   /* Serial */
21   /* Parallel Port */
22   AM_RANGE(0x10a,0x10b) AM_READWRITE(pdr_r,pdr_w)
23
24   /* Serial Port */
2225   AM_RANGE(0x18e,0x18f) AM_READWRITE(scr_r,scr_w)
2326ADDRESS_MAP_END
2427
r26426r26427
6265   m_scr &= 0xa1;
6366}
6467
68/* TODO: bit direction */
69READ16_MEMBER(tmp68301_device::pdr_r)
70{
71   return m_in_parallel_func(0);
72}
6573
74WRITE16_MEMBER(tmp68301_device::pdr_w)
75{
76   m_out_parallel_func(0,data);
77}
78
79
6680tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
6781   : device_t(mconfig, TMP68301, "TMP68301", tag, owner, clock, "tmp68301", __FILE__),
6882      device_memory_interface(mconfig, *this),
r26426r26427
7892
7993void tmp68301_device::device_config_complete()
8094{
95   // inherit a copy of the static data
96   const tmp68301_interface *intf = reinterpret_cast<const tmp68301_interface *>(static_config());
97   if (intf != NULL)
98      *static_cast<tmp68301_interface *>(this) = *intf;
99
100   // or defaults to 0 if none provided
101   else
102   {
103      memset(&m_in_parallel_cb, 0, sizeof(m_in_parallel_cb));
104      memset(&m_out_parallel_cb, 0, sizeof(m_out_parallel_cb));
105
106   }
81107}
82108
83109//-------------------------------------------------
r26426r26427
89115   int i;
90116   for (i = 0; i < 3; i++)
91117      m_tmp68301_timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tmp68301_device::timer_callback), this));
118
119   m_in_parallel_func.resolve(m_in_parallel_cb, *this);
120   m_out_parallel_func.resolve(m_out_parallel_cb, *this);
92121}
93122
94123//-------------------------------------------------
trunk/src/emu/machine/tmp68301.h
r26426r26427
11#ifndef TMP68301_H
22#define TMP68301_H
33
4//**************************************************************************
5//  INTERFACE CONFIGURATION MACROS
6//**************************************************************************
7
8/* TODO: frequency & hook it up with m68k */
9#define MCFG_TMP68301_ADD(_tag, _config) \
10   MCFG_DEVICE_ADD(_tag, TMP68301, 0) \
11   MCFG_DEVICE_CONFIG(_config)
12
13#define MCFG_TMP68301_MODIFY(_tag, _config) \
14   MCFG_DEVICE_MODIFY(_tag) \
15   MCFG_DEVICE_CONFIG(_config)
16
17
18#define TMP68301_INTERFACE(name) \
19   const tmp68301_interface (name) =
20
21
22//**************************************************************************
23//  TYPE DEFINITIONS
24//**************************************************************************
25
26// ======================> mb_vcu_interface
27
28struct tmp68301_interface
29{
30   devcb_read16         m_in_parallel_cb;
31   devcb_write16        m_out_parallel_cb;
32//    TODO: serial ports
33};
34
435class tmp68301_device : public device_t,
5                  public device_memory_interface
36                  public device_memory_interface,
37                  public tmp68301_interface
638{
739public:
840   tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
r26426r26427
2355   DECLARE_WRITE16_MEMBER(iisr_w);
2456   DECLARE_READ16_MEMBER(scr_r);
2557   DECLARE_WRITE16_MEMBER(scr_w);
58   DECLARE_READ16_MEMBER(pdr_r);
59   DECLARE_WRITE16_MEMBER(pdr_w);
2660
2761protected:
2862   // device-level overrides
r26426r26427
3165   virtual void device_reset();
3266   virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
3367
68   devcb_resolved_read16         m_in_parallel_func;
69   devcb_resolved_write16        m_out_parallel_func;
3470private:
3571   // internal state
3672   UINT16 m_regs[0x400];
r26426r26427
5692
5793extern const device_type TMP68301;
5894
59#define MCFG_TMP68301_ADD(_tag) \
60   MCFG_DEVICE_ADD(_tag, TMP68301, 0)
61
6295#endif
trunk/src/mame/includes/niyanpai.h
r26426r26427
11#include "sound/dac.h"
2#include "machine/tmp68301.h"
23#define VRAM_MAX    3
34
45class niyanpai_state : public driver_device
r26426r26427
1213   niyanpai_state(const machine_config &mconfig, device_type type, const char *tag)
1314      : driver_device(mconfig, type, tag) ,
1415      m_maincpu(*this, "maincpu"),
16      m_tmp68301(*this, "tmp68301"),
1517      m_dac1(*this, "dac1"),
1618      m_dac2(*this, "dac2") { }
1719
r26426r26427
8688   DECLARE_WRITE16_MEMBER(niyanpai_clutsel_2_w);
8789   DECLARE_CUSTOM_INPUT_MEMBER(musobana_outcoin_flag_r);
8890   DECLARE_DRIVER_INIT(niyanpai);
91   DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w);
92   UINT8 m_motor_on;
8993   virtual void machine_reset();
9094   virtual void video_start();
9195   UINT32 screen_update_niyanpai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
r26426r26427
99103   void niyanpai_gfxdraw(int vram);
100104   void niyanpai_soundbank_w(int data);
101105   required_device<cpu_device> m_maincpu;
106   required_device<tmp68301_device> m_tmp68301;
102107   required_device<dac_device> m_dac1;
103108   required_device<dac_device> m_dac2;
104109
trunk/src/mame/mame.mak
r26426r26427
13941394   $(DRIVERS)/nbmj8991.o $(VIDEO)/nbmj8991.o \
13951395   $(DRIVERS)/nbmj9195.o $(VIDEO)/nbmj9195.o \
13961396   $(DRIVERS)/nightgal.o \
1397   $(DRIVERS)/niyanpai.o $(MACHINE)/m68kfmly.o $(VIDEO)/niyanpai.o \
1397   $(DRIVERS)/niyanpai.o $(VIDEO)/niyanpai.o \
13981398   $(DRIVERS)/pastelg.o $(VIDEO)/pastelg.o \
13991399   $(DRIVERS)/seicross.o $(VIDEO)/seicross.o \
14001400   $(DRIVERS)/terracre.o $(VIDEO)/terracre.o \
trunk/src/mame/drivers/niyanpai.c
r26426r26427
2323/******************************************************************************
2424Memo:
2525
26- TMP68301 emulation is not implemented (machine/m68kfmly.c, .h does nothing).
27
2826- niyanpai's 2p start does not mean 2p simultaneous or exchanging play.
2927  Simply uses controls for 2p side.
3028
r26426r26427
3836#include "emu.h"
3937#include "cpu/z80/z80.h"
4038#include "cpu/m68000/m68000.h"
41#include "machine/m68kfmly.h"
39#include "machine/tmp68301.h"
4240#include "machine/z80ctc.h"
4341#include "includes/nb1413m3.h"
4442#include "sound/dac.h"
r26426r26427
306304   return (portdata);
307305}
308306
309CUSTOM_INPUT_MEMBER(niyanpai_state::musobana_outcoin_flag_r)
307WRITE16_MEMBER(niyanpai_state::tmp68301_parallel_port_w)
310308{
311   address_space &space = m_maincpu->space(AS_PROGRAM);
312309   // tmp68301_parallel_interface[0x05]
313310   //  bit 0   coin counter
314311   //  bit 2   motor on
315312   //  bit 3   coin lock
313   //  bit 8-9 video page select?
316314
317   if (tmp68301_parallel_interface_r(space, 0x0005, 0x00ff) & 0x0004) m_musobana_outcoin_flag ^= 1;
315   m_motor_on = data & 4;
316   coin_counter_w(machine(),0,data & 1);
317   coin_lockout_w(machine(), 0,data & 0x08);
318}
319
320CUSTOM_INPUT_MEMBER(niyanpai_state::musobana_outcoin_flag_r)
321{
322   if (m_motor_on) m_musobana_outcoin_flag ^= 1;
318323   else m_musobana_outcoin_flag = 1;
319324
320325   return m_musobana_outcoin_flag & 0x01;
r26426r26427
325330   m_musobana_inputport = data;
326331}
327332
328static ADDRESS_MAP_START( tmp68301_regs, AS_PROGRAM, 16, niyanpai_state )
329   AM_RANGE(0xfffc00, 0xfffc0f) AM_READWRITE_LEGACY(tmp68301_address_decoder_r,tmp68301_address_decoder_w)
330   AM_RANGE(0xfffc80, 0xfffc9f) AM_READWRITE_LEGACY(tmp68301_interrupt_controller_r,tmp68301_interrupt_controller_w)
331   AM_RANGE(0xfffd00, 0xfffd0f) AM_READWRITE_LEGACY(tmp68301_parallel_interface_r,tmp68301_parallel_interface_w)
332   AM_RANGE(0xfffd80, 0xfffdaf) AM_READWRITE_LEGACY(tmp68301_serial_interface_r,tmp68301_serial_interface_w)
333   AM_RANGE(0xfffe00, 0xfffe4f) AM_READWRITE_LEGACY(tmp68301_timer_r,tmp68301_timer_w)
334ADDRESS_MAP_END
335
336333static ADDRESS_MAP_START( niyanpai_map, AS_PROGRAM, 16, niyanpai_state )
337334   AM_RANGE(0x000000, 0x03ffff) AM_ROM
338335   AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram")
r26426r26427
365362   AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
366363   AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
367364
368   AM_IMPORT_FROM( tmp68301_regs )
365   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)  // TMP68301 Registers
369366ADDRESS_MAP_END
370367
371368static ADDRESS_MAP_START( musobana_map, AS_PROGRAM, 16, niyanpai_state )
r26426r26427
403400   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
404401   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
405402
406   AM_IMPORT_FROM( tmp68301_regs )
403   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)  // TMP68301 Registers
407404ADDRESS_MAP_END
408405
409406static ADDRESS_MAP_START( mhhonban_map, AS_PROGRAM, 16, niyanpai_state )
r26426r26427
443440   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
444441   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
445442
446   AM_IMPORT_FROM( tmp68301_regs )
443   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)  // TMP68301 Registers
447444ADDRESS_MAP_END
448445
449446static ADDRESS_MAP_START( zokumahj_map, AS_PROGRAM, 16, niyanpai_state )
r26426r26427
482479   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
483480   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
484481
485   AM_IMPORT_FROM( tmp68301_regs )
482   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)  // TMP68301 Registers
486483ADDRESS_MAP_END
487484
488485
r26426r26427
928925
929926INTERRUPT_GEN_MEMBER(niyanpai_state::niyanpai_interrupt)
930927{
931   device.execute().set_input_line_and_vector(1, HOLD_LINE,0x100/4);
928   m_tmp68301->external_interrupt_0();
932929}
933930
934931static const z80_daisy_config daisy_chain_sound[] =
r26426r26427
937934   { NULL }
938935};
939936
937static TMP68301_INTERFACE( tmp68301_interface )
938{
939   DEVCB_NULL,
940   DEVCB_DRIVER_MEMBER16(niyanpai_state,tmp68301_parallel_port_w)
941};
940942
941943static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
942944
r26426r26427
945947   MCFG_CPU_PROGRAM_MAP(niyanpai_map)
946948   MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state,  niyanpai_interrupt)
947949
950   MCFG_TMP68301_ADD("tmp68301",tmp68301_interface)
951
948952   MCFG_CPU_ADD("audiocpu", Z80, 8000000)                  /* TMPZ84C011, 8.00 MHz */
949953   MCFG_CPU_CONFIG(daisy_chain_sound)
950954   MCFG_CPU_PROGRAM_MAP(niyanpai_sound_map)
trunk/src/mame/drivers/realbrk.c
r26426r26427
172172   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                            // Coins
173173   AM_RANGE(0xc00004, 0xc00005) AM_RAM_READ(realbrk_dsw_r) AM_SHARE("dsw_select")  // DSW select
174174   AM_RANGE(0xff0000, 0xfffbff) AM_RAM                                         // RAM
175   AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(realbrk_flipscreen_w              )   // Hack! Parallel port data register
176175   AM_IMPORT_FROM(base_mem)
177176ADDRESS_MAP_END
178177
r26426r26427
751750   m_tmp68301->external_interrupt_1();
752751}
753752
753static TMP68301_INTERFACE( tmp68301_interface )
754{
755   DEVCB_NULL,
756   DEVCB_DRIVER_MEMBER16(realbrk_state,realbrk_flipscreen_w)
757};
758
754759static MACHINE_CONFIG_START( realbrk, realbrk_state )
755760
756761   /* basic machine hardware */
r26426r26427
758763   MCFG_CPU_PROGRAM_MAP(realbrk_mem)
759764   MCFG_CPU_VBLANK_INT_DRIVER("screen", realbrk_state,  realbrk_interrupt)
760765
761   MCFG_TMP68301_ADD("tmp68301")
766   MCFG_TMP68301_ADD("tmp68301", tmp68301_interface)
762767
763768   /* video hardware */
764769   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/seta2.c
r26426r26427
210210   AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                             // cleared
211211   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")  // Video Registers
212212   AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w)       // Samples Banks
213   AM_RANGE(0xfffd0a, 0xfffd0b) AM_READWRITE(gundamex_eeprom_r,gundamex_eeprom_w)  // parallel data register
214213   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)  // TMP68301 Registers
215214ADDRESS_MAP_END
216215
r26426r26427
442441   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")       // Sprites
443442   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
444443   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")              // Video Registers
445   AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(reelquak_leds_w )     // parallel data register (leds)
446444   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)      // TMP68301 Registers
447445ADDRESS_MAP_END
448446
r26426r26427
502500
503501   AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w)   // Sound
504502
505   AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2")             // parallel data register (DSW 2)
506503   AM_RANGE( 0xfffc00, 0xffffff ) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)    // TMP68301 Registers
507504ADDRESS_MAP_END
508505
r26426r26427
19901987   0x0000,     /* address */
19911988};
19921989
1990static TMP68301_INTERFACE( tmp68301_default_intf )
1991{
1992   DEVCB_NULL,
1993   DEVCB_NULL
1994};
1995
1996
1997static TMP68301_INTERFACE( tmp68301_gundamex_intf )
1998{
1999   DEVCB_DRIVER_MEMBER16(seta2_state,gundamex_eeprom_r),
2000   DEVCB_DRIVER_MEMBER16(seta2_state,gundamex_eeprom_w)
2001};
2002
2003static TMP68301_INTERFACE( tmp68301_reelquak_intf )
2004{
2005   DEVCB_NULL,
2006   DEVCB_DRIVER_MEMBER16(seta2_state,reelquak_leds_w)
2007};
2008
2009static TMP68301_INTERFACE( tmp68301_samshoot_intf )
2010{
2011   DEVCB_INPUT_PORT("DSW2"),
2012   DEVCB_NULL
2013};
2014
19932015static MACHINE_CONFIG_START( seta2, seta2_state )
19942016   MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3)   // !! TMP68301 !!
19952017   MCFG_CPU_PROGRAM_MAP(mj4simai_map)
19962018   MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state,  seta2_interrupt)
19972019
1998   MCFG_TMP68301_ADD("tmp68301")
2020   MCFG_TMP68301_ADD("tmp68301", tmp68301_default_intf)
19992021
2000
20012022   // video hardware
20022023   MCFG_SCREEN_ADD("screen", RASTER)
20032024   MCFG_SCREEN_REFRESH_RATE(60)
r26426r26427
20362057   MCFG_CPU_MODIFY("maincpu")
20372058   MCFG_CPU_PROGRAM_MAP(gundamex_map)
20382059
2060   MCFG_TMP68301_MODIFY("tmp68301",tmp68301_gundamex_intf)
2061
20392062   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20402063
20412064   // video hardware
r26426r26427
21022125   MCFG_CPU_MODIFY("maincpu")
21032126   MCFG_CPU_PROGRAM_MAP(reelquak_map)
21042127
2128   MCFG_TMP68301_MODIFY("tmp68301",tmp68301_reelquak_intf)
2129
21052130   MCFG_NVRAM_ADD_0FILL("nvram")
21062131   MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
21072132
r26426r26427
21182143   MCFG_CPU_PROGRAM_MAP(samshoot_map)
21192144   MCFG_CPU_PERIODIC_INT_DRIVER(seta2_state, samshoot_interrupt, 60)
21202145
2146   MCFG_TMP68301_MODIFY("tmp68301",tmp68301_samshoot_intf)
2147
21212148   MCFG_NVRAM_ADD_0FILL("nvram")
21222149
21232150   // video hardware
r26426r26427
22402267   MCFG_CPU_PROGRAM_MAP(namcostr_map)
22412268   MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state,  seta2_interrupt)
22422269
2243   MCFG_TMP68301_ADD("tmp68301")
2270   MCFG_TMP68301_ADD("tmp68301",tmp68301_reelquak_intf)
22442271
22452272
22462273   // video hardware
trunk/src/mame/drivers/csplayh5.c
r26426r26427
634634   { NULL }
635635};
636636
637static TMP68301_INTERFACE( tmp68301_interface )
638{
639   DEVCB_NULL,
640   DEVCB_NULL
641};
637642
643
638644static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
639645
640646   /* basic machine hardware */
r26426r26427
642648   MCFG_CPU_PROGRAM_MAP(csplayh5_map)
643649   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", csplayh5_state, csplayh5_irq, "screen", 0, 1)
644650
645   MCFG_TMP68301_ADD("tmp68301")
651   MCFG_TMP68301_ADD("tmp68301",tmp68301_interface)
646652
647653#if USE_H8
648654   MCFG_CPU_ADD("subcpu", H83002, 16000000)    /* unknown clock */
trunk/src/mame/machine/m68kfmly.c
r26426r26427
1/******************************************************************************
2
3    TMP68301 support (dummy) driver
4
5    Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 2000/12/23 -
6
7******************************************************************************/
8/******************************************************************************
9Memo:
10
11******************************************************************************/
12
13#include "emu.h"
14#include "m68kfmly.h"
15#include "cpu/m68000/m68000.h"
16
17
18#define VERBOSE 0
19#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
20
21
22//  TMP68301 System Memory Map
23//
24//  0xFFFC00 - 0xFFFC0F TMP68301 Address decoder
25//  0xFFFC80 - 0xFFFC9F TMP68301 Interrupt controller
26//  0xFFFD00 - 0xFFFD0F TMP68301 Parallel interface
27//  0xFFFD80 - 0xFFFDAF TMP68301 Serial interface
28//  0xFFFE00 - 0xFFFE4F TMP68301 Timer
29//
30//  Address decoder
31//          15      7
32//  0xFFFC00    AMAR0       AAMR0
33//  0xFFFC02    -       AACR0
34//  0xFFFC04    AMAR1       AAMR1
35//  0xFFFC06    -       AACR1
36//  0xFFFC08    -       AACR2
37//  0xFFFC0A    -       ATOR
38//  0xFFFC0C        ARELR
39//  0xFFFC0E    -       -
40//
41//  Interrupt controller
42//          15      7
43//  0xFFFC80    -       ICR0
44//  0xFFFC82    -       ICR1
45//  0xFFFC84    -       ICR2
46//  0xFFFC86    -       ICR3
47//  0xFFFC88    -       ICR4
48//  0xFFFC8A    -       ICR5
49//  0xFFFC8C    -       ICR6
50//  0xFFFC8E    -       ICR7
51//  0xFFFC90    -       ICR8
52//  0xFFFC92    -       ICR9
53//  0xFFFC94        IMR
54//  0xFFFC96        IPR
55//  0xFFFC98        IISR
56//  0xFFFC9A    -       IVNR
57//  0xFFFC9C    -       IEIR
58//  0xFFFC9E    -       -
59//
60//  Parallel interface
61//          15      7
62//  0xFFFD00        PDIR
63//  0xFFFD02    -       PCR
64//  0xFFFD04    -       PSR
65//  0xFFFD06    -       PCMR
66//  0xFFFD08    -       PMR
67//  0xFFFD0A        PDR
68//  0xFFFD0C    -       PPR1
69//  0xFFFD0E    -       PPR2
70//
71//  Serial interface
72//          15      7
73//  0xFFFD80    -       SMR0
74//  0xFFFD82    -       SCMR0
75//  0xFFFD84    -       SBRR0
76//  0xFFFD86    -       SSR0
77//  0xFFFD88    -       SDR0
78//  0xFFFD8A    -       -
79//  0xFFFD8C    -       SPR
80//  0xFFFD8E    -       SCR
81//  0xFFFD90    -       SMR1
82//  0xFFFD92    -       SCMR1
83//  0xFFFD94    -       SBRR1
84//  0xFFFD96    -       SSR1
85//  0xFFFD98    -       SDR1
86//  0xFFFD9A    -       -
87//  0xFFFD9C    -       -
88//  0xFFFD9E    -       -
89//  0xFFFDA0    -       SMR2
90//  0xFFFDA2    -       SCMR2
91//  0xFFFDA4    -       SBRR2
92//  0xFFFDA6    -       SSR2
93//  0xFFFDA8    -       SDR2
94//  0xFFFDAA    -       -
95//  0xFFFDAC    -       -
96//  0xFFFDAE    -       -
97//
98//  Timer
99//          15      7
100//  0xFFFE00        TCR0
101//  0xFFFE02    -       -
102//  0xFFFE04        TMCR0
103//  0xFFFE06    -       -
104//  0xFFFE08    -       -
105//  0xFFFE0A    -       -
106//  0xFFFE0C        TCTR0
107//  0xFFFE0E    -       -
108//  0xFFFE10    -       -
109//  0xFFFE12    -       -
110//  0xFFFE14    -       -
111//  0xFFFE16    -       -
112//  0xFFFE18    -       -
113//  0xFFFE1A    -       -
114//  0xFFFE1C    -       -
115//  0xFFFE1E    -       -
116//  0xFFFE20        TCR1
117//  0xFFFE22    -       -
118//  0xFFFE24        TMCR11
119//  0xFFFE26    -       -
120//  0xFFFE28        TMCR12
121//  0xFFFE2A    -       -
122//  0xFFFE2C        TCTR1
123//  0xFFFE2E    -       -
124//  0xFFFE30    -       -
125//  0xFFFE32    -       -
126//  0xFFFE34    -       -
127//  0xFFFE36    -       -
128//  0xFFFE38    -       -
129//  0xFFFE3A    -       -
130//  0xFFFE3C    -       -
131//  0xFFFE3E    -       -
132//  0xFFFE40        TCR2
133//  0xFFFE42    -       -
134//  0xFFFE44        TMCR21
135//  0xFFFE46    -       -
136//  0xFFFE48        TMCR22
137//  0xFFFE4A    -       -
138//  0xFFFE4C        TCTR2
139//  0xFFFE4E    -       -
140
141
142static UINT16 tmp68301_address_decoder[0x10];
143static UINT16 tmp68301_interrupt_controller[0x20];
144static UINT16 tmp68301_parallel_interface[0x10];
145static UINT16 tmp68301_serial_interface[0x30];
146static UINT16 tmp68301_timer[0x50];
147
148
149READ16_HANDLER( tmp68301_address_decoder_r )
150{
151   LOG(("PC %08X: TMP68301_address_decoder_r (%08X)\n", space.device().safe_pc(), (0xfffc00 + (offset * 2))));
152
153   return tmp68301_address_decoder[offset];
154}
155
156WRITE16_HANDLER( tmp68301_address_decoder_w )
157{
158   LOG(("PC %08X: TMP68301_address_decoder_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffc00 + (offset * 2)), data));
159
160   tmp68301_address_decoder[offset] = data;
161}
162
163READ16_HANDLER( tmp68301_interrupt_controller_r )
164{
165   LOG(("PC %08X: TMP68301_interrupt_controller_r (%08X)\n", space.device().safe_pc(), (0xfffc80 + (offset * 2))));
166
167   return tmp68301_interrupt_controller[offset];
168}
169
170WRITE16_HANDLER( tmp68301_interrupt_controller_w )
171{
172   LOG(("PC %08X: TMP68301_interrupt_controller_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffc80 + (offset * 2)), data));
173
174   tmp68301_interrupt_controller[offset] = data;
175}
176
177READ16_HANDLER( tmp68301_parallel_interface_r )
178{
179   LOG(("PC %08X: TMP68301_parallel_interface_r (%08X)\n", space.device().safe_pc(), (0xfffd00 + (offset * 2))));
180
181   return tmp68301_parallel_interface[offset];
182}
183
184WRITE16_HANDLER( tmp68301_parallel_interface_w )
185{
186   LOG(("PC %08X: TMP68301_parallel_interface_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffd00 + (offset * 2)), data));
187
188   tmp68301_parallel_interface[offset] = data;
189}
190
191READ16_HANDLER( tmp68301_serial_interface_r )
192{
193   LOG(("PC %08X: TMP68301_serial_interface_r (%08X)\n", space.device().safe_pc(), (0xfffd80 + (offset * 2))));
194
195   return tmp68301_serial_interface[offset];
196}
197
198WRITE16_HANDLER( tmp68301_serial_interface_w )
199{
200   LOG(("PC %08X: TMP68301_serial_interface_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffd80 + (offset * 2)), data));
201
202   tmp68301_serial_interface[offset] = data;
203}
204
205READ16_HANDLER( tmp68301_timer_r )
206{
207   LOG(("PC %08X: TMP68301_timer_r (%08X)\n", space.device().safe_pc(), (0xfffe00 + (offset * 2))));
208
209   return tmp68301_timer[offset];
210}
211
212WRITE16_HANDLER( tmp68301_timer_w )
213{
214   LOG(("PC %08X: TMP68301_timer_w (%08X = %04X)\n", space.device().safe_pc(), (0xfffe00 + (offset * 2)), data));
215
216   tmp68301_timer[offset] = data;
217}
trunk/src/mame/machine/m68kfmly.h
r26426r26427
1/******************************************************************************
2
3    TMP68301 support (dummy) driver
4
5    Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 2000/12/23 -
6
7******************************************************************************/
8
9ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_address_decoder_r );
10ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_address_decoder_w );
11ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_interrupt_controller_r );
12ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_interrupt_controller_w );
13ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_parallel_interface_r );
14ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_parallel_interface_w );
15ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_serial_interface_r );
16ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_serial_interface_w );
17ATTR_DEPRECATED DECLARE_READ16_HANDLER( tmp68301_timer_r );
18ATTR_DEPRECATED DECLARE_WRITE16_HANDLER( tmp68301_timer_w );

Previous 199869 Revisions Next


© 1997-2024 The MAME Team