Previous 199869 Revisions Next

r20958 Monday 11th February, 2013 at 21:08:32 UTC by Wilbert Pol
taitowlf.c: Reduce tagmap lookups (nw)
[src/mame/drivers]taitowlf.c

trunk/src/mame/drivers/taitowlf.c
r20957r20958
4444{
4545public:
4646   taitowlf_state(const machine_config &mconfig, device_type type, const char *tag)
47      : driver_device(mconfig, type, tag) { }
47      : driver_device(mconfig, type, tag)
48      , m_maincpu(*this, "maincpu")
49      , m_pit8254(*this, "pit8254")
50      , m_pic8259_1(*this, "pic8259_1")
51      , m_pic8259_2(*this, "pic8259_2")
52      , m_dma8237_1(*this, "dma8237_1")
53      , m_dma8237_2(*this, "dma8237_2")
54      , m_region_user1(*this, "user1")
55      , m_region_user5(*this, "user5")
56      , m_bank1(*this, "bank1")
57   { }
4858
4959   UINT32 *m_bios_ram;
5060   UINT8 m_mxtc_config_reg[256];
r20957r20958
5363   UINT8 m_dma_offset[2][4];
5464   UINT8 m_at_pages[0x10];
5565
56   device_t    *m_pit8254;
57   device_t    *m_pic8259_1;
58   device_t    *m_pic8259_2;
59   device_t    *m_dma8237_1;
60   device_t    *m_dma8237_2;
66   required_device<cpu_device> m_maincpu;
67   required_device<device_t> m_pit8254;
68   required_device<device_t> m_pic8259_1;
69   required_device<device_t> m_pic8259_2;
70   required_device<device_t> m_dma8237_1;
71   required_device<device_t> m_dma8237_2;
72   required_memory_region m_region_user1;
73   required_memory_region m_region_user5;
74   required_memory_bank m_bank1;
6175   DECLARE_WRITE32_MEMBER(pnp_config_w);
6276   DECLARE_WRITE32_MEMBER(pnp_data_w);
6377   DECLARE_WRITE32_MEMBER(bios_ram_w);
r20957r20958
90104UINT32 taitowlf_state::screen_update_taitowlf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
91105{
92106   int x,y,count;
93   const UINT8 *blit_ram = machine().root_device().memregion("user5")->base();
107   const UINT8 *blit_ram = m_region_user5->base();
94108
95109   bitmap.fill(get_black_pen(machine()), cliprect);
96110
r20957r20958
118132
119133READ8_MEMBER(taitowlf_state::at_dma8237_2_r)
120134{
121   device_t *device = machine().device("dma8237_2");
122   return i8237_r(device, space, offset / 2);
135   return i8237_r(m_dma8237_2, space, offset / 2);
123136}
124137
125138WRITE8_MEMBER(taitowlf_state::at_dma8237_2_w)
126139{
127   device_t *device = machine().device("dma8237_2");
128   i8237_w(device, space, offset / 2, data);
140   i8237_w(m_dma8237_2, space, offset / 2, data);
129141}
130142
131143// Intel 82439TX System Controller (MXTC)
r20957r20958
149161      {
150162         if (data & 0x10)        // enable RAM access to region 0xf0000 - 0xfffff
151163         {
152            state->membank("bank1")->set_base(state->m_bios_ram);
164            state->m_bank1->set_base(state->m_bios_ram);
153165         }
154166         else                    // disable RAM access (reads go to BIOS ROM)
155167         {
156            state->membank("bank1")->set_base(busdevice->machine().root_device().memregion("user1")->base() + 0x30000);
168            state->m_bank1->set_base(state->m_region_user1->base() + 0x30000);
157169         }
158170         break;
159171      }
r20957r20958
383395
384396WRITE_LINE_MEMBER(taitowlf_state::pc_dma_hrq_changed)
385397{
386   machine().device("maincpu")->execute().set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
398   m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
387399
388400   /* Assert HLDA */
389401   i8237_hlda_w( m_dma8237_1, state );
r20957r20958
540552
541553void taitowlf_state::machine_start()
542554{
543   machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitowlf_state::irq_callback),this));
544
545   m_pit8254 = machine().device( "pit8254" );
546   m_pic8259_1 = machine().device( "pic8259_1" );
547   m_pic8259_2 = machine().device( "pic8259_2" );
548   m_dma8237_1 = machine().device( "dma8237_1" );
549   m_dma8237_2 = machine().device( "dma8237_2" );
555   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitowlf_state::irq_callback),this));
550556}
551557
552558void taitowlf_state::machine_reset()
553559{
554   machine().root_device().membank("bank1")->set_base(machine().root_device().memregion("user1")->base() + 0x30000);
560   m_bank1->set_base(m_region_user1->base() + 0x30000);
555561}
556562
557563
r20957r20958
563569
564570WRITE_LINE_MEMBER(taitowlf_state::taitowlf_pic8259_1_set_int_line)
565571{
566   machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
572   m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
567573}
568574
569575READ8_MEMBER(taitowlf_state::get_slave_ack)
r20957r20958
664670
665671static void set_gate_a20(running_machine &machine, int a20)
666672{
667   machine.device("maincpu")->execute().set_input_line(INPUT_LINE_A20, a20);
673   taitowlf_state *drvstate = machine.driver_data<taitowlf_state>();
674   drvstate->m_maincpu->set_input_line(INPUT_LINE_A20, a20);
668675}
669676
670677static void keyboard_interrupt(running_machine &machine, int state)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team