2 * Fast486 386/486 CPU Emulation Library
5 * Copyright (C) 2013 Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 /* INCLUDES *******************************************************************/
24 // #define WIN32_NO_STATUS
25 // #define _INC_WINDOWS
36 /* PUBLIC VARIABLES ***********************************************************/
38 FAST486_OPCODE_HANDLER_PROC
39 Fast486ExtendedHandlers
[FAST486_NUM_OPCODE_HANDLERS
] =
41 NULL
, // TODO: OPCODE 0x00 NOT IMPLEMENTED
42 NULL
, // TODO: OPCODE 0x01 NOT IMPLEMENTED
43 NULL
, // TODO: OPCODE 0x02 NOT IMPLEMENTED
44 NULL
, // TODO: OPCODE 0x03 NOT IMPLEMENTED
45 NULL
, // TODO: OPCODE 0x04 NOT IMPLEMENTED
46 NULL
, // TODO: OPCODE 0x05 NOT IMPLEMENTED
47 NULL
, // TODO: OPCODE 0x06 NOT IMPLEMENTED
48 NULL
, // TODO: OPCODE 0x07 NOT IMPLEMENTED
49 NULL
, // TODO: OPCODE 0x08 NOT IMPLEMENTED
50 NULL
, // TODO: OPCODE 0x09 NOT IMPLEMENTED
51 NULL
, // TODO: OPCODE 0x0A NOT IMPLEMENTED
52 NULL
, // TODO: OPCODE 0x0B NOT IMPLEMENTED
53 NULL
, // TODO: OPCODE 0x0C NOT IMPLEMENTED
54 NULL
, // TODO: OPCODE 0x0D NOT IMPLEMENTED
55 NULL
, // TODO: OPCODE 0x0E NOT IMPLEMENTED
56 NULL
, // TODO: OPCODE 0x0F NOT IMPLEMENTED
57 NULL
, // TODO: OPCODE 0x10 NOT IMPLEMENTED
58 NULL
, // TODO: OPCODE 0x11 NOT IMPLEMENTED
59 NULL
, // TODO: OPCODE 0x12 NOT IMPLEMENTED
60 NULL
, // TODO: OPCODE 0x13 NOT IMPLEMENTED
61 NULL
, // TODO: OPCODE 0x14 NOT IMPLEMENTED
62 NULL
, // TODO: OPCODE 0x15 NOT IMPLEMENTED
63 NULL
, // TODO: OPCODE 0x16 NOT IMPLEMENTED
64 NULL
, // TODO: OPCODE 0x17 NOT IMPLEMENTED
65 NULL
, // TODO: OPCODE 0x18 NOT IMPLEMENTED
66 NULL
, // TODO: OPCODE 0x19 NOT IMPLEMENTED
67 NULL
, // TODO: OPCODE 0x1A NOT IMPLEMENTED
68 NULL
, // TODO: OPCODE 0x1B NOT IMPLEMENTED
69 NULL
, // TODO: OPCODE 0x1C NOT IMPLEMENTED
70 NULL
, // TODO: OPCODE 0x1D NOT IMPLEMENTED
71 NULL
, // TODO: OPCODE 0x1E NOT IMPLEMENTED
72 NULL
, // TODO: OPCODE 0x1F NOT IMPLEMENTED
73 NULL
, // TODO: OPCODE 0x20 NOT IMPLEMENTED
74 NULL
, // TODO: OPCODE 0x21 NOT IMPLEMENTED
75 NULL
, // TODO: OPCODE 0x22 NOT IMPLEMENTED
76 NULL
, // TODO: OPCODE 0x23 NOT IMPLEMENTED
77 NULL
, // TODO: OPCODE 0x24 NOT IMPLEMENTED
78 NULL
, // TODO: OPCODE 0x25 NOT IMPLEMENTED
79 NULL
, // TODO: OPCODE 0x26 NOT IMPLEMENTED
80 NULL
, // TODO: OPCODE 0x27 NOT IMPLEMENTED
81 NULL
, // TODO: OPCODE 0x28 NOT IMPLEMENTED
82 NULL
, // TODO: OPCODE 0x29 NOT IMPLEMENTED
83 NULL
, // TODO: OPCODE 0x2A NOT IMPLEMENTED
84 NULL
, // TODO: OPCODE 0x2B NOT IMPLEMENTED
85 NULL
, // TODO: OPCODE 0x2C NOT IMPLEMENTED
86 NULL
, // TODO: OPCODE 0x2D NOT IMPLEMENTED
87 NULL
, // TODO: OPCODE 0x2E NOT IMPLEMENTED
88 NULL
, // TODO: OPCODE 0x2F NOT IMPLEMENTED
89 NULL
, // TODO: OPCODE 0x30 NOT IMPLEMENTED
90 NULL
, // TODO: OPCODE 0x31 NOT IMPLEMENTED
91 NULL
, // TODO: OPCODE 0x32 NOT IMPLEMENTED
92 NULL
, // TODO: OPCODE 0x33 NOT IMPLEMENTED
93 NULL
, // TODO: OPCODE 0x34 NOT IMPLEMENTED
94 NULL
, // TODO: OPCODE 0x35 NOT IMPLEMENTED
95 NULL
, // TODO: OPCODE 0x36 NOT IMPLEMENTED
96 NULL
, // TODO: OPCODE 0x37 NOT IMPLEMENTED
97 NULL
, // TODO: OPCODE 0x38 NOT IMPLEMENTED
98 NULL
, // TODO: OPCODE 0x39 NOT IMPLEMENTED
99 NULL
, // TODO: OPCODE 0x3A NOT IMPLEMENTED
100 NULL
, // TODO: OPCODE 0x3B NOT IMPLEMENTED
101 NULL
, // TODO: OPCODE 0x3C NOT IMPLEMENTED
102 NULL
, // TODO: OPCODE 0x3D NOT IMPLEMENTED
103 NULL
, // TODO: OPCODE 0x3E NOT IMPLEMENTED
104 NULL
, // TODO: OPCODE 0x3F NOT IMPLEMENTED
105 NULL
, // TODO: OPCODE 0x40 NOT IMPLEMENTED
106 NULL
, // TODO: OPCODE 0x41 NOT IMPLEMENTED
107 NULL
, // TODO: OPCODE 0x42 NOT IMPLEMENTED
108 NULL
, // TODO: OPCODE 0x43 NOT IMPLEMENTED
109 NULL
, // TODO: OPCODE 0x44 NOT IMPLEMENTED
110 NULL
, // TODO: OPCODE 0x45 NOT IMPLEMENTED
111 NULL
, // TODO: OPCODE 0x46 NOT IMPLEMENTED
112 NULL
, // TODO: OPCODE 0x47 NOT IMPLEMENTED
113 NULL
, // TODO: OPCODE 0x48 NOT IMPLEMENTED
114 NULL
, // TODO: OPCODE 0x49 NOT IMPLEMENTED
115 NULL
, // TODO: OPCODE 0x4A NOT IMPLEMENTED
116 NULL
, // TODO: OPCODE 0x4B NOT IMPLEMENTED
117 NULL
, // TODO: OPCODE 0x4C NOT IMPLEMENTED
118 NULL
, // TODO: OPCODE 0x4D NOT IMPLEMENTED
119 NULL
, // TODO: OPCODE 0x4E NOT IMPLEMENTED
120 NULL
, // TODO: OPCODE 0x4F NOT IMPLEMENTED
121 NULL
, // TODO: OPCODE 0x50 NOT IMPLEMENTED
122 NULL
, // TODO: OPCODE 0x51 NOT IMPLEMENTED
123 NULL
, // TODO: OPCODE 0x52 NOT IMPLEMENTED
124 NULL
, // TODO: OPCODE 0x53 NOT IMPLEMENTED
125 NULL
, // TODO: OPCODE 0x54 NOT IMPLEMENTED
126 NULL
, // TODO: OPCODE 0x55 NOT IMPLEMENTED
127 NULL
, // TODO: OPCODE 0x56 NOT IMPLEMENTED
128 NULL
, // TODO: OPCODE 0x57 NOT IMPLEMENTED
129 NULL
, // TODO: OPCODE 0x58 NOT IMPLEMENTED
130 NULL
, // TODO: OPCODE 0x59 NOT IMPLEMENTED
131 NULL
, // TODO: OPCODE 0x5A NOT IMPLEMENTED
132 NULL
, // TODO: OPCODE 0x5B NOT IMPLEMENTED
133 NULL
, // TODO: OPCODE 0x5C NOT IMPLEMENTED
134 NULL
, // TODO: OPCODE 0x5D NOT IMPLEMENTED
135 NULL
, // TODO: OPCODE 0x5E NOT IMPLEMENTED
136 NULL
, // TODO: OPCODE 0x5F NOT IMPLEMENTED
137 NULL
, // TODO: OPCODE 0x60 NOT IMPLEMENTED
138 NULL
, // TODO: OPCODE 0x61 NOT IMPLEMENTED
139 NULL
, // TODO: OPCODE 0x62 NOT IMPLEMENTED
140 NULL
, // TODO: OPCODE 0x63 NOT IMPLEMENTED
141 NULL
, // TODO: OPCODE 0x64 NOT IMPLEMENTED
142 NULL
, // TODO: OPCODE 0x65 NOT IMPLEMENTED
143 NULL
, // TODO: OPCODE 0x66 NOT IMPLEMENTED
144 NULL
, // TODO: OPCODE 0x67 NOT IMPLEMENTED
145 NULL
, // TODO: OPCODE 0x68 NOT IMPLEMENTED
146 NULL
, // TODO: OPCODE 0x69 NOT IMPLEMENTED
147 NULL
, // TODO: OPCODE 0x6A NOT IMPLEMENTED
148 NULL
, // TODO: OPCODE 0x6B NOT IMPLEMENTED
149 NULL
, // TODO: OPCODE 0x6C NOT IMPLEMENTED
150 NULL
, // TODO: OPCODE 0x6D NOT IMPLEMENTED
151 NULL
, // TODO: OPCODE 0x6E NOT IMPLEMENTED
152 NULL
, // TODO: OPCODE 0x6F NOT IMPLEMENTED
153 NULL
, // TODO: OPCODE 0x70 NOT IMPLEMENTED
154 NULL
, // TODO: OPCODE 0x71 NOT IMPLEMENTED
155 NULL
, // TODO: OPCODE 0x72 NOT IMPLEMENTED
156 NULL
, // TODO: OPCODE 0x73 NOT IMPLEMENTED
157 NULL
, // TODO: OPCODE 0x74 NOT IMPLEMENTED
158 NULL
, // TODO: OPCODE 0x75 NOT IMPLEMENTED
159 NULL
, // TODO: OPCODE 0x76 NOT IMPLEMENTED
160 NULL
, // TODO: OPCODE 0x77 NOT IMPLEMENTED
161 NULL
, // TODO: OPCODE 0x78 NOT IMPLEMENTED
162 NULL
, // TODO: OPCODE 0x79 NOT IMPLEMENTED
163 NULL
, // TODO: OPCODE 0x7A NOT IMPLEMENTED
164 NULL
, // TODO: OPCODE 0x7B NOT IMPLEMENTED
165 NULL
, // TODO: OPCODE 0x7C NOT IMPLEMENTED
166 NULL
, // TODO: OPCODE 0x7D NOT IMPLEMENTED
167 NULL
, // TODO: OPCODE 0x7E NOT IMPLEMENTED
168 NULL
, // TODO: OPCODE 0x7F NOT IMPLEMENTED
169 Fast486ExtOpcodeConditionalJmp
,
170 Fast486ExtOpcodeConditionalJmp
,
171 Fast486ExtOpcodeConditionalJmp
,
172 Fast486ExtOpcodeConditionalJmp
,
173 Fast486ExtOpcodeConditionalJmp
,
174 Fast486ExtOpcodeConditionalJmp
,
175 Fast486ExtOpcodeConditionalJmp
,
176 Fast486ExtOpcodeConditionalJmp
,
177 Fast486ExtOpcodeConditionalJmp
,
178 Fast486ExtOpcodeConditionalJmp
,
179 Fast486ExtOpcodeConditionalJmp
,
180 Fast486ExtOpcodeConditionalJmp
,
181 Fast486ExtOpcodeConditionalJmp
,
182 Fast486ExtOpcodeConditionalJmp
,
183 Fast486ExtOpcodeConditionalJmp
,
184 Fast486ExtOpcodeConditionalJmp
,
185 NULL
, // TODO: OPCODE 0x90 NOT IMPLEMENTED
186 NULL
, // TODO: OPCODE 0x91 NOT IMPLEMENTED
187 NULL
, // TODO: OPCODE 0x92 NOT IMPLEMENTED
188 NULL
, // TODO: OPCODE 0x93 NOT IMPLEMENTED
189 NULL
, // TODO: OPCODE 0x94 NOT IMPLEMENTED
190 NULL
, // TODO: OPCODE 0x95 NOT IMPLEMENTED
191 NULL
, // TODO: OPCODE 0x96 NOT IMPLEMENTED
192 NULL
, // TODO: OPCODE 0x97 NOT IMPLEMENTED
193 NULL
, // TODO: OPCODE 0x98 NOT IMPLEMENTED
194 NULL
, // TODO: OPCODE 0x99 NOT IMPLEMENTED
195 NULL
, // TODO: OPCODE 0x9A NOT IMPLEMENTED
196 NULL
, // TODO: OPCODE 0x9B NOT IMPLEMENTED
197 NULL
, // TODO: OPCODE 0x9C NOT IMPLEMENTED
198 NULL
, // TODO: OPCODE 0x9D NOT IMPLEMENTED
199 NULL
, // TODO: OPCODE 0x9E NOT IMPLEMENTED
200 NULL
, // TODO: OPCODE 0x9F NOT IMPLEMENTED
201 NULL
, // TODO: OPCODE 0xA0 NOT IMPLEMENTED
202 NULL
, // TODO: OPCODE 0xA1 NOT IMPLEMENTED
203 NULL
, // TODO: OPCODE 0xA2 NOT IMPLEMENTED
204 NULL
, // TODO: OPCODE 0xA3 NOT IMPLEMENTED
205 NULL
, // TODO: OPCODE 0xA4 NOT IMPLEMENTED
206 NULL
, // TODO: OPCODE 0xA5 NOT IMPLEMENTED
207 NULL
, // TODO: OPCODE 0xA6 NOT IMPLEMENTED
208 NULL
, // TODO: OPCODE 0xA7 NOT IMPLEMENTED
209 NULL
, // TODO: OPCODE 0xA8 NOT IMPLEMENTED
210 NULL
, // TODO: OPCODE 0xA9 NOT IMPLEMENTED
211 NULL
, // TODO: OPCODE 0xAA NOT IMPLEMENTED
212 NULL
, // TODO: OPCODE 0xAB NOT IMPLEMENTED
213 NULL
, // TODO: OPCODE 0xAC NOT IMPLEMENTED
214 NULL
, // TODO: OPCODE 0xAD NOT IMPLEMENTED
215 NULL
, // TODO: OPCODE 0xAE NOT IMPLEMENTED
216 NULL
, // TODO: OPCODE 0xAF NOT IMPLEMENTED
217 NULL
, // TODO: OPCODE 0xB0 NOT IMPLEMENTED
218 NULL
, // TODO: OPCODE 0xB1 NOT IMPLEMENTED
219 NULL
, // TODO: OPCODE 0xB2 NOT IMPLEMENTED
220 NULL
, // TODO: OPCODE 0xB3 NOT IMPLEMENTED
221 NULL
, // TODO: OPCODE 0xB4 NOT IMPLEMENTED
222 NULL
, // TODO: OPCODE 0xB5 NOT IMPLEMENTED
223 NULL
, // TODO: OPCODE 0xB6 NOT IMPLEMENTED
224 NULL
, // TODO: OPCODE 0xB7 NOT IMPLEMENTED
225 NULL
, // TODO: OPCODE 0xB8 NOT IMPLEMENTED
226 NULL
, // TODO: OPCODE 0xB9 NOT IMPLEMENTED
227 NULL
, // TODO: OPCODE 0xBA NOT IMPLEMENTED
228 NULL
, // TODO: OPCODE 0xBB NOT IMPLEMENTED
229 NULL
, // TODO: OPCODE 0xBC NOT IMPLEMENTED
230 NULL
, // TODO: OPCODE 0xBD NOT IMPLEMENTED
231 NULL
, // TODO: OPCODE 0xBE NOT IMPLEMENTED
232 NULL
, // TODO: OPCODE 0xBF NOT IMPLEMENTED
233 NULL
, // TODO: OPCODE 0xC0 NOT IMPLEMENTED
234 NULL
, // TODO: OPCODE 0xC1 NOT IMPLEMENTED
235 NULL
, // TODO: OPCODE 0xC2 NOT IMPLEMENTED
236 NULL
, // TODO: OPCODE 0xC3 NOT IMPLEMENTED
237 NULL
, // TODO: OPCODE 0xC4 NOT IMPLEMENTED
238 NULL
, // TODO: OPCODE 0xC5 NOT IMPLEMENTED
239 NULL
, // TODO: OPCODE 0xC6 NOT IMPLEMENTED
240 NULL
, // TODO: OPCODE 0xC7 NOT IMPLEMENTED
241 NULL
, // TODO: OPCODE 0xC8 NOT IMPLEMENTED
242 NULL
, // TODO: OPCODE 0xC9 NOT IMPLEMENTED
243 NULL
, // TODO: OPCODE 0xCA NOT IMPLEMENTED
244 NULL
, // TODO: OPCODE 0xCB NOT IMPLEMENTED
245 NULL
, // TODO: OPCODE 0xCC NOT IMPLEMENTED
246 NULL
, // TODO: OPCODE 0xCD NOT IMPLEMENTED
247 NULL
, // TODO: OPCODE 0xCE NOT IMPLEMENTED
248 NULL
, // TODO: OPCODE 0xCF NOT IMPLEMENTED
249 NULL
, // TODO: OPCODE 0xD0 NOT IMPLEMENTED
250 NULL
, // TODO: OPCODE 0xD1 NOT IMPLEMENTED
251 NULL
, // TODO: OPCODE 0xD2 NOT IMPLEMENTED
252 NULL
, // TODO: OPCODE 0xD3 NOT IMPLEMENTED
253 NULL
, // TODO: OPCODE 0xD4 NOT IMPLEMENTED
254 NULL
, // TODO: OPCODE 0xD5 NOT IMPLEMENTED
255 NULL
, // TODO: OPCODE 0xD6 NOT IMPLEMENTED
256 NULL
, // TODO: OPCODE 0xD7 NOT IMPLEMENTED
257 NULL
, // TODO: OPCODE 0xD8 NOT IMPLEMENTED
258 NULL
, // TODO: OPCODE 0xD9 NOT IMPLEMENTED
259 NULL
, // TODO: OPCODE 0xDA NOT IMPLEMENTED
260 NULL
, // TODO: OPCODE 0xDB NOT IMPLEMENTED
261 NULL
, // TODO: OPCODE 0xDC NOT IMPLEMENTED
262 NULL
, // TODO: OPCODE 0xDD NOT IMPLEMENTED
263 NULL
, // TODO: OPCODE 0xDE NOT IMPLEMENTED
264 NULL
, // TODO: OPCODE 0xDF NOT IMPLEMENTED
265 NULL
, // TODO: OPCODE 0xE0 NOT IMPLEMENTED
266 NULL
, // TODO: OPCODE 0xE1 NOT IMPLEMENTED
267 NULL
, // TODO: OPCODE 0xE2 NOT IMPLEMENTED
268 NULL
, // TODO: OPCODE 0xE3 NOT IMPLEMENTED
269 NULL
, // TODO: OPCODE 0xE4 NOT IMPLEMENTED
270 NULL
, // TODO: OPCODE 0xE5 NOT IMPLEMENTED
271 NULL
, // TODO: OPCODE 0xE6 NOT IMPLEMENTED
272 NULL
, // TODO: OPCODE 0xE7 NOT IMPLEMENTED
273 NULL
, // TODO: OPCODE 0xE8 NOT IMPLEMENTED
274 NULL
, // TODO: OPCODE 0xE9 NOT IMPLEMENTED
275 NULL
, // TODO: OPCODE 0xEA NOT IMPLEMENTED
276 NULL
, // TODO: OPCODE 0xEB NOT IMPLEMENTED
277 NULL
, // TODO: OPCODE 0xEC NOT IMPLEMENTED
278 NULL
, // TODO: OPCODE 0xED NOT IMPLEMENTED
279 NULL
, // TODO: OPCODE 0xEE NOT IMPLEMENTED
280 NULL
, // TODO: OPCODE 0xEF NOT IMPLEMENTED
281 NULL
, // TODO: OPCODE 0xF0 NOT IMPLEMENTED
282 NULL
, // TODO: OPCODE 0xF1 NOT IMPLEMENTED
283 NULL
, // TODO: OPCODE 0xF2 NOT IMPLEMENTED
284 NULL
, // TODO: OPCODE 0xF3 NOT IMPLEMENTED
285 NULL
, // TODO: OPCODE 0xF4 NOT IMPLEMENTED
286 NULL
, // TODO: OPCODE 0xF5 NOT IMPLEMENTED
287 NULL
, // TODO: OPCODE 0xF6 NOT IMPLEMENTED
288 NULL
, // TODO: OPCODE 0xF7 NOT IMPLEMENTED
289 NULL
, // TODO: OPCODE 0xF8 NOT IMPLEMENTED
290 NULL
, // TODO: OPCODE 0xF9 NOT IMPLEMENTED
291 NULL
, // TODO: OPCODE 0xFA NOT IMPLEMENTED
292 NULL
, // TODO: OPCODE 0xFB NOT IMPLEMENTED
293 NULL
, // TODO: OPCODE 0xFC NOT IMPLEMENTED
294 NULL
, // TODO: OPCODE 0xFD NOT IMPLEMENTED
295 NULL
, // TODO: OPCODE 0xFE NOT IMPLEMENTED
296 NULL
, // TODO: OPCODE 0xFF NOT IMPLEMENTED
299 /* PUBLIC FUNCTIONS ***********************************************************/
301 FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalJmp
)
303 BOOLEAN Jump
= FALSE
;
305 BOOLEAN Size
= State
->SegmentRegs
[FAST486_REG_CS
].Size
;
307 if (State
->PrefixFlags
& FAST486_PREFIX_OPSIZE
)
309 /* The OPSIZE prefix toggles the size */
313 if (State
->PrefixFlags
& FAST486_PREFIX_LOCK
)
316 Fast486Exception(State
, FAST486_EXCEPTION_UD
);
320 /* Make sure this is the right instruction */
321 ASSERT((Opcode
& 0xF0) == 0x80);
323 /* Fetch the offset */
326 if (!Fast486FetchDword(State
, (PULONG
)&Offset
))
328 /* Exception occurred */
336 if (!Fast486FetchWord(State
, (PUSHORT
)&Value
))
338 /* Exception occurred */
343 Offset
= (LONG
)Value
;
346 switch ((Opcode
& 0x0F) >> 1)
351 Jump
= State
->Flags
.Of
;
358 Jump
= State
->Flags
.Cf
;
365 Jump
= State
->Flags
.Zf
;
372 Jump
= State
->Flags
.Cf
|| State
->Flags
.Zf
;
379 Jump
= State
->Flags
.Sf
;
386 Jump
= State
->Flags
.Pf
;
393 Jump
= State
->Flags
.Sf
!= State
->Flags
.Of
;
400 Jump
= (State
->Flags
.Sf
!= State
->Flags
.Of
) || State
->Flags
.Zf
;
407 /* Invert the result */
413 /* Move the instruction pointer */
414 State
->InstPtr
.Long
+= Offset
;
422 FAST486_OPCODE_HANDLER(Fast486OpcodeExtended
)
426 /* Fetch the second operation code */
427 if (!Fast486FetchByte(State
, &SecondOpcode
))
429 /* Exception occurred */
433 if (Fast486ExtendedHandlers
[SecondOpcode
] != NULL
)
435 /* Call the extended opcode handler */
436 return Fast486ExtendedHandlers
[SecondOpcode
](State
, SecondOpcode
);
440 /* This is not a valid opcode */
441 Fast486Exception(State
, FAST486_EXCEPTION_UD
);