summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/br8641.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/br8641.cpp')
-rw-r--r--src/mame/drivers/br8641.cpp43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp
index d8177351d5a..ba9b44a74f6 100644
--- a/src/mame/drivers/br8641.cpp
+++ b/src/mame/drivers/br8641.cpp
@@ -44,16 +44,17 @@ public:
, m_beep(*this, "beeper")
{ }
- uint8_t port08_r();
- void port08_w(uint8_t data);
- void port09_w(uint8_t data);
-
void brandt8641(machine_config &config);
- void brandt8641_io(address_map &map);
- void brandt8641_mem(address_map &map);
+
private:
- uint8_t m_port08;
- uint8_t m_port09;
+ virtual void machine_start() override;
+ void io_map(address_map &map);
+ void mem_map(address_map &map);
+ u8 port08_r();
+ void port08_w(u8 data);
+ void port09_w(u8 data);
+ u8 m_port08;
+ u8 m_port09;
required_device<z80_device> m_maincpu;
required_device<z80pio_device> m_pio1;
required_device<z80pio_device> m_pio2;
@@ -63,14 +64,14 @@ private:
required_device<beep_device> m_beep;
};
-void brandt8641_state::brandt8641_mem(address_map &map)
+void brandt8641_state::mem_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x7fff).rom(); // 27256 at U12
map(0x8000, 0x9fff).ram(); // 8KB static ram 6264 at U12
}
-void brandt8641_state::brandt8641_io(address_map &map)
+void brandt8641_state::io_map(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
@@ -125,9 +126,9 @@ static INPUT_PORTS_START( brandt8641 )
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)
INPUT_PORTS_END
-uint8_t brandt8641_state::port08_r()
+u8 brandt8641_state::port08_r()
{
- uint8_t i, data = 7;
+ u8 i, data = 7;
for (i = 0; i < 8; i++)
if (BIT(m_port09, i))
@@ -136,17 +137,23 @@ uint8_t brandt8641_state::port08_r()
return data | m_port08;
}
-void brandt8641_state::port08_w(uint8_t data)
+void brandt8641_state::port08_w(u8 data)
{
m_port08 = data & 0xf8;
m_beep->set_state(BIT(data, 4));
}
-void brandt8641_state::port09_w(uint8_t data)
+void brandt8641_state::port09_w(u8 data)
{
m_port09 = data ^ 0xff;
}
+void brandt8641_state::machine_start()
+{
+ save_item(NAME(m_port08));
+ save_item(NAME(m_port09));
+}
+
static const z80_daisy_config daisy_chain_intf[] =
{
{ "pio1" },
@@ -162,8 +169,8 @@ void brandt8641_state::brandt8641(machine_config &config)
{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(4'000'000)); // U4 ,4MHz crystal on board
- m_maincpu->set_addrmap(AS_PROGRAM, &brandt8641_state::brandt8641_mem);
- m_maincpu->set_addrmap(AS_IO, &brandt8641_state::brandt8641_io);
+ m_maincpu->set_addrmap(AS_PROGRAM, &brandt8641_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &brandt8641_state::io_map);
m_maincpu->set_daisy_config(daisy_chain_intf);
/* sound hardware */
@@ -190,9 +197,9 @@ void brandt8641_state::brandt8641(machine_config &config)
/* ROM definition */
ROM_START( br8641 )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "v0911he.u11", 0x0000, 0x8000, CRC(59a16951) SHA1(893dba60ec8bfa391fb2d2a30db5d42d601f5eb9))
ROM_END
/* Driver */
-COMP( 1986, br8641, 0, 0, brandt8641, brandt8641, brandt8641_state, empty_init, "Brandt", "Brandt 8641", MACHINE_NOT_WORKING )
+COMP( 1986, br8641, 0, 0, brandt8641, brandt8641, brandt8641_state, empty_init, "Brandt", "Brandt 8641", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )