diff options
author | mahlemiut <mahlemiut@users.noreply.github.com> | 2013-07-22 08:26:04 +0000 |
---|---|---|
committer | mahlemiut <mahlemiut@users.noreply.github.com> | 2013-07-22 08:26:04 +0000 |
commit | c17a5cac617a35d59191defd9105aece3d50c7f2 (patch) | |
tree | eec2143130020dc45fcc6c87d519a3fa1ea6f0fa | |
parent | d3795702455c111dbecf4271525edeb287126a65 (diff) |
fm7: fixed DOS mode booting.
-rw-r--r-- | src/mess/drivers/fm7.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/src/mess/drivers/fm7.c b/src/mess/drivers/fm7.c index be55e5ea456..f4cbd97df52 100644 --- a/src/mess/drivers/fm7.c +++ b/src/mess/drivers/fm7.c @@ -366,18 +366,19 @@ READ8_MEMBER(fm7_state::fm7_fd04_r) */ READ8_MEMBER(fm7_state::fm7_rom_en_r) { - UINT8* RAM = memregion("maincpu")->base(); - - m_basic_rom_en = 1; - if(m_type == SYS_FM7) + if(!space.debugger_access()) { - space.install_read_bank(0x8000,0xfbff,"bank1"); - space.nop_write(0x8000,0xfbff); - membank("bank1")->set_base(RAM+0x38000); + UINT8* RAM = memregion("maincpu")->base(); + + m_basic_rom_en = 1; + if(m_type == SYS_FM7) + { + membank("bank1")->set_base(RAM+0x38000); + } + else + fm7_mmr_refresh(space); + logerror("BASIC ROM enabled\n"); } - else - fm7_mmr_refresh(space); - logerror("BASIC ROM enabled\n"); return 0x00; } @@ -388,7 +389,6 @@ WRITE8_MEMBER(fm7_state::fm7_rom_en_w) m_basic_rom_en = 0; if(m_type == SYS_FM7) { - space.install_readwrite_bank(0x8000,0xfbff,"bank1"); membank("bank1")->set_base(RAM+0x8000); } else @@ -1398,7 +1398,7 @@ WRITE_LINE_MEMBER(fm7_state::fm77av_fmirq) // The FM-7 has only 64kB RAM, so we'll worry about banking when we do the later models static ADDRESS_MAP_START( fm7_mem, AS_PROGRAM, 8, fm7_state ) AM_RANGE(0x0000,0x7fff) AM_RAM - AM_RANGE(0x8000,0xfbff) AM_ROMBANK("bank1") // also F-BASIC ROM, when enabled + AM_RANGE(0x8000,0xfbff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") // also F-BASIC ROM, when enabled AM_RANGE(0xfc00,0xfc7f) AM_RAM AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) // I/O space (FD00-FDFF) @@ -1426,7 +1426,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( fm8_mem, AS_PROGRAM, 8, fm7_state ) AM_RANGE(0x0000,0x7fff) AM_RAM - AM_RANGE(0x8000,0xfbff) AM_ROMBANK("bank1") // also F-BASIC ROM, when enabled + AM_RANGE(0x8000,0xfbff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") // also F-BASIC ROM, when enabled AM_RANGE(0xfc00,0xfc7f) AM_RAM AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) // I/O space (FD00-FDFF) @@ -1927,10 +1927,9 @@ void fm7_state::machine_reset() m_irq_flags = 0x00; m_video.attn_irq = 0; m_video.sub_busy = 0x80; // busy at reset + m_basic_rom_en = 1; // enabled at reset, if in BASIC mode if(m_type == SYS_FM11 || m_type == SYS_FM16) m_basic_rom_en = 0; // all FM11/16 systems have no BASIC ROM except for the FM-11 ST - else - m_basic_rom_en = 1; // enabled at reset if(m_type == SYS_FM77AV || m_type == SYS_FM77AV40EX) { m_init_rom_en = 1; @@ -1946,7 +1945,16 @@ void fm7_state::machine_reset() else m_init_rom_en = 0; if(m_type == SYS_FM7) - membank("bank1")->set_base(RAM+0x38000); + { + if(!(ioport("DSW")->read() & 0x02)) + { + m_basic_rom_en = 0; // disabled for DOS mode + membank("bank1")->set_base(RAM+0x08000); + } + else + membank("bank1")->set_base(RAM+0x38000); + membank("bank2")->set_base(RAM+0x08000); + } m_key_delay = 700; // 700ms on FM-7 m_key_repeat = 70; // 70ms on FM-7 m_break_flag = 0; |