An emulator and disassembler for the CASIO calculator series using the nX-U8/100 core.
Each argument should have one of these two formats:
key=value
.path
: equivalent toinput=path
.
For the supported values of key
: see args_assoc
in disassembler.lua
file.
See models
folder.
Each argument should have one of these two formats:
key=value
wherekey
does not contain any equal signs.path
: equivalent tomodel=path
.
Supported values of key
are: (if value
is not mentioned then it does not matter)
paused
: Pause the emulator on start.model
: Specify the path to model folder. Examplevalue
:models/fx570esplus
.ram
: Load RAM dump from the path specified invalue
.clean_ram
: Ifram
is specified, this prevents the calculator from loading the file, instead starting from a clean RAM state.preserve_ram
: Specify that the RAM should not be dumped (to the value associated with theram
key) on program exit, in other words, preserve the existing RAM dump in the file.strict_memory
: Print an error message if the program attempt to write to unwritable memory regions corresponding to ROM. (writing to unmapped memory regions always print an error message)pause_on_mem_error
: Pause the emulator when a memory error message is printed.history
: Path to a file to load/save command history.script
: Specify a path to Lua file to be executed on program startup (usingvalue
parameter).resizable
: Whether the window can be resized.width
,height
: Initial window width/height on program start. The values can be in hexadecimal (prefix0x
), octal (prefix0
) or decimal.exit_on_console_shutdown
: Exit the emulator when the console thread is shut down.
Those Lua functions and variables can be used at the Lua prompt of the emulator.
-
emu:set_paused
: Set emulator state. Call with a boolean value. -
emu:tick()
: Execute one command. -
emu:shutdown()
: Shutdown the emulator. -
cpu.xxx
: Get register value.xxx
should be one ofr0
tor15
- One of the register names. See
register_record_sources
array inemulator\src\Chipset\CPU.cpp
. erN
,xrN
,qrN
are not supported.
-
cpu.bt
: A string containing the current stack trace. -
code[address]
: Access code. (By words, only use even address, otherwise program will panic) -
data[address]
: Access data. (By bytes) -
data:watch(offset, fn)
: Set watchpoint at addressoffset
-fn
is called whenever data is written to. Iffn
isnil
, clear the watchpoint. -
data:rwatch(offset, fn)
: Set watchpoint at addressoffset
-fn
is called whenever data is read from as data. Iffn
isnil
, clear the watchpoint.
Some additional functions are available in lua-common.lua
file.
To use those, it's necessary to pass the flag script=emulator/lua-common.lua
.
Run make
in the emulator
folder. Dependencies: (listed in the Makefile
)
- Lua 5.3 (note: the include files should be put in
lua5.3
folder, otherwise change the#include
lines accordingly) - SDL2
- SDL2_image
- pthread (already available for UNIX systems)
Run the generated executable at emulator/bin/casioemu
.
To interact with the calculator keyboard, use the mouse (left click to press, right click to stick) or the keyboard (see models/*/model.lua
for keyboard configuration).