Previous 199869 Revisions Next

r18810 Friday 2nd November, 2012 at 15:32:18 UTC by Dirk Best
px4: more cleanups, small fixes
[src/mess/drivers]px4.c

trunk/src/mess/drivers/px4.c
r18809r18810
187187   TIMER_DEVICE_CALLBACK_MEMBER(frc_tick);
188188   TIMER_DEVICE_CALLBACK_MEMBER(upd7508_1sec_callback);
189189
190   void px4_sio_txd(device_t *device,int state);
191   int px4_sio_rxd(device_t *device);
192   int px4_sio_pin(device_t *device);
193   void px4_sio_pout(device_t *device,int state);
194190   void px4_rs232c_txd(device_t *device,int state);
195191   int px4_rs232c_rxd(device_t *device);
196192   void px4_rs232c_rts(device_t *device,int state);
r18809r18810
474470void px4_state::install_rom_capsule(address_space &space, int size, const char *region)
475471{
476472   // ram, part 1
477   space.install_readwrite_bank(0x0000, 0xdfff - size, "bank1");
478   membank("bank1")->set_base(m_ram->pointer());
473   space.install_ram(0x0000, 0xdfff - size, 0, 0, m_ram->pointer());
479474
480475   // actual rom data, part 1
481   space.install_read_bank(0xe000 - size, 0xffff - size, "bank2");
482   space.nop_write(0xe000 - size, 0xffff - size);
483   membank("bank2")->set_base(memregion(region)->base() + (size - 0x2000));
476   space.install_rom(0xe000 - size, 0xffff, 0, 0, memregion(region)->base() + (size - 0x2000));
484477
485478   // rom data, part 2
486479   if (size != 0x2000)
487480   {
488      space.install_read_bank(0x10000 - size, 0xdfff, "bank3");
489      space.nop_write(0x10000 - size, 0xdfff);
490      membank("bank3")->set_base(memregion(region)->base());
481      space.install_rom(0x10000 - size, 0xdfff, 0, 0, memregion(region)->base());
491482   }
492483
493484   // ram, continued
494   space.install_readwrite_bank(0xe000, 0xffff, "bank4");
495   membank("bank4")->set_base(m_ram->pointer() + 0xe000);
485   space.install_ram(0xe000, 0xffff, 0, 0, m_ram->pointer() + 0xe000);
496486}
497487
498488// bank register
r18809r18810
505495
506496   m_bankr = data;
507497
508   /* bank switch */
498   // bank switch
509499   switch (data >> 4)
510500   {
511501   case 0x00:
512      /* system bank */
513      space_program.install_read_bank(0x0000, 0x7fff, "bank1");
514      space_program.nop_write(0x0000, 0x7fff);
515      membank("bank1")->set_base(memregion("os")->base());
516      space_program.install_readwrite_bank(0x8000, 0xffff, "bank2");
517      membank("bank2")->set_base(m_ram->pointer() + 0x8000);
502      // system bank
503      space_program.install_rom(0x0000, 0x7fff, 0, 0, memregion("os")->base());
504      space_program.install_ram(0x8000, 0xffff, 0, 0, m_ram->pointer() + 0x8000);
518505      break;
519506
520507   case 0x04:
521      /* memory */
522      space_program.install_readwrite_bank(0x0000, 0xffff, "bank1");
523      membank("bank1")->set_base(m_ram->pointer());
508      // memory
509      space_program.install_ram(0x0000, 0xffff, 0, 0, m_ram->pointer());
524510      break;
525511
526512   case 0x08: install_rom_capsule(space_program, 0x2000, "capsule1"); break;
r18809r18810
584570      }
585571      else
586572      {
587         // nothing happenend
573         // nothing happened
588574         m_sior = 0xbf;
589575      }
590576
r18809r18810
751737   if (VERBOSE)
752738      logerror("%s: px4_artdir_r\n", machine().describe_context());
753739
740   // clear ready
741   m_artsr &= ~ART_RXRDY;
742
754743   return m_artdir;
755744}
756745
r18809r18810
798787
799788   result |= m_centronics->busy_r() << 0;
800789   result |= !m_centronics->pe_r() << 1;
801   result |= m_sio->pin_r() << 2;
790   result |= !m_sio->pin_r() << 2;
802791   result |= m_sio->rx_r() << 3;
803792   result |= px4_rs232c_dcd(m_rs232c_device) << 4;
804793   result |= px4_rs232c_cts(m_rs232c_device) << 5;
r18809r18810
858847   m_centronics->strobe_w(!BIT(data, 0));
859848   m_centronics->init_prime_w(BIT(data, 1));
860849
861   m_sio->pout_w(BIT(data, 2));
850   m_sio->pout_w(!BIT(data, 2));
862851
863852   // bit 3, cartridge reset
864853

Previous 199869 Revisions Next


© 1997-2024 The MAME Team