Lua: memory.getregisters()

This commit is contained in:
Ilari Liusvaara 2014-05-06 20:42:22 +03:00
parent 24af115b47
commit 4e29357123
3 changed files with 56 additions and 0 deletions

36
lua.lyx
View file

@ -7141,6 +7141,42 @@ Set the global execute hook mask to <mask>.
CPU.
\end_layout
\begin_layout Subsection
memory.getregister: Get register value
\end_layout
\begin_layout Itemize
Syntax: number/boolean memory.getregister(string register)
\end_layout
\begin_layout Standard
Get the value of named register.
\end_layout
\begin_layout Subsection
memory.getregisters: Get register values
\end_layout
\begin_layout Itemize
Syntax: table memory.getregisters()
\end_layout
\begin_layout Standard
Get the value of all known registers as table.
\end_layout
\begin_layout Subsection
memory.setregister: Set register value
\end_layout
\begin_layout Itemize
Syntax: none memory.setregister(string register, number/boolean value)
\end_layout
\begin_layout Standard
Set the value of named register.
\end_layout
\begin_layout Subsection
memory.mmap: Class MMAP_STRUCT
\end_layout

BIN
lua.pdf

Binary file not shown.

View file

@ -68,6 +68,25 @@ namespace
return 1;
}
int getregisters(lua::state& L, lua::parameters& P)
{
const interface_device_reg* regs = our_rom.rtype->get_registers();
if(!regs) {
L.pushnil();
return 1;
}
L.newtable();
for(size_t i = 0; regs[i].name; i++) {
L.pushlstring(regs[i].name);
if(regs[i].boolean)
L.pushboolean(regs[i].read() != 0);
else
L.pushnumber(regs[i].read());
L.settable(-3);
}
return 1;
}
int setregister(lua::state& L, lua::parameters& P)
{
std::string r;
@ -95,6 +114,7 @@ namespace
lua::functions disasm_fns(lua_func_misc, "memory", {
{"disassemble", disassemble},
{"getregister", getregister},
{"getregisters", getregisters},
{"setregister", setregister},
});
}