Instruction | Opcode | Takes from IS | Pushes |
NPUSHB[ ] | 0x40 | n, b1, b2,...bn | b1,b2...bn |
NPUSHW[ ] | 0x41 | n, w1, w2,...wn | w1,w2...wn |
PUSHB[abc] | 0xB0 – 0xB7 | b0, b1,..bn | b0, b1, ...,bn |
PUSHW[abc] | 0xB8 – 0xBF | w0,w1,..wn | w0 ,w1, ...wn |
Instruction | Opcode | Pops | Pushes |
RS[ ] | 0x43 | location | value |
WS[ ] | 0x42 | value, locat ion | – |
Instruction | Opcode | Pops | Pushes |
WCVTP[ ] | 0x44 | value, location | – |
WCVTF[ ] | 0x70 | value, location | – |
RCVT[ ] | 0x45 | location | value |
Instruction | Opcode | Pops | Pushes |
SVTCA[a] | 0x00 – 0x01 | – | – |
SPVTCA[a] | 0x02 – 0x03 | – | – |
SFVTCA[a] | 0x04 – 0x05 | – | – |
SPVTL[a] | 0x06 – 0x07 | p1, p2 | – |
SFVTL[a] | 0x08 – 0x09 | p1, p2 | – |
SFVTPV[ ] | 0x0E | – | – |
SDPVTL[a] | 0x86 – 0x87 | p1, p2 | – |
SPVFS[ ] | 0x0A | y, x | – |
SFVFS[ ] | 0x0B | y, x | – |
GPV[ ] | 0x0C | – | x, y |
GFV[ ] | 0x0D | – | x, y |
Instruction | Opcode | Pops | Pushes |
SRP0[ ] | 0x10 | p | – |
SRP1[ ] | 0x11 | p | – |
SRP2[ ] | 0x12 | p | – |
SZP0[ ] | 0x13 | n | – |
SZP1[ ] | 0x14 | n | – |
SZP2[ ] | 0x15 | n | – |
SZPS[ ] | 0x16 | n | – |
Instruction | Opcode | Pops | Pushes |
RTHG[ ] | 0x19 | – | – |
RTG[ ] | 0x18 | – | – |
RTDG[ ] | 0x3D | – | – |
RDTG[ ] | 0x7D | – | – |
RUTG[ ] | 0x7C | – | – |
ROFF[ ] | 0x7A | – | – |
SROUND[ ] | 0x76 | n | – |
S45ROUND[ ] | 0x77 | n | – |
Instruction | Opcode | Pops | Pushes |
INSTCTRL | 0x8E | selector and value | – |
SLOOP[ ] | 0x17 | n | – |
SMD[ ] | 0x1A | distance | – |
SCANCTRL[ ] | 0x85 | n | – |
SCANTYPE[ ] | 0x8D | n | – |
SCVTCI[ ] | 0x1D | n | – |
SSWCI[ ] | 0x1E | n | – |
SSW[ ] | 0x1F | n | – |
FLIPON[ ] | 0x4D | – | – |
FLIPOFF[ ] | 0x4E | – | – |
SANGW[ ] | 0x7E | weight | – |
SDB[ ] | 0x5E | n | – |
SDS[ ] | 0x5F | n | – |
Instruction | Opcode | Pops | Pushes |
GC[a] | 0x46 – 0x47 | p | value |
SCFS[ ] | 0x48 | value, p | – |
MD[a] | 0x49 – 0x4A | p1,p2 | distance |
MPPEM[ ] | 0x4B | – | ppem |
MPS[ ] | 0x4C | – | pointSize |
Instruction | Opcode | Pops | Pushes |
FLIPRGON[ ] | 0x81 | highpoint, lowpoint | – |
FLIPRGOFF[ ] | 0x82 | highpoint, lowpoint | – |
FLIPPT[ ] | 0x80 | p | – |
Instruction | Opcode | Pops | Pushes |
SHC[a] | 0x34 – 0x35 | c | – |
SHZ[a] | 0x36 – 0x37 | e | – |
SHPIX[ ] | 0x38 | p1, p2, amount | – |
SHP | 0x32 – 0x33 | p | – |
Instruction | Opcode | Pops | Pushes |
MDAP[ a ] | 0x2E – 0x2F | p | – |
MIAP[a] | 0x3E – 0x3F | n, p | – |
MDRP[abcde] | 0xC0 – 0xDF | p | – |
MIRP[abcde] | 0xE0 – 0xFF | n, p | – |
ALIGNRP[ ] | 0x3C | p1, p2, ... , ploop | – |
AA[ ] | 0x7F | p | – |
ISECT[ ] | 0x0F | a1, a0, b1, b0, p | – |
ALIGNPTS[ ] | 0x27 | p1, p2 | – |
Instruction | Opcode | Pops | Pushes |
UTP[ ] | 0x29 | p | – |
IUP[a] | 0x30 – 0x31 | – | – |
Instruction | Opcode | Pops | Pushes |
DELTAP1[ ] | 0x5D | n, p1, arg1, ..., pn, argn | – |
DELTAP2[ ] | 0x71 | n, p1, arg1, ..., pn, argn | – |
DELTAP3[ ] | 0x72 | n, p1, arg1, ..., pn, argn | – |
DELTAC1[ ], | 0x73 | n, c1, arg1, ..., cn, argn | – |
DELTAC2[ ] | 0x74 | n, c1, arg1, ..., cn, argn | – |
DELTAC3[ ] | 0x75 | n, c1, arg1, ..., cn, argn | – |
Instruction | Opcode | Pops | Pushes |
DUP[ ] | 0x20 | e | e, e |
POP[ ] | 0x21 | e | – |
CLEAR[ ] | 0x22 | all items on the stack | – |
SWAP[ ] | 0x23 | e1, e2 | e1, e2 |
DEPTH[ ] | 0x24 | – | n |
CINDEX[ ] | 0x25 | k | ek |
MINDEX[ ] | 0x26 | k, e1, e2, ..., ek | ek–1, ek–2, ..., e1, ek |
ROLL | 0x8a | – | – |
Instruction | Opcode | Pops | Pushes |
LT[ ] | 0x50 | e1, e2 | (e2 < e1 Boolean value |
LTEQ[ ] | 0x51 | e1, e2 | (e2 e1) Boolean value |
GT[ ] | 0x52 | e1, e2 | (e2 > e1) Boolean value |
GTEQ[ ] | 0x53 | e1, e2 | (e2 e1) Boolean value |
EQ[ ] | 0x54 | e1, e2 | (e2 = e1) Boolean value |
NEQ[ ] | 0x55 | e1, e2 | (e2 e1) Boolean value |
ODD[ ] | 0x56 | e | (e mod 2) = 1 |
EVEN[ ] | 0x57 | e | (e mod 2) = 0 |
AND[ ] | 0x5A | e1, e2 | ( e2 and e1 ) |
OR[ ] | 0x5B | e1, e2 | ( e2 or e1 )Boolean value |
NOT[ ] | 0x5C | e | ( not e )Boolean value |
Instruction | Opcode | Pops | Pushes |
IF[ ] | 0x58 | e | – |
EIF[ ] | 0x59 | – | – |
ELSE | 0x1B | ||
JMPR | 0x1C | offset | |
JROT[ ] | 0x78 | e, offset | – |
JROF[ ] | 0x79 | e, offset | – |
Instruction | Opcode | Pops | Pushes |
ADD[ ] | 0x60 | n1, n2 | (n1 + n2) |
SUB[ ] | 0x61 | n1, n2 | (n2 – n1) |
DIV[ ] | 0x62 | n1, n2 | (n2 ¥ 64)/ n1 |
MUL[ ] | 0x63 | n1, n2 | (n1 ¥ n2)/64 |
ABS[ ] | 0x64 | n | |n| |
NEG[ ] | 0x65 | n1 | –n1 |
FLOOR[ ] | 0x66 | n1 | n |
CEILING[ ] | 0x67 | n1 | n |
MAX[ ] | 0X8B | e1, e2 | max(e1, e2) |
MIN[ ] | 0X8C | e1, e2 | min(e1, e2) |
Instruction | Opcode | Pops | Pushes |
ROUND[ab] | 0x68 – 0x6B | n1 | n2 |
NROUND[ab] | 0x6C – 0x6F | n1 | n2 |
Instruction | Opcode | Pops | Pushes |
FDEF[ ] | 0x2C | f | – |
ENDF[ ] | 0x2D | – | – |
CALL[ ] | 0x2B | f | – |
LOOPCALL[ ] | 0x2A | f, count | – |
IDEF[ ] | 0x89 | o | – |
Instruction | Opcode | Pops | Pushes |
DEBUG[ ] | 0x4F | opcode | – |
Instruction | Opcode | Pops | Pushes |
GETINFO[ ] | 0x88 | selector | result |