1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
//
// Single-byte instructions
//

pub const HALT: u16 = 0x00;
pub const SPOPRD: u16 = 0x02;
pub const SPOPD2: u16 = 0x03;
pub const MOVAW: u16 = 0x04;
pub const SPOPRT: u16 = 0x06;
pub const SPOPT2: u16 = 0x07;
pub const RET: u16 = 0x08;
pub const MOVTRW: u16 = 0x0C;
pub const SAVE: u16 = 0x10;
pub const SPOPWD: u16 = 0x13;
pub const EXTOP: u16 = 0x14;
pub const SPOPWT: u16 = 0x17;
pub const RESTORE: u16 = 0x18;
pub const SWAPWI: u16 = 0x1C;
pub const SWAPHI: u16 = 0x1E;
pub const SWAPBI: u16 = 0x1F;
pub const POPW: u16 = 0x20;
pub const SPOPRS: u16 = 0x22;
pub const SPOPS2: u16 = 0x23;
pub const JMP: u16 = 0x24;
pub const CFLUSH: u16 = 0x27;
pub const TSTW: u16 = 0x28;
pub const TSTH: u16 = 0x2A;
pub const TSTB: u16 = 0x2B;
pub const CALL: u16 = 0x2C;
pub const BPT: u16 = 0x2E;
pub const WAIT: u16 = 0x2F;
pub const EMB: u16 = 0x30;
pub const SPOP: u16 = 0x32;
pub const SPOPWS: u16 = 0x33;
pub const JSB: u16 = 0x34;
pub const BSBH: u16 = 0x36;
pub const BSBB: u16 = 0x37;
pub const BITW: u16 = 0x38;
pub const BITH: u16 = 0x3A;
pub const BITB: u16 = 0x3B;
pub const CMPW: u16 = 0x3C;
pub const CMPH: u16 = 0x3E;
pub const CMPB: u16 = 0x3F;
pub const RGEQ: u16 = 0x40;
pub const BGEH: u16 = 0x42;
pub const BGEB: u16 = 0x43;
pub const RGTR: u16 = 0x44;
pub const BGH: u16 = 0x46;
pub const BGB: u16 = 0x47;
pub const RLSS: u16 = 0x48;
pub const BLH: u16 = 0x4A;
pub const BLB: u16 = 0x4B;
pub const RLEQ: u16 = 0x4C;
pub const BLEH: u16 = 0x4E;
pub const BLEB: u16 = 0x4F;
pub const RGEQU: u16 = 0x50;
pub const BGEUH: u16 = 0x52;
pub const BGEUB: u16 = 0x53;
pub const RGTRU: u16 = 0x54;
pub const BGUH: u16 = 0x56;
pub const BGUB: u16 = 0x57;
pub const BLSSU: u16 = 0x58;
pub const BLUH: u16 = 0x5A;
pub const BLUB: u16 = 0x5B;
pub const RLEQU: u16 = 0x5C;
pub const BLEUH: u16 = 0x5E;
pub const BLEUB: u16 = 0x5F;
pub const RVC: u16 = 0x60;
pub const BVCH: u16 = 0x62;
pub const BVCB: u16 = 0x63;
pub const RNEQU: u16 = 0x64;
pub const BNEH_D: u16 = 0x66;
pub const BNEB_D: u16 = 0x67;
pub const RVS: u16 = 0x68;
pub const BVSH: u16 = 0x6A;
pub const BVSB: u16 = 0x6B;
pub const REQLU: u16 = 0x6C;
pub const BEH_D: u16 = 0x6E;
pub const BEB_D: u16 = 0x6F;
pub const NOP: u16 = 0x70;
pub const NOP3: u16 = 0x72;
pub const NOP2: u16 = 0x73;
pub const BNEQ: u16 = 0x74;
pub const RNEQ: u16 = 0x74;
pub const BNEH: u16 = 0x76;
pub const BNEB: u16 = 0x77;
pub const RSB: u16 = 0x78;
pub const BRH: u16 = 0x7A;
pub const BRB: u16 = 0x7B;
pub const REQL: u16 = 0x7C;
pub const BEH: u16 = 0x7E;
pub const BEB: u16 = 0x7F;
pub const CLRW: u16 = 0x80;
pub const CLRH: u16 = 0x82;
pub const CLRB: u16 = 0x83;
pub const MOVW: u16 = 0x84;
pub const MOVH: u16 = 0x86;
pub const MOVB: u16 = 0x87;
pub const MCOMW: u16 = 0x88;
pub const MCOMH: u16 = 0x8A;
pub const MCOMB: u16 = 0x8B;
pub const MNEGW: u16 = 0x8C;
pub const MNEGH: u16 = 0x8E;
pub const MNEGB: u16 = 0x8F;
pub const INCW: u16 = 0x90;
pub const INCH: u16 = 0x92;
pub const INCB: u16 = 0x93;
pub const DECW: u16 = 0x94;
pub const DECH: u16 = 0x96;
pub const DECB: u16 = 0x97;
pub const ADDW2: u16 = 0x9C;
pub const ADDH2: u16 = 0x9E;
pub const ADDB2: u16 = 0x9F;
pub const PUSHW: u16 = 0xA0;
pub const MODW2: u16 = 0xA4;
pub const MODH2: u16 = 0xA6;
pub const MODB2: u16 = 0xA7;
pub const MULW2: u16 = 0xA8;
pub const MULH2: u16 = 0xAA;
pub const MULB2: u16 = 0xAB;
pub const DIVW2: u16 = 0xAC;
pub const DIVH2: u16 = 0xAE;
pub const DIVB2: u16 = 0xAF;
pub const ORW2: u16 = 0xB0;
pub const ORH2: u16 = 0xB2;
pub const ORB2: u16 = 0xB3;
pub const XORW2: u16 = 0xB4;
pub const XORH2: u16 = 0xB6;
pub const XORB2: u16 = 0xB7;
pub const ANDW2: u16 = 0xB8;
pub const ANDH2: u16 = 0xBA;
pub const ANDB2: u16 = 0xBB;
pub const SUBW2: u16 = 0xBC;
pub const SUBH2: u16 = 0xBE;
pub const SUBB2: u16 = 0xBF;
pub const ALSW3: u16 = 0xC0;
pub const ARSW3: u16 = 0xC4;
pub const ARSH3: u16 = 0xC6;
pub const ARSB3: u16 = 0xC7;
pub const INSFW: u16 = 0xC8;
pub const INSFH: u16 = 0xCA;
pub const INSFB: u16 = 0xCB;
pub const EXTFW: u16 = 0xCC;
pub const EXTFH: u16 = 0xCE;
pub const EXTFB: u16 = 0xCF;
pub const LLSW3: u16 = 0xD0;
pub const LLSH3: u16 = 0xD2;
pub const LLSB3: u16 = 0xD3;
pub const LRSW3: u16 = 0xD4;
pub const ROTW: u16 = 0xD8;
pub const ADDW3: u16 = 0xDC;
pub const ADDH3: u16 = 0xDE;
pub const ADDB3: u16 = 0xDF;
pub const PUSHAW: u16 = 0xE0;
pub const MODW3: u16 = 0xE4;
pub const MODH3: u16 = 0xE6;
pub const MODB3: u16 = 0xE7;
pub const MULW3: u16 = 0xE8;
pub const MULH3: u16 = 0xEA;
pub const MULB3: u16 = 0xEB;
pub const DIVW3: u16 = 0xEC;
pub const DIVH3: u16 = 0xEE;
pub const DIVB3: u16 = 0xEF;
pub const ORW3: u16 = 0xF0;
pub const ORH3: u16 = 0xF2;
pub const ORB3: u16 = 0xF3;
pub const XORW3: u16 = 0xF4;
pub const XORH3: u16 = 0xF6;
pub const XORB3: u16 = 0xF7;
pub const ANDW3: u16 = 0xF8;
pub const ANDH3: u16 = 0xFA;
pub const ANDB3: u16 = 0xFB;
pub const SUBW3: u16 = 0xFC;
pub const SUBH3: u16 = 0xFE;
pub const SUBB3: u16 = 0xFF;

//
// Multi-byte instructions
//

pub const MVERNO: u16 = 0x3009;
pub const ENBVJMP: u16 = 0x300D;
pub const DISVJMP: u16 = 0x3013;
pub const MOVBLW: u16 = 0x3019;
pub const STREND: u16 = 0x301F;
pub const INTACK: u16 = 0x302F;
pub const STRCPY: u16 = 0x3035;
pub const RETG: u16 = 0x3045;
pub const GATE: u16 = 0x3061;
pub const CALLPS: u16 = 0x30AC;
pub const RETPS: u16 = 0x30C8;