Previous 199869 Revisions Next

r36185 Monday 2nd March, 2015 at 16:53:20 UTC by hap
removed PIC16 mcu fake io memory map
[src/emu/cpu/pic16c5x]pic16c5x.c pic16c5x.h
[src/mame/drivers]bingor.c blackt96.c drgnmst.c kickgoal.c megaphx.c midzeus.c playmark.c
[src/mame/includes]drgnmst.h midzeus.h playmark.h

trunk/src/emu/cpu/pic16c5x/pic16c5x.c
r244696r244697
110110      , ( ( program_width == 9 ) ? ADDRESS_MAP_NAME(pic16c5x_rom_9) : ( ( program_width == 10 ) ? ADDRESS_MAP_NAME(pic16c5x_rom_10) : ADDRESS_MAP_NAME(pic16c5x_rom_11) )))
111111   , m_data_config("data", ENDIANNESS_LITTLE, 8, data_width, 0
112112      , ( ( data_width == 5 ) ? ADDRESS_MAP_NAME(pic16c5x_ram_5) : ADDRESS_MAP_NAME(pic16c5x_ram_7) ) )
113   , m_io_config("io", ENDIANNESS_LITTLE, 8, 5, 0)
114113   , m_reset_vector((program_width == 9) ? 0x1ff : ((program_width == 10) ? 0x3ff : 0x7ff))
115114   , m_picmodel(picmodel)
115   , m_temp_config(0)
116116   , m_picRAMmask((data_width == 5) ? 0x1f : 0x7f)
117   , m_read_a(*this)
118   , m_read_b(*this)
119   , m_read_c(*this)
120   , m_write_a(*this)
121   , m_write_b(*this)
122   , m_write_c(*this)
123   , m_read_t0(*this)
117124{
118125}
119126
r244696r244697
161168#define PIC16C5x_RDOP(A)         (m_direct->read_decrypted_word((A)<<1))
162169#define PIC16C5x_RAM_RDMEM(A)    ((UINT8)m_data->read_byte(A))
163170#define PIC16C5x_RAM_WRMEM(A,V)  (m_data->write_byte(A,V))
164#define PIC16C5x_In(Port)        ((UINT8)m_io->read_byte((Port)))
165#define PIC16C5x_Out(Port,Value) (m_io->write_byte((Port),Value))
166/************  Read the state of the T0 Clock input signal  ************/
167#define PIC16C5x_T0_In           (m_io->read_byte(PIC16C5x_T0))
168171
169172#define M_RDRAM(A)      (((A) < 8) ? m_internalram[A] : PIC16C5x_RAM_RDMEM(A))
170173#define M_WRTRAM(A,V)   do { if ((A) < 8) m_internalram[A] = (V); else PIC16C5x_RAM_WRMEM(A,V); } while (0)
171174#define M_RDOP(A)       PIC16C5x_RDOP(A)
172#define P_IN(A)         PIC16C5x_In(A)
173#define P_OUT(A,V)      PIC16C5x_Out(A,V)
174#define S_T0_IN         PIC16C5x_T0_In
175175#define ADDR_MASK       0x7ff
176176
177177
r244696r244697
332332               break;
333333      case 04:    data = (FSR | (UINT8)(~m_picRAMmask));
334334               break;
335      case 05:    data = P_IN(0);
335      case 05:    data = m_read_a(PIC16C5x_PORTA, 0xff);
336336               data &= m_TRISA;
337337               data |= ((UINT8)(~m_TRISA) & PORTA);
338338               data &= 0x0f;       /* 4-bit port (only lower 4 bits used) */
339339               break;
340      case 06:    data = P_IN(1);
340      case 06:    data = m_read_b(PIC16C5x_PORTB, 0xff);
341341               data &= m_TRISB;
342342               data |= ((UINT8)(~m_TRISB) & PORTB);
343343               break;
344344      case 07:    if ((m_picmodel == 0x16C55) || (m_picmodel == 0x16C57)) {
345                  data = P_IN(2);
345                  data = m_read_c(PIC16C5x_PORTC, 0xff);
346346                  data &= m_TRISC;
347347                  data |= ((UINT8)(~m_TRISC) & PORTC);
348348               }
r244696r244697
384384      case 04:    FSR = (data | (UINT8)(~m_picRAMmask));
385385               break;
386386      case 05:    data &= 0x0f;       /* 4-bit port (only lower 4 bits used) */
387               P_OUT(0,data & (UINT8)(~m_TRISA)); PORTA = data;
387               m_write_a(PIC16C5x_PORTA, data & (UINT8)(~m_TRISA), 0xff);
388               PORTA = data;
388389               break;
389      case 06:    P_OUT(1,data & (UINT8)(~m_TRISB)); PORTB = data;
390      case 06:    m_write_b(PIC16C5x_PORTB, data & (UINT8)(~m_TRISB), 0xff);
391               PORTB = data;
390392               break;
391393      case 07:    if ((m_picmodel == 0x16C55) || (m_picmodel == 0x16C57)) {
392                  P_OUT(2,data & (UINT8)(~m_TRISC));
394                  m_write_c(PIC16C5x_PORTC, data & (UINT8)(~m_TRISC), 0xff);
393395                  PORTC = data;
394396               }
395397               else {      /* PIC16C54, PIC16C56, PIC16C58 */
r244696r244697
665667   switch(m_opcode.b.l & 0x7)
666668   {
667669      case 05:    if   (m_TRISA == m_W) break;
668               else { m_TRISA = m_W | 0xf0; P_OUT(0,PORTA & (UINT8)(~m_TRISA) & 0x0f); break; }
670               else { m_TRISA = m_W | 0xf0; m_write_a(PIC16C5x_PORTA, PORTA & (UINT8)(~m_TRISA) & 0x0f, 0xff); break; }
669671      case 06:    if   (m_TRISB == m_W) break;
670               else { m_TRISB = m_W; P_OUT(1,PORTB & (UINT8)(~m_TRISB)); break; }
672               else { m_TRISB = m_W; m_write_b(PIC16C5x_PORTB, PORTB & (UINT8)(~m_TRISB), 0xff); break; }
671673      case 07:    if ((m_picmodel == 0x16C55) || (m_picmodel == 0x16C57)) {
672674                  if   (m_TRISC == m_W) break;
673                  else { m_TRISC = m_W; P_OUT(2,PORTC & (UINT8)(~m_TRISC)); break; }
675                  else { m_TRISC = m_W; m_write_c(PIC16C5x_PORTC, PORTC & (UINT8)(~m_TRISC), 0xff); break; }
674676               }
675677               else {
676678                  illegal(); break;
r244696r244697
783785 *  Inits CPU emulation
784786 ****************************************************************************/
785787
788enum
789{
790   PIC16C5x_PC=1, PIC16C5x_STK0, PIC16C5x_STK1, PIC16C5x_FSR,
791   PIC16C5x_W,    PIC16C5x_ALU,  PIC16C5x_STR,  PIC16C5x_OPT,
792   PIC16C5x_TMR0, PIC16C5x_PRTA, PIC16C5x_PRTB, PIC16C5x_PRTC,
793   PIC16C5x_WDT,  PIC16C5x_TRSA, PIC16C5x_TRSB, PIC16C5x_TRSC,
794   PIC16C5x_PSCL
795};
796
786797void pic16c5x_device::device_start()
787798{
788799   m_program = &space(AS_PROGRAM);
789800   m_direct = &m_program->direct();
790801   m_data = &space(AS_DATA);
791   m_io = &space(AS_IO);
802   
803   m_read_a.resolve_safe(0);
804   m_read_b.resolve_safe(0);
805   m_read_c.resolve_safe(0);
806   m_write_a.resolve_safe();
807   m_write_b.resolve_safe();
808   m_write_c.resolve_safe();
809   m_read_t0.resolve_safe(0);
792810
793811   /* ensure the internal ram pointers are set before get_info is called */
794812   update_internalram_ptr();
r244696r244697
955973   pic16c5x_reset_regs();
956974}
957975
958void pic16c5x_device::pic16c5x_set_config(int data)
976void pic16c5x_device::pic16c5x_set_config(UINT16 data)
959977{
960978   logerror("Writing %04x to the PIC16C5x config register\n",data);
961   m_temp_config = (data & 0xfff);
979   m_temp_config = data;
962980}
963981
964982
r244696r244697
10711089         }
10721090
10731091         if (T0CS) {                     /* Count mode */
1074            T0_in = S_T0_IN;
1075            if (T0_in) T0_in = 1;
1092            T0_in = m_read_t0() ? 1 : 0;
10761093            if (T0SE) {                 /* Count falling edge T0 input */
10771094               if (FALLING_EDGE_T0) {
10781095                  pic16c5x_update_timer(1);
trunk/src/emu/cpu/pic16c5x/pic16c5x.h
r244696r244697
1515#define __PIC16C5X_H__
1616
1717
18
19
20/**************************************************************************
21 *  Internal Clock divisor
22 *
23 *  External Clock is divided internally by 4 for the instruction cycle
24 *  times. (Each instruction cycle passes through 4 machine states). This
25 *  is handled by the cpu execution engine.
26 */
27
18// i/o ports
2819enum
2920{
30   PIC16C5x_PC=1, PIC16C5x_STK0, PIC16C5x_STK1, PIC16C5x_FSR,
31   PIC16C5x_W,    PIC16C5x_ALU,  PIC16C5x_STR,  PIC16C5x_OPT,
32   PIC16C5x_TMR0, PIC16C5x_PRTA, PIC16C5x_PRTB, PIC16C5x_PRTC,
33   PIC16C5x_WDT,  PIC16C5x_TRSA, PIC16C5x_TRSB, PIC16C5x_TRSC,
34   PIC16C5x_PSCL
21   PIC16C5x_PORTA = 0,
22   PIC16C5x_PORTB,
23   PIC16C5x_PORTC
3524};
3625
37#define PIC16C5x_T0     0x10
26// port a, 4 bits, 2-way
27#define MCFG_PIC16C5x_READ_A_CB(_devcb) \
28   pic16c5x_device::set_read_a_callback(*device, DEVCB_##_devcb);
29#define MCFG_PIC16C5x_WRITE_A_CB(_devcb) \
30   pic16c5x_device::set_write_a_callback(*device, DEVCB_##_devcb);
3831
32// port b, 8 bits, 2-way
33#define MCFG_PIC16C5x_READ_B_CB(_devcb) \
34   pic16c5x_device::set_read_b_callback(*device, DEVCB_##_devcb);
35#define MCFG_PIC16C5x_WRITE_B_CB(_devcb) \
36   pic16c5x_device::set_write_b_callback(*device, DEVCB_##_devcb);
3937
38// port c, 8 bits, 2-way
39#define MCFG_PIC16C5x_READ_C_CB(_devcb) \
40   pic16c5x_device::set_read_c_callback(*device, DEVCB_##_devcb);
41#define MCFG_PIC16C5x_WRITE_C_CB(_devcb) \
42   pic16c5x_device::set_write_c_callback(*device, DEVCB_##_devcb);
43
44// T0 pin (readline)
45#define MCFG_PIC16C5x_T0_CB(_devcb) \
46   pic16c5x_device::set_t0_callback(*device, DEVCB_##_devcb);
47
48// CONFIG register
49#define MCFG_PIC16C5x_SET_CONFIG(_data) \
50   pic16c5x_device::set_config_static(*device, _data);
51
52
53
4054extern const device_type PIC16C54;
4155extern const device_type PIC16C55;
4256extern const device_type PIC16C56;
r244696r244697
5064   // construction/destruction
5165   pic16c5x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, int program_width, int data_width, int picmodel);
5266
67   // static configuration helpers
68   template<class _Object> static devcb_base &set_read_a_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_a.set_callback(object); }
69   template<class _Object> static devcb_base &set_read_b_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_b.set_callback(object); }
70   template<class _Object> static devcb_base &set_read_c_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_c.set_callback(object); }
71
72   template<class _Object> static devcb_base &set_write_a_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_a.set_callback(object); }
73   template<class _Object> static devcb_base &set_write_b_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_b.set_callback(object); }
74   template<class _Object> static devcb_base &set_write_c_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_write_c.set_callback(object); }
75
76   template<class _Object> static devcb_base &set_t0_callback(device_t &device, _Object object) { return downcast<pic16c5x_device &>(device).m_read_t0.set_callback(object); }
77
5378   /****************************************************************************
5479    *  Function to configure the CONFIG register. This is actually hard-wired
5580    *  during ROM programming, so should be called in the driver INIT, with
5681    *  the value if known (available in HEX dumps of the ROM).
5782    */
58   void pic16c5x_set_config(int data);
83   void pic16c5x_set_config(UINT16 data);
84   
85   // or with a macro
86   static void set_config_static(device_t &device, UINT16 data) { downcast<pic16c5x_device &>(device).m_temp_config = data; }
5987
6088protected:
6189   // device-level overrides
r244696r244697
6391   virtual void device_reset();
6492
6593   // device_execute_interface overrides
94   /**************************************************************************
95    *  Internal Clock divisor
96    *
97    *  External Clock is divided internally by 4 for the instruction cycle
98    *  times. (Each instruction cycle passes through 4 machine states). This
99    *  is handled by the cpu execution engine.
100    */
66101   virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 4 - 1) / 4; }
67102   virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 4); }
68103   virtual UINT32 execute_min_cycles() const { return 1; }
r244696r244697
74109   // device_memory_interface overrides
75110   virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const
76111   {
77      return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ) );
112      return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL );
78113   }
79114
80115   // device_state_interface overrides
r244696r244697
90125private:
91126   address_space_config m_program_config;
92127   address_space_config m_data_config;
93   address_space_config m_io_config;
94128
95129   /******************** CPU Internal Registers *******************/
96130   UINT16  m_PC;
r244696r244697
121155   address_space *m_program;
122156   direct_read_data *m_direct;
123157   address_space *m_data;
124   address_space *m_io;
158   
159   // i/o handlers
160   devcb_read8 m_read_a;
161   devcb_read8 m_read_b;
162   devcb_read8 m_read_c;
163   devcb_write8 m_write_a;
164   devcb_write8 m_write_b;
165   devcb_write8 m_write_c;
166   devcb_read_line m_read_t0;
125167
126168   // For debugger
127169   int m_debugger_temp;
trunk/src/mame/drivers/bingor.c
r244696r244697
453453      m_palette(*this, "palette")  { }
454454
455455   required_shared_ptr<UINT16> m_blit_ram;
456   DECLARE_READ16_MEMBER(test_r);
457   DECLARE_READ8_MEMBER(test8_r);
458456   virtual void video_start();
459457   UINT32 screen_update_bingor(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
460458   INTERRUPT_GEN_MEMBER(vblank_irq);
r244696r244697
509507   return 0;
510508}
511509
512#if 0
513READ16_MEMBER(bingor_state::test_r)
514{
515   return machine().rand();
516}
517#endif
518510
519511static ADDRESS_MAP_START( bingor_map, AS_PROGRAM, 16, bingor_state )
520512   AM_RANGE(0x00000, 0x0ffff) AM_RAM
r244696r244697
525517ADDRESS_MAP_END
526518
527519static ADDRESS_MAP_START( bingor_io, AS_IO, 16, bingor_state )
528//  AM_RANGE(0x0000, 0x00ff) AM_READ(test_r )
529520   AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
530521   AM_RANGE(0x0102, 0x0103) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
531//  AM_RANGE(0x0200, 0x0201) AM_READ(test_r )
532522ADDRESS_MAP_END
533523
534READ8_MEMBER(bingor_state::test8_r)
535{
536   return machine().rand();
537}
538524
539static ADDRESS_MAP_START( pic_io_map, AS_IO, 8, bingor_state )
540   AM_RANGE(0x00, 0x00) AM_WRITENOP
541   AM_RANGE(0x02, 0x02) AM_READ(test8_r)
542   AM_RANGE(0x10, 0x10) AM_READNOP
543ADDRESS_MAP_END
544
545525static INPUT_PORTS_START( bingor )
546526   PORT_START("IN0")
547527   PORT_DIPNAME( 0x0001, 0x0001, "IN0" )
r244696r244697
631611   MCFG_CPU_PERIODIC_INT_DRIVER(bingor_state, unk_irq,  30)
632612
633613   MCFG_CPU_ADD("pic", PIC16C57, 12000000) //?? Mhz
634   MCFG_CPU_IO_MAP(pic_io_map)
635614
636
637615   MCFG_GFXDECODE_ADD("gfxdecode", "palette", bingor)
638616   //MCFG_NVRAM_ADD_0FILL("nvram")
639617
trunk/src/mame/drivers/blackt96.c
r244696r244697
117117   required_shared_ptr<UINT16> m_spriteram7;
118118   DECLARE_WRITE16_MEMBER(blackt96_c0000_w);
119119   DECLARE_WRITE16_MEMBER(blackt96_80000_w);
120   DECLARE_READ8_MEMBER(PIC16C5X_T0_clk_r);
120   DECLARE_READ_LINE_MEMBER(PIC16C5X_T0_clk_r);
121121   DECLARE_WRITE8_MEMBER(blackt96_soundio_port00_w);
122122   DECLARE_READ8_MEMBER(blackt96_soundio_port01_r);
123123   DECLARE_WRITE8_MEMBER(blackt96_soundio_port01_w);
r244696r244697
560560GFXDECODE_END
561561
562562
563READ8_MEMBER(blackt96_state::PIC16C5X_T0_clk_r)
563READ_LINE_MEMBER(blackt96_state::PIC16C5X_T0_clk_r)
564564{
565565   return 0;
566566}
r244696r244697
587587{
588588}
589589
590static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, blackt96_state )
591   AM_RANGE(0x00, 0x00) AM_WRITE(blackt96_soundio_port00_w )
592   AM_RANGE(0x01, 0x01) AM_READWRITE(blackt96_soundio_port01_r, blackt96_soundio_port01_w )
593   AM_RANGE(0x02, 0x02) AM_READWRITE(blackt96_soundio_port02_r, blackt96_soundio_port02_w )
594   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
595ADDRESS_MAP_END
596590
597591
598
599592static MACHINE_CONFIG_START( blackt96, blackt96_state )
600593   MCFG_CPU_ADD("maincpu", M68000, 18000000 /2)
601594   MCFG_CPU_PROGRAM_MAP(blackt96_map)
602595   MCFG_CPU_VBLANK_INT_DRIVER("screen", blackt96_state,  irq1_line_hold)
603596
604597   MCFG_CPU_ADD("audiocpu", PIC16C57, 8000000) /* ? */
605   MCFG_CPU_IO_MAP(sound_io_map)
598   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(blackt96_state, blackt96_soundio_port00_w))
599   MCFG_PIC16C5x_READ_B_CB(READ8(blackt96_state, blackt96_soundio_port01_r))
600   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(blackt96_state, blackt96_soundio_port01_w))
601   MCFG_PIC16C5x_READ_C_CB(READ8(blackt96_state, blackt96_soundio_port02_r))
602   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(blackt96_state, blackt96_soundio_port02_w))
603   MCFG_PIC16C5x_T0_CB(READLINE(blackt96_state, PIC16C5X_T0_clk_r))
606604
607605   MCFG_GFXDECODE_ADD("gfxdecode", "palette", blackt96)
608606
trunk/src/mame/drivers/drgnmst.c
r244696r244697
174174}
175175
176176
177READ8_MEMBER(drgnmst_state::PIC16C5X_T0_clk_r)
177READ_LINE_MEMBER(drgnmst_state::PIC16C5X_T0_clk_r)
178178{
179179   return 0;
180180}
r244696r244697
207207ADDRESS_MAP_END
208208
209209
210
211/***************************** PIC16C55 Memory Map **************************/
212
213   /* $000 - 1FF  PIC16C55 Internal Program ROM. Note: code is 12bits wide */
214   /* $000 - 01F  PIC16C55 Internal Data RAM */
215
216static ADDRESS_MAP_START( drgnmst_sound_io_map, AS_IO, 8, drgnmst_state )
217   AM_RANGE(0x00, 0x00) AM_READWRITE(pic16c5x_port0_r, drgnmst_pcm_banksel_w)  /* 4 bit port */
218   AM_RANGE(0x01, 0x01) AM_READWRITE(drgnmst_snd_command_r, drgnmst_oki_w)
219   AM_RANGE(0x02, 0x02) AM_READWRITE(drgnmst_snd_flag_r, drgnmst_snd_control_w)
220   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
221ADDRESS_MAP_END
222
223
224
225210static INPUT_PORTS_START( drgnmst )
226211   PORT_START("P1_P2")
227212   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
r244696r244697
396381   MCFG_CPU_VBLANK_INT_DRIVER("screen", drgnmst_state,  irq2_line_hold)
397382
398383   MCFG_CPU_ADD("audiocpu", PIC16C55, 32000000/8)  /* Confirmed */
399   /* Program and Data Maps are internal to the MCU */
400   MCFG_CPU_IO_MAP(drgnmst_sound_io_map)
384   MCFG_PIC16C5x_READ_A_CB(READ8(drgnmst_state, pic16c5x_port0_r))
385   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(drgnmst_state, drgnmst_pcm_banksel_w))
386   MCFG_PIC16C5x_READ_B_CB(READ8(drgnmst_state, drgnmst_snd_command_r))
387   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(drgnmst_state, drgnmst_oki_w))
388   MCFG_PIC16C5x_READ_C_CB(READ8(drgnmst_state, drgnmst_snd_flag_r))
389   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(drgnmst_state, drgnmst_snd_control_w))
390   MCFG_PIC16C5x_T0_CB(READLINE(drgnmst_state, PIC16C5X_T0_clk_r))
401391
402
403392   MCFG_GFXDECODE_ADD("gfxdecode", "palette", drgnmst)
404393
405394   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/kickgoal.c
r244696r244697
492492   AM_RANGE(0xff0000, 0xffffff) AM_RAM
493493ADDRESS_MAP_END
494494
495/***************************** PIC16C57 Memory Map **************************/
496495
497   /* $000 - 7FF  PIC16C57 Internal Program ROM. Note: code is 12bits wide */
498   /* $000 - 07F  PIC16C57 Internal Data RAM */
499
500static ADDRESS_MAP_START( kickgoal_sound_io_map, AS_IO, 8, kickgoal_state )
501   /* Unknown without the PIC dump */
502ADDRESS_MAP_END
503
504static ADDRESS_MAP_START( actionhw_io_map, AS_IO, 8, kickgoal_state )
505   /* Unknown without the PIC dump */
506ADDRESS_MAP_END
507
508
509496/* INPUT ports ***************************************************************/
510497
511498static INPUT_PORTS_START( kickgoal )
r244696r244697
646633   MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000/4)  /* 3MHz ? */
647634   MCFG_DEVICE_DISABLE()   /* Disables since the internal rom isn't dumped */
648635   /* Program and Data Maps are internal to the MCU */
649   MCFG_CPU_IO_MAP(kickgoal_sound_io_map)
650636
651
652637   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
653638   MCFG_EEPROM_SERIAL_DATA(kickgoal_default_eeprom_type1, 128)
654639
r244696r244697
683668   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_12MHz/3)    /* verified on pcb */
684669   MCFG_DEVICE_DISABLE() /* Disables since the internal rom isn't dumped */
685670   /* Program and Data Maps are internal to the MCU */
686   MCFG_CPU_IO_MAP(actionhw_io_map)
687671
688
689672   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
690673   MCFG_EEPROM_SERIAL_DATA(kickgoal_default_eeprom_type1, 128)
691674
trunk/src/mame/drivers/megaphx.c
r244696r244697
348348}
349349
350350
351static ADDRESS_MAP_START( megaphx_pic_io_map, AS_IO, 8, megaphx_state )
352//  AM_RANGE(0x00, 0x00) AM_WRITE(playmark_oki_banking_w)
353//  AM_RANGE(0x01, 0x01) AM_READWRITE(playmark_snd_command_r, playmark_oki_w)
354//  AM_RANGE(0x02, 0x02) AM_READWRITE(playmark_snd_flag_r, playmark_snd_control_w)
355//  AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
356ADDRESS_MAP_END
357
358
359351static MACHINE_CONFIG_START( megaphx, megaphx_state )
360352
361353   MCFG_CPU_ADD("maincpu", M68000, 8000000) // ??  can't read xtal due to reflections, CPU is an 8Mhz part
r244696r244697
363355
364356   MCFG_CPU_ADD("pic", PIC16C54, 12000000)    /* 3MHz */
365357   /* Program and Data Maps are internal to the MCU */
366   MCFG_CPU_IO_MAP(megaphx_pic_io_map)
367358
368359   MCFG_INDER_AUDIO_ADD("inder_sb")
369360
trunk/src/mame/drivers/midzeus.c
r244696r244697
11141114   MCFG_MIDWAY_IOASIC_SHUFFLE_DEFAULT(1)
11151115MACHINE_CONFIG_END
11161116
1117READ8_MEMBER(midzeus_state::PIC16C5X_T0_clk_r)
1117READ_LINE_MEMBER(midzeus_state::PIC16C5X_T0_clk_r)
11181118{
11191119   return 0;
11201120}
11211121
1122static ADDRESS_MAP_START( pic_io_map, AS_IO, 8, midzeus_state )
1123   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
1124ADDRESS_MAP_END
11251122
1126
11271123static MACHINE_CONFIG_DERIVED( invasn, midzeus )
11281124   MCFG_CPU_ADD("pic", PIC16C57, 8000000)  /* ? */
1129   MCFG_CPU_IO_MAP(pic_io_map)
1125   MCFG_PIC16C5x_T0_CB(READLINE(midzeus_state, PIC16C5X_T0_clk_r))
11301126
11311127   MCFG_DEVICE_MODIFY("ioasic")
11321128   MCFG_MIDWAY_IOASIC_UPPER(468/* or 488 */)
trunk/src/mame/drivers/playmark.c
r244696r244697
272272}
273273
274274
275READ8_MEMBER(playmark_state::PIC16C5X_T0_clk_r)
275READ_LINE_MEMBER(playmark_state::PIC16C5X_T0_clk_r)
276276{
277277   return 0;
278278}
r244696r244697
425425ADDRESS_MAP_END
426426
427427
428/***************************** PIC16C57 Memory Map **************************/
429
430   /* $000 - 7FF  PIC16C57 Internal Program ROM. Note: code is 12bits wide */
431   /* $000 - 07F  PIC16C57 Internal Data RAM */
432
433static ADDRESS_MAP_START( playmark_sound_io_map, AS_IO, 8, playmark_state )
434   AM_RANGE(0x00, 0x00) AM_WRITE(playmark_oki_banking_w)
435   AM_RANGE(0x01, 0x01) AM_READWRITE(playmark_snd_command_r, playmark_oki_w)
436   AM_RANGE(0x02, 0x02) AM_READWRITE(playmark_snd_flag_r, playmark_snd_control_w)
437   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
438ADDRESS_MAP_END
439
440static ADDRESS_MAP_START( hrdtimes_sound_io_map, AS_IO, 8, playmark_state )
441   AM_RANGE(0x00, 0x00) AM_NOP     /* AM_WRITE(playmark_oki_banking_w)  Banking data output but not wired. Port 2 (Port C) is wired to the OKI banking instead */
442   AM_RANGE(0x01, 0x01) AM_READWRITE(playmark_snd_command_r, playmark_oki_w)
443   AM_RANGE(0x02, 0x02) AM_READWRITE(playmark_snd_flag_r, hrdtimes_snd_control_w)
444   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
445ADDRESS_MAP_END
446
447
448428static INPUT_PORTS_START( bigtwin )
449429   PORT_START("SYSTEM")
450430   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r244696r244697
12311211   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq2_line_hold)
12321212
12331213   MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
1234   /* Program and Data Maps are internal to the MCU */
1235   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1214   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w))
1215   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1216   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1217   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1218   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, playmark_snd_control_w))
1219   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
12361220
12371221   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
12381222   MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
r244696r244697
12671251   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq2_line_hold)
12681252
12691253   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)
1270   /* Program and Data Maps are internal to the MCU */
1271   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1254   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w))
1255   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1256   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1257   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1258   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, playmark_snd_control_w))
1259   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
12721260
12731261   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
12741262   MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
r244696r244697
13031291   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq2_line_hold)
13041292
13051293   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* 12MHz with internal 4x divisor */
1306   /* Program and Data Maps are internal to the MCU */
1307   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1294   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w))
1295   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1296   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1297   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1298   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, playmark_snd_control_w))
1299   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
13081300   MCFG_DEVICE_DISABLE()       /* Internal code is not dumped yet */
13091301
13101302   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
r244696r244697
13431335   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq2_line_hold)
13441336
13451337   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* 12MHz with internal 4x divisor */
1346   /* Program and Data Maps are internal to the MCU */
1347   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1338   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w))
1339   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1340   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1341   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1342   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, playmark_snd_control_w))
1343   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
13481344
13491345   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
13501346   MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
r244696r244697
13791375   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq6_line_hold)
13801376
13811377   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
1382   /* Program and Data Maps are internal to the MCU */
1383   MCFG_CPU_IO_MAP(hrdtimes_sound_io_map)
1378//   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
1379   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1380   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1381   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1382   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, hrdtimes_snd_control_w))
1383   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
13841384   MCFG_DEVICE_DISABLE()       /* Internal code is not dumped yet */
13851385
13861386   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
r244696r244697
14161416   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq6_line_hold) // irq 2 and 6 point to the same location on hotmind
14171417
14181418   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
1419   /* Program and Data Maps are internal to the MCU */
1420   MCFG_CPU_IO_MAP(hrdtimes_sound_io_map)
1419//   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
1420   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1421   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1422   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1423   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, hrdtimes_snd_control_w))
1424   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
14211425
14221426   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
14231427   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
r244696r244697
14581462   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq6_line_hold)
14591463
14601464   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
1461   /* Program and Data Maps are internal to the MCU */
1462   MCFG_CPU_IO_MAP(hrdtimes_sound_io_map)
1465//   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
1466   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
1467   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
1468   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
1469   MCFG_PIC16C5x_WRITE_C_CB(WRITE8(playmark_state, hrdtimes_snd_control_w))
1470   MCFG_PIC16C5x_T0_CB(READLINE(playmark_state, PIC16C5X_T0_clk_r))
14631471
14641472   MCFG_NVRAM_ADD_0FILL("nvram")
14651473
trunk/src/mame/includes/drgnmst.h
r244696r244697
5757   DECLARE_WRITE8_MEMBER(drgnmst_pcm_banksel_w);
5858   DECLARE_WRITE8_MEMBER(drgnmst_oki_w);
5959   DECLARE_WRITE8_MEMBER(drgnmst_snd_control_w);
60   DECLARE_READ8_MEMBER(PIC16C5X_T0_clk_r);
60   DECLARE_READ_LINE_MEMBER(PIC16C5X_T0_clk_r);
6161   DECLARE_WRITE16_MEMBER(drgnmst_fg_videoram_w);
6262   DECLARE_WRITE16_MEMBER(drgnmst_bg_videoram_w);
6363   DECLARE_WRITE16_MEMBER(drgnmst_md_videoram_w);
trunk/src/mame/includes/midzeus.h
r244696r244697
5353   DECLARE_WRITE32_MEMBER(analog_w);
5454   DECLARE_WRITE32_MEMBER(invasn_gun_w);
5555   DECLARE_READ32_MEMBER(invasn_gun_r);
56   DECLARE_READ8_MEMBER(PIC16C5X_T0_clk_r);
56   DECLARE_READ_LINE_MEMBER(PIC16C5X_T0_clk_r);
5757   DECLARE_READ32_MEMBER(zeus_r);
5858   DECLARE_WRITE32_MEMBER(zeus_w);
5959   DECLARE_CUSTOM_INPUT_MEMBER(custom_49way_r);
trunk/src/mame/includes/playmark.h
r244696r244697
6666   DECLARE_WRITE8_MEMBER(playmark_oki_w);
6767   DECLARE_WRITE8_MEMBER(playmark_snd_control_w);
6868   DECLARE_WRITE8_MEMBER(hrdtimes_snd_control_w);
69   DECLARE_READ8_MEMBER(PIC16C5X_T0_clk_r);
69   DECLARE_READ_LINE_MEMBER(PIC16C5X_T0_clk_r);
7070   DECLARE_WRITE16_MEMBER(wbeachvl_txvideoram_w);
7171   DECLARE_WRITE16_MEMBER(wbeachvl_fgvideoram_w);
7272   DECLARE_WRITE16_MEMBER(wbeachvl_bgvideoram_w);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team