Previous 199869 Revisions Next

r20818 Thursday 7th February, 2013 at 21:38:46 UTC by Wilbert Pol
(MESS) nanos.c: Reduce tagmap lookups (nw)
[src/mess/drivers]nanos.c

trunk/src/mess/drivers/nanos.c
r20817r20818
3131   m_ctc_0(*this, "z80ctc_0"),
3232   m_ctc_1(*this, "z80ctc_1"),
3333   m_fdc(*this, "upd765"),
34   m_key_t(*this, "keyboard_timer")
34   m_key_t(*this, "keyboard_timer"),
35   m_ram(*this, RAM_TAG),
36   m_region_maincpu(*this, "maincpu"),
37   m_bank1(*this, "bank1"),
38   m_bank2(*this, "bank2"),
39   m_bank3(*this, "bank3"),
40   m_line0(*this, "LINE0"),
41   m_line1(*this, "LINE1"),
42   m_line2(*this, "LINE2"),
43   m_line3(*this, "LINE3"),
44   m_line4(*this, "LINE4"),
45   m_line5(*this, "LINE5"),
46   m_line6(*this, "LINE6"),
47   m_linec(*this, "LINEC")
3548   { }
3649
3750   required_device<cpu_device> m_maincpu;
r20817r20818
4457   required_device<z80ctc_device> m_ctc_1;
4558   required_device<upd765a_device> m_fdc;
4659   required_device<timer_device> m_key_t;
60   required_device<ram_device> m_ram;
4761   const UINT8 *m_p_chargen;
4862   UINT8 m_key_command;
4963   UINT8 m_last_code;
r20817r20818
6276   DECLARE_READ8_MEMBER(nanos_port_b_r);
6377   DECLARE_WRITE8_MEMBER(nanos_port_b_w);
6478   DECLARE_FLOPPY_FORMATS( floppy_formats );
79
80protected:
81   required_memory_region m_region_maincpu;
82   required_memory_bank m_bank1;
83   required_memory_bank m_bank2;
84   required_memory_bank m_bank3;
85   required_ioport m_line0;
86   required_ioport m_line1;
87   required_ioport m_line2;
88   required_ioport m_line3;
89   required_ioport m_line4;
90   required_ioport m_line5;
91   required_ioport m_line6;
92   required_ioport m_linec;
6593};
6694
6795
r20817r20818
127155
128156WRITE_LINE_MEMBER(nanos_state::z80daisy_interrupt)
129157{
130   machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, state);
158   m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
131159}
132160
133161static const z80sio_interface sio_intf =
r20817r20818
286314         {
287315            if (ra < 8)
288316            {
289               chr = machine().device<ram_device>(RAM_TAG)->pointer()[0xf800+ x];
317               chr = m_ram->pointer()[0xf800+ x];
290318
291319               /* get pattern of pixels for that character scanline */
292320               gfx = m_p_chargen[(chr<<3) | ra ];
r20817r20818
332360{
333361   m_key_command = BIT(data,1);
334362   if (BIT(data,7)) {
335      membank("bank1")->set_base(memregion("maincpu")->base());
363      m_bank1->set_base(m_region_maincpu->base());
336364   } else {
337      membank("bank1")->set_base(machine().device<ram_device>(RAM_TAG)->pointer());
365      m_bank1->set_base(m_ram->pointer());
338366   }
339367}
340368
r20817r20818
352380
353381TIMER_DEVICE_CALLBACK_MEMBER(nanos_state::keyboard_callback)
354382{
355   static const char *const keynames[] = { "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6" };
383   ioport_port *io_ports[] = { m_line0, m_line1, m_line2, m_line3, m_line4, m_line5, m_line6 };
356384
357385   int i;
358386   UINT8 code;
359387   UINT8 key_code = 0;
360   UINT8 shift = machine().root_device().ioport("LINEC")->read() & 0x02 ? 1 : 0;
361   UINT8 ctrl =  machine().root_device().ioport("LINEC")->read() & 0x01 ? 1 : 0;
388   UINT8 shift = m_linec->read() & 0x02 ? 1 : 0;
389   UINT8 ctrl =  m_linec->read() & 0x01 ? 1 : 0;
362390   m_key_pressed = 0xff;
363391   for(i = 0; i < 7; i++)
364392   {
365      code = machine().root_device().ioport(keynames[i])->read();
393      code = io_ports[i]->read();
366394      if (code != 0)
367395      {
368396         if (i==0 && shift==0) {
r20817r20818
439467
440468void nanos_state::machine_reset()
441469{
442   address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
470   address_space &space = m_maincpu->space(AS_PROGRAM);
443471
444472   space.install_write_bank(0x0000, 0x0fff, "bank3");
445473   space.install_write_bank(0x1000, 0xffff, "bank2");
446474
447   membank("bank1")->set_base(machine().root_device().memregion("maincpu")->base());
448   membank("bank2")->set_base(machine().device<ram_device>(RAM_TAG)->pointer() + 0x1000);
449   membank("bank3")->set_base(machine().device<ram_device>(RAM_TAG)->pointer());
475   m_bank1->set_base(m_region_maincpu->base());
476   m_bank2->set_base(m_ram->pointer() + 0x1000);
477   m_bank3->set_base(m_ram->pointer());
450478
451479   machine().device<floppy_connector>("upd765:0")->get_device()->mon_w(false);
452480}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team