Previous 199869 Revisions Next

r20516 Saturday 26th January, 2013 at 21:28:00 UTC by Wilbert Pol
(MESS) mz2000.c: Tagmap cleanups (nw)
[src/mess/drivers]mz2000.c

trunk/src/mess/drivers/mz2000.c
r20515r20516
3838{
3939public:
4040   mz2000_state(const machine_config &mconfig, device_type type, const char *tag)
41      : driver_device(mconfig, type, tag),
42         m_cass(*this, CASSETTE_TAG)
43      { }
41      : driver_device(mconfig, type, tag)
42      , m_cass(*this, CASSETTE_TAG)
43      , m_maincpu(*this, "maincpu")
44      , m_mb8877a(*this, "mb8877a")
45      , m_pit8253(*this, "pit")
46      , m_beeper(*this, BEEPER_TAG)
47      , m_region_tvram(*this, "tvram")
48      , m_region_gvram(*this, "gvram")
49      , m_region_chargen(*this, "chargen")
50      , m_region_ipl(*this, "ipl")
51      , m_region_wram(*this, "wram")
52      , m_io_key0(*this, "KEY0")
53      , m_io_key1(*this, "KEY1")
54      , m_io_key2(*this, "KEY2")
55      , m_io_key3(*this, "KEY3")
56      , m_io_key4(*this, "KEY4")
57      , m_io_key5(*this, "KEY5")
58      , m_io_key6(*this, "KEY6")
59      , m_io_key7(*this, "KEY7")
60      , m_io_key8(*this, "KEY8")
61      , m_io_key9(*this, "KEY9")
62      , m_io_keya(*this, "KEYA")
63      , m_io_keyb(*this, "KEYB")
64      , m_io_keyc(*this, "KEYC")
65      , m_io_keyd(*this, "KEYD")
66      , m_io_unused(*this, "UNUSED")
67      , m_io_config(*this, "CONFIG")
68   { }
4469
4570   required_device<cassette_image_device> m_cass;
4671
r20515r20516
90115   DECLARE_WRITE8_MEMBER(mz2000_pio1_porta_w);
91116   DECLARE_READ8_MEMBER(mz2000_pio1_portb_r);
92117   DECLARE_READ8_MEMBER(mz2000_pio1_porta_r);
118
119protected:
120   required_device<cpu_device> m_maincpu;
121   required_device<device_t> m_mb8877a;
122   required_device<device_t> m_pit8253;
123   required_device<device_t> m_beeper;
124   required_memory_region m_region_tvram;
125   required_memory_region m_region_gvram;
126   required_memory_region m_region_chargen;
127   required_memory_region m_region_ipl;
128   required_memory_region m_region_wram;
129   required_ioport m_io_key0;
130   required_ioport m_io_key1;
131   required_ioport m_io_key2;
132   required_ioport m_io_key3;
133   required_ioport m_io_key4;
134   required_ioport m_io_key5;
135   required_ioport m_io_key6;
136   required_ioport m_io_key7;
137   required_ioport m_io_key8;
138   required_ioport m_io_key9;
139   required_ioport m_io_keya;
140   required_ioport m_io_keyb;
141   required_ioport m_io_keyc;
142   required_ioport m_io_keyd;
143   required_ioport m_io_unused;
144   required_ioport m_io_config;
93145};
94146
95147void mz2000_state::video_start()
r20515r20516
98150
99151UINT32 mz2000_state::screen_update_mz2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
100152{
101   UINT8 *tvram = machine().root_device().memregion("tvram")->base();
102   UINT8 *gvram = machine().root_device().memregion("gvram")->base();
103   UINT8 *gfx_data = memregion("chargen")->base();
153   UINT8 *tvram = m_region_tvram->base();
154   UINT8 *gvram = m_region_gvram->base();
155   UINT8 *gfx_data = m_region_chargen->base();
104156   int x,y,xi,yi;
105157   UINT8 x_size;
106158   UINT32 count;
r20515r20516
194246
195247READ8_MEMBER(mz2000_state::mz2000_ipl_r)
196248{
197   UINT8 *ipl = memregion("ipl")->base();
198
199   return ipl[offset];
249   return m_region_ipl->base()[offset];
200250}
201251
202252READ8_MEMBER(mz2000_state::mz2000_wram_r)
203253{
204   UINT8 *wram = memregion("wram")->base();
205
206   return wram[offset];
254   return m_region_wram->base()[offset];
207255}
208256
209257WRITE8_MEMBER(mz2000_state::mz2000_wram_w)
210258{
211   UINT8 *wram = memregion("wram")->base();
212
213   wram[offset] = data;
259   m_region_wram->base()[offset] = data;
214260}
215261
216262READ8_MEMBER(mz2000_state::mz2000_tvram_r)
217263{
218   UINT8 *tvram = memregion("tvram")->base();
219
220   return tvram[offset];
264   return m_region_tvram->base()[offset];
221265}
222266
223267WRITE8_MEMBER(mz2000_state::mz2000_tvram_w)
224268{
225   UINT8 *tvram = memregion("tvram")->base();
226
227   tvram[offset] = data;
269   m_region_tvram->base()[offset] = data;
228270}
229271
230272READ8_MEMBER(mz2000_state::mz2000_gvram_r)
231273{
232   UINT8 *gvram = memregion("gvram")->base();
233
234   return gvram[offset+m_gvram_bank*0x4000];
274   return m_region_gvram->base()[offset+m_gvram_bank*0x4000];
235275}
236276
237277WRITE8_MEMBER(mz2000_state::mz2000_gvram_w)
238278{
239   UINT8 *gvram = memregion("gvram")->base();
240
241   gvram[offset+m_gvram_bank*0x4000] = data;
279   m_region_gvram->base()[offset+m_gvram_bank*0x4000] = data;
242280}
243281
244282
r20515r20516
301339
302340READ8_MEMBER(mz2000_state::mz2000_wd17xx_r)
303341{
304   device_t *device = machine().device("mb8877a");
305
306342   if(m_has_fdc)
307      return wd17xx_r(device, space, offset) ^ 0xff;
343      return wd17xx_r(m_mb8877a, space, offset) ^ 0xff;
308344
309345   return 0xff;
310346}
311347
312348WRITE8_MEMBER(mz2000_state::mz2000_wd17xx_w)
313349{
314   device_t *device = machine().device("mb8877a");
315
316350   if(m_has_fdc)
317      wd17xx_w(device, space, offset, data ^ 0xff);
351      wd17xx_w(m_mb8877a, space, offset, data ^ 0xff);
318352}
319353
320354WRITE8_MEMBER(mz2000_state::mz2000_fdc_w)
321355{
322   device_t* dev = machine().device("mb8877a");
323
324356   switch(offset+0xdc)
325357   {
326358      case 0xdc:
327         wd17xx_set_drive(dev,data & 3);
359         wd17xx_set_drive(m_mb8877a,data & 3);
328360         floppy_mon_w(floppy_get_device(machine(), data & 3), (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
329361         floppy_drive_set_ready_state(floppy_get_device(machine(), data & 3), 1,0);
330362         break;
331363      case 0xdd:
332         wd17xx_set_side(dev,(data & 1));
364         wd17xx_set_side(m_mb8877a,(data & 1));
333365         break;
334366   }
335367}
336368
337369WRITE8_MEMBER(mz2000_state::timer_w)
338370{
339   device_t *pit8253 = machine().device("pit");
340
341   pit8253_gate0_w(pit8253, 1);
342   pit8253_gate1_w(pit8253, 1);
343   pit8253_gate0_w(pit8253, 0);
344   pit8253_gate1_w(pit8253, 0);
345   pit8253_gate0_w(pit8253, 1);
346   pit8253_gate1_w(pit8253, 1);
371   pit8253_gate0_w(m_pit8253, 1);
372   pit8253_gate1_w(m_pit8253, 1);
373   pit8253_gate0_w(m_pit8253, 0);
374   pit8253_gate1_w(m_pit8253, 0);
375   pit8253_gate0_w(m_pit8253, 1);
376   pit8253_gate1_w(m_pit8253, 1);
347377}
348378
349379WRITE8_MEMBER(mz2000_state::mz2000_tvram_attr_w)
r20515r20516
525555   m_tvram_enable = 0;
526556   m_gvram_enable = 0;
527557
528   beep_set_frequency(machine().device(BEEPER_TAG),4096);
529   beep_set_state(machine().device(BEEPER_TAG),0);
558   beep_set_frequency(m_beeper,4096);
559   beep_set_state(m_beeper,0);
530560
531   m_color_mode = machine().root_device().ioport("CONFIG")->read() & 1;
532   m_has_fdc = (machine().root_device().ioport("CONFIG")->read() & 2) >> 1;
533   m_hi_mode = (machine().root_device().ioport("CONFIG")->read() & 4) >> 2;
561   m_color_mode = m_io_config->read() & 1;
562   m_has_fdc = (m_io_config->read() & 2) >> 1;
563   m_hi_mode = (m_io_config->read() & 4) >> 2;
534564
535565   {
536566      int i;
r20515r20516
699729   {
700730      m_ipl_enable = 0;
701731      /* correct? */
702      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE);
732      m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
703733   }
704734
705   beep_set_state(machine().device(BEEPER_TAG),data & 0x04);
735   beep_set_state(m_beeper,data & 0x04);
706736
707737   m_old_portc = data;
708738}
r20515r20516
729759
730760READ8_MEMBER(mz2000_state::mz2000_pio1_portb_r)
731761{
732   static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3",
733                                 "KEY4", "KEY5", "KEY6", "KEY7",
734                                 "KEY8", "KEY9", "KEYA", "KEYB",
735                                 "KEYC", "KEYD", "UNUSED", "UNUSED" };
762   ioport_port* keynames[] = { m_io_key0, m_io_key1, m_io_key2, m_io_key3,
763                        m_io_key4, m_io_key5, m_io_key6, m_io_key7,
764                        m_io_key8, m_io_key9, m_io_keya, m_io_keyb,
765                        m_io_keyc, m_io_keyd, m_io_unused, m_io_unused };
736766
737767   if(((m_key_mux & 0x10) == 0x00) || ((m_key_mux & 0x0f) == 0x0f)) //status read
738768   {
r20515r20516
740770
741771      res = 0xff;
742772      for(i=0;i<0xe;i++)
743         res &= machine().root_device().ioport(keynames[i])->read();
773         res &= keynames[i]->read();
744774
745775      return res;
746776   }
747777
748   return machine().root_device().ioport(keynames[m_key_mux & 0xf])->read();
778   return keynames[m_key_mux & 0xf]->read();
749779}
750780
751781READ8_MEMBER(mz2000_state::mz2000_pio1_porta_r)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team