Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4867 | leency | 1 | \ Оптимизирующий макроподстановшик Максимов М.О. |
2 | \ http://wiki.forth.org.ru/optimizer |
||
3 | |||
4 | [UNDEFINED] C>S |
||
5 | [IF] |
||
6 | : C>S ( c -- n ) 0xFF AND [ 0x7F INVERT ] LITERAL XOR 0x80 + ; |
||
7 | [THEN] |
||
8 | |||
9 | BASE @ HEX |
||
10 | |||
11 | \ : REL! ( ADDR' ADDR -- ) |
||
12 | \ TUCK - SWAP ! ; |
||
13 | |||
14 | : REL@ ( ADDR -- ADDR' ) |
||
15 | DUP @ + ; |
||
16 | |||
17 | \ FALSE VALUE OPT? |
||
18 | TRUE VALUE OPT? |
||
19 | |||
20 | 084 VALUE J_COD |
||
21 | |||
22 | : SET-OPT TRUE TO OPT? ; |
||
23 | |||
24 | : DIS-OPT FALSE TO OPT? ; |
||
25 | |||
26 | INLINEVAR |
||
27 | [IF] |
||
28 | 0x20 VALUE MM_SIZE |
||
29 | |||
30 | |||
31 | |||
32 | |||
33 | |||
34 | |||
35 | |||
36 | |||
37 | |||
38 | |||
39 | |||
40 | 0x44 CELLS DUP CONSTANT OpBuffSize |
||
41 | |||
42 | CREATE OP0 HERE >T DUP , 0 , SWAP ALLOT |
||
43 | |||
44 | DUP OpBuffSize + CELL- CONSTANT OPLast |
||
45 | |||
46 | CELL+ DUP CONSTANT OP1 |
||
47 | CELL+ DUP CONSTANT OP2 |
||
48 | CELL+ DUP CONSTANT OP3 |
||
49 | CELL+ DUP CONSTANT OP4 |
||
50 | CELL+ DUP CONSTANT OP5 |
||
51 | CELL+ DUP CONSTANT OP6 |
||
52 | CELL+ DUP CONSTANT OP7 |
||
53 | CELL+ DUP CONSTANT OP8 |
||
54 | |||
55 | DROP |
||
56 | |||
57 | : SetOP ( -- ) |
||
58 | OP0 OP1 OpBuffSize CELL- CMOVE> |
||
59 | DP @ OP0 ! |
||
60 | ; |
||
61 | |||
62 | : ToOP0 ( OPn -- ) |
||
63 | OP0 OpBuffSize CELL- CMOVE ; |
||
64 | |||
65 | 0x11 CELLS DUP CONSTANT JpBuffSize |
||
66 | |||
67 | CREATE JP0 HERE DUP , OVER ALLOT |
||
68 | |||
69 | |||
70 | DUP ROT ERASE |
||
71 | |||
72 | CELL+ DUP CONSTANT JP1 |
||
73 | |||
74 | |||
75 | CELL+ DUP CONSTANT JP2 |
||
76 | |||
77 | |||
78 | CELL+ DUP CONSTANT JP3 |
||
79 | |||
80 | |||
81 | CELL+ DUP CONSTANT JP4 |
||
82 | |||
83 | DROP |
||
84 | |||
85 | [THEN] |
||
86 | |||
87 | : ClearJpBuff JP0 JpBuffSize ERASE ; |
||
88 | |||
89 | : J@ 1+ REL@ CELL+ ; |
||
90 | |||
91 | : SJ@ 1+ DUP C@ C>S + 1+ ; |
||
92 | |||
93 | : J_@ |
||
94 | DUP C@ F0 |
||
95 | AND 70 = IF SJ@ ELSE |
||
96 | DUP C@ EB = IF SJ@ ELSE |
||
97 | DUP C@ E9 = IF J@ ELSE |
||
98 | DUP W@ F0FF |
||
99 | AND 800F = IF 1+ J@ ELSE |
||
100 | HEX U. 1 ." J_@ ERR" ABORT |
||
101 | THEN THEN THEN THEN |
||
102 | ; |
||
103 | |||
104 | : SetJP ( -- ) |
||
105 | JP0 JpBuffSize + CELL- @ DUP |
||
106 | IF J_@ |
||
107 | THEN |
||
108 | \ DP @ UMIN |
||
109 | J-SET UMAX TO J-SET |
||
110 | JP0 JP1 JpBuffSize CELL- CMOVE> |
||
111 | DP @ JP0 ! ; |
||
112 | |||
113 | \ : ToJP0 ( OPn -- ) |
||
114 | \ JP0 JpBuffSize CELL- CMOVE |
||
115 | \ JP0 JpBuffSize + CELL- 0! ; |
||
116 | |||
117 | : ?SET DP @ |
||
118 | DUP LAST-HERE <> IF DUP TO :-SET DUP TO J-SET THEN |
||
119 | DUP OP0 @ U< IF OP0 0! THEN |
||
120 | DUP OP1 @ U< IF OP1 0! THEN |
||
121 | DUP JP0 @ U< IF JP0 0! THEN |
||
122 | JP1 @ U< IF JP1 0! THEN |
||
123 | ; |
||
124 | |||
125 | : SHORT? ( n -- -129 < n < 128 ) |
||
126 | 0x80 + 0x100 U< |
||
127 | ; |
||
128 | |||
129 | M\ VECT DTST |
||
130 | |||
131 | \ \\\\\\\\\\ |
||
132 | |||
133 | [DEFINED] [TTO] \ CR .( TTO=) DUP . |
||
134 | [IF] |
||
135 | |||
136 | GET-CURRENT |
||
137 | |||
138 | WORDLIST CONSTANT MACROOPT-WL |
||
139 | |||
140 | \ запишем адрес имени словаря |
||
141 | ' MACROOPT-WL EXECUTE CELL+ ( name_addr ) |
||
142 | LAST @ SWAP ! |
||
143 | |||
144 | ALSO ' MACROOPT-WL EXECUTE CONTEXT ! DEFINITIONS |
||
145 | TC-WL ALSO TC-IMM |
||
146 | |||
147 | [THEN] |
||
148 | |||
149 | \ \\\\\\\\\\\\ |
||
150 | |||
151 | : EVEN-EAX OFF-EAX |
||
152 | IF M\ 1000 DTST |
||
153 | SetOP OFF-EAX DUP SHORT? |
||
154 | IF 0408D W, C, |
||
155 | ELSE 0808D W, , |
||
156 | THEN \ LEA EAX, OFF-EBP [EAX] |
||
157 | |||
158 | M\ 1001 DTST |
||
159 | THEN |
||
160 | ; |
||
161 | |||
162 | : EVEN-EBP OFF-EBP |
||
163 | IF SetOP OFF-EBP 06D8D W, C, \ LEA ebp, OFF-EBP [EBP] |
||
164 | |||
165 | THEN |
||
166 | ; |
||
167 | |||
168 | : +>OFF-EBP ( C -- ) |
||
169 | C>S OFF-EBP + TO OFF-EBP ; |
||
170 | |||
171 | : ADD|XOR|OR|AND= ( W -- FLAG ) |
||
172 | CASE |
||
173 | DUP 4503 <> IF \ ADD EAX, X2 [EBP] |
||
174 | DUP 450B <> IF \ OR |
||
175 | DUP 4523 <> IF \ AND |
||
176 | DUP 4533 <> IF \ XOR |
||
177 | DROP FALSE EXIT |
||
178 | DUPENDCASE DROP TRUE ; |
||
179 | |||
180 | : DUP3B?[EBP] ( W -- W FLAG ) |
||
181 | CASE |
||
182 | DUP 0E7C4 AND 04500 <> IF \ 010X.X101 00XX.X0XX |
||
183 | \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP _L | E_X | X [EBP] , _L | E_X | X [EBP] |
||
184 | |||
185 | DUP E7FD AND 4589 <> IF \ 010X.X101 1000.10X1 |
||
186 | \ MOV X [EBP], E(ABCD)X | E(ABCD)X , X [EBP] |
||
187 | \ DUP 5503 <> IF \ ADD EDX , 0 [EBP] |
||
188 | DUP 758B <> IF \ MOV ESI , X [EBP] |
||
189 | |||
190 | DUP EFFF AND 6DDB <> IF \ FLD | FSTP EXTENDED 0 [EBP] |
||
191 | |||
192 | DUP 45DB <> IF \ FILD DWORD FC [EBP] |
||
193 | DUP 65F7 <> IF \ MUL X [EBP] |
||
194 | DUP 6DF7 <> IF \ IMUL X [EBP] |
||
195 | DUP 04587 <> IF \ XCHG EAX , X [EBP] |
||
196 | FALSE EXIT |
||
197 | DUPENDCASE TRUE ; |
||
198 | |||
199 | : DUP3B? ( W -- W FLAG ) |
||
200 | CASE |
||
201 | \ 11XX.X000 1000.0011 |
||
202 | DUP C7FF AND C083 <> IF \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X |
||
203 | DUP 0478B <> IF \ MOV EAX, X [EDI] |
||
204 | DUP 0488B <> IF \ MOV ECX, X [EAX] |
||
205 | DUP 0588B <> IF \ MOV EBX, X [EAX] |
||
206 | DUP 0508B <> IF \ MOV EDX, X [EAX] |
||
207 | DUP 0788B <> IF \ MOV EDI, X [EAX] |
||
208 | DUP 0708B <> IF \ MOV ESI, X [EAX] |
||
209 | |||
210 | |||
211 | DUP 0588D <> IF \ LEA EBX, X [EAX] |
||
212 | DUP 0508D <> IF \ LEA EDX, X [EAX] |
||
213 | DUP 05089 <> IF \ MOV X [EAX], EDX |
||
214 | DUP 05189 <> IF \ MOV X [ECX] , EDX |
||
215 | DUP 07589 <> IF \ MOV X [EAX], ESI |
||
216 | |||
217 | DUP 0F8C1 <> IF \ SAR EAX, # X |
||
218 | DUP 0E0C1 <> IF \ SHL EAX, # X |
||
219 | DUP 0E1C1 <> IF \ SHL ECX, # X |
||
220 | |||
221 | DUP 0E8C1 <> IF \ SHR EAX, # X |
||
222 | DUP 0408D <> IF \ LEA EAX , X [EAX] |
||
223 | DUP 0408B <> IF \ MOV EAX , X [EAX] |
||
224 | FALSE EXIT |
||
225 | DUPENDCASE TRUE ; |
||
226 | |||
227 | : DUP2B? ( W -- W FLAG ) |
||
228 | CASE |
||
229 | DUP 0E4C5 AND 0C001 <> IF |
||
230 | \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP E_X , E_X |
||
231 | |||
232 | \ DUP 01801 <> IF \ ADD [EAX], EBX |
||
233 | |||
234 | DUP 01001 <> IF \ ADD [EAX], EDX |
||
235 | DUP 0003 <> IF \ ADD EAX, [EAX] |
||
236 | DUP F633 <> IF \ XOR ESI, ESI |
||
237 | DUP 108B <> IF \ MOV EDX , [EAX] |
||
238 | DUP 0C0FF AND C085 <> IF \ TEST E__ , E__ |
||
239 | |||
240 | \ 110X.X0XX 1000.10X1 |
||
241 | DUP 0E4FC AND 0C088 <> IF \ MOV E(ABCD)X , E(ABCD)X | (ABCD)L , (ABCD)L |
||
242 | |||
243 | \ 00XX.X0XX 1000.100X |
||
244 | |||
245 | DUP 0C4FE AND 00088 <> IF \ MOV [E(ABCD)X] , E(ABCD)X | (ABCD)(HL) |
||
246 | DUP 0008B <> IF \ MOV EAX, [EAX] |
||
247 | DUP 028B <> IF \ MOV EAX, [EDX] |
||
248 | DUP 0C78B <> IF \ MOV EAX, EDI |
||
249 | DUP 0F88B <> IF \ MOV EDI, EAX |
||
250 | DUP 0F08B <> IF \ MOV ESI, EAX |
||
251 | DUP 0C88B <> IF \ MOV ECX , EAX |
||
252 | DUP 0D18B <> IF \ MOV EDX , ECX |
||
253 | DUP 0C68B <> IF \ MOV EAX, ESI |
||
254 | \ 111X.X0XX 1101.00XX |
||
255 | DUP 0E4FC AND 0E0D0 <> IF \ S(AH)(LR) (ABCD)L | E(ABCD)X, CL | 1 |
||
256 | DUP 0C0DD <> IF \ FFREE ST |
||
257 | |||
258 | DUP F0FF AND C0D9 <> IF \ FLD ST(X) | FXCH ST(X) |
||
259 | \ 1100.XXXX.1101.1001 |
||
260 | |||
261 | DUP FAFF AND E0D9 <> IF \ FCHS|FABS|FTST|FXAM |
||
262 | \ 1110.0X0X.1101.1001 |
||
263 | DUP E8FF AND E8D9 <> IF \ FLD1 FLDL2T FLDL2E FLDPI FLDLG2 FLDLN2 FLDZ ??? |
||
264 | \ 1110.1XXX.1101.1001 |
||
265 | |||
266 | DUP F0FF AND F0D9 <> IF \ F2XM1 FYL2X FPTAN FPATAN |
||
267 | \ 1111.XXXX.1101.1001 \ FXTRACT FPREM1 FDECSTP FINCSTP |
||
268 | \ FPREM FYL2XP1 FSQRT FSINCOS |
||
269 | \ FRNDINT FSCALE FSIN FCOS |
||
270 | DUP E8FF AND 20DB <> IF \ FLD EXTENDED [E_X] | FST EXTENDED [E_X] |
||
271 | \ 001X.0XXX.1101.1011 |
||
272 | |||
273 | DUP E8FF AND 00DD <> IF \ FLD DOUBLE [E_X] | FST DOUBLE [E_X] |
||
274 | \ 000X.0XXX.1101.1101 |
||
275 | |||
276 | DUP F0FF AND C0DE <> IF \ FADDP ST(X) | FMULP ST(X) |
||
277 | DUP E0FF AND E0DE <> IF \ FSUBRP ST(X) | FSUBP ST(X) |
||
278 | \ 111X.XXXX.1101.1110 \ FDIVRP ST(X) | FDIVP ST(X) |
||
279 | |||
280 | DUP 00FF <> IF \ INC [EAX] |
||
281 | \ DUP 0C0FF <> IF \ INC EAX |
||
282 | \ DUP 0C3FF <> IF \ INC EBX |
||
283 | \ DUP 0C8FF <> IF \ DEC EAX |
||
284 | DUP 0D0F7 <> IF \ NOT EAX |
||
285 | DUP 0D1F7 <> IF \ NOT ECX |
||
286 | DUP 0D8F7 <> IF \ NEG EAX |
||
287 | DUP 0D9F7 <> IF \ NEG ECX |
||
288 | DUP 0DAF7 <> IF \ NEG EDX |
||
289 | DUP 0E9F7 <> IF \ IMUL ECX |
||
290 | DUP 0F1F7 <> IF \ DIV ECX |
||
291 | DUP 0F9F7 <> IF \ IDIV ECX |
||
292 | FALSE EXIT |
||
293 | DUPENDCASE TRUE ; |
||
294 | |||
295 | : DUP6B? ( W -- W FLAG ) |
||
296 | CASE |
||
297 | \ X00X.X101 1000.10X1 |
||
298 | DUP 67FD AND 0589 <> IF \ MOV X {[EBP]}, E(ACDB)X | E(ACDB)X , X {[EBP]} |
||
299 | |||
300 | DUP C3FF AND C081 <> IF \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X |
||
301 | |||
302 | DUP 00501 <> IF \ ADD X , EAX |
||
303 | DUP 0503 <> IF \ ADD EAX, X |
||
304 | DUP 053B <> IF \ CMP EAX, X |
||
305 | DUP 873B <> IF \ CMP EAX, X [EDI] |
||
306 | DUP F281 <> IF \ XOR EDX , # 80000000 |
||
307 | DUP 928D <> IF \ LEA EDX , [EDX+80000000H] |
||
308 | |||
309 | \ DUP 0589 <> IF \ MOV X , EAX |
||
310 | \ DUP 058B <> IF \ MOV EAX, X |
||
311 | DUP 808B <> IF \ MOV EAX, X [EAX] |
||
312 | DUP 808D <> IF \ LEA EAX, X [EAX] |
||
313 | DUP 8703 <> IF \ MOV EAX, X [EDI] |
||
314 | |||
315 | DUP 878B <> IF \ MOV EAX, X [EDI] |
||
316 | DUP 878D <> IF \ LEA EAX, X [EDI] |
||
317 | DUP 0C7 <> IF \ MOV [EAX], # X |
||
318 | DUP 0081 <> IF \ ADD [EAX], # X |
||
319 | DUP 05FF <> IF \ INC X |
||
320 | |||
321 | \ DUP FCFF AND C0C7 <> IF \ MOV EAX|EBX|ECX|EDX, # X |
||
322 | FALSE EXIT |
||
323 | DUPENDCASE TRUE ; |
||
324 | |||
325 | : DUP5B? ( C -- C FLAG ) |
||
326 | |||
327 | |||
328 | DUP 0C7 AND 5 = \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X |
||
329 | OVER 0FC AND 0B8 = OR \ MOV EAX|EBX|ECX|EDX, # X |
||
330 | OVER 0FD AND 0A1 = OR \ MOV EAX, X | X , EAX |
||
331 | ; |
||
332 | |||
333 | : DUP7B? ( N -- N FLAG ) |
||
334 | \ XX00.0101 0000.0100 1000.10X1 |
||
335 | DUP 3FFFFD AND 050489 = \ MOV X [EAX*_] , EAX | MOV EAX , X [EAX*_] |
||
336 | \ XX00.0101 0000.0100 1000.1X01 |
||
337 | OVER 3FFFFB AND 050489 = OR \ MOV X [EAX*_] , EAX | LEA EAX , X [EAX*_] |
||
338 | OVER 80B60F = OR \ MOVZX EAX, BYTE PTR [EAX] |
||
339 | OVER 45048D = OR \ LEA EAX, X [EAX*2] |
||
340 | |||
341 | ; |
||
342 | |||
343 | |||
344 | |||
345 | \ 0 VALUE ZZZZ \ VECT VVV |
||
346 | |||
347 | : ?ChEAX ( ADDR -- FALSE | TRUE ) |
||
348 | CASE |
||
349 | DUP C@ |
||
350 | DUP B8 <> IF \ MOV EAX, # X |
||
351 | DUP A1 <> IF \ MOV EAX, X |
||
352 | DROP |
||
353 | DUP W@ |
||
354 | \ DUP ADD|XOR|OR|AND= 0= IF |
||
355 | DUP C033 <> IF \ XOR EAX, EAX |
||
356 | DUP C031 <> IF \ XOR EAX, EAX |
||
357 | DUP D889 <> IF \ MOV EAX, EBX |
||
358 | |||
359 | 38FF AND |
||
360 | DUP 008B <> IF \ MOV EAX, ___ |
||
361 | DUP 008D <> IF \ LEA EAX, ___ |
||
362 | DROP |
||
363 | DUP @ FFFFFF AND |
||
364 | DUP 02048D <> IF \ LEA EAX, [EDX] [EAX] |
||
365 | |||
366 | 2DROP TRUE EXIT |
||
367 | DUPENDCASE 2DROP FALSE ; |
||
368 | |||
369 | : ^?EAX= ( ADDR -- FALSE | TRUE ) |
||
370 | \ FALSE |
||
371 | DUP ?ChEAX IF DROP TRUE EXIT THEN |
||
372 | DUP W@ |
||
373 | DUP 00F9 |
||
374 | AND 0089 <> IF 2DROP FALSE EXIT THEN |
||
375 | \ LEA MOV |
||
376 | CASE |
||
377 | FF00 AND |
||
378 | DUP 0100 AND |
||
379 | 0100 <> IF \ MOV EAX, |
||
380 | |||
381 | DUP C200 <> IF \ MOV EAX, EDX |
||
382 | DUP D800 <> IF \ MOV EAX, EBX |
||
383 | DROP |
||
384 | DUP @ FFFF00 AND |
||
385 | |||
386 | DUP 240400 <> IF \ MOV EAX, [ESP] |
||
387 | DUP 244400 <> IF \ MOV EAX, X [ESP] |
||
388 | DUP 95048B <> IF \ 8B0495F0065A00 MOV EAX , 5A06F0 [EDX*4] |
||
389 | 2DROP TRUE EXIT |
||
390 | DUPENDCASE 2DROP FALSE ; |
||
391 | |||
392 | \ DUP 8B00 = \ MOV EAX, [EAX] |
||
393 | |||
394 | : OP_SIZE ( OP - n ) |
||
395 | DUP IF THEN DUP CELL- @ SWAP @ - |
||
396 | ; |
||
397 | |||
398 | : OPexcise ( OPX -- ) |
||
399 | DUP OP0 = IF @ DP ! OP1 ToOP0 EXIT THEN |
||
400 | >R |
||
401 | R@ CELL- @ R@ @ DP @ R@ CELL- @ - CMOVE |
||
402 | |||
403 | R@ OP_SIZE NEGATE |
||
404 | R@ OP0 DO DUP I +! CELL +LOOP |
||
405 | ALLOT |
||
406 | R@ CELL+ R@ OpBuffSize CELL- R> - OP0 + CMOVE |
||
407 | ; |
||
408 | : ?OPlast ( OPX -- OPX flag ) |
||
409 | DUP OP0 OpBuffSize + CELL- CELL- U> ; |
||
410 | |||
411 | : XX_STEP ( OPX -- OPX+CELL FALSE | { OPX | FALSE } TRUE ) |
||
412 | \ Проверка на не изменение EAX |
||
413 | ?OPlast |
||
414 | IF DROP FALSE TRUE EXIT THEN |
||
415 | DUP @ |
||
416 | DUP :-SET U< IF 2DROP FALSE TRUE EXIT THEN |
||
417 | C@ |
||
418 | CASE |
||
419 | DUP 3D <> IF \ CMP EAX, # X |
||
420 | DUP 3B <> IF \ CMP E_X , X |
||
421 | DUP A3 <> IF \ MOV X , EAX |
||
422 | DUP B9 <> IF \ MOV ECX , # X |
||
423 | DUP BA <> IF \ MOV EDX , # X |
||
424 | DUP BB <> IF \ MOV EBX , # X |
||
425 | DUP 50 <> IF \ PUSH EAX |
||
426 | DROP |
||
427 | DUP @ W@ |
||
428 | DUP 04FF AND 04C7 <> IF \ MOV 4444 , # 5555 |
||
429 | DUP 40FE AND 0088 <> IF \ MOV [EAX] , DL |
||
430 | DUP 4D89 <> IF \ MOV 4 [EBP] , ECX |
||
431 | DUP 558B <> IF \ MOV EDX , FC [EBP] |
||
432 | DUP 4C8B <> IF \ MOV ECX , FC [E__] [E__] |
||
433 | DUP 648D <> IF \ LEA ESP , 8 [ESP] |
||
434 | DUP 34FF AND 04FF <> IF \ INC 0 [ESP] |
||
435 | DUP C00B <> IF \ OR EAX, EAX |
||
436 | DUP D00B <> IF \ OR EDX, EAX |
||
437 | DUP D02B <> IF \ SUB EDX, EAX |
||
438 | DUP 0401 <> IF \ ADD [E_X] |
||
439 | DUP 06FD \ CMP X [EBP], # Z \ CMP 44444, # 55555 |
||
440 | AND 0481 <> IF |
||
441 | DUP FFFD |
||
442 | AND 4589 = |
||
443 | IF OVER @ 2+ C@ OP0 @ 2+ C@ = |
||
444 | IF DROP TRUE |
||
445 | EXIT |
||
446 | THEN |
||
447 | 458B = IF DROP FALSE TRUE EXIT THEN |
||
448 | CELL+ FALSE EXIT |
||
449 | THEN |
||
450 | 2DROP |
||
451 | FALSE TRUE EXIT |
||
452 | DUPENDCASE DROP CELL+ FALSE ; |
||
453 | |||
454 | : ?EDX_[EBP] ( OPX - FLAG ) |
||
455 | DUP @ @ FFFFFF AND |
||
456 | DUP 24048B = \ 8B0424 MOV EAX , [ESP] |
||
457 | IF 2DROP FALSE EXIT THEN |
||
458 | FFFF AND |
||
459 | |||
460 | DUP 458B XOR \ 8B4500 MOV EAX , 0 [EBP] |
||
461 | OVER 4589 XOR OR \ OPX N F MOV FC [EBP] , EAX |
||
462 | 0= IF DROP |
||
463 | @ 2+ C@ OP0 @ 2+ C@ = |
||
464 | EXIT |
||
465 | THEN |
||
466 | NIP |
||
467 | DUP ADD|XOR|OR|AND= |
||
468 | IF DROP FALSE EXIT THEN |
||
469 | DUP E8C1 = \ C1E819 SHR EAX , 19 |
||
470 | IF DROP FALSE EXIT THEN |
||
471 | DUP 418D = \ 8D41FF LEA EAX , FF [ECX] |
||
472 | IF DROP FALSE EXIT THEN |
||
473 | DUP 408D = \ 8D40FF LEA EAX , FF [EAX] |
||
474 | IF DROP FALSE EXIT THEN |
||
475 | DUP 878D = \ 8D873C100000 LEA EAX , 103C [EDI] |
||
476 | IF DROP FALSE EXIT THEN |
||
477 | DUP D0F7 = \ F7D0 NOT EAX |
||
478 | IF DROP FALSE EXIT THEN |
||
479 | DUP D8F7 = \ F7D8 NEG EAX |
||
480 | IF DROP FALSE EXIT THEN |
||
481 | DUP C123 = \ 23C1 AND EAX , ECX |
||
482 | IF DROP FALSE EXIT THEN |
||
483 | |||
484 | DUP C033 = \ XOR EAX , EAX |
||
485 | IF DROP FALSE EXIT THEN |
||
486 | |||
487 | DUP 808D = \ 8D8024475A00 LEA EAX , 5A4724 [EAX] |
||
488 | IF DROP FALSE EXIT THEN |
||
489 | |||
490 | DUP 088B = \ MOV ECX , [EAX] |
||
491 | IF DROP FALSE EXIT THEN |
||
492 | |||
493 | DUP C00B = \ 0BC0 OR EAX , EAX |
||
494 | IF DROP FALSE EXIT THEN |
||
495 | |||
496 | DUP 488D = \ 8D4820 LEA ECX , 20 [EAX] |
||
497 | IF DROP FALSE EXIT THEN |
||
498 | |||
499 | DUP E0D3 = \ D3E0 SHL EAX , CL |
||
500 | IF DROP FALSE EXIT THEN |
||
501 | |||
502 | FF AND |
||
503 | DUP A1 = \ A1047A5800 MOV EAX , 587A04 |
||
504 | IF DROP FALSE EXIT THEN |
||
505 | DUP 58 = \ 58 POP EAX |
||
506 | IF DROP FALSE EXIT THEN |
||
507 | DUP B9 = \ B907000000 MOV ECX , # 7 |
||
508 | IF DROP FALSE EXIT THEN |
||
509 | DROP TRUE |
||
510 | ; |
||
511 | |||
512 | : MOV_EDX_[EBP] ( OPX - OPX' FALSE | FLAG TRUE ) |
||
513 | ?OPlast IF DROP FALSE TRUE EXIT THEN |
||
514 | DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN |
||
515 | DUP @ ?ChEAX 0= IF CELL+ FALSE EXIT THEN |
||
516 | DUP ?EDX_[EBP] 0= IF CELL+ FALSE EXIT THEN |
||
517 | DUP @ W@ |
||
518 | |||
519 | DUP 448B = \ MOV EAX , 4 [EDX] [EAX*4] |
||
520 | IF DROP CELL+ FALSE EXIT THEN |
||
521 | |||
522 | DUP 1489 = \ MOV 59C2E4 [EAX*4] , EDX |
||
523 | IF DROP CELL+ FALSE EXIT THEN |
||
524 | DUP 8BCA = \ MOV ECX , EDX |
||
525 | IF DROP CELL+ FALSE EXIT THEN |
||
526 | DUP FFFD AND 5589 = \ OPX N F |
||
527 | IF DROP @ 2+ C@ OP0 @ 2+ C@ = TRUE EXIT |
||
528 | THEN |
||
529 | 2DROP FALSE TRUE |
||
530 | ; |
||
531 | |||
532 | : OPresize ( OPX n -- ) |
||
533 | DUP >R |
||
534 | OVER OP0 ?DO DUP I +! CELL +LOOP |
||
535 | ALLOT |
||
536 | @ DUP R> + DUP DP @ - NEGATE MOVE |
||
537 | ; |
||
538 | |||
539 | : OPinsert ( OPX n -- ) |
||
540 | DUP >R |
||
541 | 2DUP OPresize DROP |
||
542 | DUP |
||
543 | DUP CELL + OVER OP0 CC - OpBuffSize CELL- - NEGATE MOVE |
||
544 | R> SWAP +! |
||
545 | ; |
||
546 | |||
547 | VARIABLE ?~EAX |
||
548 | VARIABLE SAVE-?~EAX |
||
549 | : ?~EAX{ ( FLAG -- ) |
||
550 | ?~EAX @ SAVE-?~EAX ! ?~EAX ! ; |
||
551 | |||
552 | : }?~EAX ( -- ) |
||
553 | SAVE-?~EAX @ ?~EAX ! ; |
||
554 | |||
555 | |||
556 | : ?EAX>EBX ( OPX - OPX' FALSE | FALSE TRUE | OPX' TRUE TRUE ) |
||
557 | \ TTTT 0= IF DROP FALSE TRUE EXIT THEN |
||
558 | \ ." $=" DUP @ @ U. |
||
559 | \ TTTT IF HEX DUP @ U. THEN |
||
560 | \ DROP FALSE TRUE EXIT |
||
561 | ?OPlast IF DROP FALSE TRUE EXIT THEN |
||
562 | DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN |
||
563 | DUP @ W@ |
||
564 | DUP 4589 = \ OPX N F MOV FC [EBP] , EAX |
||
565 | OVER 458B = OR \ OPX N F MOV EAX , FC [EBP] |
||
566 | IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ = |
||
567 | IF CELL- TRUE TRUE |
||
568 | ELSE DUP @ W@ 458B = IF ?~EAX 0! THEN |
||
569 | CELL+ FALSE |
||
570 | THEN EXIT |
||
571 | THEN |
||
572 | |||
573 | CASE |
||
574 | \ ." $=" DUP @ U. |
||
575 | DUP 083B <> \ CMP ECX , [EAX] |
||
576 | IF |
||
577 | DUP C83B <> \ CMP ECX , EAX |
||
578 | IF |
||
579 | DUP C13B <> \ CMP EAX , ECX |
||
580 | IF |
||
581 | DUP 508B <> \ MOV EDX , 4 [EAX] |
||
582 | IF |
||
583 | DUP 088B <> \ MOV ECX , [EAX] |
||
584 | IF |
||
585 | DUP 098B <> \ MOV ECX , [ECX] |
||
586 | IF |
||
587 | DUP C88B <> \ MOV ECX , EAX |
||
588 | IF |
||
589 | DUP 0889 <> \ MOV [EAX] , ECX |
||
590 | IF |
||
591 | DUP 1089 <> \ MOV [EAX] , EDX |
||
592 | IF |
||
593 | DUP 4889 <> \ MOV 4 [EAX] , ECX |
||
594 | IF |
||
595 | |||
596 | DUP 408D <> \ LEA EAX , 1 [EAX] |
||
597 | IF |
||
598 | DUP 808D <> \ LEA EAX , 1 [EAX] |
||
599 | IF |
||
600 | DUP 008B <> \ MOV EAX , [EAX] |
||
601 | IF |
||
602 | \ TTTT IF HEX ." M=" DUP U. THEN |
||
603 | |||
604 | DUP C18B <> \ MOV EAX , ECX |
||
605 | IF |
||
606 | TRUE ?~EAX ! |
||
607 | DUP D8F7 <> \ NEG EAX |
||
608 | IF |
||
609 | }?~EAX |
||
610 | DROP |
||
611 | DUP @ @ FFFFFF AND |
||
612 | DUP 240C8B <> \ MOV ECX , [ESP] |
||
613 | IF |
||
614 | DUP 8D0489 <> \ MOV X [ECX*4] , EAX |
||
615 | IF |
||
616 | |||
617 | DUP 24048B <> \ MOV EAX , [ESP] |
||
618 | IF |
||
619 | TRUE ?~EAX ! |
||
620 | DUP 24442B <> \ SUB EAX , 4 [ESP] |
||
621 | IF |
||
622 | }?~EAX |
||
623 | 0xFFFF AND |
||
624 | OVER @ 2+ C@ OP0 @ 2+ C@ |
||
625 | \ TTTT IF HEX ." N=" 2DUP U. U. THEN |
||
626 | = |
||
627 | IF 2DROP FALSE TRUE EXIT |
||
628 | THEN |
||
629 | DUP 4D8B <> \ MOV ECX , [EBP] |
||
630 | IF |
||
631 | DUP 5589 <> \ MOV [EBP] , EDX |
||
632 | IF |
||
633 | |||
634 | 2DROP FALSE TRUE EXIT |
||
635 | DUPENDCASE DROP CELL+ FALSE ; |
||
636 | |||
637 | : EAX>EBX0 ( OPX - OPX' FLAG ) |
||
638 | |||
639 | |||
640 | DUP OP0 = IF TRUE EXIT THEN |
||
641 | \ TTTT IF 1 EMIT DUP U. DUP @ U. THEN |
||
642 | DUP @ W@ |
||
643 | |||
644 | DUP 508B = \ MOV EDX , [EAX+4] |
||
645 | IF DROP CELL- FALSE EXIT THEN |
||
646 | DUP 088B = \ MOV ECX , [EAX] |
||
647 | IF DROP CELL- FALSE EXIT THEN |
||
648 | DUP 098B = \ MOV ECX , [ECX] |
||
649 | IF DROP CELL- FALSE EXIT THEN |
||
650 | DUP 4D8B = \ MOV ECX , [EBP] |
||
651 | IF DROP CELL- FALSE EXIT THEN |
||
652 | DUP 5589 = \ MOV 0 [EBP] , EDX |
||
653 | IF DROP CELL- FALSE EXIT THEN |
||
654 | DUP C88B = \ MOV ECX , EAX |
||
655 | IF DROP CELL- FALSE EXIT THEN |
||
656 | DUP 0889 = \ MOV [EAX] , ECX |
||
657 | IF DROP CELL- FALSE EXIT THEN |
||
658 | DUP 1089 = \ MOV [EAX] , EDX |
||
659 | IF DROP CELL- FALSE EXIT THEN |
||
660 | DUP 4889 = \ MOV 4 [EAX] , ECX |
||
661 | IF DROP CELL- FALSE EXIT THEN |
||
662 | DUP 408D = \ LEA EAX , 1 [EAX] |
||
663 | IF DROP |
||
664 | 58 OVER @ 1+ C! CELL- TRUE EXIT |
||
665 | THEN |
||
666 | |||
667 | DUP 808D = \ LEA EAX , 1 [EAX] |
||
668 | IF DROP |
||
669 | 98 OVER @ 1+ C! CELL- TRUE EXIT |
||
670 | THEN |
||
671 | DUP 008B = \ MOV EAX , [EAX] |
||
672 | IF DROP |
||
673 | 18 OVER @ 1+ C! CELL- TRUE EXIT |
||
674 | THEN |
||
675 | |||
676 | DUP C18B = \ MOV EAX , ECX |
||
677 | IF DROP |
||
678 | D9 OVER @ 1+ C! CELL- TRUE EXIT |
||
679 | THEN |
||
680 | |||
681 | DUP 458B = \ MOV EAX , [EBP+X] |
||
682 | IF DROP |
||
683 | 5D OVER @ 1+ C! CELL- TRUE EXIT |
||
684 | THEN |
||
685 | |||
686 | DUP D8F7 = \ NEG EAX |
||
687 | IF DROP |
||
688 | DB OVER @ 1+ C! CELL- FALSE EXIT |
||
689 | THEN |
||
690 | |||
691 | DROP |
||
692 | DUP @ @ FFFFFF AND |
||
693 | |||
694 | DUP 8D0489 = \ MOV X [ECX*4] , EAX |
||
695 | IF DROP CELL- FALSE EXIT THEN |
||
696 | |||
697 | DUP 24048B = \ MOV EAX , [ESP] |
||
698 | IF DROP |
||
699 | 1C OVER @ 1+ C! CELL- TRUE EXIT |
||
700 | THEN |
||
701 | DUP 240C8B = \ MOV ECX , [ESP] |
||
702 | IF DROP CELL- FALSE EXIT THEN |
||
703 | \ BASE @ >R HEX DUP U. R> BASE ! |
||
704 | FF AND |
||
705 | DUP 3B = \ CMP |
||
706 | IF DROP CELL- FALSE EXIT THEN |
||
707 | HEX U. U. ." EAX>EBX0" ABORT |
||
708 | ; |
||
709 | |||
710 | : EAX>EBX ( OPX - OPX' FLAG ) |
||
711 | |||
712 | |||
713 | DUP OP0 = IF TRUE EXIT THEN |
||
714 | DUP @ W@ \ ." #=" DUP U. |
||
715 | |||
716 | DUP 508B = \ MOV EDX , [EAX+4] |
||
717 | IF DROP |
||
718 | 53 OVER @ 1+ C! CELL- FALSE EXIT |
||
719 | THEN |
||
720 | |||
721 | DUP 083B = \ CMP ECX , [EAX] |
||
722 | IF DROP |
||
723 | 0B OVER @ 1+ W! CELL- FALSE EXIT |
||
724 | THEN |
||
725 | |||
726 | DUP C83B = \ CMP ECX , EAX |
||
727 | IF DROP |
||
728 | CB OVER @ 1+ W! CELL- FALSE EXIT |
||
729 | THEN |
||
730 | |||
731 | DUP C13B = \ CMP EAX , ECX |
||
732 | IF DROP |
||
733 | D9 OVER @ 1+ W! CELL- FALSE EXIT |
||
734 | THEN |
||
735 | |||
736 | DUP 088B = \ MOV ECX , [EAX] |
||
737 | IF DROP |
||
738 | 0B OVER @ 1+ C! CELL- FALSE EXIT |
||
739 | THEN |
||
740 | DUP 458B = \ MOV EAX , [EBP+X] |
||
741 | IF DROP |
||
742 | 5D OVER @ 1+ C! CELL- FALSE EXIT |
||
743 | THEN |
||
744 | DUP 098B = \ MOV ECX , [ECX] |
||
745 | IF DROP CELL- FALSE EXIT THEN |
||
746 | |||
747 | DUP 4D8B = \ MOV ECX , [EBP] |
||
748 | IF DROP CELL- FALSE EXIT THEN |
||
749 | |||
750 | DUP 5589 = \ MOV 0 [EBP] , EDX |
||
751 | IF DROP CELL- FALSE EXIT THEN |
||
752 | |||
753 | DUP C88B = \ MOV ECX , EAX |
||
754 | IF DROP |
||
755 | CB OVER @ 1+ C! CELL- FALSE EXIT |
||
756 | THEN |
||
757 | |||
758 | DUP 0889 = \ MOV [EAX] , ECX |
||
759 | IF DROP |
||
760 | 0B OVER @ 1+ C! CELL- FALSE EXIT |
||
761 | THEN |
||
762 | |||
763 | DUP 1089 = \ MOV [EAX] , EDX |
||
764 | IF DROP |
||
765 | 13 OVER @ 1+ C! CELL- FALSE EXIT |
||
766 | THEN |
||
767 | DUP 4889 = \ MOV 4 [EAX] , ECX |
||
768 | IF DROP |
||
769 | 4B OVER @ 1+ C! CELL- FALSE EXIT |
||
770 | THEN |
||
771 | DUP 4589 = \ OPX N F MOV FC [EBP] , EAX |
||
772 | IF DROP |
||
773 | 5D OVER @ 1+ C! CELL- FALSE EXIT |
||
774 | THEN |
||
775 | DUP 408D = \ LEA EAX , 1 [EAX] |
||
776 | IF DROP |
||
777 | 5B OVER @ 1+ C! CELL- FALSE EXIT |
||
778 | THEN |
||
779 | |||
780 | DUP 808D = \ LEA EAX , X [EAX] |
||
781 | IF DROP |
||
782 | 9B OVER @ 1+ C! CELL- FALSE EXIT |
||
783 | THEN |
||
784 | DUP 008B = \ MOV EAX , [EAX] |
||
785 | IF DROP |
||
786 | 1B OVER @ 1+ C! CELL- FALSE EXIT |
||
787 | THEN |
||
788 | |||
789 | DUP C18B = \ MOV EAX , ECX |
||
790 | IF DROP |
||
791 | D9 OVER @ 1+ C! CELL- FALSE EXIT |
||
792 | THEN |
||
793 | |||
794 | |||
795 | DUP D8F7 = \ NEG EAX |
||
796 | IF DROP |
||
797 | DB OVER @ 1+ C! CELL- FALSE EXIT |
||
798 | THEN |
||
799 | |||
800 | DROP |
||
801 | DUP @ @ FFFFFF AND |
||
802 | |||
803 | DUP 8D0489 = \ MOV X [ECX*4] , EAX |
||
804 | IF DROP |
||
805 | 1C OVER @ 1+ C! CELL- FALSE EXIT |
||
806 | THEN |
||
807 | |||
808 | DUP 24048B = \ MOV EAX , [ESP] |
||
809 | IF DROP |
||
810 | 1C OVER @ 1+ C! CELL- FALSE EXIT |
||
811 | THEN |
||
812 | DUP 240C8B = \ MOV ECX , [ESP] |
||
813 | IF DROP CELL- FALSE EXIT THEN |
||
814 | DUP 24442B = \ SUB EAX , [ESP+4] |
||
815 | IF DROP |
||
816 | 5C OVER @ 1+ C! CELL- FALSE EXIT |
||
817 | THEN |
||
818 | |||
819 | HEX U. U. ." EAX>EBX" ABORT |
||
820 | ; |
||
821 | |||
822 | : ?EAX>ECX ( OPX - OPX' FALSE | FALSE TRUE | OPX' TRUE TRUE ) |
||
823 | \ ZZZZ 0= IF DROP FALSE TRUE EXIT THEN |
||
824 | \ DROP FALSE TRUE EXIT |
||
825 | ?OPlast IF DROP FALSE TRUE EXIT THEN |
||
826 | DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN |
||
827 | \ TTTT IF HEX DUP @ U. THEN |
||
828 | DUP @ W@ |
||
829 | DUP 4589 = \ OPX N F MOV FC [EBP] , EAX |
||
830 | OVER 458B = OR \ OPX N F MOV EAX , FC [EBP] |
||
831 | IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ = |
||
832 | IF CELL- TRUE TRUE |
||
833 | ELSE DUP @ W@ 458B = IF ?~EAX 0! THEN |
||
834 | CELL+ FALSE |
||
835 | THEN EXIT |
||
836 | THEN |
||
837 | DUP 5589 = \ OPX N F MOV FC [EBP] , EDX |
||
838 | IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ = |
||
839 | IF DROP FALSE TRUE |
||
840 | ELSE CELL+ FALSE |
||
841 | THEN EXIT |
||
842 | THEN |
||
843 | |||
844 | CASE |
||
845 | |||
846 | |||
847 | \ 8B00 MOV EAX , [EAX] |
||
848 | \ 3B05E3745400 CMP EAX , 5474E3 ( :-SET+5 ) |
||
849 | DUP 3AFF AND 028B <> \ MOV EAX , [EDX] |
||
850 | IF |
||
851 | DUP 008B <> \ MOV EAX , [EAX] |
||
852 | IF |
||
853 | DUP 408D <> \ LEA EAX , 1 [EAX] |
||
854 | IF |
||
855 | DUP 408B <> \ MOV EAX , 1 [EAX] |
||
856 | IF |
||
857 | DUP 428D <> \ LEA EAX , 1 [EDX] |
||
858 | IF |
||
859 | \ DUP 808D <> \ LEA EAX , X [EAX] |
||
860 | \ IF |
||
861 | DUP C28B <> \ MOV EAX , EDX |
||
862 | IF |
||
863 | TRUE ?~EAX ! |
||
864 | DUP C00B <> \ OR EAX , EAX |
||
865 | IF |
||
866 | DUP C01B <> \ SBB EAX , EAX |
||
867 | IF |
||
868 | DUP F8D1 <> \ SAR EAX , 1 |
||
869 | IF |
||
870 | DUP E8C1 <> \ SHR EAX , 1 |
||
871 | IF |
||
872 | DUP D8F7 <> \ NEG EAX |
||
873 | IF |
||
874 | DUP D0F7 <> \ NOT EAX |
||
875 | IF |
||
876 | DUP D0F7 <> \ NOT EAX |
||
877 | IF |
||
878 | DUP 4503 <> \ ADD EAX , 0 [EBP] |
||
879 | IF |
||
880 | DUP 0523 <> \ AND EAX , 587744 ( D+5 ) |
||
881 | IF |
||
882 | DUP E0C1 <> \ SHL EAX , 7 |
||
883 | IF |
||
884 | DUP C223 <> \ AND EAX , EDX |
||
885 | IF |
||
886 | }?~EAX |
||
887 | DUP 508B <> \ MOV EDX , [EAX+4] |
||
888 | IF |
||
889 | DUP 053B <> \ CMP EAX , 5474E3 ( :-SET+5 ) |
||
890 | IF |
||
891 | DUP 103B <> \ CMP EDX , [EAX] |
||
892 | IF |
||
893 | DUP 558B <> \ OPX N F MOV F8 [EBP] , EDX |
||
894 | IF |
||
895 | DUP 158B <> \ MOV EDX , 587A88 |
||
896 | IF |
||
897 | DUP D08B <> \ MOV EDX , EAX |
||
898 | IF |
||
899 | DUP 0501 <> \ MOV ADD 555555 , EAX |
||
900 | IF |
||
901 | DUP 5089 <> \ MOV C [EAX] , EDX |
||
902 | IF |
||
903 | DUP 1089 <> \ MOV [EAX] , EDX |
||
904 | IF |
||
905 | |||
906 | DUP 80C6 <> \ MOV BYTE [EAX] , # X |
||
907 | IF |
||
908 | DUP 45C7 <> \ MOV FC [EBP] , # 1 |
||
909 | IF |
||
910 | FF AND |
||
911 | DUP 50 <> \ PUSH EAX |
||
912 | IF |
||
913 | DUP A3 <> \ MOV 1000 , EAX |
||
914 | IF |
||
915 | |||
916 | DUP B8 <> \ MOV EAX , # 1000 |
||
917 | IF |
||
918 | DUP A1 <> \ MOV EAX , 1000 |
||
919 | IF |
||
920 | TRUE ?~EAX ! |
||
921 | DUP 25 <> \ AND EAX , # X |
||
922 | IF |
||
923 | |||
924 | }?~EAX |
||
925 | DUP BA <> \ MOV EDX , # 1000 |
||
926 | IF |
||
927 | DUP 3D <> \ CMP EAX , # 1000 |
||
928 | IF |
||
929 | DROP |
||
930 | DUP @ @ |
||
931 | |||
932 | DUP 0244B60F <> \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX] |
||
933 | IF |
||
934 | FFFFFF AND |
||
935 | DUP 85048D <> \ LEA EAX , 0 [EAX*4] |
||
936 | IF |
||
937 | DUP 85048B <> \ MOV EAX , X [EAX*4] |
||
938 | IF |
||
939 | DUP 80B60F <> \ MOVZX EAX , BYTE PTR X [EAX] |
||
940 | IF |
||
941 | DUP 40B70F <> \ MOVZX EAX , WORD PTR X [EAX] |
||
942 | IF |
||
943 | DUP 00B70F <> \ MOVZX EAX , WORD [EAX] |
||
944 | IF |
||
945 | DUP 82448B <> \ MOV EAX , 4 [EDX] [EAX*4] |
||
946 | IF |
||
947 | DUP 24048B <> \ MOV EAX , [ESP] |
||
948 | IF |
||
949 | DUP 24448B <> \ MOV EAX , [ESP+4] |
||
950 | IF |
||
951 | TRUE ?~EAX ! |
||
952 | DUP 24442B <> \ SUB EAX , [ESP+4] |
||
953 | IF |
||
954 | }?~EAX |
||
955 | DUP 24043B <> \ CMP EAX , [ESP] |
||
956 | IF |
||
957 | DUP 24443B <> \ CMP EAX , 20 [ESP] |
||
958 | IF |
||
959 | DUP 24548B <> \ MOV EDX , C [ESP] |
||
960 | IF |
||
961 | 2DROP FALSE TRUE EXIT |
||
962 | DUPENDCASE DROP CELL+ FALSE ; |
||
963 | |||
964 | : EAX>ECX0 ( OPX - OPX' FLAG ) |
||
965 | |||
966 | DUP OP0 = IF TRUE EXIT THEN |
||
967 | DUP @ W@ |
||
968 | DUP EFFF AND 4589 = \ OPX N F |
||
969 | IF DROP CELL- FALSE EXIT THEN |
||
970 | |||
971 | DUP 0501 = \ ADD [444444H] , EAX |
||
972 | IF DROP CELL- FALSE EXIT THEN |
||
973 | |||
974 | DUP 5589 = \ MOV X [EBP] , EDX |
||
975 | IF DROP CELL- FALSE EXIT THEN |
||
976 | DUP 38FF AND 008B = \ MOV EAX , ___ |
||
977 | IF DROP |
||
978 | 0800 OVER @ +! CELL- TRUE EXIT |
||
979 | THEN |
||
980 | DUP C28B = \ MOV EAX , EDX |
||
981 | IF DROP |
||
982 | CA OVER @ 1+ C! CELL- TRUE EXIT |
||
983 | THEN |
||
984 | DUP 808D = \ LEA EAX , 1 [EAX] |
||
985 | IF DROP |
||
986 | 88 OVER @ 1+ C! CELL- TRUE EXIT |
||
987 | THEN |
||
988 | DUP 408D = \ LEA EAX , 1 [EAX] |
||
989 | IF DROP |
||
990 | 48 OVER @ 1+ C! CELL- TRUE EXIT |
||
991 | THEN |
||
992 | |||
993 | DUP 408B = \ MOV EAX , 1 [EAX] |
||
994 | IF DROP |
||
995 | 48 OVER @ 1+ C! CELL- TRUE EXIT |
||
996 | THEN |
||
997 | |||
998 | DUP FF AND 8B = \ MOV ~EAX , ___ |
||
999 | IF DROP CELL- FALSE EXIT THEN |
||
1000 | |||
1001 | DUP 38FF AND 008D = \ LEA EAX , ___ |
||
1002 | IF DROP |
||
1003 | 0800 OVER @ +! CELL- TRUE EXIT |
||
1004 | THEN |
||
1005 | DUP 428D = \ LEA EAX , 1 [EDX] |
||
1006 | IF DROP |
||
1007 | 0800 OVER @ +! CELL- TRUE EXIT |
||
1008 | THEN |
||
1009 | |||
1010 | DUP C00B = \ OR EAX , EAX |
||
1011 | IF DROP CELL- FALSE EXIT THEN |
||
1012 | |||
1013 | DUP 5089 = \ MOV C [EAX] , EDX |
||
1014 | IF DROP CELL- FALSE EXIT THEN |
||
1015 | |||
1016 | DUP 1089 = \ MOV [EAX] , EDX |
||
1017 | IF DROP CELL- FALSE EXIT THEN |
||
1018 | DUP 80C6 = \ MOV BYTE [EAX] , # X |
||
1019 | IF DROP CELL- FALSE EXIT THEN |
||
1020 | |||
1021 | DUP 45C7 = \ MOV FC [EBP] , # 1 |
||
1022 | IF DROP CELL- FALSE EXIT THEN |
||
1023 | DROP |
||
1024 | DUP @ @ |
||
1025 | DUP 0244B60F = \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX] |
||
1026 | IF DROP |
||
1027 | 4C OVER @ 2+ C! CELL- TRUE EXIT |
||
1028 | THEN |
||
1029 | |||
1030 | FFFFFF AND |
||
1031 | |||
1032 | DUP 80B60F = \ MOVZX EAX , BYTE PTR X [EAX] |
||
1033 | IF DROP |
||
1034 | 88 OVER @ 2+ C! CELL- TRUE EXIT |
||
1035 | THEN |
||
1036 | |||
1037 | DUP 40B70F = \ MOVZX EAX , WORD PTR x [EAX] |
||
1038 | IF DROP |
||
1039 | 48 OVER @ 2+ C! CELL- TRUE EXIT |
||
1040 | THEN |
||
1041 | |||
1042 | DUP 00B70F = \ MOVZX EAX , WORD PTR [EAX] |
||
1043 | IF DROP |
||
1044 | 08 OVER @ 2+ C! CELL- TRUE EXIT |
||
1045 | THEN |
||
1046 | |||
1047 | \ DUP 24442B = \ SUB EAX , [ESP+4] |
||
1048 | \ IF DROP |
||
1049 | \ 4C OVER @ 1+ C! CELL- TRUE EXIT |
||
1050 | \ THEN |
||
1051 | |||
1052 | FF AND |
||
1053 | DUP 50 = \ PUSH EAX |
||
1054 | IF DROP CELL- FALSE EXIT THEN |
||
1055 | DUP B8 = \ MOV EAX , # 1000 |
||
1056 | IF DROP |
||
1057 | B9 OVER @ C! CELL- TRUE EXIT |
||
1058 | THEN |
||
1059 | DUP BA = \ MOV EDX , # 1000 |
||
1060 | IF DROP CELL- FALSE EXIT THEN |
||
1061 | DUP 3D = \ CMP EAX , # 1000 |
||
1062 | IF DROP CELL- FALSE EXIT THEN |
||
1063 | DUP 3B = \ CMP |
||
1064 | IF DROP CELL- FALSE EXIT THEN |
||
1065 | |||
1066 | DUP A3 = \ MOV 1000 , EAX |
||
1067 | IF DROP CELL- FALSE EXIT THEN |
||
1068 | |||
1069 | DUP A1 = \ MOV EAX , 1000 |
||
1070 | IF DROP DUP 1 OPresize |
||
1071 | 0D8B OVER @ W! CELL- TRUE EXIT |
||
1072 | THEN |
||
1073 | |||
1074 | HEX U. DUP @ @ U. U. ." EAX>ECX0" ABORT |
||
1075 | ; |
||
1076 | |||
1077 | : EAX>ECX ( OPX - OPX' F | T ) |
||
1078 | |||
1079 | DUP OP0 = IF TRUE EXIT THEN |
||
1080 | DUP @ W@ |
||
1081 | \ 8B00 MOV EAX , [EAX] |
||
1082 | \ 3B05E3745400 CMP EAX , 5474E3 ( :-SET+5 ) |
||
1083 | |||
1084 | DUP 5589 = \ MOV X [EBP] , EDX |
||
1085 | IF DROP CELL- FALSE EXIT THEN |
||
1086 | |||
1087 | DUP 3AFF AND 028B = \ MOV EAX , [EDX] |
||
1088 | IF DROP |
||
1089 | 0800 OVER @ +! CELL- FALSE EXIT |
||
1090 | THEN |
||
1091 | DUP 458B = \ MOV EAX , [EBP+X] |
||
1092 | IF DROP |
||
1093 | 4D OVER @ 1+ C! CELL- FALSE EXIT |
||
1094 | THEN |
||
1095 | |||
1096 | DUP 008B = \ MOV EAX , [EAX] |
||
1097 | IF DROP |
||
1098 | 09 OVER @ 1+ C! CELL- FALSE EXIT |
||
1099 | THEN |
||
1100 | |||
1101 | DUP D08B = \ MOV EDX , EAX |
||
1102 | IF DROP |
||
1103 | D1 OVER @ 1+ C! CELL- FALSE EXIT |
||
1104 | THEN |
||
1105 | |||
1106 | DUP C28B = \ MOV EAX , EDX |
||
1107 | IF DROP |
||
1108 | CA OVER @ 1+ C! CELL- FALSE EXIT |
||
1109 | THEN |
||
1110 | |||
1111 | DUP E0C1 = \ SHL EAX , 7 |
||
1112 | IF DROP |
||
1113 | E1 OVER @ 1+ C! CELL- FALSE EXIT |
||
1114 | THEN |
||
1115 | |||
1116 | DUP C223 = \ AND EAX , EDX |
||
1117 | IF DROP |
||
1118 | CA OVER @ 1+ C! CELL- FALSE EXIT |
||
1119 | THEN |
||
1120 | |||
1121 | DUP 0501 = \ ADD [444444H] , EAX |
||
1122 | IF DROP |
||
1123 | 0D01 OVER @ W! CELL- FALSE EXIT |
||
1124 | THEN |
||
1125 | |||
1126 | DUP 508B = \ MOV EDX , [EAX+4] |
||
1127 | IF DROP |
||
1128 | 51 OVER @ 1+ C! CELL- FALSE EXIT |
||
1129 | THEN |
||
1130 | |||
1131 | DUP 053B = \ CMP EAX , 5474E3 ( :-SET+5 ) |
||
1132 | IF DROP |
||
1133 | 0D OVER @ 1+ C! CELL- FALSE EXIT |
||
1134 | THEN |
||
1135 | |||
1136 | DUP 103B = \ CMP EDX , [EAX] |
||
1137 | IF DROP |
||
1138 | 11 OVER @ 1+ C! CELL- FALSE EXIT |
||
1139 | THEN |
||
1140 | |||
1141 | DUP C23B = \ CMP EAX , EDX |
||
1142 | IF DROP |
||
1143 | CA OVER @ 1+ C! CELL- FALSE EXIT |
||
1144 | THEN |
||
1145 | |||
1146 | DUP C00B = \ OR EAX , EAX |
||
1147 | IF DROP |
||
1148 | C9 OVER @ 1+ C! CELL- FALSE EXIT |
||
1149 | THEN |
||
1150 | DUP C01B = \ SBB EAX , EAX |
||
1151 | IF DROP |
||
1152 | C9 OVER @ 1+ C! CELL- FALSE EXIT |
||
1153 | THEN |
||
1154 | DUP F8D1 = \ SAR EAX , 1 |
||
1155 | IF DROP |
||
1156 | F9 OVER @ 1+ C! CELL- FALSE EXIT |
||
1157 | THEN |
||
1158 | |||
1159 | DUP E8C1 = \ SAR EAX , 1 |
||
1160 | IF DROP |
||
1161 | E9 OVER @ 1+ C! CELL- FALSE EXIT |
||
1162 | THEN |
||
1163 | |||
1164 | DUP 4589 = \ OPX N F MOV FC [EBP] , EAX |
||
1165 | IF DROP |
||
1166 | 4D OVER @ 1+ C! CELL- FALSE EXIT |
||
1167 | THEN |
||
1168 | DUP 5089 = \ MOV C [EAX] , EDX |
||
1169 | IF DROP |
||
1170 | 51 OVER @ 1+ C! CELL- FALSE EXIT |
||
1171 | THEN |
||
1172 | DUP 1089 = \ MOV [EAX] , EDX |
||
1173 | IF DROP |
||
1174 | 11 OVER @ 1+ C! CELL- FALSE EXIT |
||
1175 | THEN |
||
1176 | |||
1177 | DUP 80C6 = \ MOV BYTE [EAX] , # X |
||
1178 | IF DROP |
||
1179 | 81 OVER @ 1+ C! CELL- FALSE EXIT |
||
1180 | THEN |
||
1181 | |||
1182 | DUP 408D = \ LEA EAX , 1 [EAX] |
||
1183 | IF DROP |
||
1184 | 49 OVER @ 1+ C! CELL- FALSE EXIT |
||
1185 | THEN |
||
1186 | |||
1187 | DUP 408B = \ MOV EAX , 1 [EAX] |
||
1188 | IF DROP |
||
1189 | 49 OVER @ 1+ C! CELL- FALSE EXIT |
||
1190 | THEN |
||
1191 | |||
1192 | DUP 428D = \ LEA EAX , 1 [EDX] |
||
1193 | IF DROP |
||
1194 | 0800 OVER @ +! CELL- FALSE EXIT |
||
1195 | THEN |
||
1196 | |||
1197 | DUP 808D = \ LEA EAX , 1 [EAX] |
||
1198 | IF DROP |
||
1199 | 89 OVER @ 1+ C! CELL- FALSE EXIT |
||
1200 | THEN |
||
1201 | DUP C28B = \ MOV EAX , EDX |
||
1202 | IF DROP |
||
1203 | CA OVER @ 1+ C! CELL- FALSE EXIT |
||
1204 | THEN |
||
1205 | |||
1206 | DUP D8F7 = \ NEG EAX |
||
1207 | IF DROP |
||
1208 | D9 OVER @ 1+ C! CELL- FALSE EXIT |
||
1209 | THEN |
||
1210 | DUP D0F7 = \ NOT EAX |
||
1211 | IF DROP |
||
1212 | D1 OVER @ 1+ C! CELL- FALSE EXIT |
||
1213 | THEN |
||
1214 | |||
1215 | DUP D0F7 = \ NOT EAX |
||
1216 | IF DROP |
||
1217 | D1 OVER @ 1+ C! CELL- FALSE EXIT |
||
1218 | THEN |
||
1219 | DUP 4503 = \ ADD EAX , 0 [EBP] |
||
1220 | IF DROP |
||
1221 | 4D OVER @ 1+ C! CELL- FALSE EXIT |
||
1222 | THEN |
||
1223 | DUP 0523 = \ AND EAX , 587744 ( D+5 ) |
||
1224 | IF DROP |
||
1225 | 0D OVER @ 1+ C! CELL- FALSE EXIT |
||
1226 | THEN |
||
1227 | |||
1228 | DUP 558B = \ OPX N F MOV F8 [EBP] , EDX |
||
1229 | IF DROP CELL- FALSE EXIT THEN |
||
1230 | DUP 158B = \ MOV EDX , 587A88 |
||
1231 | IF DROP CELL- FALSE EXIT THEN |
||
1232 | DUP 45C7 = \ MOV FC [EBP] , # 1 |
||
1233 | IF DROP CELL- FALSE EXIT THEN |
||
1234 | DROP |
||
1235 | DUP @ @ |
||
1236 | DUP 0244B60F = \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX] |
||
1237 | IF DROP |
||
1238 | 0A4C OVER @ 2+ W! CELL- TRUE EXIT |
||
1239 | THEN |
||
1240 | FFFFFF AND |
||
1241 | DUP 85048D = \ LEA EAX , 0 [EAX*4] |
||
1242 | IF DROP |
||
1243 | 8D0C OVER @ 1+ W! CELL- FALSE EXIT |
||
1244 | THEN |
||
1245 | |||
1246 | DUP 85048B = \ MOV EAX , X [EAX*4] |
||
1247 | IF DROP |
||
1248 | 8D0C OVER @ 1+ W! CELL- FALSE EXIT |
||
1249 | THEN |
||
1250 | DUP 80B60F = \ MOVZX EAX , BYTE PTR X [EAX] |
||
1251 | IF DROP |
||
1252 | 89 OVER @ 2+ C! CELL- FALSE EXIT |
||
1253 | THEN |
||
1254 | |||
1255 | DUP 40B70F = \ MOVZX EAX , WORD PTR x [EAX] |
||
1256 | IF DROP |
||
1257 | 49 OVER @ 2+ C! CELL- FALSE EXIT |
||
1258 | THEN |
||
1259 | |||
1260 | DUP 00B70F = \ MOVZX EAX , WORD PTR [EAX] |
||
1261 | IF DROP |
||
1262 | 09 OVER @ 2+ C! CELL- FALSE EXIT |
||
1263 | THEN |
||
1264 | |||
1265 | DUP 82448B = \ MOV EAX , 4 [EDX] [EAX*4] |
||
1266 | IF DROP |
||
1267 | 8A4C OVER @ 1+ W! CELL- FALSE EXIT |
||
1268 | THEN |
||
1269 | DUP 24048B = \ MOV EAX , [ESP] |
||
1270 | IF DROP |
||
1271 | 0C OVER @ 1+ C! CELL- FALSE EXIT |
||
1272 | THEN |
||
1273 | DUP 24448B = \ MOV EAX , [ESP+4] |
||
1274 | IF DROP |
||
1275 | 4C OVER @ 1+ C! CELL- FALSE EXIT |
||
1276 | THEN |
||
1277 | |||
1278 | DUP 24043B = \ CMP EAX , [ESP] |
||
1279 | IF DROP |
||
1280 | 0C OVER @ 1+ C! CELL- FALSE EXIT |
||
1281 | THEN |
||
1282 | DUP 24443B = \ CMP EAX , 20 [ESP] |
||
1283 | IF DROP |
||
1284 | 4C OVER @ 1+ C! CELL- FALSE EXIT |
||
1285 | THEN |
||
1286 | DUP 24548B = \ MOV EDX , C [ESP] |
||
1287 | IF DROP CELL- FALSE EXIT THEN |
||
1288 | DUP 24442B = \ SUB EAX , [ESP+4] |
||
1289 | IF DROP |
||
1290 | 4C OVER @ 1+ C! CELL- FALSE EXIT |
||
1291 | THEN |
||
1292 | |||
1293 | FF AND |
||
1294 | DUP 50 = \ PUSH EAX |
||
1295 | IF DROP |
||
1296 | 51 OVER @ C! CELL- FALSE EXIT |
||
1297 | THEN |
||
1298 | DUP B8 = \ MOV EAX , # 1000 |
||
1299 | IF DROP |
||
1300 | B9 OVER @ C! CELL- FALSE EXIT |
||
1301 | THEN |
||
1302 | DUP A3 = \ MOV 1000 , EAX |
||
1303 | IF DROP DUP 1 OPresize |
||
1304 | 0D89 OVER @ W! CELL- FALSE EXIT |
||
1305 | THEN |
||
1306 | DUP A1 = \ MOV EAX , # 1000 |
||
1307 | IF DROP DUP 1 OPresize |
||
1308 | 0D8B OVER @ W! CELL- FALSE EXIT |
||
1309 | THEN |
||
1310 | DUP 25 = \ AND EAX , # X |
||
1311 | IF DROP DUP 1 OPresize |
||
1312 | E181 OVER @ W! CELL- FALSE EXIT |
||
1313 | THEN |
||
1314 | DUP BA = \ MOV EDX , # 1000 |
||
1315 | IF DROP CELL- FALSE EXIT THEN |
||
1316 | DUP 3D = \ CMP EAX , # 1000 |
||
1317 | IF DROP DUP 1 OPresize |
||
1318 | F981 OVER @ W! CELL- FALSE EXIT |
||
1319 | THEN |
||
1320 | U. DUP @ @ U. U. ." EAX>ECX" ABORT |
||
1321 | ; |
||
1322 | |||
1323 | : -EBPLIT ( n OPX -- n OPX' ) |
||
1324 | DUP @ :-SET U> 0= IF EXIT THEN |
||
1325 | BEGIN |
||
1326 | ?OPlast IF EXIT THEN |
||
1327 | DUP @ W@ 6D8D = IF EXIT THEN \ LEA EBP , X [EBP] |
||
1328 | DUP @ C@ E8 = IF EXIT THEN \ CALL |
||
1329 | DUP @ C@ E9 = IF EXIT THEN \ JMP |
||
1330 | DUP @ C@ F0 |
||
1331 | AND 70 = IF EXIT THEN \ Jx |
||
1332 | DUP @ C@ EB = IF EXIT THEN |
||
1333 | DUP @ W@ F0FF |
||
1334 | AND 800F = IF EXIT THEN |
||
1335 | 2DUP @ 2+ C@ = IF EXIT THEN |
||
1336 | CELL+ DUP @ :-SET U> 0= |
||
1337 | UNTIL ; |
||
1338 | 1 [IF] |
||
1339 | : -EBPCLR ( FLAG OPX -- FLAG' ) |
||
1340 | DUP @ :-SET U< IF DROP EXIT THEN |
||
1341 | OFF-EBP CELL- TO OFF-EBP |
||
1342 | BEGIN |
||
1343 | ?OPlast IF DROP EXIT THEN |
||
1344 | DUP @ W@ 6D8D = IF DROP EXIT THEN |
||
1345 | DUP @ C@ E8 = IF DROP EXIT THEN \ CALL |
||
1346 | DUP @ C@ E9 = IF DROP EXIT THEN \ JMP |
||
1347 | DUP @ C@ F0 |
||
1348 | AND 70 = IF DROP EXIT THEN \ Jx |
||
1349 | DUP @ C@ EB = IF DROP EXIT THEN |
||
1350 | DUP @ W@ F0FF |
||
1351 | AND 800F = IF DROP EXIT THEN |
||
1352 | DUP @ @ FFFFFF AND 85448B = \ MOV EAX , FC [EBP] [EAX*4] |
||
1353 | IF DROP EXIT THEN |
||
1354 | |||
1355 | \ DUP @ 2+ C@ DUP U. OFF-EBP FF AND DUP U. = |
||
1356 | DUP @ 2+ C@ OFF-EBP FF AND = |
||
1357 | IF DUP @ W@ E7FF AND 4589 = \ MOV X [EBP] , EAX|EDX|EBX|ECX |
||
1358 | OVER @ W@ 45C7 = OR \ MOV F8 [EBP] , # 2710 |
||
1359 | IF M\ 20A DTST |
||
1360 | \ ." ^" DUP @ U. :-SET U. \ OPexcise NIP TRUE SWAP CELL- |
||
1361 | DUP OPexcise NIP TRUE SWAP CELL- |
||
1362 | ELSE DROP EXIT |
||
1363 | THEN |
||
1364 | THEN |
||
1365 | CELL+ DUP @ :-SET U< |
||
1366 | UNTIL DROP ; |
||
1367 | |||
1368 | [ELSE] |
||
1369 | : -EBPCLR ( FLAG OPX -- FLAG' ) |
||
1370 | OFF-EBP CELL- TO OFF-EBP |
||
1371 | BEGIN |
||
1372 | OFF-EBP SWAP -EBPLIT NIP |
||
1373 | ?OPlast IF DROP EXIT THEN |
||
1374 | :-SET OVER @ U< |
||
1375 | WHILE DUP @ 2+ C@ OFF-EBP FF AND = |
||
1376 | IF DUP @ W@ E7FF AND 4589 = \ MOV X [EBP] , EAX|EDX|EBX|ECX |
||
1377 | IF M\ 20A DTST |
||
1378 | DUP OPexcise NIP TRUE SWAP \ CELL- |
||
1379 | ELSE DROP EXIT |
||
1380 | THEN |
||
1381 | ELSE |
||
1382 | DUP @ @ FFFFFF AND 85448B = \ MOV EAX , FC [EBP] [EAX*4] |
||
1383 | IF DROP EXIT THEN |
||
1384 | CELL+ |
||
1385 | ?OPlast IF DROP EXIT THEN |
||
1386 | DUP @ :-SET U< IF DROP EXIT THEN |
||
1387 | THEN |
||
1388 | REPEAT DROP |
||
1389 | ; |
||
1390 | [THEN] |
||
1391 | |||
1392 | : T?EAX>ECX ( FALSE | OPX' TRUE -- ... ) |
||
1393 | IF CELL+ CELL+ FALSE |
||
1394 | ELSE FALSE TRUE |
||
1395 | THEN ; |
||
1396 | |||
1397 | : F?EAX>ECX ( FLAG -- ... ) |
||
1398 | IF \ TRUE TRUE |
||
1399 | ?~EAX @ |
||
1400 | IF DROP FALSE |
||
1401 | ELSE TRUE |
||
1402 | THEN TRUE |
||
1403 | ELSE FALSE |
||
1404 | THEN ; |
||
1405 | : ECX:=EAX ( OPX -- OPX- ) |
||
1406 | DUP 2 OPinsert |
||
1407 | C88B OVER CELL+ @ W! \ MOV ECX , EAX |
||
1408 | \ CELL- |
||
1409 | ; |
||
1410 | |||
1411 | : EBX:=EAX ( OPX -- OPX- ) |
||
1412 | DUP 2 OPinsert |
||
1413 | D88B OVER CELL+ @ W! \ MOV EBX , EAX |
||
1414 | \ CELL- |
||
1415 | ; |
||
1416 | |||
1417 | TRUE VALUE ~BR-OPT |
||
1418 | |||
1419 | : ?EAX:=ECX ( -- ) |
||
1420 | ?~EAX @ |
||
1421 | IF SetOP 8B C, C1 C, \ MOV EAX , ECX |
||
1422 | THEN ; |
||
1423 | : DO_EAX>ECX ( -- FLAG ) |
||
1424 | OP1 |
||
1425 | BEGIN ?EAX>ECX |
||
1426 | DUP 0= \ TTTT AND |
||
1427 | IF DROP CELL- |
||
1428 | ?OPlast IF DROP FALSE EXIT THEN |
||
1429 | DUP @ :-SET U< IF DROP FALSE EXIT THEN |
||
1430 | DUP @ W@ 4D89 = \ OPX N F MOV FC [EBP] , ECX |
||
1431 | IF DUP @ 2+ C@ |
||
1432 | OP0 @ 2+ C@ = |
||
1433 | IF M\ 410 DTST |
||
1434 | DROP ?~EAX 0! |
||
1435 | OP0 2 OPinsert |
||
1436 | C18B OP1 @ W! \ MOV EAX , ECX |
||
1437 | OP0 TRUE TRUE |
||
1438 | ELSE DROP FALSE TRUE |
||
1439 | THEN |
||
1440 | ELSE CELL+ FALSE |
||
1441 | THEN |
||
1442 | THEN |
||
1443 | UNTIL DUP >R |
||
1444 | IF M\ 40E DTST |
||
1445 | ?~EAX @ |
||
1446 | IF ECX:=EAX |
||
1447 | ELSE BEGIN EAX>ECX0 UNTIL |
||
1448 | THEN BEGIN EAX>ECX UNTIL |
||
1449 | DROP |
||
1450 | OP1 ToOP0 |
||
1451 | -3 ALLOT |
||
1452 | M\ 40F DTST |
||
1453 | THEN R> |
||
1454 | ; |
||
1455 | M\ VARIABLE VPPP : PPPP DUP VPPP @ <> IF 0 @ THEN ; |
||
1456 | |||
1457 | VECT FPOP |
||
1458 | |||
1459 | : ?EAX=RULES ( ADDR -- ADDR' FLAG ) |
||
1460 | |||
1461 | BEGIN OP1 @ :-SET |
||
1462 | \ TTTT IF ." T=" 2DUP HEX U. U. THEN |
||
1463 | U< IF TRUE EXIT THEN |
||
1464 | OP1 @ ?ChEAX 0= |
||
1465 | ~BR-OPT AND |
||
1466 | \ OP1 @ W@ ADD|XOR|OR|AND= OR |
||
1467 | WHILE M\ 0 DTST |
||
1468 | OP1 OPexcise |
||
1469 | M\ 1 DTST |
||
1470 | REPEAT |
||
1471 | OP1 @ @ FC458B58 = \ POP EAX MOV EAX , FC [EBP] |
||
1472 | IF M\ F0 DTST |
||
1473 | 0424648D OP1 @ ! |
||
1474 | OP1 ToOP0 |
||
1475 | FALSE M\ F1 DTST |
||
1476 | EXIT |
||
1477 | THEN |
||
1478 | M\ PPPP |
||
1479 | |||
1480 | OP2 @ :-SET U< 0= IF \ GOTO OP2> |
||
1481 | OP2 @ C@ B8 = \ MOV EAX , # 44444 |
||
1482 | IF |
||
1483 | OP1 @ @ FFFFFF AND 240401 = \ ADD [ESP] , EAX |
||
1484 | IF M\ B0E DTST |
||
1485 | OP2 @ 1+ @ |
||
1486 | 240481 OP2 @ ! \ ADD [ESP] , # |
||
1487 | OP2 @ 3 + ! |
||
1488 | 2 OP1 +! |
||
1489 | OP0 @ 2@ OP1 @ 2! |
||
1490 | OP1 ToOP0 |
||
1491 | FALSE -1 ALLOT M\ B0F DTST |
||
1492 | EXIT |
||
1493 | THEN |
||
1494 | M\ PPPP |
||
1495 | OP1 @ W@ 00C7 = \ MOV [EAX] , # X |
||
1496 | IF M\ C0E DTST |
||
1497 | OP1 @ 2+ @ |
||
1498 | OP2 @ 1+ @ |
||
1499 | 05C7 OP2 @ W! \ MOV 44444 , # X |
||
1500 | OP2 @ 2+ ! OP2 @ 6 + ! |
||
1501 | 5 OP1 +! |
||
1502 | OP0 @ 2@ OP1 @ 2! |
||
1503 | OP1 ToOP0 |
||
1504 | FALSE -1 ALLOT M\ C0F DTST |
||
1505 | EXIT |
||
1506 | THEN |
||
1507 | THEN |
||
1508 | M\ PPPP |
||
1509 | |||
1510 | OP2 @ ?ChEAX |
||
1511 | OP1 @ W@ 5589 XOR \ 8955FC MOV FC [EBP] , EDX |
||
1512 | OP1 @ W@ 1501 <> AND \ 011544444400 ADD 444444 , EDX |
||
1513 | OP1 @ W@ 1589 <> AND OR \ 891544444400 MOV 444444 , EDX |
||
1514 | \ EAX= |
||
1515 | 0= IF M\ C2 DTST |
||
1516 | OP2 OPexcise |
||
1517 | FALSE M\ C3 DTST |
||
1518 | EXIT |
||
1519 | THEN |
||
1520 | THEN \ LAB: OP2> |
||
1521 | |||
1522 | OP0 @ W@ 458B = \ MOV EAX , X [EBP] |
||
1523 | IF |
||
1524 | OP1 \ ." $" |
||
1525 | BEGIN XX_STEP |
||
1526 | UNTIL |
||
1527 | IF M\ 90E DTST |
||
1528 | OP1 ToOP0 -3 ALLOT FALSE M\ 90F DTST |
||
1529 | EXIT |
||
1530 | THEN |
||
1531 | DO_EAX>ECX IF FALSE EXIT THEN |
||
1532 | TRUE ?~EAX ! |
||
1533 | OP1 |
||
1534 | BEGIN ?EAX>EBX |
||
1535 | UNTIL |
||
1536 | IF M\ 80E DTST |
||
1537 | ?~EAX @ |
||
1538 | IF EBX:=EAX |
||
1539 | ELSE BEGIN EAX>EBX0 UNTIL |
||
1540 | THEN BEGIN EAX>EBX UNTIL |
||
1541 | DROP |
||
1542 | OP1 ToOP0 |
||
1543 | FALSE |
||
1544 | -3 ALLOT M\ 80F DTST |
||
1545 | EXIT |
||
1546 | THEN |
||
1547 | |||
1548 | :-SET OP2 @ U< IF \ GOTO OP2 MOV EAX , X [EBP] |
||
1549 | |||
1550 | |||
1551 | OP2 @ W@ 5589 XOR \ 8955FC MOV FC [EBP] , EDX |
||
1552 | OP1 @ W@ 889 XOR OR \ 8908 MOV [EAX] , ECX |
||
1553 | \ MOV EAX , X [EBP] |
||
1554 | OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X2=X0 |
||
1555 | 0= IF M\ 11E DTST |
||
1556 | C28B OP0 @ W! \ MOV EAX , EDX |
||
1557 | -1 ALLOT |
||
1558 | FALSE M\ 11F DTST |
||
1559 | EXIT |
||
1560 | THEN |
||
1561 | \ $ DUP >R |
||
1562 | OP2 @ W@ 4589 XOR \ MOV X2 [EBP] , EAX |
||
1563 | OP1 @ C@ 50 XOR OR \ PUSH EAX |
||
1564 | \ OP0 @ W@ 458B XOR OR \ MOV EAX , X0 [EBP] |
||
1565 | OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= \ X2=X0 |
||
1566 | IF M\ 1E DTST |
||
1567 | 50 OP2 @ C! |
||
1568 | OP2 ToOP0 |
||
1569 | -6 ALLOT |
||
1570 | FALSE M\ 1F DTST |
||
1571 | EXIT |
||
1572 | THEN |
||
1573 | |||
1574 | DUP C@ C3 XOR |
||
1575 | OP2 @ C@ BA XOR OR \ MOV EDX , # 1000 |
||
1576 | OP1 @ W@ 1089 XOR OR \ MOV [EAX] , EDX |
||
1577 | \ MOV EAX , FC [EBP] |
||
1578 | 0= IF M\ 52 DTST |
||
1579 | OP2 1 OPresize |
||
1580 | 00C7 OP2 @ W! \ MOV [EAX] , # 1000 |
||
1581 | OP1 OPexcise |
||
1582 | FALSE M\ 53 DTST |
||
1583 | EXIT |
||
1584 | THEN |
||
1585 | |||
1586 | :-SET OP4 @ U< IF \ GOTO OP4 MOV EAX , X [EBP] |
||
1587 | |||
1588 | DUP C@ 0C3 XOR |
||
1589 | \ CR ." XX" |
||
1590 | OP4 @ W@ 4D89 XOR OR \ 567F5A 894DF8 MOV F8 [EBP] , ECX |
||
1591 | OP3 @ W@ 1089 XOR OR \ 567F5D 8910 MOV [EAX] , EDX |
||
1592 | OP2 @ W@ 558B XOR OR \ 567F5F 8B55F8 MOV EDX , F8 [EBP] |
||
1593 | OP1 @ W@ 5089 XOR OR \ 567F62 895004 MOV 4 [EAX] , EDX |
||
1594 | \ OP0 @ W@ 458B XOR OR \ 567F65 8B45FC MOV EAX , FC [EBP] |
||
1595 | OP4 @ 2+ C@ OP2 @ 2+ C@ XOR OR \ X0=X2 \ ГРУБО |
||
1596 | 0= IF M\ 232 DTST |
||
1597 | OP2 OPexcise |
||
1598 | 4889 OP1 @ W! \ MOV [EAX+4] , ECX |
||
1599 | FALSE M\ 233 DTST |
||
1600 | EXIT |
||
1601 | THEN |
||
1602 | THEN \ L: OP4 MOV EAX , X [EBP] |
||
1603 | THEN \ L: OP2 MOV EAX , X [EBP] |
||
1604 | THEN |
||
1605 | DUP C@ C3 XOR |
||
1606 | OP0 @ C@ A1 XOR OR \ MOV EAX , X |
||
1607 | 0= IF OP1 |
||
1608 | BEGIN ?EAX>ECX |
||
1609 | IF T?EAX>ECX |
||
1610 | ELSE CELL- ?OPlast >R |
||
1611 | DUP @ :-SET U< R> OR |
||
1612 | IF DROP FALSE TRUE |
||
1613 | ELSE DUP >R |
||
1614 | R@ CELL- @ CELL- @ |
||
1615 | OP0 @ 1+ @ = |
||
1616 | IF R@ @ C@ FD AND A1 = \ MOV { EAX , X } | { X ,EAX } |
||
1617 | DUP |
||
1618 | IF F?EAX>ECX |
||
1619 | ELSE 2DROP FALSE TRUE |
||
1620 | THEN |
||
1621 | ELSE DROP FALSE TRUE |
||
1622 | THEN RDROP |
||
1623 | THEN |
||
1624 | THEN |
||
1625 | UNTIL |
||
1626 | IF M\ F0E DTST |
||
1627 | CELL- \ DROP TRUE EXIT |
||
1628 | BEGIN EAX>ECX0 UNTIL |
||
1629 | BEGIN EAX>ECX UNTIL |
||
1630 | DROP \ ." #" |
||
1631 | OP1 ToOP0 |
||
1632 | FALSE |
||
1633 | -5 ALLOT M\ F0F DTST |
||
1634 | EXIT |
||
1635 | THEN |
||
1636 | |||
1637 | THEN |
||
1638 | M\ PPPP |
||
1639 | DUP C@ C3 XOR |
||
1640 | OP0 @ C@ 58 XOR OR \ POP EAX |
||
1641 | 0= IF OP1 \ TTTT IF ." ?EAX>ECX" THEN |
||
1642 | BEGIN ?EAX>ECX |
||
1643 | IF T?EAX>ECX |
||
1644 | ELSE CELL- |
||
1645 | ?OPlast |
||
1646 | OVER @ :-SET U< OR |
||
1647 | OVER @ @ FF00FF AND 24008B = OR \ 8B0424 MOV ___ , [ESP] |
||
1648 | IF DROP FALSE TRUE |
||
1649 | ELSE DUP @ C@ 50 XOR \ PUSH EAX , X |
||
1650 | \ 0= F?EAX>ECX |
||
1651 | 0= IF TRUE TRUE |
||
1652 | ELSE CELL+ FALSE |
||
1653 | THEN |
||
1654 | |||
1655 | THEN |
||
1656 | THEN |
||
1657 | UNTIL |
||
1658 | IF M\ CA DTST \ ." $" |
||
1659 | DUP OPexcise |
||
1660 | CELL- \ DROP TRUE EXIT |
||
1661 | ?~EAX @ |
||
1662 | IF ECX:=EAX |
||
1663 | ELSE BEGIN EAX>ECX0 UNTIL |
||
1664 | THEN BEGIN EAX>ECX UNTIL |
||
1665 | DROP |
||
1666 | OP1 ToOP0 |
||
1667 | FALSE |
||
1668 | -1 ALLOT |
||
1669 | \ ?EAX:=ECX |
||
1670 | M\ CB DTST |
||
1671 | EXIT |
||
1672 | THEN |
||
1673 | |||
1674 | THEN |
||
1675 | |||
1676 | OP1 @ @ 24048B50 = \ 50 PUSH EAX |
||
1677 | \ 8B0424 MOV EAX , [ESP] |
||
1678 | IF M\ E2 DTST |
||
1679 | OP0 OPexcise |
||
1680 | FALSE M\ E3 DTST |
||
1681 | EXIT |
||
1682 | THEN |
||
1683 | |||
1684 | DUP C@ C3 XOR |
||
1685 | OP1 @ W@ D08B XOR OR \ 8BD0 MOV EDX , EAX |
||
1686 | OP0 @ @ FFFFFF AND 95048B XOR OR \ 8B0495F0065A00 MOV EAX , 5A06F0 [EDX*4] |
||
1687 | 0= IF M\ 13C DTST |
||
1688 | OP1 OPexcise |
||
1689 | 85 OP0 @ 2+ C! \ MOV EAX , 5982D8 [EAX*4] |
||
1690 | |||
1691 | FALSE M\ 13D DTST |
||
1692 | EXIT |
||
1693 | THEN |
||
1694 | |||
1695 | OP1 @ 2+ @ |
||
1696 | OP0 @ 1+ @ XOR |
||
1697 | OP1 @ W@ 589 XOR OR \ 890577770700 MOV 77777 , EAX |
||
1698 | OP0 @ C@ A1 XOR OR \ A177770700 MOV EAX , 77777 |
||
1699 | 0= IF M\ 150 DTST |
||
1700 | OP0 OPexcise |
||
1701 | FALSE M\ 151 DTST |
||
1702 | EXIT |
||
1703 | THEN |
||
1704 | |||
1705 | |||
1706 | OP2 @ :-SET U< IF TRUE EXIT THEN M\ PPPP |
||
1707 | |||
1708 | OP1 @ C@ A3 = \ MOV ' VVVV >BODY , EAX |
||
1709 | IF OP2 @ C@ B8 = \ MOV EAX, # X |
||
1710 | IF M\ 20E DTST |
||
1711 | OP2 @ 1+ @ OP1 @ 1+ @ |
||
1712 | OP2 @ 2+ ! OP1 @ 1+ ! |
||
1713 | 05C7 OP2 @ W! |
||
1714 | OP0 @ OP1 ! |
||
1715 | FALSE |
||
1716 | OP1 ToOP0 M\ 20F DTST |
||
1717 | EXIT |
||
1718 | THEN |
||
1719 | OP2 @ W@ C033 = \ XOR EAX , EAX |
||
1720 | IF M\ 30E DTST |
||
1721 | 3 ALLOT |
||
1722 | OP0 @ @ OP0 @ 3 + ! |
||
1723 | 05C7 OP2 @ W! |
||
1724 | OP1 @ 1+ @ OP1 @ ! |
||
1725 | OP1 @ CELL+ 0! |
||
1726 | OP1 @ 08 + OP1 ! |
||
1727 | FALSE |
||
1728 | OP1 ToOP0 M\ 30F DTST |
||
1729 | EXIT |
||
1730 | THEN |
||
1731 | OP3 @ :-SET U< IF TRUE EXIT THEN M\ PPPP |
||
1732 | OP3 @ 1+ @ |
||
1733 | OP1 @ 1+ @ XOR |
||
1734 | OP3 @ C@ 0A1 XOR OR \ MOV EAX , XX \ MOV XX , EAX \ EAX= |
||
1735 | 0= IF |
||
1736 | OP2 @ C@ 025 = \ AND EAX , # ZZ |
||
1737 | IF |
||
1738 | M\ 530 DTST |
||
1739 | OP3 @ 1+ @ |
||
1740 | OP2 @ 1+ @ |
||
1741 | OP3 OPexcise |
||
1742 | OP2 OPexcise |
||
1743 | OP1 OPexcise |
||
1744 | OP0 0A OPinsert |
||
1745 | 2581 OP1 @ ! OP1 @ 6 + ! OP1 @ 2+ ! |
||
1746 | FALSE M\ 531 DTST |
||
1747 | EXIT |
||
1748 | THEN |
||
1749 | OP2 @ W@ 408D = |
||
1750 | IF |
||
1751 | OP2 @ 2+ C@ FF = \ LEA EAX , FF [EAX] |
||
1752 | IF |
||
1753 | M\ 632 DTST |
||
1754 | OP3 01 OPresize |
||
1755 | 0DFF OP3 @ W! |
||
1756 | OP2 OPexcise |
||
1757 | OP1 OPexcise |
||
1758 | FALSE M\ 633 DTST |
||
1759 | EXIT |
||
1760 | THEN |
||
1761 | THEN |
||
1762 | THEN TRUE EXIT |
||
1763 | THEN |
||
1764 | |||
1765 | \ $ 4444 TO VVVV |
||
1766 | |||
1767 | OP2 @ C@ A1 XOR \ MOV EAX , 44444 |
||
1768 | OP1 @ C@ 3D XOR OR \ CMP EAX , # 55555 |
||
1769 | 0= IF M\ 218 DTST |
||
1770 | OP2 @ 1+ @ OP2 @ 2+ ! |
||
1771 | 3D81 OP2 @ W! \ CMP 44444 , # 55555 |
||
1772 | OP0 @ OP1 ! |
||
1773 | OP1 ToOP0 |
||
1774 | FALSE |
||
1775 | EXIT M\ 219 DTST |
||
1776 | THEN |
||
1777 | |||
1778 | \ OP0 @ C@ 58 = \ POP EAX |
||
1779 | \ IF |
||
1780 | OP1 @ C@ 50 = \ PUSH EAX |
||
1781 | IF |
||
1782 | \ 444 >R |
||
1783 | OP2 @ C@ B8 = \ MOV EAX , # 5 |
||
1784 | IF M\ 1A DTST |
||
1785 | 68 OP2 @ C! |
||
1786 | OP0 @ 2@ OP1 @ 2! |
||
1787 | OP1 ToOP0 |
||
1788 | FALSE -1 ALLOT M\ 1B DTST |
||
1789 | EXIT |
||
1790 | THEN |
||
1791 | THEN |
||
1792 | OP1 @ W@ 4589 = \ MOV X [EBP], EAX EAX= |
||
1793 | IF |
||
1794 | \ 444 555 |
||
1795 | OP2 @ C@ B8 = \ MOV EAX , 5 |
||
1796 | IF M\ 1C DTST |
||
1797 | OP2 @ 1+ @ |
||
1798 | 45C7 OP2 @ W! |
||
1799 | OP1 @ 2+ C@ OP2 @ 2+ C! |
||
1800 | OP2 @ 3 + ! |
||
1801 | 2 OP1 +! |
||
1802 | OP0 @ 2@ OP1 @ 2! |
||
1803 | OP1 ToOP0 |
||
1804 | FALSE -1 ALLOT M\ 1D DTST |
||
1805 | EXIT |
||
1806 | THEN |
||
1807 | THEN |
||
1808 | \ THEN |
||
1809 | M\ PPPP |
||
1810 | OP2 @ C@ B8 XOR \ MOV EAX , # 789 |
||
1811 | OP1 @ W@ C88B XOR OR \ MOV ECX , EAX |
||
1812 | \ EAX= |
||
1813 | 0= IF M\ 830 DTST |
||
1814 | B9 OP2 @ C! |
||
1815 | OP1 OPexcise |
||
1816 | FALSE M\ 831 DTST |
||
1817 | EXIT |
||
1818 | THEN |
||
1819 | |||
1820 | OP2 @ W@ 878D XOR \ LEA EAX , 1448 [EDI] |
||
1821 | OP1 @ W@ 00FF XOR OR \ INC [EAX] |
||
1822 | \ EAX= |
||
1823 | 0= IF M\ 930 DTST |
||
1824 | FF OP2 @ C! |
||
1825 | OP1 OPexcise |
||
1826 | FALSE M\ 931 DTST |
||
1827 | EXIT |
||
1828 | THEN |
||
1829 | OP2 @ @ FFFFFF AND 8D048D XOR \ LEA EAX , X [ECX*4] |
||
1830 | OP1 @ W@ 1089 XOR OR \ MOV [EAX] , EDX |
||
1831 | \ EAX= |
||
1832 | 0= IF M\ 5E DTST |
||
1833 | 1489 OP2 @ W! \ MOV [44444H+ECX*4], EDX |
||
1834 | OP1 OPexcise |
||
1835 | FALSE M\ 5F DTST |
||
1836 | EXIT |
||
1837 | THEN |
||
1838 | M\ PPPP |
||
1839 | DUP C@ 0C3 XOR |
||
1840 | OP2 @ W@ D08B XOR OR \ MOV EDX , EAX |
||
1841 | OP1 @ @ FFFFFF AND 8D1489 XOR OR \ MOV X [ECX*4] , EDX |
||
1842 | \ EAX= |
||
1843 | 0= IF M\ 60 DTST |
||
1844 | OP2 OPexcise |
||
1845 | 0489 OP1 @ W! \ MOV [44444H+ECX*4], EAX |
||
1846 | FALSE M\ 61 DTST |
||
1847 | EXIT |
||
1848 | THEN |
||
1849 | |||
1850 | OP2 @ 2+ C@ |
||
1851 | OP0 @ 2+ C@ XOR |
||
1852 | OP2 @ W@ 5589 XOR OR \ MOV F8 [EBP] , EDX |
||
1853 | OP1 @ W@ 4589 XOR OR \ MOV F4 [EBP] , EAX |
||
1854 | OP0 @ W@ 458B XOR OR \ MOV EAX , F8 [EBP] |
||
1855 | 0= IF M\ 64 DTST |
||
1856 | C28B OP0 @ W! \ MOV EAX , EDX |
||
1857 | -1 ALLOT |
||
1858 | FALSE M\ 65 DTST |
||
1859 | EXIT |
||
1860 | THEN |
||
1861 | OP2 @ W@ C033 XOR \ 57DD80 33C0 XOR EAX , EAX |
||
1862 | OP1 @ W@ 4589 XOR OR \ 57DD82 8945F8 MOV F8 [EBP] , EAX |
||
1863 | \ EAX= |
||
1864 | 0= IF M\ 6C DTST |
||
1865 | OP2 OPexcise |
||
1866 | OP0 4 OPresize 4 OP0 +! |
||
1867 | 45C7 OP1 @ W! OP1 @ 3 + 0! \ MOV F8 [EBP] , # 0 |
||
1868 | FALSE M\ 6D DTST |
||
1869 | EXIT |
||
1870 | THEN |
||
1871 | OP2 @ @ 45C7D08B XOR \ MOV EDX , EAX MOV F8 [EBP] , # X |
||
1872 | OP0 @ W@ C28B XOR OR \ MOV EAX , EDX |
||
1873 | 0= IF M\ 6E DTST |
||
1874 | OP0 OPexcise |
||
1875 | FALSE M\ 6F DTST |
||
1876 | EXIT |
||
1877 | THEN |
||
1878 | |||
1879 | DUP C@ C3 XOR |
||
1880 | OP2 @ C@ BA XOR OR \ MOV EDX , # 0 |
||
1881 | OP1 @ W@ 1088 XOR OR \ MOV [EAX] , DL |
||
1882 | \ EAX= |
||
1883 | 0= IF M\ 70 DTST |
||
1884 | OP2 @ 1+ C@ |
||
1885 | OP2 OPexcise |
||
1886 | OP1 1 OPresize |
||
1887 | 00C6 OP1 @ W! \ MOV BYTE PTR [EAX] , 44H |
||
1888 | OP1 @ 2+ C! |
||
1889 | FALSE M\ 71 DTST |
||
1890 | EXIT |
||
1891 | THEN |
||
1892 | OP2 @ W@ 808D XOR \ LEA EAX , X [EAX] |
||
1893 | OP1 @ W@ 00C6 XOR OR \ MOV [EAX] , # 0 |
||
1894 | \ EAX= |
||
1895 | 0= IF M\ 72 DTST |
||
1896 | 80C6 OP2 @ W! |
||
1897 | OP1 @ 2+ C@ OP1 @ C! |
||
1898 | 1 OP1 +! |
||
1899 | OP1 OPexcise |
||
1900 | FALSE M\ 73 DTST |
||
1901 | EXIT |
||
1902 | THEN |
||
1903 | |||
1904 | DUP C@ C3 XOR |
||
1905 | OP2 @ W@ D18B XOR OR \ 596C15 8BD1 MOV EDX , ECX |
||
1906 | OP1 @ W@ 1089 XOR OR \ 596C17 8910 MOV [EAX] , EDX |
||
1907 | \ EAX= |
||
1908 | 0= IF M\ 72 DTST |
||
1909 | OP2 OPexcise |
||
1910 | 0889 OP1 @ W! |
||
1911 | FALSE M\ 73 DTST |
||
1912 | EXIT |
||
1913 | THEN |
||
1914 | |||
1915 | OP2 @ @ FFFFFF AND 24448B XOR \ MOV EAX , 30 [ESP] |
||
1916 | OP1 @ W@ F7FF AND 44FF XOR OR \ FF4424 INC DEC 30 [ESP] |
||
1917 | \ EAX= |
||
1918 | 0= IF M\ 8A DTST |
||
1919 | OP2 OPexcise |
||
1920 | FALSE M\ 8B DTST |
||
1921 | EXIT |
||
1922 | THEN |
||
1923 | |||
1924 | OP2 @ C@ B8 XOR \ MOV EAX , # 1 |
||
1925 | OP1 @ @ FFFFFF AND 21C8D XOR OR \ LEA EBX , [EDX] [EAX] |
||
1926 | \ EAX= |
||
1927 | 0= IF M\ AA DTST |
||
1928 | OP2 1 OPresize |
||
1929 | 9A8D OP2 @ W! |
||
1930 | OP1 OPexcise |
||
1931 | FALSE M\ AB DTST |
||
1932 | EXIT |
||
1933 | THEN |
||
1934 | OP2 @ C@ BA XOR \ MOV EDX , # 7FFFFFEE |
||
1935 | OP1 @ W@ 9A8D XOR OR \ LEA EBX , 1 [EDX] |
||
1936 | \ EAX= |
||
1937 | 0= IF M\ AC DTST |
||
1938 | OP1 @ 2+ @ |
||
1939 | OP1 OPexcise |
||
1940 | OP0 5 OPinsert |
||
1941 | BB OP1 @ C! \ MOV EBX , # |
||
1942 | OP2 @ 1+ @ + OP1 @ 1+ ! |
||
1943 | FALSE M\ AD DTST |
||
1944 | EXIT |
||
1945 | THEN |
||
1946 | |||
1947 | OP2 @ W@ C28B XOR \ 8BC2 MOV EAX , EDX |
||
1948 | OP1 @ @ C28BC00B XOR OR \ 0BC0 OR EAX , EAX |
||
1949 | \ 8BC2 MOV EAX , EDX |
||
1950 | 0= IF M\ C4 DTST |
||
1951 | OP2 OPexcise |
||
1952 | C28BD20B OP1 @ ! \ OR EDX , EDX MOV EAX , EDX |
||
1953 | FALSE M\ C5 DTST |
||
1954 | EXIT |
||
1955 | THEN |
||
1956 | |||
1957 | DUP C@ C3 XOR |
||
1958 | OP2 @ W@ D18B XOR OR \ 58270A 8BD1 MOV EDX , ECX |
||
1959 | OP1 @ W@ 4589 XOR OR \ 58270C 8945F8 MOV F8 [EBP] , EAX |
||
1960 | OP0 @ W@ C28B XOR OR \ 58270F 8BC2 MOV EAX , EDX |
||
1961 | 0= IF M\ D4 DTST |
||
1962 | OP2 OPexcise |
||
1963 | C18B OP0 @ W! \ MOV EAX , ECX |
||
1964 | FALSE M\ D5 DTST |
||
1965 | EXIT |
||
1966 | THEN |
||
1967 | |||
1968 | DUP C@ C3 XOR |
||
1969 | \ 8BD0 MOV EDX , EAX |
||
1970 | OP2 @ @ 501D08B XOR \ 010544440400 ADD 44444 , EAX |
||
1971 | OP2 @ @ 589D08B <> AND OR \ 890544440400 MOV 44444 , EAX |
||
1972 | OP0 @ W@ 458B XOR OR \ 8B4500 MOV EAX , 0 [EBP] |
||
1973 | 0= IF M\ D4 DTST |
||
1974 | OP2 OPexcise |
||
1975 | FALSE M\ D5 DTST |
||
1976 | EXIT |
||
1977 | THEN |
||
1978 | |||
1979 | OP2 @ @ 1589D08B = \ 8BD0 MOV EDX , EAX |
||
1980 | \ 891555550500 MOV 55555 , EDX |
||
1981 | IF M\ E8 DTST |
||
1982 | 0589 OP1 @ W! \ MOV 5800E0 , EAX |
||
1983 | FALSE M\ E9 DTST |
||
1984 | EXIT |
||
1985 | THEN |
||
1986 | |||
1987 | OP2 @ W@ 408D XOR \ 8D4020 LEA EAX , 20 [EAX] |
||
1988 | OP1 @ @ 458BC88B XOR OR \ 8BC8 MOV ECX , EAX |
||
1989 | \ 8B45F8 MOV EAX , F8 [EBP] |
||
1990 | 0= IF M\ F2 DTST |
||
1991 | 488D OP2 @ W! \ LEA ECX , 20 [EAX] |
||
1992 | OP1 OPexcise |
||
1993 | FALSE M\ F3 DTST |
||
1994 | EXIT |
||
1995 | THEN |
||
1996 | |||
1997 | OP2 @ ?ChEAX |
||
1998 | OP2 @ ^?EAX= AND |
||
1999 | OP1 @ C@ B9 XOR OR \ 587AC6 B919000000 MOV ECX , # 19 |
||
2000 | \ EAX= |
||
2001 | 0= IF M\ FE DTST |
||
2002 | OP2 OPexcise |
||
2003 | FALSE M\ FF DTST |
||
2004 | EXIT |
||
2005 | THEN |
||
2006 | |||
2007 | OP2 @ 2+ C@ |
||
2008 | OP0 @ 2+ C@ XOR |
||
2009 | OP2 @ W@ 5589 XOR OR \ 8955E8 MOV E8 [EBP] , EDX |
||
2010 | |||
2011 | OP1 ?EDX_[EBP] OR |
||
2012 | |||
2013 | OP0 @ W@ 458B XOR OR \ 8B45E8 MOV EAX , E8 [EBP] |
||
2014 | 0= IF M\ BC DTST |
||
2015 | C28B OP0 @ W! \ MOV EAX , EDX |
||
2016 | -1 ALLOT |
||
2017 | FALSE M\ BD DTST |
||
2018 | EXIT |
||
2019 | THEN |
||
2020 | |||
2021 | DUP C@ C3 XOR |
||
2022 | OP2 @ @ 9788D08B XOR OR \ 8BD0 MOV EDX , EAX |
||
2023 | \ 88973C100000 MOV 103C [EDI] , DL |
||
2024 | \ EAX= |
||
2025 | 0= IF M\ 112 DTST |
||
2026 | OP2 OPexcise |
||
2027 | 8788 OP1 @ W! \ MOV 103C [EDI] , AL |
||
2028 | FALSE M\ 113 DTST |
||
2029 | EXIT |
||
2030 | THEN |
||
2031 | |||
2032 | OP2 @ C@ 50 XOR \ 50 PUSH EAX |
||
2033 | OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX |
||
2034 | OP0 @ W@ 48B XOR OR \ 8B0424 MOV EAX , [ESP] |
||
2035 | 0= IF M\ 164 DTST |
||
2036 | OP0 OPexcise |
||
2037 | FALSE M\ 165 DTST |
||
2038 | EXIT |
||
2039 | THEN |
||
2040 | |||
2041 | M\ PPPP |
||
2042 | OP3 @ :-SET U< IF TRUE EXIT THEN |
||
2043 | |||
2044 | \ $ SWAP 4444 |
||
2045 | OP2 @ W@ C28B = \ MOV EAX , EDX |
||
2046 | IF OP1 @ W@ 4589 = \ MOV X [EBP] , EAX |
||
2047 | IF M\ 60E DTST |
||
2048 | 1000 OP1 @ +! \ MOV X [EBP] , EDX |
||
2049 | FALSE OP2 OPexcise M\ 60F DTST |
||
2050 | EXIT |
||
2051 | THEN |
||
2052 | THEN |
||
2053 | |||
2054 | OP3 @ @ 408DC48B XOR \ MOV EAX , ESP LEA EAX , 8 [EAX] |
||
2055 | OP1 @ W@ E08B XOR OR \ MOV ESP , EAX |
||
2056 | 0= IF M\ 8A DTST |
||
2057 | -1 OP2 +! |
||
2058 | 24648D00 OP2 @ 1- ! \ LEA ESP , 8 [ESP] |
||
2059 | OP3 OPexcise |
||
2060 | OP1 OPexcise |
||
2061 | FALSE M\ 8B DTST |
||
2062 | EXIT |
||
2063 | THEN |
||
2064 | |||
2065 | OP3 @ W@ C88B = \ 581B54 8BC8 MOV ECX , EAX |
||
2066 | IF |
||
2067 | DUP C@ C3 XOR |
||
2068 | \ OP3 @ W@ C88B XOR OR \ 587733 8BC8 MOV ECX , EAX |
||
2069 | OP2 @ W@ 428D XOR OR \ 587735 8D4201 LEA EAX , 1 [EDX] |
||
2070 | OP1 @ W@ 4589 XOR OR \ 587738 894500 MOV 0 [EBP] , EAX |
||
2071 | OP0 @ W@ C18B XOR OR \ 58773B 8BC1 MOV EAX , ECX |
||
2072 | 0= IF M\ 142 DTST |
||
2073 | OP3 OPexcise |
||
2074 | OP0 OPexcise |
||
2075 | 528D OP1 @ W! \ LEA EDX , 1 [EDX] |
||
2076 | 5589 OP0 @ W! \ MOV 0 [EBP] , EDX |
||
2077 | FALSE M\ 143 DTST |
||
2078 | EXIT |
||
2079 | THEN |
||
2080 | OP5 @ J-SET U< 0= IF \ GOTO 5SET |
||
2081 | OP5 @ W@ C18B XOR \ 581B4C 8BC1 MOV EAX , ECX |
||
2082 | OP4 @ W@ 840F XOR OR \ 581B4E 0F8400000000 JE 581B54 ( zz+14 ) |
||
2083 | 0= IF M\ B0 DTST |
||
2084 | OP3 OPexcise |
||
2085 | FALSE M\ B1 DTST |
||
2086 | EXIT |
||
2087 | THEN THEN \ 5SET: |
||
2088 | THEN |
||
2089 | |||
2090 | DUP C@ 0C3 XOR |
||
2091 | OP3 @ @ C103D8F7 XOR OR \ F7D8 NEG EAX |
||
2092 | \ 03C1 ADD EAX , ECX |
||
2093 | OP1 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX |
||
2094 | OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX |
||
2095 | 0= IF M\ CE DTST |
||
2096 | OP3 OPexcise |
||
2097 | C82B OP2 @ W! \ SUB ECX , EAX |
||
2098 | 4D89 OP1 @ W! \ MOV 0 [EBP] , ECX |
||
2099 | FALSE M\ CF DTST |
||
2100 | EXIT |
||
2101 | THEN |
||
2102 | |||
2103 | OP3 @ @ C82BD08B XOR \ 8BD0 MOV EDX , EAX |
||
2104 | \ 2BC8 SUB ECX , EAX |
||
2105 | OP1 @ W@ 4D89 XOR OR \ 894D00 MOV 0 [EBP] , ECX |
||
2106 | OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX |
||
2107 | 0= IF M\ D0 DTST |
||
2108 | DUP C@ 0C3 = |
||
2109 | IF OP3 OPexcise THEN |
||
2110 | OP0 OPexcise |
||
2111 | FALSE M\ D1 DTST |
||
2112 | EXIT |
||
2113 | THEN |
||
2114 | |||
2115 | DUP C@ C3 XOR |
||
2116 | OP3 @ @ 418DD08B XOR OR \ 8BD0 MOV EDX , EAX |
||
2117 | \ 8D41FF LEA EAX , FF [ECX] |
||
2118 | OP1 @ W@ 4589 XOR OR \ 8945F8 MOV F8 [EBP] , EAX |
||
2119 | OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX |
||
2120 | 0= IF M\ EA DTST |
||
2121 | OP3 OPexcise |
||
2122 | OP0 OPexcise |
||
2123 | 498D OP1 @ W! \ LEA ECX , FF [ECX] |
||
2124 | 4D89 OP0 @ W! \ MOV F8 [EBP] , ECX |
||
2125 | FALSE M\ EB DTST |
||
2126 | EXIT |
||
2127 | THEN |
||
2128 | |||
2129 | OP3 @ 2+ C@ |
||
2130 | OP0 @ 2+ C@ XOR |
||
2131 | OP3 @ W@ 5589 XOR OR \ 8955E8 MOV E8 [EBP] , EDX |
||
2132 | |||
2133 | OP2 ?EDX_[EBP] OR |
||
2134 | OP1 ?EDX_[EBP] OR |
||
2135 | |||
2136 | OP0 @ W@ 458B XOR OR \ 8B45E8 MOV EAX , E8 [EBP] |
||
2137 | 0= IF M\ BC DTST |
||
2138 | C28B OP0 @ W! \ MOV EAX , EDX |
||
2139 | -1 ALLOT |
||
2140 | FALSE M\ BD DTST |
||
2141 | EXIT |
||
2142 | THEN |
||
2143 | |||
2144 | DUP C@ C3 XOR |
||
2145 | OP2 @ C@ BA XOR OR \ BA2C000000 MOV EDX , # 2C |
||
2146 | OP1 @ @ 458B1001 XOR OR \ 0110 ADD [EAX] , EDX |
||
2147 | \ 8B45FC MOV EAX , FC [EBP] |
||
2148 | 0= IF M\ 14C DTST |
||
2149 | OP1 OPexcise |
||
2150 | OP1 1 OPresize |
||
2151 | 0081 OP1 @ W! \ ADD [EAX] , # 2C |
||
2152 | FALSE M\ 14D DTST |
||
2153 | EXIT |
||
2154 | THEN |
||
2155 | OP2 @ C@ B8 XOR \ 57DDE3 B844440400 MOV EAX , # 44444 |
||
2156 | OP1 @ W@ 81 XOR OR \ 57DDE8 81002C000000 ADD [EAX] , # 2C |
||
2157 | OP0 @ W@ 458B XOR OR \ 57DDEE 8B45FC MOV EAX , FC [EBP] |
||
2158 | 0= IF M\ 14E DTST |
||
2159 | OP2 @ 1+ @ OP2 @ 2+ ! |
||
2160 | OP1 @ 2+ @ OP1 @ 1+ ! |
||
2161 | 0581 OP2 @ W! \ ADD 44444 , # 2C |
||
2162 | 5 OP1 +! |
||
2163 | OP1 OPexcise |
||
2164 | FALSE M\ 14F DTST |
||
2165 | EXIT |
||
2166 | THEN |
||
2167 | |||
2168 | OP2 @ 2+ C@ |
||
2169 | OP0 @ 2+ C@ XOR |
||
2170 | OP2 @ W@ 45C7 XOR OR \ MOV F8 [EBP] , # 3 |
||
2171 | OP1 @ C@ B9 XOR OR \ MOV ECX , # 4 |
||
2172 | OP0 @ W@ 458B XOR OR \ MOV EAX , F8 [EBP] |
||
2173 | 0= IF M\ 3E DTST |
||
2174 | OP2 @ 3 + @ OP2 @ 1+ ! |
||
2175 | B8 OP2 @ C! |
||
2176 | OP1 0 OPinsert -2 OP2 +! |
||
2177 | OP2 OPexcise \ MOV EAX , # 3 |
||
2178 | 4589 OP0 @ W! \ MOV F8 [EBP] , EAX |
||
2179 | |||
2180 | FALSE M\ 3F DTST |
||
2181 | EXIT |
||
2182 | THEN |
||
2183 | |||
2184 | |||
2185 | OP3 @ :-SET U< IF TRUE EXIT THEN |
||
2186 | |||
2187 | OP3 @ C@ A1 XOR \ 57E2D7 A108E15700 MOV EAX , 57E108 |
||
2188 | OP2 @ W@ 4589 XOR OR \ 57E2DC 8945EC MOV EC [EBP] , EAX |
||
2189 | OP1 @ W@ D08B XOR OR \ 57E2DF 8BD0 MOV EDX , EAX |
||
2190 | \ EAX= |
||
2191 | 0= IF M\ 152 DTST |
||
2192 | OP3 1 OPresize |
||
2193 | 158B OP3 @ W! \ MOV EDX , 57E108 |
||
2194 | 5589 OP2 @ W! \ MOV EC [EBP] , EDX |
||
2195 | OP1 OPexcise |
||
2196 | FALSE M\ 153 DTST |
||
2197 | EXIT |
||
2198 | THEN |
||
2199 | |||
2200 | |||
2201 | OP3 @ C@ 58 XOR \ POP EAX |
||
2202 | OP2 @ @ FFFFFF AND FF408D XOR OR \ LEA EAX , FF [EAX] |
||
2203 | OP1 @ C@ 50 XOR OR \ PUSH EAX |
||
2204 | \ EAX= |
||
2205 | 0= IF M\ D30 DTST |
||
2206 | \ OP2 1 OPresize |
||
2207 | 240CFF OP2 @ ! \ DEC DWORD PTR [ESP] |
||
2208 | OP3 OPexcise |
||
2209 | OP1 OPexcise |
||
2210 | FALSE M\ D31 DTST |
||
2211 | EXIT |
||
2212 | THEN |
||
2213 | |||
2214 | DUP C@ C3 XOR |
||
2215 | OP3 @ @ 458BD08B XOR OR \ 8BD0 MOV EDX , EAX MOV EAX , 0 [EBP] |
||
2216 | OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX |
||
2217 | OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX |
||
2218 | 0= IF M\ 166 DTST |
||
2219 | OP3 OPexcise |
||
2220 | OP0 OPexcise |
||
2221 | 558B OP1 @ W! \ MOV EDX , 0 [EBP] |
||
2222 | 5589 OP0 @ W! \ MOV FC [EBP] , EAX |
||
2223 | FALSE M\ 167 DTST |
||
2224 | EXIT |
||
2225 | THEN |
||
2226 | |||
2227 | DUP C@ C3 XOR |
||
2228 | OP3 @ W@ D08B XOR OR \ 5822F8 8BD0 MOV EDX , EAX |
||
2229 | OP2 @ W@ 458B XOR OR \ 5822FA 8B4508 MOV EAX , 8 [EBP] |
||
2230 | OP1 @ W@ 1089 XOR OR \ 5822FD 8910 MOV [EAX] , EDX |
||
2231 | OP0 @ W@ 458B XOR OR \ 5822FF 8B450C MOV EAX , C [EBP] |
||
2232 | 0= IF M\ 156 DTST |
||
2233 | OP3 OPexcise |
||
2234 | 558B OP2 @ W! \ MOV EDX , 8 [EBP] |
||
2235 | 0289 OP1 @ W! \ MOV [EDX] , EAX |
||
2236 | FALSE M\ 157 DTST |
||
2237 | EXIT |
||
2238 | THEN |
||
2239 | |||
2240 | |||
2241 | |||
2242 | OP4 @ :-SET U< IF TRUE EXIT THEN |
||
2243 | OP5 @ :-SET U< IF TRUE EXIT THEN |
||
2244 | |||
2245 | OP5 @ C@ B8 XOR \ 596994 B812000000 MOV EAX , # 12 |
||
2246 | OP4 @ W@ 4589 XOR OR \ 596999 8945F4 MOV F4 [EBP] , EAX |
||
2247 | OP3 @ W@ 4589 XOR OR \ 59699C 8945F0 MOV F0 [EBP] , EAX |
||
2248 | OP2 @ C@ BA XOR OR \ 59699F BA00000080 MOV EDX , # 80000000 |
||
2249 | OP1 @ W@ D02B XOR OR \ 5969A4 2BD0 SUB EDX , EAX |
||
2250 | \ EAX= |
||
2251 | 0= IF M\ A6 DTST |
||
2252 | OP5 @ 1+ @ NEGATE OP2 @ 1+ +! |
||
2253 | OP1 OPexcise |
||
2254 | FALSE M\ A7 DTST |
||
2255 | EXIT |
||
2256 | THEN |
||
2257 | |||
2258 | TRUE |
||
2259 | ; |
||
2260 | |||
2261 | |||
2262 | \ : SSSSSS ; |
||
2263 | \ TRUE VALUE ?C-JMP |
||
2264 | FALSE VALUE ?C-JMP |
||
2265 | |||
2266 | \ $ - указывает на фрагмент исходного текста, оптимизируемый |
||
2267 | \ данным методом |
||
2268 | |||
2269 | : OPT-RULES ( ADDR -- ADDR' FLAG ) |
||
2270 | |||
2271 | BEGIN M\ -1 DTST |
||
2272 | OP0 @ :-SET U< IF TRUE EXIT THEN |
||
2273 | |||
2274 | OP0 @ W@ 408D = \ LEA EAX, X [EAX] |
||
2275 | WHILE M\ 2 DTST |
||
2276 | OP0 @ 2+ C@ C>S OFF-EAX + TO OFF-EAX |
||
2277 | OP1 ToOP0 |
||
2278 | -3 ALLOT M\ 3 DTST |
||
2279 | REPEAT M\ DUP VPPP ! |
||
2280 | OP0 @ C@ 05 = ~BR-OPT AND \ ADD EAX, # X |
||
2281 | IF M\ 4 DTST |
||
2282 | OP0 @ 1+ @ OFF-EAX + TO OFF-EAX |
||
2283 | OP1 ToOP0 |
||
2284 | FALSE -5 ALLOT M\ 5 DTST |
||
2285 | EXIT |
||
2286 | THEN |
||
2287 | M\ PPPP |
||
2288 | OP0 @ W@ 808D = \ LEA EAX, X [EAX] |
||
2289 | IF M\ 6 DTST |
||
2290 | OP0 @ 2+ @ OFF-EAX + TO OFF-EAX |
||
2291 | OP1 ToOP0 |
||
2292 | -6 ALLOT FALSE M\ 7 DTST |
||
2293 | EXIT |
||
2294 | THEN |
||
2295 | OFF-EAX |
||
2296 | OP0 @ W@ C033 = AND \ XOR EAX , EAX |
||
2297 | IF M\ 4A DTST |
||
2298 | B8 OP0 @ C! |
||
2299 | OFF-EAX OP0 @ 1+ ! |
||
2300 | |||
2301 | 3 ALLOT FALSE M\ 4B DTST |
||
2302 | EXIT |
||
2303 | THEN |
||
2304 | M\ PPPP |
||
2305 | OP0 @ @ 3FFFFF AND |
||
2306 | 05048D = \ LEA EAX, X [EAX*_] |
||
2307 | IF |
||
2308 | |||
2309 | \ $ 4444 CELLS |
||
2310 | |||
2311 | OP1 @ :-SET U< 0= |
||
2312 | IF |
||
2313 | OP1 @ C@ B8 XOR \ MOV EAX, # X1 |
||
2314 | OP0 @ 3 + @ \ X=0 |
||
2315 | OR 0= |
||
2316 | IF M\ 8 DTST |
||
2317 | OP1 @ 1+ @ OP0 @ @ C00000 AND 16 RSHIFT |
||
2318 | LSHIFT |
||
2319 | OP1 @ 1+ ! |
||
2320 | OP1 ToOP0 \ FIX |
||
2321 | FALSE -7 ALLOT M\ 9 DTST |
||
2322 | EXIT |
||
2323 | THEN |
||
2324 | THEN |
||
2325 | |||
2326 | \ $ CELLS 4444 + |
||
2327 | |||
2328 | OFF-EAX OP0 @ 3 + +! |
||
2329 | |||
2330 | |||
2331 | THEN |
||
2332 | M\ PPPP |
||
2333 | |||
2334 | OP0 @ C@ B8 = \ MOV EAX, # X |
||
2335 | IF OFF-EAX OP0 @ 1+ +! |
||
2336 | |||
2337 | OP0 @ 1+ @ 0= \ MOV EAX, # 0 |
||
2338 | IF M\ A DTST |
||
2339 | C033 OP0 @ W! \ XOR EAX, EAX |
||
2340 | -3 ALLOT |
||
2341 | \ FALSE EXIT |
||
2342 | M\ B DTST |
||
2343 | THEN |
||
2344 | OP1 @ :-SET U< IF TRUE EXIT THEN |
||
2345 | DUP C@ 0C3 XOR |
||
2346 | OP1 @ W@ 45C7 XOR OR 0= \ MOV F8 [EBP] , # 5 |
||
2347 | IF OP1 @ 2+ C@ C>S OFF-EBP U< |
||
2348 | IF |
||
2349 | M\ 10A DTST |
||
2350 | OP1 OPexcise |
||
2351 | \ FALSE EXIT |
||
2352 | M\ 10B DTST |
||
2353 | THEN |
||
2354 | THEN |
||
2355 | THEN |
||
2356 | M\ PPPP |
||
2357 | |||
2358 | DUP C@ C3 = |
||
2359 | IF OFF-EBP >R |
||
2360 | 5555 DP @ ! |
||
2361 | FALSE OP0 -EBPCLR OP0 -EBPCLR OP0 -EBPCLR OP0 -EBPCLR |
||
2362 | IF M\ 20B DTST |
||
2363 | R> TO OFF-EBP FALSE EXIT |
||
2364 | THEN R> TO OFF-EBP |
||
2365 | THEN |
||
2366 | |||
2367 | OFF-EAX |
||
2368 | OP0 @ W@ C28B = \ MOV EAX , EDX |
||
2369 | OP0 @ W@ C18B = OR AND \ MOV EAX , ECX |
||
2370 | IF M\ D6 DTST |
||
2371 | OFF-EAX DUP SHORT? |
||
2372 | IF 0418D C18B - OP0 @ +! C, |
||
2373 | ELSE 0828D C28B - OP0 @ +! , |
||
2374 | THEN \ LEA EAX, OFF-EBP [EDX] |
||
2375 | |||
2376 | FALSE M\ D7 DTST |
||
2377 | EXIT |
||
2378 | THEN |
||
2379 | |||
2380 | OP0 @ 2+ @ 5 XOR |
||
2381 | OP0 @ W@ C069 XOR OR \ 59A095 69C005000000 IMUL EAX , EAX , # 5 |
||
2382 | 0= IF M\ 8E DTST |
||
2383 | 80048D OP0 @ ! \ MOV EAX , [EAX*4+EAX] |
||
2384 | -3 ALLOT |
||
2385 | FALSE M\ 8F DTST |
||
2386 | EXIT |
||
2387 | THEN |
||
2388 | |||
2389 | OP0 @ W@ D28B = \ MOV EDX, EDX \ C-DO |
||
2390 | IF OP0 OPexcise TRUE EXIT |
||
2391 | THEN |
||
2392 | |||
2393 | OP0 @ @ 1004583 = \ 587890 83450001 ADD 0 [EBP] , # 1 |
||
2394 | IF M\ 146 DTST |
||
2395 | 45FF OP0 @ W! \ INC 0 [EBP] |
||
2396 | -1 ALLOT |
||
2397 | FALSE M\ 147 DTST |
||
2398 | EXIT |
||
2399 | THEN |
||
2400 | |||
2401 | M\ PPPP |
||
2402 | OP1 @ :-SET U< IF TRUE EXIT THEN |
||
2403 | ?~EAX 0! |
||
2404 | |||
2405 | OP1 @ @ 00FFFFFD AND 244489 XOR \ MOV 8 [ESP] , EAX |
||
2406 | OP0 @ @ FFFFFFFD AND |
||
2407 | OP1 @ @ FFFFFFFD AND XOR OR \ MOV EAX , 8 [ESP] |
||
2408 | 0= IF M\ 1F0 DTST |
||
2409 | OP1 ToOP0 |
||
2410 | -4 ALLOT |
||
2411 | FALSE M\ 1F1 DTST |
||
2412 | EXIT |
||
2413 | THEN |
||
2414 | |||
2415 | OP1 @ 2+ C@ |
||
2416 | OP0 @ 2+ C@ XOR |
||
2417 | OP1 @ W@ 5089 XOR OR \ MOV C [EAX] , EDX |
||
2418 | OP0 @ W@ 408B XOR OR \ MOV EAX , C [EAX] |
||
2419 | 0= IF M\ 2F0 DTST |
||
2420 | C28B OP0 @ W! \ MOV EAX , EDX |
||
2421 | -1 ALLOT |
||
2422 | FALSE M\ 2F1 DTST |
||
2423 | EXIT |
||
2424 | THEN |
||
2425 | M\ PPPP |
||
2426 | OP1 @ @ 008B0889 = \ MOV [EAX] , ECX MOV EAX , [EAX] |
||
2427 | IF M\ F0 DTST |
||
2428 | C18B OP0 @ W! |
||
2429 | FALSE M\ F1 DTST |
||
2430 | EXIT |
||
2431 | THEN |
||
2432 | |||
2433 | OP0 @ C@ 58 XOR \ POP EAX |
||
2434 | OP0 @ ^?EAX= AND 0= |
||
2435 | \ OP0 @ ^?EAX= 0= |
||
2436 | IF ?EAX=RULES EXIT |
||
2437 | THEN |
||
2438 | |||
2439 | OP1 @ @ 4503C033 = \ XOR EAX , EAX ADD EAX , F8 [EBP] |
||
2440 | IF M\ 10C DTST |
||
2441 | OP1 OPexcise |
||
2442 | 8B OP0 @ C! \ MOV EAX , F8 [EBP] |
||
2443 | FALSE M\ 10D DTST |
||
2444 | EXIT |
||
2445 | THEN |
||
2446 | M\ PPPP |
||
2447 | OP1 @ @ 048DC033 = \ XOR EAX , EAX LEA EAX , 57B680 [EAX*4] |
||
2448 | IF OP0 @ 2+ C@ 85 = |
||
2449 | IF M\ 62 DTST |
||
2450 | OP1 OPexcise |
||
2451 | B8 OP0 @ C! \ MOV EAX , # 57B680 |
||
2452 | OP0 @ 3 + @ OP0 @ 1+ ! |
||
2453 | -2 ALLOT |
||
2454 | FALSE M\ 63 DTST |
||
2455 | EXIT |
||
2456 | THEN |
||
2457 | THEN |
||
2458 | |||
2459 | |||
2460 | ?C-JMP |
||
2461 | IF OP0 @ C@ C3 XOR |
||
2462 | OP1 @ C@ E8 XOR OR 0= \ CALL X RET |
||
2463 | IF M\ 0C DTST |
||
2464 | OP1 @ 1+! |
||
2465 | OP1 ToOP0 |
||
2466 | FALSE -6 ALLOT |
||
2467 | SetJP 5 ALLOT M\ 0D DTST |
||
2468 | EXIT |
||
2469 | THEN |
||
2470 | THEN |
||
2471 | |||
2472 | \ TRUE EXIT |
||
2473 | |||
2474 | \ $ CELLS 444 + @ |
||
2475 | OP1 @ W@ 38FF AND 008D = \ LEA EAX , ____ |
||
2476 | IF OP0 @ W@ 008B = \ MOV EAX , [EAX] |
||
2477 | IF |
||
2478 | M\ 0E DTST |
||
2479 | 8B OP1 @ C! |
||
2480 | OP1 ToOP0 |
||
2481 | FALSE -2 ALLOT M\ 0F DTST |
||
2482 | EXIT |
||
2483 | THEN |
||
2484 | OP0 @ @ FFFEFF AND 00B60F = \ MOVZX EAX , BYTE|WORD PTR [EAX] |
||
2485 | \ LEA EAX , ____ |
||
2486 | IF |
||
2487 | M\ 10E DTST |
||
2488 | OP0 @ W@ OP1 @ 2@ ( 2DUP U. U. ) OP1 @ 1+ ( 0 IF THEN ) 2! |
||
2489 | OP1 @ W! |
||
2490 | OP1 ToOP0 |
||
2491 | FALSE -2 ALLOT M\ 10F DTST |
||
2492 | EXIT |
||
2493 | THEN |
||
2494 | THEN |
||
2495 | OP0 @ W@ 4589 XOR \ MOV X [EBP], EAX |
||
2496 | OP0 @ 2+ C@ |
||
2497 | OP1 @ 2+ C@ XOR OR 0= \ (FALG &( X1=X )) |
||
2498 | IF |
||
2499 | OP1 @ W@ 458B = \ MOV EAX, 1X [EBP] \ $ DROP DUP |
||
2500 | IF M\ 10 DTST |
||
2501 | OP1 ToOP0 |
||
2502 | FALSE -3 ALLOT M\ 11 DTST |
||
2503 | EXIT |
||
2504 | THEN |
||
2505 | THEN |
||
2506 | |||
2507 | OP1 @ C@ B8 = \ MOV EAX, # X \ eax= |
||
2508 | IF OP0 @ W@ |
||
2509 | DUP D8F7 = \ NEG EAX |
||
2510 | IF DROP M\ 14 DTST |
||
2511 | OP1 @ 1+ @ NEGATE OP1 @ 1+ ! \ MOV EAX, # -X |
||
2512 | OP1 ToOP0 |
||
2513 | FALSE -2 ALLOT M\ 15 DTST |
||
2514 | EXIT |
||
2515 | THEN |
||
2516 | DUP D0F7 = \ MOV EAX, # X NOT EAX |
||
2517 | IF DROP M\ 16 DTST |
||
2518 | OP1 @ 1+ @ INVERT OP1 @ 1+ ! \ MOV EAX, # ~X |
||
2519 | OP1 ToOP0 |
||
2520 | FALSE -2 ALLOT M\ 17 DTST |
||
2521 | EXIT |
||
2522 | THEN |
||
2523 | DUP 008B = \ MOV EAX, # X MOV EAX, [EAX] |
||
2524 | IF DROP M\ 18 DTST |
||
2525 | A1 OP1 @ C! \ MOV EAX, X |
||
2526 | OP1 ToOP0 |
||
2527 | FALSE -2 ALLOT M\ 19 DTST |
||
2528 | EXIT |
||
2529 | THEN |
||
2530 | DROP |
||
2531 | OP0 @ @ FFFFFF AND 85448B = \ MOV EAX, # X MOV EAX , X1 [EBP] [EAX*4] |
||
2532 | IF M\ 518 DTST |
||
2533 | OP0 @ 3 + C@ |
||
2534 | OP1 @ 1+ @ CELLS + |
||
2535 | 458B OP1 @ W! \ MOV EAX , X [EBP] |
||
2536 | OP1 @ 2+ C! |
||
2537 | OP1 ToOP0 |
||
2538 | FALSE -6 ALLOT M\ 519 DTST |
||
2539 | EXIT |
||
2540 | THEN |
||
2541 | THEN |
||
2542 | |||
2543 | OP1 @ W@ 5589 XOR \ MOV X1 [EBP] , EDX |
||
2544 | OP0 @ W@ 4503 XOR OR \ ADD EAX , X0 [EBP] |
||
2545 | OP1 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X1=X0 |
||
2546 | 0= IF M\ 418 DTST |
||
2547 | 02048D OP0 @ ! \ lea EAX, [EAX+EDX] |
||
2548 | FALSE M\ 419 DTST |
||
2549 | EXIT |
||
2550 | THEN |
||
2551 | |||
2552 | OP1 @ W@ 4D89 XOR \ MOV 4 [EBP] , ECX |
||
2553 | OP0 @ W@ 558B XOR OR \ MOV EDX , 4 [EBP] |
||
2554 | OP1 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X1=X0 |
||
2555 | 0= IF M\ 418 DTST |
||
2556 | D18B OP0 @ W! \ MOV EDX , ECX |
||
2557 | -1 ALLOT |
||
2558 | FALSE M\ 419 DTST |
||
2559 | EXIT |
||
2560 | THEN |
||
2561 | M\ PPPP |
||
2562 | OP1 @ W@ 408D XOR \ LEA EAX , Y [EAX] |
||
2563 | OP0 @ @ 85048D FFFFFF AND XOR OR 0= \ LEA EAX , X [EAX*4] |
||
2564 | IF M\ 30E DTST |
||
2565 | OP1 @ 2+ C@ C>S CELLS OP0 @ 3 + +! |
||
2566 | FALSE |
||
2567 | OP1 OPexcise M\ 30F DTST |
||
2568 | EXIT |
||
2569 | THEN |
||
2570 | |||
2571 | OP1 @ @ FFFFFF AND 85048D XOR \ LEA EAX , X [EAX*4] |
||
2572 | OP0 @ @ FFFFFF AND 02048D XOR OR \ MOV EAX , [EDX] [EAX] |
||
2573 | OP1 @ 3 + @ 80 + FFFFFF00 AND OR 0= |
||
2574 | IF M\ 50E DTST |
||
2575 | 8244 OP1 @ 1+ W! |
||
2576 | OP1 ToOP0 |
||
2577 | FALSE |
||
2578 | -6 ALLOT M\ 50F DTST |
||
2579 | EXIT |
||
2580 | THEN |
||
2581 | |||
2582 | OP0 @ W@ FFFD AND 5589 = \ MOV EDX , X [EBP] |
||
2583 | IF OP1 |
||
2584 | BEGIN MOV_EDX_[EBP] |
||
2585 | UNTIL |
||
2586 | IF M\ A0E DTST |
||
2587 | OP1 ToOP0 |
||
2588 | FALSE |
||
2589 | -3 ALLOT M\ A0F DTST |
||
2590 | EXIT |
||
2591 | THEN |
||
2592 | THEN |
||
2593 | |||
2594 | DUP C@ 0C3 XOR |
||
2595 | OP1 @ W@ 4589 XOR OR \ 5695B0 8945FC MOV FC [EBP] , EAX |
||
2596 | OP0 @ W@ 6DF7 XOR OR \ 5695B3 F76DFC IMUL FC [EBP] |
||
2597 | OP1 @ 2+ C@ |
||
2598 | OP0 @ 2+ C@ XOR OR |
||
2599 | OP0 @ 2+ C@ C>S OFF-EBP > OR |
||
2600 | 0= IF M\ 32A DTST |
||
2601 | E8F7 OP1 @ W! |
||
2602 | OP1 ToOP0 |
||
2603 | FALSE -4 ALLOT M\ 32B DTST |
||
2604 | EXIT |
||
2605 | THEN |
||
2606 | M\ PPPP |
||
2607 | OP0 @ W@ E7FF AND 4589 = \ TTTT AND \ MOV X [EBP] , EAX|EDX|EBX|ECX |
||
2608 | IF OFF-EBP >R OP0 @ 2+ C@ C>S CELL+ TO OFF-EBP |
||
2609 | FALSE OP1 -EBPCLR |
||
2610 | IF R> TO OFF-EBP FALSE EXIT THEN |
||
2611 | R> TO OFF-EBP |
||
2612 | THEN |
||
2613 | |||
2614 | OP1 @ W@ CA8B XOR \ 8BCA MOV ECX , EDX |
||
2615 | OP0 @ @ FFFFFF AND 88048D XOR OR \ 8D0488 LEA EAX , [EAX] [ECX*4] |
||
2616 | 0= IF M\ 42A DTST |
||
2617 | 90048D OP0 @ ! |
||
2618 | FALSE M\ 42B DTST |
||
2619 | EXIT |
||
2620 | THEN |
||
2621 | |||
2622 | DUP C@ 0C3 XOR |
||
2623 | OP1 @ W@ CA8B XOR OR \ 8BCA MOV ECX , EDX |
||
2624 | OP0 @ @ FFFFFF AND 90048D XOR OR \ 8D0488 LEA EAX , [EAX] [EDX*4] |
||
2625 | 0= IF M\ 62A DTST |
||
2626 | OP1 OPexcise |
||
2627 | FALSE M\ 62B DTST |
||
2628 | EXIT |
||
2629 | THEN |
||
2630 | |||
2631 | OP1 @ @ FFFFFF AND 8D0C8D XOR \ 8D0C8D00000000 LEA ECX , 0 [ECX*4] |
||
2632 | OP1 @ 3 + @ XOR |
||
2633 | OP0 @ @ FFFFFF AND 1048D XOR OR \ 8D0401 LEA EAX , [ECX] [EAX] |
||
2634 | 0= IF M\ 52A DTST |
||
2635 | 88048D OP1 @ ! |
||
2636 | OP1 ToOP0 |
||
2637 | FALSE -7 ALLOT M\ 52B DTST |
||
2638 | EXIT |
||
2639 | THEN |
||
2640 | OP1 @ C@ B8 XOR \ MOV EAX , # 58DDE8 |
||
2641 | OP0 @ @ FFFFFF AND 90048D XOR OR \ LEA EAX , [EAX] [EDX*4] |
||
2642 | 0= IF M\ 4C DTST |
||
2643 | OP1 @ 1+ @ |
||
2644 | OP1 OPexcise |
||
2645 | 95 OP0 @ 2+ C! , |
||
2646 | FALSE M\ 4D DTST |
||
2647 | EXIT |
||
2648 | THEN |
||
2649 | |||
2650 | DUP C@ 0C3 XOR |
||
2651 | OP1 @ @ 048DD9F7 XOR OR \ NEG ECX LEA EAX , [ECX] [EAX] |
||
2652 | 0= IF M\ 90 DTST |
||
2653 | C12B OP1 @ W! |
||
2654 | OP1 ToOP0 |
||
2655 | FALSE -3 ALLOT M\ 91 DTST |
||
2656 | EXIT |
||
2657 | THEN |
||
2658 | |||
2659 | DUP C@ 0C3 XOR |
||
2660 | OP1 @ @ FFFFFF AND 244C8B XOR OR \ MOV ECX , 20 [ESP] |
||
2661 | OP0 @ W@ C12B XOR OR \ 59A13C 2BC1 SUB EAX , ECX |
||
2662 | 0= IF M\ 92 DTST |
||
2663 | 442B OP1 @ W! \ SUB EAX , 20 [ESP] |
||
2664 | OP1 ToOP0 |
||
2665 | FALSE -2 ALLOT M\ 93 DTST |
||
2666 | EXIT |
||
2667 | THEN |
||
2668 | |||
2669 | DUP C@ 0C3 XOR |
||
2670 | OP1 @ W@ D8B XOR OR \ MOV ECX , 599825 |
||
2671 | OP0 @ W@ C12B XOR OR \ SUB EAX , ECX |
||
2672 | 0= IF M\ 92 DTST |
||
2673 | 052B OP1 @ W! \ SUB EAX , 599825 |
||
2674 | OP1 ToOP0 |
||
2675 | FALSE -2 ALLOT M\ 93 DTST |
||
2676 | EXIT |
||
2677 | THEN |
||
2678 | |||
2679 | DUP C@ 0C3 XOR |
||
2680 | OP1 @ C@ B8 XOR OR \ 59A227 B841000000 MOV EAX , # 1000 |
||
2681 | OP0 @ C@ A3 XOR OR \ 59A22C A375995900 MOV 599975 ( Char1Glob+5 ) , EAX |
||
2682 | 0= IF M\ 98 DTST |
||
2683 | OP1 @ 1+ @ OP0 @ 1+ @ |
||
2684 | OP1 @ 2+ ! OP0 @ 1+ ! |
||
2685 | 05C7 OP1 @ W! \ MOV 599975 , # 1000 |
||
2686 | OP1 ToOP0 |
||
2687 | FALSE M\ 99 DTST |
||
2688 | EXIT |
||
2689 | THEN |
||
2690 | DUP C@ 0C3 XOR |
||
2691 | OP1 @ C@ B8 XOR OR \ MOV EAX , # 2000 |
||
2692 | OP0 @ @ FFFFFF AND 244489 XOR OR \ MOV 1C [ESP] , EAX |
||
2693 | 0= IF M\ A8 DTST |
||
2694 | OP1 @ 1+ @ , |
||
2695 | OP1 OPexcise |
||
2696 | C7 OP0 @ C! \ MOV 1C [ESP] , # 2000 |
||
2697 | FALSE M\ A9 DTST |
||
2698 | EXIT |
||
2699 | THEN |
||
2700 | |||
2701 | OP1 @ C@ B8 XOR \ B8E0005800 MOV EAX , # 5800E0 |
||
2702 | OP0 @ W@ 1001 XOR OR \ 0110 ADD [EAX] , EDX |
||
2703 | 0= IF M\ E4 DTST |
||
2704 | OP1 @ 1+ @ |
||
2705 | 1501 OP0 @ W! , \ ADD 5800E0 , EDX |
||
2706 | FALSE M\ E5 DTST |
||
2707 | EXIT |
||
2708 | THEN |
||
2709 | OP1 @ C@ B8 XOR \ 580185 B855550500 MOV EAX , # 55555 |
||
2710 | OP0 @ W@ 1089 XOR OR \ 58018A 8910 MOV [EAX] , EDX |
||
2711 | 0= IF M\ EE DTST |
||
2712 | OP1 @ 1+ @ |
||
2713 | 1589 OP0 @ W! , \ MOV 5800E0 , EDX |
||
2714 | FALSE M\ EF DTST |
||
2715 | EXIT |
||
2716 | THEN |
||
2717 | |||
2718 | OP1 @ @ 1501D08B = \ 8BD0 MOV EDX , EAX |
||
2719 | \ 011560015800 ADD 580160 , EDX |
||
2720 | IF M\ E6 DTST |
||
2721 | 0501 OP0 @ W! \ ADD 5800E0 , EAX |
||
2722 | FALSE M\ E7 DTST |
||
2723 | EXIT |
||
2724 | THEN |
||
2725 | |||
2726 | DUP C@ 0C3 XOR |
||
2727 | OP1 @ @ 0A4CB60F XOR OR \ MOVZX ECX , BYTE PTR 2 [EDX] [ECX] |
||
2728 | OP0 @ W@ C133 XOR OR \ XOR EAX , ECX |
||
2729 | 0= IF M\ A0 DTST |
||
2730 | OP0 OPexcise |
||
2731 | 0A443200 OP0 @ ! |
||
2732 | OP0 @ 1+ @ OP0 @ ! \ XOR AL , BYTE PTR [EAX+EDX+44H] |
||
2733 | -1 ALLOT |
||
2734 | FALSE M\ A1 DTST |
||
2735 | EXIT |
||
2736 | THEN |
||
2737 | |||
2738 | DUP C@ 0C3 XOR |
||
2739 | OP1 @ @ FFFFFF AND 850C8D XOR OR \ LEA ECX , 58E188 ( rson+5 ) [EAX*4] |
||
2740 | OP0 @ W@ 1189 XOR OR \ 596738 8911 MOV [ECX] , EDX |
||
2741 | 0= IF M\ A2 DTST |
||
2742 | OP0 OPexcise |
||
2743 | 1489 OP0 @ W! |
||
2744 | FALSE M\ A3 DTST |
||
2745 | EXIT |
||
2746 | THEN |
||
2747 | |||
2748 | OP1 @ 2+ C@ |
||
2749 | OP0 @ 2+ C@ XOR |
||
2750 | OP1 @ W@ 5589 XOR OR \ 8955F8 MOV F8 [EBP] , EDX |
||
2751 | 0= IF |
||
2752 | OP0 @ W@ 450B = \ 0B45F8 OR EAX , F8 [EBP] |
||
2753 | IF M\ B2 DTST |
||
2754 | C20B OP0 @ W! \ OR EAX , EDX |
||
2755 | -1 ALLOT |
||
2756 | FALSE M\ B3 DTST |
||
2757 | EXIT |
||
2758 | THEN |
||
2759 | OP0 @ W@ 453B = \ 3B45F8 CMP EAX , F8 [EBP] !!! |
||
2760 | IF M\ BE DTST |
||
2761 | C23B OP0 @ W! \ CMP EAX , EDX |
||
2762 | -1 ALLOT |
||
2763 | FALSE M\ BF DTST |
||
2764 | EXIT |
||
2765 | THEN |
||
2766 | THEN |
||
2767 | |||
2768 | OP1 @ W@ C28B XOR \ 8BC2 MOV EAX , EDX |
||
2769 | OP0 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX |
||
2770 | 0= IF M\ C0 DTST |
||
2771 | 5589 OP0 @ W! \ 8955FC MOV FC [EBP] , EDX |
||
2772 | FALSE M\ C1 DTST |
||
2773 | EXIT |
||
2774 | THEN |
||
2775 | |||
2776 | DUP C@ C3 XOR |
||
2777 | OP1 @ W@ D08B XOR OR \ 8BD0 MOV EDX , EAX |
||
2778 | OP0 @ W@ 45C7 XOR OR \ C7450001000000 MOV 0 [EBP] , # 1 |
||
2779 | 0= IF M\ C6 DTST |
||
2780 | OP1 OPexcise |
||
2781 | FALSE M\ C7 DTST |
||
2782 | EXIT |
||
2783 | THEN |
||
2784 | |||
2785 | OP1 @ 2+ C@ |
||
2786 | OP0 @ 2+ C@ XOR |
||
2787 | OP1 @ W@ 4589 XOR OR \ 58251C 894500 MOV 0 [EBP] , EAX |
||
2788 | OP0 @ W@ 45C7 XOR OR \ 58251F C7450001000000 MOV 0 [EBP] , # 1 |
||
2789 | 0= IF M\ C6 DTST |
||
2790 | OP1 OPexcise |
||
2791 | FALSE M\ C7 DTST |
||
2792 | EXIT |
||
2793 | THEN |
||
2794 | |||
2795 | DUP C@ C3 XOR |
||
2796 | OP1 @ @ 0501D08B XOR OR \ 8BD0 MOV EDX , EAX |
||
2797 | \ 011510025800 ADD 580210 , EAX |
||
2798 | 0= IF M\ E8 DTST |
||
2799 | OP1 OPexcise |
||
2800 | FALSE M\ E9 DTST |
||
2801 | EXIT |
||
2802 | THEN |
||
2803 | |||
2804 | DUP C@ C3 XOR |
||
2805 | OP1 @ C@ B9 XOR OR \ B94C025800 MOV ECX , # 58024C |
||
2806 | OP0 @ W@ 1C7 XOR OR \ C70189ABCDEF MOV [ECX] , # EFCDAB89 |
||
2807 | 0= IF M\ EC DTST |
||
2808 | OP0 @ 2+ @ OP1 @ 1+ @ |
||
2809 | OP1 @ 2+ ! OP0 @ 1+ ! |
||
2810 | 05C7 OP1 @ W! \ MOV 58024C , # EFCDAB89 |
||
2811 | OP1 ToOP0 |
||
2812 | -1 ALLOT |
||
2813 | FALSE M\ ED DTST |
||
2814 | EXIT |
||
2815 | THEN |
||
2816 | |||
2817 | OP1 @ C@ B8 XOR \ 587294 B801000000 MOV EAX , # 1 |
||
2818 | OP0 @ W@ C88B XOR OR \ 587299 8BC8 MOV ECX , EAX |
||
2819 | 0= IF M\ F6 DTST |
||
2820 | OP1 @ 1+ @ |
||
2821 | OP0 @ 1+ ! |
||
2822 | B9 OP0 @ C! \ MOV ECX , # 1 |
||
2823 | 3 ALLOT |
||
2824 | FALSE M\ F7 DTST |
||
2825 | EXIT |
||
2826 | THEN |
||
2827 | |||
2828 | OP1 @ C@ B9 XOR \ B901000000 MOV ECX , # 1 |
||
2829 | OP0 @ W@ D9F7 XOR OR \ F7D9 NEG ECX |
||
2830 | 0= IF M\ F8 DTST |
||
2831 | OP1 @ 1+ @ NEGATE |
||
2832 | OP1 @ 1+ ! |
||
2833 | OP1 ToOP0 |
||
2834 | -2 ALLOT |
||
2835 | FALSE M\ F9 DTST |
||
2836 | EXIT |
||
2837 | THEN |
||
2838 | |||
2839 | DUP C@ C3 XOR |
||
2840 | OP1 @ C@ B9 XOR OR \ B919000000 MOV ECX , # 19 |
||
2841 | OP0 @ W@ F7FF AND E0D3 XOR OR \ D3E8 SHR|SHL EAX , CL |
||
2842 | 0= IF M\ 100 DTST |
||
2843 | OP1 @ 1+ @ |
||
2844 | OP1 OPexcise |
||
2845 | C1 OP0 @ C! C, |
||
2846 | FALSE M\ 101 DTST |
||
2847 | EXIT |
||
2848 | THEN |
||
2849 | |||
2850 | OP1 @ C@ B8 XOR \ B801000000 MOV EAX , # 1 |
||
2851 | OP0 @ @ FFFFFF AND 85048B XOR OR \ 8B04851CDE5700 MOV EAX , 57DE1C [EAX*4] |
||
2852 | 0= IF M\ 148 DTST |
||
2853 | A1 OP1 @ C! \ MOV EAX , 1 |
||
2854 | OP0 @ 3 + @ |
||
2855 | OP1 @ 1+ @ CELLS + OP1 @ 1+ ! |
||
2856 | OP0 OPexcise |
||
2857 | FALSE M\ 149 DTST |
||
2858 | EXIT |
||
2859 | THEN |
||
2860 | |||
2861 | OP1 @ W@ C033 XOR \ 33C0 XOR EAX , EAX |
||
2862 | OP0 @ @ FFFFFF AND 85048B XOR OR \ 8B04851CDE5700 MOV EAX , 57DE1C [EAX*4] |
||
2863 | 0= IF M\ 348 DTST |
||
2864 | 2 OP0 +! |
||
2865 | A1 OP0 @ C! \ MOV EAX , 57DE1C |
||
2866 | OP1 OPexcise |
||
2867 | FALSE M\ 349 DTST |
||
2868 | EXIT |
||
2869 | THEN |
||
2870 | |||
2871 | OP1 @ C@ B8 XOR \ B803000000 MOV EAX , # 3 |
||
2872 | OP0 @ W@ F7FF AND E0C1 XOR OR \ C1E804 SH[R|L] EAX , 4 |
||
2873 | 0= IF M\ 48 DTST |
||
2874 | OP1 @ 1+ @ |
||
2875 | OP0 @ 2+ C@ OP0 @ W@ 0x800 AND IF RSHIFT ELSE LSHIFT THEN |
||
2876 | OP1 @ 1+ ! |
||
2877 | OP0 OPexcise |
||
2878 | FALSE M\ 49 DTST |
||
2879 | EXIT |
||
2880 | THEN |
||
2881 | DUP C@ C3 XOR |
||
2882 | OP1 @ W@ CA8B XOR OR \ 582148 8BCA MOV ECX , EDX |
||
2883 | OP0 @ W@ C12B XOR OR \ 58214A 2BC1 SUB EAX , ECX |
||
2884 | 0= IF M\ 180 DTST |
||
2885 | C22B OP1 @ W! \ SUB EAX , ECX |
||
2886 | OP0 OPexcise |
||
2887 | FALSE M\ 181 DTST |
||
2888 | EXIT |
||
2889 | THEN |
||
2890 | |||
2891 | M\ PPPP |
||
2892 | OP2 @ :-SET |
||
2893 | \ TTTT IF ." T=" 2DUP HEX U. U. THEN |
||
2894 | U< IF TRUE EXIT THEN |
||
2895 | |||
2896 | \ $ - DUP |
||
2897 | OP2 @ W@ D8F7 XOR |
||
2898 | OP1 @ W@ 4501 XOR OR 0= |
||
2899 | IF M\ 118 DTST |
||
2900 | OP2 OPexcise |
||
2901 | 29 OP1 @ C! |
||
2902 | FALSE |
||
2903 | EXIT M\ 119 DTST |
||
2904 | THEN |
||
2905 | |||
2906 | \ $ - - |
||
2907 | OP2 @ @ 4503D8F7 XOR \ NEG EAX ADD EAX, X [EBP] |
||
2908 | OP0 @ W@ D8F7 XOR OR 0= \ NEG EAX |
||
2909 | IF M\ 20 DTST |
||
2910 | OP1 @ @ 452B OR OP2 @ ! \ SUB EAX, X [EBP] |
||
2911 | OP2 ToOP0 |
||
2912 | -4 ALLOT |
||
2913 | FALSE M\ 21 DTST |
||
2914 | EXIT |
||
2915 | THEN |
||
2916 | M\ PPPP |
||
2917 | OP0 @ W@ ADD|XOR|OR|AND= \ $ 4444 OR |
||
2918 | IF |
||
2919 | OP2 @ W@ 4589 XOR \ MOV X1 [EBP], EAX |
||
2920 | OP2 @ 2+ C@ |
||
2921 | OP0 @ 2+ C@ XOR OR 0= |
||
2922 | IF |
||
2923 | OP1 @ W@ |
||
2924 | DUP 0878B = \ MOV EAX, X [EDI] |
||
2925 | IF DROP M\ 22 DTST |
||
2926 | OP0 @ C@ 8700 + OP2 @ W! |
||
2927 | OP1 @ 2+ @ OP2 @ 2+ ! |
||
2928 | OP2 ToOP0 |
||
2929 | FALSE -6 ALLOT M\ 23 DTST |
||
2930 | EXIT |
||
2931 | THEN |
||
2932 | \ MOV X1 [EBP], EAX |
||
2933 | DUP 0458B = \ MOV EAX , X [EBP] |
||
2934 | \ ADD|XOR|OR|AND= |
||
2935 | IF DROP M\ 122 DTST |
||
2936 | OP0 @ C@ 4500 + OP1 @ W! |
||
2937 | OP1 ToOP0 |
||
2938 | FALSE -3 ALLOT M\ 123 DTST |
||
2939 | EXIT |
||
2940 | THEN |
||
2941 | FF AND |
||
2942 | \ MOV X1 [EBP], EAX |
||
2943 | DUP 0B8 = \ MOV EAX, # X |
||
2944 | \ ADD|XOR|OR|AND= |
||
2945 | IF DROP M\ 24 DTST |
||
2946 | OP0 @ C@ 2+ OP1 @ C! |
||
2947 | OP1 ToOP0 |
||
2948 | FALSE -3 ALLOT M\ 25 DTST |
||
2949 | EXIT |
||
2950 | THEN |
||
2951 | |||
2952 | \ MOV X1 [EBP], EAX |
||
2953 | DUP 0A1 = \ MOV EAX, X |
||
2954 | \ ADD|XOR|OR|AND= |
||
2955 | IF DROP M\ 26 DTST |
||
2956 | OP0 @ C@ 500 + |
||
2957 | OP1 @ 1+ @ OP1 @ 2+ ! |
||
2958 | OP1 @ W! |
||
2959 | OP1 ToOP0 |
||
2960 | FALSE -2 ALLOT M\ 27 DTST |
||
2961 | EXIT |
||
2962 | THEN |
||
2963 | DROP |
||
2964 | THEN |
||
2965 | OP2 @ W@ 45C7 XOR \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR |
||
2966 | OP1 @ C@ B8 XOR OR 0= \ MOV EAX , # 4 |
||
2967 | \ ADD|XOR|OR|AND= |
||
2968 | IF M\ 124 DTST |
||
2969 | OP2 @ 3 + @ OP1 @ 1+ @ |
||
2970 | C300 OP0 @ 2+ ! OP0 @ EXECUTE |
||
2971 | OP1 @ 1+ ! DROP |
||
2972 | OP1 ToOP0 |
||
2973 | FALSE -3 ALLOT M\ 125 DTST |
||
2974 | EXIT |
||
2975 | THEN |
||
2976 | OP1 @ W@ 4D89 XOR \ MOV F4 [EBP] , ECX |
||
2977 | OP1 @ 2+ C@ |
||
2978 | OP0 @ 2+ C@ XOR OR 0= \ ADD|XOR|OR|AND= |
||
2979 | IF M\ 12 DTST |
||
2980 | C1 OP0 @ 1+ C! \ XOR EAX , ECX |
||
2981 | FALSE -1 ALLOT M\ 13 DTST |
||
2982 | EXIT |
||
2983 | THEN |
||
2984 | |||
2985 | \ ADD|XOR|OR|AND= |
||
2986 | OP0 @ 2+ C@ OP1 -EBPLIT NIP |
||
2987 | DUP @ W@ 45C7 = \ MOV F8 [EBP] , # 2710 |
||
2988 | OVER @ 2+ C@ OP0 @ 2+ C@ = AND |
||
2989 | IF OP0 @ W@ 4503 = \ ADD EAX , F8 [EBP] |
||
2990 | IF M\ 46 DTST |
||
2991 | @ 3 + @ OFF-EAX + TO OFF-EAX |
||
2992 | OP1 ToOP0 |
||
2993 | FALSE -3 ALLOT M\ 47 DTST |
||
2994 | EXIT |
||
2995 | THEN |
||
2996 | THEN |
||
2997 | DROP |
||
2998 | |||
2999 | OP0 @ 2+ C@ |
||
3000 | OP1 @ 2+ C@ XOR |
||
3001 | OP1 @ W@ 45C7 XOR OR \ 599B95 C745F401000000 MOV F4 [EBP] , # 1 |
||
3002 | \ ADD|XOR|OR|AND= |
||
3003 | 0= IF M\ 8C DTST |
||
3004 | OP0 @ C@ 2+ OP0 @ C! |
||
3005 | 2 ALLOT |
||
3006 | OP1 @ 3 + @ OP0 @ 1+ ! |
||
3007 | FALSE M\ 8D DTST |
||
3008 | EXIT |
||
3009 | THEN |
||
3010 | |||
3011 | THEN |
||
3012 | M\ PPPP |
||
3013 | |||
3014 | \ OP0 @ W@ 4D8B = |
||
3015 | OP0 @ W@ 558B = \ MOV EDX , X [EBP] |
||
3016 | IF \ OP-1 MOV EAX , FC [EBP] |
||
3017 | OP0 @ 2+ C@ OP1 -EBPLIT NIP |
||
3018 | DUP @ W@ 45C7 = \ MOV F8 [EBP] , # 2710 |
||
3019 | OVER @ 2+ C@ OP0 @ 2+ C@ = AND |
||
3020 | IF M\ 50 DTST |
||
3021 | -2 ALLOT |
||
3022 | BA OP0 @ C! |
||
3023 | @ 3 + @ , |
||
3024 | FALSE M\ 51 DTST |
||
3025 | EXIT |
||
3026 | THEN |
||
3027 | DROP |
||
3028 | THEN |
||
3029 | |||
3030 | OP0 @ W@ 4539 = \ CMP X [EBP] , EAX |
||
3031 | IF |
||
3032 | OP1 @ W@ 5589 XOR \ MOV X [EBP] , EDX |
||
3033 | OP1 @ 2+ C@ |
||
3034 | OP0 @ 2+ C@ XOR OR 0= \ |
||
3035 | IF M\ 128 DTST |
||
3036 | D03B OP0 @ W! |
||
3037 | FALSE -1 ALLOT M\ 129 DTST |
||
3038 | EXIT |
||
3039 | THEN |
||
3040 | |||
3041 | OP1 @ C@ 0B8 XOR \ MOV EAX, # X |
||
3042 | OP2 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX |
||
3043 | OP2 @ 2+ C@ |
||
3044 | OP0 @ 2+ C@ XOR OR 0= |
||
3045 | IF M\ 28 DTST |
||
3046 | 3D OP2 @ C! |
||
3047 | OP1 @ 1+ @ OP2 @ 1+ ! |
||
3048 | OP2 ToOP0 |
||
3049 | FALSE -6 ALLOT M\ 29 DTST |
||
3050 | EXIT |
||
3051 | THEN |
||
3052 | \ $ 4444 @ U< |
||
3053 | OP1 @ C@ 0A1 XOR \ MOV EAX, # X |
||
3054 | OP2 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX |
||
3055 | OP2 @ 2+ C@ |
||
3056 | OP0 @ 2+ C@ XOR OR 0= |
||
3057 | IF M\ 2A DTST |
||
3058 | 053B OP2 @ W! |
||
3059 | OP1 @ 1+ @ OP2 @ 2+ ! |
||
3060 | OP2 ToOP0 |
||
3061 | FALSE -5 ALLOT M\ 2B DTST |
||
3062 | EXIT |
||
3063 | THEN |
||
3064 | |||
3065 | THEN |
||
3066 | DUP W@ 458B XOR \ MOV EAX , FC [EBP] |
||
3067 | OP0 @ W@ 1089 XOR OR \ MOV [EAX] , EDX |
||
3068 | OP1 @ W@ 558B XOR OR 0= \ MOV EDX , X [EBP] \ !? |
||
3069 | IF \ OP-1 MOV EAX , FC [EBP] |
||
3070 | OP2 @ W@ 408D = \ LEA EAX , 4 [EAX] \ $ CELL+ ! |
||
3071 | IF M\ 430 DTST |
||
3072 | OP2 @ 2+ C@ |
||
3073 | OP2 OPexcise |
||
3074 | 5089 OP0 @ W! C, |
||
3075 | FALSE M\ 431 DTST |
||
3076 | EXIT |
||
3077 | THEN |
||
3078 | |||
3079 | OP3 @ :-SET U< IF TRUE EXIT THEN |
||
3080 | \ $ 44444 ! |
||
3081 | OP3 @ 2+ C@ |
||
3082 | OP1 @ 2+ C@ = |
||
3083 | IF OP3 @ W@ 4589 = \ MOV X [EBP] , EAX |
||
3084 | IF OP2 @ C@ B8 = \ MOV EAX, X |
||
3085 | IF M\ 30 DTST |
||
3086 | A3 OP3 @ C! |
||
3087 | OP2 @ 1+ @ OP3 @ 1+ ! |
||
3088 | OP3 ToOP0 |
||
3089 | FALSE -8 ALLOT M\ 31 DTST |
||
3090 | EXIT |
||
3091 | THEN |
||
3092 | OP2 @ W@ 878D = \ LEA EAX, X [EDI] |
||
3093 | IF M\ 230 DTST \ ??? |
||
3094 | OP3 OPexcise |
||
3095 | 8789 OP2 @ W! \ MOV X [EDI] , EAX |
||
3096 | OP2 ToOP0 |
||
3097 | FALSE -5 ALLOT M\ 231 DTST |
||
3098 | EXIT |
||
3099 | THEN |
||
3100 | THEN |
||
3101 | OP3 @ W@ 45C7 = \ MOV X [EBP] , # 44444 |
||
3102 | IF OP2 @ C@ B8 = \ TTTT AND \ MOV EAX, X |
||
3103 | IF M\ 130 DTST |
||
3104 | -4000 OP3 @ +! |
||
3105 | OP3 @ 3 + @ OP2 @ 1+ @ OP3 @ 2+ ! |
||
3106 | OP3 @ 6 + ! |
||
3107 | |||
3108 | OP3 ToOP0 |
||
3109 | FALSE -7 ALLOT M\ 131 DTST |
||
3110 | EXIT |
||
3111 | THEN |
||
3112 | |||
3113 | OP2 @ W@ 878D = \ LEA EAX, X [EDI] |
||
3114 | IF M\ 330 DTST \ ??? |
||
3115 | 87C7 OP3 @ W! |
||
3116 | OP3 @ 3 + @ OP2 @ 2+ @ OP3 @ 2+ ! |
||
3117 | OP3 @ 6 + ! |
||
3118 | |||
3119 | OP3 ToOP0 |
||
3120 | FALSE -8 ALLOT M\ 331 DTST |
||
3121 | EXIT |
||
3122 | THEN |
||
3123 | THEN |
||
3124 | THEN |
||
3125 | THEN |
||
3126 | |||
3127 | M\ PPPP |
||
3128 | OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX |
||
3129 | OP1 @ @ FFFFFF AND 85048D XOR OR \ LEA EAX , Y [EAX*X] грубо |
||
3130 | OP0 @ W@ 4503 XOR OR |
||
3131 | OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= \ X2=X0 |
||
3132 | IF M\ 318 DTST |
||
3133 | 048D OP0 @ W! 2 OP0 @ 2+ C! |
||
3134 | FALSE |
||
3135 | EXIT M\ 319 DTST |
||
3136 | THEN |
||
3137 | |||
3138 | OP2 @ W@ 04D89 XOR \ MOV X [EBP] , ECX |
||
3139 | OP1 @ ?ChEAX \ MOV EAX , ____ |
||
3140 | OP1 @ W@ 5589 <> AND OR \ MOV FC [EBP] , EDX |
||
3141 | OP0 @ W@ 558B XOR OR \ MOV EDX , X [EBP] |
||
3142 | OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= |
||
3143 | IF M\ 630 DTST |
||
3144 | D1 OP0 @ 1+ C! |
||
3145 | FALSE -1 ALLOT M\ 631 DTST |
||
3146 | EXIT |
||
3147 | THEN |
||
3148 | OP1 @ @ 008BC28B = \ MOV EAX , EDX MOV EAX , [EAX] |
||
3149 | IF M\ 730 DTST |
||
3150 | 028B OP1 @ W! |
||
3151 | OP1 ToOP0 |
||
3152 | FALSE -2 ALLOT M\ 731 DTST |
||
3153 | EXIT |
||
3154 | THEN |
||
3155 | |||
3156 | DUP C@ C3 = |
||
3157 | IF |
||
3158 | OP1 @ W@ D18B XOR \ MOV EDX , ECX |
||
3159 | OP0 @ W@ 1089 XOR OR 0= \ MOV [EAX] , EDX |
||
3160 | IF M\ 30E DTST |
||
3161 | 0889 OP1 @ W! |
||
3162 | OP1 ToOP0 |
||
3163 | FALSE |
||
3164 | -2 ALLOT M\ 40F DTST |
||
3165 | EXIT |
||
3166 | THEN |
||
3167 | THEN |
||
3168 | M\ PPPP |
||
3169 | |||
3170 | DUP C@ 0C3 XOR |
||
3171 | OP1 @ C@ B8 XOR OR \ MOV EAX , # 400 |
||
3172 | OP0 @ W@ 6DF7 XOR OR \ IMUL F8 [EBP] |
||
3173 | OP2 @ 2+ C@ |
||
3174 | OP0 @ 2+ C@ XOR OR |
||
3175 | 0= IF |
||
3176 | OP2 @ W@ 45C7 = \ MOV F8 [EBP] , # C8 |
||
3177 | IF M\ E30 DTST |
||
3178 | OP2 @ 3 + @ |
||
3179 | OP1 @ 1+ @ * OP1 @ 1+ ! |
||
3180 | OP1 ToOP0 |
||
3181 | FALSE -3 ALLOT M\ E31 DTST |
||
3182 | EXIT |
||
3183 | THEN |
||
3184 | |||
3185 | OP2 @ W@ 4589 = \ MOV F8 [EBP] , EAX |
||
3186 | IF M\ D0E DTST |
||
3187 | OP1 @ 1+ @ |
||
3188 | OP1 OPexcise |
||
3189 | -3 ALLOT |
||
3190 | 69 C, C0 C, , \ IMUL EAX,EAX,44444H |
||
3191 | FALSE M\ D0F DTST |
||
3192 | EXIT |
||
3193 | THEN |
||
3194 | THEN |
||
3195 | |||
3196 | DUP C@ 0C3 XOR |
||
3197 | OP1 @ C@ A1 XOR OR \ MOV EAX , 569598 ( X+5 ) |
||
3198 | OP0 @ W@ 6DF7 XOR OR \ IMUL FC [EBP] |
||
3199 | OP2 @ 2+ C@ |
||
3200 | OP0 @ 2+ C@ XOR OR |
||
3201 | \ OP0 @ 2+ C@ C>S OFF-EBP > OR |
||
3202 | 0= IF |
||
3203 | OP2 @ W@ 4589 = \ MOV FC [EBP] , EAX |
||
3204 | IF M\ 12A DTST |
||
3205 | 2DF7 OP2 @ W! |
||
3206 | OP1 @ 1+ @ OP2 @ 2+ ! |
||
3207 | OP2 ToOP0 |
||
3208 | FALSE -5 ALLOT M\ 12B DTST |
||
3209 | EXIT |
||
3210 | THEN |
||
3211 | |||
3212 | OP2 @ W@ 45C7 = \ MOV F8 [EBP] , # 123 |
||
3213 | IF M\ 22A DTST |
||
3214 | B8 OP2 @ C! |
||
3215 | OP2 @ 3 + @ OP2 @ 1+ ! |
||
3216 | -2 OP1 +! |
||
3217 | 2DF7 OP1 @ W! |
||
3218 | OP1 @ 3 + @ OP1 @ 2+ ! |
||
3219 | OP1 ToOP0 |
||
3220 | FALSE -4 ALLOT M\ 22B DTST |
||
3221 | EXIT |
||
3222 | THEN |
||
3223 | THEN |
||
3224 | |||
3225 | OP2 @ W@ 4589 XOR \ MOV FC [EBP] , EAX |
||
3226 | OP1 @ @ 4503008B XOR OR \ MOV EAX , [EAX] ADD EAX , FC [EBP] |
||
3227 | OP2 @ 2+ C@ |
||
3228 | OP0 @ 2+ C@ XOR OR |
||
3229 | 0= IF M\ 830 DTST |
||
3230 | 03 OP1 @ C! |
||
3231 | OP1 ToOP0 |
||
3232 | FALSE -3 ALLOT M\ 831 DTST |
||
3233 | EXIT |
||
3234 | THEN |
||
3235 | M\ PPPP |
||
3236 | |||
3237 | DUP C@ 0C3 XOR |
||
3238 | OP2 @ W@ 558B XOR OR \ MOV EDX , 0 [EBP] |
||
3239 | OP1 @ W@ CA8B XOR OR \ MOV ECX , EDX |
||
3240 | OP0 @ C@ 51 XOR OR \ PUSH ECX |
||
3241 | 0= IF M\ A30 DTST |
||
3242 | 75FF OP2 @ W! |
||
3243 | OP2 ToOP0 |
||
3244 | FALSE -3 ALLOT M\ A31 DTST |
||
3245 | EXIT |
||
3246 | THEN |
||
3247 | |||
3248 | OP2 @ W@ 4589 XOR \ MOV 0 [EBP] , EAX |
||
3249 | OP1 @ @ FFBFFF AND 24048B XOR OR \ MOV EAX , [ESP(+4)] |
||
3250 | OP0 @ W@ 4503 XOR OR \ ADD EAX , 0 [EBP] |
||
3251 | OP2 @ 2+ C@ |
||
3252 | OP0 @ 2+ C@ XOR OR |
||
3253 | 0= IF M\ B30 DTST |
||
3254 | 03 OP1 @ C! |
||
3255 | OP1 ToOP0 |
||
3256 | FALSE -3 ALLOT M\ C31 DTST |
||
3257 | EXIT |
||
3258 | THEN |
||
3259 | OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX |
||
3260 | OP1 @ ?ChEAX OR \ MOV EAX , [EAX] |
||
3261 | OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP] |
||
3262 | OP2 @ 2+ C@ |
||
3263 | OP0 @ 2+ C@ XOR OR |
||
3264 | 0= IF M\ C30 DTST |
||
3265 | OP1 ToOP0 |
||
3266 | FALSE -3 ALLOT M\ C31 DTST |
||
3267 | EXIT |
||
3268 | THEN |
||
3269 | |||
3270 | OP2 @ 2+ C@ |
||
3271 | OP0 @ 2+ C@ XOR |
||
3272 | OP2 @ W@ 4589 XOR OR \ 579DE0 8945FC MOV FC [EBP] , EAX |
||
3273 | OP1 @ C@ 25 XOR OR \ 579DE3 2555555555 AND EAX , # 55555555 |
||
3274 | OP0 @ W@ 558B XOR OR \ 579DE8 8B55FC MOV EDX , FC [EBP] |
||
3275 | 0= IF M\ C32 DTST |
||
3276 | OP2 OPexcise |
||
3277 | OP1 02 OPinsert |
||
3278 | D08B OP2 @ W! \ MOV EDX , EAX |
||
3279 | OP1 ToOP0 |
||
3280 | FALSE -3 ALLOT M\ C33 DTST |
||
3281 | EXIT |
||
3282 | THEN |
||
3283 | |||
3284 | M\ PPPP |
||
3285 | OP0 @ W@ ADD|XOR|OR|AND= |
||
3286 | IF |
||
3287 | TRUE ?~EAX ! |
||
3288 | OP1 |
||
3289 | BEGIN ?EAX>ECX |
||
3290 | UNTIL |
||
3291 | \ DUP IF ?~EAX @ IF 2DROP FALSE THEN |
||
3292 | \ THEN |
||
3293 | IF M\ AE DTST |
||
3294 | ?~EAX @ |
||
3295 | IF ECX:=EAX |
||
3296 | ELSE BEGIN EAX>ECX0 UNTIL |
||
3297 | THEN BEGIN EAX>ECX UNTIL |
||
3298 | DROP |
||
3299 | OP0 @ W@ 4503 = \ TTTT AND \ ADD EAX , X [EBP] |
||
3300 | IF 01048D OP0 @ ! ELSE \ LEA EAX, [EAX+ECX] |
||
3301 | 0C1 OP0 @ 1+ C! -1 ALLOT \ OR EAX,ECX |
||
3302 | THEN FALSE M\ AF DTST |
||
3303 | EXIT |
||
3304 | THEN M\ PPPP |
||
3305 | |||
3306 | TRUE ?~EAX ! |
||
3307 | OP1 \ TTTT IF ." ?EAX>EBX" THEN |
||
3308 | BEGIN ?EAX>EBX \ TTTT IF ." F=" DUP . THEN |
||
3309 | UNTIL |
||
3310 | \ DUP IF ?~EAX @ IF 2DROP FALSE THEN |
||
3311 | \ THEN |
||
3312 | IF M\ AE DTST |
||
3313 | ?~EAX @ \ ." {#}" |
||
3314 | IF EBX:=EAX |
||
3315 | ELSE BEGIN EAX>EBX0 UNTIL |
||
3316 | THEN BEGIN EAX>EBX UNTIL |
||
3317 | DROP |
||
3318 | OP0 @ W@ 4503 = \ TTTT AND \ ADD EAX , X [EBP] |
||
3319 | IF 03048D OP0 @ ! ELSE \ LEA EAX, [EAX+EBX] |
||
3320 | OP0 @ W@ 4539 = \ CMP F8 [EBP] , EAX |
||
3321 | IF C33B OP0 @ W! -1 ALLOT ELSE \ CMP EAX , EBX |
||
3322 | OP0 @ W@ 453B = \ CMP EAX , F8 [EBP] |
||
3323 | IF D83B OP0 @ W! -1 ALLOT ELSE \ CMP EBX , EAX |
||
3324 | 0C3 OP0 @ 1+ C! -1 ALLOT \ OR EAX,EBX |
||
3325 | THEN THEN THEN FALSE M\ AF DTST |
||
3326 | EXIT |
||
3327 | THEN M\ PPPP |
||
3328 | |||
3329 | |||
3330 | OP1 @ @ 4503D8F7 = \ NEG EAX \ ADD EAX , 4 [EBP] |
||
3331 | IF OP2 @ W@ 458B = \ MOV EAX , X [EBP] |
||
3332 | IF M\ D0E DTST |
||
3333 | OP1 OPexcise |
||
3334 | OP1 @ 2+ C@ OP0 @ 2+ C@ |
||
3335 | OP1 @ 2+ C! OP0 @ 2+ C! |
||
3336 | 2B OP0 @ C! |
||
3337 | FALSE M\ D0F DTST |
||
3338 | EXIT |
||
3339 | THEN |
||
3340 | OP2 @ C@ A1 = \ MOV EAX , X |
||
3341 | IF M\ D0E DTST |
||
3342 | OP2 @ 1+ @ |
||
3343 | OP2 OPexcise |
||
3344 | OP1 OPexcise |
||
3345 | 8B OP0 @ C! |
||
3346 | SetOP 2B C, 5 C, , |
||
3347 | FALSE M\ D0F DTST |
||
3348 | EXIT |
||
3349 | THEN |
||
3350 | THEN |
||
3351 | THEN |
||
3352 | M\ PPPP |
||
3353 | |||
3354 | OP2 @ W@ FFFD AND 4589 XOR \ MOV F8 [EBP] , EAX |
||
3355 | OP1 @ W@ FFFD AND 4589 XOR OR \ MOV EAX , F8 [EBP] |
||
3356 | OP2 @ 2+ C@ |
||
3357 | OP1 @ 2+ C@ XOR OR |
||
3358 | 0= IF M\ E30 DTST |
||
3359 | OP1 OPexcise |
||
3360 | FALSE M\ E31 DTST |
||
3361 | EXIT |
||
3362 | THEN |
||
3363 | |||
3364 | OP2 @ @ 458BC28B = \ MOV EAX , EDX MOV EAX , 0 [EBP] |
||
3365 | IF M\ 44 DTST |
||
3366 | OP2 OPexcise |
||
3367 | FALSE M\ 45 DTST |
||
3368 | EXIT |
||
3369 | THEN |
||
3370 | DUP C@ 0C3 XOR |
||
3371 | OP1 @ C@ B9 - FE AND OR \ MOV EDX , # 1000 MOV ECX , # 1000 |
||
3372 | OP0 @ W@ 1189 XOR OR \ MOV [ECX] , EDX |
||
3373 | 0= IF M\ 54 DTST |
||
3374 | OP1 @ C@ BA = |
||
3375 | IF 01C7 \ MOV [ECX] , # 1000 |
||
3376 | ELSE 1589 \ MOV 1000 , [EDX] |
||
3377 | THEN |
||
3378 | OP1 1 OPresize |
||
3379 | OP1 @ W! |
||
3380 | OP0 OPexcise |
||
3381 | FALSE M\ 55 DTST |
||
3382 | EXIT |
||
3383 | THEN |
||
3384 | |||
3385 | DUP C@ C3 XOR |
||
3386 | OP1 @ C@ B9 XOR OR \ MOV ECX , # 1000 |
||
3387 | OP0 @ W@ 4D89 XOR OR \ MOV X [EBP] , ECX |
||
3388 | 0= IF M\ 58 DTST |
||
3389 | OP1 @ 1+ @ |
||
3390 | OP1 OPexcise |
||
3391 | 45C7 OP0 @ W! , \ MOV FC [EBP] , # 1000 |
||
3392 | FALSE M\ 59 DTST |
||
3393 | EXIT |
||
3394 | THEN |
||
3395 | |||
3396 | DUP C@ 0C3 XOR |
||
3397 | OP1 @ @ FFFFFF AND 8D0C8D XOR OR \ LEA ECX , 5898B8 ( rson+5 ) [ECX*4] |
||
3398 | OP0 @ W@ 01C7 XOR OR \ MOV [ECX] , # 1000 |
||
3399 | 0= IF M\ 56 DTST |
||
3400 | 04C7 OP1 @ W! \ MOV X [ECX*4] , # 1000 |
||
3401 | OP0 @ 2+ @ |
||
3402 | OP0 OPexcise , |
||
3403 | FALSE M\ 57 DTST |
||
3404 | EXIT |
||
3405 | EXIT |
||
3406 | THEN |
||
3407 | DUP C@ 0C3 XOR |
||
3408 | OP1 @ W@ C18B XOR OR \ MOV EAX , ECX |
||
3409 | OP0 @ @ FFFFFF AND 85048D XOR OR \ LEA EAX , X [EAX*4] |
||
3410 | 0= IF M\ 5A DTST |
||
3411 | OP1 OPexcise |
||
3412 | 8D OP0 @ 2+ C! \ LEA EAX , X [ECX*4] |
||
3413 | FALSE M\ 5B DTST |
||
3414 | EXIT |
||
3415 | EXIT |
||
3416 | THEN |
||
3417 | |||
3418 | OP2 @ 2+ C@ |
||
3419 | OP0 @ 2+ C@ XOR |
||
3420 | OP2 @ W@ 4589 XOR OR \ MOV F8 [EBP] , EAX |
||
3421 | OP1 @ @ FFFFFF AND 8D048D XOR \ LEA EAX , X [ECX*4] |
||
3422 | OP1 @ C@ B8 <> AND OR \ B801000000 MOV EAX , # 1 |
||
3423 | OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP] |
||
3424 | 0= IF M\ 5C DTST |
||
3425 | OP1 2 OPinsert |
||
3426 | D08B OP2 @ W! \ MOV EDX , EAX |
||
3427 | OP0 OPexcise |
||
3428 | FALSE M\ 5D DTST |
||
3429 | EXIT |
||
3430 | EXIT |
||
3431 | THEN |
||
3432 | |||
3433 | OP0 @ 2+ C@ |
||
3434 | OP2 @ 2+ C@ XOR |
||
3435 | OP2 @ W@ 4589 XOR OR \ MOV F8 [EBP] , EAX |
||
3436 | OP1 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 18 [ESP] |
||
3437 | OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP] |
||
3438 | 0= IF M\ 9C DTST |
||
3439 | OP1 2 OPinsert |
||
3440 | D08B OP2 @ W! \ MOV EDX , EAX |
||
3441 | OP0 OPexcise |
||
3442 | FALSE M\ 9D DTST |
||
3443 | EXIT |
||
3444 | THEN |
||
3445 | |||
3446 | DUP C@ 0C3 XOR |
||
3447 | OP2 @ @ D9F7CA8B XOR OR \ MOV ECX , EDX NEG ECX |
||
3448 | OP0 @ 1- @ 01048DD9 XOR OR \ LEA EAX , [ECX] [EAX] |
||
3449 | 0= IF M\ 66 DTST |
||
3450 | OP2 OPexcise |
||
3451 | 02048DDA OP1 @ 1+ ! \ NEG EDX lea EAX, [EAX+EDX] |
||
3452 | FALSE M\ 67 DTST |
||
3453 | EXIT |
||
3454 | THEN |
||
3455 | |||
3456 | OP2 @ @ 45C7D08B XOR \ MOV EDX , EAX MOV F8 [EBP] , # X |
||
3457 | OP0 @ C@ BA XOR OR \ MOV EDX , # 0 |
||
3458 | 0= IF M\ 6A DTST |
||
3459 | OP2 OPexcise |
||
3460 | FALSE M\ 6B DTST |
||
3461 | EXIT |
||
3462 | THEN |
||
3463 | |||
3464 | DUP C@ 0C3 XOR |
||
3465 | OP2 @ C@ BA XOR OR \ MOV EDX , # 4 |
||
3466 | OP1 @ W@ 5501 XOR OR \ ADD 0 [EBP] , EDX |
||
3467 | OP0 @ W@ 4513 XOR OR \ ADC EAX , FC [EBP] |
||
3468 | 0= IF M\ 82 DTST |
||
3469 | OP0 4 OPresize 4 OP0 +! |
||
3470 | OP2 @ 1+ @ OP2 OPexcise |
||
3471 | OP1 @ 3 + ! 4581 OP1 @ W! \ ADD 0 [EBP] , # 4 |
||
3472 | FALSE M\ 83 DTST |
||
3473 | EXIT |
||
3474 | THEN |
||
3475 | |||
3476 | OP2 @ 3 + C@ |
||
3477 | OP0 @ 3 + C@ XOR |
||
3478 | OP2 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 30 [ESP] |
||
3479 | OP0 @ @ FFFFFF AND 244489 XOR OR \ MOV 30 [ESP] , EAX |
||
3480 | 0= IF OP1 @ @ 8901408D = \ 8D4001 LEA EAX , 1 [EAX] |
||
3481 | IF M\ 88 DTST |
||
3482 | OP1 OPexcise |
||
3483 | FF OP0 @ C! |
||
3484 | FALSE M\ 89 DTST |
||
3485 | EXIT |
||
3486 | THEN |
||
3487 | OP1 @ @ 89FF408D = \ 8D4001 LEA EAX , -1 [EAX] |
||
3488 | IF M\ 94 DTST |
||
3489 | OP1 OPexcise |
||
3490 | 4CFF OP0 @ W! |
||
3491 | FALSE M\ 95 DTST |
||
3492 | EXIT |
||
3493 | THEN |
||
3494 | THEN |
||
3495 | |||
3496 | DUP C@ C3 XOR |
||
3497 | OP2 @ W@ 408D XOR OR \ LEA EAX , 1 [EAX] |
||
3498 | OP1 @ @ FFFFFF AND 244403 XOR OR \ ADD EAX , 8 [ESP] |
||
3499 | OP0 @ @ FFFFFF AND B60F XOR OR \ MOVZX EAX , BYTE PTR [EAX] |
||
3500 | 0= IF M\ 9E DTST |
||
3501 | OP2 @ 2+ C@ OP2 OPexcise |
||
3502 | 548B OP1 @ W! \ MOV EDX , 8 [ESP] |
||
3503 | -3 ALLOT |
||
3504 | 0244B60F , C, \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX] |
||
3505 | FALSE M\ 9F DTST |
||
3506 | EXIT |
||
3507 | THEN |
||
3508 | |||
3509 | OP2 @ 2+ C@ |
||
3510 | OP0 @ 2+ C@ XOR |
||
3511 | OP2 @ W@ 5589 XOR OR \ 8955F8 MOV F8 [EBP] , EDX |
||
3512 | |||
3513 | OP1 @ W@ D8F7 XOR \ F7D8 NEG EAX |
||
3514 | OP1 @ W@ D0F7 <> AND \ F7D0 NOT EAX |
||
3515 | OP1 @ C@ 58 <> AND \ 58 POP EAX |
||
3516 | OP1 @ W@ C123 <> AND OR \ 23C1 AND EAX , ECX |
||
3517 | |||
3518 | OP0 @ W@ ADD|XOR|OR|AND= 0= |
||
3519 | OP0 @ W@ 458B <> AND OR |
||
3520 | \ OP0 @ W@ 4503 XOR OR \ 0345F8 ADD EAX , F8 [EBP] |
||
3521 | 0= IF M\ 1B6 DTST |
||
3522 | C2 OP0 @ 1+ C! \ ADD EAX , EDX |
||
3523 | -1 ALLOT |
||
3524 | FALSE M\ 1B7 DTST |
||
3525 | EXIT |
||
3526 | THEN |
||
3527 | |||
3528 | DUP C@ C3 XOR |
||
3529 | OP2 @ W@ 4D8B XOR OR \ 8B4D00 MOV ECX , 0 [EBP] |
||
3530 | OP1 @ @ 4D89C82B XOR OR \ 2BC8 SUB ECX , EAX |
||
3531 | \ 894D00 MOV 0 [EBP] , ECX |
||
3532 | 0= IF M\ B6 DTST |
||
3533 | |||
3534 | 4529 OP2 @ W! \ SUB 0 [EBP] , EAX |
||
3535 | OP2 ToOP0 |
||
3536 | -5 ALLOT |
||
3537 | FALSE M\ B7 DTST |
||
3538 | EXIT |
||
3539 | THEN |
||
3540 | |||
3541 | OP2 @ 2+ C@ |
||
3542 | OP0 @ 2+ C@ XOR |
||
3543 | OP2 @ W@ 458B XOR OR \ 58266F 8B4500 MOV EAX , 0 [EBP] |
||
3544 | OP1 @ W@ 558B XOR OR \ 582672 8B5504 MOV EDX , 4 [EBP] |
||
3545 | OP0 @ W@ 4589 XOR OR \ 582675 894500 MOV 0 [EBP] , EAX |
||
3546 | 0= IF M\ D2 DTST |
||
3547 | OP0 OPexcise |
||
3548 | FALSE M\ D3 DTST |
||
3549 | EXIT |
||
3550 | THEN |
||
3551 | |||
3552 | |||
3553 | OP2 @ W@ 458B XOR \ 8B4500 MOV EAX , 0 [EBP] |
||
3554 | OP1 @ W@ 5589 XOR OR \ 895500 MOV 0 [EBP] , EDX |
||
3555 | OP0 @ W@ C88B XOR OR \ 8BC8 MOV ECX , EAX |
||
3556 | 0= IF M\ F4 DTST |
||
3557 | 4D8B OP2 @ W! \ MOV ECX , 0 [EBP] |
||
3558 | C18B OP0 @ W! \ MOV EAX , ECX |
||
3559 | FALSE M\ F5 DTST |
||
3560 | EXIT |
||
3561 | THEN |
||
3562 | |||
3563 | OP2 @ C@ B8 XOR \ B801000000 MOV EAX , # 1 |
||
3564 | OP2 @ 1+ @ SHORT? 0= OR |
||
3565 | OP1 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP] |
||
3566 | OP0 @ W@ 48D XOR OR \ 8D0402 LEA EAX , [EDX] [EAX] |
||
3567 | 0= IF M\ FC DTST |
||
3568 | OP2 @ 1+ @ |
||
3569 | OP2 OPexcise |
||
3570 | 428D OP0 @ W! \ LEA EAX , 1 [EDX] |
||
3571 | OP0 @ 2+ C! |
||
3572 | FALSE M\ FD DTST |
||
3573 | EXIT |
||
3574 | THEN |
||
3575 | |||
3576 | OP2 @ W@ 558B XOR \ 5876BB 8B5500 MOV EDX , 0 [EBP] |
||
3577 | OP1 @ W@ 428D XOR OR \ 5876BE 8D4201 LEA EAX , 1 [EDX] |
||
3578 | OP0 @ W@ 4589 XOR OR \ 5876C1 894500 MOV 0 [EBP] , EAX |
||
3579 | 0= IF M\ FC DTST |
||
3580 | OP1 @ 2+ C@ |
||
3581 | OP1 OPexcise |
||
3582 | 4583 OP0 @ W! C, \ ADD EAX , 1 [EDX] |
||
3583 | FALSE M\ FD DTST |
||
3584 | EXIT |
||
3585 | THEN |
||
3586 | |||
3587 | OP2 @ 2+ C@ |
||
3588 | OP0 @ 2+ C@ XOR |
||
3589 | OP2 @ W@ 4589 XOR OR \ 8945EC MOV EC [EBP] , EAX |
||
3590 | |||
3591 | OP1 ?EDX_[EBP] OR |
||
3592 | |||
3593 | OP0 @ W@ 558B XOR OR \ 8B55EC MOV EDX , EC [EBP] |
||
3594 | 0= IF M\ 104 DTST |
||
3595 | OP0 OPexcise |
||
3596 | OP0 02 OPinsert |
||
3597 | D08B OP1 @ W! \ MOV EDX , EAX |
||
3598 | FALSE M\ 105 DTST |
||
3599 | EXIT |
||
3600 | THEN |
||
3601 | |||
3602 | OP2 @ W@ D08B XOR \ 5A5408 8BD0 MOV EDX , EAX |
||
3603 | |||
3604 | OP1 @ @ FFFFFF AND 95048D XOR \ 8D0495D8825900 LEA EAX , 5982D8 [EDX*4] |
||
3605 | OP1 @ @ FFFFFF AND 95048B <> AND OR \ 8B0495D8825900 MOV EAX , 5982D8 [EDX*4] |
||
3606 | |||
3607 | OP0 @ W@ 558B XOR OR \ 5A5411 8B55F8 MOV EDX , F8 [EBP] |
||
3608 | 0= IF M\ 138 DTST |
||
3609 | OP2 OPexcise |
||
3610 | 85 OP1 @ 2+ C! \ LEA EAX , 5982D8 [EAX*4] |
||
3611 | FALSE M\ 139 DTST |
||
3612 | EXIT |
||
3613 | THEN |
||
3614 | |||
3615 | DUP C@ C3 XOR |
||
3616 | OP2 @ @ E1C1CA8B XOR OR \ 8BCA MOV ECX , EDX |
||
3617 | \ C1E107 SHL ECX , 7 |
||
3618 | OP0 @ W@ C10B XOR OR \ 0BC1 OR EAX , ECX |
||
3619 | 0= IF M\ 108 DTST |
||
3620 | OP2 OPexcise |
||
3621 | E2C1 OP1 @ W! \ SHL EDX , 7 |
||
3622 | C20B OP0 @ W! \ OR EAX , EDX |
||
3623 | FALSE M\ 109 DTST |
||
3624 | EXIT |
||
3625 | THEN |
||
3626 | |||
3627 | OP2 @ @ 878DD08B XOR \ 8BD0 MOV EDX , EAX |
||
3628 | \ 8D873C100000 LEA EAX , 103C [EDI] |
||
3629 | OP0 @ W@ 1088 XOR OR \ 8810 MOV [EAX] , DL |
||
3630 | 0= IF M\ 110 DTST |
||
3631 | OP1 @ 2+ @ |
||
3632 | 9788 OP1 @ W! \ MOV 103C [EDI] , DL |
||
3633 | 878D OP0 @ W! \ LEA EAX , 103C [EDI] |
||
3634 | , |
||
3635 | FALSE M\ 111 DTST |
||
3636 | EXIT |
||
3637 | THEN |
||
3638 | |||
3639 | DUP C@ C3 XOR |
||
3640 | OP2 @ @ 5589D98B XOR OR \ 58809A 8BD9 MOV EBX , ECX |
||
3641 | \ 58809C 8955EC MOV EC [EBP] , EDX |
||
3642 | OP0 @ W@ C323 XOR OR \ 58809F 23C3 AND EAX , EBX |
||
3643 | 0= IF M\ 116 DTST |
||
3644 | OP2 OPexcise |
||
3645 | C123 OP0 @ W! \ AND EAX , ECX |
||
3646 | FALSE M\ 117 DTST |
||
3647 | EXIT |
||
3648 | THEN |
||
3649 | |||
3650 | |||
3651 | DUP C@ C3 XOR |
||
3652 | OP2 @ W@ 4D8B XOR OR \ 8B4DF0 MOV ECX , F0 [EBP] |
||
3653 | OP1 @ @ 23F05589 XOR OR \ 8955F0 MOV F0 [EBP] , EDX |
||
3654 | \ 23C1 AND EAX , ECX |
||
3655 | 0= IF M\ 11E DTST |
||
3656 | OP0 OPexcise |
||
3657 | 4523 OP1 @ W! \ AND EAX , F0 [EBP] |
||
3658 | FALSE M\ 11D DTST |
||
3659 | EXIT |
||
3660 | THEN |
||
3661 | |||
3662 | DUP C@ C3 XOR |
||
3663 | OP2 @ W@ 558B XOR OR \ 5881D2 8B55EC MOV EDX , EC [EBP] |
||
3664 | OP1 @ @ BF04523 XOR OR \ 5881D5 2345F0 AND EAX , F0 [EBP] |
||
3665 | OP0 @ W@ C20B XOR OR \ 5881D8 0BC2 OR EAX , EDX |
||
3666 | 0= IF M\ 120 DTST |
||
3667 | OP2 @ 2+ C@ |
||
3668 | OP2 OPexcise |
||
3669 | 450B OP0 @ W! \ OR EAX , EC [EBP] |
||
3670 | C, |
||
3671 | FALSE M\ 11D DTST |
||
3672 | EXIT |
||
3673 | THEN |
||
3674 | |||
3675 | OP2 @ 2+ C@ |
||
3676 | OP1 @ 2+ C@ XOR |
||
3677 | OP2 @ W@ 5589 XOR OR \ 8955F0 MOV F0 [EBP] , EDX |
||
3678 | OP1 @ W@ 4523 XOR OR \ 2345F0 AND EAX , F0 [EBP] |
||
3679 | 0= IF M\ 126 DTST |
||
3680 | OP1 OPexcise |
||
3681 | OP0 2 OPinsert |
||
3682 | C223 OP1 @ W! \ AND EAX , EDX |
||
3683 | FALSE M\ 127 DTST |
||
3684 | EXIT |
||
3685 | THEN |
||
3686 | |||
3687 | OP2 @ 2+ C@ |
||
3688 | OP1 @ 2+ C@ XOR |
||
3689 | OP2 @ W@ 4D89 XOR OR \ 894DFC MOV FC [EBP] , ECX |
||
3690 | OP1 @ W@ 4523 XOR OR \ 2345FC AND EAX , FC [EBP] |
||
3691 | 0= IF M\ 13E DTST |
||
3692 | OP1 OPexcise |
||
3693 | OP0 2 OPinsert |
||
3694 | C123 OP1 @ W! \ AND EAX , ECX |
||
3695 | FALSE M\ 13F DTST |
||
3696 | EXIT |
||
3697 | THEN |
||
3698 | |||
3699 | |||
3700 | DUP C@ C3 XOR |
||
3701 | OP2 @ 2+ C@ C>S OFF-EBP U< 0= OR |
||
3702 | OP2 @ W@ 558B XOR OR \ 58838C 8955F8 MOV EDX , F4 [EBP] |
||
3703 | OP1 @ @ C20BC123 XOR OR \ 58838F 23C1 AND EAX , ECX |
||
3704 | \ 588391 0BC2 OR EAX , EDX |
||
3705 | 0= IF M\ 12C DTST |
||
3706 | OP2 @ 2+ C@ |
||
3707 | OP2 OPexcise |
||
3708 | 450B OP0 @ W! \ OR EAX , F8 [EBP] |
||
3709 | C, |
||
3710 | FALSE M\ 12D DTST |
||
3711 | EXIT |
||
3712 | THEN |
||
3713 | |||
3714 | DUP C@ C3 XOR |
||
3715 | OP2 @ @ C123CA8B XOR OR \ 8BCA MOV ECX , EDX |
||
3716 | \ 23C1 AND EAX , ECX |
||
3717 | OP0 @ W@ 450B XOR OR \ 0B45F4 OR EAX , F4 [EBP] |
||
3718 | 0= IF M\ 1F2 DTST |
||
3719 | OP2 OPexcise |
||
3720 | C223 OP1 @ W! \ AND EAX , EDX |
||
3721 | FALSE M\ 1F3 DTST |
||
3722 | EXIT |
||
3723 | THEN |
||
3724 | |||
3725 | DUP C@ C3 XOR |
||
3726 | OP2 @ W@ 4D8B XOR OR \ 5884C1 8B4DF8 MOV ECX , F8 [EBP] |
||
3727 | OP1 @ @ C10BCA23 XOR OR \ 5884C4 23CA AND ECX , EDX |
||
3728 | OP0 @ W@ C10B XOR OR \ 5884C6 0BC1 OR EAX , ECX |
||
3729 | 0= IF M\ 1F4 DTST |
||
3730 | OP1 OPexcise |
||
3731 | 5523 OP1 @ W! \ AND EDX , F8 [EBP] |
||
3732 | C20B OP0 @ W! \ OR EAX , EDX |
||
3733 | FALSE M\ 1F5 DTST |
||
3734 | EXIT |
||
3735 | THEN |
||
3736 | |||
3737 | DUP C@ C3 XOR |
||
3738 | OP2 @ W@ 558B XOR OR \ 587860 8B5500 MOV EDX , 0 [EBP] |
||
3739 | OP1 @ W@ 528D XOR OR \ 587863 8D5201 LEA EDX , 1 [EDX] |
||
3740 | OP0 @ W@ 5589 XOR OR \ 587866 895500 MOV 0 [EBP] , EDX |
||
3741 | 0= IF M\ 144 DTST |
||
3742 | OP1 @ 2+ C@ |
||
3743 | OP2 OPexcise |
||
3744 | OP1 OPexcise |
||
3745 | 4583 OP0 @ W! \ ADD 0 [EBP] , # 1 |
||
3746 | C, |
||
3747 | FALSE M\ 145 DTST |
||
3748 | EXIT |
||
3749 | THEN |
||
3750 | |||
3751 | DUP C@ C3 XOR |
||
3752 | \ OP2 @ W@ 5589 XOR OR \ 8B5500 EDX , MOV 0 [EBP] |
||
3753 | OP2 @ W@ 558B XOR OR \ 8B5500 EDX , MOV 0 [EBP] |
||
3754 | OP1 @ W@ E0D3 XOR OR \ D3E0 SHL EAX , CL |
||
3755 | \ OP1 ?EDX_[EBP] OR \ D3E0 SHL EAX , CL |
||
3756 | OP0 @ W@ C20B XOR OR \ 0BC2 OR EAX , EDX |
||
3757 | 0= IF M\ 14A DTST |
||
3758 | OP2 @ 2+ C@ |
||
3759 | OP2 OPexcise |
||
3760 | 45 OP0 @ 1+ C! \ OR EAX , 0 [EBP] |
||
3761 | C, |
||
3762 | FALSE M\ 14B DTST |
||
3763 | EXIT |
||
3764 | THEN |
||
3765 | |||
3766 | OP2 @ 2+ C@ |
||
3767 | OP0 @ 2+ C@ XOR |
||
3768 | OP2 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX |
||
3769 | OP1 @ W@ 458B XOR OR \ 8B4500 MOV EAX , 0 [EBP] |
||
3770 | OP0 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP] |
||
3771 | 0= IF M\ 162 DTST |
||
3772 | OP1 ToOP0 -3 ALLOT |
||
3773 | OP0 2 OPinsert |
||
3774 | D08B OP1 @ W! |
||
3775 | FALSE M\ 163 DTST |
||
3776 | EXIT |
||
3777 | THEN |
||
3778 | |||
3779 | DUP C@ C3 XOR |
||
3780 | OP2 @ W@ 4D8B XOR OR \ 582055 8B4D04 MOV ECX , 4 [EBP] |
||
3781 | OP1 @ W@ 5589 XOR OR \ 582058 895504 MOV 4 [EBP] , EDX |
||
3782 | OP0 @ @ FFFFFF AND 1048D XOR OR \ 58205B 8D0401 LEA EAX , [ECX] [EAX] |
||
3783 | 0= IF M\ 168 DTST |
||
3784 | 4503 OP2 @ W! \ ADD EAX , 4 [EBP] |
||
3785 | OP0 OPexcise |
||
3786 | FALSE M\ 169 DTST |
||
3787 | EXIT |
||
3788 | THEN |
||
3789 | |||
3790 | DUP C@ C3 XOR |
||
3791 | OP2 @ W@ 558B XOR OR \ 582202 8B5500 MOV EDX , 0 [EBP] |
||
3792 | OP1 @ W@ 4503 XOR OR \ 582205 034504 ADD EAX , 4 [EBP] |
||
3793 | OP0 @ W@ C22B XOR OR \ 582208 2BC2 SUB EAX , EDX |
||
3794 | 0= IF M\ 170 DTST |
||
3795 | OP2 @ 2+ C@ |
||
3796 | OP2 OPexcise |
||
3797 | 452B OP0 @ W! C, \ SUB EAX , 0 [EBP] |
||
3798 | FALSE M\ 171 DTST |
||
3799 | EXIT |
||
3800 | THEN |
||
3801 | |||
3802 | DUP C@ C3 XOR |
||
3803 | OP2 @ 2+ C@ |
||
3804 | OP1 @ 2+ C@ = OR |
||
3805 | OP2 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP] |
||
3806 | OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX |
||
3807 | OP0 @ @ FFFFFF AND 2048D XOR OR \ 8D0402 LEA EAX , [EDX] [EAX] |
||
3808 | 0= IF M\ 158 DTST |
||
3809 | OP2 @ 2+ C@ |
||
3810 | OP2 OPexcise |
||
3811 | 4503 OP0 @ W! \ ADD EAX , 0 [EBP] |
||
3812 | OP0 @ 2+ C! |
||
3813 | FALSE M\ 159 DTST |
||
3814 | EXIT |
||
3815 | THEN |
||
3816 | |||
3817 | DUP C@ C3 XOR |
||
3818 | OP2 @ 2+ C@ |
||
3819 | OP0 @ 2+ C@ XOR OR |
||
3820 | OP2 @ 2+ C@ |
||
3821 | OP1 @ 2+ C@ = OR |
||
3822 | OP2 @ W@ 4589 XOR OR \ 571DD0 8945FC MOV FC [EBP] , EAX |
||
3823 | OP1 @ W@ 4503 XOR OR \ 571DD3 034500 ADD EAX , 0 [EBP] |
||
3824 | OP0 @ W@ 6DF7 XOR OR \ 571DD6 F76DFC IMUL FC [EBP] |
||
3825 | 0= IF M\ 160 DTST |
||
3826 | OP2 OPexcise |
||
3827 | OP1 2 OPinsert |
||
3828 | C88B OP2 @ W! \ MOV ECX , EAX |
||
3829 | E9F7 OP0 @ W! \ IMUL ECX |
||
3830 | FALSE -1 ALLOT M\ 161 DTST |
||
3831 | EXIT |
||
3832 | THEN |
||
3833 | DUP C@ C3 XOR |
||
3834 | OP2 @ 2+ C@ |
||
3835 | OP0 @ 2+ C@ XOR OR |
||
3836 | |||
3837 | OP2 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX |
||
3838 | OP1 @ W@ AF0F XOR OR \ 0FAFC2 IMUL EAX , EDX |
||
3839 | OP0 @ W@ 4503 XOR OR \ 034500 ADD EAX , 0 [EBP] |
||
3840 | |||
3841 | 0= IF M\ 248 DTST |
||
3842 | OP2 OPexcise |
||
3843 | OP1 2 OPinsert |
||
3844 | C88B OP2 @ W! \ MOV ECX , EAX |
||
3845 | C103 OP0 @ W! \ ADD EAX , ECX |
||
3846 | |||
3847 | FALSE -1 ALLOT M\ 141 DTST |
||
3848 | EXIT |
||
3849 | THEN |
||
3850 | |||
3851 | OP1 @ 2+ C@ |
||
3852 | OP0 @ 2+ C@ XOR |
||
3853 | OP2 @ W@ C28B XOR OR \ 571EED 8BC2 MOV EAX , EDX |
||
3854 | OP1 @ W@ 5589 XOR OR \ 571EEF 8955FC MOV FC [EBP] , EDX |
||
3855 | OP0 @ W@ 6DF7 XOR OR \ 571EF2 F76DFC IMUL FC [EBP] |
||
3856 | 0= IF M\ 182 DTST |
||
3857 | EAF7 OP0 @ W! \ IMUL EDX |
||
3858 | FALSE -1 ALLOT M\ 183 DTST |
||
3859 | EXIT |
||
3860 | THEN |
||
3861 | |||
3862 | ( !!!!!!!!!! |
||
3863 | DUP C@ C3 XOR |
||
3864 | OP1 @ @ EAF7C28B XOR OR \ 8BC2 MOV EAX , EDX |
||
3865 | \ F7EA IMUL EDX |
||
3866 | 0= IF M\ 184 DTST |
||
3867 | OP1 OPexcise |
||
3868 | C2AF0F OP0 @ ! \ IMUL EAX , EDX |
||
3869 | FALSE 1 ALLOT M\ 185 DTST |
||
3870 | EXIT |
||
3871 | THEN |
||
3872 | ) |
||
3873 | |||
3874 | |||
3875 | OP3 @ :-SET U< IF TRUE EXIT THEN |
||
3876 | M\ PPPP |
||
3877 | |||
3878 | OP3 @ @ D08BC28B = \ MOV EAX , EDX MOV EDX , EAX |
||
3879 | IF M\ 42 DTST |
||
3880 | OP2 OPexcise |
||
3881 | FALSE M\ 43 DTST |
||
3882 | EXIT |
||
3883 | THEN |
||
3884 | |||
3885 | OP1 @ W@ 453B = \ CMP EAX , X [EBP] |
||
3886 | IF OP0 @ @ FFFCFF AND C09C0F = \ SETLE AL |
||
3887 | IF |
||
3888 | \ $ 4444 < |
||
3889 | OP2 @ C@ 0B8 XOR \ MOV EAX, # X |
||
3890 | OP3 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX |
||
3891 | OP3 @ 2+ C@ |
||
3892 | OP1 @ 2+ C@ XOR OR 0= |
||
3893 | IF M\ 2C DTST |
||
3894 | 3D OP3 @ C! |
||
3895 | OP2 @ 1+ @ OP3 @ 1+ ! |
||
3896 | 2 OP2 +! |
||
3897 | OP0 @ @ 300 XOR OP2 @ ! \ SETGE AL |
||
3898 | OP2 ToOP0 |
||
3899 | FALSE -6 ALLOT M\ 2D DTST |
||
3900 | EXIT |
||
3901 | THEN |
||
3902 | \ $ 4444 @ < |
||
3903 | OP2 @ C@ 0A1 XOR \ MOV EAX, # X |
||
3904 | OP3 @ 2+ C@ |
||
3905 | OP1 @ 2+ C@ XOR OR 0= |
||
3906 | IF |
||
3907 | OP3 @ W@ 4589 = \ MOV X1 [EBP], EAX |
||
3908 | IF M\ 2E DTST |
||
3909 | 053B OP3 @ W! |
||
3910 | OP2 @ 1+ @ OP3 @ 2+ ! |
||
3911 | 3 OP2 +! |
||
3912 | OP0 @ @ 300 XOR OP2 @ ! \ SETGE AL |
||
3913 | OP2 ToOP0 |
||
3914 | FALSE -5 ALLOT M\ 2F DTST |
||
3915 | EXIT |
||
3916 | THEN |
||
3917 | |||
3918 | OP3 @ W@ 45C7 = \ |
||
3919 | IF M\ 12E DTST |
||
3920 | 3D81 OP3 @ W! |
||
3921 | OP3 @ 3 + @ |
||
3922 | OP2 @ 1+ @ OP3 @ 2+ ! OP3 @ 6 + ! |
||
3923 | 3 OP2 +! |
||
3924 | OP0 @ @ OP2 @ ! |
||
3925 | OP2 ToOP0 |
||
3926 | FALSE -5 ALLOT M\ 12F DTST |
||
3927 | EXIT |
||
3928 | THEN |
||
3929 | |||
3930 | THEN |
||
3931 | THEN |
||
3932 | THEN |
||
3933 | DUP @ 458B1089 XOR \ MOV [EAX], EDX MOV EAX , X [EBP] |
||
3934 | OVER 5 + @ C3086D8D XOR OR \ LEA EBP, 8 [EBP] RET |
||
3935 | OP0 @ W@ D18B XOR OR 0= \ MOV EDX , ECX |
||
3936 | IF M\ 51E DTST |
||
3937 | 0889 OP0 @ W! \ MOV [EAX] , ECX |
||
3938 | 2+ FALSE M\ 51F DTST |
||
3939 | EXIT |
||
3940 | THEN |
||
3941 | M\ PPPP |
||
3942 | |||
3943 | OP3 @ W@ 4589 XOR \ 8945FC MOV FC [EBP] , EAX |
||
3944 | OP2 @ C@ B8 XOR OR \ B8189D5700 MOV EAX , # 579D18 |
||
3945 | OP1 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP] |
||
3946 | OP0 @ @ FFFFFF AND 90048D XOR OR \ 8D0490 LEA EAX , [EAX] [EDX*4] |
||
3947 | OP3 @ 2+ C@ OP1 @ 2+ C@ XOR OR \ X0=X2 |
||
3948 | 0= IF M\ 840 DTST |
||
3949 | OP2 @ 1+ @ 85048D OP2 @ ! |
||
3950 | OP2 @ 3 + ! |
||
3951 | OP2 ToOP0 |
||
3952 | FALSE -4 ALLOT M\ 841 DTST |
||
3953 | EXIT |
||
3954 | THEN |
||
3955 | |||
3956 | OP3 @ W@ 558B XOR \ MOV EDX , FC [EBP] |
||
3957 | OP2 @ W@ 4589 XOR OR \ MOV FC [EBP] , EAX |
||
3958 | OP1 @ W@ C28B XOR OR \ MOV EAX , EDX |
||
3959 | OP0 @ W@ 558B XOR OR \ MOV EDX , FC [EBP] |
||
3960 | OP3 @ 2+ C@ OP2 @ 2+ C@ XOR OR |
||
3961 | OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR |
||
3962 | 0= IF M\ F30 DTST |
||
3963 | OP3 OPexcise |
||
3964 | OP2 OPexcise |
||
3965 | D08B OP1 @ W! \ MOV EDX , EAX |
||
3966 | 458B OP0 @ W! \ MOV EAX , FC [EBP] |
||
3967 | DO_EAX>ECX DROP |
||
3968 | SetOP 89 C, 55 C, OP0 @ 2+ C@ C, \ MOV FC [EBP] , EDX |
||
3969 | FALSE M\ F31 DTST |
||
3970 | EXIT |
||
3971 | THEN |
||
3972 | OP3 @ 2+ C@ |
||
3973 | OP0 @ 2+ C@ XOR |
||
3974 | OP3 @ W@ 4589 XOR OR \ 57BF16 8945FC MOV FC [EBP] , EAX |
||
3975 | OP2 @ W@ C033 XOR OR \ 57BF19 33C0 XOR EAX , EAX |
||
3976 | OP1 @ W@ 4581 XOR OR \ 57BF1B 814500BA040000 ADD 0 [EBP] , # 4BA |
||
3977 | OP0 @ W@ 4513 XOR OR \ 57BF22 1345FC ADC EAX , FC [EBP] |
||
3978 | 0= IF M\ 84 DTST |
||
3979 | OP2 OPexcise |
||
3980 | D083 OP0 @ ! \ ADC EAX , # 0 |
||
3981 | FALSE M\ 85 DTST |
||
3982 | EXIT |
||
3983 | THEN |
||
3984 | |||
3985 | OP3 @ 2+ C@ |
||
3986 | OP0 @ 2+ C@ XOR |
||
3987 | OP3 @ W@ 4589 XOR OR \ 59690C 8945F0 MOV F0 [EBP] , EAX |
||
3988 | OP2 @ C@ B8 XOR OR \ 59690F B801000000 MOV EAX , # 1 |
||
3989 | OP1 @ C@ BA XOR OR \ 596914 BA00000080 MOV EDX , # 80000000 |
||
3990 | OP0 @ W@ 552B XOR OR \ 596919 2B55F0 SUB EDX , F0 [EBP] |
||
3991 | 0= IF M\ A4 DTST |
||
3992 | OP2 @ 1+ @ |
||
3993 | OP2 OPexcise |
||
3994 | D02B OP0 @ ! \ SUB EDX , EAX |
||
3995 | -1 ALLOT |
||
3996 | SetOP B8 C, , |
||
3997 | FALSE M\ A5 DTST |
||
3998 | EXIT |
||
3999 | THEN |
||
4000 | |||
4001 | OP3 @ 2+ C@ |
||
4002 | OP0 @ 2+ C@ XOR |
||
4003 | OP3 @ W@ 4589 XOR OR \ 8945F8 MOV F8 [EBP] , EAX |
||
4004 | OP2 ?EDX_[EBP] OR |
||
4005 | OP1 ?EDX_[EBP] OR |
||
4006 | OP0 @ W@ 558B XOR OR \ 8B55F8 MOV EDX , F8 [EBP] |
||
4007 | 0= IF M\ EC DTST |
||
4008 | OP2 2 OPinsert |
||
4009 | D08B OP3 @ W! \ MOV EDX , EAX |
||
4010 | OP0 OPexcise |
||
4011 | FALSE M\ ED DTST |
||
4012 | EXIT |
||
4013 | THEN |
||
4014 | |||
4015 | OP3 @ 2+ C@ |
||
4016 | OP0 @ 2+ C@ XOR |
||
4017 | OP3 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX |
||
4018 | OP2 @ C@ B8 XOR OR \ B801000000 MOV EAX , # 1 |
||
4019 | OP1 @ C@ B9 XOR OR \ B9FFFFFFFF MOV ECX , # FFFFFFFF |
||
4020 | OP0 @ W@ 4D03 XOR OR \ 034DFC ADD ECX , FC [EBP] |
||
4021 | 0= IF M\ FA DTST |
||
4022 | OP2 @ 1+ @ |
||
4023 | OP2 OPexcise |
||
4024 | C803 OP0 @ W! \ ADD ECX , EAX |
||
4025 | -1 ALLOT |
||
4026 | SetOP B8 C, , |
||
4027 | FALSE M\ FB DTST |
||
4028 | EXIT |
||
4029 | THEN |
||
4030 | |||
4031 | OP3 @ C@ A1 XOR \ 587C37 A1D8795800 MOV EAX , 5879D8 ( C+5 ) |
||
4032 | OP2 @ W@ D08B XOR OR \ 587C3C 8BD0 MOV EDX , EAX |
||
4033 | OP1 @ C@ A1 XOR OR \ 587C3E A1E4795800 MOV EAX , 5879E4 ( D+5 ) |
||
4034 | OP0 @ W@ 4589 XOR OR \ 587C43 8945EC MOV EC [EBP] , EAX |
||
4035 | 0= IF M\ 114 DTST |
||
4036 | OP2 OPexcise |
||
4037 | OP2 1 OPresize |
||
4038 | 158B OP2 @ W! |
||
4039 | FALSE M\ 115 DTST |
||
4040 | EXIT |
||
4041 | THEN |
||
4042 | |||
4043 | OP3 @ 2+ C@ |
||
4044 | OP1 @ 2+ C@ XOR |
||
4045 | OP1 @ 2+ C@ |
||
4046 | OP0 @ 2+ C@ XOR OR |
||
4047 | OP3 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX |
||
4048 | OP2 @ W@ 428D XOR OR \ 8D4201 LEA EAX , 1 [EDX] |
||
4049 | OP1 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP] |
||
4050 | OP0 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX |
||
4051 | 0= IF M\ 140 DTST |
||
4052 | OP3 OPexcise |
||
4053 | OP2 2 OPinsert |
||
4054 | C88B OP3 @ W! \ MOV ECX , EAX |
||
4055 | OP1 OPexcise |
||
4056 | OP0 2 OPinsert |
||
4057 | D18B OP1 @ W! \ MOV EAX , ECX |
||
4058 | FALSE M\ 141 DTST |
||
4059 | EXIT |
||
4060 | THEN |
||
4061 | |||
4062 | |||
4063 | |||
4064 | OP4 @ :-SET U< IF TRUE EXIT THEN |
||
4065 | |||
4066 | \ $ 10 LSHIFT |
||
4067 | OP4 @ W@ 4589 XOR \ MOV X0 [EBP] , EAX |
||
4068 | OP3 @ C@ B8 XOR OR \ MOV EAX, # 10 |
||
4069 | OP2 @ @ 458BC88B XOR OR \ MOV ECX, EAX \ !? MOV EAX, X2 [EBP] |
||
4070 | OP0 @ W@ F7FF AND E0D3 XOR OR \ SHL|SHR EAX , CL |
||
4071 | OP4 @ 2+ C@ OP1 @ 2+ C@ XOR OR \ X0=X2 |
||
4072 | 0= |
||
4073 | IF M\ 32 DTST |
||
4074 | OP0 @ W@ 0012 - OP4 @ W! |
||
4075 | OP3 @ 1+ @ OP4 @ 2+ C! |
||
4076 | OP4 ToOP0 |
||
4077 | FALSE -C ALLOT M\ 33 DTST |
||
4078 | EXIT |
||
4079 | THEN |
||
4080 | |||
4081 | OP1 @ @ FFFFFF AND 82448D XOR \ LEA EAX , 0 [EDX] [EAX*4] |
||
4082 | OP0 @ W@ 0889 XOR OR \ MOV [EAX] , ECX |
||
4083 | 0= |
||
4084 | IF M\ 132 DTST |
||
4085 | 4C89 OP1 @ W! |
||
4086 | OP1 ToOP0 |
||
4087 | FALSE -2 ALLOT M\ 133 DTST |
||
4088 | EXIT |
||
4089 | THEN |
||
4090 | |||
4091 | |||
4092 | OP4 @ 2+ C@ |
||
4093 | OP3 @ 2+ C@ XOR |
||
4094 | OP3 @ 2+ C@ |
||
4095 | OP0 @ 2+ C@ XOR OR |
||
4096 | OP4 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP] |
||
4097 | OP3 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX |
||
4098 | OP2 @ @ C203D8F7 XOR OR \ F7D8 NEG EAX |
||
4099 | \ 03C2 ADD EAX , EDX |
||
4100 | OP0 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP] |
||
4101 | 0= IF M\ C8 DTST |
||
4102 | 4D OP4 @ 1+ C! \ MOV ECX , 0 [EBP] |
||
4103 | \ MOV 0 [EBP] , EAX |
||
4104 | D08B OP2 @ W! \ MOV EDX , EAX |
||
4105 | C103D8F7 OP1 @ ! \ NEG EAX |
||
4106 | \ ADD EAX , ECX |
||
4107 | FALSE -1 ALLOT M\ C9 DTST |
||
4108 | EXIT |
||
4109 | THEN |
||
4110 | |||
4111 | OP4 @ W@ 5589 XOR \ 895500 MOV 0 [EBP] , EDX |
||
4112 | OP3 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP] |
||
4113 | OP2 @ W@ 4D8B XOR OR \ 8B4D00 MOV ECX , 0 [EBP] |
||
4114 | 0= IF M\ C8 DTST |
||
4115 | OP3 2 OPinsert |
||
4116 | CA8B OP4 @ W! \ MOV ECX , EDX |
||
4117 | OP2 OPexcise |
||
4118 | FALSE M\ C9 DTST |
||
4119 | EXIT |
||
4120 | THEN |
||
4121 | |||
4122 | DUP C@ C3 XOR |
||
4123 | OP3 @ 2+ C@ |
||
4124 | OP0 @ 2+ C@ XOR OR |
||
4125 | OP3 @ W@ 4589 XOR OR \ 571FEA 894500 MOV 0 [EBP] , EAX |
||
4126 | OP2 @ W@ C28B XOR OR \ 571FED 8BC2 MOV EAX , EDX |
||
4127 | OP1 @ W@ EAF7 XOR OR \ 571FEF F7EA IMUL EDX |
||
4128 | OP0 @ W@ 4503 XOR OR \ 571FF1 034500 ADD EAX , 0 [EBP] |
||
4129 | 0= IF M\ 1C8 DTST |
||
4130 | |||
4131 | OP2 OPexcise |
||
4132 | OP1 OPexcise |
||
4133 | |||
4134 | OP0 3 OPinsert |
||
4135 | AF0F OP1 @ W! |
||
4136 | D2 OP1 @ 2+ C! \ IMUL EDX , EDX |
||
4137 | |||
4138 | C203 OP0 @ W! \ ADD EAX , EDX |
||
4139 | FALSE |
||
4140 | -1 ALLOT |
||
4141 | M\ 1C9 DTST |
||
4142 | EXIT |
||
4143 | THEN |
||
4144 | |||
4145 | |||
4146 | OP5 @ :-SET U< IF TRUE EXIT THEN |
||
4147 | |||
4148 | M\ PPPP |
||
4149 | |||
4150 | TRUE |
||
4151 | ; |
||
4152 | |||
4153 | : -EVEN-EBP |
||
4154 | OP0 @ :-SET U< IF EXIT THEN |
||
4155 | OP0 @ W@ 06D8D = \ LEA ebp, OFF-EBP [EBP] |
||
4156 | IF OP0 @ 2+ C@ +>OFF-EBP |
||
4157 | OP1 ToOP0 |
||
4158 | -3 ALLOT EXIT |
||
4159 | THEN ; |
||
4160 | |||
4161 | |||
4162 | : OPT_ ( -- ) |
||
4163 | BEGIN |
||
4164 | \ M\ -D DTST |
||
4165 | OPT-RULES UNTIL |
||
4166 | \ M\ -F DTST |
||
4167 | EVEN-EAX ; |
||
4168 | |||
4169 | : DO_OPT ( ADDR -- ADDR' ) |
||
4170 | OPT? IF OPT_ THEN ; |
||
4171 | |||
4172 | : INLINE? ( CFA -- CFA FLAG ) |
||
4173 | DUP BEGIN |
||
4174 | 2DUP |
||
4175 | MM_SIZE - U> 0= IF DROP FALSE EXIT THEN |
||
4176 | DUP C@ \ CFA CFA+OFF N' |
||
4177 | DUP 0C3 = IF 2DROP TRUE EXIT THEN \ RET |
||
4178 | DUP5B? M_WL DROP 5 + REPEAT |
||
4179 | \ 0100.X0XX |
||
4180 | DUP 0F4 |
||
4181 | AND 40 = M_WL DROP 1+ REPEAT \ INC|DEC E(ACDB)X |
||
4182 | |||
4183 | DUP 099 = M_WL DROP 1+ REPEAT \ CDQ |
||
4184 | \ 1110.11XX |
||
4185 | OS\ DUP FC |
||
4186 | OS\ AND EC = M_WL DROP 1+ REPEAT \ IN|OUT EAX AL, DX | DX, EAX EL |
||
4187 | OS\ DUP CD = M_WL DROP 2+ REPEAT \ INTX |
||
4188 | DROP |
||
4189 | DUP W@ \ CFA CFA+OFF N' |
||
4190 | |||
4191 | DUP3B?[EBP] M_WL DROP 3 + REPEAT |
||
4192 | DUP3B? M_WL DROP 3 + REPEAT |
||
4193 | DUP 06D8D = M_WL DROP 3 + REPEAT \ LEA EBP, OFF-EBP [EBP] |
||
4194 | DUP 0C583 = M_WL DROP 3 + REPEAT \ ADD EBP, # OFF-EBP |
||
4195 | DUP 0ED83 = M_WL DROP 3 + REPEAT \ SUB EBP, # X |
||
4196 | DUP2B? M_WL DROP 2+ REPEAT |
||
4197 | DUP 0EC87 = M_WL DROP 2+ REPEAT \ XCHG EBP , ESP |
||
4198 | |||
4199 | DUP C58B = M_WL DROP 2+ REPEAT \ MOV EAX, EBP |
||
4200 | |||
4201 | \ DUP 0E3FF = M_WL DROP 2+ REPEAT \ JMP EBX |
||
4202 | DUP6B? M_WL DROP 6 + REPEAT |
||
4203 | DUP 45C7 = M_WL DROP 7 + REPEAT \ MOV X [EBP] , # X |
||
4204 | DUP 05C7 = M_WL DROP A + REPEAT \ MOV X , # Y |
||
4205 | DUP 0581 = M_WL DROP A + REPEAT \ ADD X , # Y |
||
4206 | |||
4207 | DROP |
||
4208 | DUP @ |
||
4209 | DUP 0424448B = M_WL DROP 4 + REPEAT |
||
4210 | DUP 0424448D = M_WL DROP 4 + REPEAT |
||
4211 | DUP 8BE08B5B = |
||
4212 | IF OVER 3 + 2@ \ 1 TO TTTT |
||
4213 | E3FF046D 8D00458B D= \ RP! |
||
4214 | IF 2DROP TRUE EXIT THEN |
||
4215 | THEN |
||
4216 | FFFFFF AND |
||
4217 | DUP C09D0F = M_WL DROP 3 + REPEAT \ SETGE AL |
||
4218 | DUP C09E0F = M_WL DROP 3 + REPEAT \ SETLE AL |
||
4219 | DUP 90048D = M_WL DROP 3 + REPEAT \ LEA EAX , [EAX] [EDX*4] |
||
4220 | DUP 02048D = M_WL DROP 3 + REPEAT \ LEA EAX, [EDX] [EAX] |
||
4221 | DUP 40B70F = M_WL DROP 4 + REPEAT \ MOVZX EAX , WORD PTR FE [EAX] |
||
4222 | |||
4223 | |||
4224 | \ CMPXCHG [EAX] , AL| EAX |
||
4225 | \ LSS EAX , [EAX] |
||
4226 | \ BTR [EAX] , EAX |
||
4227 | \ LFS EAX , [EAX] |
||
4228 | \ LGS EAX , [EAX] |
||
4229 | \ MOVZX EAX , BYTE|WORD PTR [EAX] |
||
4230 | \ 0000.0000 1011.1XXX 0000.1111 |
||
4231 | DUP FFF8FF |
||
4232 | AND 00B00F = M_WL DROP 3 + REPEAT \ MOVZX EAX, WORD PTR [EAX] |
||
4233 | |||
4234 | DUP 20488B = M_WL DROP 3 + REPEAT \ MOV ECX , [EAX+20H] |
||
4235 | DUP 20488D = M_WL DROP 3 + REPEAT \ LEA ECX , [EAX+20H] |
||
4236 | |||
4237 | DUP 85448B = M_WL DROP 4 + REPEAT \ MOV EAX, X [EBP] [EAX*4] |
||
4238 | DUP 02048D = M_WL DROP 4 + REPEAT \ LEA EAX , [EDX] [EAX] |
||
4239 | \ XX00.0101 0000.0100 1000.1XX1 |
||
4240 | DUP7B? WHILE DROP 7 + REPEAT |
||
4241 | 2DROP FALSE |
||
4242 | ; |
||
4243 | |||
4244 | : MACRO? INLINE? ; |
||
4245 | |||
4246 | \ МАКРОПОДСТАНОВЩИК |
||
4247 | |||
4248 | : +EBP DUP C@ C>S OFF-EBP + C, 1+ ; |
||
4249 | |||
4250 | : 1_,_STEP SetOP DROP DUP C@ C, 1+ ; |
||
4251 | |||
4252 | : 2_,_STEP SetOP DROP DUP W@ W, 2+ ; |
||
4253 | |||
4254 | : 3_,_STEP 2_,_STEP DUP C@ C, 1+ ; |
||
4255 | |||
4256 | : 4_,_STEP_ DUP @ , CELL+ ; |
||
4257 | |||
4258 | : 4_,_STEP SetOP DROP 4_,_STEP_ ; |
||
4259 | |||
4260 | : 5_,_STEP 1_,_STEP 4_,_STEP_ ; |
||
4261 | |||
4262 | : 6_,_STEP 2_,_STEP 4_,_STEP_ ; |
||
4263 | |||
4264 | : 7_,_STEP 3_,_STEP 4_,_STEP_ ; |
||
4265 | |||
4266 | : A_,_STEP 2_,_STEP 4_,_STEP_ 4_,_STEP_ ; |
||
4267 | |||
4268 | : 0A_,_STEP DUP DUP @ + DP @ - , CELL+ ; |
||
4269 | |||
4270 | : 1A_,_STEP 1_,_STEP 0A_,_STEP ; |
||
4271 | |||
4272 | : 2A_,_STEP 2_,_STEP 0A_,_STEP ; |
||
4273 | |||
4274 | : _INLINE, ( CFA -- ) |
||
4275 | \ ." ^" DUP H. |
||
4276 | BEGIN |
||
4277 | DO_OPT |
||
4278 | |||
4279 | DUP @ \ CFA N' |
||
4280 | DUP 8BE08B5B = DUP |
||
4281 | IF DROP OVER 3 + 2@ E3FF046D 8D00458B D= \ RP! |
||
4282 | THEN M_WL DROP SetOP |
||
4283 | 8B C, E0 C, \ MOV ESP, EAX |
||
4284 | DROP 'DROP |
||
4285 | REPEAT |
||
4286 | FF AND \ CFA N' |
||
4287 | DUP 0C3 = IF 2DROP EXIT THEN \ RET |
||
4288 | |||
4289 | DUP5B? M_WL 5_,_STEP REPEAT \ ADD EAX, # X |
||
4290 | |||
4291 | \ 010X.XXXX |
||
4292 | DUP E0 AND 40 = M_WL 1_,_STEP REPEAT \ INC|DEC|PUSH|POP E_X |
||
4293 | |||
4294 | \ FS: GS: D16: A16: INSB INSD OUTSB OUTSD |
||
4295 | \ 0110.X1XX |
||
4296 | DUP F4 AND 64 = M_WL 1_,_STEP REPEAT |
||
4297 | |||
4298 | DUP 099 = M_WL 1_,_STEP REPEAT \ CDQ |
||
4299 | |||
4300 | OS\ DUP FC |
||
4301 | OS\ AND EC = M_WL 1_,_STEP REPEAT \ IN|OUT EAX AL, DX | DX, EAX EL |
||
4302 | OS\ DUP CD = M_WL 2_,_STEP REPEAT \ INTX |
||
4303 | |||
4304 | \ DUP 0BB = M_WL 5_,_STEP REPEAT \ MOV EBX, # X |
||
4305 | \ JO JNO JB JAE JE JNE JBE JA JS JNS JP JNP JL JGE JLE JG |
||
4306 | \ 0111.XXXX |
||
4307 | DUP F0 AND 70 = M_WL 2_,_STEP REPEAT |
||
4308 | |||
4309 | DUP 0E8 = M_WL 1A_,_STEP REPEAT \ CALL |
||
4310 | DUP 0E9 = M_WL 1A_,_STEP REPEAT \ JMP |
||
4311 | DROP |
||
4312 | DUP W@ |
||
4313 | DUP3B?[EBP] M_WL 2_,_STEP +EBP REPEAT |
||
4314 | DUP3B? M_WL 3_,_STEP REPEAT |
||
4315 | DUP2B? M_WL 2_,_STEP REPEAT |
||
4316 | DUP 0C48B = M_WL 2_,_STEP REPEAT \ MOV EAX , ESP |
||
4317 | DUP C58B = M_WL EVEN-EBP 2_,_STEP REPEAT \ MOV EAX, EBP |
||
4318 | DUP 0EC87 = M_WL EVEN-EBP 2_,_STEP REPEAT \ XCHG EBP , ESP |
||
4319 | |||
4320 | DUP 06D8D = M_WL DROP DUP 2 + C@ +>OFF-EBP |
||
4321 | 3 + REPEAT \ LEA EBP, OFF-EBP [EBP] |
||
4322 | |||
4323 | DUP 0C583 = M_WL DROP DUP 2 + C@ +>OFF-EBP |
||
4324 | 3 + REPEAT \ ADD EBP, # OFF-EBP |
||
4325 | |||
4326 | DUP 0ED83 = M_WL DROP DUP 2 + C@ C>S NEGATE +>OFF-EBP |
||
4327 | 3 + REPEAT \ SUB EBP, # OFF-EBP |
||
4328 | |||
4329 | DUP 0C483 = M_WL 3_,_STEP REPEAT \ ADD ESP, # X |
||
4330 | DUP6B? M_WL 6_,_STEP REPEAT \ MOV EAX, # X |
||
4331 | DUP 0E3FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ JMP EBX |
||
4332 | \ DUP 0D3FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ CALL EBX |
||
4333 | |||
4334 | \ DUP 0E2FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ JMP EDX |
||
4335 | DUP 0D2FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ CALL EDX |
||
4336 | DUP 810F = M_WL 2A_,_STEP REPEAT \ JO [ESP] |
||
4337 | DUP 45C7 = M_WL 2_,_STEP +EBP 4_,_STEP_ REPEAT \ MOV X [EBP] , # X |
||
4338 | DUP 05C7 = M_WL A_,_STEP REPEAT \ MOV X , # Y |
||
4339 | DUP 0581 = M_WL A_,_STEP REPEAT \ ADD X , # Y |
||
4340 | |||
4341 | DROP |
||
4342 | DUP @ |
||
4343 | DUP 0424448B = M_WL DROP SetOP \ MOV EAX, 4 [ESP] |
||
4344 | 8B C, 04 C, 24 C, \ MOV EAX, [ESP] |
||
4345 | 4 + |
||
4346 | REPEAT |
||
4347 | |||
4348 | DUP 0424448D = M_WL DROP SetOP \ LEA EAX, 4 [ESP] |
||
4349 | 8B C, C4 C, \ MOV EAX, ESP |
||
4350 | 4 + |
||
4351 | REPEAT |
||
4352 | |||
4353 | FFFFFF AND |
||
4354 | |||
4355 | DUP C09D0F = M_WL 3_,_STEP REPEAT \ SETGE AL |
||
4356 | DUP C09E0F = M_WL 3_,_STEP REPEAT \ SETLE AL |
||
4357 | DUP 90048D = M_WL 3_,_STEP REPEAT \ LEA EAX , [EAX] [EDX*4] |
||
4358 | DUP 02048D = M_WL 3_,_STEP REPEAT \ LEA EAX, [EDX] [EAX] |
||
4359 | DUP 40B70F = M_WL 4_,_STEP REPEAT \ MOVZX EAX , WORD PTR FE [EAX] |
||
4360 | |||
4361 | DUP 240401 = M_WL 3_,_STEP REPEAT \ ADD [ESP] , EAX |
||
4362 | |||
4363 | \ CMPXCHG [EAX] , AL| EAX |
||
4364 | \ LSS EAX , [EAX] |
||
4365 | \ BTR [EAX] , EAX |
||
4366 | \ LFS EAX , [EAX] |
||
4367 | \ LGS EAX , [EAX] |
||
4368 | \ MOVZX EAX , BYTE|WORD PTR [EAX] |
||
4369 | \ 0000.0000 1011.1XXX 0000.1111 |
||
4370 | DUP FFF8FF |
||
4371 | AND 00B00F = M_WL 3_,_STEP REPEAT |
||
4372 | DUP 244403 = M_WL 4_,_STEP REPEAT \ ADD EAX, X [ESP] |
||
4373 | DUP 24442B = M_WL 4_,_STEP REPEAT \ SUB EAX, X [ESP] |
||
4374 | DUP 24448B = M_WL 4_,_STEP REPEAT \ MOV EAX, X [ESP] |
||
4375 | DUP 85448B = M_WL 3_,_STEP +EBP REPEAT \ MOV EAX, X [EBP] [EAX*4] |
||
4376 | DUP 24048B = M_WL 3_,_STEP REPEAT \ MOV EAX, 0 [ESP] |
||
4377 | DUP 20488B = M_WL 3_,_STEP REPEAT \ MOV ECX , [EAX+20H] |
||
4378 | DUP 20488D = M_WL 3_,_STEP REPEAT \ LEA ECX , [EAX+20H] |
||
4379 | DUP 021C8D = M_WL 3_,_STEP REPEAT \ LEA EBX, [EDX] [EAX] |
||
4380 | DUP 85048D = M_WL 7_,_STEP REPEAT \ LEA EAX, X [EAX*4] |
||
4381 | DUP 2404FF = M_WL 3_,_STEP REPEAT \ INC [ESP] |
||
4382 | DUP 18B60F = M_WL 3_,_STEP REPEAT \ MOVZX EBX, BYTE PTR [EAX] |
||
4383 | |||
4384 | DUP7B? WHILE 7_,_STEP REPEAT |
||
4385 | HEX U. ." @COD, ERROR" ABORT |
||
4386 | ; |
||
4387 | |||
4388 | |||
4389 | : XC_J |
||
4390 | J_COD FE AND 4 = IF EXIT THEN |
||
4391 | J_COD DUP 0x8 AND |
||
4392 | IF 3 |
||
4393 | ELSE 5 |
||
4394 | THEN XOR TO J_COD ; |
||
4395 | |||
4396 | [DEFINED] [TTO] |
||
4397 | [IF] |
||
4398 | PREVIOUS PREVIOUS SET-CURRENT |
||
4399 | [THEN] |
||
4400 | |||
4401 | : OPT_CLOSE |
||
4402 | EVEN-EBP DP @ TO LAST-HERE ; |
||
4403 | |||
4404 | : OPT_INIT ?SET -EVEN-EBP ; |
||
4405 | |||
4406 | : INLINE, ( CFA -- ) OPT_INIT _INLINE, OPT_CLOSE ; |
||
4407 | |||
4408 | : MACRO, INLINE, ; |
||
4409 | |||
4410 | |||
4411 | : ?BR-OPT-RULES ( cfa -- cfa' flag ) |
||
4412 | \ ZZZZ IF ." z=" OP1 @ @ U. THEN |
||
4413 | OP0 @ :-SET U< IF TRUE EXIT THEN |
||
4414 | M\ -3 DTST |
||
4415 | |||
4416 | OP0 @ C@ 05 = \ ADD EAX, # X |
||
4417 | IF M\ 404 DTST |
||
4418 | OP0 @ 1+ @ OFF-EAX + TO OFF-EAX |
||
4419 | OP1 ToOP0 |
||
4420 | FALSE -5 ALLOT M\ 405 DTST |
||
4421 | EXIT |
||
4422 | THEN |
||
4423 | |||
4424 | DUP 'DROP XOR |
||
4425 | OFF-EAX OR |
||
4426 | OP0 @ W@ 4589 XOR OR 0= \ MOV X [EBP] , EAX |
||
4427 | IF M\ 436 DTST |
||
4428 | DP @ TO LAST-HERE INLINE, |
||
4429 | M\ 437 DTST |
||
4430 | ['] NOOP FALSE EXIT |
||
4431 | THEN |
||
4432 | |||
4433 | DUP 'DROP = |
||
4434 | OFF-EAX 0= |
||
4435 | OP0 @ C@ A1 = AND AND \ MOV EAX , 44444 |
||
4436 | IF M\ 434 DTST |
||
4437 | |||
4438 | OP0 @ 1+ @ OP0 @ 2+ ! |
||
4439 | 3D83 OP0 @ W! \ CMP 44444, # 0 |
||
4440 | FALSE M\ 435 DTST |
||
4441 | EXIT |
||
4442 | THEN |
||
4443 | |||
4444 | OFF-EAX 0= |
||
4445 | OP0 @ @ FFFFFF AND 24048B = AND \ MOV EAX , [ESP] |
||
4446 | IF M\ 534 DTST |
||
4447 | 1 ALLOT |
||
4448 | 243C83 OP0 @ ! \ CMP DWORD PTR [ESP], 0 |
||
4449 | FALSE M\ 535 DTST |
||
4450 | EXIT |
||
4451 | THEN |
||
4452 | |||
4453 | DUP 'DROP XOR |
||
4454 | OP0 @ W@ 458B XOR OR 0= \ MOV EAX , 0 [EBP] |
||
4455 | IF M\ 334 DTST |
||
4456 | 7D83 OP0 @ W! \ CMP X [EBP], # Z |
||
4457 | FALSE 0 C, M\ 335 DTST |
||
4458 | EXIT |
||
4459 | THEN |
||
4460 | DUP 'DROP XOR |
||
4461 | OP0 @ W@ C20B XOR OR \ 0BC2 OR EAX , EDX |
||
4462 | 0= IF M\ B4 DTST |
||
4463 | D00B OP0 @ W! \ OR EDX , EAX |
||
4464 | FALSE M\ B5 DTST |
||
4465 | EXIT |
||
4466 | THEN |
||
4467 | |||
4468 | OP0 @ W@ 408D = \ LEA EAX, X [EAX] |
||
4469 | IF M\ 234 DTST |
||
4470 | C083 OP0 @ W! \ ADD EAX, # X |
||
4471 | FALSE M\ 235 DTST |
||
4472 | EXIT |
||
4473 | THEN |
||
4474 | OP0 @ W@ 808D = \ LEA EAX, X [EAX] |
||
4475 | IF M\ 34 DTST |
||
4476 | 05 OP0 @ C! |
||
4477 | OP0 @ 2+ @ OP0 @ 1+ ! \ ADD EAX, # X |
||
4478 | TRUE -1 ALLOT M\ 35 DTST |
||
4479 | EXIT |
||
4480 | THEN |
||
4481 | |||
4482 | DUP 'DROP XOR |
||
4483 | OP0 @ @ FFFFFF AND 1FF8C1 XOR OR 0= \ SAR EAX , 1F |
||
4484 | IF M\ 13A DTST |
||
4485 | OP1 ToOP0 |
||
4486 | 8D J_COD 1 AND XOR TO J_COD |
||
4487 | FALSE -3 ALLOT M\ 13B DTST |
||
4488 | EXIT |
||
4489 | THEN |
||
4490 | DUP 'DROP XOR |
||
4491 | OP0 @ C@ 35 XOR OR 0= \ XOR EAX, # X |
||
4492 | IF M\ 134 DTST |
||
4493 | 3D OP0 @ C! \ CMP EAX, # X |
||
4494 | FALSE M\ 135 DTST |
||
4495 | EXIT |
||
4496 | THEN |
||
4497 | |||
4498 | DUP 'DROP XOR |
||
4499 | OP0 @ @ FFFFFF AND 240433 XOR OR 0= \ XOR EAX , [ESP] |
||
4500 | IF M\ 134 DTST |
||
4501 | 3B OP0 @ C! \ CMP EAX , [ESP] |
||
4502 | FALSE M\ 135 DTST |
||
4503 | EXIT |
||
4504 | THEN |
||
4505 | |||
4506 | OP0 @ W@ 4539 XOR \ CMP X [EBP] , EAX |
||
4507 | 0= IF M\ 76 DTST |
||
4508 | 3B OP0 @ C! \ CMP EAX, X [EBP] |
||
4509 | XC_J |
||
4510 | FALSE M\ 77 DTST |
||
4511 | EXIT |
||
4512 | THEN |
||
4513 | |||
4514 | OP1 @ :-SET U< IF TRUE EXIT THEN |
||
4515 | \ $ 0<> IF |
||
4516 | DUP 'DROP XOR |
||
4517 | OP1 @ @ C01BD8F7 XOR OR 0= \ NEG EAX \ SBB EAX, EAX |
||
4518 | IF M\ 36 DTST |
||
4519 | OP2 ToOP0 |
||
4520 | \ 084 TO J_COD |
||
4521 | FALSE -4 ALLOT M\ 37 DTST |
||
4522 | EXIT |
||
4523 | THEN |
||
4524 | |||
4525 | |||
4526 | \ $ 0= IF |
||
4527 | DUP 'DROP XOR |
||
4528 | OP1 @ @ 1B01E883 XOR OR \ SUB EAX , # 1 |
||
4529 | OP0 @ W@ C01B XOR OR 0= \ SBB EAX , EAX |
||
4530 | IF M\ 38 DTST |
||
4531 | \ OP2 @ W@ U. |
||
4532 | OP2 ToOP0 |
||
4533 | J_COD 1 XOR TO J_COD |
||
4534 | FALSE -5 ALLOT M\ 39 DTST |
||
4535 | EXIT |
||
4536 | THEN |
||
4537 | |||
4538 | |||
4539 | \ $ U< IF |
||
4540 | DUP 'DROP XOR |
||
4541 | OP1 @ C@ 3D <> |
||
4542 | OP1 @ C@ 3B <> AND |
||
4543 | \ OP1 @ W@ 053B <> AND |
||
4544 | \ OP1 @ W@ D03B <> AND \ CMP EDX , EAX |
||
4545 | OP1 @ @ FFFD AND |
||
4546 | 4539 <> AND \ CMP X [EBP] , EAX |
||
4547 | OP0 @ W@ C01B XOR OR OR 0= \ SBB EAX , EAX |
||
4548 | IF M\ 3A DTST |
||
4549 | OP1 ToOP0 |
||
4550 | 83 J_COD 1 AND XOR TO J_COD |
||
4551 | FALSE -2 ALLOT M\ 3B DTST |
||
4552 | EXIT |
||
4553 | THEN |
||
4554 | |||
4555 | OP1 @ @ FFFFFF AND 240C8B XOR \ MOV ECX , [ESP] |
||
4556 | OP0 @ W@ C13B XOR OR 0= \ CMP EAX , ECX |
||
4557 | IF M\ 33A DTST |
||
4558 | 043B OP1 @ W! |
||
4559 | OP1 ToOP0 |
||
4560 | FALSE -2 ALLOT M\ 33B DTST |
||
4561 | EXIT |
||
4562 | THEN |
||
4563 | |||
4564 | OP1 @ @ FFFFFF AND 240C8B XOR \ MOV ECX , [ESP] |
||
4565 | OP0 @ W@ C133 XOR OR 0= \ XOR EAX , ECX |
||
4566 | IF M\ 33A DTST |
||
4567 | 0433 OP1 @ W! \ XOR ECX , [ESP] |
||
4568 | OP1 ToOP0 |
||
4569 | FALSE -2 ALLOT M\ 33B DTST |
||
4570 | EXIT |
||
4571 | THEN |
||
4572 | |||
4573 | OP1 @ @ C13BCA8B = \ MOV ECX , EDX CMP EAX , ECX |
||
4574 | IF M\ 33A DTST |
||
4575 | C23B OP1 @ W! \ CMP EAX , EDX |
||
4576 | OP1 ToOP0 |
||
4577 | FALSE -2 ALLOT M\ 33B DTST |
||
4578 | EXIT |
||
4579 | THEN |
||
4580 | |||
4581 | OP1 @ W@ 558B XOR \ MOV EDX , 0 [EBP] |
||
4582 | OP0 @ W@ C23B XOR OR 0= \ CMP EAX , EDX |
||
4583 | IF M\ 43A DTST |
||
4584 | 453B OP1 @ W! \ CMP EAX , 0 [EBP] |
||
4585 | OP1 ToOP0 |
||
4586 | FALSE -2 ALLOT M\ 43B DTST |
||
4587 | EXIT |
||
4588 | THEN |
||
4589 | |||
4590 | |||
4591 | DUP 'DROP XOR |
||
4592 | OP1 @ @ C83B008B XOR OR \ MOV EAX , [EAX] CMP ECX , EAX |
||
4593 | 0= IF M\ 43A DTST |
||
4594 | 083B OP1 @ W! \ CMP ECX , [EAX] |
||
4595 | OP1 ToOP0 |
||
4596 | FALSE -2 ALLOT M\ 43B DTST |
||
4597 | EXIT |
||
4598 | THEN |
||
4599 | |||
4600 | DUP 'DROP XOR |
||
4601 | OP1 @ @ D03B008B XOR OR \ MOV EAX , [EAX] CMP EDX , EAX |
||
4602 | 0= IF M\ 43A DTST |
||
4603 | 103B OP1 @ W! \ CMP EDX , [EAX] |
||
4604 | OP1 ToOP0 |
||
4605 | FALSE -2 ALLOT M\ 43B DTST |
||
4606 | EXIT |
||
4607 | THEN |
||
4608 | DUP 'DROP XOR |
||
4609 | OP1 @ @ C13B008B XOR OR \ MOV EAX , [EAX] CMP EAX , ECX |
||
4610 | 0= IF M\ 80 DTST |
||
4611 | 083B OP1 @ W! \ CMP ECX , [EAX] |
||
4612 | XC_J |
||
4613 | OP1 ToOP0 |
||
4614 | FALSE -2 ALLOT M\ 81 DTST |
||
4615 | EXIT |
||
4616 | THEN |
||
4617 | |||
4618 | OP1 @ C@ B9 XOR \ MOV ECX , # 3 |
||
4619 | OP0 @ W@ C133 XOR OR \ XOR EAX , ECX |
||
4620 | 0= IF M\ 40 DTST |
||
4621 | 3D OP1 @ C! \ CMP EAX , # 1 |
||
4622 | OP1 ToOP0 |
||
4623 | FALSE -2 ALLOT M\ 41 DTST |
||
4624 | EXIT |
||
4625 | THEN |
||
4626 | \ ZZZZ IF ." Z=" OP1 @ @ U. OP1 @ W@ U. OP0 @ W@ U. THEN |
||
4627 | OP1 @ W@ 558B XOR \ MOV EDX , 0 [EBP] |
||
4628 | OP0 @ W@ C23B XOR OR \ CMP EAX , EDX |
||
4629 | 0= IF M\ 68 DTST |
||
4630 | 453B OP1 @ C! \ CMP EAX , 0 [EBP] |
||
4631 | OP1 ToOP0 |
||
4632 | FALSE -2 ALLOT M\ 69 DTST |
||
4633 | EXIT |
||
4634 | THEN |
||
4635 | OP1 @ C@ B9 XOR \ 57B523 B901000000 MOV ECX , # 1 |
||
4636 | OP0 @ W@ C83B XOR OR \ 57B528 3BC8 CMP ECX , EAX |
||
4637 | 0= IF M\ 74 DTST |
||
4638 | 3D OP1 @ C! \ CMP EAX , # 1 |
||
4639 | XC_J |
||
4640 | OP1 ToOP0 |
||
4641 | FALSE -2 ALLOT M\ 75 DTST |
||
4642 | EXIT |
||
4643 | THEN |
||
4644 | |||
4645 | OP1 @ @ C23B008B = \ MOV EAX , [EAX] CMP EAX , EDX |
||
4646 | IF M\ 78 DTST |
||
4647 | 103B OP1 @ W! \ CMP EDX , [EAX] |
||
4648 | XC_J |
||
4649 | OP1 ToOP0 -2 ALLOT |
||
4650 | FALSE M\ 79 DTST |
||
4651 | EXIT |
||
4652 | THEN |
||
4653 | |||
4654 | DUP 'DROP XOR |
||
4655 | OP1 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 10 [ESP] |
||
4656 | OP0 @ C@ 3D XOR OR \ 597707 3D02000000 CMP EAX , # 2 |
||
4657 | 0= IF M\ 7A DTST |
||
4658 | 7C81 OP1 @ W! \ CMP 10 [ESP] , # 2 |
||
4659 | OP0 @ 1+ @ OP0 @ ! |
||
4660 | OP1 ToOP0 -1 ALLOT |
||
4661 | FALSE M\ 7B DTST |
||
4662 | EXIT |
||
4663 | THEN |
||
4664 | |||
4665 | OP1 @ @ FFFFFF AND 244C8B XOR \ MOV ECX , 20 [ESP] |
||
4666 | OP0 @ W@ C83B XOR OR \ CMP ECX , EAX |
||
4667 | 0= IF M\ 7C DTST |
||
4668 | 443B OP1 @ W! \ CMP EAX , 20 [ESP] |
||
4669 | OP0 @ 1+ @ OP0 @ ! |
||
4670 | XC_J |
||
4671 | OP1 ToOP0 -2 ALLOT |
||
4672 | FALSE M\ 7D DTST |
||
4673 | EXIT |
||
4674 | THEN |
||
4675 | |||
4676 | OP1 @ W@ 0D8B XOR \ MOV ECX , 44444 |
||
4677 | OP0 @ W@ C83B XOR OR \ CMP ECX , EAX |
||
4678 | 0= IF M\ 7C DTST |
||
4679 | 053B OP1 @ W! \ CMP EAX , 44444 |
||
4680 | OP0 @ 1+ @ OP0 @ ! |
||
4681 | XC_J |
||
4682 | OP1 ToOP0 -2 ALLOT |
||
4683 | FALSE M\ 7D DTST |
||
4684 | EXIT |
||
4685 | THEN |
||
4686 | |||
4687 | DUP 'DROP XOR |
||
4688 | OP1 @ @ FFFFFF AND 85048B XOR OR \ MOV EAX , X [EAX*4] |
||
4689 | OP0 @ C@ 3D XOR OR \ 5960F8 3500100000 CMP EAX , # 1000 |
||
4690 | 0= IF M\ 86 DTST |
||
4691 | 3C81 OP1 @ W! \ CMP X [EAX*4] , # 1000 |
||
4692 | OP0 @ 1+ @ OP0 @ ! |
||
4693 | OP1 ToOP0 -1 ALLOT |
||
4694 | FALSE M\ 87 DTST |
||
4695 | EXIT |
||
4696 | THEN |
||
4697 | |||
4698 | DUP 'DROP XOR |
||
4699 | OP1 @ C@ A1 XOR OR \ 5978EF A135755900 MOV EAX , 597535 |
||
4700 | OP0 @ C@ 3D XOR OR \ 5978F4 3D41000000 CMP EAX , # 1000 |
||
4701 | 0= IF M\ 96 DTST |
||
4702 | OP1 @ 1+ @ OP1 @ 2+ ! |
||
4703 | 3D81 OP1 @ W! \ CMP 597535 , # 1000 |
||
4704 | OP1 ToOP0 |
||
4705 | FALSE M\ 97 DTST |
||
4706 | EXIT |
||
4707 | THEN |
||
4708 | |||
4709 | DUP 'DROP XOR |
||
4710 | OP1 @ W@ D8F7 XOR OR \ 581E16 F7D8 NEG EAX |
||
4711 | OP0 @ W@ C203 XOR OR \ 581E18 03C2 ADD EAX , EDX |
||
4712 | 0= IF M\ B8 DTST |
||
4713 | D02B OP1 @ W! \ SUB EDX , EAX |
||
4714 | OP1 ToOP0 -2 ALLOT |
||
4715 | FALSE M\ B9 DTST |
||
4716 | EXIT |
||
4717 | THEN |
||
4718 | |||
4719 | OP1 @ @ C90BCA8B XOR \ 8BCA MOV ECX , EDX |
||
4720 | \ 0BC9 OR ECX , ECX |
||
4721 | 0= IF M\ BA DTST |
||
4722 | D20B OP1 @ W! \ OR EDX , EDX |
||
4723 | OP1 ToOP0 -2 ALLOT |
||
4724 | FALSE M\ BB DTST |
||
4725 | EXIT |
||
4726 | THEN |
||
4727 | |||
4728 | OP1 @ @ 3DFF408D XOR |
||
4729 | OP0 @ 1+ @ OR \ LEA EAX , FF [EAX] CMP EAX , # 0 |
||
4730 | 0= IF M\ 1BA DTST |
||
4731 | 48 OP1 @ C! \ DEC EAX |
||
4732 | OP1 ToOP0 -7 ALLOT |
||
4733 | FALSE M\ 1BB DTST |
||
4734 | EXIT |
||
4735 | THEN |
||
4736 | |||
4737 | OP2 @ :-SET U< IF TRUE EXIT THEN |
||
4738 | |||
4739 | OP2 @ W@ 4589 XOR \ MOV F8 [EBP] , EAX |
||
4740 | OP1 @ @ 453BC033 XOR OR \ XOR EAX , EAX CMP EAX , F8 [EBP] |
||
4741 | OP0 @ 2+ C@ |
||
4742 | OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X )) |
||
4743 | 0= IF M\ 4E DTST |
||
4744 | 3D OP1 @ C! OP1 @ 1+ 0! \ CMP EAX , # 0 |
||
4745 | XC_J |
||
4746 | OP1 ToOP0 |
||
4747 | FALSE M\ 4F DTST |
||
4748 | EXIT |
||
4749 | THEN |
||
4750 | |||
4751 | OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX |
||
4752 | OP1 @ @ 453B008B XOR OR \ MOV EAX , [EAX] CMP EAX , F8 [EBP] |
||
4753 | OP0 @ 2+ C@ |
||
4754 | OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X )) |
||
4755 | \ OP0 @ 2+ C@ C>S OFF-EBP > OR !!!! |
||
4756 | 0= IF M\ 23A DTST |
||
4757 | C23B OP0 @ W! \ CMP EAX , EDX |
||
4758 | FALSE -1 ALLOT M\ 23B DTST |
||
4759 | EXIT |
||
4760 | THEN |
||
4761 | |||
4762 | OP2 @ W@ 4D89 XOR \ MOV F8 [EBP] , ECX |
||
4763 | OP1 @ @ 453B008B XOR OR \ MOV EAX , [EAX] CMP EAX , F8 [EBP] |
||
4764 | OP0 @ 2+ C@ |
||
4765 | OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X )) |
||
4766 | 0= IF M\ 7E DTST |
||
4767 | C13B OP0 @ W! \ CMP EAX , ECX |
||
4768 | FALSE -1 ALLOT M\ 7F DTST |
||
4769 | EXIT |
||
4770 | THEN |
||
4771 | |||
4772 | |||
4773 | OP1 @ W@ 8B XOR \ MOV EAX , [EAX] |
||
4774 | OP0 @ W@ 4539 XOR OR \ CMP F8 [EBP] , EAX |
||
4775 | OP0 @ 2+ C@ |
||
4776 | OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X )) |
||
4777 | \ OP0 @ 2+ C@ C>S OFF-EBP > OR |
||
4778 | 0= IF |
||
4779 | OP2 @ W@ 4D89 = \ MOV F8 [EBP] , ECX |
||
4780 | IF M\ 23A DTST |
||
4781 | C83B OP0 @ W! \ CMP ECX , EAX |
||
4782 | FALSE -1 ALLOT M\ 23B DTST |
||
4783 | EXIT |
||
4784 | THEN |
||
4785 | OP2 @ W@ 5589 = \ MOV F8 [EBP] , EDX |
||
4786 | \ MOV EAX , [EAX] CMP F8 [EBP] , EAX |
||
4787 | IF M\ 33A DTST |
||
4788 | D03B OP0 @ W! \ CMP EDX , EAX |
||
4789 | FALSE -1 ALLOT M\ 33B DTST |
||
4790 | EXIT |
||
4791 | THEN |
||
4792 | THEN |
||
4793 | |||
4794 | |||
4795 | OP3 @ :-SET U< IF TRUE EXIT THEN |
||
4796 | |||
4797 | \ $ < IF |
||
4798 | DUP 'DROP XOR |
||
4799 | OP2 @ @ FFFFFCFF AND 83C09C0F XOR OR |
||
4800 | OP1 @ @ 4801E083 XOR OR 0= |
||
4801 | \ 0F9DC0 SETGE AL |
||
4802 | \ 83E001 AND EAX , # 1 |
||
4803 | \ 48 DEC EAX |
||
4804 | IF M\ 3C DTST |
||
4805 | OP2 @ 1+ C@ 10 - J_COD 1 AND XOR TO J_COD |
||
4806 | OP3 ToOP0 |
||
4807 | FALSE -7 ALLOT M\ 3D DTST |
||
4808 | EXIT |
||
4809 | THEN |
||
4810 | |||
4811 | \ 5 OVER = IF |
||
4812 | OP0 @ W@ 4533 = \ XOR EAX , F8 [EBP] |
||
4813 | IF |
||
4814 | DUP 'DROP XOR |
||
4815 | OP3 @ W@ 4589 XOR OR \ MOV FC [EBP] , EAX |
||
4816 | OP2 @ W@ 45C7 XOR OR \ MOV F8 [EBP] , # 5 |
||
4817 | OP1 @ W@ 458B XOR OR \ MOV EAX , FC [EBP] |
||
4818 | OP3 @ 2+ C@ OP1 @ 2+ C@ XOR OR |
||
4819 | OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= |
||
4820 | IF M\ 234 DTST |
||
4821 | 3D OP2 @ C! |
||
4822 | OP2 @ 3 + @ OP2 @ 1+ ! |
||
4823 | OP2 ToOP0 |
||
4824 | TRUE -8 ALLOT M\ 235 DTST |
||
4825 | EXIT |
||
4826 | THEN |
||
4827 | THEN |
||
4828 | |||
4829 | TRUE ; |
||
4830 | |||
4831 | : BR-EVEN-EAX OFF-EAX |
||
4832 | IF M\ 1002 DTST |
||
4833 | SetOP |
||
4834 | 5 C, OFF-EAX , |
||
4835 | |||
4836 | M\ 1003 DTST |
||
4837 | THEN |
||
4838 | ; |
||
4839 | |||
4840 | |||
4841 | : ?BR-OPT |
||
4842 | BEGIN BEGIN M\ -9 DTST |
||
4843 | ?BR-OPT-RULES |
||
4844 | UNTIL M\ -7 DTST |
||
4845 | ['] NOOP OPT-RULES NIP |
||
4846 | UNTIL BR-EVEN-EAX |
||
4847 | M\ -5 DTST |
||
4848 | \ ZZZZ IF ." B=" DUP U. THEN |
||
4849 | OP0 @ :-SET U< |
||
4850 | IF SetOP 0xC00B W, \ OR EAX, EAX |
||
4851 | EXIT |
||
4852 | THEN |
||
4853 | OP0 @ C@ |
||
4854 | \ 00XX.X101 |
||
4855 | DUP C7 AND 05 <> \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X |
||
4856 | \ OVER 3D <> AND \ ~ CMP EAX, # X |
||
4857 | OVER 40 <> AND \ DEC EAX |
||
4858 | OVER 48 <> AND \ INC EAX |
||
4859 | OVER 3B <> AND \ CMP |
||
4860 | OVER 0B <> AND \ OR |
||
4861 | |||
4862 | NIP |
||
4863 | OP0 @ W@ |
||
4864 | DUP 4000 OR ADD|XOR|OR|AND= INVERT |
||
4865 | OVER C01B <> AND \ SBB EAX, EAX |
||
4866 | OVER D02B <> AND \ SUB EDX, EAX |
||
4867 | OVER 4539 <> AND \ CMP X [EBP], EAX |
||
4868 | \ OVER 103B <> AND \ CMP EDX , [EAX] |
||
4869 | \ OVER 453B <> AND \ CMP EAX , X [EBP] |
||
4870 | \ OVER 053B <> AND \ CMP EAX , X |
||
4871 | OVER C083 <> AND \ ADD EAX , # X |
||
4872 | OVER C203 <> AND \ ADD EAX , EDX |
||
4873 | OVER C133 <> AND \ XOR EAX , ECX |
||
4874 | OVER F8C1 <> AND \ SAR EAX , X |
||
4875 | OVER 7D83 <> AND \ CMP X [EBP], # Z |
||
4876 | OVER 3D81 <> AND \ CMP 44444, # 55555 |
||
4877 | OVER 3C81 <> AND \ CMP X [EAX*4] , # 55555 |
||
4878 | OVER 7C81 <> AND \ CMP X [ESP] , # X |
||
4879 | OVER 3D83 <> AND \ CMP 44444, # 0 |
||
4880 | OVER 3C83 <> AND \ CMP [ESP], # 0 |
||
4881 | \ OVER C20B <> AND \ OR EAX , EDX |
||
4882 | NIP |
||
4883 | OP0 @ @ FFFFFF AND 240433 XOR \ XOR EAX , [ESP] |
||
4884 | AND |
||
4885 | AND |
||
4886 | IF SetOP 0xC00B W, \ OR EAX, EAX |
||
4887 | THEN |
||
4888 | \ DP @ TO :-SET |
||
4889 | ; |
||
4890 | |||
4891 | : ??BR-OPT |
||
4892 | OPT? IF OPT_INIT |
||
4893 | ?BR-OPT |
||
4894 | M\ -B DTST |
||
4895 | OPT_CLOSE |
||
4896 | THEN ; |
||
4897 | : ???BR-OPT |
||
4898 | OPT? 0= IF C00B W, \ OR EAX, EAX |
||
4899 | THEN |
||
4900 | FALSE TO ~BR-OPT 'DROP ??BR-OPT INLINE, |
||
4901 | TRUE TO ~BR-OPT |
||
4902 | OPT? |
||
4903 | IF OPT_INIT |
||
4904 | OP0 @ W@ C00B = DUP >R IF OP0 OPexcise THEN |
||
4905 | ['] NOOP ?BR-OPT DROP |
||
4906 | \ SetOP 0xC00B W, \ OR EAX, EAX |
||
4907 | OP0 @ W@ C00B = R> 0= AND IF OP0 OPexcise THEN |
||
4908 | OPT_CLOSE |
||
4909 | THEN |
||
4910 | ; |
||
4911 | |||
4912 | : OPT ( -- ) ['] NOOP DO_OPT DROP ; |
||
4913 | |||
4914 | : FORLIT, ( N -- ) |
||
4915 | 'DUP _INLINE, SetOP 0B8 C, , OPT ; |
||
4916 | |||
4917 | : CON>LIT ( CFA -- CFA TRUE | FALSE ) |
||
4918 | OPT? 0= IF TRUE EXIT THEN ?SET |
||
4919 | MM_SIZE 0= IF TRUE EXIT THEN |
||
4920 | DUP C@ 0E8 <> IF TRUE EXIT THEN |
||
4921 | |||
4922 | DUP 1+ REL@ CELL+ |
||
4923 | DUP CREATE-CODE = |
||
4924 | IF DROP OPT_INIT 5 + [>T] FORLIT, FALSE OPT_CLOSE EXIT |
||
4925 | THEN |
||
4926 | |||
4927 | DUP USER-CODE = |
||
4928 | IF DROP OPT_INIT 'DUP _INLINE, |
||
4929 | SetOP 878D W, 5 + @ , OPT FALSE OPT_CLOSE EXIT |
||
4930 | THEN |
||
4931 | |||
4932 | DUP USER-VALUE-CODE = |
||
4933 | IF DROP OPT_INIT 'DUP _INLINE, |
||
4934 | SetOP 878B W, 5 + @ , OPT FALSE OPT_CLOSE EXIT |
||
4935 | THEN |
||
4936 | |||
4937 | DUP CONSTANT-CODE = |
||
4938 | IF DROP OPT_INIT 5 + DUP 5 + REL@ |
||
4939 | TOVALUE-CODE CELL- = |
||
4940 | IF 'DUP _INLINE, SetOP 0A1 C, [>T] , OPT |
||
4941 | ELSE @ FORLIT, |
||
4942 | THEN FALSE OPT_CLOSE EXIT |
||
4943 | THEN |
||
4944 | DUP 1+ REL@ CELL+ DOES-CODE = |
||
4945 | IF 5 + \ CFA |
||
4946 | SWAP 5 + OPT_INIT FORLIT, |
||
4947 | TRUE OPT_CLOSE EXIT |
||
4948 | THEN |
||
4949 | DUP TOUSER-VALUE-CODE = |
||
4950 | IF DROP OPT_INIT |
||
4951 | SetOP 8789 W, CELL- @ , OPT |
||
4952 | 'DROP _INLINE, |
||
4953 | FALSE OPT_CLOSE EXIT |
||
4954 | THEN |
||
4955 | TOVALUE-CODE = |
||
4956 | IF OPT_INIT |
||
4957 | SetOP A3 C, CELL- [>T] , OPT |
||
4958 | 'DROP _INLINE, |
||
4959 | FALSE OPT_CLOSE EXIT |
||
4960 | THEN |
||
4961 | TRUE |
||
4962 | ; |
||
4963 | |||
4964 | : J?_STEP ( ADR OPX -- ADR OPX+4 FALSE | OPX TRUE TRUE | ADR FALSE TRUE ) |
||
4965 | |||
4966 | |||
4967 | OVER J-SET U> 0= IF DROP FALSE TRUE EXIT THEN |
||
4968 | OVER DP @ = IF NIP TRUE TRUE EXIT THEN |
||
4969 | DUP @ @ FFFFF0FF AND 800F = IF DROP FALSE TRUE EXIT THEN |
||
4970 | DUP @ @ 000000E9 = IF DROP FALSE TRUE EXIT THEN |
||
4971 | DUP CELL+ OP0 OpBuffSize + U> |
||
4972 | IF DROP FALSE TRUE EXIT THEN |
||
4973 | 2DUP @ = IF NIP CELL+ TRUE TRUE EXIT THEN |
||
4974 | CELL+ FALSE |
||
4975 | ; |
||
4976 | |||
4977 | : J_+! |
||
4978 | DUP C@ F0 |
||
4979 | AND 70 = IF 1+ ELSE |
||
4980 | DUP C@ EB = IF 1+ ELSE |
||
4981 | DUP C@ E9 = IF 1+ ELSE |
||
4982 | DUP W@ F0FF |
||
4983 | AND 800F = IF 2+ ELSE |
||
4984 | ." J_+! ERR" ABORT |
||
4985 | THEN THEN THEN THEN +! |
||
4986 | ; |
||
4987 | |||
4988 | : J_MOVE ( OPX n -- ) |
||
4989 | OVER OP0 <> |
||
4990 | IF |
||
4991 | OVER CELL- @ |
||
4992 | 2DUP - NEGATE |
||
4993 | OVER DP @ - NEGATE ( U. U. U. ABORT ) CMOVE |
||
4994 | OVER OP0 |
||
4995 | ?DO DUP NEGATE I +! |
||
4996 | I @ C@ E8 = IF DUP I @ 1+ +! THEN |
||
4997 | CELL |
||
4998 | +LOOP |
||
4999 | THEN |
||
5000 | OVER @ |
||
5001 | JP0 JpBuffSize + JP0 |
||
5002 | ?DO I @ |
||
5003 | IF DUP I @ U< |
||
5004 | IF |
||
5005 | OVER NEGATE I +! |
||
5006 | DUP I @ J_@ U> |
||
5007 | IF OVER I @ J_+! |
||
5008 | THEN |
||
5009 | ELSE |
||
5010 | DUP I @ <> |
||
5011 | IF |
||
5012 | DUP I @ J_@ U< |
||
5013 | IF OVER NEGATE I @ J_+! |
||
5014 | THEN |
||
5015 | THEN |
||
5016 | THEN |
||
5017 | THEN CELL |
||
5018 | +LOOP DROP |
||
5019 | \ THEN |
||
5020 | |||
5021 | NIP NEGATE DUP ALLOT :-SET + TO :-SET EXIT |
||
5022 | ; |
||
5023 | |||
5024 | TRUE VALUE J_OPT? |
||
5025 | |||
5026 | |||
5027 | \ FALSE VALUE J_OPT? |
||
5028 | |||
5029 | : RESOLVE_OPT ( ADR -- ) |
||
5030 | |||
5031 | OPT? 0= IF DROP EXIT THEN |
||
5032 | J_OPT? 0= IF DROP EXIT THEN |
||
5033 | |||
5034 | DUP CELL- JP0 JpBuffSize + CELL- @ U< |
||
5035 | IF DUP CELL- REL@ CELL+ J-SET UMAX TO J-SET THEN |
||
5036 | |||
5037 | \ ." J_S" \ BASE @ HEX J-SET U. DP @ U. BASE ! |
||
5038 | DP @ OVER - 7E > IF ( ." S" ) DROP EXIT THEN |
||
5039 | DP @ LAST-HERE <> IF ( ." L" ) ?SET DROP EXIT THEN |
||
5040 | OPT? 0= IF DROP EXIT THEN |
||
5041 | CELL+ OP0 |
||
5042 | BEGIN J?_STEP |
||
5043 | UNTIL |
||
5044 | IF DUP @ |
||
5045 | DUP C@ E9 = |
||
5046 | IF EB SWAP C! 3 |
||
5047 | ELSE |
||
5048 | DUP 1+ W@ 10 - \ 400 + |
||
5049 | SWAP W! 4 |
||
5050 | THEN |
||
5051 | \ OVER CELL- @ REST |
||
5052 | J_MOVE DP @ TO LAST-HERE EXIT |
||
5053 | THEN \ OPX |
||
5054 | DROP |
||
5055 | |||
5056 | ; |
||
5057 | \ 0 TO J_OPT? |
||
5058 | |||
5059 | BASE !> |
||
5060 | |||
5061 |