JRZ 52 83 02 ;jump to relative address +/- p1 (IP=IP+/- p1) if z=1
JRNZ 53 83 02 ;jump to relative address +/- p1 (IP=IP+/- p1) if Z=0
JRC 54 83 02 ;jump to relative address +/- p1 (IP=IP+/- p1) if C=1
JRNC 55 83 02 ;jump to relative address +/- p1 (IP=IP+/- p1) if C=0
JRRZ 56 82 01 ;jump to relative address +/- (p1) (IP=IP+/- (p1)) if Z=1
JRRNZ 57 82 01 ;jump to relative address +/- (p1) (IP=IP+/- (p1)) if Z=0
JRRC 58 82 01 ;jump to relative address +/- (p1) (IP=IP+/- (p1)) if C=1
JRRNC 59 82 01 ;jump to relative address +/- (p1) (IP=IP+/- (p1)) if C=0
RET 5A 01 00 ;return to previous address ((sp)->ip, sp=sp+4)
RETZ 5B 01 00 ;return to previous address ((sp)->ip, sp=sp+4) if Z=1
RETNZ 5C 01 00 ;return to previous address ((sp)->ip, sp=sp+4) if Z=0
RETC 5D 01 00 ;return to previous address ((sp)->ip, sp=sp+4) if C=1
RETNC 5E 01 00 ;return to previous address ((sp)->ip, sp=sp+4) if C=0
FNCALL 5F 0A 3D ;library call: call function # p1 parameters are at address p2, return is stored from register p3 up to 10 registers long or at address p3
FNREGCALL 60 04 15 ;library call: call function # p1 parameters are at [p2] return is to store at address [p3]
FNRCALL 61 85 19 ;library call: call function # p1 parameters are at ip+/-p2 (p2 is 16bit wide), return is stored from register p3 up to 10 registers long
USRCALL 62 0A 3D ;not available
USRREGCALL 63 04 15 ;not available
USRRCALL 64 85 19 ;not available
PUSH 65 02 01 ;Save (p1) sp=sp-4 , [sp]=p1
POP 66 02 01 ;restore in (p1) p1=[sp] , sp=sp+4
ADDSP 67 02 01 ;sp=sp-(p1)
SUBSP 68 02 01 ;sp=sp+(p1)
SC 69 01 00 ; Set Carry (C)
RC 6A 01 00 ; Reset Carry (C)
NOTC 6B 01 00 ; Inverse C (if C=1, C=0 ; if c=0, c=1)
SZ 6C 01 00 ; Set Z
RZ 6D 01 00 ; Reset Z
NOTZ 6E 01 00 ; Inverse Z
LOOP 6F 84 09 ; loop at ip+/- p2 (16 bits) until (p1)=0, (p1)=(p1)-1
RLOOP 70 03 05 ; loop at [p2] until (p1)=0, (p1)=(p1)-1
RESET 71 01 00 ; Restart programm
OUTBYTE 72 04 15 ; write from PILI memory to COMPUTERS memory [p1]->[p2] for (p3) bytes WARNING p2 map a real computer memory address
INBYTE 73 04 15 ; read from COMPUTERS memory to PILI memory [p2]->[p1] for (p3) bytes WARNING p2 map a real computer memory address
LOADSP 78 03 02 ;sp = p1 (16 bit) (stack is limited to 8kbytes)
PUSHSP 79 01 00 ;push sp
POPSP 7A 01 00 ;pop sp
PUSHIP 7B 01 00 ;push ip
POPIP 7C 01 00 ;pop ip
FREESP 7D 02 01 ;copy the maximum free stack available in (p1)
FNCALL08 7E 04 15 ;library call: call function # p1 parameters are p2(8 bits), return is stored from register p3 (can be up to 10 registers long or more)
FNCALL16 7F 05 19 ;library call: call function # p1 parameters are p2(16 bits), return is stored from register p3 (can be up to 10 registers long or more)
TRACE FD 03 05 ; display a debug trace with a wait loop p1 and a trace number (p2)
DEBUG FE 03 05 ; display a debug trace with a wait loop p1 and the content of the p2 register
; floating point operands
FMULT 80 03 05 ;(p1)*(p2) -> (p1) (float/real)
FDIV 81 03 05 ;(p1)/(p2) -> (p1) (float/real)
FINT 82 03 05 ; integer part of (p2) in (p1)
FADD 83 03 05 ;(p1)+(p2) -> (p1) (float/real)
FSUB 84 03 05 ;(p1)-(p2) -> (p1) (float/real)
FREGCMP 85 03 05 ;(p1) = (p2) ? result with C and Z (float/real)
FREST 86 03 05 ; decimal part of (p2) in (p1)
; additional opcodes
ITOF 87 03 05 ; Convert integer to float (p2)->(p1)
LTOC 88 03 05 ;Convert signed long to signed char (p2)->(p1)
LTOI 89 03 05 ;Convert signed long to signed int (p2)->(p1)
CTOL 8A 03 05 ;Convert signed char to signed long (p2)->(p1)
CTOI 8B 03 05 ;Convert signed int to signed long (p2)->(p1)
MSHL 8C 03 05 ;Shift for (p2) bits the register (p1) (shift left)
MSHR 8D 03 05 ;Shift for (p2) bits the register (p1) (shift right)
SMODE 8E 01 00 ;Switch to signed mode for all operations (except fncall)
UMODE 8F 01 00 ;Switch to unsigned mode for all operations (except fncall)
CMODE 90 01 00 ;Switch to compatibility mode (default), only longs are signed