mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
(nw) pro80,pyl601,pipbug: cleanup
This commit is contained in:
parent
2fd4687deb
commit
88a46a4a88
@ -66,6 +66,7 @@ public:
|
||||
void pipbug(machine_config &config);
|
||||
|
||||
private:
|
||||
virtual void machine_start() override;
|
||||
void pipbug_ctrl_w(u8 data);
|
||||
DECLARE_READ_LINE_MEMBER(serial_r);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kansas_r);
|
||||
@ -73,8 +74,8 @@ private:
|
||||
required_device<s2650_device> m_maincpu;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb);
|
||||
void pipbug_data(address_map &map);
|
||||
void pipbug_mem(address_map &map);
|
||||
void data_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
u8 m_cass_data[4];
|
||||
bool m_cassold, m_cassinbit;
|
||||
};
|
||||
@ -113,14 +114,21 @@ READ_LINE_MEMBER( pipbug_state::serial_r )
|
||||
return m_rs232->rxd_r() & m_cassinbit;
|
||||
}
|
||||
|
||||
void pipbug_state::pipbug_mem(address_map &map)
|
||||
void pipbug_state::machine_start()
|
||||
{
|
||||
save_pointer(NAME(m_cass_data), 4);
|
||||
save_item(NAME(m_cassold));
|
||||
save_item(NAME(m_cassinbit));
|
||||
}
|
||||
|
||||
void pipbug_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x03ff).rom();
|
||||
map(0x0400, 0x7fff).ram();
|
||||
}
|
||||
|
||||
void pipbug_state::pipbug_data(address_map &map)
|
||||
void pipbug_state::data_map(address_map &map)
|
||||
{
|
||||
// map.unmap_value_high();
|
||||
map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(FUNC(pipbug_state::pipbug_ctrl_w));
|
||||
@ -146,7 +154,7 @@ QUICKLOAD_LOAD_MEMBER(pipbug_state::quickload_cb)
|
||||
int quick_addr = 0x440;
|
||||
int exec_addr;
|
||||
int quick_length;
|
||||
std::vector<uint8_t> quick_data;
|
||||
std::vector<u8> quick_data;
|
||||
int read_;
|
||||
image_init_result result = image_init_result::FAIL;
|
||||
|
||||
@ -207,8 +215,8 @@ void pipbug_state::pipbug(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
S2650(config, m_maincpu, XTAL(1'000'000));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pipbug_state::pipbug_mem);
|
||||
m_maincpu->set_addrmap(AS_DATA, &pipbug_state::pipbug_data);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pipbug_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_DATA, &pipbug_state::data_map);
|
||||
m_maincpu->flag_handler().set("rs232", FUNC(rs232_port_device::write_txd));
|
||||
m_maincpu->sense_handler().set(FUNC(pipbug_state::serial_r));
|
||||
|
||||
@ -231,11 +239,11 @@ void pipbug_state::pipbug(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( pipbug )
|
||||
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x0400, "maincpu", 0 )
|
||||
ROM_LOAD( "pipbug.rom", 0x0000, 0x0400, CRC(f242b93e) SHA1(f82857cc882e6b5fc9f00b20b375988024f413ff))
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1979, pipbug, 0, 0, pipbug, pipbug, pipbug_state, empty_init, "Signetics", "PIPBUG", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1979, pipbug, 0, 0, pipbug, pipbug, pipbug_state, empty_init, "Signetics", "PIPBUG", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -47,18 +47,19 @@ public:
|
||||
void pro80(machine_config &config);
|
||||
|
||||
private:
|
||||
void digit_w(uint8_t data);
|
||||
void segment_w(uint8_t data);
|
||||
uint8_t kp_r();
|
||||
void digit_w(u8 data);
|
||||
void segment_w(u8 data);
|
||||
u8 kp_r();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kansas_r);
|
||||
|
||||
void pro80_io(address_map &map);
|
||||
void pro80_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
uint8_t m_digit_sel;
|
||||
uint8_t m_cass_in;
|
||||
uint16_t m_cass_data[4];
|
||||
void machine_reset() override;
|
||||
u8 m_digit_sel;
|
||||
u8 m_cass_in;
|
||||
u16 m_cass_data[4];
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
required_ioport_array<6> m_io_keyboard;
|
||||
@ -68,7 +69,7 @@ private:
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( pro80_state::kansas_r )
|
||||
{
|
||||
m_cass_data[1]++;
|
||||
uint8_t cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
|
||||
u8 cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
|
||||
|
||||
if (cass_ws != m_cass_data[0])
|
||||
{
|
||||
@ -79,7 +80,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( pro80_state::kansas_r )
|
||||
}
|
||||
}
|
||||
|
||||
void pro80_state::digit_w(uint8_t data)
|
||||
void pro80_state::digit_w(u8 data)
|
||||
{
|
||||
// --xx xxxx digit select
|
||||
// -x-- ---- cassette out
|
||||
@ -88,7 +89,7 @@ void pro80_state::digit_w(uint8_t data)
|
||||
m_cass->output( BIT(data, 6) ? -1.0 : +1.0);
|
||||
}
|
||||
|
||||
void pro80_state::segment_w(uint8_t data)
|
||||
void pro80_state::segment_w(u8 data)
|
||||
{
|
||||
if (m_digit_sel)
|
||||
{
|
||||
@ -100,9 +101,9 @@ void pro80_state::segment_w(uint8_t data)
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t pro80_state::kp_r()
|
||||
u8 pro80_state::kp_r()
|
||||
{
|
||||
uint8_t data = 0x0f;
|
||||
u8 data = 0x0f;
|
||||
|
||||
for (u8 i = 0; i < 6; i++)
|
||||
if (!BIT(m_digit_sel, i))
|
||||
@ -114,7 +115,7 @@ uint8_t pro80_state::kp_r()
|
||||
return data;
|
||||
}
|
||||
|
||||
void pro80_state::pro80_mem(address_map &map)
|
||||
void pro80_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x03ff).rom();
|
||||
@ -122,7 +123,7 @@ void pro80_state::pro80_mem(address_map &map)
|
||||
map(0x1400, 0x17ff).ram(); // 2nd RAM is optional
|
||||
}
|
||||
|
||||
void pro80_state::pro80_io(address_map &map)
|
||||
void pro80_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map.global_mask(0xff);
|
||||
@ -172,12 +173,19 @@ void pro80_state::machine_reset()
|
||||
m_cass_in = 0;
|
||||
}
|
||||
|
||||
void pro80_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_digit_sel));
|
||||
save_item(NAME(m_cass_in));
|
||||
save_pointer(NAME(m_cass_data) ,4);
|
||||
}
|
||||
|
||||
void pro80_state::pro80(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(4'000'000) / 2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pro80_state::pro80_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &pro80_state::pro80_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pro80_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &pro80_state::io_map);
|
||||
|
||||
/* video hardware */
|
||||
config.set_default_layout(layout_pro80);
|
||||
@ -205,4 +213,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1981, pro80, 0, 0, pro80, pro80, pro80_state, empty_init, "Protec", "Pro-80", MACHINE_NOT_WORKING )
|
||||
COMP( 1981, pro80, 0, 0, pro80, pro80, pro80_state, empty_init, "Protec", "Pro-80", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -90,10 +90,10 @@ private:
|
||||
uint8_t selectedline(uint16_t data);
|
||||
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
virtual void machine_start() override;
|
||||
INTERRUPT_GEN_MEMBER(pyl601_interrupt);
|
||||
DECLARE_FLOPPY_FORMATS( floppy_formats );
|
||||
void pyl601_mem(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
uint8_t m_rom_page;
|
||||
uint32_t m_vdisk_addr;
|
||||
@ -264,7 +264,7 @@ uint8_t pyl601_state::floppy_r()
|
||||
return m_floppy_ctrl;
|
||||
}
|
||||
|
||||
void pyl601_state::pyl601_mem(address_map &map)
|
||||
void pyl601_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0xbfff).bankrw("bank1");
|
||||
@ -395,14 +395,21 @@ void pyl601_state::machine_reset()
|
||||
membank("bank2")->set_base(ram + 0xc000);
|
||||
membank("bank3")->set_base(ram + 0xe000);
|
||||
membank("bank4")->set_base(ram + 0xe700);
|
||||
membank("bank5")->set_base(memregion("maincpu")->base() + 0xf000);
|
||||
membank("bank5")->set_base(memregion("maincpu")->base());
|
||||
membank("bank6")->set_base(ram + 0xf000);
|
||||
|
||||
m_maincpu->reset();
|
||||
}
|
||||
|
||||
void pyl601_state::video_start()
|
||||
void pyl601_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_rom_page));
|
||||
save_item(NAME(m_vdisk_addr));
|
||||
save_item(NAME(m_key_code));
|
||||
save_item(NAME(m_keyboard_clk));
|
||||
save_item(NAME(m_video_mode));
|
||||
save_item(NAME(m_tick50_mark));
|
||||
save_item(NAME(m_floppy_ctrl));
|
||||
}
|
||||
|
||||
MC6845_UPDATE_ROW( pyl601_state::pyl601_update_row )
|
||||
@ -548,7 +555,7 @@ void pyl601_state::pyl601(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M6800(config, m_maincpu, 1_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pyl601_state::pyl601_mem);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pyl601_state::mem_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(pyl601_state::pyl601_interrupt));
|
||||
|
||||
/* video hardware */
|
||||
@ -594,42 +601,42 @@ void pyl601_state::pyl601a(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( pyl601 )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "bios.rom", 0xf000, 0x1000, CRC(41fe4c4b) SHA1(d8ca92aea0eb283e8d7779cb976bcdfa03e81aea))
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "bios.rom", 0x0000, 0x1000, CRC(41fe4c4b) SHA1(d8ca92aea0eb283e8d7779cb976bcdfa03e81aea))
|
||||
|
||||
ROM_REGION(0x0800, "chargen", 0)
|
||||
ROM_LOAD( "video.rom", 0x0000, 0x0800, CRC(1c23ba43) SHA1(eb1cfc139858abd0aedbbf3d523f8ba55d27a11d))
|
||||
|
||||
ROM_REGION(0x50000, "romdisk", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x50000, "romdisk", 0 )
|
||||
ROM_LOAD( "rom0.rom", 0x00000, 0x10000, CRC(60103920) SHA1(ee5b4ee5b513c4a0204da751e53d63b8c6c0aab9))
|
||||
ROM_LOAD( "rom1.rom", 0x10000, 0x10000, CRC(cb4a9b22) SHA1(dd09e4ba35b8d1a6f60e6e262aaf2f156367e385))
|
||||
ROM_LOAD( "rom2.rom", 0x20000, 0x08000, CRC(0b7684bf) SHA1(c02ad1f2a6f484cd9d178d8b060c21c0d4e53442))
|
||||
ROM_COPY("romdisk", 0x20000, 0x28000, 0x08000)
|
||||
ROM_COPY( "romdisk", 0x20000, 0x28000, 0x08000)
|
||||
ROM_LOAD( "rom3.rom", 0x30000, 0x08000, CRC(e4a86dfa) SHA1(96e6bb9ffd66f81fca63bf7491fbba81c4ff1fd2))
|
||||
ROM_COPY("romdisk", 0x30000, 0x38000, 0x08000)
|
||||
ROM_COPY( "romdisk", 0x30000, 0x38000, 0x08000)
|
||||
ROM_LOAD( "rom4.rom", 0x40000, 0x08000, CRC(d88ac21d) SHA1(022db11fdcf8db81ce9efd9cd9fa50ebca88e79e))
|
||||
ROM_COPY("romdisk", 0x40000, 0x48000, 0x08000)
|
||||
ROM_COPY( "romdisk", 0x40000, 0x48000, 0x08000)
|
||||
|
||||
ROM_REGION(0x0800, "keyboard", 0)
|
||||
ROM_LOAD( "keyboard.rom", 0x0000, 0x0800, CRC(41fbe5ca) SHA1(875adaef53bc37e92ad0b6b6ee3d8fd28344d358))
|
||||
ROM_END
|
||||
|
||||
ROM_START( pyl601a )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "bios_a.rom", 0xf000, 0x1000, CRC(e018b11e) SHA1(884d59abd5fa5af1295d1b5a53693facc7945b63))
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "bios_a.rom", 0x0000, 0x1000, CRC(e018b11e) SHA1(884d59abd5fa5af1295d1b5a53693facc7945b63))
|
||||
|
||||
ROM_REGION(0x1000, "chargen", 0)
|
||||
ROM_LOAD( "video_a.rom", 0x0000,0x1000, CRC(00fa4077) SHA1(d39d15969a08bdb768d08bea4ec9a9cb498232fd))
|
||||
|
||||
ROM_REGION(0x50000, "romdisk", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x50000, "romdisk", 0 )
|
||||
ROM_LOAD( "rom0.rom", 0x00000, 0x10000, CRC(60103920) SHA1(ee5b4ee5b513c4a0204da751e53d63b8c6c0aab9))
|
||||
ROM_LOAD( "rom1.rom", 0x10000, 0x10000, CRC(cb4a9b22) SHA1(dd09e4ba35b8d1a6f60e6e262aaf2f156367e385))
|
||||
ROM_LOAD( "rom2.rom", 0x20000, 0x08000, CRC(0b7684bf) SHA1(c02ad1f2a6f484cd9d178d8b060c21c0d4e53442))
|
||||
ROM_COPY("romdisk", 0x20000, 0x28000, 0x08000)
|
||||
ROM_COPY( "romdisk", 0x20000, 0x28000, 0x08000)
|
||||
ROM_LOAD( "rom3.rom", 0x30000, 0x08000, CRC(e4a86dfa) SHA1(96e6bb9ffd66f81fca63bf7491fbba81c4ff1fd2))
|
||||
ROM_COPY("romdisk", 0x30000, 0x38000, 0x08000)
|
||||
ROM_COPY( "romdisk", 0x30000, 0x38000, 0x08000)
|
||||
ROM_LOAD( "rom4.rom", 0x40000, 0x08000, CRC(d88ac21d) SHA1(022db11fdcf8db81ce9efd9cd9fa50ebca88e79e))
|
||||
ROM_COPY("romdisk", 0x40000, 0x48000, 0x08000)
|
||||
ROM_COPY( "romdisk", 0x40000, 0x48000, 0x08000)
|
||||
|
||||
ROM_REGION(0x0800, "keyboard", 0)
|
||||
ROM_LOAD( "keyboard.rom", 0x0000, 0x0800, CRC(41fbe5ca) SHA1(875adaef53bc37e92ad0b6b6ee3d8fd28344d358))
|
||||
@ -637,5 +644,5 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1989, pyl601, 0, 0, pyl601, pyl601, pyl601_state, init_pyl601, "Mikroelektronika", "Pyldin-601", 0 )
|
||||
COMP( 1989, pyl601a, pyl601, 0, pyl601a, pyl601, pyl601_state, init_pyl601, "Mikroelektronika", "Pyldin-601A", 0 )
|
||||
COMP( 1989, pyl601, 0, 0, pyl601, pyl601, pyl601_state, init_pyl601, "Mikroelektronika", "Pyldin-601", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1989, pyl601a, pyl601, 0, pyl601a, pyl601, pyl601_state, init_pyl601, "Mikroelektronika", "Pyldin-601A", MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user