This update expands MISA with 11 new instructions that cover two important use cases: function pointers and unsigned arithmetic. It also brings several bug fixes across the VM, Code Editor, and Terminal.
Note that this update introduces a compatibility change, as the fsgn instruction now outputs a float. This means that when opening an existing project, you will be presented with the Compatibility Change Report. It highlights any compatibility changes that may affect your project and helps you bring it up to date with the current MISA specification.
MISA
(compatibility change) Modify the fsgn instruction to output a float instead of an integer.
Add pa-relative variants of branching instructions: cala, jmpa, jtra, jfsa.
Add unsigned variants of arithmetic instructions where signedness affects the result: mlhu, divu, remu, minu, maxu, clpu.
Add a fma instruction, an integer variant of ffma.
VM
Add a setting for capping VM performance to reduce CPU usage when running processing-intensive projects.
Fix vector instructions outputting wrong results when the destination overlaps with a source range.
Fix sbpx instruction being able to draw a luma value 0 instead of treating it as transparency.
Fix pop instruction being able to modify the zr register.
Fix an issue where one extra instruction is executed when stopping the VM.
Fix an issue where the VM can sometimes be run despite assembly errors.
Fix an issue where the _input process sometimes runs at VM startup.
Code Editor
Fix an issue where opening a project sets the assembly code to in certain cases.
Fix executing line indicator being cleared on save.
Fix executing line indicator staying visible after stepping over an exit instruction when there's no other active process.
Terminal
Fix traceback command freezing the game for a long period when the stack is corrupted.
Fix an issue where pressing esc while the terminal is focused does not fully release input focus, potentially blocking some inputs to the VM.
Manual
Document how sgn and fsgn behave with the value 0.
In the syscall instruction reference, link the System Calls page.
In the Common Mistakes page of the Execution Model chapter, add an entry documenting that program behavior may vary across runs due to process scheduling being non-deterministic.