From ea09e0b4b59c3bb27fc93a6fd20c0686aa049782 Mon Sep 17 00:00:00 2001 From: Frank Palazzolo Date: Thu, 21 Nov 2019 13:21:27 -0500 Subject: [bit90] requested fixes (#5940) * [bit90] fix issues with logging, combine drivers with BIOS mechanism, protect read functions against debugger side effects * [bit90] Use multiple ROM_REGIONS and ROM_BIOS, because you can! --- src/mame/drivers/coleco.cpp | 70 +++++++++++++++++++++++++++++++-------------- src/mame/mame.lst | 3 +- 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp index 929aa638ce9..26ef6d042ac 100644 --- a/src/mame/drivers/coleco.cpp +++ b/src/mame/drivers/coleco.cpp @@ -73,6 +73,7 @@ #include "screen.h" #include "softlist.h" #include "speaker.h" +#include "logmacro.h" /* Read/Write Handlers */ @@ -98,16 +99,20 @@ WRITE8_MEMBER( coleco_state::paddle_on_w ) READ8_MEMBER( bit90_state::bankswitch_u4_r ) { - //osd_printf_verbose("Bankswitch to u4\n"); - m_bank->set_entry(0); - return 0xff; + if (!machine().side_effects_disabled()) { + LOG("Bankswitch to u4\n"); + m_bank->set_entry(0); + } + return space.unmap(); } READ8_MEMBER( bit90_state::bankswitch_u3_r ) { - //osd_printf_verbose("Bankswitch to u3\n"); - m_bank->set_entry(1); - return 0xff; + if (!machine().side_effects_disabled()) { + LOG("Bankswitch to u3\n"); + m_bank->set_entry(1); + } + return space.unmap(); } READ8_MEMBER( bit90_state::keyboard_r ) @@ -115,7 +120,7 @@ READ8_MEMBER( bit90_state::keyboard_r ) if (m_keyselect < 8) { return m_io_keyboard[m_keyselect]->read(); } - return 0xff; + return space.unmap(); } WRITE8_MEMBER( bit90_state::u32_w ) @@ -127,7 +132,7 @@ WRITE8_MEMBER( bit90_state::u32_w ) uint8_t temp = data & 0x03; if (m_unknown != temp) { m_unknown = temp; - osd_printf_verbose("m_unknown -> 0x%02x\n",m_unknown); + LOG("m_unknown -> 0x%02x\n",m_unknown); } } @@ -686,20 +691,43 @@ ROM_END #define rom_dina rom_czz50 #define rom_prsarcde rom_czz50 -ROM_START( bit90b3 ) - ROM_REGION( 0x4000, "banked", 0 ) - ROM_LOAD("bit90b3.u4", 0x0000, 0x2000, CRC(06d21fc2) SHA1(6d296b09b661babd4c2ef6993f8e768a67932388)) - ROM_LOAD("bit90b3.u3", 0x2000, 0x2000, CRC(61fdccbb) SHA1(25cac13627c0916d3ed2b92f0b2218b405de5be4)) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD("bit90b3.u2", 0x2000, 0x2000, CRC(b992b940) SHA1(c7dd96a1944fac40cbae20630f303a69de7e6313)) -ROM_END +/* BIT90 BIOS + +Circuit board is labelled: BIT90C-PAL-90002 + +Units have 2764-compatible pinouts at U2,U3, and U4 +Some units have 2764 EPROMS, Mask ROMs, or a combination + +Mask ROMs are labelled: + +@U4: +D32351E +BIT-99C1 + +@U3: +D32521E +MONITOR2 + +@U2: +D32522E +MONITOR3 + +*/ ROM_START( bit90 ) - ROM_REGION( 0x4000, "banked", 0 ) - ROM_LOAD("d32351e.u4", 0x0000, 0x2000, NO_DUMP) // BIT-99C1 - ROM_LOAD("d32521e.u3", 0x2000, 0x2000, NO_DUMP) // MONITOR2 + ROM_DEFAULT_BIOS( "3.0" ) + ROM_SYSTEM_BIOS( 0, "3.0", "BASIC 3.0" ) + ROM_SYSTEM_BIOS( 1, "3.1", "BASIC 3.1" ) + ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD("d32522e.u2", 0x2000, 0x2000, NO_DUMP) // MONITOR3 + ROMX_LOAD("bit90b3.u2", 0x2000, 0x2000, CRC(b992b940) SHA1(c7dd96a1944fac40cbae20630f303a69de7e6313), ROM_BIOS(0)) + ROMX_LOAD("d32522e.u2", 0x2000, 0x2000, NO_DUMP, ROM_BIOS(1)) // MONITOR3 + + ROM_REGION( 0x4000, "banked", 0 ) + ROMX_LOAD("bit90b3.u4", 0x0000, 0x2000, CRC(06d21fc2) SHA1(6d296b09b661babd4c2ef6993f8e768a67932388), ROM_BIOS(0)) + ROMX_LOAD("bit90b3.u3", 0x2000, 0x2000, CRC(61fdccbb) SHA1(25cac13627c0916d3ed2b92f0b2218b405de5be4), ROM_BIOS(0)) + ROMX_LOAD("d32351e.u4", 0x0000, 0x2000, NO_DUMP, ROM_BIOS(1)) // BIT-99C1 + ROMX_LOAD("d32521e.u3", 0x2000, 0x2000, NO_DUMP, ROM_BIOS(1)) // MONITOR2 ROM_END /* System Drivers */ @@ -711,7 +739,7 @@ CONS( 1983, colecop, coleco, 0, colecop, coleco, coleco_state, empty_init CONS( 1986, czz50, 0, coleco, czz50, czz50, coleco_state, empty_init, "Bit Corporation", "Chuang Zao Zhe 50", 0 ) CONS( 1988, dina, czz50, 0, dina, czz50, coleco_state, empty_init, "Telegames", "Dina", 0 ) CONS( 1988, prsarcde, czz50, 0, czz50, czz50, coleco_state, empty_init, "Telegames", "Personal Arcade", 0 ) -COMP( 1983, bit90, 0, coleco, bit90, bit90, bit90_state, empty_init, "Bit Corporation", "Bit90 (BASIC 3.1)", 0 ) -COMP( 1983, bit90b3, bit90, 0, bit90, bit90, bit90_state, empty_init, "Bit Corporation", "Bit90 (BASIC 3.0)", 0 ) +COMP( 1983, bit90, 0, coleco, bit90, bit90, bit90_state, empty_init, "Bit Corporation", "Bit90", 0 ) + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 90b207dd9fe..2b9addcb2b9 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10321,8 +10321,7 @@ czz50 // Bit Corporation Chuang Zao Zhe 50 dina // Telegames Dina onyx // Microdigital ONYX (Brazilian Coleco clone / unreleased prototype) prsarcde // Telegames Personal Arcade -bit90b3 // Bit Corporation Bit90 (BASIC 3.0) -bit90 // Bit Corporation Bit90 (BASIC 3.1) +bit90 // Bit Corporation Bit90 @source:combatsc.cpp bootcamp // GX611 (c) 1987 -- cgit v1.2.3