mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
(nw) more cleanups
This commit is contained in:
parent
72397ac725
commit
1ae6bbdb4f
@ -127,4 +127,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1981, cm1800, 0, 0, cm1800, cm1800, cm1800_state, empty_init, "<unknown>", "CM-1800", MACHINE_NO_SOUND_HW)
|
||||
COMP( 1981, cm1800, 0, 0, cm1800, cm1800, cm1800_state, empty_init, "<unknown>", "CM-1800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -60,12 +60,13 @@ public:
|
||||
cortex_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_rom(*this, "maincpu")
|
||||
, m_ram(*this, "mainram")
|
||||
, m_beep(*this, "beeper")
|
||||
, m_io_dsw(*this, "DSW")
|
||||
{ }
|
||||
|
||||
void cortex(machine_config &config);
|
||||
void init_init();
|
||||
|
||||
private:
|
||||
void kbd_put(u8 data);
|
||||
@ -76,18 +77,22 @@ private:
|
||||
u8 keyboard_r(offs_t offset);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
bool m_rom_in_map;
|
||||
bool m_kbd_ack;
|
||||
bool m_vdp_int;
|
||||
u8 m_term_data;
|
||||
virtual void machine_reset() override;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
required_device<tms9995_device> m_maincpu;
|
||||
required_region_ptr<u8> m_rom;
|
||||
required_shared_ptr<u8> m_ram;
|
||||
required_device<beep_device> m_beep;
|
||||
required_ioport m_io_dsw;
|
||||
};
|
||||
|
||||
void cortex_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).bankr("bankr0").bankw("bankw0");
|
||||
map(0x0000, 0x7fff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; }));
|
||||
map(0x8000, 0xefff).ram();
|
||||
map(0xf100, 0xf11f).ram(); // memory mapping unit
|
||||
map(0xf120, 0xf121).rw("crtc", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
|
||||
@ -154,7 +159,7 @@ WRITE_LINE_MEMBER( cortex_state::keyboard_ack_w )
|
||||
|
||||
WRITE_LINE_MEMBER( cortex_state::romsw_w )
|
||||
{
|
||||
membank("bankr0")->set_entry(state ? 0 : 1);
|
||||
m_rom_in_map = state ? 0 : 1;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( cortex_state::vdp_int_w )
|
||||
@ -169,26 +174,24 @@ void cortex_state::kbd_put(u8 data)
|
||||
m_maincpu->set_input_line(INT_9995_INT4, ASSERT_LINE);
|
||||
}
|
||||
|
||||
void cortex_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_rom_in_map));
|
||||
save_item(NAME(m_kbd_ack));
|
||||
save_item(NAME(m_vdp_int));
|
||||
save_item(NAME(m_term_data));
|
||||
}
|
||||
|
||||
void cortex_state::machine_reset()
|
||||
{
|
||||
m_kbd_ack = 1;
|
||||
m_vdp_int = 0;
|
||||
m_beep->set_state(0);
|
||||
membank("bankr0")->set_entry(1); // point at rom
|
||||
membank("bankw0")->set_entry(0); // always write to ram
|
||||
m_rom_in_map = true;
|
||||
m_maincpu->ready_line(ASSERT_LINE);
|
||||
m_maincpu->reset_line(ASSERT_LINE);
|
||||
}
|
||||
|
||||
void cortex_state::init_init()
|
||||
{
|
||||
u8 *main = memregion("maincpu")->base();
|
||||
|
||||
membank("bankr0")->configure_entry(1, &main[0x10000]);
|
||||
membank("bankr0")->configure_entry(0, &main[0x00000]);
|
||||
membank("bankw0")->configure_entry(0, &main[0x00000]);
|
||||
}
|
||||
|
||||
void cortex_state::cortex(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
@ -230,17 +233,17 @@ void cortex_state::cortex(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( cortex )
|
||||
ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS(0, "basic", "Cortex Bios")
|
||||
ROMX_LOAD( "cortex.ic47", 0x10000, 0x2000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f), ROM_BIOS(0))
|
||||
ROMX_LOAD( "cortex.ic46", 0x12000, 0x2000, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9), ROM_BIOS(0))
|
||||
ROMX_LOAD( "cortex.ic45", 0x14000, 0x2000, CRC(b0c9b6e8) SHA1(4e20c3f0b7546b803da4805cd3b8616f96c3d923), ROM_BIOS(0))
|
||||
ROMX_LOAD( "cortex.ic47", 0x0000, 0x2000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f), ROM_BIOS(0))
|
||||
ROMX_LOAD( "cortex.ic46", 0x2000, 0x2000, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9), ROM_BIOS(0))
|
||||
ROMX_LOAD( "cortex.ic45", 0x4000, 0x2000, CRC(b0c9b6e8) SHA1(4e20c3f0b7546b803da4805cd3b8616f96c3d923), ROM_BIOS(0))
|
||||
ROM_SYSTEM_BIOS(1, "forth", "FIG-Forth")
|
||||
ROMX_LOAD( "forth.ic47", 0x10000, 0x2000, CRC(999034be) SHA1(0dcc7404c38aa0ae913101eb0aa98da82104b5d4), ROM_BIOS(1))
|
||||
ROMX_LOAD( "forth.ic46", 0x12000, 0x2000, CRC(8eca54cc) SHA1(0f1680e941ef60bb9bde9a4b843b78f30dff3202), ROM_BIOS(1))
|
||||
ROMX_LOAD( "forth.ic47", 0x0000, 0x2000, CRC(999034be) SHA1(0dcc7404c38aa0ae913101eb0aa98da82104b5d4), ROM_BIOS(1))
|
||||
ROMX_LOAD( "forth.ic46", 0x2000, 0x2000, CRC(8eca54cc) SHA1(0f1680e941ef60bb9bde9a4b843b78f30dff3202), ROM_BIOS(1))
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, init_init, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING )
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, empty_init, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -128,7 +128,8 @@ private:
|
||||
void mem_map(address_map &map);
|
||||
|
||||
u8 m_term_data;
|
||||
virtual void machine_reset() override;
|
||||
void machine_start() override;
|
||||
void machine_reset() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<generic_terminal_device> m_terminal;
|
||||
required_device<upd765a_device> m_fdc;
|
||||
@ -174,6 +175,11 @@ void d6809_state::kbd_put(u8 data)
|
||||
m_term_data = data;
|
||||
}
|
||||
|
||||
void d6809_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_term_data));
|
||||
}
|
||||
|
||||
void d6809_state::machine_reset()
|
||||
{
|
||||
m_fdc->set_ready_line_connected(1);
|
||||
@ -217,4 +223,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1983, d6809, 0, 0, d6809, d6809, d6809_state, empty_init, "Dunfield", "6809 Portable", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1983, d6809, 0, 0, d6809, d6809, d6809_state, empty_init, "Dunfield", "6809 Portable", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -93,22 +93,22 @@ private:
|
||||
void portb_w(u8 data);
|
||||
u8 port08_r();
|
||||
void port08_w(u8 data);
|
||||
u8 mem_r(offs_t offset);
|
||||
void mem_w(offs_t offset, u8 data);
|
||||
DECLARE_WRITE_LINE_MEMBER(kansas_w);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kansas_r);
|
||||
void kbd_put(u8 data);
|
||||
|
||||
void dg680_io(address_map &map);
|
||||
void dg680_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
|
||||
u8 m_pio_b;
|
||||
u8 m_term_data;
|
||||
u8 m_protection[0x100];
|
||||
virtual void machine_reset() override;
|
||||
|
||||
u8 m_cass_data[4];
|
||||
bool m_cassold, m_cassinbit, m_cassoutbit;
|
||||
u8 mem_r(offs_t offset);
|
||||
void mem_w(offs_t offset, u8 data);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
@ -175,16 +175,16 @@ void dg680_state::mem_w(offs_t offset, u8 data)
|
||||
}
|
||||
|
||||
|
||||
void dg680_state::dg680_mem(address_map &map)
|
||||
void dg680_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0xcfff).ram();
|
||||
map(0xd000, 0xd7ff).rom();
|
||||
map(0xd000, 0xd7ff).rom().region("maincpu", 0);
|
||||
map(0xd800, 0xefff).ram();
|
||||
map(0xf000, 0xffff).rw(FUNC(dg680_state::mem_r),FUNC(dg680_state::mem_w));
|
||||
}
|
||||
|
||||
void dg680_state::dg680_io(address_map &map)
|
||||
void dg680_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map.global_mask(0xff);
|
||||
@ -196,6 +196,17 @@ void dg680_state::dg680_io(address_map &map)
|
||||
//map(0x0c,0x0d).rw("am9519", FUNC(am9519_device::read), FUNC(am9519_device::write));
|
||||
}
|
||||
|
||||
void dg680_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_pio_b));
|
||||
save_item(NAME(m_term_data));
|
||||
save_item(NAME(m_protection));
|
||||
save_item(NAME(m_cass_data));
|
||||
save_item(NAME(m_cassold));
|
||||
save_item(NAME(m_cassinbit));
|
||||
save_item(NAME(m_cassoutbit));
|
||||
}
|
||||
|
||||
void dg680_state::machine_reset()
|
||||
{
|
||||
m_maincpu->set_pc(0xd000);
|
||||
@ -285,8 +296,8 @@ void dg680_state::dg680(machine_config &config)
|
||||
|
||||
/* basic machine hardware */
|
||||
z80_device& maincpu(Z80(config, m_maincpu, XTAL(8'000'000) / 4));
|
||||
maincpu.set_addrmap(AS_PROGRAM, &dg680_state::dg680_mem);
|
||||
maincpu.set_addrmap(AS_IO, &dg680_state::dg680_io);
|
||||
maincpu.set_addrmap(AS_PROGRAM, &dg680_state::mem_map);
|
||||
maincpu.set_addrmap(AS_IO, &dg680_state::io_map);
|
||||
maincpu.set_daisy_config(dg680_daisy_chain);
|
||||
|
||||
/* Keyboard */
|
||||
@ -313,8 +324,8 @@ void dg680_state::dg680(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( dg680 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "dg680.rom", 0xd000, 0x0800, BAD_DUMP CRC(c1aaef6a) SHA1(1508ca8315452edfb984718e795ccbe79a0c0b58) )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "dg680.rom", 0x0000, 0x0800, BAD_DUMP CRC(c1aaef6a) SHA1(1508ca8315452edfb984718e795ccbe79a0c0b58) )
|
||||
|
||||
ROM_REGION( 0x0020, "proms", 0 )
|
||||
ROM_LOAD( "82s123.bin", 0x0000, 0x0020, NO_DUMP )
|
||||
@ -323,4 +334,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1980, dg680, 0, 0, dg680, dg680, dg680_state, empty_init, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1980, dg680, 0, 0, dg680, dg680, dg680_state, empty_init, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -77,12 +77,13 @@ private:
|
||||
void kbd_put(u8 data);
|
||||
MC6845_UPDATE_ROW(crtc_update_row);
|
||||
|
||||
void dim68k_mem(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
bool m_speaker_bit;
|
||||
u8 m_video_control;
|
||||
u8 m_term_data;
|
||||
virtual void machine_reset() override;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mc6845_device> m_crtc;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
@ -189,7 +190,7 @@ void dim68k_state::dim68k_banksw_w(u16 data)
|
||||
{
|
||||
}
|
||||
|
||||
void dim68k_state::dim68k_mem(address_map &map)
|
||||
void dim68k_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x00000000, 0x00feffff).ram().share("ram"); // 16MB RAM / ROM at boot
|
||||
@ -310,11 +311,18 @@ void dim68k_state::kbd_put(u8 data)
|
||||
m_term_data = data;
|
||||
}
|
||||
|
||||
void dim68k_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_speaker_bit));
|
||||
save_item(NAME(m_video_control));
|
||||
save_item(NAME(m_term_data));
|
||||
}
|
||||
|
||||
void dim68k_state::dim68k(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(10'000'000));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dim68k_state::dim68k_mem);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dim68k_state::mem_map);
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
@ -406,4 +414,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1984, dim68k, 0, 0, dim68k, dim68k, dim68k_state, empty_init, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING)
|
||||
COMP( 1984, dim68k, 0, 0, dim68k, dim68k, dim68k_state, empty_init, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -110,8 +110,9 @@ private:
|
||||
void port00_w(offs_t offset, u8 data);
|
||||
void port06_w(u8 data);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kansas_w);
|
||||
void dauphin_io(address_map &map);
|
||||
void dauphin_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
void machine_start() override;
|
||||
|
||||
u8 m_cass_data;
|
||||
u8 m_last_key;
|
||||
@ -182,7 +183,16 @@ TIMER_DEVICE_CALLBACK_MEMBER(dauphin_state::kansas_w)
|
||||
m_cass->output(BIT(m_cass_data, 0) ? -1.0 : +1.0); // 2000Hz
|
||||
}
|
||||
|
||||
void dauphin_state::dauphin_mem(address_map &map)
|
||||
void dauphin_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_cass_data));
|
||||
save_item(NAME(m_last_key));
|
||||
save_item(NAME(m_cassbit));
|
||||
save_item(NAME(m_cassold));
|
||||
save_item(NAME(m_speaker_state));
|
||||
}
|
||||
|
||||
void dauphin_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x01ff).rom();
|
||||
@ -190,7 +200,7 @@ void dauphin_state::dauphin_mem(address_map &map)
|
||||
map(0x0c00, 0x0fff).rom();
|
||||
}
|
||||
|
||||
void dauphin_state::dauphin_io(address_map &map)
|
||||
void dauphin_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x00, 0x03).w(FUNC(dauphin_state::port00_w)); // 4-led display
|
||||
@ -230,8 +240,8 @@ void dauphin_state::dauphin(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
S2650(config, m_maincpu, XTAL(1'000'000));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dauphin_state::dauphin_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &dauphin_state::dauphin_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dauphin_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dauphin_state::io_map);
|
||||
m_maincpu->sense_handler().set(FUNC(dauphin_state::cass_r));
|
||||
m_maincpu->flag_handler().set([this] (bool state) { m_cassbit = state; });
|
||||
|
||||
@ -269,4 +279,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1979, dauphin, 0, 0, dauphin, dauphin, dauphin_state, empty_init, "LCD EPFL Stoppani", "Dauphin", 0 )
|
||||
COMP( 1979, dauphin, 0, 0, dauphin, dauphin, dauphin_state, empty_init, "LCD EPFL Stoppani", "Dauphin", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -29,16 +29,18 @@ public:
|
||||
dps1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_rom(*this, "maincpu")
|
||||
, m_ram(*this, "mainram")
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_floppy0(*this, "fdc:0")
|
||||
//, m_floppy1(*this, "fdc:1")
|
||||
{ }
|
||||
|
||||
void dps1(machine_config &config);
|
||||
void init_dps1();
|
||||
|
||||
private:
|
||||
virtual void machine_reset() override;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
void portb2_w(u8 data);
|
||||
void portb4_w(u8 data);
|
||||
void portb6_w(u8 data);
|
||||
@ -52,9 +54,12 @@ private:
|
||||
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
bool m_rom_in_map;
|
||||
bool m_dma_dir;
|
||||
u16 m_dma_adr;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_region_ptr<u8> m_rom;
|
||||
required_shared_ptr<u8> m_ram;
|
||||
required_device<upd765_family_device> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
//required_device<floppy_connector> m_floppy1;
|
||||
@ -62,7 +67,7 @@ private:
|
||||
|
||||
void dps1_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x03ff).bankr("bankr0").bankw("bankw0");
|
||||
map(0x0000, 0x03ff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; }));
|
||||
map(0x0400, 0xffff).ram();
|
||||
}
|
||||
|
||||
@ -108,7 +113,7 @@ void dps1_state::portb4_w(u8 data)
|
||||
// enable eprom
|
||||
void dps1_state::portb6_w(u8 data)
|
||||
{
|
||||
membank("bankr0")->set_entry(1); // point at rom
|
||||
m_rom_in_map = true;
|
||||
}
|
||||
|
||||
// set A16-23
|
||||
@ -131,7 +136,7 @@ void dps1_state::portbc_w(u8 data)
|
||||
// disable eprom
|
||||
void dps1_state::portbe_w(u8 data)
|
||||
{
|
||||
membank("bankr0")->set_entry(0); // point at ram
|
||||
m_rom_in_map = false;
|
||||
}
|
||||
|
||||
// read 8 front-panel switches
|
||||
@ -166,10 +171,16 @@ WRITE_LINE_MEMBER( dps1_state::fdc_drq_w )
|
||||
// else take /dack high (unsupported)
|
||||
}
|
||||
|
||||
void dps1_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_rom_in_map));
|
||||
save_item(NAME(m_dma_dir));
|
||||
save_item(NAME(m_dma_adr));
|
||||
}
|
||||
|
||||
void dps1_state::machine_reset()
|
||||
{
|
||||
membank("bankr0")->set_entry(1); // point at rom
|
||||
membank("bankw0")->set_entry(0); // always write to ram
|
||||
m_rom_in_map = true;
|
||||
// set fdc for 8 inch floppies
|
||||
m_fdc->set_rate(500000);
|
||||
// turn on the motor
|
||||
@ -178,15 +189,6 @@ void dps1_state::machine_reset()
|
||||
floppy->mon_w(0);
|
||||
}
|
||||
|
||||
void dps1_state::init_dps1()
|
||||
{
|
||||
u8 *main = memregion("maincpu")->base();
|
||||
|
||||
membank("bankr0")->configure_entry(1, &main[0x0000]);
|
||||
membank("bankr0")->configure_entry(0, &main[0x0400]);
|
||||
membank("bankw0")->configure_entry(0, &main[0x0400]);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( dps1 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -228,8 +230,8 @@ void dps1_state::dps1(machine_config &config)
|
||||
}
|
||||
|
||||
ROM_START( dps1 )
|
||||
ROM_REGION( 0x800, "maincpu", 0 )
|
||||
ROM_LOAD( "boot 1280", 0x000, 0x400, CRC(9c2e98fa) SHA1(78e6c9d00aa6e8f6c4d3c65984cfdf4e99434c66) ) // actually on the FDC-2 board
|
||||
ROM_REGION( 0x0400, "maincpu", 0 )
|
||||
ROM_LOAD( "boot 1280", 0x0000, 0x0400, CRC(9c2e98fa) SHA1(78e6c9d00aa6e8f6c4d3c65984cfdf4e99434c66) ) // actually on the FDC-2 board
|
||||
ROM_END
|
||||
|
||||
COMP( 1979, dps1, 0, 0, dps1, dps1, dps1_state, init_dps1, "Ithaca InterSystems", "DPS-1", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1979, dps1, 0, 0, dps1, dps1, dps1_state, empty_init, "Ithaca InterSystems", "DPS-1", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -40,26 +40,31 @@ public:
|
||||
dsb46_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_rom(*this, "maincpu")
|
||||
, m_ram(*this, "mainram")
|
||||
{ }
|
||||
|
||||
void dsb46(machine_config &config);
|
||||
void init_dsb46();
|
||||
|
||||
private:
|
||||
virtual void machine_reset() override;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
void port1a_w(u8 data);
|
||||
void dsb46_io(address_map &map);
|
||||
void dsb46_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
bool m_rom_in_map;
|
||||
required_device<z80_device> m_maincpu;
|
||||
required_region_ptr<u8> m_rom;
|
||||
required_shared_ptr<u8> m_ram;
|
||||
};
|
||||
|
||||
void dsb46_state::dsb46_mem(address_map &map)
|
||||
void dsb46_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x07ff).bankr("read").bankw("write");
|
||||
map(0x0000, 0x07ff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; }));
|
||||
map(0x0800, 0xffff).ram();
|
||||
}
|
||||
|
||||
void dsb46_state::dsb46_io(address_map &map)
|
||||
void dsb46_state::io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map.unmap_value_high();
|
||||
@ -76,24 +81,19 @@ void dsb46_state::dsb46_io(address_map &map)
|
||||
static INPUT_PORTS_START( dsb46 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void dsb46_state::init_dsb46()
|
||||
void dsb46_state::machine_start()
|
||||
{
|
||||
u8 *RAM = memregion("maincpu")->base();
|
||||
membank("read")->configure_entry(0, &RAM[0x10000]);
|
||||
membank("read")->configure_entry(1, &RAM[0x00000]);
|
||||
membank("write")->configure_entry(0, &RAM[0x00000]);
|
||||
save_item(NAME(m_rom_in_map));
|
||||
}
|
||||
|
||||
void dsb46_state::machine_reset()
|
||||
{
|
||||
membank("read")->set_entry(0);
|
||||
membank("write")->set_entry(0);
|
||||
m_maincpu->reset();
|
||||
m_rom_in_map = true;
|
||||
}
|
||||
|
||||
void dsb46_state::port1a_w(u8 data)
|
||||
{
|
||||
membank("read")->set_entry(data & 1);
|
||||
m_rom_in_map = BIT(~data, 0);
|
||||
}
|
||||
|
||||
static const z80_daisy_config daisy_chain[] =
|
||||
@ -108,8 +108,8 @@ void dsb46_state::dsb46(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, 24_MHz_XTAL / 6);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dsb46_state::dsb46_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &dsb46_state::dsb46_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dsb46_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dsb46_state::io_map);
|
||||
m_maincpu->set_daisy_config(daisy_chain);
|
||||
|
||||
/* Devices */
|
||||
@ -134,11 +134,11 @@ void dsb46_state::dsb46(machine_config &config)
|
||||
}
|
||||
|
||||
ROM_START( dsb46 )
|
||||
ROM_REGION( 0x10800, "maincpu", 0 )
|
||||
ROM_LOAD( "1538a.bin", 0x10000, 0x800, CRC(65b3e26e) SHA1(afe1f03f266b7d13fdb1f1bc6762df5e0aa5c764) )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "1538a.bin", 0x0000, 0x0800, CRC(65b3e26e) SHA1(afe1f03f266b7d13fdb1f1bc6762df5e0aa5c764) )
|
||||
|
||||
ROM_REGION( 0x4000, "ades", 0 )
|
||||
ROM_LOAD( "ades.bin", 0x0000, 0x4000, CRC(d374abf0) SHA1(331f51a2bb81375aeffbe63c1ebc1d7cd779b9c3) )
|
||||
ROM_END
|
||||
|
||||
COMP( 198?, dsb46, 0, 0, dsb46, dsb46, dsb46_state, init_dsb46, "Davidge", "DSB-4/6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 198?, dsb46, 0, 0, dsb46, dsb46, dsb46_state, empty_init, "Davidge", "DSB-4/6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -41,13 +41,14 @@ private:
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void kbd_put(u8 data);
|
||||
|
||||
void jonos_mem(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
u8 m_framecnt;
|
||||
u8 m_term_data;
|
||||
u8 m_curs_ctrl;
|
||||
u16 m_curs_pos;
|
||||
virtual void machine_reset() override;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_shared_ptr<u8> m_p_videoram;
|
||||
required_region_ptr<u8> m_p_chargen;
|
||||
@ -55,7 +56,7 @@ private:
|
||||
|
||||
|
||||
|
||||
void jonos_state::jonos_mem(address_map &map)
|
||||
void jonos_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x0fff).rom().region("roms", 0);
|
||||
@ -105,6 +106,14 @@ void jonos_state::cursor_w(offs_t offset, u8 data)
|
||||
m_curs_pos = (m_curs_pos & 0xff) | (data << 8);
|
||||
}
|
||||
|
||||
void jonos_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_term_data));
|
||||
save_item(NAME(m_curs_ctrl));
|
||||
save_item(NAME(m_curs_pos));
|
||||
save_item(NAME(m_framecnt));
|
||||
}
|
||||
|
||||
void jonos_state::machine_reset()
|
||||
{
|
||||
m_curs_ctrl = 0;
|
||||
@ -179,7 +188,7 @@ void jonos_state::jonos(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
I8085A(config, m_maincpu, XTAL(16'000'000) / 4);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jonos_state::jonos_mem);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jonos_state::mem_map);
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
@ -213,4 +222,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 198?, jonos, 0, 0, jonos, jonos, jonos_state, empty_init, "Jonos", "Escort", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
COMP( 198?, jonos, 0, 0, jonos, jonos, jonos_state, empty_init, "Jonos", "Escort", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -167,6 +167,8 @@ INPUT_PORTS_END
|
||||
|
||||
void microdec_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_portf8));
|
||||
save_item(NAME(m_fdc_rdy));
|
||||
}
|
||||
|
||||
void microdec_state::machine_reset()
|
||||
@ -263,5 +265,5 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1982, md2, 0, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1982, md3, md2, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1982, md2, 0, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1982, md3, md2, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -20,30 +20,31 @@ class mz6500_state : public driver_device
|
||||
{
|
||||
public:
|
||||
mz6500_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_hgdc(*this, "upd7220"),
|
||||
m_fdc(*this, "upd765"),
|
||||
m_video_ram(*this, "video_ram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_palette(*this, "palette") { }
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_hgdc(*this, "upd7220")
|
||||
, m_fdc(*this, "upd765")
|
||||
, m_vram(*this, "videoram")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
void mz6500(machine_config &config);
|
||||
|
||||
private:
|
||||
required_device<upd7220_device> m_hgdc;
|
||||
required_device<upd765a_device> m_fdc;
|
||||
uint8_t mz6500_vram_r(offs_t offset);
|
||||
void mz6500_vram_w(offs_t offset, uint8_t data);
|
||||
u8 vram_r(offs_t offset);
|
||||
void vram_w(offs_t offset, u8 data);
|
||||
void fdc_irq(bool state);
|
||||
void fdc_drq(bool state);
|
||||
required_shared_ptr<uint16_t> m_video_ram;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
required_shared_ptr<u16> m_vram;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<palette_device> m_palette;
|
||||
UPD7220_DISPLAY_PIXELS_MEMBER( hgdc_display_pixels );
|
||||
void mz6500_io(address_map &map);
|
||||
void mz6500_map(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
void upd7220_map(address_map &map);
|
||||
};
|
||||
|
||||
@ -51,11 +52,11 @@ UPD7220_DISPLAY_PIXELS_MEMBER( mz6500_state::hgdc_display_pixels )
|
||||
{
|
||||
const rgb_t *palette = m_palette->palette()->entry_list_raw();
|
||||
int gfx[3];
|
||||
uint8_t i,pen;
|
||||
u8 i,pen;
|
||||
|
||||
gfx[0] = m_video_ram[(address + 0x00000) >> 1];
|
||||
gfx[1] = m_video_ram[(address + 0x10000) >> 1];
|
||||
gfx[2] = m_video_ram[(address + 0x20000) >> 1];
|
||||
gfx[0] = m_vram[(address + 0x00000) >> 1];
|
||||
gfx[1] = m_vram[(address + 0x10000) >> 1];
|
||||
gfx[2] = m_vram[(address + 0x20000) >> 1];
|
||||
|
||||
for(i=0; i<16; i++)
|
||||
{
|
||||
@ -66,34 +67,29 @@ UPD7220_DISPLAY_PIXELS_MEMBER( mz6500_state::hgdc_display_pixels )
|
||||
}
|
||||
|
||||
|
||||
void mz6500_state::video_start()
|
||||
u8 mz6500_state::vram_r(offs_t offset)
|
||||
{
|
||||
return m_vram[offset >> 1] >> ((offset & 1) ? 8 : 0);
|
||||
}
|
||||
|
||||
|
||||
uint8_t mz6500_state::mz6500_vram_r(offs_t offset)
|
||||
{
|
||||
return m_video_ram[offset >> 1] >> ((offset & 1) ? 8 : 0);
|
||||
}
|
||||
|
||||
void mz6500_state::mz6500_vram_w(offs_t offset, uint8_t data)
|
||||
void mz6500_state::vram_w(offs_t offset, u8 data)
|
||||
{
|
||||
int mask = (offset & 1) ? 8 : 0;
|
||||
offset >>= 1;
|
||||
m_video_ram[offset] &= 0xff00 >> mask;
|
||||
m_video_ram[offset] |= data << mask;
|
||||
m_vram[offset] &= 0xff00 >> mask;
|
||||
m_vram[offset] |= data << mask;
|
||||
}
|
||||
|
||||
void mz6500_state::mz6500_map(address_map &map)
|
||||
void mz6500_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x00000, 0x9ffff).ram();
|
||||
// map(0xa0000,0xbffff) kanji/dictionary ROM
|
||||
map(0xc0000, 0xeffff).rw(FUNC(mz6500_state::mz6500_vram_r), FUNC(mz6500_state::mz6500_vram_w));
|
||||
map(0xc0000, 0xeffff).rw(FUNC(mz6500_state::vram_r), FUNC(mz6500_state::vram_w));
|
||||
map(0xfc000, 0xfffff).rom().region("ipl", 0);
|
||||
}
|
||||
|
||||
void mz6500_state::mz6500_io(address_map &map)
|
||||
void mz6500_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
// map(0x0000, 0x000f) i8237 dma
|
||||
@ -124,6 +120,10 @@ static INPUT_PORTS_START( mz6500 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void mz6500_state::machine_start()
|
||||
{
|
||||
}
|
||||
|
||||
void mz6500_state::machine_reset()
|
||||
{
|
||||
}
|
||||
@ -145,7 +145,7 @@ static void mz6500_floppies(device_slot_interface &device)
|
||||
|
||||
void mz6500_state::upd7220_map(address_map &map)
|
||||
{
|
||||
map(0x00000, 0x3ffff).ram().share("video_ram");
|
||||
map(0x00000, 0x3ffff).ram().share("videoram");
|
||||
}
|
||||
|
||||
|
||||
@ -153,9 +153,8 @@ void mz6500_state::mz6500(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
I8086(config, m_maincpu, 8000000); //unk clock
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &mz6500_state::mz6500_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &mz6500_state::mz6500_io);
|
||||
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &mz6500_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &mz6500_state::io_map);
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
@ -191,4 +190,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 198?, mz6500, 0, 0, mz6500, mz6500, mz6500_state, empty_init, "Sharp", "MZ-6500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
COMP( 198?, mz6500, 0, 0, mz6500, mz6500, mz6500_state, empty_init, "Sharp", "MZ-6500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user