(nw) homelab: finished with this for now.

This commit is contained in:
Robbbert 2020-06-25 14:11:21 +10:00
parent 95d7d921bb
commit c9c6a26f0e
2 changed files with 87 additions and 71 deletions

View File

@ -16,6 +16,8 @@
- homelab2 - cassette to fix. - homelab2 - cassette to fix.
Note that rom code 0x40-48 is meaningless garbage, Note that rom code 0x40-48 is meaningless garbage,
had to patch to stop it crashing. Need a new dump. had to patch to stop it crashing. Need a new dump.
- The speaker code is wrong, but it's the only way to
get any sound. Needs to be looked at again.
- homelab3/4 - Need a dump of the TM188 prom. - homelab3/4 - Need a dump of the TM188 prom.
cassette to fix. cassette to fix.
up to 64k ram can be fitted. schematic only shows 16k. up to 64k ram can be fitted. schematic only shows 16k.
@ -35,9 +37,9 @@ MB7051 - fuse programmed prom.
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "imagedev/cassette.h" #include "imagedev/cassette.h"
#include "imagedev/snapquik.h" #include "imagedev/snapquik.h"
#include "sound/dac.h"
#include "sound/mea8000.h" #include "sound/mea8000.h"
#include "sound/volt_reg.h" #include "sound/spkrdev.h"
#include "machine/timer.h"
#include "emupal.h" #include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
@ -51,7 +53,7 @@ public:
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_p_chargen(*this, "chargen") , m_p_chargen(*this, "chargen")
, m_dac(*this, "dac") , m_speaker(*this, "speaker")
, m_cass(*this, "cassette") , m_cass(*this, "cassette")
, m_io_keyboard(*this, "X%d", 0) , m_io_keyboard(*this, "X%d", 0)
{ } { }
@ -64,7 +66,7 @@ protected:
u8 m_cols; u8 m_cols;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_region_ptr<u8> m_p_chargen; required_region_ptr<u8> m_p_chargen;
required_device<dac_bit_interface> m_dac; required_device<speaker_sound_device> m_speaker;
required_device<cassette_image_device> m_cass; required_device<cassette_image_device> m_cass;
required_ioport_array<16> m_io_keyboard; required_ioport_array<16> m_io_keyboard;
}; };
@ -82,10 +84,13 @@ private:
void machine_start() override; void machine_start() override;
INTERRUPT_GEN_MEMBER(homelab_frame); INTERRUPT_GEN_MEMBER(homelab_frame);
void homelab2_mem(address_map &map); void homelab2_mem(address_map &map);
u8 key_r(offs_t offset);
void cass_w(offs_t offset, u8 data);
u8 cass2_r(); u8 cass2_r();
bool m_nmi; bool m_nmi;
bool m_spr_bit;
u8 mem3800_r();
u8 mem3a00_r(offs_t);
void mem3c00_w(offs_t, u8);
void mem3e00_w(offs_t, u8);
}; };
class homelab3_state : public homelab_state class homelab3_state : public homelab_state
@ -120,42 +125,43 @@ INTERRUPT_GEN_MEMBER(homelab2_state::homelab_frame)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
u8 homelab2_state::key_r(offs_t offset) // offset 27F-2FE u8 homelab2_state::mem3800_r()
{ {
if (offset == 0x38) // 0x3838 return m_io_keyboard[15]->read(); // reset key
{ }
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return 0;
}
u8 homelab2_state::mem3a00_r(offs_t offset)
{
u8 i,data = 0xff; u8 i,data = 0xff;
for (i=0; i<8; i++) for (i=0; i<8; i++)
{
if (!BIT(offset, i)) if (!BIT(offset, i))
{
data &= m_io_keyboard[i]->read(); data &= m_io_keyboard[i]->read();
}
}
return data; return data;
} }
u8 homelab2_state::cass2_r() void homelab2_state::mem3c00_w(offs_t offset, u8 data)
{ {
return (m_cass->input() > 0.03) ? 0xff : 0; m_spr_bit ^= 1;
m_speaker->level_w(m_spr_bit? -1.0 : +1.0);
m_cass->output(m_spr_bit ? -1.0 : +1.0);
} }
void homelab2_state::cass_w(offs_t offset, u8 data) void homelab2_state::mem3e00_w(offs_t offset, u8 data)
{ {
if (offset == 0x73f) // 0x3f3f if (BIT(offset, 8))
{
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
m_nmi = true; m_nmi = true;
}
else else
if (offset == 0x63e) // 0x3e3e
m_nmi = false; m_nmi = false;
else }
if (offset == 0x400) // 0x3c00
m_cass->output(BIT(data, 0) ? -1.0 : +1.0); // FIXME u8 homelab2_state::cass2_r()
{
return (m_cass->input() > 0.03) ? 0x37 : 0;
} }
void homelab3_state::machine_reset() void homelab3_state::machine_reset()
@ -191,21 +197,20 @@ u8 homelab3_state::exxx_r(offs_t offset)
else else
if (offset == 0x80) if (offset == 0x80)
{ {
m_dac->write(0); m_speaker->level_w(0);
m_cass->output(-1.0); m_cass->output(-1.0);
} }
else else
if (offset == 0x02) if (offset == 0x02)
{ {
m_dac->write(1); m_speaker->level_w(1);
m_cass->output(+1.0); m_cass->output(+1.0);
} }
u8 data = 0xff; u8 data = 0xff;
if (offset < 0x10) if (offset < 0x10)
{
data = m_io_keyboard[offset]->read(); data = m_io_keyboard[offset]->read();
}
return data; return data;
} }
@ -220,10 +225,13 @@ void homelab2_state::homelab2_mem(address_map &map)
map(0x2000, 0x27ff).rom(); // ROM 5 map(0x2000, 0x27ff).rom(); // ROM 5
map(0x2800, 0x2fff).rom(); // ROM 6 map(0x2800, 0x2fff).rom(); // ROM 6
map(0x3000, 0x37ff).rom(); // Empty map(0x3000, 0x37ff).rom(); // Empty
map(0x3800, 0x3fff).rw(FUNC(homelab2_state::key_r), FUNC(homelab2_state::cass_w)); map(0x3800, 0x39ff).r(FUNC(homelab2_state::mem3800_r));
map(0x3a00, 0x3bff).r(FUNC(homelab2_state::mem3a00_r));
map(0x3c00, 0x3dff).w(FUNC(homelab2_state::mem3c00_w));
map(0x3e00, 0x3fff).w(FUNC(homelab2_state::mem3e00_w));
map(0x4000, 0x7fff).ram(); map(0x4000, 0x7fff).ram();
map(0xc000, 0xc3ff).lr8(NAME([this] (offs_t offset) { return m_vram[offset]; })).lw8(NAME([this] (offs_t offset, u8 data) { m_vram[offset]=data; })); map(0xc000, 0xc3ff).mirror(0xc00).lr8(NAME([this] (offs_t offset) { return m_vram[offset]; })).lw8(NAME([this] (offs_t offset, u8 data) { m_vram[offset]=data; }));
map(0xe000, 0xe0ff).r(FUNC(homelab2_state::cass2_r)); map(0xe000, 0xffff).r(FUNC(homelab2_state::cass2_r));
} }
void homelab3_state::homelab3_mem(address_map &map) void homelab3_state::homelab3_mem(address_map &map)
@ -262,7 +270,7 @@ void homelab3_state::brailab4_io(address_map &map)
/* Input ports */ /* Input ports */
static INPUT_PORTS_START( homelab2 ) static INPUT_PORTS_START( homelab2 )
PORT_START("X0") PORT_START("X0")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) //PORT_CHAR(UCHAR_SHIFT_1) PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT)
PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED)
@ -351,7 +359,8 @@ static INPUT_PORTS_START( homelab2 )
PORT_START("X14") PORT_START("X14")
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("X15") PORT_START("X15")
PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F3)
PORT_BIT(0xFE, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( homelab3 ) // F4 to F8 are foreign characters static INPUT_PORTS_START( homelab3 ) // F4 to F8 are foreign characters
@ -371,7 +380,7 @@ static INPUT_PORTS_START( homelab3 ) // F4 to F8 are foreign characters
PORT_START("X2") PORT_START("X2")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_VBLANK("screen") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_VBLANK("screen")
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT") PORT_CODE(KEYCODE_CAPSLOCK) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT") PORT_CODE(KEYCODE_CAPSLOCK)
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
@ -484,7 +493,7 @@ static INPUT_PORTS_START( brailab4 ) // F4 to F8 are foreign characters
PORT_START("X2") PORT_START("X2")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_VBLANK("screen") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_VBLANK("screen")
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT") PORT_CODE(KEYCODE_CAPSLOCK) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT") PORT_CODE(KEYCODE_CAPSLOCK)
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
@ -583,6 +592,7 @@ INPUT_PORTS_END
void homelab2_state::machine_start() void homelab2_state::machine_start()
{ {
save_item(NAME(m_nmi)); save_item(NAME(m_nmi));
save_item(NAME(m_spr_bit));
save_item(NAME(m_rows)); save_item(NAME(m_rows));
save_item(NAME(m_cols)); save_item(NAME(m_cols));
m_vram = make_unique_clear<u8[]>(0x800); m_vram = make_unique_clear<u8[]>(0x800);
@ -765,13 +775,11 @@ void homelab2_state::homelab2(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME); PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "mono").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
CASSETTE(config, m_cass); CASSETTE(config, m_cass);
m_cass->add_route(ALL_OUTPUTS, "speaker", 0.05); m_cass->add_route(ALL_OUTPUTS, "mono", 0.05);
QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab2_state::quickload_cb)); QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab2_state::quickload_cb));
} }
@ -796,13 +804,12 @@ void homelab3_state::homelab3(machine_config &config)
PALETTE(config, "palette", palette_device::MONOCHROME); PALETTE(config, "palette", palette_device::MONOCHROME);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "mono").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
CASSETTE(config, m_cass); CASSETTE(config, m_cass);
m_cass->add_route(ALL_OUTPUTS, "speaker", 0.05); m_cass->add_route(ALL_OUTPUTS, "mono", 0.05);
QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab3_state::quickload_cb)); QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab3_state::quickload_cb));
} }
@ -811,7 +818,7 @@ void homelab3_state::brailab4(machine_config &config)
homelab3(config); homelab3(config);
m_maincpu->set_addrmap(AS_PROGRAM, &homelab3_state::brailab4_mem); m_maincpu->set_addrmap(AS_PROGRAM, &homelab3_state::brailab4_mem);
m_maincpu->set_addrmap(AS_IO, &homelab3_state::brailab4_io); m_maincpu->set_addrmap(AS_IO, &homelab3_state::brailab4_io);
MEA8000(config, "mea8000", 3840000).add_route(ALL_OUTPUTS, "speaker", 1.0); MEA8000(config, "mea8000", 3840000).add_route(ALL_OUTPUTS, "mono", 1.0);
} }
@ -819,52 +826,61 @@ void homelab3_state::brailab4(machine_config &config)
ROM_START( homelab2 ) ROM_START( homelab2 )
ROM_REGION( 0x3800, "maincpu", ROMREGION_ERASEFF ) ROM_REGION( 0x3800, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "hl2_1.rom", 0x0000, 0x0800, BAD_DUMP CRC(205365f7) SHA1(da93b65befd83513dc762663b234227ba804124d)) ROM_LOAD( "hl2_1.ic2", 0x0000, 0x0800, BAD_DUMP CRC(205365f7) SHA1(da93b65befd83513dc762663b234227ba804124d))
ROM_LOAD( "hl2_2.rom", 0x0800, 0x0800, CRC(696af3c1) SHA1(b53bc6ae2b75975618fc90e7181fa5d21409fce1)) ROM_LOAD( "hl2_2.ic3", 0x0800, 0x0800, CRC(696af3c1) SHA1(b53bc6ae2b75975618fc90e7181fa5d21409fce1))
ROM_LOAD( "hl2_3.rom", 0x1000, 0x0800, CRC(69e57e8c) SHA1(e98510abb715dbf513e1b29fb6b09ab54e9483b7)) ROM_LOAD( "hl2_3.ic4", 0x1000, 0x0800, CRC(69e57e8c) SHA1(e98510abb715dbf513e1b29fb6b09ab54e9483b7))
ROM_LOAD( "hl2_4.rom", 0x1800, 0x0800, CRC(97cbbe74) SHA1(34f0bad41302b059322018abc3d1c2336ecfbea8)) ROM_LOAD( "hl2_4.ic5", 0x1800, 0x0800, CRC(97cbbe74) SHA1(34f0bad41302b059322018abc3d1c2336ecfbea8))
ROM_LOAD( "hl2_m.rom", 0x2000, 0x0800, CRC(10040235) SHA1(e121dfb97cc8ea99193a9396a9f7af08585e0ff0) ) ROM_LOAD( "hl2_m.ic6", 0x2000, 0x0800, CRC(10040235) SHA1(e121dfb97cc8ea99193a9396a9f7af08585e0ff0) )
ROM_FILL(0x46, 1, 0x18) // fix bad code ROM_FILL(0x46, 1, 0x18) // fix bad code
ROM_FILL(0x47, 1, 0x0E) ROM_FILL(0x47, 1, 0x0E)
ROM_REGION( 0x0800, "chargen", 0 ) ROM_REGION( 0x0800, "chargen", 0 )
ROM_LOAD( "hl2.chr", 0x0000, 0x0800, CRC(2e669d40) SHA1(639dd82ed29985dc69830aca3b904b6acc8fe54a)) ROM_LOAD( "hl2.ic33", 0x0000, 0x0800, CRC(2e669d40) SHA1(639dd82ed29985dc69830aca3b904b6acc8fe54a))
// found on net, looks like bad dump // found on net, looks like bad dump
//ROM_LOAD_OPTIONAL( "hl2_ch.rom", 0x0800, 0x1000, CRC(6a5c915a) SHA1(7e4e966358556c6aabae992f4c2b292b6aab59bd) ) //ROM_LOAD_OPTIONAL( "hl2_ch.rom", 0x0800, 0x1000, CRC(6a5c915a) SHA1(7e4e966358556c6aabae992f4c2b292b6aab59bd) )
ROM_END ROM_END
ROM_START( homelab3 ) ROM_START( homelab3 )
ROM_REGION( 0x4000, "maincpu", 0 ) ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "hl3_1.rom", 0x0000, 0x1000, CRC(6b90a8ea) SHA1(8ac40ca889b8c26cdf74ca309fbafd70dcfdfbec)) ROM_LOAD( "hl3_1.ic1", 0x0000, 0x1000, CRC(6b90a8ea) SHA1(8ac40ca889b8c26cdf74ca309fbafd70dcfdfbec) )
ROM_LOAD( "hl3_2.rom", 0x1000, 0x1000, CRC(bcac3c24) SHA1(aff371d17f61cb60c464998e092f04d5d85c4d52)) ROM_LOAD( "hl3_2.ic2", 0x1000, 0x1000, CRC(bcac3c24) SHA1(aff371d17f61cb60c464998e092f04d5d85c4d52) )
ROM_LOAD( "hl3_3.rom", 0x2000, 0x1000, CRC(ab1b4ab0) SHA1(ad74c7793f5dc22061a88ef31d3407267ad08719)) ROM_LOAD( "hl3_3.ic3", 0x2000, 0x1000, CRC(ab1b4ab0) SHA1(ad74c7793f5dc22061a88ef31d3407267ad08719) )
ROM_LOAD( "hl3_4.rom", 0x3000, 0x1000, CRC(bf67eff9) SHA1(2ef5d46f359616e7d0e5a124df528de44f0e850b)) ROM_LOAD( "hl3_4.ic4", 0x3000, 0x1000, CRC(bf67eff9) SHA1(2ef5d46f359616e7d0e5a124df528de44f0e850b) )
ROM_REGION( 0x0800, "chargen", 0 ) ROM_REGION( 0x0800, "chargen", 0 )
ROM_LOAD( "hl3.chr", 0x0000, 0x0800, CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a)) ROM_LOAD( "hl3.ic21", 0x0000, 0x0800, CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a) )
ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "tm188.ic7", 0x0000, 0x0040, NO_DUMP )
ROM_END ROM_END
ROM_START( homelab4 ) ROM_START( homelab4 )
ROM_REGION( 0x4000, "maincpu", 0 ) ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "hl4_1.rom", 0x0000, 0x1000, CRC(a549b2d4) SHA1(90fc5595da8431616aee56eb5143b9f04281e798)) ROM_LOAD( "hl4_1.ic1", 0x0000, 0x1000, CRC(a549b2d4) SHA1(90fc5595da8431616aee56eb5143b9f04281e798) )
ROM_LOAD( "hl4_2.rom", 0x1000, 0x1000, CRC(151d33e8) SHA1(d32004bc1553f802b9d3266709552f7d5315fe44)) ROM_LOAD( "hl4_2.ic2", 0x1000, 0x1000, CRC(151d33e8) SHA1(d32004bc1553f802b9d3266709552f7d5315fe44) )
ROM_LOAD( "hl4_3.rom", 0x2000, 0x1000, CRC(39571ab1) SHA1(8470cff2e3442101e6a0bc655358b3a6fc1ef944)) ROM_LOAD( "hl4_3.ic3", 0x2000, 0x1000, CRC(39571ab1) SHA1(8470cff2e3442101e6a0bc655358b3a6fc1ef944) )
ROM_LOAD( "hl4_4.rom", 0x3000, 0x1000, CRC(f4b77ca2) SHA1(ffbdb3c1819c7357e2a0fc6317c111a8a7ecfcd5)) ROM_LOAD( "hl4_4.ic4", 0x3000, 0x1000, CRC(f4b77ca2) SHA1(ffbdb3c1819c7357e2a0fc6317c111a8a7ecfcd5) )
ROM_REGION( 0x0800, "chargen",0 ) ROM_REGION( 0x0800, "chargen",0 )
ROM_LOAD( "hl4.chr", 0x0000, 0x0800, CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a)) ROM_LOAD( "hl4.ic21", 0x0000, 0x0800, CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a) )
ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "tm188.ic7", 0x0000, 0x0040, NO_DUMP )
ROM_END ROM_END
ROM_START( brailab4 ) ROM_START( brailab4 )
ROM_REGION( 0x5000, "maincpu", 0 ) ROM_REGION( 0x5000, "maincpu", 0 )
ROM_LOAD( "brl1.rom", 0x0000, 0x1000, CRC(02323403) SHA1(3a2e853e0a39e05a04a8db58e1a76de1eda579c9)) ROM_LOAD( "brl1.ic1", 0x0000, 0x1000, CRC(02323403) SHA1(3a2e853e0a39e05a04a8db58e1a76de1eda579c9) )
ROM_LOAD( "brl2.rom", 0x1000, 0x1000, CRC(36173fbc) SHA1(1c01398e16a1cbe4103e1be769347ceae873e090)) ROM_LOAD( "brl2.ic2", 0x1000, 0x1000, CRC(36173fbc) SHA1(1c01398e16a1cbe4103e1be769347ceae873e090) )
ROM_LOAD( "brl3.rom", 0x2000, 0x1000, CRC(d3cdd108) SHA1(1a24e6c5f9c370ff6cb25045cb9d95e664467eb5)) ROM_LOAD( "brl3.ic3", 0x2000, 0x1000, CRC(d3cdd108) SHA1(1a24e6c5f9c370ff6cb25045cb9d95e664467eb5) )
ROM_LOAD( "brl4.rom", 0x3000, 0x1000, CRC(d4047885) SHA1(00fe40c4c2c64a49bb429fb2b27cc7e0d0025a85)) ROM_LOAD( "brl4.ic4", 0x3000, 0x1000, CRC(d4047885) SHA1(00fe40c4c2c64a49bb429fb2b27cc7e0d0025a85) )
ROM_LOAD( "brl5.rom", 0x4000, 0x1000, CRC(8a76be04) SHA1(4b683b9be23b47117901fe874072eb7aa481e4ff)) ROM_LOAD( "brl5.rom", 0x4000, 0x1000, CRC(8a76be04) SHA1(4b683b9be23b47117901fe874072eb7aa481e4ff) )
ROM_REGION( 0x0800, "chargen", 0 ) ROM_REGION( 0x0800, "chargen", 0 )
ROM_LOAD( "hl4.chr", 0x0000, 0x0800, CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a)) ROM_LOAD( "hl4.ic21", 0x0000, 0x0800, CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a) )
ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "tm188.ic7", 0x0000, 0x0040, NO_DUMP )
// these roms were found on the net, to be investigated // these roms were found on the net, to be investigated
ROM_REGION( 0x5020, "user1", 0 ) ROM_REGION( 0x5020, "user1", 0 )

View File

@ -67,10 +67,10 @@ private:
void mem_map(address_map &map); void mem_map(address_map &map);
bool m_rv; bool m_rv;
optional_device<speaker_sound_device> m_speaker; required_device<speaker_sound_device> m_speaker;
optional_shared_ptr<u8> m_vram; required_shared_ptr<u8> m_vram;
required_device<z80_device> m_maincpu; required_device<z80_device> m_maincpu;
optional_device<ram_device> m_ram; required_device<ram_device> m_ram;
required_region_ptr<u8> m_p_chargen; required_region_ptr<u8> m_p_chargen;
}; };