px4: more cleanups, small fixes

This commit is contained in:
Dirk Best 2012-11-02 15:32:18 +00:00
parent 09a929077d
commit 7a9c6b34a9

View File

@ -187,10 +187,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(frc_tick); TIMER_DEVICE_CALLBACK_MEMBER(frc_tick);
TIMER_DEVICE_CALLBACK_MEMBER(upd7508_1sec_callback); TIMER_DEVICE_CALLBACK_MEMBER(upd7508_1sec_callback);
void px4_sio_txd(device_t *device,int state);
int px4_sio_rxd(device_t *device);
int px4_sio_pin(device_t *device);
void px4_sio_pout(device_t *device,int state);
void px4_rs232c_txd(device_t *device,int state); void px4_rs232c_txd(device_t *device,int state);
int px4_rs232c_rxd(device_t *device); int px4_rs232c_rxd(device_t *device);
void px4_rs232c_rts(device_t *device,int state); void px4_rs232c_rts(device_t *device,int state);
@ -474,25 +470,19 @@ READ8_MEMBER(px4_state::px4_str_r)
void px4_state::install_rom_capsule(address_space &space, int size, const char *region) void px4_state::install_rom_capsule(address_space &space, int size, const char *region)
{ {
// ram, part 1 // ram, part 1
space.install_readwrite_bank(0x0000, 0xdfff - size, "bank1"); space.install_ram(0x0000, 0xdfff - size, 0, 0, m_ram->pointer());
membank("bank1")->set_base(m_ram->pointer());
// actual rom data, part 1 // actual rom data, part 1
space.install_read_bank(0xe000 - size, 0xffff - size, "bank2"); space.install_rom(0xe000 - size, 0xffff, 0, 0, memregion(region)->base() + (size - 0x2000));
space.nop_write(0xe000 - size, 0xffff - size);
membank("bank2")->set_base(memregion(region)->base() + (size - 0x2000));
// rom data, part 2 // rom data, part 2
if (size != 0x2000) if (size != 0x2000)
{ {
space.install_read_bank(0x10000 - size, 0xdfff, "bank3"); space.install_rom(0x10000 - size, 0xdfff, 0, 0, memregion(region)->base());
space.nop_write(0x10000 - size, 0xdfff);
membank("bank3")->set_base(memregion(region)->base());
} }
// ram, continued // ram, continued
space.install_readwrite_bank(0xe000, 0xffff, "bank4"); space.install_ram(0xe000, 0xffff, 0, 0, m_ram->pointer() + 0xe000);
membank("bank4")->set_base(m_ram->pointer() + 0xe000);
} }
// bank register // bank register
@ -505,22 +495,18 @@ WRITE8_MEMBER(px4_state::px4_bankr_w)
m_bankr = data; m_bankr = data;
/* bank switch */ // bank switch
switch (data >> 4) switch (data >> 4)
{ {
case 0x00: case 0x00:
/* system bank */ // system bank
space_program.install_read_bank(0x0000, 0x7fff, "bank1"); space_program.install_rom(0x0000, 0x7fff, 0, 0, memregion("os")->base());
space_program.nop_write(0x0000, 0x7fff); space_program.install_ram(0x8000, 0xffff, 0, 0, m_ram->pointer() + 0x8000);
membank("bank1")->set_base(memregion("os")->base());
space_program.install_readwrite_bank(0x8000, 0xffff, "bank2");
membank("bank2")->set_base(m_ram->pointer() + 0x8000);
break; break;
case 0x04: case 0x04:
/* memory */ // memory
space_program.install_readwrite_bank(0x0000, 0xffff, "bank1"); space_program.install_ram(0x0000, 0xffff, 0, 0, m_ram->pointer());
membank("bank1")->set_base(m_ram->pointer());
break; break;
case 0x08: install_rom_capsule(space_program, 0x2000, "capsule1"); break; case 0x08: install_rom_capsule(space_program, 0x2000, "capsule1"); break;
@ -584,7 +570,7 @@ WRITE8_MEMBER(px4_state::px4_sior_w)
} }
else else
{ {
// nothing happenend // nothing happened
m_sior = 0xbf; m_sior = 0xbf;
} }
@ -751,6 +737,9 @@ READ8_MEMBER(px4_state::px4_artdir_r)
if (VERBOSE) if (VERBOSE)
logerror("%s: px4_artdir_r\n", machine().describe_context()); logerror("%s: px4_artdir_r\n", machine().describe_context());
// clear ready
m_artsr &= ~ART_RXRDY;
return m_artdir; return m_artdir;
} }
@ -798,7 +787,7 @@ READ8_MEMBER(px4_state::px4_iostr_r)
result |= m_centronics->busy_r() << 0; result |= m_centronics->busy_r() << 0;
result |= !m_centronics->pe_r() << 1; result |= !m_centronics->pe_r() << 1;
result |= m_sio->pin_r() << 2; result |= !m_sio->pin_r() << 2;
result |= m_sio->rx_r() << 3; result |= m_sio->rx_r() << 3;
result |= px4_rs232c_dcd(m_rs232c_device) << 4; result |= px4_rs232c_dcd(m_rs232c_device) << 4;
result |= px4_rs232c_cts(m_rs232c_device) << 5; result |= px4_rs232c_cts(m_rs232c_device) << 5;
@ -858,7 +847,7 @@ WRITE8_MEMBER(px4_state::px4_ioctlr_w)
m_centronics->strobe_w(!BIT(data, 0)); m_centronics->strobe_w(!BIT(data, 0));
m_centronics->init_prime_w(BIT(data, 1)); m_centronics->init_prime_w(BIT(data, 1));
m_sio->pout_w(BIT(data, 2)); m_sio->pout_w(!BIT(data, 2));
// bit 3, cartridge reset // bit 3, cartridge reset