mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
(MESS) altos5 wip
This commit is contained in:
parent
97b849fe0e
commit
f9a0330e1b
@ -17,16 +17,36 @@ public:
|
||||
m_maincpu(*this, "maincpu")
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(altos_2e_r);
|
||||
DECLARE_READ8_MEMBER(altos_2f_r);
|
||||
DECLARE_WRITE8_MEMBER( kbd_put );
|
||||
DECLARE_WRITE8_MEMBER(kbd_put);
|
||||
DECLARE_WRITE8_MEMBER(bank_w);
|
||||
DECLARE_DRIVER_INIT(altos5);
|
||||
UINT8 m_term_data;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
virtual void machine_reset();
|
||||
};
|
||||
|
||||
READ8_MEMBER( altos5_state::altos_2e_r )
|
||||
{
|
||||
UINT8 ret = m_term_data;
|
||||
m_term_data = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
READ8_MEMBER( altos5_state::altos_2f_r )
|
||||
{
|
||||
return 0x0c;
|
||||
return (m_term_data) ? 0x0d : 0x0c;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( altos5_state::bank_w )
|
||||
{
|
||||
UINT8 bank=0;
|
||||
if (data == 0x18) bank=1; //3 1000-FFFF (f000-ffff is common ram)
|
||||
if (data == 0x10) bank=1; //2 4000-FFFF
|
||||
if (data == 0x08) bank=1; //1 4000-FFFF
|
||||
if (data == 0) bank=1; // 0 shadow ram under rom
|
||||
membank("bank1")->set_entry(bank);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( altos5_state::kbd_put )
|
||||
@ -42,12 +62,14 @@ static GENERIC_TERMINAL_INTERFACE( terminal_intf )
|
||||
|
||||
static ADDRESS_MAP_START(altos5_mem, AS_PROGRAM, 8, altos5_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("maincpu", 0)
|
||||
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1")
|
||||
AM_RANGE(0x1000, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(altos5_io, AS_IO, 8, altos5_state)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x2e, 0x2e) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
|
||||
AM_RANGE(0x09, 0x09) AM_WRITE(bank_w)
|
||||
AM_RANGE(0x2e, 0x2e) AM_READ(altos_2e_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
|
||||
AM_RANGE(0x2f, 0x2f) AM_READ(altos_2f_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -57,9 +79,13 @@ INPUT_PORTS_END
|
||||
|
||||
void altos5_state::machine_reset()
|
||||
{
|
||||
UINT8 *m_p_maincpu = memregion("maincpu")->base();
|
||||
UINT8 *m_p_roms = memregion("roms")->base();
|
||||
memcpy(m_p_maincpu, m_p_roms, 0x1000);
|
||||
membank("bank1")->set_entry(1);
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( altos5_state, altos5 )
|
||||
{
|
||||
UINT8 *RAM = memregion("maincpu")->base();
|
||||
membank("bank1")->configure_entries(0, 2, &RAM[0], 0x10000);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( altos5, altos5_state )
|
||||
@ -75,13 +101,16 @@ MACHINE_CONFIG_END
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( altos5 )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x10000, "roms", 0 )
|
||||
ROM_LOAD("2732.bin", 0x0000, 0x1000, CRC(15fdc7eb) SHA1(e15bdf5d5414ad56f8c4bb84edc6f967a5f01ba9))
|
||||
ROM_LOAD("82s141.bin", 0x1000, 0x0200, CRC(35c8078c) SHA1(dce24374bfcc5d23959e2c03485d82a119c0c3c9))
|
||||
ROM_REGION( 0x11000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD("2732.bin", 0x10000, 0x1000, CRC(15fdc7eb) SHA1(e15bdf5d5414ad56f8c4bb84edc6f967a5f01ba9)) // bios
|
||||
ROM_FILL(0x10054, 2, 0) // temp until banking sorted out
|
||||
ROM_FILL(0x10344, 3, 0) // kill self test
|
||||
|
||||
ROM_REGION( 0x200, "user1", 0 )
|
||||
ROM_LOAD("82s141.bin", 0x0000, 0x0200, CRC(35c8078c) SHA1(dce24374bfcc5d23959e2c03485d82a119c0c3c9)) // looks like a keyboard matrix
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
COMP(19??, altos5, 0, 0, altos5, altos5, driver_device, 0, "Altos", "Altos 5-15", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP(19??, altos5, 0, 0, altos5, altos5, altos5_state, altos5, "Altos", "Altos 5-15", GAME_NOT_WORKING | GAME_NO_SOUND)
|
||||
|
Loading…
Reference in New Issue
Block a user