VolkanaDEV

Instruction Set

29 assigned slots with fixed numbers, fixed spellings, and fixed semantics. Once assigned, a slot never changes.

The assigned slots

SlotOpMeaning
0pulsepush a float onto the stack
1pulse_strpush a string
2senseread a variable's value
3holdstore a value into a variable
4grow_organconstruct an organ (fields + methods)
5read_fieldread an organ field
6write_fieldwrite an organ field
7grow_listconstruct a list
8probeindex into a list
9combineadd
10subtractsubtract
11scalemultiply
12dividedivide
13signalprint / write to the screen
14outputreturn a value / end a program
16threshold_eqequality test
17threshold_neinequality test
18threshold_ltless-than
19threshold_leless-than-or-equal
20threshold_gtgreater-than
21threshold_gegreater-than-or-equal
22routeunconditional jump
23gateconditional branch
24junctionblock label / join point
25dispatchcall a cell
27builtinhost builtin (file, GPU, math)
28implantwrite into a list slot
62checkretreturn-type guard
63checktypeargument-type guard

Reserved forever

Slot 15 was the old Return, merged into Output. It is reserved permanently and will never be reused. Assigning a new op to it is a build error, not a policy.

Slot 26 is reserved the same way: it was the old Ret, merged into Output. It keeps its number and is never reassigned.

The freeze

Five rules, enforced at compile time in the compiler's own source:

• Assigned slot numbers never change.
• New ops take unassigned slots only.
• Deprecated ops keep their tag and number forever.
• Alias spellings are part of the ABI (the serialized surface is load-bearing).
• Semantics never mutate; new behavior rides a new slot.

Changing an assigned slot's number or spelling fails the build. That is what makes BloodCode a contract instead of a convention.