Skip to content

EDIABAS Interpreter Opcodes

This document lists all opcodes implemented in the TypeScript interpreter (packages/interpreter/src/interpreter.ts). Descriptions are derived from the handler map and the operation implementations in packages/interpreter/src/operations/*. Mnemonic names follow the disassembler table in packages/best-parser/src/disassembler.ts.

Operand conventions

Most instructions take up to two operands (arg0, arg1) encoded by addressing modes:

  • Integer registers: B, A, I, L (8/8/16/32-bit)
  • String registers: S (text/binary)
  • Float registers: F (IEEE-754 double)
  • Immediate values: integer or string literals
  • Indexed string operands: Sx[index] optionally with length and/or offset

Unless stated otherwise, integer operands can be register or immediate; string operands can be string register, immediate string, or indexed string.


Arithmetic & Bitwise (integer)

0x00 - move (Move/Copy Value)

Copies value from source integer register to destination integer register.

Arguments:

  • arg0: Destination integer register (B/A/I/L)
  • arg1: Source integer register (B/A/I/L)

0x01 - clear (Clear Register)

Sets destination integer register to 0.

Arguments:

  • arg0: Destination integer register (B/A/I/L)

0x02 - comp (Compare Integers)

Compares arg0 and arg1 and updates flags (Z/S/V/C). Result is not stored.

Arguments:

  • arg0: Left integer register (B/A/I/L)
  • arg1: Right integer register (B/A/I/L)

0x03 - subb (Subtract)

arg0 = arg0 - arg1 (integer). Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x04 - adds (Add)

arg0 = arg0 + arg1 (integer). Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x05 - mult (Multiply)

Signed multiply. Low part stored in arg0, high part stored in arg1 (source register). Updates flags (Z/S), clears V.

Arguments:

  • arg0: Destination integer register (low result)
  • arg1: Source integer register (high result)

0x06 - divs (Divide)

Integer division. arg0 = arg0 / arg1, arg1 = remainder. On divide by zero, leaves arg0 unchanged. Updates flags.

Arguments:

  • arg0: Dividend / quotient integer register
  • arg1: Divisor / remainder integer register

0x07 - and (Bitwise AND)

arg0 = arg0 & arg1. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x08 - or (Bitwise OR)

arg0 = arg0 | arg1. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x09 - xor (Bitwise XOR)

arg0 = arg0 ^ arg1. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x0a - not (Bitwise NOT)

arg0 = ~arg0. Updates flags.

Arguments:

  • arg0: Destination integer register

0x18 - asr (Arithmetic Shift Right)

Right shift arg0 by arg1 bits. Carry flag updated per shift-out bit. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Shift count integer register

0x19 - lsl (Logical Shift Left)

Left shift arg0 by arg1 bits. Carry flag updated. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Shift count integer register

0x1a - lsr (Logical Shift Right)

Right shift arg0 by arg1 bits (same implementation as asr in this interpreter). Carry flag updated. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Shift count integer register

0x1b - asl (Arithmetic Shift Left)

Left shift arg0 by arg1 bits (same implementation as lsl in this interpreter). Carry flag updated. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Shift count integer register

0x49 - addc (Add with Carry)

arg0 = arg0 + arg1 + C. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x4a - subc (Subtract with Borrow)

arg0 = arg0 - arg1 - C. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source integer register

0x6a - test (Test AND)

Computes arg0 & arg1 and updates flags. Result not stored.

Arguments:

  • arg0: Left integer register
  • arg1: Right integer register

Control Flow

0x0b - jump (Unconditional Jump)

Relative jump: PC = PC + arg0.

Arguments:

  • arg0: Relative offset (int register or immediate)

0x0c - jtsr (Call Subroutine)

Pushes return address to call stack and jumps relative.

Arguments:

  • arg0: Relative offset (int register or immediate)

0x0d - ret (Return)

Returns to the last address on the call stack.

Arguments:

  • (none)

0x0e - jc (Jump if Carry)

Jumps if carry flag set.

Arguments:

  • arg0: Relative offset

0x0f - jae (Jump if Above or Equal)

Jumps if carry flag clear (unsigned >=).

Arguments:

  • arg0: Relative offset

0x10 - jz (Jump if Zero)

Jumps if zero flag set.

Arguments:

  • arg0: Relative offset

0x11 - jnz (Jump if Not Zero)

Jumps if zero flag clear.

Arguments:

  • arg0: Relative offset

0x12 - jv (Jump if Overflow)

Jumps if overflow flag set.

Arguments:

  • arg0: Relative offset

0x13 - jnv (Jump if No Overflow)

Jumps if overflow flag clear.

Arguments:

  • arg0: Relative offset

0x14 - jmi (Jump if Minus)

Jumps if sign flag set (negative result).

Arguments:

  • arg0: Relative offset

0x15 - jpl (Jump if Plus)

Jumps if sign flag clear.

Arguments:

  • arg0: Relative offset

0x47 - jt (Jump if Timer Flag Set)

Jumps if the internal timer flag is set.

Arguments:

  • arg0: Relative offset

0x48 - jnt (Jump if Timer Flag Not Set)

Jumps if the internal timer flag is clear.

Arguments:

  • arg0: Relative offset

0x5a - jg (Jump if Greater)

Signed compare: jump if arg0 > arg1 from last compare (Z=0, S=V).

Arguments:

  • arg0: Relative offset

0x5b - jge (Jump if Greater or Equal)

Signed compare: jump if arg0 >= arg1 (S=V).

Arguments:

  • arg0: Relative offset

0x5c - jl (Jump if Less)

Signed compare: jump if arg0 < arg1 (S!=V).

Arguments:

  • arg0: Relative offset

0x5d - jle (Jump if Less or Equal)

Signed compare: jump if arg0 <= arg1 (Z=1 or S!=V).

Arguments:

  • arg0: Relative offset

0x5e - ja (Jump if Above)

Unsigned compare: jump if arg0 > arg1 (C=0 and Z=0).

Arguments:

  • arg0: Relative offset

0x5f - jbe (Jump if Below or Equal)

Unsigned compare: jump if arg0 <= arg1 (C=1 or Z=1).

Arguments:

  • arg0: Relative offset

0x1c - nop (No Operation)

Does nothing.

Arguments:

  • (none)

0x1d - eoj (End of Job / Halt)

Halts interpreter execution.

Arguments:

  • (none)

Flags

0x16 - clrc (Clear Carry)

Clears carry flag.

Arguments:

  • (none)

0x17 - setc (Set Carry)

Sets carry flag.

Arguments:

  • (none)

0x4c - clrv (Clear Overflow)

Clears overflow flag.

Arguments:

  • (none)

0x4e - popf (Pop Flags)

Pops flags from data stack.

Arguments:

  • (none)

0x4f - pushf (Push Flags)

Pushes flags to data stack.

Arguments:

  • (none)

Stack (data)

0x1e - push (Push)

Pushes integer register value to data stack.

Arguments:

  • arg0: Source integer register

0x1f - pop (Pop)

Pops value from data stack into integer register.

Arguments:

  • arg0: Destination integer register

0x50 - atsp (At Stack Position)

Reads value at stack offset and stores to register. Offset 0 is top.

Arguments:

  • arg0: Destination integer register
  • arg1: Offset (int register or immediate)

0x51 - swap (Swap Top)

Swaps the top two values on the data stack.

Arguments:

  • (none)

String & Text

0x20 - scmp (String Compare)

Compares two strings and updates flags (Z/S/C).

Arguments:

  • arg0: Left string register
  • arg1: Right string register

0x21 - scat (String Concatenate)

Appends arg1 to arg0.

Arguments:

  • arg0: Destination string register
  • arg1: Source string (string register, immediate string, or indexed)

0x22 - scut (String Cut from End)

Removes the last N characters from arg0.

Arguments:

  • arg0: Destination string register
  • arg1: Number of characters to remove (int reg or immediate)

0x23 - slen (String Length)

Stores string length in integer register.

Arguments:

  • arg0: Destination integer register
  • arg1: Source string register

0x24 - spaste (String Paste/Insert)

Inserts arg1 into the base string at indexed position. arg0 must be an indexed S operand.

Arguments:

  • arg0: Indexed string destination (base S register + index/offset)
  • arg1: String to insert (string reg or immediate)

0x25 - serase (String Erase)

Removes length characters from base string at indexed position.

Arguments:

  • arg0: Indexed string target (base S register + index/offset)
  • arg1: Length to erase (int reg or immediate)

0x53 - srevrs (Reverse String)

Reverses the string in-place.

Arguments:

  • arg0: Destination string register

0x52 - setspc (Set Token Separator / Index)

Configures token extraction: sets separator string and optional token index.

Arguments:

  • arg0: Separator string (string reg or immediate)
  • arg1: Optional token index (int reg or immediate, 1-based)

0x54 - stoken (Extract Token)

Splits arg1 by the configured separator (from setspc) and writes the selected token to arg0. Sets Z flag if separator missing or index out of range.

Arguments:

  • arg0: Destination string register
  • arg1: Source string (string reg, immediate, or indexed)

0x7e - strcat (String Concatenate Alias)

Alias of scat.

Arguments:

  • arg0: Destination string register
  • arg1: Source string register

0x79 - fix2hex (Integer to Hex String)

Converts integer to uppercase hex string.

Arguments:

  • arg0: Destination string register
  • arg1: Source integer register

0x7a - fix2dez (Integer to Decimal String)

Converts integer to decimal string.

Arguments:

  • arg0: Destination string register
  • arg1: Source integer register

0x67 - a2fix (ASCII to Integer)

Parses decimal string and stores integer. Sets flags on parse error.

Arguments:

  • arg0: Destination integer register
  • arg1: Source string register

0x8f - strcmp (String Compare Alias)

Alias of scmp.

Arguments:

  • arg0: Left string register
  • arg1: Right string register

0x90 - strlen (String Length Alias)

Alias of slen.

Arguments:

  • arg0: Destination integer register
  • arg1: Source string register

0x8c - a2y (ASCII to Y/Binary)

Copies string bytes into Y-register (binary string).

Arguments:

  • arg0: Destination string register
  • arg1: Source string register

0x8e - hex2y (Hex String to Binary)

Parses hex string into raw bytes stored in destination string register.

Arguments:

  • arg0: Destination string register
  • arg1: Source string register

0x91 - y2bcd (Binary to BCD String)

Converts binary bytes to BCD string (two digits per nibble).

Arguments:

  • arg0: Destination string register
  • arg1: Source string register (binary)

0x92 - y2hex (Binary to Hex String)

Converts binary bytes to uppercase hex string.

Arguments:

  • arg0: Destination string register
  • arg1: Source string register (binary)

0xb5 - ssize (String Size in Bytes)

Stores byte length of string (CP1252 encoded) in integer register.

Arguments:

  • arg0: Destination integer register
  • arg1: Source string register

Floating Point

0x3a - a2flt (ASCII to Float)

Parses string to float, sets flags on error.

Arguments:

  • arg0: Destination float register
  • arg1: Source string register

0x3b - fadd (Float Add)

arg0 = arg0 + arg1.

Arguments:

  • arg0: Destination float register
  • arg1: Source float register

0x3c - fsub (Float Subtract)

arg0 = arg0 - arg1.

Arguments:

  • arg0: Destination float register
  • arg1: Source float register

0x3d - fmul (Float Multiply)

arg0 = arg0 * arg1.

Arguments:

  • arg0: Destination float register
  • arg1: Source float register

0x3e - fdiv (Float Divide)

arg0 = arg0 / arg1.

Arguments:

  • arg0: Destination float register
  • arg1: Source float register

0xa1 - fcomp (Float Compare)

Compares two floats and updates flags (Z/S/C/V).

Arguments:

  • arg0: Left float register
  • arg1: Right float register

0x87 - flt2a (Float to String)

Converts float to string.

Arguments:

  • arg0: Destination string register
  • arg1: Source float register

0x88 - setflt (Set Float Immediate)

Sets float register to immediate value or copies from float register.

Arguments:

  • arg0: Destination float register
  • arg1: Float immediate or float register

0x68 - fix2flt (Integer to Float)

Converts integer to float.

Arguments:

  • arg0: Destination float register
  • arg1: Source integer register

0x96 - flt2fix (Float to Integer)

Converts float to integer with truncation. Updates flags.

Arguments:

  • arg0: Destination integer register
  • arg1: Source float register

0x9b - flt2y4 (Float to 4-byte Binary)

Stores IEEE-754 single (big-endian) in destination string register.

Arguments:

  • arg0: Destination string register
  • arg1: Source float register

0x9c - flt2y8 (Float to 8-byte Binary)

Stores IEEE-754 double (big-endian) in destination string register.

Arguments:

  • arg0: Destination string register
  • arg1: Source float register

0x9d - y42flt (4-byte Binary to Float)

Reads IEEE-754 single (big-endian) from string register.

Arguments:

  • arg0: Destination float register
  • arg1: Source string register (binary)

0x9e - y82flt (8-byte Binary to Float)

Reads IEEE-754 double (big-endian) from string register.

Arguments:

  • arg0: Destination float register
  • arg1: Source string register (binary)

0x6e - xbatt (Battery Voltage Stub)

Stub: stores 12.0 in float register.

Arguments:

  • arg0: Destination float register

Result Collection

0x34 - ergb (Result: Byte)

Records a byte result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Integer register (value masked to 8 bits)

0x35 - ergw (Result: Word)

Records a word result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Integer register (value masked to 16 bits)

0x36 - ergd (Result: Dword)

Records a dword result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Integer register (value masked to 32 bits)

0x37 - ergi (Result: Int)

Records a signed 16-bit integer result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Integer value (register or immediate)

0x38 - ergr (Result: Real)

Records a floating-point result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Float register

0x39 - ergs (Result: String)

Records a string result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: String (string reg or immediate)

0x3f - ergy (Result: Binary)

Records a binary result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Binary source (string reg or immediate/indexed)

0x81 - ergc (Result: Char/Byte)

Records a byte (char) result. Value masked to 8 bits.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Integer value (register or immediate)

0x82 - ergl (Result: Long/Dword)

Records a 32-bit unsigned result.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Integer value (register or immediate)

0x95 - ergsysi (System Info Result)

Records a string result under a system info name.

Arguments:

  • arg0: Result name (string reg or immediate)
  • arg1: Result value (string reg or immediate)

0x40 - enewset (New Result Set)

Clears current result collector.

Arguments:

  • (none)

0x41 - etag (Conditional Result Skip)

If a results filter is configured and arg1 is not requested, jumps to arg0.

Arguments:

  • arg0: Relative offset (int reg or immediate)
  • arg1: Result name (string reg or immediate)

0x4d - eerr (Execute Error)

Executes an error based on the current error trap bit. If errorTrapBitNr is set (≥0), looks up the corresponding error code from the trap bit dictionary and raises that error. If no match is found, raises EDIABAS_BIP_0000.

Arguments:

  • (none)

Error Trap Bit Mapping:

  • Bit 8 → EDIABAS_BIP_0011
  • Bit 28 → EDIABAS_IFH_0069
  • Bit 29 → EDIABAS_IFH_0074

0xac - generr (Generate Error)

Records error info and throws an interpreter error.

Arguments:

  • arg0: Error code (int reg or immediate)
  • arg1: Error text (string reg or immediate)

Parameters

0x55 - parb (Get Parameter Byte)

Reads parameter at index into integer register.

Arguments:

  • arg0: Destination integer register
  • arg1: Parameter index (int reg or immediate)

0x56 - parw (Get Parameter Word)

Alias of parb (reads parameter as int).

Arguments:

  • arg0: Destination integer register
  • arg1: Parameter index

0x57 - parl (Get Parameter Long)

Alias of parb (reads parameter as int).

Arguments:

  • arg0: Destination integer register
  • arg1: Parameter index

0x58 - pars (Get Parameter String)

Reads parameter as string into S register.

Arguments:

  • arg0: Destination string register
  • arg1: Parameter index

0x69 - parr (Get Parameter Float)

Reads parameter as float into F register.

Arguments:

  • arg0: Destination float register
  • arg1: Parameter index

0x7f - pary (Get Parameter Binary)

Reads parameter as binary/string into S register.

Arguments:

  • arg0: Destination string register
  • arg1: Parameter index

0x80 - parn (Parameter Count)

Stores number of parameters in integer register.

Arguments:

  • arg0: Destination integer register

Time & Timer

0x43 - gettmr (Get Timer)

Reads timer value (ms) into integer register.

Arguments:

  • arg0: Destination integer register

0x44 - settmr (Set Timer)

Sets timer base value.

Arguments:

  • arg0: Timer value (int reg or immediate)

0x45 - sett (Set Timer Flag)

Sets internal timer flag (used by jt/jnt).

Arguments:

  • (none)

0x46 - clrt (Clear Timer Flag)

Clears internal timer flag.

Arguments:

  • (none)

0x6b - wait (Wait)

Sleeps for the given duration in milliseconds.

Arguments:

  • arg0: Duration (int reg or immediate)

0xae - waitex (Extended Wait)

Same as wait, takes duration in milliseconds.

Arguments:

  • arg0: Duration (int reg or immediate)

0x6c - date (Get Date)

Stores current date into int or string register (YYYYMMDD or YYYY-MM-DD).

Arguments:

  • arg0: Destination integer or string register

0x6d - time (Get Time)

Stores current time into int or string register (HHMMSS or HH:MM:SS).

Arguments:

  • arg0: Destination integer or string register

0xad - ticks (System Ticks)

Stores Date.now() (ms since epoch, masked to 32-bit) into integer register.

Arguments:

  • arg0: Destination integer register

Communication (Interface)

0x26 - xconnect (Connect Interface)

Connects the communication interface.

Arguments:

  • (none)

0x27 - xhangup (Disconnect Interface)

Disconnects the communication interface.

Arguments:

  • (none)

0x28 - xsetpar (Set Parameter)

Sets interface parameter.

Arguments:

  • arg0: Parameter id (int register)
  • arg1: Value (int register)

0x29 - xawlen (Set Answer Length)

Sets expected answer length.

Arguments:

  • arg0: Length (int register)

0x2a - xsend (Send)

Sends raw bytes from string register.

Arguments:

  • arg0: Source string register (binary)

0x2b - xsendf (Formatted Send)

Sends formatted request.

Arguments:

  • arg0: Format string register
  • arg1: Payload string register

0x2c - xrequf (Formatted Request)

Sends formatted request and receives formatted response.

Arguments:

  • arg0: Format string register
  • arg1: Payload string register (response stored here)

0x2d - xstopf (Stop Formatted)

Stops a formatted request/response operation.

Arguments:

  • (none)

0x2e - xkeyb (Read Keyboard)

Reads keyboard input into string register.

Arguments:

  • arg0: Destination string register

0x2f - xstate (Interface State)

Reads interface state into integer register.

Arguments:

  • arg0: Destination integer register

0x30 - xboot (Boot)

Boots the interface (if supported).

Arguments:

  • (none)

0x31 - xreset (Reset)

Resets the interface.

Arguments:

  • (none)

0x32 - xtype (Interface Type)

Writes interface type string to destination.

Arguments:

  • arg0: Destination string register

0x33 - xvers (Interface Version)

Writes interface version to destination.

Arguments:

  • arg0: Destination integer register

0x42 - xreps (Set Response)

Sets fixed response bytes for interface.

Arguments:

  • arg0: Source string register (binary)

0xaf - xopen (Open Interface)

Opens the interface. Optional mode parameter.

Arguments:

  • arg0: Optional mode (int register) or none

0xb0 - xclose (Close Interface)

Closes the interface.

Arguments:

  • (none)

0xb1 - xcloseex (Close Interface Extended)

Closes interface with optional mode.

Arguments:

  • arg0: Optional mode (int register) or none

0xb2 - xswitch (Switch Interface)

Switches to interface index.

Arguments:

  • arg0: Interface index (int register)

0xb3 - xsendex (Extended Send)

Sends extended payload (falls back to xsend).

Arguments:

  • arg0: Source string register (binary)

0xb4 - xrecvex (Extended Receive)

Receives extended payload (falls back to xrecv).

Arguments:

  • arg0: Destination string register
  • arg1: Optional timeout (int register)

0x78 - xstoptr (Stop Transfer) [Stub]

No-op stub.

Arguments:

  • (none)

0x70 - xdownl (Download) [Stub]

No-op stub.

Arguments:

  • (none)

0x86 - xinfo (Interface Info) [Stub]

Stores empty string into destination.

Arguments:

  • arg0: Destination string register

0x8d - xparraw (Raw Parameters) [Stub]

No-op stub.

Arguments:

  • (none)

0x71 - xgetport (Get Port)

Reads a hardware port value from the interface.

Arguments:

  • arg0: Destination integer register (port value)
  • arg1: Port index (int register or immediate)

0x72 - xignit (Get Ignition Voltage)

Reads ignition voltage from interface and stores in destination register.

Arguments:

  • arg0: Destination integer register (voltage value)

0x73 - xloopt (Loop Test)

Reads loop test result from interface.

Arguments:

  • arg0: Destination integer register (test result)

0x74 - xprog (Set Program Voltage)

Sets programming voltage on the interface.

Arguments:

  • arg0: Voltage value (int register or immediate)

0x75 - xraw (Raw Data)

Sends raw data to interface and receives response.

Arguments:

  • arg0: Request string register (binary input)
  • arg1: Response string register (binary output)

0x76 - xsetport (Set Port)

Sets a hardware port value on the interface.

Arguments:

  • arg0: Port index (int register or immediate)
  • arg1: Port value (int register or immediate)

0x77 - xsireset (SI Relais Reset)

Switches the SI relais for a specified time.

Arguments:

  • arg0: Time in milliseconds (int register or immediate)

Files

0x59 - fclose (Close File)

Closes file handle.

Arguments:

  • arg0: File handle (int register)

0x60 - fopen (Open File)

Opens file and returns handle.

Arguments:

  • arg0: Destination integer register (handle)
  • arg1: File path (string register)

0x61 - fread (Read File Bytes)

Reads I0 bytes from file into string register.

Arguments:

  • arg0: Destination string register
  • arg1: File handle (int register)

0x62 - freadln (Read Line)

Reads one line from file into string register.

Arguments:

  • arg0: Destination string register
  • arg1: File handle (int register)

0x63 - fseek (Seek)

Seeks to byte offset.

Arguments:

  • arg0: File handle (int register)
  • arg1: Offset (int register)

0x64 - fseekln (Seek Line)

Seeks forward by line count (from current).

Arguments:

  • arg0: File handle (int register)
  • arg1: Line offset (int register)

0x65 - ftell (Tell Position)

Stores current byte offset.

Arguments:

  • arg0: Destination integer register
  • arg1: File handle (int register)

0x66 - ftellln (Tell Line)

Stores current line number.

Arguments:

  • arg0: Destination integer register
  • arg1: File handle (int register)

Tables

0x7b - tabset (Select Table)

Sets active table by name. Updates flags on missing table.

Arguments:

  • arg0: Table name (string register)

0xaa - tabsetex (Select Table Extended)

Same as tabset.

Arguments:

  • arg0: Table name (string register)

0x7c - tabseek (Seek Row)

Searches for value in column, sets row index and flags.

Arguments:

  • arg0: Search value (string register)
  • arg1: Column index (int register)

0x9a - tabseeku (Seek Row Case-Insensitive)

Case-insensitive variant of tabseek.

Arguments:

  • arg0: Search value (string register)
  • arg1: Column index (int register)

0x7d - tabget (Get Cell)

Reads current row cell into string register.

Arguments:

  • arg0: Destination string register
  • arg1: Column index (int register)

0x83 - tabline (Get Row Line)

Gets current row as delimited string (default tab).

Arguments:

  • arg0: Destination string register
  • arg1: Optional delimiter string register

0xb6 - tabcols (Column Count)

Stores number of columns in table.

Arguments:

  • arg0: Destination integer register

0xb7 - tabrows (Row Count)

Stores number of rows in table.

Arguments:

  • arg0: Destination integer register

Shared Memory

0x93 - shmset (Shared Memory Set)

Stores binary/string value under key.

Arguments:

  • arg0: Key (string reg or immediate)
  • arg1: Value (string reg, immediate, or indexed)

0x94 - shmget (Shared Memory Get)

Loads value for key into destination string register.

Arguments:

  • arg0: Destination string register
  • arg1: Key (string reg or immediate)

Procedures (External Callouts)

Links a procedure id to a handler via procedureLinker.

Arguments:

  • arg0: Procedure id (int reg or immediate)

Same as plink, no validation in interpreter.

Arguments:

  • arg0: Procedure id (int reg or immediate)

0xa0 - pcall (Call Procedure)

Calls linked procedure with current procedure stack arguments.

Arguments:

  • arg0: Procedure id (int reg or immediate)

0xa3 - ppush (Push Procedure Int)

Pushes integer onto procedure stack.

Arguments:

  • arg0: Source integer register

0xa4 - ppop (Pop Procedure Int)

Pops integer from procedure stack.

Arguments:

  • arg0: Destination integer register

0xa5 - ppushflt (Push Procedure Float)

Pushes float onto procedure stack.

Arguments:

  • arg0: Source float register

0xa6 - ppopflt (Pop Procedure Float)

Pops float from procedure stack.

Arguments:

  • arg0: Destination float register

0xa7 - ppushy (Push Procedure Binary)

Pushes binary bytes from string register onto procedure stack.

Arguments:

  • arg0: Source string register

0xa8 - ppopy (Pop Procedure Binary)

Pops binary bytes into string register.

Arguments:

  • arg0: Destination string register

0xa9 - pjtsr (Procedure Jump to Subroutine) [Stub]

No-op stub.

Arguments:

  • (none)

Progress / UI

0x97 - iupdate (Update Progress Text)

Updates progress text string.

Arguments:

  • arg0: Text (string reg or immediate)

0x98 - irange (Set Progress Range)

Sets progress range and resets position to -1.

Arguments:

  • arg0: Range (int reg or immediate)

0x99 - iincpos (Increment Progress Position)

Increments progress position by given amount (clamped to range).

Arguments:

  • arg0: Increment (int reg or immediate)

Misc / Stubs

0x4b - break (Breakpoint)

Raises EDIABAS_BIP_0008 error. In EdiabasLib this is used for debugging breakpoints.

Arguments:

  • (none)

0x6f - tosp (To Stack Pointer) [Stub]

No-op stub (null in EdiabasLib).

Arguments:

  • (none)

0x89 - cfgig (Config Get Integer)

Reads a configuration value by key and parses it as an integer. Supports hex (0x), binary (0y), and decimal formats. Handles comma/dot decimal separators.

Arguments:

  • arg0: Destination integer register
  • arg1: Config key (string)

0x8a - cfgsg (Config Get String)

Reads a configuration value by key into a string register. Returns empty string if key not found.

Arguments:

  • arg0: Destination string register
  • arg1: Config key (string)

0x8b - cfgis (Config Set Integer)

Sets a configuration value from an integer.

Arguments:

  • arg0: Config key (string)
  • arg1: Integer value to set

Arguments:

  • arg0: Destination integer register

0xab - ufix2dez (Unsigned Int to Decimal String)

Converts unsigned int to decimal string.

Arguments:

  • arg0: Destination string register
  • arg1: Source integer register