(nw) pro80,pyl601,pipbug: cleanup

This commit is contained in:
Robbbert 2020-06-06 02:44:07 +10:00
parent 2fd4687deb
commit 88a46a4a88
3 changed files with 71 additions and 48 deletions

View File

@ -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 )

View File

@ -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 )

View File

@ -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 )