Files
PleegWat 8e7441fdb3 Add ISA definitions for symphony
Adds both a 'stock' ISA (copied from the game) and one modified for test
code
2026-09-05 15:36:54 +02:00

44 lines
1.0 KiB
Markdown

Symphony ISA specs for use in stdlib
# `default.isa`
The stock game ISA. Production code must comply to this. Taken from `symphony_11_functions` in game version 2.1.330A
# `test.isa`
ISA with additional instructions. These additional instructions may be used in
the tests directory only. Some of these instructions require hardware changes.
## Labels in more instructions
`cmp`, `load`, and `store` instructions (but not `pload` and `pstore`) now also accept labels.
## `qcall %a(label)`
Performs a jump-and-link function call, with label size up to 32 bits.
_HARDWARE:_ Store PC+4 in the result register when in jump mode.
## `li %a(register) %b:U32(immediate | label)`
Loads an immediate up to 32 bits long
_HARDWARE:_ No requirements
## `halt%c(condition)`
Halts if `flags` matches the condition.
_HARDWARE:_ Halt if instruction bit 31 is set AND the condition block is true.
```
condition
"" 1000
".all" 1000
".e" 0001
".ne" 1001
".b" 0010
".ae" 1010
".be" 0011
".a" 1011
".l" 0100
".ge" 1100
".le" 0101
".g" 1101
```