(MESS) mekd2.c: after several investigations, I came to

the conclusion that .d2 files are some sort of RAM snapshot
and not a cart format, so converted the driver to use quikload. 
anyway, I had not actual file to test, so if you have any please
contact us to the MESS boards. nw.
This commit is contained in:
Fabio Priuli 2014-09-24 19:54:32 +00:00
parent 1807dbc77e
commit 31c7b61cf5

View File

@ -78,8 +78,8 @@ TODO
#include "machine/6850acia.h" #include "machine/6850acia.h"
#include "machine/clock.h" #include "machine/clock.h"
#include "imagedev/cassette.h" #include "imagedev/cassette.h"
#include "imagedev/snapquik.h"
#include "sound/wave.h" #include "sound/wave.h"
#include "imagedev/cartslot.h"
#include "mekd2.lh" #include "mekd2.lh"
#define XTAL_MEKD2 1228800 #define XTAL_MEKD2 1228800
@ -106,7 +106,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(mekd2_nmi_w); DECLARE_WRITE_LINE_MEMBER(mekd2_nmi_w);
DECLARE_WRITE8_MEMBER(mekd2_digit_w); DECLARE_WRITE8_MEMBER(mekd2_digit_w);
DECLARE_WRITE8_MEMBER(mekd2_segment_w); DECLARE_WRITE8_MEMBER(mekd2_segment_w);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mekd2_cart); DECLARE_QUICKLOAD_LOAD_MEMBER(mekd2_quik);
DECLARE_WRITE_LINE_MEMBER(cass_w); DECLARE_WRITE_LINE_MEMBER(cass_w);
TIMER_DEVICE_CALLBACK_MEMBER(mekd2_c); TIMER_DEVICE_CALLBACK_MEMBER(mekd2_c);
TIMER_DEVICE_CALLBACK_MEMBER(mekd2_p); TIMER_DEVICE_CALLBACK_MEMBER(mekd2_p);
@ -301,27 +301,27 @@ WRITE_LINE_MEMBER( mekd2_state::cass_w )
m_cass_state = state; m_cass_state = state;
} }
DEVICE_IMAGE_LOAD_MEMBER( mekd2_state,mekd2_cart ) QUICKLOAD_LOAD_MEMBER( mekd2_state, mekd2_quik )
{ {
static const char magic[] = "MEK6800D2"; static const char magic[] = "MEK6800D2";
char buff[9]; char buff[9];
UINT16 addr, size; UINT16 addr, size;
UINT8 ident, *RAM = memregion("maincpu")->base(); UINT8 ident, *RAM = memregion("maincpu")->base();
image.fread( buff, sizeof (buff)); image.fread(buff, sizeof (buff));
if (memcmp(buff, magic, sizeof (buff))) if (memcmp(buff, magic, sizeof (buff)))
{ {
logerror( "mekd2_rom_load: magic '%s' not found\n", magic); logerror("mekd2 rom load: magic '%s' not found\n", magic);
return IMAGE_INIT_FAIL; return IMAGE_INIT_FAIL;
} }
image.fread( &addr, 2); image.fread(&addr, 2);
addr = LITTLE_ENDIANIZE_INT16(addr); addr = LITTLE_ENDIANIZE_INT16(addr);
image.fread( &size, 2); image.fread(&size, 2);
size = LITTLE_ENDIANIZE_INT16(size); size = LITTLE_ENDIANIZE_INT16(size);
image.fread( &ident, 1); image.fread(&ident, 1);
logerror("mekd2_rom_load: $%04X $%04X $%02X\n", addr, size, ident); logerror("mekd2 rom load: $%04X $%04X $%02X\n", addr, size, ident);
while (size-- > 0) while (size-- > 0)
image.fread( &RAM[addr++], 1); image.fread(&RAM[addr++], 1);
return IMAGE_INIT_PASS; return IMAGE_INIT_PASS;
} }
@ -374,13 +374,7 @@ static MACHINE_CONFIG_START( mekd2, mekd2_state )
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_ADD("cassette")
/* Cartslot ?? does not come with one.. */
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("d2")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_LOAD(mekd2_state,mekd2_cart)
/* Devices */ /* Devices */
MCFG_DEVICE_ADD("pia_s", PIA6821, 0) MCFG_DEVICE_ADD("pia_s", PIA6821, 0)
@ -407,6 +401,8 @@ static MACHINE_CONFIG_START( mekd2, mekd2_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_c", mekd2_state, mekd2_c, attotime::from_hz(4800)) MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_c", mekd2_state, mekd2_c, attotime::from_hz(4800))
MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_p", mekd2_state, mekd2_p, attotime::from_hz(40000)) MCFG_TIMER_DRIVER_ADD_PERIODIC("mekd2_p", mekd2_state, mekd2_p, attotime::from_hz(40000))
MCFG_QUICKLOAD_ADD("quickload", mekd2_state, mekd2_quik, "d2", 1)
MACHINE_CONFIG_END MACHINE_CONFIG_END
/*********************************************************** /***********************************************************