Previous 199869 Revisions Next

r20492 Saturday 26th January, 2013 at 15:21:29 UTC by Robbbert
(MESS) IP20 removed tags fwiw (nw)
[src/mess/drivers]ip20.c

trunk/src/mess/drivers/ip20.c
r20491r20492
4848public:
4949   ip20_state(const machine_config &mconfig, device_type type, const char *tag)
5050      : driver_device(mconfig, type, tag),
51      m_wd33c93(*this, "scsi:wd33c93"){ }
51   m_wd33c93(*this, "scsi:wd33c93"),
52   m_scc(*this, "scc"),
53   m_eeprom(*this, "eeprom")
54   { }
5255
53   required_device<wd33c93_device> m_wd33c93;
54
5556   HPC_t m_HPC;
5657   RTC_t m_RTC;
5758   DECLARE_READ32_MEMBER(hpc_r);
r20491r20492
6364   virtual void video_start();
6465   UINT32 screen_update_ip204415(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6566   TIMER_CALLBACK_MEMBER(ip20_timer);
67   required_device<wd33c93_device> m_wd33c93;
68   required_device<scc8530_t> m_scc;
69   required_device<eeprom_device> m_eeprom;
6670};
6771
6872
r20491r20492
115119
116120READ32_MEMBER(ip20_state::hpc_r)
117121{
118   scc8530_t *scc;
119122   offset <<= 2;
120123   if( offset >= 0x0e00 && offset <= 0x0e7c )
121124   {
r20491r20492
156159      return m_HPC.nMiscStatus;
157160   case 0x01bc:
158161//      verboselog(machine, 2, "HPC CPU Serial EEPROM Read\n" );
159      return ( (machine().device<eeprom_device>("eeprom")->read_bit() << 4 ) );
162      return m_eeprom->read_bit() << 4;
160163   case 0x01c4:
161164      verboselog(machine(), 2, "HPC Local IO Register 0 Mask Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask );
162165      return m_HPC.nLocalIOReg0Mask;
r20491r20492
172175   case 0x0d00:
173176      verboselog(machine(), 2, "HPC DUART0 Channel B Control Read\n" );
174177//      return 0x00000004;
175      return 0x7c; //scc->reg_r(space, 0);
178      return 0x7c; //m_scc->reg_r(space, 0);
176179   case 0x0d04:
177180      verboselog(machine(), 2, "HPC DUART0 Channel B Data Read\n" );
178181//      return 0;
179      scc = machine().device<scc8530_t>("scc");
180      return scc->reg_r(space, 2);
182      return m_scc->reg_r(space, 2);
181183   case 0x0d08:
182184      verboselog(machine(), 2, "HPC DUART0 Channel A Control Read (%08x)\n", mem_mask  );
183185//      return 0x40;
184      return 0x7c; //scc->reg_r(space, 1);
186      return 0x7c; //m_scc->reg_r(space, 1);
185187   case 0x0d0c:
186188      verboselog(machine(), 2, "HPC DUART0 Channel A Data Read\n" );
187189//      return 0;
188      scc = machine().device<scc8530_t>("scc");
189      return scc->reg_r(space, 3);
190      return m_scc->reg_r(space, 3);
190191   case 0x0d10:
191192//      verboselog(machine, 2, "HPC DUART1 Channel B Control Read\n" );
192193      return 0x00000004;
r20491r20492
230231
231232WRITE32_MEMBER(ip20_state::hpc_w)
232233{
233   scc8530_t *scc;
234   eeprom_device *eeprom;
235   eeprom = machine().device<eeprom_device>("eeprom");
236234   offset <<= 2;
237235   if( offset >= 0x0e00 && offset <= 0x0e7c )
238236   {
r20491r20492
345343      {
346344         verboselog(machine(), 2, "    CPU board LED on\n" );
347345      }
348      eeprom->write_bit((data & 0x00000008) ? 1 : 0 );
349      eeprom->set_cs_line((data & 0x00000002) ? ASSERT_LINE : CLEAR_LINE );
350      eeprom->set_clock_line((data & 0x00000004) ? CLEAR_LINE : ASSERT_LINE );
346      m_eeprom->write_bit((data & 0x00000008) ? 1 : 0 );
347      m_eeprom->set_cs_line((data & 0x00000002) ? ASSERT_LINE : CLEAR_LINE );
348      m_eeprom->set_clock_line((data & 0x00000004) ? CLEAR_LINE : ASSERT_LINE );
351349      break;
352350   case 0x01c4:
353351      verboselog(machine(), 2, "HPC Local IO Register 0 Mask Write: %08x (%08x)\n", data, mem_mask );
r20491r20492
367365      break;
368366   case 0x0d00:
369367      verboselog(machine(), 2, "HPC DUART0 Channel B Control Write: %08x (%08x)\n", data, mem_mask );
370      scc = machine().device<scc8530_t>("scc");
371      scc->reg_w(space, 0, data);
368      m_scc->reg_w(space, 0, data);
372369      break;
373370   case 0x0d04:
374371      verboselog(machine(), 2, "HPC DUART0 Channel B Data Write: %08x (%08x)\n", data, mem_mask );
375      scc = machine().device<scc8530_t>("scc");
376      scc->reg_w(space, 2, data);
372      m_scc->reg_w(space, 2, data);
377373      break;
378374   case 0x0d08:
379375      verboselog(machine(), 2, "HPC DUART0 Channel A Control Write: %08x (%08x)\n", data, mem_mask );
380      scc = machine().device<scc8530_t>("scc");
381      scc->reg_w(space, 1, data);
376      m_scc->reg_w(space, 1, data);
382377      break;
383378   case 0x0d0c:
384379      verboselog(machine(), 2, "HPC DUART0 Channel A Data Write: %08x (%08x)\n", data, mem_mask );
385      scc = machine().device<scc8530_t>("scc");
386      scc->reg_w(space, 3, data);
380      m_scc->reg_w(space, 3, data);
387381      break;
388382   case 0x0d10:
389383      if( ( data & 0x000000ff ) >= 0x00000020 )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team