*/
typedef enum
{
//
VM
// 0000....
opERROR = 0x00, // 0000
opNOP = 0x01, // 0001
opPROGRAM_STOP = 0x02, // 0010
opPROGRAM_START = 0x03, // 0011
opOBJECT_STOP = 0x04, // 0100
opOBJECT_START = 0x05, // 0101
opOBJECT_TRIG = 0x06, // 0110
opOBJECT_WAIT = 0x07, // 0111
opRETURN = 0x08, // 1000
opCALL = 0x09, // 1001
opOBJECT_END = 0x0A, // 1010
opSLEEP = 0x0B, // 1011
opPROGRAM_INFO = 0x0C, // 1100
opLABEL = 0x0D, // 1101
opPROBE = 0x0E, // 1110
opDO = 0x0F, // 1111
//
MATH
// 0001....
// ADD 00..
opADD8 = 0x10, // 00
opADD16 = 0x11, // 01
opADD32 = 0x12, // 10
opADDF = 0x13, // 11
// SUB 01..
opSUB8 = 0x14, // 00
opSUB16 = 0x15, // 01
opSUB32 = 0x16, // 10
opSUBF = 0x17, // 11
// MUL 10..
opMUL8 = 0x18, // 00
opMUL16 = 0x19, // 01
opMUL32 = 0x1A, // 10
opMULF = 0x1B, // 11
// DIV 11..
opDIV8 = 0x1C, // 00
opDIV16 = 0x1D, // 01
opDIV32 = 0x1E, // 10
opDIVF = 0x1F, // 11
//
LOGIC
// LOGIC 0010....
// OR 00..
opOR8 = 0x20, // 00
opOR16 = 0x21, // 01
opOR32 = 0x22, // 10
// AND 01..
opAND8 = 0x24, // 00
opAND16 = 0x25, // 01
opAND32 = 0x26, // 10
// XOR 10..
opXOR8 = 0x28, // 00
opXOR16 = 0x29, // 01
opXOR32 = 0x2A, // 10
// RL 11..
opRL8 = 0x2C, // 00
opRL16 = 0x2D, // 01
opRL32 = 0x2E, // 10
//
MOVE
opINIT_BYTES = 0x2F, // 1111
// MOVE 0011....
// MOVE8_ 00..
opMOVE8_8 = 0x30, // 00
opMOVE8_16 = 0x31, // 01
opMOVE8_32 = 0x32, // 10
opMOVE8_F = 0x33, // 11
// MOVE16_ 01..
opMOVE16_8 = 0x34, // 00
opMOVE16_16 = 0x35, // 01
opMOVE16_32 = 0x36, // 10
opMOVE16_F = 0x37, // 11
// MOVE32_ 10..
opMOVE32_8 = 0x38, // 00
opMOVE32_16 = 0x39, // 01
opMOVE32_32 = 0x3A, // 10
opMOVE32_F = 0x3B, // 11
// MOVEF_ 11..
opMOVEF_8 = 0x3C, // 00
opMOVEF_16 = 0x3D, // 01
opMOVEF_32 = 0x3E, // 10
opMOVEF_F = 0x3F, // 11
//
BRANCH
// BRANCH 010000..
opJR = 0x40, // 00
opJR_FALSE = 0x41, // 01
opJR_TRUE = 0x42, // 10
opJR_NAN = 0x43, // 11
//
COMPARE
// COMPARE 010.....
// CP_LT 001..
opCP_LT8 = 0x44, // 00
opCP_LT16 = 0x45, // 01
opCP_LT32 = 0x46, // 10
opCP_LTF = 0x47, // 11
// CP_GT 010..
opCP_GT8 = 0x48, // 00
opCP_GT16 = 0x49, // 01
opCP_GT32 = 0x4A, // 10
opCP_GTF = 0x4B, // 11
// CP_EQ 011..
opCP_EQ8 = 0x4C, // 00
opCP_EQ16 = 0x4D, // 01
opCP_EQ32 = 0x4E, // 10
opCP_EQF = 0x4F, // 11
// CP_NEQ 100..
opCP_NEQ8 = 0x50, // 00
opCP_NEQ16 = 0x51, // 01
opCP_NEQ32 = 0x52, // 10
opCP_NEQF = 0x53, // 11
// CP_LTEQ 101..
opCP_LTEQ8 = 0x54, // 00
opCP_LTEQ16 = 0x55, // 01
opCP_LTEQ32 = 0x56, // 10
opCP_LTEQF = 0x57, // 11
// CP_GTEQ 110..
opCP_GTEQ8 = 0x58, // 00
opCP_GTEQ16 = 0x59, // 01
opCP_GTEQ32 = 0x5A, // 10
opCP_GTEQF = 0x5B, // 11
//
SELECT
// SELECT 010111..
opSELECT8 = 0x5C, // 00
opSELECT16 = 0x5D, // 01
opSELECT32 = 0x5E, // 10
opSELECTF = 0x5F, // 11
//
VM
opSYSTEM = 0x60,
opPORT_CNV_OUTPUT = 0x61,
opPORT_CNV_INPUT = 0x62,
opNOTE_TO_FREQ = 0x63,
//
BRANCH
// BRANCH 011000..
//? 00
//? 01
//? 10
//? 11
// JR_LT 001..
opJR_LT8 = 0x64, // 00
opJR_LT16 = 0x65, // 01
opJR_LT32 = 0x66, // 10
opJR_LTF = 0x67, // 11
// JR_GT 010..
opJR_GT8 = 0x68, // 00
opJR_GT16 = 0x69, // 01
opJR_GT32 = 0x6A, // 10
opJR_GTF = 0x6B, // 11
// JR_EQ 011..
opJR_EQ8 = 0x6C, // 00
opJR_EQ16 = 0x6D, // 01
opJR_EQ32 = 0x6E, // 10
opJR_EQF = 0x6F, // 11
// JR_NEQ 100..
opJR_NEQ8 = 0x70, // 00
opJR_NEQ16 = 0x71, // 01
opJR_NEQ32 = 0x72, // 10
opJR_NEQF = 0x73, // 11
// JR_LTEQ 101..
opJR_LTEQ8 = 0x74, // 00
opJR_LTEQ16 = 0x75, // 01
opJR_LTEQ32 = 0x76, // 10
opJR_LTEQF = 0x77, // 11
// JR_GTEQ 110..
opJR_GTEQ8 = 0x78, // 00
opJR_GTEQ16 = 0x79, // 01
opJR_GTEQ32 = 0x7A, // 10
opJR_GTEQF = 0x7B, // 11
//
VM
opINFO = 0x7C, // 01111100
opSTRINGS = 0x7D, // 01111101
opMEMORY_WRITE = 0x7E, // 01111110
opMEMORY_READ = 0x7F, // 01111111
// SYSTEM 1.......
//
UI
// UI 100000..
opUI_FLUSH = 0x80, // 00
opUI_READ = 0x81, // 01
opUI_WRITE = 0x82, // 10
opUI_BUTTON = 0x83, // 11
opUI_DRAW = 0x84, // 10000100
//
TIMER
opTIMER_WAIT = 0x85, // 10000101
opTIMER_READY = 0x86, // 10000110
opTIMER_READ = 0x87, // 10000111
//
VM
// BREAKPOINT 10001...
opBP0 = 0x88, // 000
opBP1 = 0x89, // 001
opBP2 = 0x8A, // 010
opBP3 = 0x8B, // 011
opBP_SET = 0x8C, // 10001100
opMATH = 0x8D, // 10001101
opRANDOM = 0x8E, // 10001110
//
TIMER
opTIMER_READ_US = 0x8F, // 10001111
//
UI
opKEEP_ALIVE = 0x90, // 10010000
//
COM
// 100100
opCOM_READ = 0x91, // 01
opCOM_WRITE = 0x92, // 10
//
SOUND
// 100101
opSOUND = 0x94, // 00
opSOUND_TEST = 0x95, // 01
opSOUND_READY = 0x96, // 10
//
INPUT
//
opINPUT_SAMPLE = 0x97, // 10010111
// 10011...
opINPUT_DEVICE_LIST = 0x98, // 000
opINPUT_DEVICE = 0x99, // 001
opINPUT_READ = 0x9A, // 010
opINPUT_TEST = 0x9B, // 011
opINPUT_READY = 0x9C, // 100
opINPUT_READSI = 0x9D, // 101
opINPUT_READEXT = 0x9E, // 110
opINPUT_WRITE = 0x9F, // 111
//
OUTPUT
// 101.....
opOUTPUT_GET_TYPE = 0xA0, // 00000
opOUTPUT_SET_TYPE = 0xA1, // 00001
opOUTPUT_RESET = 0xA2, // 00010
opOUTPUT_STOP = 0xA3, // 00011
opOUTPUT_POWER = 0xA4, // 00100
opOUTPUT_SPEED = 0xA5, // 00101
opOUTPUT_START = 0xA6, // 00110
opOUTPUT_POLARITY = 0xA7, // 00111
opOUTPUT_READ = 0xA8, // 01000
opOUTPUT_TEST = 0xA9, // 01001
opOUTPUT_READY = 0xAA, // 01010
opOUTPUT_POSITION = 0xAB, // 01011
opOUTPUT_STEP_POWER = 0xAC, // 01100
opOUTPUT_TIME_POWER = 0xAD, // 01101
opOUTPUT_STEP_SPEED = 0xAE, // 01110
opOUTPUT_TIME_SPEED = 0xAF, // 01111
opOUTPUT_STEP_SYNC = 0xB0, // 10000
opOUTPUT_TIME_SYNC = 0xB1, // 10001
opOUTPUT_CLR_COUNT = 0xB2, // 10010
opOUTPUT_GET_COUNT = 0xB3, // 10011
opOUTPUT_PRG_STOP = 0xB4, // 10100
//
MEMORY
// 11000...
opFILE = 0xC0, // 000
opARRAY = 0xC1, // 001
opARRAY_WRITE = 0xC2, // 010
opARRAY_READ = 0xC3, // 011
opARRAY_APPEND = 0xC4, // 100
opMEMORY_USAGE = 0xC5, // 101
opFILENAME = 0xC6, // 110
//
READ
// 110010..
opREAD8 = 0xC8, // 00
opREAD16 = 0xC9, // 01
opREAD32 = 0xCA, // 10
opREADF = 0xCB, // 11
//
WRITE
// 110011..
opWRITE8 = 0xCC, // 00
opWRITE16 = 0xCD, // 01
opWRITE32 = 0xCE, // 10
opWRITEF = 0xCF, // 11
//
COM
// 11010...
opCOM_READY = 0xD0, // 000
opCOM_READDATA = 0xD1, // 001
opCOM_WRITEDATA = 0xD2, // 010
opCOM_GET = 0xD3, // 011
opCOM_SET = 0xD4, // 100
opCOM_TEST = 0xD5, // 101
opCOM_REMOVE = 0xD6, // 110
opCOM_WRITEFILE = 0xD7, // 111
// 11011...
opMAILBOX_OPEN = 0xD8, // 000
opMAILBOX_WRITE = 0xD9, // 001
opMAILBOX_READ = 0xDA, // 010
opMAILBOX_TEST = 0xDB, // 011
opMAILBOX_READY = 0xDC, // 100
opMAILBOX_CLOSE = 0xDD, // 101
// SPARE 111.....
//
TST
opTST = 0xFF // 11111111
}
OP;
/*
*