mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
sapi,homez80,dms5000,bob85,a7150: minor cleanup
This commit is contained in:
parent
36efc0599b
commit
28c22e101a
@ -2,20 +2,23 @@
|
||||
// copyright-holders:Miodrag Milanovic, Sergey Svishchev
|
||||
/***************************************************************************
|
||||
|
||||
Robotron A7150
|
||||
Robotron A7150
|
||||
|
||||
04/10/2009 Skeleton driver.
|
||||
2009-10-04 Skeleton driver.
|
||||
|
||||
http://www.robotrontechnik.de/index.htm?/html/computer/a7150.htm
|
||||
http://www.robotrontechnik.de/index.htm?/html/computer/a7150.htm
|
||||
|
||||
http://www.tiffe.de/Robotron/MMS16/
|
||||
- Confidence test is documented in A7150_Rechner...pdf, pp. 112-119
|
||||
- Internal test of KGS -- in KGS-K7070.pdf, pp. 19-23
|
||||
http://www.tiffe.de/Robotron/MMS16/
|
||||
- Confidence test is documented in A7150_Rechner...pdf, pp. 112-119
|
||||
- Internal test of KGS -- in KGS-K7070.pdf, pp. 19-23
|
||||
|
||||
To do:
|
||||
- MMS16 (Multibus clone) and slot devices
|
||||
- native keyboard
|
||||
- A7100 model
|
||||
After about a minute, the self-test will appear.
|
||||
|
||||
To do:
|
||||
- Machine hangs when screen should scroll
|
||||
- MMS16 (Multibus clone) and slot devices
|
||||
- native keyboard
|
||||
- A7100 model
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
@ -109,8 +112,8 @@ private:
|
||||
required_device<address_map_bank_device> m_video_bankdev;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
void a7150_io(address_map &map);
|
||||
void a7150_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
void k7070_cpu_banked(address_map &map);
|
||||
void k7070_cpu_io(address_map &map);
|
||||
void k7070_cpu_mem(address_map &map);
|
||||
@ -313,14 +316,14 @@ void a7150_state::a7150_kgs_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
|
||||
|
||||
void a7150_state::a7150_mem(address_map &map)
|
||||
void a7150_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x00000, 0xf7fff).ram();
|
||||
map(0xf8000, 0xfffff).rom().region("user1", 0);
|
||||
map(0xf8000, 0xfffff).rom().region("maincpu", 0);
|
||||
}
|
||||
|
||||
void a7150_state::a7150_io(address_map &map)
|
||||
void a7150_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x004a, 0x004a).w("isbc_215g", FUNC(isbc_215g_device::write)); // KES board
|
||||
@ -448,6 +451,12 @@ void a7150_state::machine_reset()
|
||||
|
||||
void a7150_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_kgs_msel));
|
||||
save_item(NAME(m_kgs_iml));
|
||||
save_item(NAME(m_kgs_datao));
|
||||
save_item(NAME(m_kgs_datai));
|
||||
save_item(NAME(m_kgs_ctrl));
|
||||
save_item(NAME(m_ifss_loopback));
|
||||
}
|
||||
|
||||
static const z80_daisy_config k7070_daisy_chain[] =
|
||||
@ -469,8 +478,8 @@ static const z80_daisy_config k7070_daisy_chain[] =
|
||||
void a7150_state::a7150(machine_config &config)
|
||||
{
|
||||
I8086(config, m_maincpu, XTAL(9'832'000)/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &a7150_state::a7150_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &a7150_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &a7150_state::io_map);
|
||||
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
|
||||
m_maincpu->esc_opcode_handler().set("i8087", FUNC(i8087_device::insn_w));
|
||||
m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
|
||||
@ -567,7 +576,7 @@ void a7150_state::a7150(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( a7150 )
|
||||
ROM_REGION16_LE( 0x10000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_LE( 0x8000, "maincpu", 0 )
|
||||
ROM_DEFAULT_BIOS("2.3")
|
||||
|
||||
// A7100
|
||||
@ -596,7 +605,7 @@ ROM_START( a7150 )
|
||||
ROMX_LOAD("275.rom", 0x4000, 0x2000, CRC(0da54426) SHA1(7492caff98b1d1a896c5964942b17beadf996b60), ROM_BIOS(3) | ROM_SKIP(1))
|
||||
ROMX_LOAD("276.rom", 0x0000, 0x2000, CRC(5924192a) SHA1(eb494d9f96a0b3ea69f4b9cb2b7add66a8c16946), ROM_BIOS(3) | ROM_SKIP(1))
|
||||
|
||||
ROM_REGION( 0x10000, "user2", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x2000, "user2", ROMREGION_ERASEFF )
|
||||
// ROM from A7100
|
||||
ROM_LOAD( "kgs7070-152.bin", 0x0000, 0x2000, CRC(403f4235) SHA1(d07ccd40f8b600651d513f588bcf1ea4f15ed094))
|
||||
// ROM_LOAD( "kgs7070-153.rom", 0x0000, 0x2000, CRC(a72fe820) SHA1(4b77ab2b59ea8c3632986847ff359df26b16196b))
|
||||
@ -606,4 +615,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1986, a7150, 0, 0, a7150, a7150, a7150_state, empty_init, "VEB Robotron", "A7150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
COMP( 1986, a7150, 0, 0, a7150, a7150, a7150_state, empty_init, "VEB Robotron", "A7150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -46,8 +46,8 @@ public:
|
||||
void bob85(machine_config &config);
|
||||
|
||||
private:
|
||||
void bob85_io(address_map &map);
|
||||
void bob85_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
uint8_t bob85_keyboard_r();
|
||||
void bob85_7seg_w(offs_t offset, uint8_t data);
|
||||
DECLARE_WRITE_LINE_MEMBER(sod_w);
|
||||
@ -57,8 +57,7 @@ private:
|
||||
uint8_t m_count_key;
|
||||
u16 m_casscnt;
|
||||
bool m_cassold, m_cassbit;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
void machine_start() override;
|
||||
required_device<i8085a_cpu_device> m_maincpu;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
required_ioport m_line0;
|
||||
@ -145,14 +144,14 @@ void bob85_state::bob85_7seg_w(offs_t offset, uint8_t data)
|
||||
m_digits[offset] = bitswap<8>( data,3,2,1,0,7,6,5,4 );
|
||||
}
|
||||
|
||||
void bob85_state::bob85_mem(address_map &map)
|
||||
void bob85_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x02ff).rom();
|
||||
map(0x0600, 0x09ff).ram();
|
||||
}
|
||||
|
||||
void bob85_state::bob85_io(address_map &map)
|
||||
void bob85_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0a, 0x0a).r(FUNC(bob85_state::bob85_keyboard_r));
|
||||
@ -191,8 +190,14 @@ static INPUT_PORTS_START( bob85 )
|
||||
PORT_BIT(0xC0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void bob85_state::machine_reset()
|
||||
void bob85_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
save_item(NAME(m_prev_key));
|
||||
save_item(NAME(m_count_key));
|
||||
save_item(NAME(m_casscnt));
|
||||
save_item(NAME(m_cassold));
|
||||
save_item(NAME(m_cassbit));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( bob85_state::kansas_r )
|
||||
@ -229,8 +234,8 @@ void bob85_state::bob85(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
I8085A(config, m_maincpu, XTAL(5'000'000));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &bob85_state::bob85_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &bob85_state::bob85_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &bob85_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &bob85_state::io_map);
|
||||
m_maincpu->in_sid_func().set(FUNC(bob85_state::sid_r));
|
||||
m_maincpu->out_sod_func().set(FUNC(bob85_state::sod_w));
|
||||
|
||||
@ -247,11 +252,11 @@ void bob85_state::bob85(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( bob85 )
|
||||
ROM_REGION( 0x600, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x0300, "maincpu", 0 )
|
||||
ROM_LOAD( "bob85.rom", 0x0000, 0x0300, BAD_DUMP CRC(adde33a8) SHA1(00f26dd0c52005e7705e6cc9cb11a20e572682c6) ) // should be 6 separate 74S287's (256x4)
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1984, bob85, 0, 0, bob85, bob85, bob85_state, empty_init, "Josef Kratochvil", "BOB-85", MACHINE_NO_SOUND_HW)
|
||||
COMP( 1984, bob85, 0, 0, bob85, bob85, bob85_state, empty_init, "Josef Kratochvil", "BOB-85", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -2,9 +2,9 @@
|
||||
// copyright-holders:Miodrag Milanovic
|
||||
/***************************************************************************
|
||||
|
||||
Digital Microsystems DMS-5000
|
||||
Digital Microsystems DMS-5000
|
||||
|
||||
11/01/2010 Skeleton driver.
|
||||
2010-01-11 Skeleton driver.
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
@ -30,11 +30,9 @@ public:
|
||||
private:
|
||||
uint8_t status_r(offs_t offset);
|
||||
void brightness_w(uint8_t data);
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
uint32_t screen_update_dms5000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void dms5000_io(address_map &map);
|
||||
void dms5000_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<screen_device> m_screen;
|
||||
@ -60,15 +58,15 @@ void dms5000_state::brightness_w(uint8_t data)
|
||||
{
|
||||
}
|
||||
|
||||
void dms5000_state::dms5000_mem(address_map &map)
|
||||
void dms5000_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x00000, 0x1ffff).ram();
|
||||
map(0x40000, 0x4ffff).ram();
|
||||
map(0xfc000, 0xfffff).rom().region("user1", 0);
|
||||
map(0xfc000, 0xfffff).rom().region("maincpu", 0);
|
||||
}
|
||||
|
||||
void dms5000_state::dms5000_io(address_map &map)
|
||||
void dms5000_state::io_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x20, 0x2f).r(FUNC(dms5000_state::status_r)).umask16(0xff00);
|
||||
@ -81,14 +79,6 @@ static INPUT_PORTS_START( dms5000 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void dms5000_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
void dms5000_state::video_start()
|
||||
{
|
||||
}
|
||||
|
||||
uint32_t dms5000_state::screen_update_dms5000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
@ -98,8 +88,8 @@ void dms5000_state::dms5000(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
I8086(config, m_maincpu, XTAL(9'830'400));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dms5000_state::dms5000_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &dms5000_state::dms5000_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dms5000_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dms5000_state::io_map);
|
||||
|
||||
LS259(config, "cntlatch", 0); // V34
|
||||
|
||||
@ -117,7 +107,7 @@ void dms5000_state::dms5000(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( dms5000 )
|
||||
ROM_REGION16_LE( 0x4000, "user1", ROMREGION_ERASEFF )
|
||||
ROM_REGION16_LE( 0x4000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "dms-5000_54-8673o.bin", 0x0001, 0x2000, CRC(dce9823e) SHA1(d36ab87d2e6f5e9f02d59a6a7724ad3ce2428a2f))
|
||||
ROM_LOAD16_BYTE( "dms-5000_54-8672e.bin", 0x0000, 0x2000, CRC(94d64c06) SHA1(be5a53da7bb29a5fa9ac31efe550d5d6ff8b77cd))
|
||||
ROM_END
|
||||
@ -125,4 +115,4 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1982, dms5000, 0, 0, dms5000, dms5000, dms5000_state, empty_init, "Digital Microsystems", "DMS-5000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
COMP( 1982, dms5000, 0, 0, dms5000, dms5000, dms5000_state, empty_init, "Digital Microsystems", "DMS-5000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -32,53 +32,49 @@ public:
|
||||
homez80_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_p_videoram(*this, "videoram")
|
||||
, m_vram(*this, "videoram")
|
||||
, m_p_chargen(*this, "chargen")
|
||||
, m_io_keyboard(*this, "X%u", 0U)
|
||||
{ }
|
||||
|
||||
void homez80(machine_config &config);
|
||||
|
||||
private:
|
||||
|
||||
uint8_t homez80_keyboard_r(offs_t offset);
|
||||
u8 homez80_keyboard_r(offs_t offset);
|
||||
INTERRUPT_GEN_MEMBER(homez80_interrupt);
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void homez80_io(address_map &map);
|
||||
void homez80_mem(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
bool m_irq;
|
||||
virtual void machine_reset() override;
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_shared_ptr<uint8_t> m_p_videoram;
|
||||
required_shared_ptr<u8> m_vram;
|
||||
required_region_ptr<u8> m_p_chargen;
|
||||
required_ioport_array<16> m_io_keyboard;
|
||||
};
|
||||
|
||||
|
||||
uint8_t homez80_state::homez80_keyboard_r(offs_t offset)
|
||||
u8 homez80_state::homez80_keyboard_r(offs_t offset)
|
||||
{
|
||||
char kbdrow[8];
|
||||
sprintf(kbdrow,"LINE%d",offset);
|
||||
return ioport(kbdrow)->read();
|
||||
return m_io_keyboard[offset]->read();
|
||||
}
|
||||
|
||||
void homez80_state::homez80_mem(address_map &map)
|
||||
void homez80_state::mem_map(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x0fff).rom(); // Monitor
|
||||
map(0x2000, 0x23ff).ram().share("videoram"); // Video RAM
|
||||
map(0x7020, 0x702f).r(FUNC(homez80_state::homez80_keyboard_r));
|
||||
map(0x8000, 0xffff).ram(); // 32 K RAM
|
||||
map(0x0000, 0x0fff).rom(); // 27C256 (A12,13,14 tied high)
|
||||
map(0x2000, 0x23ff).mirror(0x0c00).ram().share("videoram"); // IC13, UM61256 (A10-14 tied low)
|
||||
map(0x7000, 0x700f).mirror(0x0ff0).r(FUNC(homez80_state::homez80_keyboard_r));
|
||||
map(0x8000, 0xffff).ram(); // 61256 (32K)
|
||||
}
|
||||
|
||||
void homez80_state::homez80_io(address_map &map)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
}
|
||||
|
||||
/* Input ports */
|
||||
INPUT_PORTS_START( homez80 )
|
||||
PORT_START("LINE0")
|
||||
PORT_START("X0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)
|
||||
@ -87,16 +83,16 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)
|
||||
PORT_START("LINE1")
|
||||
PORT_START("X1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE // crude, just another shift key
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE2")
|
||||
PORT_START("X2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
@ -105,16 +101,16 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE3")
|
||||
PORT_START("X3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)
|
||||
PORT_START("LINE4")
|
||||
PORT_START("X4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)
|
||||
@ -123,7 +119,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)
|
||||
PORT_START("LINE5")
|
||||
PORT_START("X5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)
|
||||
@ -132,7 +128,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)
|
||||
PORT_START("LINE6")
|
||||
PORT_START("X6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7)
|
||||
@ -141,7 +137,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J)
|
||||
PORT_START("LINE7")
|
||||
PORT_START("X7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)
|
||||
@ -150,25 +146,25 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)
|
||||
PORT_START("LINE8")
|
||||
PORT_START("X8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SCRLOCK)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PRTSCR)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SCRLOCK) // nothing
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PRTSCR) // nothing
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) // nothing
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE9")
|
||||
PORT_START("X9")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PAUSE)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PAUSE) // nothing
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_START("LINE10")
|
||||
PORT_START("X10")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
@ -177,7 +173,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD)
|
||||
PORT_START("LINE11")
|
||||
PORT_START("X11")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
@ -186,7 +182,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD)
|
||||
PORT_START("LINE12")
|
||||
PORT_START("X12")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
@ -195,7 +191,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD)
|
||||
PORT_START("LINE13")
|
||||
PORT_START("X13")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0)
|
||||
@ -204,7 +200,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)
|
||||
PORT_START("LINE14")
|
||||
PORT_START("X14")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)
|
||||
@ -213,7 +209,7 @@ INPUT_PORTS_START( homez80 )
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)
|
||||
PORT_START("LINE15")
|
||||
PORT_START("X15")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10)
|
||||
@ -230,10 +226,15 @@ void homez80_state::machine_reset()
|
||||
m_irq = 0;
|
||||
}
|
||||
|
||||
uint32_t homez80_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
void homez80_state::machine_start()
|
||||
{
|
||||
uint8_t y,ra,chr,gfx;
|
||||
uint16_t sy=0,ma=0,x;
|
||||
save_item(NAME(m_irq));
|
||||
}
|
||||
|
||||
u32 homez80_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
u8 y,ra,chr,gfx;
|
||||
u16 sy=0,ma=0,x;
|
||||
|
||||
for (y = 0; y < 32; y++)
|
||||
{
|
||||
@ -243,7 +244,7 @@ uint32_t homez80_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
|
||||
|
||||
for (x = ma; x < ma+32; x++)
|
||||
{
|
||||
chr = m_p_videoram[x];
|
||||
chr = m_vram[x];
|
||||
|
||||
/* get pattern of pixels for that character scanline */
|
||||
gfx = m_p_chargen[ (chr<<3) | ra];
|
||||
@ -265,7 +266,7 @@ uint32_t homez80_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
|
||||
}
|
||||
|
||||
|
||||
const gfx_layout homez80_charlayout =
|
||||
const gfx_layout charlayout =
|
||||
{
|
||||
8, 8, /* 8x8 characters */
|
||||
256, /* 256 characters */
|
||||
@ -277,7 +278,7 @@ const gfx_layout homez80_charlayout =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_homez80 )
|
||||
GFXDECODE_ENTRY( "chargen", 0x0000, homez80_charlayout, 0, 1 )
|
||||
GFXDECODE_ENTRY( "chargen", 0x0000, charlayout, 0, 1 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
@ -291,8 +292,7 @@ void homez80_state::homez80(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(8'000'000) / 2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &homez80_state::homez80_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &homez80_state::homez80_io);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &homez80_state::mem_map);
|
||||
m_maincpu->set_periodic_int(FUNC(homez80_state::homez80_interrupt), attotime::from_hz(50));
|
||||
|
||||
/* video hardware */
|
||||
@ -310,14 +310,14 @@ void homez80_state::homez80(machine_config &config)
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( homez80 )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "sysrom.bin", 0x0000, 0x1000, CRC(37ca7545) SHA1(3f597d7e45b1ab211d5bd4a99abb21915723c357) )
|
||||
|
||||
ROM_REGION(0x0800, "chargen",0)
|
||||
ROM_LOAD( "chargen.bin", 0x0000, 0x0800, CRC(93243be3) SHA1(718efc06c131843c15383e50af23f3a5cf44dd9b) )
|
||||
ROM_LOAD( "chargen.ic12", 0x0000, 0x0800, CRC(93243be3) SHA1(718efc06c131843c15383e50af23f3a5cf44dd9b) ) // 27C256, A11/12/13/14 tied low.
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 2008, homez80, 0, 0, homez80, homez80, homez80_state, empty_init, "Kun-Szabo Marton", "Homebrew Z80 Computer", MACHINE_NO_SOUND_HW)
|
||||
COMP( 2008, homez80, 0, 0, homez80, homez80, homez80_state, empty_init, "Kun-Szabo Marton", "Homebrew Z80 Computer", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -97,11 +97,11 @@ private:
|
||||
uint8_t port11_r();
|
||||
uint8_t port40_r();
|
||||
uint8_t port41_r();
|
||||
DECLARE_MACHINE_RESET(sapi1);
|
||||
DECLARE_MACHINE_RESET(sapizps3);
|
||||
MC6845_UPDATE_ROW(crtc_update_row);
|
||||
DECLARE_READ_LINE_MEMBER(si);
|
||||
DECLARE_WRITE_LINE_MEMBER(so);
|
||||
void machine_reset() override;
|
||||
void machine_start() override;
|
||||
uint32_t screen_update_sapi1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_sapi3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
@ -724,24 +724,39 @@ void sapi_state::sapi3_25_w(uint8_t data)
|
||||
m_zps3_25 = data & 0xfc; //??
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( sapi_state, sapi1 )
|
||||
void sapi_state::machine_reset()
|
||||
{
|
||||
m_keyboard_mask = 0;
|
||||
m_refresh_counter = 0x20;
|
||||
// setup uart to 8N2 for sapi1 -bios 0
|
||||
m_uart->write_np(1);
|
||||
m_uart->write_tsb(1);
|
||||
m_uart->write_nb1(1);
|
||||
m_uart->write_nb2(1);
|
||||
m_uart->write_eps(1);
|
||||
m_uart->write_cs(1);
|
||||
m_uart->write_cs(0);
|
||||
|
||||
if (m_uart)
|
||||
{
|
||||
// setup uart to 8N2 for sapi1 -bios 0
|
||||
m_uart->write_np(1);
|
||||
m_uart->write_tsb(1);
|
||||
m_uart->write_nb1(1);
|
||||
m_uart->write_nb2(1);
|
||||
m_uart->write_eps(1);
|
||||
m_uart->write_cs(1);
|
||||
m_uart->write_cs(0);
|
||||
}
|
||||
|
||||
if (m_bank1)
|
||||
m_bank1->set_entry(1);
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER( sapi_state, sapizps3 )
|
||||
void sapi_state::machine_start()
|
||||
{
|
||||
m_keyboard_mask = 0;
|
||||
m_bank1->set_entry(1);
|
||||
save_item(NAME(m_term_data));
|
||||
save_item(NAME(m_keyboard_mask));
|
||||
save_item(NAME(m_refresh_counter));
|
||||
save_item(NAME(m_zps3_25));
|
||||
save_item(NAME(m_cass_data));
|
||||
save_item(NAME(m_cassinbit));
|
||||
save_item(NAME(m_cassoutbit));
|
||||
save_item(NAME(m_cassold));
|
||||
save_item(NAME(m_ier));
|
||||
save_item(NAME(m_iet));
|
||||
}
|
||||
|
||||
void sapi_state::init_sapizps3()
|
||||
@ -771,7 +786,6 @@ void sapi_state::sapi1(machine_config &config)
|
||||
I8080A(config, m_maincpu, 18_MHz_XTAL / 9); // Tesla MHB8080A + MHB8224 + MHB8228
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sapi_state::sapi1_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &sapi_state::sapi1_io);
|
||||
MCFG_MACHINE_RESET_OVERRIDE(sapi_state, sapi1)
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
@ -821,7 +835,6 @@ void sapi_state::sapi3(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sapi_state::sapi3_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &sapi_state::sapi3_io);
|
||||
MCFG_MACHINE_RESET_OVERRIDE(sapi_state, sapizps3 )
|
||||
|
||||
screen_device &screen(*subdevice<screen_device>("screen"));
|
||||
screen.set_size(40*6, 20*9);
|
||||
@ -867,7 +880,6 @@ void sapi_state::sapi3a(machine_config &config)
|
||||
I8080A(config, m_maincpu, 18_MHz_XTAL / 9); // Tesla MHB8080A + MHB8224 + MHB8228
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sapi_state::sapi3a_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &sapi_state::sapi3a_io);
|
||||
MCFG_MACHINE_RESET_OVERRIDE(sapi_state, sapizps3 )
|
||||
|
||||
/* video hardware */
|
||||
AY51013(config, m_uart); // Tesla MHB1012
|
||||
@ -942,9 +954,9 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 1985, sapi1, 0, 0, sapi1, sapi1, sapi_state, empty_init, "Tesla", "SAPI-1 ZPS 1", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1985, sapizps2, sapi1, 0, sapi2, sapi1, sapi_state, empty_init, "Tesla", "SAPI-1 ZPS 2", MACHINE_NO_SOUND_HW )
|
||||
COMP( 1985, sapizps3, sapi1, 0, sapi3, sapi1, sapi_state, init_sapizps3, "Tesla", "SAPI-1 ZPS 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1985, sapizps3a, sapi1, 0, sapi3a, sapi1, sapi_state, init_sapizps3a, "Tesla", "SAPI-1 ZPS 3 (terminal)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1985, sapizps3b, sapi1, 0, sapi3b, sapi1, sapi_state, init_sapizps3b, "Tesla", "SAPI-1 ZPS 3 (6845)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1985, sapi1, 0, 0, sapi1, sapi1, sapi_state, empty_init, "Tesla", "SAPI-1 ZPS 1", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1985, sapizps2, sapi1, 0, sapi2, sapi1, sapi_state, empty_init, "Tesla", "SAPI-1 ZPS 2", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1985, sapizps3, sapi1, 0, sapi3, sapi1, sapi_state, init_sapizps3, "Tesla", "SAPI-1 ZPS 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1985, sapizps3a, sapi1, 0, sapi3a, sapi1, sapi_state, init_sapizps3a, "Tesla", "SAPI-1 ZPS 3 (terminal)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1985, sapizps3b, sapi1, 0, sapi3b, sapi1, sapi_state, init_sapizps3b, "Tesla", "SAPI-1 ZPS 3 (6845)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user