From b6f00172b4e7045a14cebba0a7d4011528a28741 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 10 Jul 2026 14:48:59 -0400 Subject: 6502: More Lua bindings --- 6502/src/test.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to '6502/src/test.c') diff --git a/6502/src/test.c b/6502/src/test.c index 1b4e241..1497df6 100644 --- a/6502/src/test.c +++ b/6502/src/test.c @@ -58,14 +58,14 @@ int emu_get_flag(lua_State *l); int emu_get_flag(lua_State *l) { l6502_emu *e = get_emu(l); l6502_flag f = lua_tointeger(l, 2); - lua_pushinteger(l, l6502_flag_get(e, f)); + lua_pushboolean(l, l6502_flag_get(e, f)); return 1; } int emu_set_flag(lua_State *l); int emu_set_flag(lua_State *l) { l6502_emu *e = get_emu(l); l6502_flag f = lua_tointeger(l, 2); - u8 v = (u8) lua_tointeger(l, 3); + bool v = lua_toboolean(l, 3); l6502_flag_set(e, f, v); lua_pushvalue(l, 1); return 1; @@ -86,6 +86,24 @@ int emu_set_pc(lua_State *l) { return 1; } +int emu_read(lua_State *l); +int emu_read(lua_State *l) { + l6502_emu *e = get_emu(l); + u16 addr = (u16) lua_tointeger(l, 2); + lua_pushinteger(l, l6502_read(e, addr)); + return 1; +} + +int emu_write(lua_State *l); +int emu_write(lua_State *l) { + l6502_emu *e = get_emu(l); + u16 addr = (u16) lua_tointeger(l, 2); + u8 v = (u8) lua_tointeger(l, 3); + l6502_write(e, addr, v); + lua_pushvalue(l, 1); + return 1; +} + int emu_emulate(lua_State *l); int emu_emulate(lua_State *l) { l6502_emu *e = get_emu(l); @@ -106,6 +124,8 @@ int new(lua_State *l) { lua_pushcfunction(l, emu_set_flag); lua_setfield(l, -2, "set-flag"); lua_pushcfunction(l, emu_get_pc); lua_setfield(l, -2, "pc"); lua_pushcfunction(l, emu_set_pc); lua_setfield(l, -2, "set-pc"); + lua_pushcfunction(l, emu_read); lua_setfield(l, -2, "read"); + lua_pushcfunction(l, emu_write); lua_setfield(l, -2, "write"); lua_pushcfunction(l, emu_emulate); lua_setfield(l, -2, "emulate"); lua_setfield(l, -2, "__index"); lua_setmetatable(l, -2); -- cgit v1.3.1