mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
new not working
--- Tandy/Memorex Video Information System MD-2500 luaengine: doh! (lay groundwork for a WIP too) (nw)
This commit is contained in:
parent
5934df9a12
commit
ce01837a8b
@ -3035,6 +3035,7 @@ files {
|
||||
MAME_DIR .. "src/mame/includes/tandy2k.h",
|
||||
MAME_DIR .. "src/mame/machine/tandy2kb.cpp",
|
||||
MAME_DIR .. "src/mame/machine/tandy2kb.h",
|
||||
MAME_DIR .. "src/mame/drivers/vis.cpp",
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "ultimachine")
|
||||
|
@ -1252,7 +1252,7 @@ int lua_engine::lua_memory_region::l_region_write(lua_State *L)
|
||||
if(region.endianness() == ENDIANNESS_BIG)
|
||||
region.base()[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
|
||||
else
|
||||
region.base()[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
|
||||
region.base()[(BYTE8_XOR_LE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
|
||||
val >>= 8;
|
||||
}
|
||||
|
||||
@ -1317,7 +1317,7 @@ int lua_engine::lua_memory_share::l_share_write(lua_State *L)
|
||||
if(share.endianness() == ENDIANNESS_BIG)
|
||||
ptr[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
|
||||
else
|
||||
ptr[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
|
||||
ptr[(BYTE8_XOR_LE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
|
||||
val >>= 8;
|
||||
}
|
||||
|
||||
@ -1942,9 +1942,10 @@ lua_engine::~lua_engine()
|
||||
close();
|
||||
}
|
||||
|
||||
void lua_engine::call_plugin(const char *data, const char *name)
|
||||
const char *lua_engine::call_plugin(const char *data, const char *name)
|
||||
{
|
||||
std::string field("cb_");
|
||||
const char *ret = nullptr;
|
||||
field += name;
|
||||
lua_settop(m_lua_state, 0);
|
||||
lua_getfield(m_lua_state, LUA_REGISTRYINDEX, field.c_str());
|
||||
@ -1952,17 +1953,21 @@ void lua_engine::call_plugin(const char *data, const char *name)
|
||||
if(!lua_isfunction(m_lua_state, -1))
|
||||
{
|
||||
lua_pop(m_lua_state, 1);
|
||||
return;
|
||||
return nullptr;
|
||||
}
|
||||
lua_pushstring(m_lua_state, data);
|
||||
int error;
|
||||
if((error = lua_pcall(m_lua_state, 1, 0, 0)) != LUA_OK)
|
||||
if((error = lua_pcall(m_lua_state, 1, 1, 0)) != LUA_OK)
|
||||
{
|
||||
if(error == LUA_ERRRUN)
|
||||
printf("%s\n", lua_tostring(m_lua_state, -1));
|
||||
lua_pop(m_lua_state, 1);
|
||||
return;
|
||||
return nullptr;
|
||||
}
|
||||
if(lua_isstring(m_lua_state, -1))
|
||||
ret = lua_tostring(m_lua_state, -1);
|
||||
lua_pop(m_lua_state, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int lua_engine::l_emu_register_callback(lua_State *L)
|
||||
|
@ -62,7 +62,7 @@ public:
|
||||
std::vector<std::string> &get_menu() { return m_menu; }
|
||||
void attach_notifiers();
|
||||
void on_frame_done();
|
||||
void call_plugin(const char *data, const char *name);
|
||||
const char *call_plugin(const char *data, const char *name);
|
||||
|
||||
private:
|
||||
struct hook {
|
||||
|
152
src/mame/drivers/vis.cpp
Normal file
152
src/mame/drivers/vis.cpp
Normal file
@ -0,0 +1,152 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Carl
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/i86/i286.h"
|
||||
#include "machine/at.h"
|
||||
#include "bus/isa/isa_cards.h"
|
||||
|
||||
class vis_state : public driver_device
|
||||
{
|
||||
public:
|
||||
vis_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mb(*this, "mb")
|
||||
{ }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<at_mb_device> m_mb;
|
||||
|
||||
DECLARE_READ8_MEMBER(sysctl_r);
|
||||
DECLARE_WRITE8_MEMBER(sysctl_w);
|
||||
DECLARE_READ8_MEMBER(unk_r);
|
||||
DECLARE_WRITE8_MEMBER(unk_w);
|
||||
DECLARE_READ8_MEMBER(unk2_r);
|
||||
DECLARE_READ8_MEMBER(unk3_r);
|
||||
DECLARE_READ8_MEMBER(cdrom_r);
|
||||
DECLARE_WRITE8_MEMBER(cdrom_w);
|
||||
protected:
|
||||
void machine_reset() override;
|
||||
private:
|
||||
UINT8 m_sysctl;
|
||||
UINT8 m_unkidx;
|
||||
UINT8 m_unk[16];
|
||||
UINT8 m_cdcmd, m_cdstat;
|
||||
};
|
||||
|
||||
void vis_state::machine_reset()
|
||||
{
|
||||
m_cdcmd = 0;
|
||||
m_cdstat = 0;
|
||||
m_sysctl = 0;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vis_state::unk_r)
|
||||
{
|
||||
if(offset)
|
||||
return m_unk[m_unkidx];
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vis_state::unk_w)
|
||||
{
|
||||
if(offset)
|
||||
m_unk[m_unkidx] = data;
|
||||
else
|
||||
m_unkidx = data & 0xf;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vis_state::unk2_r)
|
||||
{
|
||||
return 0x40;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vis_state::unk3_r)
|
||||
{
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
// probably a mitsumi isa non-atapi cdrom controller, mcd.c in older linux versions
|
||||
READ8_MEMBER(vis_state::cdrom_r)
|
||||
{
|
||||
if(m_cdcmd)
|
||||
{
|
||||
if(offset)
|
||||
{
|
||||
int ret = m_cdstat;
|
||||
m_cdstat = 0;
|
||||
return ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_cdcmd = 0;
|
||||
return 0x80;
|
||||
}
|
||||
}
|
||||
if(offset)
|
||||
return 0;
|
||||
else
|
||||
return 0x20;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vis_state::cdrom_w)
|
||||
{
|
||||
if(!offset)
|
||||
{
|
||||
m_cdcmd = data;
|
||||
m_cdstat = 4;
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(vis_state::sysctl_r)
|
||||
{
|
||||
return m_sysctl;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vis_state::sysctl_w)
|
||||
{
|
||||
if(BIT(data, 0) && !BIT(m_sysctl, 0))
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
//m_maincpu->set_input_line(INPUT_LINE_A20, BIT(data, 1) ? CLEAR_LINE : ASSERT_LINE);
|
||||
m_sysctl = data;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( at16_map, AS_PROGRAM, 16, vis_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x000000, 0x09ffff) AM_RAM
|
||||
AM_RANGE(0x0d8000, 0x0fffff) AM_ROM AM_REGION("bios", 0xd8000)
|
||||
AM_RANGE(0x100000, 0x15ffff) AM_RAM
|
||||
AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("bios", 0xf0000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( at16_io, AS_IO, 16, vis_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0026, 0x0027) AM_READWRITE8(unk_r, unk_w, 0xffff)
|
||||
AM_RANGE(0x006a, 0x006b) AM_READ8(unk2_r, 0x00ff)
|
||||
AM_RANGE(0x0092, 0x0093) AM_READWRITE8(sysctl_r, sysctl_w, 0x00ff)
|
||||
AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
|
||||
AM_RANGE(0x0310, 0x0311) AM_READWRITE8(cdrom_r, cdrom_w, 0xffff)
|
||||
AM_RANGE(0x031a, 0x031b) AM_READ8(unk3_r, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_START( vis, vis_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", I80286, XTAL_12MHz )
|
||||
MCFG_CPU_PROGRAM_MAP(at16_map)
|
||||
MCFG_CPU_IO_MAP(at16_io)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb)
|
||||
MCFG_80286_SHUTDOWN(DEVWRITELINE("mb", at_mb_device, shutdown))
|
||||
|
||||
MCFG_DEVICE_ADD("mb", AT_MB, 0)
|
||||
|
||||
MCFG_ISA16_SLOT_ADD("mb:isabus","vga", pc_isa16_cards, "clgd542x", true)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
ROM_START(vis)
|
||||
ROM_REGION(0x100000,"bios", 0)
|
||||
ROM_LOAD( "p513bk0b.bin", 0x00000, 0x80000, CRC(364e3f74) SHA1(04260ef1e65e482c9c49d25ace40e22487d6aab9))
|
||||
ROM_LOAD( "p513bk1b.bin", 0x80000, 0x80000, CRC(e18239c4) SHA1(a0262109e10a07a11eca43371be9978fff060bc5))
|
||||
ROM_END
|
||||
|
||||
COMP ( 1992, vis, 0, 0, vis, 0, driver_device, 0, "Tandy/Memorex", "Video Information System MD-2500", MACHINE_NOT_WORKING )
|
||||
|
@ -36213,6 +36213,9 @@ wcombatk // 2002
|
||||
wcombatu // 2002
|
||||
xtrial // 2002
|
||||
|
||||
@source:vis.cpp
|
||||
vis
|
||||
|
||||
@source:vixen.cpp
|
||||
vixen //
|
||||
|
||||
|
@ -649,6 +649,7 @@ victor9k.cpp
|
||||
vidbrain.cpp
|
||||
vii.cpp
|
||||
vip.cpp
|
||||
vis.cpp
|
||||
vixen.cpp
|
||||
vk100.cpp
|
||||
votrpss.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user