Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 4866 → Rev 4867

/programs/develop/SPForth/MACROS.INC
0,0 → 1,264
; new application structure
macro meos_app_start
{
use32
org 0x0
 
db 'MENUET01'
dd 0x01
dd __start
dd __end
dd __memory
dd __stack
 
if used __params & ~defined __params
dd __params
else
dd 0x0
end if
 
dd 0x0
}
MEOS_APP_START fix meos_app_start
 
macro code
{
__start:
}
CODE fix code
 
macro data
{
__data:
}
DATA fix data
 
macro udata
{
if used __params & ~defined __params
__params:
db 0
__end:
rb 255
else
__end:
end if
__udata:
}
UDATA fix udata
 
macro meos_app_end
{
align 32
rb 2048
__stack:
__memory:
}
MEOS_APP_END fix meos_app_end
 
 
; macro for defining multiline text data
struc mstr [sstring]
{
forward
local ssize
virtual at 0
db sstring
ssize = $
end virtual
dd ssize
db sstring
common
dd -1
}
 
 
; strings
macro sz name,[data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if used name
db data
end if
common
if used name
.size = $-name
end if
}
 
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
common
label name
forward
if lang eq lng
db data
end if
common
.size = $-name
}
 
 
 
; easy system call macro
macro mpack dest, hsrc, lsrc
{
if (hsrc eqtype 0) & (lsrc eqtype 0)
mov dest, (hsrc) shl 16 + lsrc
else
if (hsrc eqtype 0) & (~lsrc eqtype 0)
mov dest, (hsrc) shl 16
add dest, lsrc
else
mov dest, hsrc
shl dest, 16
add dest, lsrc
end if
end if
}
 
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
end if
}
 
macro mcall a,b,c,d,e,f { ; mike.dld
__mov eax,a
__mov ebx,b
__mov ecx,c
__mov edx,d
__mov esi,e
__mov edi,f
int 0x40
}
 
 
 
; language for programs
;lang fix ru ; ru en fr ge fi
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
macro add arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
inc arg1
else
add arg1,arg2
end if
else
add arg1,arg2
end if
}
 
macro sub arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
dec arg1
else
sub arg1,arg2
end if
else
sub arg1,arg2
end if
}
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
xor arg1,arg1
inc arg1
else if (arg2) = -1
or arg1,-1
else if (arg2) > -128 & (arg2) < 128
push arg2
pop arg1
else
mov arg1,arg2
end if
else
mov arg1,arg2
end if
}
 
 
macro struct name
{
virtual at 0
name name
sizeof.#name = $ - name
end virtual
}
 
; structures used in MeOS
struc process_information
{
.cpu_usage dd ? ; +0
.window_stack_position dw ? ; +4
.window_stack_value dw ? ; +6
.not_used1 dw ? ; +8
.process_name rb 12 ; +10
.memory_start dd ? ; +22
.used_memory dd ? ; +26
.PID dd ? ; +30
.x_start dd ? ; +34
.y_start dd ? ; +38
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
}
struct process_information
 
struc system_colors
{
.frame dd ?
.grab dd ?
.grab_button dd ?
.grab_button_text dd ?
.grab_text dd ?
.work dd ?
.work_button dd ?
.work_button_text dd ?
.work_text dd ?
.work_graph dd ?
}
struct system_colors
 
 
; constants
 
; events
EV_IDLE = 0
EV_TIMER = 0
EV_REDRAW = 1
EV_KEY = 2
EV_BUTTON = 3
EV_EXIT = 4
EV_BACKGROUND = 5
EV_MOUSE = 6
EV_IPC = 7
EV_STACK = 8
 
; event mask bits for function 40
EVM_REDRAW = 1b
EVM_KEY = 10b
EVM_BUTTON = 100b
EVM_EXIT = 1000b
EVM_BACKGROUND = 10000b
EVM_MOUSE = 100000b
EVM_IPC = 1000000b
EVM_STACK = 10000000b
/programs/develop/SPForth/amain.asm
0,0 → 1,417
 
 
reserve EQU Mreserve-main_task
 
 
 
amain:
MOV [ByeLevel],ESP
mov edi, main_task
call cfa_INIT
ret
 
TIB_SIZE EQU 1027
PAD_SIZE EQU 1027
 
include 'img.asm'
 
cfa_AHEADER 0,"BYE",_BYE
MOV ESP,[ByeLevel]
RET
 
 
cfa_AHEADER 0,"_SLITERAL-CODE",_SLITERALminusCODE
LEA EBP, [EBP-8]
MOV [EBP+4], EAX
POP EBX
MOVZX EAX, BYTE [EBX]
LEA EBX, [EBX+1]
MOV [EBP], EBX
LEA EBX, [EBX+EAX]
LEA EBX, [EBX+1]
JMP EBX
 
 
 
cfa_AHEADER 0,"_CONSTANT-CODE",_CONSTANTminusCODE
LEA EBP,[EBP-4]
MOV [EBP],EAX
POP EAX
MOV EAX,[EAX]
RET
 
cfa_AHEADER 0,"_CREATE-CODE",_CREATEminusCODE
DB 083H ,0EDH ,4
DB 089H ,045H ,0
DB 058H
DB 0C3H
 
cfa_AHEADER 0,"_TOVALUE-CODE",_TOVALUEminusCODE
DB 05BH
DB 08DH ,05BH ,0F7H
DB 089H ,03
DB 08BH ,045H ,00
DB 08DH ,06DH ,04
DB 0C3H
 
cfa_AHEADER 0,"TOVALUE-CODE",TOVALUEminusCODE
call cfa__CONSTANTminusCODE
DD cfa__TOVALUEminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"VECT-CODE",VECTminusCODE
call cfa__CONSTANTminusCODE
DD cfa__VECTminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"_VECT-CODE",_VECTminusCODE
DB 05BH
DB 0FFH ,023H
 
cfa_AHEADER 0,"_USER-VALUE-CODE", _USERminusVALUEminusCODE
LEA EBP,[EBP-4]
MOV [EBP],EAX
POP EAX
MOV EAX,[EAX]
LEA EAX,[EDI+EAX]
MOV EAX,[EAX]
RET
 
cfa_AHEADER 0,"USER-VALUE-CODE",USERminusVALUEminusCODE
call cfa__CONSTANTminusCODE
DD cfa__USERminusVALUEminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"_TOUSER-VALUE-CODE",_TOUSERminusVALUEminusCODE
DB 05BH
DB 083H ,0EBH ,09
DB 08BH ,01BH
DB 03 ,0DFH
DB 089H ,03
DB 08BH ,045H ,00
DB 083H ,0C5H ,04
DB 0C3H
 
cfa_AHEADER 0,"TOUSER-VALUE-CODE",TOUSERminusVALUEminusCODE
call cfa__CONSTANTminusCODE
DD cfa__TOUSERminusVALUEminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"_USER-CODE", _USERminusCODE
LEA EBP,[EBP-4]
MOV [EBP],EAX
POP EAX
MOV EAX,[EAX]
LEA EAX,[EDI+EAX]
RET
 
cfa_AHEADER 0,"DOES>A",DOESgreatA
call cfa__USERminusCODE
DD T_DOESgreatA-main_task
 
cfa_AHEADER 0,"USER-CODE",USERminusCODE
call cfa__CONSTANTminusCODE
DD cfa__USERminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"CREATE-CODE",CREATEminusCODE
call cfa__CONSTANTminusCODE
DD cfa__CREATEminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"CONSTANT-CODE",CONSTANTminusCODE
call cfa__CONSTANTminusCODE
DD cfa__CONSTANTminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"_CLITERAL-CODE",_CLITERALminusCODE
DB 083H ,0EDH ,04
DB 089H ,045H ,00
DB 058H
DB 0FH ,0B6H ,018H
DB 08DH ,05CH ,03 ,02
DB 0FFH ,0E3H
 
cfa_AHEADER 0,"CLITERAL-CODE",CLITERALminusCODE
call cfa__CONSTANTminusCODE
DD cfa__CLITERALminusCODE
call cfa__TOVALUEminusCODE
 
 
cfa_AHEADER 0,'BASE',BASE
call cfa__USERminusCODE
DD T_BASE-main_task
 
cfa_AHEADER 0,'PAD',PAD
call cfa__USERminusCODE
DD T_PAD-main_task
 
cfa_AHEADER 0,'LAST',LAST
call cfa__CREATEminusCODE
DD LastNFA
 
cfa_AHEADER 0,'DP',DP
call cfa__CONSTANTminusCODE
DD CP_P ; DP_BUFF
 
cfa_AHEADER 0,'''DROP_V',ticDROP_V
call cfa__CONSTANTminusCODE+00H
DD cfa_DROP
call cfa__TOVALUEminusCODE+00H
 
cfa_AHEADER 0,'''DUP_V',ticDUP_V
 
call cfa__CONSTANTminusCODE
DD cfa_DUP
call cfa__TOVALUEminusCODE+00H
 
cfa_AHEADER 0,'CONTEXT',_CONTEXT
call cfa__USERminusVALUEminusCODE
DD T_CONTEXT-main_task
call cfa__TOUSERminusVALUEminusCODE
 
cfa_AHEADER 0,'>IN',greatIN
call cfa__USERminusCODE
DD T_greatIN-main_task
 
cfa_AHEADER 0,'>OUT',greatOUT
call cfa__CREATEminusCODE
TO_OUT dd 0
 
cfa_AHEADER 0,'CURFILE',CURFILE
call cfa__USERminusCODE
DD T_CURFILE-main_task
 
cfa_AHEADER 0,'S0',S0
call cfa__USERminusCODE
DD T_S0-main_task
 
cfa_AHEADER 0,'R0',R0
call cfa__USERminusCODE
DD T_R0-main_task
 
cfa_AHEADER 0,'SOURCE-ID',SOURCEminusID
call cfa__USERminusVALUEminusCODE
DD T_SOURCEminusID-main_task
call cfa__TOUSERminusVALUEminusCODE
 
cfa_AHEADER 0,'TIB',TIB
call cfa__USERminusVALUEminusCODE
DD T_TIB-main_task
call cfa__TOUSERminusVALUEminusCODE
 
cfa_AHEADER 0,'#TIN',nTIB
call cfa__USERminusCODE
DD T_nTIB-main_task
 
cfa_AHEADER 0,'CURSTR',CURSTR
call cfa__USERminusCODE
DD T_CURSTR-main_task
 
cfa_AHEADER 0,'SLITERAL-CODE',SLITERALminusCODE
call cfa__CONSTANTminusCODE
DD cfa__SLITERALminusCODE
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,'USER-OFFS',USERminusOFFS
call cfa__CREATEminusCODE
DD reserve+MUSEROFFS
 
cfa_AHEADER 0,'HANDLER',HANDLER
call cfa__USERminusCODE
DD T_HANDLER-main_task
 
cfa_AHEADER 0,'STATE',STATE
call cfa__USERminusCODE
DD T_STATE-main_task
 
cfa_AHEADER 0,'CURRENT',CURRENT
call cfa__USERminusCODE
DD T_CURRENT-main_task
 
cfa_AHEADER 0,'W-CNT',WminusCNT
call cfa__USERminusCODE
DD T_WminusCNT-main_task
 
cfa_AHEADER 0,'S-O',SminusO
call cfa__USERminusCODE
DD T_SminusO-main_task
 
cfa_AHEADER 0,'ER-U',ERminusU
call cfa__USERminusCODE
DD T_ERminusU-main_task
 
cfa_AHEADER 0,'ER-A',ERminusA
call cfa__USERminusCODE
DD T_ERminusA-main_task
 
cfa_AHEADER 0,'FORTH-WORDLIST',FORTHminusWORDLIST
call cfa__CONSTANTminusCODE
DD T_FORTH+4
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,'VOC-LIST',VOCminusLIST
call cfa__CREATEminusCODE
DD T_FORTH
 
cfa_AHEADER 0,'WARNING',WARNING
call cfa__USERminusCODE
DD T_WARNING-main_task
 
;cfa_AHEADER 0,'LAST_KEY',LAST_KEY
; call cfa__CREATEminusCODE
; DD last_key
 
cfa_AHEADER 0,"BLK",BLK
call cfa__USERminusCODE
DD T_BLK-main_task
 
 
 
;cfa_AHEADER 0,"UZERO",UZERO_M
; call cfa__CONSTANTminusCODE
; DD UZERO
 
cfa_AHEADER 0,"UPP",UPP_M
call cfa__CONSTANTminusCODE
DD UPP
 
cfa_AHEADER 0,"ULAST",ULAST_M
call cfa__CONSTANTminusCODE
DD ULAST
 
cfa_AHEADER 0,"SPP",SPP_M
call cfa__CONSTANTminusCODE
DD SPP
cfa_AHEADER 0,"TIBB",TIBB_M
call cfa__CONSTANTminusCODE
DD TIBB
 
cfa_AHEADER 0,"#TIB",NTIB_M
call cfa__CONSTANTminusCODE
DD NTIB_P
 
cfa_AHEADER 0,"sbuf",screen_buf_M
call cfa__CONSTANTminusCODE
DD screen_buf
 
cfa_AHEADER 0,"cursor",cursor_M
call cfa__CONSTANTminusCODE
DD cursor
 
cfa_AHEADER 0,"FINFO",FINFO
call cfa__CREATEminusCODE
DD FINFO
 
cfa_AHEADER 0,"ROWH",ROWH
call cfa__CONSTANTminusCODE
DD ROWH
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"ROWW",ROWW
call cfa__CONSTANTminusCODE
DD 6
call cfa__TOVALUEminusCODE
 
cfa_AHEADER 0,"MEMS",MEMS
call cfa__CONSTANTminusCODE
DD MEMS
 
cfa_AHEADER 0,"draw_window",draw_window
PUSH EDI
CALL draw_window
POP EDI
RET
 
; cfa_AHEADER 0,'MEBLK',MEBLK
; call cfa__USERminusCODE
; DD BLK_P-main_task
 
main_task:
T_R0:
DD 0
T_S0:
DD SPP ;STACK0
T_WARNING:
DD -1
T_STATE:
DD 0
T_BLK:
DD 0
T_CURFILE:
DD 0
T_HANDLER:
DD 0
T_HLD:
DD 5
T_BASE:
DD 0AH
DD PAD_SIZE DUP (0)
T_PAD:
DD PAD_SIZE DUP (0)
T_ERminusA:
DD 0
T_ERminusU:
DD 0
T_DOESgreatA:
DD 0
;T_ALIGNminusBYTES:
DD 0
T_nTIB:
DD 0
T_greatIN:
DD 5
T_TIB:
DD T_ATIB
T_ATIB:
DD TIB_SIZE DUP (0)
T_SOURCEminusID:
DD 0
T_CURSTR:
DD 0
T_WBWminusNFA:
DD 0
T_WBWminusOFFS:
DD 0
T_CURRENT:
DD T_FORTH+4
T_SminusO:
DD T_FORTH+4,T_FORTH+4
DD 16 DUP (0)
T_CONTEXT:
DD T_SminusO
T_greatOUT:
DD 0
T_WminusCNT:
DD 0
T_NNN:
DD 0
Mreserve:
DD MUSEROFFS DUP (0)
UPP:
 
BASE_P DD BASEE
TEMP_P DD 0
INN_P DD 0
NTIB_P DD 0
TIB_P DD TIBB
;TEVAL_P DD INTER
HLD_P DD 0
CNTXT_P DD 0
CP_P DD CTOP
;LAST_P DD LASTN ;LAST
EMIT_PROC_P DD -1 ; EMITPROC
reg_struc_P DD 0
; BLK_P DD FILE_B
; fi_struc_P DD FINFO
workarea_P DD os_work
 
DD 1000 DUP (0)
 
T_FORTH:
DD 0 ; ¤«ï VOC-LIST
DD LastNFA ;  ¤à¥á ¯®á«¥¤­¥£® ¨¬¥­¨ !!!!!!!!
DD 0 ; ¯à¥¤®ª
DD 0 ; ª« áá
 
ByeLevel DD 0
/programs/develop/SPForth/build.bat
0,0 → 1,5
spf4.exe src/gspf.f S" img.asm" TSAVE CR BYE
call mbuild.bat
 
 
pause
/programs/develop/SPForth/debug.inc
0,0 → 1,137
macro debug_print str
{
local ..string, ..label
 
jmp ..label
..string db str,0
..label:
 
pushf
pushad
mov edx,..string
call debug_outstr
popad
popf
}
 
dps fix debug_print
 
macro debug_print_dec arg
{
pushf
pushad
if ~arg eq eax
mov eax,arg
end if
call debug_outdec
popad
popf
}
 
dpd fix debug_print_dec
 
;---------------------------------
debug_outdec: ;(eax - num, edi-str)
push 10 ;2
pop ecx ;1
push -'0' ;2
.l0:
xor edx,edx ;2
div ecx ;2
push edx ;1
test eax,eax ;2
jnz .l0 ;2
.l1:
pop eax ;1
add al,'0' ;2
call debug_outchar ; stosb
jnz .l1 ;2
ret ;1
;---------------------------------
 
debug_outchar: ; al - char
pushf
pushad
mov cl,al
mov eax,63
mov ebx,1
int 0x40
popad
popf
ret
 
debug_outstr:
mov eax,63
mov ebx,1
@@:
mov cl,[edx]
test cl,cl
jz @f
int 40h
inc edx
jmp @b
@@:
ret
 
_debug_crlf db 13, 10, 0
 
macro newline
{
pushf
pushad
mov edx, _debug_crlf
call debug_outstr
popad
popf
}
 
macro print message
{
dps message
newline
}
 
macro pregs
{
dps "EAX: "
dpd eax
dps " EBX: "
dpd ebx
newline
dps "ECX: "
dpd ecx
dps " EDX: "
dpd edx
newline
}
 
macro debug_print_hex arg
{
pushf
pushad
if ~arg eq eax
mov eax, arg
end if
call debug_outhex
popad
popf
}
dph fix debug_print_hex
 
debug_outhex:
; eax - number
mov edx, 8
.new_char:
rol eax, 4
movzx ecx, al
and cl, 0x0f
mov cl, [__hexdigits + ecx]
pushad
mcall 63, 1
popad
dec edx
jnz .new_char
ret
 
__hexdigits:
db '0123456789ABCDEF'
/programs/develop/SPForth/devel/~ac/lib/LOCALS.F
0,0 → 1,193
lib\ext\locals.f \EOF
 
( 28.Mar.2000 Andrey Cherezov Copyright [C] RU FIG
Èñïîëüçîâàíû èäåè ñëåäóþùèõ àâòîðîâ:
Ruvim Pinka; Dmitry Yakimov; Oleg Shalyopa; Yuriy Zhilovets;
Konstantin Tarasov
 
!! Ðàáîòàåò, òîëüêî íà÷èíàÿ ñ 30 áèëäà SPF/3.75: VERSION . 375030 Ok
)
 
( Ïðîñòîå ðàñøèðåíèå ÑÏ-Ôîðòà ëîêàëüíûìè ïåðåìåííûìè.
Ðåàëèçîâàíî áåç èñïîëüçîâàíèÿ LOCALS ñòàíäàðòà 94.
 
Îáúÿâëåíèå âðåìåííûõ ïåðåìåííûõ, âèäèìûõ òîëüêî âíóòðè
òåêóùåãî ñëîâà è îãðàíè÷åííûõ âðåìåíåì âûçîâà äàííîãî
ñëîâà âûïîëíÿåòñÿ ñ ïîìîùüþ ñëîâà "{". Âíóòðè îïðåäåëåíèÿ
ñëîâà èñïîëüçóåòñÿ êîíñòðóêöèÿ, ïîäîáíàÿ ñòåêîâîé íîòàöèè Ôîðòà
{ ñïèñîê_èíèöèàëèçèðîâàííûõ_ëîêàëîâ \ ñï.íåèíèö.ëîêàëîâ -- ÷òî óãîäíî }
Íàïðèìåð:
 
{ a b c d \ e f -- i j }
 
×àñòü "\ ñï.íåèíèö.ëîêàëîâ" ìîæåò îòñóòñòâîâàòü, íàïðèìåð:
 
{ item1 item2 -- }
 
Ýòî çàñòàâëÿåò ÑÏ-Ôîðò àâòîìàòè÷åñêè âûäåëÿòü ìåñòî â
ñòåêå âîçâðàòîâ äëÿ ýòèõ ïåðåìåííûõ â ìîìåíò âûçîâà ñëîâà
è àâòîìàòè÷åñêè îñâîáîæäàòü ìåñòî ïðè âûõîäå èç íåãî.
 
Îáðàùåíèå ê òàêèì ëîêàëüíûì ïåðåìåííûì - êàê ê VALUE-ïåðåìåííûì
ïî èìåíè. Åñëè íóæåí àäðåñ ïåðåìåííîé, òî èñïîëüçóåòñÿ "^ èìÿ".
 
Ïðèìåðû:
 
: TEST { a b c d \ e f -- } a . b . c . b c + -> e e . f . ^ a @ . ;
Ok
1 2 3 4 TEST
1 2 3 5 0 1 Ok
 
: TEST { a b -- } a . b . CR 5 0 DO I . a . b . CR LOOP ;
Ok
12 34 TEST
12 34
0 12 34
1 12 34
2 12 34
3 12 34
4 12 34
Ok
 
: TEST { a b } a . b . ;
Ok
1 2 TEST
1 2 Ok
 
: TEST { a b \ c } a . b . c . ;
Ok
1 2 TEST
1 2 0 Ok
 
: TEST { a b -- } a . b . ;
Ok
1 2 TEST
1 2 Ok
 
: TEST { a b \ c -- d } a . b . c . ;
Ok
1 2 TEST
1 2 0 Ok
 
: TEST { \ a b } a . b . 1 -> a 2 -> b a . b . ;
Ok
TEST
0 0 1 2 Ok
 
Èìåíà ëîêàëüíûõ ïåðåìåííûõ ñóùåñòâóþò â äèíàìè÷åñêîì
âðåìåííîì ñëîâàðå òîëüêî â ìîìåíò êîìïèëÿöèè ñëîâà, à
ïîñëå ýòîãî âû÷èùàþòñÿ è áîëåå íåäîñòóïíû.
 
Èñïîëüçîâàòü êîíñòðóêöèþ "{ ... }" âíóòðè îäíîãî îïðåäåëåíèÿ ìîæíî
òîëüêî îäèí ðàç.
 
Êîìïèëÿöèÿ ýòîé áèáëèîòåêè äîáàâëÿåò â òåêóùèé ñëîâàðü êîìïèëÿöèè
Òîëüêî äâà ñëîâà:
ñëîâàðü "vocLocalsSupport" è "{"
Âñå îñòàëüíûå äåòàëè "ñïðÿòàíû" â ñëîâàðå, èñïîëüçîâàòü èõ
íå ðåêîìåíäóåòñÿ.
)
 
 
VOCABULARY vocLocalsSupport
 
GET-CURRENT ALSO vocLocalsSupport DEFINITIONS
 
USER widLocals
USER uLocalsCnt
USER uLocalsUCnt
USER uPrevCurrent
USER uAddDepth
 
: (Local^) ( N -- ADDR )
RP@ +
;
: LocalOffs ( n -- offs )
uLocalsCnt @ SWAP - CELLS CELL+ uAddDepth @ +
;
: CompileLocalsInit
uPrevCurrent @ SET-CURRENT
uLocalsCnt @ uLocalsUCnt @ - ?DUP IF CELLS LIT, POSTPONE DRMOVE THEN
uLocalsUCnt @ ?DUP IF LIT, POSTPONE (RALLOT) THEN
uLocalsCnt @ ?DUP
IF CELLS LIT, POSTPONE >R ['] (LocalsExit) LIT, POSTPONE >R THEN
;
: CompileLocal@ ( n -- )
LocalOffs LIT, POSTPONE RP+@
;
: LocalsStartup
TEMP-WORDLIST widLocals !
GET-CURRENT uPrevCurrent !
ALSO vocLocalsSupport
ALSO widLocals @ CONTEXT ! DEFINITIONS
uLocalsCnt 0!
uLocalsUCnt 0!
uAddDepth 0!
;
: LocalsCleanup
PREVIOUS PREVIOUS
widLocals @ FREE-WORDLIST
;
: LocalsDoes@
uLocalsCnt @ ,
uLocalsCnt 1+!
DOES> @ CompileLocal@
;
: ;; POSTPONE ; ; IMMEDIATE
 
: ^ ' >BODY @ LocalOffs LIT, POSTPONE RP+ ; IMMEDIATE
 
: -> ' >BODY @ LocalOffs LIT, POSTPONE RP+! ; IMMEDIATE
 
: â POSTPONE -> ; IMMEDIATE
 
WARNING @ WARNING 0!
\ ===
\ ïåðåîïðåäåëåíèå ñîîòâåòñòâóþùèõ ñëîâ äëÿ âîçìîæíîñòè èñïîëüçîâàòü
\ âðåìåííûå ïåðåìåííûå âíóòðè öèêëà DO LOOP è íåçàâèñèìî îò èçìåíåíèÿ
\ ñîäåðæèìîãî ñòåêà âîçâðàòîâ ñëîâàìè >R R>
 
: DO POSTPONE DO [ 3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: ?DO POSTPONE ?DO [ 3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: LOOP POSTPONE LOOP [ -3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: +LOOP POSTPONE +LOOP [ -3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: >R POSTPONE >R [ 1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: R> POSTPONE R> [ -1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: RDROP POSTPONE RDROP [ -1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
 
\ ===
 
: ; LocalsCleanup POSTPONE ; ; IMMEDIATE
 
WARNING !
 
\ =====================================================================
SET-CURRENT
 
: {
LocalsStartup
BEGIN
BL SKIP PeekChar DUP [CHAR] \ <>
OVER [CHAR] - <> AND
SWAP [CHAR] } <> AND
WHILE
CREATE LocalsDoes@ IMMEDIATE
REPEAT
 
PeekChar >IN 1+! DUP [CHAR] } <>
IF
[CHAR] \ =
IF
BEGIN
BL SKIP PeekChar DUP [CHAR] - <> SWAP [CHAR] } <> AND
WHILE
CREATE LocalsDoes@ IMMEDIATE
uLocalsUCnt 1+!
REPEAT
THEN
[CHAR] } PARSE 2DROP
ELSE DROP THEN
CompileLocalsInit
;; IMMEDIATE
 
PREVIOUS
/programs/develop/SPForth/devel/~ac/lib
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~ac
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~af/lib/comments.f
0,0 → 1,9
\ $Id: comments.f,v 1.2 2002/06/18 14:50:22 anfilat Exp $
\ ¥é¥ ®¤¨­ ¬­®£®áâà®ç­ë© ª®¬¥­â à¨© :-) (~ruvim)
: (* ( -- )
BEGIN
NextWord DUP 0=
IF NIP REFILL 0= IF DROP TRUE THEN
ELSE S" *)" COMPARE 0= THEN
UNTIL
; IMMEDIATE
/programs/develop/SPForth/devel/~af/lib
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~af
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/CompIF.f
0,0 → 1,25
 
: [ELSE]
1
BEGIN
NextWord DUP
IF
2DUP S" [IF]" COMPARE 0= IF 2DROP 1+ ELSE
2DUP S" [ELSE]" COMPARE 0= IF 2DROP 1- DUP IF 1+ THEN ELSE
S" [THEN]" COMPARE 0= IF 1- THEN
THEN THEN
ELSE 2DROP REFILL AND \ SOURCE TYPE
THEN DUP 0=
UNTIL DROP ; IMMEDIATE
 
: [IF] 0= IF [COMPILE] [ELSE] THEN ; IMMEDIATE
 
: [THEN] ; IMMEDIATE
 
C" \S" FIND NIP 0=
[IF]
: \S \ comment to end of file
SOURCE-ID FILE-SIZE DROP
SOURCE-ID REPOSITION-FILE DROP
[COMPILE] \ ; IMMEDIATE
[THEN]
/programs/develop/SPForth/devel/~mak/DIS486.F
0,0 → 1,1559
\ 80386 DISASSEMBLER
\ ANDREW MCKEWAN, APRIL 1994
\ TOM ZIMMER, 05/18/94 PORT TO WIN32F
\ MODIFIED TO WORD IN DECIMAL 08/03/94 10:04 TJZ
\ 06-??-95 SMUB NEXT SEQUENCE DEFINED IN FKERNEL
\ 06-21-95 SMUB REMOVED REDUNDANT COUNT CALLS FROM TXB, LXS.
\ 04-??-97 EXTENDED BY C.L. TO INCLUDE P6 AND MMX INSTRUCTIONS
\
REQUIRE MAXSTRING ~mak\UTILS_.F
 
CR .( LOADING 80486 DISASSEMBLER...)
 
ONLY FORTH ALSO DEFINITIONS
 
0 VALUE DEFAULT-16BIT?
 
: DEFAULT-16BIT ( -- )
TRUE TO DEFAULT-16BIT? ;
 
: DEFAULT-32BIT ( -- )
FALSE TO DEFAULT-16BIT? ;
 
VECT SHOW-NAME ( CFA -- ) \ DISPLAY NEAREST SYMBOL
 
0 VALUE BASE-ADDR
 
VOCABULARY DISASSEMBLER
DISASSEMBLER ALSO DEFINITIONS
 
DECIMAL
 
CREATE S-BUF MAXSTRING ALLOT
 
: >S ( A1 N1 -- )
S-BUF +PLACE ;
 
: 0>S ( -- ) \ RESET S-BUF
S-BUF OFF ;
 
: SSPACES ( N1 -- )
SPCS SWAP S-BUF +PLACE ;
 
: SSPACE ( -- )
1 SSPACES ;
 
: EMIT>S ( C1 -- )
S-BUF C+PLACE ;
 
: S> ( -- A1 N1 )
S-BUF COUNT ;
 
: (.S") ( addr len -- )
S-BUF +PLACE ;
 
: .S" ( 'TEXT' -- )
[CHAR] " PARSE
POSTPONE SLITERAL
POSTPONE (.S") ; IMMEDIATE
 
 
: D.R>S ( D W -- )
>R (D.) R> OVER - SSPACES >S ;
 
: .R>S ( N W -- )
>R S>D R> D.R>S ;
 
: U.R>S ( U W -- )
0 SWAP D.R>S ;
 
: H.>S ( U -- )
BASE @ SWAP HEX 0 (D.) >S SSPACE BASE ! ;
 
: H.R>S ( N1 N2 -- )
BASE @ >R HEX >R
0 <# #S #> R> OVER - SSPACES >S
R> BASE ! ;
 
: ?.NAME>S ( CFA -- )
\ ELIMINATE " 0X"
DUP 1 H.R>S SSPACE
DUP WordByAddr
>R TUCK 1- NAME> =
IF .S" ( " R> >S .S" ) "
ELSE RDROP DROP
THEN
;
 
' ?.NAME>S TO SHOW-NAME
 
\ 32 CONSTANT COMMENT-COL
 
0 VALUE SIZE
0 VALUE 16-BIT-DATA
0 VALUE 16-BIT-ADDR
0 VALUE PREFIX-OP
0 VALUE MMX-REG
 
: @+ ( ADDR -- ADDR N ) DUP CELL+ SWAP @ ;
: W@+ ( ADDR -- ADDR N ) DUP 2 + SWAP W@ ;
 
: SEXT ( BYTE -- N ) DUP 128 AND IF 0xFFFFFF00 OR THEN ;
: MOD/SIB ( MOD-R-R/M -- R/M R MOD ) \ R INCLUDING GENERAL, SPECIAL, SEGMENT, MMX
( MOD-OP-R/M -- R/M OP MOD )
( S-I-B -- B I S )
255 AND 8 /MOD 8 /MOD ;
 
: ??? ( N1 -- )
.S" ??? " DROP ;
 
: SS. ( N ADR LEN W ) >R DROP SWAP R@ * + R> >S SSPACE ;
 
: TTTN ( CODE -- ) 15 AND S" O NOB AEE NEBEA S NSP NPL GELEG " 2 SS. ;
 
: SREG ( SREG -- ) 3 RSHIFT 7 AND S" ESCSSSDSFSGSXXXX" 2 SS. ;
: CREG ( EEE -- ) 3 RSHIFT 7 AND S" CR0???CR2CR3CR4?????????" 3 SS. ;
: DREG ( EEE -- ) 3 RSHIFT 7 AND S" DR0DR1DR2DR3??????DR6DR7" 3 SS. ;
: TREG ( EEE -- ) 3 RSHIFT 7 AND S" ?????????TR3TR4TR5TR6TR7" 3 SS. ; \ OBSOLETE
: MREG ( N -- ) 7 AND S" MM0MM1MM2MM3MM4MM5MM6MM7" 3 SS. ;
 
: REG8 ( N -- ) 7 AND S" ALCLDLBLAHCHDHBH" 2 SS. ;
: REG16 ( N -- ) 7 AND S" AXCXDXBXSPBPSIDI" 2 SS. ;
: REG32 ( N -- ) 7 AND S" EAXECXEDXEBXESPEBPESIEDI" 3 SS. ;
: REG16/32 ( N -- )
16-BIT-DATA
IF REG16
ELSE REG32
THEN ;
: REG ( A N -- A )
MMX-REG
IF MREG
ELSE SIZE
IF REG16/32
ELSE REG8
THEN
THEN
;
 
: [BASE16] ( R/M -- ) 4 - S" [SI][DI][BP][BX]" 4 SS. ;
\ R/M = 4 , 5 , 6 , 7
: [IND16] ( R/M -- ) S" [BX+SI][BX+DI][BP+SI][BP+DI]" 7 SS. ;
\ R/M = 0 , 1 , 2 , 3
: [REG16] ( R/M -- ) DUP 4 <
IF [IND16]
ELSE [BASE16]
THEN ;
: [REG32] ( N -- ) 7 AND S" [EAX][ECX][EDX][EBX][ESP][EBP][ESI][EDI]" 5 SS. ;
 
\ : [REG] ( R/M -- ) 16-BIT-ADDR
\ IF [REG16]
\ ELSE [REG32]
\ THEN SSPACE ;
 
\ : [REG] ( N -- )
\ 7 AND
\ 16-BIT-ADDR
\ IF S" [BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [BP] [BX]"
\ ROT 0
\ ?DO BL SKIP BL SCAN
\ LOOP BL SKIP 2DUP BL SCAN NIP - >S 2 SSPACES
\ ELSE S" [EAX][ECX][EDX][EBX][ESP][EBP][ESI][EDI]" 5 SS. SSPACE
\ THEN ;
 
: [REG*2] ( I -- ) S" [EAX*2][ECX*2][EDX*2][EBX*2][XXX*2][EBP*2][ESI*2][EDI*2]" 7 SS. ;
: [REG*4] ( I -- ) S" [EAX*4][ECX*4][EDX*4][EBX*4][XXX*4][EBP*4][ESI*4][EDI*4]" 7 SS. ;
: [REG*8] ( I -- ) S" [EAX*8][ECX*8][EDX*8][EBX*8][XXX*8][EBP*8][ESI*8][EDI*8]" 7 SS. ;
: [INDEX] ( SIB -- ) MOD/SIB OVER 4 =
IF 2DROP \ NO ESP SCALED INDEX
ELSE CASE ( S )
0 OF [REG32] ENDOF
1 OF [REG*2] ENDOF
2 OF [REG*4] ENDOF
3 OF [REG*8] ENDOF
ENDCASE
THEN DROP ;
 
: DISP8 ( ADR -- ADR' ) COUNT H.>S ;
: DISP16 ( ADR -- ADR' ) W@+ SHOW-NAME ;
: DISP32 ( ADR -- ADR' ) @+ ( BODY> ) SHOW-NAME ;
: DISP16/32 ( ADR -- ADR' )
16-BIT-ADDR
IF DISP16
ELSE DISP32
THEN ;
 
: ., ( -- ) .S" , " ;
 
: .# ., .S" # " ;
 
: IMM8 ( ADR -- ADR' ) .# COUNT H.>S ;
 
\ : IMM16 ( ADR -- ADR' ) .# W@+ H.>S ;
 
: IMM16/32 ( ADR -- ADR' )
.# 16-BIT-DATA
IF W@+
ELSE @+
THEN H.>S ;
 
: SIB ( ADR MOD -- ADR )
>R COUNT TUCK 7 AND 5 = R@ 0= AND
IF DISP32 SWAP [INDEX] R> DROP \ EBP BASE AND MOD = 00
ELSE R> CASE ( MOD )
1 OF DISP8 ENDOF
2 OF DISP32 ENDOF
ENDCASE
SWAP DUP [REG32] [INDEX]
THEN ;
 
\ : [*] ( SIB -- )
\ .S" SIB = " H.>S ;
 
\ : SIB ( ADR EXT -- ADR' )
\ ?? WRONG VERSION
\ SWAP COUNT >R SWAP 6 RSHIFT 3 AND
\ ?DUP IF 1 = IF DISP8 ELSE DISP32 THEN THEN
\ R> DUP 7 AND DUP 5 =
\ IF DROP [*]
\ ELSE [REG]
\ DUP 0x38 AND 0x20 =
\ IF DROP
\ ELSE .S" [" DUP 3 RSHIFT REG32 -1 S-BUF C+!
\ 5 RSHIFT 6 AND
\ DUP 6 = IF 2 + THEN
\ ?DUP IF .S" *" 0 .R>S THEN .S" ] "
\ THEN
\ THEN ;
 
 
: MOD-R/M32 ( ADR R/M MOD -- ADR' )
DUP 3 =
IF DROP REG \ MOD = 3, REGISTER CASE
ELSE OVER 4 =
IF NIP SIB \ R/M = 4, SIB CASE
ELSE 2DUP 0= SWAP 5 = AND \ MOD = 0, R/M = 5,
IF 2DROP DISP32 \ DISP32 CASE
ELSE ROT SWAP
CASE ( MOD )
1 OF DISP8 ENDOF
2 OF DISP32 ENDOF
ENDCASE
SWAP [REG32]
THEN
THEN
THEN ;
 
: MOD-R/M16 ( ADR R/M MOD -- ADR' )
2DUP 0= SWAP 6 = AND
IF 2DROP DISP16 \ DISP16 CASE
ELSE CASE ( MOD )
0 OF [REG16] ENDOF
1 OF SWAP DISP8 SWAP [REG16] ENDOF
2 OF SWAP DISP16 SWAP [REG16] ENDOF
3 OF REG ENDOF
ENDCASE
THEN ;
 
: MOD-R/M ( ADR MODR/M -- ADR' )
MOD/SIB NIP 16-BIT-ADDR
IF MOD-R/M16
ELSE MOD-R/M32
THEN ;
 
\ : MOD-R/M ( ADR EXT -- ADR' )
\ DUP 0xC7 AND 5 = \ 32BIT DISPLACEMENT
\ 16-BIT-ADDR 0= AND \ AND NOT 16BIT ADDRESSING
\ IF DROP DISP32 .S" [] "
\ EXIT
\ THEN
\ DUP 0xC0 AND 0xC0 < OVER 7 AND 4 = AND
\ 16-BIT-ADDR 0= AND \ AND NOT 16BIT ADDRESSING
\ IF SIB
\ EXIT
\ THEN
\ DUP 0xC7 AND 6 = \ 16BIT DISPLACEMENT
\ 16-BIT-ADDR AND \ AND 16BIT ADDRESSING
\ IF DROP DISP32 .S" [] "
\ EXIT
\ THEN
\ DUP 6 RSHIFT
\ CASE
\ 0 OF .S" 0 " [REG] ENDOF
\ 1 OF SWAP DISP8 SWAP [REG] ENDOF
\ 2 OF SWAP DISP32 SWAP [REG] ENDOF
\ 3 OF REG ENDOF
\ ENDCASE ;
 
 
 
 
: R/M8 0 TO SIZE MOD-R/M ;
: R/M16/32 1 TO SIZE MOD-R/M ;
: R/M16 TRUE TO 16-BIT-DATA R/M16/32 ;
 
: R,R/M ( ADR -- ADR' )
COUNT DUP 3 RSHIFT REG ., MOD-R/M ;
 
: R/M,R ( ADR -- ADR' )
COUNT DUP>R MOD-R/M ., R> 3 RSHIFT REG ;
 
: R/M ( ADR OP -- ADR' )
2 AND
IF R,R/M
ELSE R/M,R
THEN ;
 
\ -------------------- SIMPLE OPCODES --------------------
 
: INH ( -<NAME>- )
CREATE
BL WORD COUNT HERE PLACE
HERE C@ 1+ ALLOT
DOES> COUNT >S SSPACE DROP ;
 
INH CLC CLC
INH STC STC
INH CLD CLD
INH STD STD
\ INH RPNZ REPNZ
\ INH REPZ REPZ
INH CBW CBW
INH CDQ CDQ
INH DAA DAA
INH DAS DAS
INH AAA AAA
INH AAS AAS
\ INH LOCK LOCK
INH INB INSB
INH OSB OUTSB
INH SAH SAHF
INH LAH LAHF
\ INH AAM AAM
\ INH AAD AAD
INH HLT HLT
INH CMC CMC
INH XLT XLAT
INH CLI CLI
INH STI STI
 
INH CLT CLTS
INH INV INVD
INH WIV WBINVD
INH UD2 UD2
INH WMR WRMSR
INH RTC RDTSC
INH RMR RDMSR
INH RPC RDPMC
INH EMS EMMS
INH RSM RSM
INH CPU CPUID
INH UD1 UD1
\ INH LSS LSS
\ INH LFS LFS
\ INH LGS LGS
 
\ INH D16: D16:
\ INH A16: A16:
\ INH ES: ES:
\ INH CS: CS:
\ INH DS: DS:
\ INH FS: FS:
\ INH GS: GS:
 
: AAM ( ADR CODE -- ADR' )
.S" AAM" DROP COUNT DROP ;
 
: AAD ( ADR CODE -- ADR' )
.S" AAD" DROP COUNT DROP ;
 
: D16 ( ADR CODE -- ADR' )
DROP .S" D16:"
TRUE TO 16-BIT-DATA
TRUE TO PREFIX-OP
;
 
: A16 ( ADR CODE -- ADR' )
DROP .S" A16:"
TRUE TO 16-BIT-ADDR
TRUE TO PREFIX-OP
;
 
: RPZ ( ADR CODE -- ADR' )
DROP .S" REPNZ"
TRUE TO PREFIX-OP
;
 
: REP ( ADR CODE -- ADR' )
DROP .S" REPZ"
TRUE TO PREFIX-OP
;
 
: LOK ( ADR CODE -- ADR' ) \ THIS SHOULD HAVE ERROR CHECKING ADDED
DROP .S" LOCK"
TRUE TO PREFIX-OP
;
 
: CS: ( ADR CODE -- ADR' )
DROP .S" CS:"
TRUE TO PREFIX-OP
;
 
: DS: ( ADR CODE -- ADR' )
DROP .S" DS:"
TRUE TO PREFIX-OP
;
 
: SS: ( ADR CODE -- ADR' )
DROP .S" SS:"
TRUE TO PREFIX-OP
;
 
: ES: ( ADR CODE -- ADR' )
DROP .S" ES:"
TRUE TO PREFIX-OP
;
 
: GS: ( ADR CODE -- ADR' )
DROP .S" GS:"
TRUE TO PREFIX-OP
;
 
: FS: ( ADR CODE -- ADR' )
DROP .S" FS:"
TRUE TO PREFIX-OP
;
 
: ISD ( ADR CODE -- ADR' )
DROP 16-BIT-DATA
IF .S" INSW "
ELSE .S" INSD "
THEN ;
 
: OSD ( ADR CODE -- ADR' )
DROP 16-BIT-DATA
IF .S" OUTSW "
ELSE .S" OUTSD "
THEN ;
 
: INP ( ADDR CODE -- ADDR' )
.S" IN " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
ELSE .S" AL , "
THEN
COUNT H.>S ;
 
: OTP ( ADDR CODE -- ADDR' )
.S" OUT " 1 AND
IF COUNT H.>S 16-BIT-DATA
IF .S" , AX"
ELSE .S" , EAX"
THEN
ELSE COUNT H.>S .S" , AL"
THEN
;
 
: IND ( ADDR CODE -- ADDR' )
.S" IN " 1 AND
IF 16-BIT-DATA
IF .S" AX , DX"
ELSE .S" EAX , DX"
THEN
ELSE .S" AL , DX"
THEN
;
 
: OTD ( ADDR CODE -- ADDR' )
.S" OUT " 1 AND
IF 16-BIT-DATA
IF .S" DX , AX"
ELSE .S" DX , EAX"
THEN
ELSE .S" DX , AL"
THEN
;
 
\ -------------------- ALU OPCODES --------------------
 
: .ALU ( N -- )
7 AND S" ADDOR ADCSBBANDSUBXORCMP" 3 SS. 4 SSPACES
;
 
: ALU ( ADR OP -- ADR' )
DUP 3 RSHIFT .ALU R/M ;
 
: ALI ( ADR OP -- ADR' )
>R COUNT
DUP 3 RSHIFT .ALU
MOD-R/M
R> 3 AND ?DUP
IF 1 =
IF IMM16/32
ELSE .# COUNT SEXT 0 .R>S SSPACE
THEN
ELSE IMM8
THEN ;
 
: ALA ( ADR OP -- ADR' )
DUP 3 RSHIFT .ALU
1 AND IF 0 REG IMM16/32 ELSE 0 REG8 IMM8 THEN ;
 
 
\ -------------------- TEST/XCHG --------------------
 
: TXB ( ADDR OP -- ADDR' )
DUP 3 AND S" TESTTESTXCHGXCHG" 4 SS. 3 SSPACES
1 AND
IF 1 TO SIZE R,R/M \ SMUB REMOVED COUNT
ELSE 0 TO SIZE R,R/M \ SMUB REMOVED COUNT
THEN
;
 
: TST ( ADDR OP -- ADDR' )
.S" TEST " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
IMM16/32
ELSE .S" AL , " IMM8
THEN
;
 
\ -------------------- INC/DEC ----------------------
 
: INC ( ADDR OP -- ADDR' )
.S" INC " REG16/32 ;
 
: DEC ( ADDR OP -- ADDR' )
.S" DEC " REG16/32 ;
 
 
\ -------------------- PUSH/POP --------------------
 
: PSH ( ADDR OP -- ADDR' )
.S" PUSH " REG16/32 ;
 
: POP ( ADDR OP -- ADDR' )
.S" POP " REG16/32 ;
 
: PSS ( ADDR OP -- ADDR' )
.S" PUSH " SREG ;
 
: PPS ( ADDR OP -- ADDR' )
.S" POP " SREG ;
 
: PSA ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" PUSHA "
ELSE .S" PUSHAD "
THEN ;
 
: PPA ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" POPA "
ELSE .S" POPAD "
THEN ;
 
: PSI ( ADDR OP -- ADDR' )
.S" PUSH " 2 AND
IF IMM8
ELSE IMM16/32
THEN ;
 
: PSF ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" PUSHF "
ELSE .S" PUSHFD "
THEN ;
 
: PPF ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" POPF "
ELSE .S" POPFD "
THEN ;
 
: 8F. ( ADDR OP -- ADDR' )
DROP COUNT .S" POP " R/M16/32 ;
 
\ -------------------- MOVE --------------------
 
: MOV ( ADDR OP -- ADDR' )
.S" MOV " R/M ;
 
: MRI ( ADDR OP -- ADDR' ) ( MOV REGISTER, IMM )
.S" MOV " DUP 8 AND
IF REG16/32 IMM16/32
ELSE REG8 IMM8
THEN ;
 
: MVI ( ADR OP -- ADR' ) ( MOV MEM, IMM )
.S" MOV " DROP COUNT MOD-R/M
SIZE
IF IMM16/32
ELSE IMM8
THEN
;
 
: MRS ( ADDR OP -- ADDR' )
\ ? REMOVE REDUNDANT >R , R>
16-BIT-DATA
IF .S" MOV " DROP
1 TO SIZE
COUNT DUP MOD-R/M .,
SREG
ELSE ???
THEN ;
 
: MSR ( ADDR OP -- ADDR' )
16-BIT-DATA
IF .S" MOV " DROP
1 TO SIZE
COUNT DUP SREG .,
MOD-R/M
ELSE ???
THEN ;
 
: MRC ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP REG32 .S" , "
CREG ;
 
: MCR ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP CREG .S" , "
REG32 ;
 
: MRD ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP REG32 .S" , "
DREG ;
 
: MDR ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP DREG .S" , "
REG32 ;
 
: MRT ( ADDR OP -- ADDR' )
\ OBSOLETE
.S" MOV "
DROP COUNT DUP REG32 .S" , "
TREG ;
 
: MTR ( ADDR OP -- ADDR' )
\ OBSOLETE
.S" MOV "
DROP COUNT DUP TREG .S" , "
REG32 ;
 
: MV1 ( ADDR OP -- ADDR' )
.S" MOV " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
ELSE .S" AL , "
THEN
DISP16/32 ;
 
: MV2 ( ADDR OP -- ADDR' )
>R .S" MOV " DISP16/32 .,
R> 1 AND
IF 16-BIT-DATA
IF .S" AX"
ELSE .S" EAX"
THEN
ELSE .S" AL"
THEN
;
 
: LEA ( ADDR OP -- ADDR' )
.S" LEA " DROP 1 TO SIZE R,R/M ;
 
: LXS ( ADDR OP -- ADDR' )
1 AND
IF .S" LDS "
ELSE .S" LES "
THEN
R,R/M \ SMUB REMOVED COUNT
;
 
: BND ( ADDR OP -- ADDR' )
.S" BOUND " DROP 1 TO SIZE R,R/M ;
 
: ARP ( ADDR OP -- ADDR' )
.S" ARPL " DROP
1 TO SIZE
TRUE TO 16-BIT-DATA
R,R/M
;
 
: MLI ( ADDR OP -- ADDR' )
1 TO SIZE
.S" IMUL " 0x69 =
IF R,R/M IMM16/32
ELSE R,R/M IMM8
THEN ;
 
\ -------------------- JUMPS AND CALLS --------------------
 
0 VALUE MAX_REFERENCE
 
: >MAX_R
\ DUP HERE
DUP MAX_REFERENCE UMAX TO MAX_REFERENCE ;
 
: REL8 ( ADDR OP -- ADDR' )
COUNT SEXT OVER + >MAX_R H.>S ;
 
 
: REL16/32 ( ADDR OP -- ADDR' )
16-BIT-ADDR
IF W@+
ELSE @+
THEN OVER + BASE-ADDR - >MAX_R SHOW-NAME ;
 
: JSR ( ADDR OP -- ADDR' )
MAX_REFERENCE >R
.S" CALL " DROP REL16/32
R> TO MAX_REFERENCE ;
 
: JMP ( ADDR OP -- ADDR' )
.S" JMP " 2 AND IF REL8 ELSE REL16/32 THEN ;
 
: .JXX ( ADDR OP -- ADDR' )
.S" J" TTTN 4 SSPACES ;
 
: BRA ( ADDR OP -- ADDR' )
.JXX REL8 ;
 
: LUP ( ADDR OP -- ADDR' )
3 AND S" LOOPNZLOOPZ LOOP JECXZ " 6 SS. 1 SSPACES REL8 ;
 
: LBR ( ADDR OP -- ADDR' )
.JXX REL16/32 ;
 
: RTN ( ADDR OP -- ADDR' )
.S" RET NEAR " 1 AND 0=
IF W@+ H.>S
THEN ;
 
: RTF ( ADDR OP -- ADDR' )
.S" RET FAR " 1 AND 0=
IF W@+ H.>S
THEN ;
 
: ENT ( ADDR OP -- ADDR' )
.S" ENTER " W@+ . ., COUNT H.>S ;
 
: CIS ( ADDR OP -- ADDR' )
0x9A =
IF .S" CALL "
ELSE .S" JMP "
THEN
16-BIT-DATA
IF .S" PTR16:16 "
ELSE .S" PTR16:32 "
THEN
COUNT MOD-R/M ;
 
: NT3 ( ADDR OP -- ADDR' )
DROP .S" INT 3 "
;
 
: INT ( ADDR OP -- ADDR' )
DROP .S" INT "
COUNT H.>S ;
 
INH LEV LEAVE
INH IRT IRET
INH NTO INTO
 
\ -------------------- STRING OPS --------------------
 
: STR INH DOES> COUNT >S 1 AND IF .S" D" ELSE .S" B" THEN ;
 
STR MVS MOVS
STR CPS CMPS
STR STS STOS
STR LDS LODS
STR SCS SCAS
 
\ -------------------- EXCHANGE --------------------
 
: XGA ( ADDR OP -- ADDR' )
.S" XCHG EAX, " REG16/32 ;
 
\ : XCH ( ADDR OP -- ADDR' )
\ .S" XCHG " DROP R,R/M ;
 
 
\ -------------------- SHIFTS & ROTATES --------------------
 
: .SHIFT ( N -- )
7 AND S" ROLRORRCLRCRSHLSHRXXXSAR" 3 SS. 4 SSPACES ;
 
: SHF ( ADDR OP -- ADDR' )
>R COUNT
DUP 3 RSHIFT .SHIFT
MOD-R/M .,
R> 0xD2 AND
CASE
0xC0 OF COUNT H.>S ENDOF
0xD0 OF 1 H.>S ENDOF
0xD2 OF 1 REG8 ENDOF
ENDCASE ;
 
\ -------------------- EXTENDED OPCODES --------------------
 
: WF1 ( ADDR -- ADDR' )
1+ COUNT DUP
0x0C0 <
IF DUP
3 RSHIFT 7 AND
CASE 6 OF .S" FSTENV " MOD-R/M ENDOF
7 OF .S" FSTCW WORD " MOD-R/M ENDOF
2DROP 2 - DUP .S" FWAIT "
ENDCASE
ELSE DROP 2 - .S" FWAIT "
THEN ;
 
: WF2 ( ADDR -- ADDR' )
1+ COUNT
CASE 0xE2 OF .S" FCLEX " ENDOF
0xE3 OF .S" FINIT " ENDOF
SWAP 2 - SWAP .S" FWAIT "
ENDCASE ;
 
: WF3 ( ADDR -- ADDR' )
1+ COUNT DUP 3 RSHIFT 7 AND
CASE 6 OF .S" FSAVE " MOD-R/M ENDOF
7 OF .S" FSTSW WORD " MOD-R/M ENDOF
2DROP 2 - DUP .S" FWAIT "
ENDCASE ;
 
: WF4 ( ADDR -- ADDR' )
1+ COUNT 0xE0 =
IF .S" FSTSW AX "
ELSE 2 - .S" FWAIT "
THEN ;
 
: FWAITOPS ( ADDR OP -- ADDR' )
CASE 0xD9 OF WF1 ENDOF
0xDB OF WF2 ENDOF
0xDD OF WF3 ENDOF
0xDF OF WF4 ENDOF
.S" FWAIT "
ENDCASE ;
 
: W8F ( ADDR OP -- ADDR' )
DROP DUP C@ DUP 0xF8 AND 0xD8 =
IF FWAITOPS
ELSE DROP .S" WAIT "
THEN ;
 
: FALU1 ( XOPCODE -- )
3 RSHIFT 7 AND
S" FADD FMUL FCOM FCOMPFSUB FSUBRFDIV FDIVR"
5 SS. 2 SSPACES ;
 
: FALU5 ( XOPCODE -- )
3 RSHIFT 7 AND
S" FADD FMUL ???? ???? FSUBRFSUB FDIVRFDIV "
5 SS. 2 SSPACES ;
 
: STI. ( OP -- )
7 AND .S" ST(" 1 .R>S .S" )";
 
\ : STI.ST ( OP -- )
\ 7 AND
\ .S" ST(" 1 .R>S .S" )" .S" ST " ;
 
: FD8 ( ADDR OPCODE -- ADDR' )
DROP COUNT DUP FALU1
DUP 0xC0 <
IF .S" FLOAT " MOD-R/M
ELSE DUP 0xF0 AND 0xD0 =
IF STI.
ELSE .S" ST , " STI.
THEN
THEN ;
 
: FDC ( ADDR OPCODE -- ADDR' )
DROP COUNT
DUP DUP 0xC0 <
IF FALU1 .S" DOUBLE " MOD-R/M
ELSE FALU5 STI. .S" , ST"
THEN ;
 
: FNULLARY-F ( OP -- )
0x0F AND DUP 8 <
IF
S" F2XM1 FYL2X FPTAN FPATAN FXTRACTFPREM1 FDECSTPFINCSTP"
ELSE 8 -
S" FPREM FYL2XP1FSQRT FSINCOSFRNDINTFSCALE FSIN FCOS "
THEN
7 SS. ;
 
: FNULLARY-E ( OP -- )
0x0F AND DUP 8 <
IF
S" FCHS FABS ??? ??? FTST FXAM ??? ??? "
ELSE 8 -
S" FLD1 FLDL2T FLDL2E FLDPI FLDLG2 FLDLN2 FLDZ ??? "
THEN
7 SS. ;
 
: FNULLARY ( OP -- )
DUP 0xEF >
IF FNULLARY-F EXIT
THEN
DUP 0xE0 <
IF 0xD0 =
IF .S" FNOP"
ELSE DUP ???
THEN
EXIT
THEN
FNULLARY-E ;
 
 
\ : FALU2 ( OP -- )
\ 3 RSHIFT 7 AND
\ S" FLD ??? FST FSTP FLDENV FLDCW FNSTENVFNSTCW "
\ 7 SS. ;
 
: FD9 ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE
0x00 OF .S" FLD FLOAT " ENDOF
0x10 OF .S" FST FLOAT " ENDOF
0x18 OF .S" FSTP FLOAT " ENDOF
0x20 OF .S" FLDENV " ENDOF
0x28 OF .S" FLDCW WORD " ENDOF
0x30 OF .S" FNSTENV " ENDOF
0x38 OF .S" FNSTCW WORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE
DUP 0xD0 <
IF DUP 0xC8 <
IF .S" FLD "
ELSE .S" FXCH "
THEN
STI.
ELSE FNULLARY
THEN
THEN ;
 
: FALU3 ( OP -- )
3 RSHIFT 7 AND
S" FIADD FIMUL FICOM FICOMPFISUB FISUBRFIDIV FIDIVR"
6 SS. 1 SSPACES ;
 
: FCMOVA ( OP -- )
3 RSHIFT 7 AND
S" FCMOVB FCMOVE FCMOVBEFCMOVU ??? ??? ??? ??? "
7 SS. ;
 
: FDA ( ADDR OP -- )
DROP COUNT DUP 0xC0 <
IF DUP FALU3 .S" DWORD " MOD-R/M
ELSE 0xE9 =
IF .S" FUCOMPP" DROP
ELSE DUP FCMOVA STI.
THEN
THEN ;
 
: FALU7 ( OP -- )
3 RSHIFT 7 AND
S" FADDP FMULP ??? ??? FSUBRPFSUBP FDIVRPFDIVP "
6 SS. SSPACE ;
 
: FDE ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP FALU3 .S" WORD " MOD-R/M
ELSE DUP 0xD9 =
IF .S" FCOMPP" DROP
ELSE DUP FALU7 STI.
THEN
THEN ;
 
 
: FCMOVB ( OP -- )
3 RSHIFT 7 AND
S" FCMOVNB FCMOVNE FCMOVNBEFCMOVNU ??? FUCOMI FCOMI ??? "
8 SS. ;
 
: FDB ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FILD DWORD " ENDOF
0x10 OF .S" FIST DWORD " ENDOF
0x18 OF .S" FISTP DWORD " ENDOF
0x28 OF .S" FLD EXTENDED " ENDOF
0x38 OF .S" FSTP EXTENDED " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE
CASE 0xE2 OF .S" FNCLEX" ENDOF
0xE3 OF .S" FNINIT" ENDOF
DUP DUP FCMOVB STI.
ENDCASE
THEN ;
 
: FALU6 ( OP -- )
3 RSHIFT 7 AND
S" FFREE ??? FST FSTP FUCOM FUCOMP??? ??? "
6 SS. SSPACE ;
 
: FDD ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FLD DOUBLE " ENDOF
0x10 OF .S" FST DOUBLE " ENDOF
0x18 OF .S" FSTP DOUBLE " ENDOF
0x20 OF .S" FRSTOR " ENDOF
0x30 OF .S" FNSAVE " ENDOF
0x38 OF .S" FNSTSW WORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE DUP FALU6 STI.
THEN ;
 
: FDF ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FILD WORD " ENDOF
0x10 OF .S" FIST WORD " ENDOF
0x18 OF .S" FISTP WORD " ENDOF
0x20 OF .S" FBLD TBYTE " ENDOF
0x28 OF .S" FILD QWORD " ENDOF
0x30 OF .S" FBSTP TBYTE " ENDOF
0x38 OF .S" FISTP QWORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE DUP 0xE0 =
IF .S" FNSTSW AX " DROP
ELSE DUP 0x38 AND
CASE 0x28 OF .S" FUCOMIP " STI. ENDOF
0x30 OF .S" FCOMIP " STI. ENDOF
???
ENDCASE
THEN
THEN ;
 
: GP6 ( ADDR OP -- ADDR' )
DROP COUNT DUP 3 RSHIFT
7 AND S" SLDTSTR LLDTLTR VERRVERW??? ???" 4 SS. 3 SSPACES
R/M16 ;
 
: GP7 ( ADDR OP -- ADDR' )
DROP COUNT DUP 3 RSHIFT
7 AND DUP S" SGDT SIDT LGDT LIDT SMSW ??? LMSW INVLPG" 6 SS. 1 SSPACES
4 AND 4 =
IF R/M16
ELSE R/M16/32
THEN ;
 
: BTX. ( N -- )
3 RSHIFT
3 AND S" BT BTSBTRBTC" 3 SS. 4 SSPACES ;
 
: GP8 ( ADDR OP -- ADDR' )
DROP COUNT DUP BTX.
R/M16/32 IMM8 ;
 
: LAR ( ADDR OP -- ADDR' )
.S" LAR " DROP R,R/M ;
 
: LSL ( ADDR OP -- ADDR' )
.S" LSL " DROP R,R/M ;
 
: LSS ( ADDR OP -- ADDR' )
.S" LSS " DROP R,R/M ;
 
: LFS ( ADDR OP -- ADDR' )
.S" LFS " DROP R,R/M ;
 
: LGS ( ADDR OP -- ADDR' )
.S" LGS " DROP R,R/M ;
 
: BTX ( ADDR OP -- ADDR' )
BTX. R/M,R ;
 
: SLI ( ADDR OP -- ADDR' )
.S" SHLD " DROP R/M,R IMM8 ;
 
: SRI ( ADDR OP -- ADDR' )
.S" SHRD " DROP R/M,R IMM8 ;
 
: SLC ( ADDR OP -- ADDR' )
.S" SHLD " DROP R/M,R .S" , CL" ;
 
: SRC ( ADDR OP -- ADDR' )
.S" SHRD " DROP R/M,R .S" , CL" ;
 
: IML ( ADDR OP -- ADDR' )
.S" IMUL " DROP R,R/M ;
 
: CXC ( ADDR OP -- ADDR' )
.S" CMPXCHG " 1 AND TO SIZE R/M,R ;
 
: MVX ( ADDR OP -- ADDR' )
DUP 8 AND
IF .S" MOVSX "
ELSE .S" MOVZX "
THEN
1 AND >R
COUNT MOD/SIB R> \ SIZE BIT
IF SWAP REG32 ., \ WORD TO DWORD CASE
3 =
IF REG16
ELSE .S" WORD PTR " MOD-R/M
THEN
ELSE SWAP REG16/32 ., \ BYTE CASE
3 =
IF REG8
ELSE .S" BYTE PTR " MOD-R/M
THEN
THEN ;
 
: XAD ( ADDR OP -- ADDR' )
.S" XADD " 1 AND TO SIZE R/M,R ;
 
: BSF ( ADDR OP -- ADDR' )
.S" BSF " DROP R,R/M ;
 
: BSR ( ADDR OP -- ADDR' )
.S" BSR " DROP R,R/M ;
 
: CX8 ( ADDR OP -- ADDR' )
.S" CMPXCHG8B " DROP COUNT R/M16/32 ;
 
: BSP ( ADDR OP -- ADDR' )
.S" BSWAP " REG32 ;
 
\ : 0F. ( ADDR OP -- ADDR' )
\ DROP COUNT
\ CASE
\ 0x00 OF GP6 ENDOF
\ 0x01 OF GP7 ENDOF
\ 0x02 OF .S" LAR " 1 TO SIZE R,R/M ENDOF
\ 0x03 OF .S" LSL " 1 TO SIZE R,R/M ENDOF
\ 0x06 OF .S" CLTS " ENDOF
\ 0x08 OF .S" INVD " ENDOF
\ 0x09 OF .S" WBINVD " ENDOF
\ 0x20 OF MRC ENDOF
\ 0x21 OF MRD ENDOF
\ 0x22 OF MCR ENDOF
\ 0x23 OF MDR ENDOF
\ 0x24 OF MRT ENDOF \ OBSOLETE
\ 0x26 OF MTR ENDOF \ OBSOLETE
\ 0x30 OF .S" WRMSR " ENDOF
\ 0x31 OF .S" RDTSC " ENDOF
\ 0x32 OF .S" RDMSR " ENDOF
\ 0x80 OF .S" JO " REL16/32 ENDOF
\ 0x81 OF .S" JNO " REL16/32 ENDOF
\ 0x82 OF .S" JC " REL16/32 ENDOF
\ 0x83 OF .S" JNC " REL16/32 ENDOF
\ 0x84 OF .S" JZ " REL16/32 ENDOF
\ 0x85 OF .S" JNE " REL16/32 ENDOF
\ 0x86 OF .S" JBE " REL16/32 ENDOF
\ 0x87 OF .S" JA " REL16/32 ENDOF
\ 0x88 OF .S" JS " REL16/32 ENDOF
\ 0x89 OF .S" JNS " REL16/32 ENDOF
\ 0x8A OF .S" JPE " REL16/32 ENDOF
\ 0x8B OF .S" JPO " REL16/32 ENDOF
\ 0x8C OF .S" JNGE " REL16/32 ENDOF
\ 0x8D OF .S" JGE " REL16/32 ENDOF
\ 0x8E OF .S" JNG " REL16/32 ENDOF
\ 0x8F OF .S" JG " REL16/32 ENDOF
\ 0x90 OF .S" SETO BYTE " R/M8 ENDOF
\ 0x91 OF .S" SETNO BYTE " R/M8 ENDOF
\ 0x92 OF .S" SETC BYTE " R/M8 ENDOF
\ 0x93 OF .S" SETNC BYTE " R/M8 ENDOF
\ 0x94 OF .S" SETZ BYTE " R/M8 ENDOF
\ 0x95 OF .S" SETNZ BYTE " R/M8 ENDOF
\ 0x96 OF .S" SETBE BYTE " R/M8 ENDOF
\ 0x97 OF .S" SETA BYTE " R/M8 ENDOF
\ 0x98 OF .S" SETS BYTE " R/M8 ENDOF
\ 0x99 OF .S" SETNS BYTE " R/M8 ENDOF
\ 0x9A OF .S" SETP BYTE " R/M8 ENDOF
\ 0x9B OF .S" SETNP BYTE " R/M8 ENDOF
\ 0x9C OF .S" SETL BYTE " R/M8 ENDOF
\ 0x9D OF .S" SETGE BYTE " R/M8 ENDOF
\ 0x9E OF .S" SETLE BYTE " R/M8 ENDOF
\ 0x9F OF .S" SETG BYTE " R/M8 ENDOF
\ 0xA0 OF .S" PUSH FS " ENDOF
\ 0xA1 OF .S" POP FS " ENDOF
\ 0xA2 OF .S" CPUID " ENDOF
\ 0xA3 OF .S" BT " 1 TO SIZE R/M,R ENDOF
\ 0xA4 OF .S" SHLD " R/M,R IMM8 ENDOF
\ 0xA5 OF .S" SHLD " R/M,R .S" , CL" ENDOF
\ 0xA8 OF .S" PUSH GS " ENDOF
\ 0xA9 OF .S" POP GS " ENDOF
\ 0xAA OF .S" RSM " ENDOF
\ 0xAB OF .S" BTS " 1 TO SIZE R/M,R ENDOF
\ 0xAC OF .S" SHRD " R/M,R IMM8 ENDOF
\ 0xAD OF .S" SHRD " R/M,R .S" , CL" ENDOF
\ 0xAF OF .S" IMUL " R,R/M ENDOF
\ 0xB0 OF .S" CMPXCH " 0 TO SIZE R/M,R ENDOF
\ 0xB1 OF .S" CMPXCH " 1 TO SIZE R/M,R ENDOF
\ 0xB2 OF .S" LSS " 1 TO SIZE R,R/M ENDOF
\ 0xB3 OF .S" BTR " 1 TO SIZE R/M,R ENDOF
\ 0xB4 OF .S" LFS " 1 TO SIZE R,R/M ENDOF
\ 0xB5 OF .S" LGS " 1 TO SIZE R,R/M ENDOF
\ 0xB6 OF .S" MOVZX " 0 TO SIZE R,R/M ENDOF
\ 0xB7 OF .S" MOVZX " 1 TO SIZE R,R/M ENDOF
\ 0xBA OF GP8 ENDOF
\ 0xBB OF .S" BTC " 1 TO SIZE R/M,R ENDOF
\ 0xBC OF .S" BSF " 1 TO SIZE R,R/M ENDOF
\ 0xBD OF .S" BSR " 1 TO SIZE R,R/M ENDOF
\ 0xBE OF .S" MOVSX " 0 TO SIZE R,R/M ENDOF
\ 0xBF OF .S" MOVSX " 1 TO SIZE R,R/M ENDOF
\ 0xC0 OF .S" XADD " 0 TO SIZE R/M,R ENDOF
\ 0xC1 OF .S" XADD " 1 TO SIZE R/M,R ENDOF
\ 0xC7 OF .S" CMPXCHG8B " R/M16/32 ENDOF
\ 0xC8 OF .S" BSWAP EAX " ENDOF
\ 0xC9 OF .S" BSWAP ECX " ENDOF
\ 0xCA OF .S" BSWAP EDX " ENDOF
\ 0xCB OF .S" BSWAP EBX " ENDOF
\ 0xCC OF .S" BSWAP ESP " ENDOF
\ 0xCD OF .S" BSWAP EBP " ENDOF
\ 0xCE OF .S" BSWAP ESI " ENDOF
\ 0xCF OF .S" BSWAP EDI " ENDOF
\ ( ELSE ) DUP ???
\ ENDCASE
\ ;
 
: F6. ( ADDR OP -- ADDR' )
\ ??
>R COUNT
DUP 3 RSHIFT 7 AND DUP>R S" TESTXXXXNOT NEG MUL IMULDIV IDIV" 4 SS. 3 SSPACES
MOD-R/M
R> 0= IF
R@ 1 AND IF IMM16/32
ELSE IMM8
THEN
THEN
R> DROP ;
 
: FE. ( ADDR OP -- ADDR' )
DROP COUNT
DUP 3 RSHIFT 7 AND
CASE
0 OF .S" INC " ENDOF
1 OF .S" DEC " ENDOF
???
ENDCASE R/M8 ;
 
: FF. ( ADDR OP -- ADDR' )
DROP COUNT
DUP 3 RSHIFT 7 AND
CASE
0 OF .S" INC " ENDOF
1 OF .S" DEC " ENDOF
2 OF .S" CALL " ENDOF
3 OF .S" CALL FAR " ENDOF
4 OF .S" JMP " ENDOF
5 OF .S" JMP FAR " ENDOF
6 OF .S" PUSH " ENDOF
???
ENDCASE R/M16/32 ;
 
 
\ --------------------- CONDITIONAL MOVE ---------------
 
: SET ( ADR OP -- )
.S" SET"
TTTN 2 SSPACES
COUNT R/M8 ;
 
: CMV ( ADR OP -- )
.S" CMOV"
TTTN 1 SSPACES
COUNT R,R/M ;
 
\ --------------------- MMX OPERATIONS -----------------
 
: MMX-SIZE ( OP -- )
3 AND S" BWDQ" 1 SS. ;
 
: UPL ( ADR OP -- ADR' )
3 AND S" PUNPCKLBWPUNPCKLWDPUNPCKLDQ" 9 SS. R,R/M ;
 
: UPH ( ADR OP -- ADR' )
3 AND S" PUNPCKHBWPUNPCKHWDPUNPCKHDQ" 9 SS. R,R/M ;
 
: CGT ( ADR OP -- ADR' )
.S" PCMPGT" MMX-SIZE R,R/M ;
 
: CEQ ( ADR OP -- ADR' )
.S" PCMPEQ" MMX-SIZE R,R/M ;
 
: PSH. ( OP -- )
0x30 AND
CASE
0x10 OF .S" PSRL" ENDOF
0x20 OF .S" PSRA" ENDOF
0x30 OF .S" PSLL" ENDOF
ENDCASE ;
 
: GPA ( ADR OP -- ADR' )
>R COUNT DUP PSH. R> MMX-SIZE 2 SSPACES MREG IMM8 ;
 
: PUW ( ADR OP -- ADR' )
.S" PACKUSDW " DROP R,R/M ;
 
: PSB ( ADR OP -- ADR' )
.S" PACKSSWB " DROP R,R/M ;
 
: PSW ( ADR OP -- ADR' )
.S" PACKSSDW " DROP R,R/M ;
 
: MPD ( ADR OP -- ADR' )
.S" MOVD " DROP COUNT MOD/SIB
SWAP MREG ., 3 =
IF REG32
ELSE MOD-R/M
THEN ;
 
: MDP ( ADR OP -- ADR' )
.S" MOVD " DROP COUNT MOD/SIB
3 =
IF SWAP REG32
ELSE SWAP MOD-R/M
THEN ., MREG ;
 
: MPQ ( ADR OP -- ADR' )
.S" MOVQ " DROP R,R/M ;
 
: MQP ( ADR OP -- ADR' )
.S" MOVQ " DROP R/M,R ;
 
: SHX ( ADR OP -- ADR' )
DUP PSH. MMX-SIZE 2 SSPACES R,R/M ;
 
: MLL ( ADR OP -- ADR' )
.S" PMULLW " DROP R,R/M ;
 
: MLH ( ADR OP -- ADR' )
.S" PMULHW " DROP R,R/M ;
 
: MAD ( ADR OP -- ADR' )
.S" PMADDWD " DROP R,R/M ;
 
: SUS ( ADR OP -- ADR' )
.S" PSUBUS" MMX-SIZE R,R/M ;
 
: SBS ( ADR OP -- ADR' )
.S" PSUBS" MMX-SIZE SSPACE R,R/M ;
 
: SUB ( ADR OP -- ADR' )
.S" PSUB" MMX-SIZE 2 SSPACES R,R/M ;
 
: AUS ( ADR OP -- ADR' )
.S" PADDUS" MMX-SIZE R,R/M ;
 
: ADS ( ADR OP -- ADR' )
.S" PADDS" MMX-SIZE SSPACE R,R/M ;
 
: ADD ( ADR OP -- ADR' )
.S" PADD" MMX-SIZE 2 SSPACES R,R/M ;
 
: PAD ( ADR OP -- ADR' )
.S" PAND " DROP R,R/M ;
 
: POR ( ADR OP -- ADR' )
.S" POR " DROP R,R/M ;
 
: PAN ( ADR OP -- ADR' )
.S" PANDN " DROP R,R/M ;
 
: PXR ( ADR OP -- ADR' )
.S" PXOR " DROP R,R/M ;
 
 
\ -------------------- OPCODE TABLE --------------------
 
: OPS 0x10 0 DO ' , LOOP ;
 
 
CREATE OP-TABLE2
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
OPS GP6 GP7 LAR LSL ??? ??? CLT ??? INV WIV ??? UD2 ??? ??? ??? ??? \ 0
OPS ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 1
OPS MRC MRD MCR MDR MRT ??? MTR ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 2
OPS WMR RTC RMR RPC ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 3
 
OPS CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV \ 4
OPS ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 5
OPS UPL UPL UPL PUW CGT CGT CGT PSB UPH UPH UPH PSW ??? ??? MPD MPQ \ 6
OPS ??? GPA GPA GPA CEQ CEQ CEQ EMS ??? ??? ??? ??? ??? ??? MDP MQP \ 7
 
OPS LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR \ 8
OPS SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET \ 9
OPS PSS PPS CPU BTX SLI SLC ??? ??? PSS PPS RSM BTX SRI SRC ??? IML \ A
OPS CXC CXC LSS BTX LFS LGS MVX MVX ??? UD1 GP8 BTX BSF BSR MVX MVX \ B
 
OPS XAD XAD ??? ??? ??? ??? ??? CX8 BSP BSP BSP BSP BSP BSP BSP BSP \ C
OPS ??? SHX SHX SHX ??? MLL ??? ??? SUS SUS ??? PAD AUS AUS ??? PAN \ D
OPS ??? SHX SHX ??? ??? MLH ??? ??? SBS SBS ??? POR ADS ADS ??? PXR \ E
OPS ??? ??? SHX SHX ??? MAD ??? ??? SUB SUB SUB ??? ADD ADD ADD ??? \ F
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
: 0F. ( ADR CODE -- )
DROP COUNT DUP
DUP 0x70 AND 0x50 0x80 WITHIN TO MMX-REG
CELLS OP-TABLE2 + @ EXECUTE
0 TO MMX-REG ;
 
 
CREATE OP-TABLE
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
OPS ALU ALU ALU ALU ALA ALA PSS PPS ALU ALU ALU ALU ALA ALA PSS 0F. \ 0
OPS ALU ALU ALU ALU ALA ALA PSS PPS ALU ALU ALU ALU ALA ALA PSS PPS \ 1
OPS ALU ALU ALU ALU ALA ALA ES: DAA ALU ALU ALU ALU ALA ALA CS: DAS \ 2
OPS ALU ALU ALU ALU ALA ALA SS: AAA ALU ALU ALU ALU ALA ALA DS: AAS \ 3
 
OPS INC INC INC INC INC INC INC INC DEC DEC DEC DEC DEC DEC DEC DEC \ 4
OPS PSH PSH PSH PSH PSH PSH PSH PSH POP POP POP POP POP POP POP POP \ 5
OPS PSA PPA BND ARP FS: GS: D16 A16 PSI MLI PSI MLI INB ISD OSB OSD \ 6
OPS BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA \ 7
 
OPS ALI ALI ??? ALI TXB TXB TXB TXB MOV MOV MOV MOV MRS LEA MSR 8F. \ 8
OPS XGA XGA XGA XGA XGA XGA XGA XGA CBW CDQ CIS W8F PSF PPF SAH LAH \ 9
OPS MV1 MV1 MV2 MV2 MVS MVS CPS CPS TST TST STS STS LDS LDS SCS SCS \ A
OPS MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI \ B
 
OPS SHF SHF RTN RTN LXS LXS MVI MVI ENT LEV RTF RTF NT3 INT NTO IRT \ C
OPS SHF SHF SHF SHF AAM AAD ??? XLT FD8 FD9 FDA FDB FDC FDD FDE FDF \ D
OPS LUP LUP LUP LUP INP INP OTP OTP JSR JMP CIS JMP IND IND OTD OTD \ E
OPS LOK ??? RPZ REP HLT CMC F6. F6. CLC STC CLI STI CLD STD FE. FF. \ F
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
: DIS-OP ( ADR -- ADR' )
0>S
FALSE TO PREFIX-OP \ SMUB
COUNT
DUP 1 AND TO SIZE
DUP CELLS OP-TABLE + @ EXECUTE
PREFIX-OP 0=
IF DEFAULT-16BIT? 0=
IF FALSE TO 16-BIT-DATA
FALSE TO 16-BIT-ADDR
ELSE TRUE TO 16-BIT-DATA
TRUE TO 16-BIT-ADDR
THEN
THEN ;
 
 
0 VALUE NEXT-INST
 
: X". ( ADDR -- ADDR' )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP COUNT DUP . ." C, " 1+ OVER + SWAP
DO I C@ . ." C, " LOOP
COUNT + 1+ ;
 
 
: INST ( ADR -- ADR' )
DUP TO NEXT-INST
COLS 0x29 <
IF DIS-OP
S-BUF COUNT TYPE
ELSE DUP DIS-OP
OVER BASE-ADDR - 6 H.R SPACE
DUP ROT
2DUP - DUP>R 0x10 U> ABORT" DECOMPILER ERROR"
DO I C@ 2 H.N LOOP
R> 5 < IF 9 EMIT THEN
9 EMIT S-BUF COUNT TYPE
THEN NEXT-INST C@ 0xE8 =
IF NEXT-INST 1+ @+ SWAP +
CASE
CLITERAL-CODE OF X". ENDOF
SLITERAL-CODE OF X". ENDOF
ENDCASE
THEN ;
 
 
: DIS-DB CR .S" DB " COUNT H.>S ;
: DIS-DW CR .S" DW " W@+ H.>S ;
: DIS-DD CR .S" DD " @+ H.>S ;
: DIS-DS CR .S" STRING " 0x22 EMIT>S COUNT 2DUP >S + 0x22 EMIT>S ;
 
 
: DIS ( ADR -- )
BEGIN
DUP
CR INST
KEY UPC DUP 0x1B = OVER [CHAR] Q = OR INVERT
WHILE
CASE
[CHAR] B OF DROP DIS-DB ENDOF
[CHAR] W OF DROP DIS-DW ENDOF
[CHAR] D OF DROP DIS-DD ENDOF
[CHAR] S OF DROP DIS-DS ENDOF
ROT DROP
ENDCASE
 
REPEAT 2DROP DROP ;
 
\ CREATE STOPCODE 8 C, \ COUNT OF LENGTH
\ 0xAD C, 0x8B C, 0x0C C, 0x38 C,
\ 0x03 C, 0xCF C, 0xFF C, 0xE1 C,
 
 
0 VALUE SHOW-NEXT? \ DEFAULT TO NOT SHOWING NEXT INSTRUCTIONS
 
 
DECIMAL
 
 
FORTH DEFINITIONS
 
TRUE VALUE SEE-KET-FL
 
VARIABLE COUNT-LINE
: REST ( ADR -- )
20 COUNT-LINE !
0 TO MAX_REFERENCE
DUP TO NEXT-INST
BEGIN
CR
NEXT-INST C@
DUP 0xC3 <>
SWAP 0xE9 <> AND \ NEXT, BEHIND US?
NEXT-INST MAX_REFERENCE U< OR
OVER HERE U< AND
WHILE INST
COUNT-LINE @ 1- DUP 0= SEE-KET-FL AND
IF 9 EMIT ." \ PRESS ENTER | Q | ANY" KEY
DUP 0xD = IF 2DROP 1 ELSE
[CHAR] Q = IF ABORT THEN
DROP 20 THEN
THEN
COUNT-LINE !
REPEAT DROP ." END-CODE "
;
 
: SEE ( -- )
' REST ;
 
ONLY FORTH ALSO DEFINITIONS
 
/programs/develop/SPForth/devel/~mak/acceptgo.f
0,0 → 1,24
REQUIRE ACCEPTHistory ~micro/lib/key/accept.f
 
: REFILL ( -- flag ) \ 94 FILE EXT
SOURCE-ID IF
REFILL
ELSE
H-STDIN [ H-STDIN ] LITERAL <> IF
REFILL
ELSE
TIB 79 ACCEPT #TIB ! >IN 0! <PRE> -1 EXIT
THEN
THEN
;
 
: MAIN2 ( -- )
BEGIN
REFILL
WHILE
INTERPRET OK
REPEAT BYE
;
 
' MAIN2 TO <MAIN>
 
/programs/develop/SPForth/devel/~mak/asm/ASM.FRT
0,0 → 1,1502
( ˆ§ SMAL32
Œ®¤¨ä¨æ¨à®¢ ­­® Œ ªá¨¬®¢ë¬ Œ.Ž.
email:mak@rtc.ru
http://forth.spb.su:8888
â ¤ {812}705-92-03
â à {812}552-47-64
)
REQUIRE [IF] ~MAK\CompIF.f
REQUIRE PLACE ~MAK\PLACE.f
REQUIRE CASE lib\ext\case.f
 
VOCABULARY S_ASSEM
C" HIDDEN" FIND NIP 0=
[IF] VOCABULARY HIDDEN
[THEN]
 
ALSO HIDDEN DEFINITIONS
 
C" FLOAD" FIND NIP
[IF] FLOAD asmbase.f
[ELSE] REQUIRE S= ~mak\asm\asmbase.f
[THEN]
: 1Op1 ( name ( byte --> )
( --> )
CREATE C, DOES> C@ C,
;
 
4 VALUE *DefDatasz
\ 4 VALUE *DefDatasz
 
: 1Op1W ( name ( byte --> )
( --> )
CREATE C, DOES> C@ C, *DefDatasz 4 = IF 0x66 C, THEN
;
 
: 1Op1D ( name ( byte --> )
( --> )
CREATE C, DOES> C@ C, *DefDatasz 2 = IF 0x66 C, THEN
;
 
: 1Op2 ( name ( word --> )
( --> )
CREATE W, DOES> W@ W,
;
: REF-ERROR IF 87 THROW THEN ;
: #OPER-ERROR SWAP IF H. 94 THROW THEN DROP ;
 
0x2E 1Op1 CS:
0x3E 1Op1 DS:
0x26 1Op1 ES:
0x64 1Op1 FS:
0x65 1Op1 GS:
0x36 1Op1 SS:
: IFIND ( c-addr --> xt -1 | c-addr 0 )
DUP COUNT CONTEXT @ SEARCH-WORDLIST
IF NIP -1
ELSE 0
THEN ;
 
0 VALUE *OpcSize
0 VALUE *OpCode
0 VALUE *Mod
0 VALUE *Reg
0 VALUE *R/M
0 VALUE *Scale
0 VALUE *Index
0 VALUE *Base
0 VALUE *OpSize
0 VALUE *ImSize
0 VALUE *AdSize
0 VALUE *Imm
0 VALUE *OfSize
0 VALUE *Offset
0 VALUE *SegReg
0 VALUE *OpArray
0 VALUE *OfRel
0 VALUE *OpRel
CREATE *OffName 256 ALLOT
CREATE *ImmName 256 ALLOT
CREATE *GenName 256 ALLOT
 
: (OthSz) ( n1 --> n2 ) 6 XOR ;
 
: *OpSize>DEF *OpSize 4 = IF *DefDatasz TO *OpSize THEN ;
 
: (Seg) ( --> )
*SegReg CASE
0 OF ES: ENDOF
1 OF CS: ENDOF
2 OF SS: ENDOF
3 OF DS: ENDOF
4 OF FS: ENDOF
5 OF GS: ENDOF
ENDCASE
;
 
: CompileCommand ( --> )
*OpcSize IF
*AdSize *DefDatasz (OthSz) = IF 0x67 C, THEN
*OpSize *DefDatasz (OthSz) = IF 0x66 C, THEN
*SegReg 0< IFNOT (Seg) THEN
*OpCode HERE ! *OpcSize ALLOT
*Mod 0< IFNOT *Mod 3 AND 0x40 * *Reg 7 AND 8 * *R/M 7 AND OR OR C, THEN
*Scale 0< *Mod 0< OR IFNOT
*Scale 3 AND 0x40 * *Index 7 AND 8 * *Base 7 AND OR OR C,
THEN
*OfRel IF
*OfSize *DefDatasz <> IF 0x54 THROW THEN
*OffName C@ IFNOT 1 *OffName 1+ C! THEN
*OffName 1+ C@ IF *OffName HERE 2 AddStrObject
ELSE
*OffName C@ 1- *OffName 1+ C!
*OffName 1+ HERE 5 AddStrObject
THEN
THEN
*Offset HERE ! *OfSize ALLOT
*OpRel IF
*ImSize *DefDatasz <> IF 0x55 THROW THEN
*ImmName C@ IFNOT 1 *ImmName 1+ C! THEN
*ImmName 1+ C@ IF *ImmName HERE 2 AddStrObject
ELSE
*ImmName C@ 1- *ImmName 1+ C!
*ImmName 1+ HERE 5 AddStrObject
THEN
THEN
*Imm HERE ! *ImSize ALLOT
THEN
;
: InitCommand ( --> )
0 TO *OpcSize 0 TO *AdSize 0 TO *OpSize 0 TO *ImSize 0 TO *OfSize
0 TO *OfRel 0 TO *OpRel 0 TO *Offset 0 TO *Imm -1 TO *SegReg -1 TO *Mod
-1 TO *Scale -1 TO *Base -1 TO *Index *OffName 0! *ImmName 0! *GenName 0!
;
 
: GetOp ( --> c-addr|char|n type )
(GetOp) CASE
1 OF
1+ C@ DUP [CHAR] ; = IF SOURCE >IN ! 2DROP NullString 0 ELSE 1 THEN
ENDOF
2 OF
BASE @ >R
DUP C@ OVER + C@ CASE
[CHAR] H OF 16 BASE ! DUP 1-! ENDOF
[CHAR] B OF 2 BASE ! DUP 1-! ENDOF
[CHAR] O OF 8 BASE ! DUP 1-! ENDOF
[CHAR] D OF 10 BASE ! DUP 1-! ENDOF
ENDCASE
VAL 0= IF 0x61 THROW THEN DROP R> BASE ! 2
ENDOF
4 OF COUNT ConvertString OVER 1- C! 1- 4 ENDOF
5 OF COUNT ConvertString OVER 1- C! 1- 5 ENDOF
\ HEX
DUP
\ [ HERE DROP ]
ENDCASE
;
 
: SCopy ( c-addr1 c-addr2 --> )
OVER C@ 1+ CMOVE
;
 
: ?Reg8 ( --> n true | false )
IN>R GetOp 3 = IF
C" AL" S= 0 ?S=
C" CL" S= 1 ?S=
C" DL" S= 2 ?S=
C" BL" S= 3 ?S=
C" AH" S= 4 ?S=
C" CH" S= 5 ?S=
C" DH" S= 6 ?S=
C" BH" S= 7 ?S=
THEN
DROP FALSE R>IN
;
: ?Reg16 ( --> n true | FALSE )
IN>R GetOp 3 = IF
C" AX" S= 0 ?S=
C" CX" S= 1 ?S=
C" DX" S= 2 ?S=
C" BX" S= 3 ?S=
C" SP" S= 4 ?S=
C" BP" S= 5 ?S=
C" SI" S= 6 ?S=
C" DI" S= 7 ?S=
THEN
DROP FALSE R>IN
;
: ?Reg32 ( --> n true | FALSE )
IN>R GetOp 3 = IF
C" EAX" S= 0 ?S=
C" ECX" S= 1 ?S=
C" EDX" S= 2 ?S=
C" EBX" S= 3 ?S=
C" ESP" S= 4 ?S=
C" EBP" S= 5 ?S=
C" ESI" S= 6 ?S=
C" EDI" S= 7 ?S=
THEN
DROP FALSE R>IN
;
: ?SegReg ( --> n true | FALSE )
IN>R GetOp 3 = IF
C" ES" S= 0 ?S=
C" CS" S= 1 ?S=
C" SS" S= 2 ?S=
C" DS" S= 3 ?S=
C" FS" S= 4 ?S=
C" GS" S= 5 ?S=
THEN
DROP FALSE R>IN
;
: SEG ( --> )
?SegReg 0= IF 104 THROW THEN (Seg)
;
: (?Ptr_) ( --> n true | FALSE )
IN>R GetOp 3 = IF
C" DWORD" S= 4 ?S=
C" BYTE" S= 1 ?S=
C" WORD" S= 2 ?S=
THEN
DROP FALSE R>IN
;
 
' (?Ptr_) ->VECT (?Ptr)
: ?Ptr ( --> flag )
(?Ptr) IF
*OpSize IF *OpSize <> IF 0x50 THROW THEN ELSE TO *OpSize THEN
IN>R GetOp 3 = IF
C" PTR" S= IF RDROP TRUE EXIT ELSE DROP THEN
ELSE DROP THEN
R>IN TRUE
ELSE FALSE THEN
;
: ?FWord ( ? --> ? )
IN>R GetOp 3 = IF
C" FWORD" S= IF
RDROP IN>R GetOp 3 = IF
C" PTR" S= IF RDROP ELSE R>IN DROP THEN
ELSE R>IN DROP THEN TRUE EXIT
ELSE DROP FALSE THEN
ELSE DROP FALSE THEN R>IN
;
: ?Reg ( --> flag )
?Reg32 IF
*OpSize 1 2 BETWEEN IF 0x50 THROW THEN 4 TO *OpSize TO *Reg TRUE
ELSE
?Reg8 IF
*OpSize 2 4 BETWEEN IF 0x50 THROW THEN 1 TO *OpSize TO *Reg TRUE
ELSE
?Reg16 IF
*OpSize 4 = *OpSize 1 = OR IF 0x50 THROW THEN 2 TO *OpSize TO *Reg TRUE
ELSE FALSE THEN
THEN
THEN
;
: Comma ( --> )
GetOp 1 = IF [CHAR] , = ?EXIT THEN 0x51 THROW
;
: ?Colon ( --> flag )
IN>R GetOp 1 = IF [CHAR] : = ELSE DROP FALSE THEN
DUP IF RDROP ELSE R>IN THEN
;
: ?Bracket[ ( --> flag )
IN>R GetOp 1 = IF [CHAR] [ = IF RDROP TRUE EXIT THEN
ELSE DROP THEN R>IN FALSE
;
: (?Label) ( --> addr|0 TRUE | FALSE )
IN>R GetOp DUP 3 = IF
DROP DUP 1 FindStrObject IF RDROP NIP TRUE
ELSE
RDROP \ DUP FIND IF
\ SWAP >R DUP >Name Off_Attr + @ 0x1000000 AND IF \ IF PUBLIC
\ RDROP EXECUTE TRUE
\ ELSE
\ *GenName C@ REF-ERROR R> *GenName SCopy DROP 0 TRUE
\ THEN
\ ELSE
( DROP ) *GenName C@ REF-ERROR *GenName SCopy 0 TRUE
\ THEN
THEN
ELSE
DUP 1 = IF
DROP [CHAR] $ = IF RDROP HERE TRUE
ELSE R>IN FALSE THEN
ELSE
4 = IF
*GenName C@ REF-ERROR
*GenName 1+ SCopy *GenName 1+ C@ 1+ *GenName W! RDROP 0 TRUE
ELSE DROP R>IN FALSE THEN
THEN
THEN
;
: 'XFA ( --> cfa )
GetOp 3 5 BETWEEN IF
CONTEXT @ >R PREVIOUS FIND ALSO R> CONTEXT !
0= IF 0x64 THROW THEN
ELSE 0x63 THROW THEN
;
: ?Label ( --> addr|0 TRUE | FALSE )
IN>R GetOp
\ DUP 1 =
\ IF DROP [CHAR] { =
\ IF RDROP [CHAR] } PARSE EVALUATE TRUE
\ ELSE R>IN FALSE
\ THEN EXIT
\ ELSE
3 = IF
C" OFFSET" S= IF RDROP (?Label) 0= IF 0x5D THROW THEN TRUE EXIT
THEN
C" CFA" S= IF RDROP 'XFA TRUE EXIT THEN
C" PFA" S= IF RDROP 'XFA >BODY TRUE EXIT THEN
C" NFA" S= IF RDROP 'XFA >NAME TRUE EXIT THEN
THEN
\ THEN
DROP R>IN (?Label)
;
 
: ?Number ( --> n TRUE | FALSE )
IN>R GetOp CASE
2 OF TRUE RDROP ENDOF
1 OF DUP
[CHAR] { = IF DROP [CHAR] } PARSE EVALUATE TRUE RDROP ELSE
[CHAR] - = IF GetOp 2 = IF NEGATE TRUE RDROP
ELSE DROP FALSE R>IN THEN ELSE
FALSE R>IN THEN THEN
ENDOF
5 OF DUP C@ IF 1+ C@ ELSE DROP 0 THEN TRUE RDROP ENDOF
3 OF 7 FindStrObject IF RDROP TRUE ELSE FALSE R>IN THEN ENDOF
2DROP FALSE DUP R>IN
ENDCASE
;
VARIABLE *Sign
: Imm ( --> )
*Sign 0! 0 TO *Imm 0 TO *OpRel *GenName 0!
BEGIN
?Number IF
\ *Sign @ IF -To *Imm ELSE +To *Imm THEN
*Sign @ IF NEGATE THEN *Imm + TO *Imm
ELSE
?Label IF
*GenName C@ IF
*ImmName C@ REF-ERROR *GenName *ImmName SCopy
*Sign @ REF-ERROR *GenName 0!
THEN
\ *Sign @ IF 1-To *OpRel -To *Imm ELSE 1+To *OpRel +To *Imm THEN
*Sign @ IF *OpRel 1- TO *OpRel NEGATE
ELSE *OpRel 1+ TO *OpRel
THEN *Imm + TO *Imm
ELSE
GetOp IF 0x59 ELSE 0x66 THEN THROW
THEN
THEN
*OpRel 0 1 BETWEEN 0= REF-ERROR
*OpRel IF
*OpSize 1 =
*OpSize *DefDatasz (OthSz) = OR IF 0x50 THROW THEN
*DefDatasz TO *OpSize
THEN
GetOp DUP 1 > REF-ERROR
IF
CASE
[CHAR] + OF *Sign 0! FALSE ENDOF
[CHAR] - OF *Sign ON FALSE ENDOF
[CHAR] , OF TRUE >IN 1-! ENDOF
0x59 THROW
ENDCASE
ELSE DROP TRUE THEN
UNTIL
*OpRel IF *DefDatasz TO *ImSize EXIT THEN
*OpSize CASE
1 OF *Imm -256 AND IF 0x5A THROW THEN 1 TO *ImSize ENDOF
2 OF
\ *Imm -65536 AND IF 0x5A THROW THEN
*Imm -128 AND DUP 0= SWAP -128 = OR IF 1 ELSE 2 THEN TO *ImSize
ENDOF
4 OF
*Imm -128 AND DUP 0= SWAP -128 = OR IF 1 ELSE 4 THEN TO *ImSize
ENDOF
DROP *Imm -32768 AND DUP 0= SWAP -32768 = OR
IF 0x5C THROW THEN
*DefDatasz TO *OpSize *DefDatasz TO *ImSize
DUP
ENDCASE
;
: Mult ( n1 --> n2 )
CASE
1 OF 0 ENDOF
2 OF 1 ENDOF
4 OF 2 ENDOF
8 OF 3 ENDOF
TRUE IF 0x58 THROW THEN
ENDCASE
;
 
0 VALUE *OldReg
: ?MemReg ( --> flag )
*Reg ?Reg IF
*Reg TO *R/M TO *Reg 3 TO *Mod
ELSE
DROP ?Ptr *Sign ! *SegReg TO *OldReg IN>R
?SegReg IF
TO *SegReg
?Colon IFNOT
*Sign @ IF 82 THROW THEN *OldReg TO *SegReg R>IN FALSE EXIT
THEN
*Sign ON
THEN
RDROP ?Bracket[ DUP *Sign @ OR *Sign !
*Sign @ IFNOT DROP FALSE EXIT THEN
0= IF 0x56 THROW THEN *Sign 0! 0 TO *Offset
BEGIN
?Reg32 IF
*Sign @ REF-ERROR
*AdSize 2 = IF 0x50 THROW THEN 4 TO *AdSize IN>R
GetOp 1 = SWAP [CHAR] * = AND IF
*Index 0< 0= REF-ERROR
GetOp 2 <> REF-ERROR
Mult TO *Scale TO *Index RDROP
*Index 4 = REF-ERROR
ELSE
R>IN *Base 0< IFNOT
*Index 0< 0= REF-ERROR
0 TO *Scale *Base TO *Index
*Index 4 = REF-ERROR
THEN TO *Base
THEN
ELSE
?Reg16 IF
*Sign @ REF-ERROR
*AdSize 4 = IF 0x50 THROW THEN
2 TO *AdSize
CASE
3 OF *Base 0< 0= REF-ERROR 3 TO *Base ENDOF
5 OF *Base 0< 0= REF-ERROR 5 TO *Base ENDOF
6 OF *Index 0< 0= REF-ERROR 6 TO *Index ENDOF
7 OF *Index 0< 0= REF-ERROR 7 TO *Index ENDOF
TRUE REF-ERROR
ENDCASE
ELSE
?Number IF
*AdSize IFNOT *DefDatasz TO *AdSize THEN
*Sign @ IF NEGATE *Offset + TO *Offset
ELSE
IN>R GetOp 1 = SWAP [CHAR] * = AND IF
*Index 0< 0= REF-ERROR
?Reg32 0= REF-ERROR
TO *Index Mult TO *Scale RDROP
*Index 4 = REF-ERROR
ELSE R>IN *Offset + TO *Offset THEN
THEN
ELSE
?Label IF
*AdSize 2 = IF 0x50 THROW THEN
*DefDatasz TO *AdSize
*GenName C@ IF
*OffName C@ REF-ERROR
*GenName *OffName SCopy
DUP HERE <> IF *Sign @ REF-ERROR THEN *GenName 0!
THEN
*Sign @ IF *OfRel 1- TO *OfRel NEGATE
ELSE *OfRel 1+ TO *OfRel THEN *Offset + TO *Offset
ELSE 89 THROW THEN
THEN
THEN
THEN
*OfRel 0 1 BETWEEN 0= REF-ERROR
GetOp 1 <> REF-ERROR
CASE
[CHAR] + OF *Sign 0! FALSE ENDOF
[CHAR] - OF *Sign ON FALSE ENDOF
[CHAR] ] OF TRUE ENDOF
89 THROW
ENDCASE
UNTIL
THEN
*OfSize IFNOT
*Offset IF
*Offset 127 > *Offset -128 < OR IF
*DefDatasz TO *OfSize
*AdSize 2 = IF
*Offset 32767 > *Offset -32768 < OR
IF 91 THROW
ELSE 2 TO *OfSize
THEN
THEN
ELSE 1 TO *OfSize THEN
THEN
THEN
*OfRel IF *DefDatasz TO *OfSize THEN
*AdSize *DefDatasz = IF
*Base 0< IF
0 TO *Mod
*Index 0< IF 5 TO *R/M ELSE 4 TO *R/M 5 TO *Base THEN
*DefDatasz TO *OfSize
ELSE
*OfSize 4 = IF 2 ELSE *OfSize THEN TO *Mod
*Base 5 = *Mod 0= AND IF 0 TO *Offset 1 TO *Mod 1 TO *OfSize THEN
*Index 0< IF
*Base 4 = IF 0 TO *Scale 4 TO *Index 4 TO *R/M THEN
*Base TO *R/M
ELSE 4 TO *R/M THEN
THEN
ELSE
*AdSize 2 = IF
*OfSize TO *Mod
*Base 6 = *Index 0< *OfSize 0= AND AND IF
1 TO *Mod 0 TO *Offset 1 TO *OfSize
THEN
*Base CASE
3 OF
*Index CASE
6 OF 0 ENDOF
7 OF 1 ENDOF
DROP 7 DUP
ENDCASE
ENDOF
5 OF
*Index CASE
6 OF 2 ENDOF
7 OF 3 ENDOF
DROP 6 DUP
ENDCASE
ENDOF
*Index CASE
6 OF 4 ENDOF
7 OF 5 ENDOF
DROP 0 TO *Mod 2 TO *OfSize 6 DUP
ENDCASE
ENDCASE
TO *R/M
THEN
THEN TRUE
;
ALSO S_ASSEM DEFINITIONS PREVIOUS
 
: FCALL ( --> )
0xE8 C, \ ¬ è¨­­ ï ª®¬ ­¤  CALL
' HERE CELL+ - , ;
 
: FOR
CONTEXT @ >R PREVIOUS
INTERPRET
ALSO R> CONTEXT ! ;
 
: EQU ( --> )
LSP @ C@ 1 =
LSP @ 3 + @
HERE \ *DefDatasz 2 = IF 0xFFFF AND THEN
= AND IF
InitCommand *DefDatasz TO *OpSize
Imm *Imm LSP @ 3 + !
*OpRel IFNOT 7 LSP @ C! THEN
ELSE 93 THROW THEN
;
 
: DD ( --> )
BEGIN
InitCommand 4 TO *OpSize
Imm 4 TO *ImSize
*OpRel IF *DefDatasz 4 <> REF-ERROR
*ImSize 4 <> IF 85 THROW THEN
*ImmName C@ IFNOT 1 *ImmName 1+ C! THEN
*ImmName 1+ C@ IF *ImmName HERE 2 AddStrObject
ELSE
*ImmName C@ 1- *ImmName 1+ C!
*ImmName 1+ HERE 5 AddStrObject
THEN
THEN
*Imm ,
IN>R GetOp 1 = SWAP [CHAR] , = AND IF RDROP FALSE
ELSE R>IN TRUE THEN
UNTIL
;
 
: DW ( --> )
BEGIN
InitCommand 4 TO *OpSize
Imm *OpRel REF-ERROR
2 TO *OpSize 2 TO *ImSize
\ *Imm -65536 AND DUP 0= SWAP -65536 = OR 0= IF 0x5A THROW THEN
*Imm W,
IN>R GetOp 1 = SWAP [CHAR] , = AND IF RDROP FALSE
ELSE R>IN TRUE THEN
UNTIL
;
 
: DS ( --> )
InitCommand 4 TO *OpSize
Imm 4 TO *ImSize
*OpRel IF 101 THROW THEN
HERE *Imm DUP ALLOT ERASE
;
: DB ( --> )
BEGIN
InitCommand
IN>R GetOp 1 INVERT AND 4 = IF
RDROP COUNT ?DUP IF HERE SWAP DUP ALLOT CMOVE ELSE DROP THEN
ELSE
DROP R>IN 4 TO *OpSize
Imm *OpRel REF-ERROR
1 TO *OpSize
*Imm -128 AND DUP 0= SWAP -128 = OR *Imm 256 U< OR 0=
IF 0x5A THROW THEN
*Imm C,
THEN
IN>R GetOp 1 = SWAP [CHAR] , = AND IF RDROP FALSE
ELSE R>IN TRUE THEN
UNTIL
;
HIDDEN DEFINITIONS
0 VALUE ?ENDCODE
 
: DEF+! ( N ADDR -- )
*DefDatasz 4 = IF +! ELSE DUP>R @ + R> W! THEN ;
 
: DEF! ( N ADDR -- )
*DefDatasz 4 = IF ! ELSE W! THEN ;
 
: ENDCODE ( 0x5030F8 --> )
TRUE TO ?ENDCODE
PREVIOUS 0x5030F8 ?PAIRS LSP @ >R
BEGIN
R@ C@ WHILE
R@ C@ 5 = IF
NullString R@ 3 + @ 2 AddStrObject
R@ 7 + 9 FindStrObject IF
R@ 3 + @ DEF+! 10 R@ C!
ELSE
HERE R@ 3 + @ DEF+! HERE R@ 3 + !
R@ 8 + HERE R@ 7 + C@ DUP ALLOT CMOVE 9 R@ C!
THEN
THEN
R@ 1+ W@ R> + >R
REPEAT
RDROP LSP @ >R
BEGIN
R@ C@ WHILE
R@ C@ 8 = IF
NullString R@ 3 + @ 2 AddStrObject
NullString HERE 2 AddStrObject
HERE R@ 3 + @ DEF! R@ 7 + @ ,
THEN
R@ 1+ W@ R> + >R
REPEAT
RDROP LSP @ >R
BEGIN
R@ C@ WHILE
R@ C@ 2 = IF
R@ 7 + C@ IF
R@ 7 + 1 FindStrObject IF
R@ 3 + @ DEF+! 0 R@ 7 + C!
ELSE
\ R@ 7 + >ASCIIZ 0x21 - ErrNo ! 0x53 Error
." ASM: Label not found:" R@ 7 + COUNT TYPE ERR_
THEN
THEN
\ R@ 3 + @ LAST @ Name> - RMark
ELSE
R@ C@ 4 = IF
R@ 7 + 1 FindStrObject IF
R@ 3 + @ - 1- DUP -128 AND DUP 0= SWAP -128 = OR IF
R@ 3 + @ C!
ELSE 96 THROW THEN
ELSE
\ R@ 7 + >ASCIIZ 0x21 - ErrNo ! 0x53 Error
." ASM: Label not found:" R@ 7 + COUNT TYPE ERR_
THEN
ELSE
R@ C@ 3 = IF
R@ 7 + 1 FindStrObject IF
R@ 3 + @ - *DefDatasz - R@ 3 + @ DEF!
ELSE
\ R@ 7 + >ASCIIZ 0x21 - ErrNo ! 0x53 Error
." ASM: Label not found:" R@ 7 + COUNT TYPE ERR_
THEN
THEN
THEN
THEN
R@ 1+ W@ R> + >R
REPEAT
RDROP ( Save-Input) LSP @ >R
BEGIN
R@ C@ WHILE
R@ C@ 6 = IF
R@ 7 + 1 FindStrObject IF
\ R@ 7 + COUNT SetStream VALUE 5 RMark Public
ELSE
R@ 7 + 7 FindStrObject IF
\ R@ 7 + COUNT SetStream VALUE Public
ELSE
\ R@ 7 + >ASCIIZ 0x21 - ErrNo ! 0x62 Error
." ASM: Unresolved PUBLIC reference: R@ 7 + COUNT TYPE ERR_
THEN
THEN
THEN
R@ 1+ W@ R> + >R
REPEAT
RDROP ( Restore-Input DROP )
;
 
: STARTCODE ( -- )
ALSO S_ASSEM FALSE TO ?ENDCODE
LSP @ >R 0x5030F8 0 >L
BEGIN
BEGIN
GetOp DUP WHILE
DUP 3 = IF
DROP IFIND IF
EXECUTE
?ENDCODE IF
R> LSP ! EXIT
THEN
ELSE
*GenName SCopy GetOp 1 = SWAP [CHAR] : = AND IF
*GenName 1 FindStrObject IF
\ *GenName >ASCIIZ 0x21 - ErrNo ! 0x5F Error
." ASM: Label already defined:" R@ 7 + COUNT TYPE ERR_
ELSE *GenName HERE \ *DefDatasz 2 = IF 0xFFFF AND THEN
1 AddStrObject THEN
ELSE -321 THROW THEN
THEN
ELSE
1 = IF
[CHAR] [ = IF
[CHAR] ] WORD COUNT EVALUATE
ELSE -321 THROW THEN
ELSE -321 THROW THEN
THEN
REPEAT
2DROP REFILL 0= ABORT" endcode not found"
AGAIN
;
 
: PUBLIC ( --> )
BEGIN
GetOp 3 = IF 0 6 AddStrObject ELSE 0x5D THROW THEN
IN>R GetOp 1 = SWAP [CHAR] , = AND IF RDROP FALSE
ELSE R>IN TRUE THEN
UNTIL
;
: 2Op ( name ( c1opc c1reg ... c9opc c9reg --> )
( --> )
\ One-byte opcodes only, but with possible "reg" modIFier
CREATE 9 0 DO SWAP C, C, LOOP
DOES>
TO *OpArray InitCommand 1 TO *OpcSize
?Reg IF
Comma ?MemReg IF
*OpSize CASE
1 OF *OpArray 2+ ENDOF
2 OF *OpArray ENDOF
4 OF *OpArray ENDOF
0x5C THROW
ENDCASE
ELSE
3 TO *Mod *Reg TO *R/M
Imm *OpSize
CASE
1 OF
*OpArray
*Reg IF 12 ELSE -1 TO *Mod -1 TO *Scale 0 TO *OfSize 16 THEN +
DUP 1+ C@ TO *Reg
ENDOF
2 OF
*OpArray
*Reg IF *ImSize 1 = IF 8 ELSE 10 THEN
ELSE -1 TO *Mod -1 TO *Scale 0 TO *OfSize *OpSize TO *ImSize 14 THEN +
DUP 1+ C@ TO *Reg
ENDOF
 
4 OF
*OpArray
*Reg *ImSize 1 = OR IF *ImSize 1 = IF 8 ELSE 10 THEN
ELSE -1 TO *Mod -1 TO *Scale 0 TO *OfSize *OpSize TO *ImSize 14 THEN +
DUP 1+ C@ TO *Reg
ENDOF
0x5C THROW
ENDCASE
THEN
ELSE
?MemReg 0= IF 94 THROW THEN
Comma ?Reg IF
*OpSize CASE
1 OF *OpArray 6 + ENDOF
2 OF *OpArray CELL+ ENDOF
4 OF *OpArray CELL+ ENDOF
0x5C THROW
ENDCASE
ELSE
Imm *OpSize CASE
1 OF *OpArray 12 + DUP 1+ C@ TO *Reg ENDOF
2 OF
*OpArray *ImSize 1 = IF 8 ELSE 10 THEN + DUP 1+ C@ TO *Reg
ENDOF
4 OF
*OpArray *ImSize 1 = IF 8 ELSE 10 THEN + DUP 1+ C@ TO *Reg
ENDOF
0x5C THROW
ENDCASE
THEN
THEN
C@ DUP TO *OpCode 0xF7 = IF *OpSize TO *ImSize THEN
CompileCommand
;
: PUSH ( --> )
InitCommand
?MemReg IF
1 TO *OpcSize
*OpSize 2 < IF 0x50 THROW THEN
*Mod 3 = IF -1 TO *Mod *R/M 0x50 + TO *OpCode
ELSE 0xFF TO *OpCode 6 TO *Reg THEN
ELSE
?SegReg IF
CASE
0 OF 1 0x06 ENDOF
1 OF 1 0x0E ENDOF
2 OF 1 0x16 ENDOF
3 OF 1 0x1E ENDOF
4 OF 2 0xA00F ENDOF
5 OF 2 0xA80F ENDOF
DUP
ENDCASE
TO *OpCode TO *OpcSize
ELSE
*DefDatasz TO *OpSize Imm 1 TO *OpcSize
*ImSize 4 = *Imm -32768 AND DUP 0= SWAP -32768 = OR AND *OpRel 0= AND
IF 2 TO *ImSize THEN
*ImSize TO *OpSize
*ImSize 1 = IF 0x6A ELSE 0x68 THEN TO *OpCode
THEN
THEN
CompileCommand
;
 
: POP ( --> )
InitCommand
?MemReg IF
1 TO *OpcSize
*OpSize 2 < IF 0x50 THROW THEN
*Mod 3 = IF -1 TO *Mod *R/M 0x58 + TO *OpCode
ELSE 0x8F TO *OpCode 0 TO *Reg THEN
ELSE
?SegReg IF
CASE
0 OF 1 0x07 ENDOF
1 OF TRUE 1 #OPER-ERROR ENDOF
2 OF 1 0x17 ENDOF
3 OF 1 0x1F ENDOF
4 OF 2 0xA10F ENDOF
5 OF 2 0xA90F ENDOF
DUP
ENDCASE
TO *OpCode TO *OpcSize
ELSE 92 THROW THEN
THEN
CompileCommand
;
 
: IncDec ( name ( byte_opc b_reg word_opc w_reg reg_baseopc dummy --> )
( --> )
\ One-byte opcodes only, but with possible "reg" modIFier
CREATE 3 0 DO SWAP C, C, LOOP
DOES>
TO *OpArray InitCommand
?MemReg IF
*OpSize 0= IF 92 THROW THEN
1 TO *OpcSize
*Mod 3 = *OpSize 1 > AND IF -1 TO *Mod *OpArray C@ *R/M +
ELSE *OpSize 1 = IF 4 ELSE 2 THEN *OpArray + DUP 1+ C@ TO *Reg C@ THEN
TO *OpCode
ELSE TRUE 2 #OPER-ERROR THEN
CompileCommand
;
: NegNot ( name ( byte_opc b_reg word_opc w_reg --> )
( --> )
\ One-byte opcodes only, but with possible "reg" modIFier
CREATE 2 0 DO SWAP C, C, LOOP
DOES>
TO *OpArray InitCommand
?MemReg IF
*OpSize 0= IF 92 THROW THEN
1 TO *OpcSize
*OpArray *OpSize 1 = IF 2 + THEN DUP 1+ C@ TO *Reg C@ TO *OpCode
ELSE TRUE 3 #OPER-ERROR THEN
CompileCommand
;
: MOV ( --> )
InitCommand 1 TO *OpcSize
?MemReg IF
Comma *Mod 3 = IF
*R/M TO *Reg -1 TO *Mod
?MemReg IF
*Reg 0= *Mod 0= *R/M 5 = AND AND IF
-1 TO *Mod *OpSize 1 = IF 0xA0 ELSE 0xA1 THEN
ELSE
*OpSize 1 = IF 0x8A ELSE 0x8B THEN
THEN
ELSE
?SegReg IF
*OpSize 2 < IF 0x50 THROW THEN
*Reg TO *R/M 3 TO *Mod TO *Reg 0x8C
ELSE
Imm *OpSize TO *ImSize
*Reg *OpSize 1 = IF 0xB0 ELSE 0xB8 THEN +
THEN
THEN
ELSE
?Reg IF
*Reg 0= *Mod 0= *R/M 5 = AND AND IF
-1 TO *Mod *OpSize 1 = IF 0xA2 ELSE 0xA3 THEN
ELSE
*OpSize 1 = IF 0x88 ELSE 0x89 THEN
THEN
ELSE
Imm *OpSize TO *ImSize 0 TO *Reg
*OpSize 1 = IF 0xC6 ELSE 0xC7 THEN
THEN
THEN
ELSE
?SegReg IF
Comma TO *Reg
?MemReg IF *DefDatasz TO *OpSize 0x8E ELSE TRUE 4 #OPER-ERROR THEN
ELSE TRUE 5 #OPER-ERROR THEN
THEN
TO *OpCode CompileCommand
;
: INT ( --> )
InitCommand 1 TO *OpSize
Imm *Imm 3 = IF 0xCC C, ELSE 0xCD C, *Imm C, THEN
;
: OUT ( --> )
InitCommand
?Reg IF
*Reg 2 = *OpSize 2 = AND IF
Comma InitCommand
?Reg IF
*Reg IF TRUE 6 #OPER-ERROR THEN
*OpSize CASE
1 OF 0xEE C, ENDOF
2 OF 0xEF66 W, ENDOF
4 OF 0xEF C, ENDOF
DUP
ENDCASE
ELSE TRUE 7 #OPER-ERROR THEN
ELSE TRUE 8 #OPER-ERROR THEN
ELSE
1 TO *OpSize Imm Comma *Imm >R InitCommand
?Reg IF
*Reg IF TRUE 9 #OPER-ERROR THEN
*OpSize CASE
1 OF 0xE6 C, ENDOF
2 OF 0xE766 W, ENDOF
4 OF 0xE7 C, ENDOF
DUP
ENDCASE
ELSE TRUE 10 #OPER-ERROR THEN
R> C,
THEN
;
: IN ( --> )
InitCommand
?Reg IF *Reg 11 #OPER-ERROR ELSE TRUE 12 #OPER-ERROR THEN
Comma *OpSize >R InitCommand
?Reg IF
*Reg 2 = *OpSize 2 = AND 0= 13 #OPER-ERROR
R> CASE
1 OF 0xEC C, ENDOF
2 OF 0xED66 W, ENDOF
4 OF 0xED C, ENDOF
DUP
ENDCASE
ELSE
1 TO *OpSize Imm
R> CASE
1 OF 0xE4 C, ENDOF
2 OF 0xE566 W, ENDOF
4 OF 0xE5 C, ENDOF
DUP
ENDCASE
*Imm C,
THEN
;
: LxS ( name ( opcode opcsize --> )
( --> )
CREATE C, W,
DOES>
InitCommand
DUP C@ TO *OpcSize 1+ W@ TO *OpCode
?Reg IF
*OpSize TO *OpArray
Comma *OpSize 2 < IF 0x50 THROW THEN
*OpSize 2 = *OpCode 0x8D = OR IF \ Opcode 8D belongs TO LEA
*OpCode 0x8D = IF 0 ELSE 4 THEN TO *OpSize
?MemReg IF
*Mod 3 = 14 #OPER-ERROR
*OpCode 0x8D = IF *OpArray ELSE 2 THEN TO *OpSize
ELSE TRUE 15 #OPER-ERROR THEN
ELSE
?Ptr IF 0x50 THROW THEN
?FWord DROP *DefDatasz TO *OpSize
?MemReg IF *Mod 3 = 16 #OPER-ERROR
ELSE TRUE 17 #OPER-ERROR THEN
THEN
ELSE TRUE 18 #OPER-ERROR THEN
CompileCommand
;
: JShort ( --> )
*OpArray C@ 0= 19 #OPER-ERROR
*DefDatasz TO *OpSize
Imm *ImmName C@ IF
*OpArray 1+ W@ HERE ! *OpArray C@ ALLOT
*ImmName HERE 4 AddStrObject
0 C,
ELSE
*Imm HERE 2+ - -128 AND DUP 0= SWAP -128 = OR IF
*Imm HERE 2+ - *OpArray 1+ W@ HERE ! *OpArray C@ ALLOT C,
ELSE 96 THROW THEN
THEN
;
: Jxx ( name ( indir_opcsize i_opc i_reg near_sze n_opc short_sz s_opc --> )
( --> )
CREATE SWAP C, W, SWAP C, W, ROT C, SWAP W, C,
DOES>
TO *OpArray
InitCommand
IN>R GetOp 3 = IF C" SHORT" S= IF RDROP JShort EXIT THEN THEN DROP R>IN
0 TO *AdSize
?MemReg IF
*OpArray 6 + C@ ?DUP IF TO *OpcSize ELSE 20 #OPER-ERROR THEN
*OpArray 7 + W@ TO *OpCode *OpArray 9 + C@ TO *Reg
CompileCommand EXIT
THEN
*DefDatasz TO *OpSize
Imm *OpSize>DEF *OpArray C@ *OpArray 3 + C@ OR 0= 21 #OPER-ERROR
*ImmName C@ IF
*OpArray 3 + C@ IF
*OpArray CELL+ W@ HERE ! *OpArray 3 + C@ ALLOT
*ImmName HERE 3 AddStrObject 0 *DefDatasz 4 = IF , ELSE W, THEN
ELSE
*OpArray 1+ W@ HERE ! *OpArray C@ ALLOT
*ImmName HERE 4 AddStrObject 0 C,
THEN
ELSE
\ *Imm 0x100 KernelSize + LAST @ Name> BETWEEN IF
\ 0 TO *OpRel *OffName 0! *ImmName 0! 0 TO *ImSize 0 TO *Offset 4 TO *OfSize
\ 4 TO *AdSize -1 TO *Base -1 TO *Index -1 TO *Scale 5 TO *R/M 0 TO *Mod
\ *OpArray 6 + C@ ?DUP 0= ABORT" ASM: External address reference not allowed"
\ TO *OpcSize
\ *OpArray 7 + W@ TO *OpCode *OpArray 9 + C@ TO *Reg
\ *Imm HERE *OpcSize + 1+ 8 AddNumObject
\ CompileCommand EXIT
\ THEN
*OpArray C@ *Imm HERE 2+ - -128 AND DUP 0= SWAP -128 = OR AND IF
*Imm HERE 1+ *OpArray C@ + - *OpArray 1+ W@ HERE ! *OpArray C@ ALLOT C,
ELSE
*OpArray 3 + C@ IF
*Imm HERE *DefDatasz 4 = IF CELL+ THEN *OpArray 3 + C@ + -
*OpArray CELL+ W@ HERE ! *OpArray 3 + C@ ALLOT
*DefDatasz 4 = IF , ELSE W, THEN
ELSE 96 THROW THEN
THEN
THEN
;
: ShIFt ( name ( reg --> )
( --> )
\ Hardcoded opcodes - "reg" modIFiers only
CREATE C,
DOES>
InitCommand
C@ TO *Reg
?MemReg IF
Comma ?Reg8 IF
1 <> 22 #OPER-ERROR
*OpSize 1 = IF 0xD2 ELSE 0xD3 THEN
ELSE
Imm *Imm 0xFF U> IF 90 THROW THEN
*Imm 1 = IF
*OpSize 1 = IF 0xD0 ELSE 0xD1 THEN 0 TO *ImSize
ELSE
*OpSize 1 = IF 0xC0 ELSE 0xC1 THEN 1 TO *ImSize
THEN
THEN
ELSE TRUE 23 #OPER-ERROR THEN
TO *OpCode 1 TO *OpcSize
CompileCommand
;
: XCHG ( --> )
InitCommand
?MemReg IF
Comma *Mod 3 = IF
-1 TO *Mod *R/M TO *Reg
?MemReg IF
*Mod 3 = *R/M 0= *Reg 0= OR AND *OpSize 1 > AND IF
*OpSize 2 = IF 0x66 C, THEN
0x90 *Reg + *R/M + C, EXIT
THEN
ELSE TRUE 24 #OPER-ERROR THEN
ELSE
?Reg 0= 25 #OPER-ERROR
THEN
ELSE 25 #OPER-ERROR THEN
*OpSize 1 = IF 0x86 ELSE 0x87 THEN TO *OpCode 1 TO *OpcSize
CompileCommand
;
: IMUL ( --> )
InitCommand
?MemReg IF
IN>R GetOp 1 = SWAP [CHAR] , = AND IF
RDROP *Mod 3 <> 26 #OPER-ERROR
*OpSize 1 > 0= 27 #OPER-ERROR
*R/M TO *Reg -1 TO *Mod
?MemReg IF
IN>R GetOp 1 = SWAP [CHAR] , = AND IF
RDROP Imm 1 TO *OpcSize
*ImSize 1 = IF 0x6B ELSE 0x69 THEN TO *OpCode
ELSE
R>IN 0xAF0F TO *OpCode 2 TO *OpcSize
THEN
ELSE
Imm 3 TO *Mod *Reg TO *R/M 1 TO *OpcSize
*ImSize 1 = IF 0x6B ELSE 0x69 THEN TO *OpCode
THEN
ELSE
R>IN *OpSize 1 = IF 0xF6 ELSE 0xF7 THEN TO *OpCode 1 TO *OpcSize 5 TO *Reg
THEN
ELSE TRUE 28 #OPER-ERROR THEN
CompileCommand
;
: MOVxx ( name ( opc1 opc2 --> )
( --> )
\ Two-byte opcodes only
CREATE W, W,
DOES>
InitCommand
TO *OpArray 2 TO *OpcSize
?Reg IF
*OpSize >R 0 TO *OpSize
Comma ?MemReg IF
*OpSize 4 = IF 0x50 THROW THEN
*OpSize 2 = R> TO *OpSize IF
*OpSize 4 <> IF 0x50 THROW THEN
*OpArray W@ TO *OpCode
ELSE *OpArray 2+ W@ TO *OpCode THEN
ELSE TRUE 29 #OPER-ERROR THEN
ELSE TRUE 29 #OPER-ERROR THEN
CompileCommand
;
: Bit ( name ( c1opc c1reg c2opc c2reg --> )
( --> )
\ Two-byte opcodes only, with possible "reg" modIFier
CREATE SWAP W, C, SWAP W, C,
DOES>
InitCommand
TO *OpArray 2 TO *OpcSize
?MemReg IF
*OpSize 2 < 30 #OPER-ERROR
Comma ?Reg IF *OpArray 3 +
ELSE
Imm *Imm 0xFF > IF 90 THROW THEN
1 TO *ImSize *OpArray 2+ C@ TO *Reg *OpArray
THEN
W@ TO *OpCode
ELSE TRUE 31 #OPER-ERROR THEN
CompileCommand
;
: SETxx ( name ( opc --> )
( --> )
\ Two-byte opcodes only
CREATE W,
DOES>
InitCommand
W@ TO *OpCode 2 TO *OpcSize
?MemReg IF
*OpSize 1 <> 33 #OPER-ERROR
0 TO *Reg
ELSE TRUE 34 #OPER-ERROR THEN
CompileCommand
;
: SHxD ( name ( opc1 opc2 --> )
( --> )
\ Two-byte opcodes only
CREATE W, W,
DOES>
InitCommand
TO *OpArray 2 TO *OpcSize
?MemReg IF
*OpSize 2 < 0= 35 #OPER-ERROR
Comma ?Reg IF
Comma ?Reg8 IF 1 <> 36 #OPER-ERROR *OpArray
ELSE Imm *Imm 0xFF > IF 90 THROW THEN *OpArray 2+ THEN
ELSE TRUE 37 #OPER-ERROR THEN
ELSE TRUE 38 #OPER-ERROR THEN
W@ TO *OpCode
CompileCommand
;
: BSx ( name ( WORD --> )
( --> )
CREATE W,
DOES>
InitCommand W@ TO *OpCode 2 TO *OpcSize
?Reg IF
*OpSize 2 < 39 #OPER-ERROR
Comma ?MemReg 0= TRUE 40 #OPER-ERROR
ELSE TRUE 41 #OPER-ERROR THEN
CompileCommand
;
: Rxx ( name ( opc --> )
( --> )
CREATE C, DOES> C@ C, 1 C, 0xC3 C,
;
: ALIGN ( --> )
InitCommand *DefDatasz TO *OpSize Imm 4 TO *ImSize
*OpRel IF 101 THROW THEN
BEGIN
HERE *Imm MOD WHILE
0 C,
REPEAT
;
 
: I' BL WORD IFIND 0= IF -321 THROW THEN ( -? ) ;
 
ALSO S_ASSEM DEFINITIONS
 
S" ~mak\asm\ASM_SIF.F" INCLUDED
 
0xC9 1Op1 LEAVE
0xCC 1Op1 INT3
0xCE 1Op1 INTO
0x37 1Op1 AAA
0x3F 1Op1 AAS
0x99 1Op1D CDQ
0x98 1Op1D CWDE
0xF8 1Op1 CLC
0xFC 1Op1 CLD
0xFA 1Op1 CLI
0xF5 1Op1 CMC
0xA6 1Op1 CMPSB
0xA7 1Op1D CMPSD
0x27 1Op1 DAA
0x2F 1Op1 DAS
0xF4 1Op1 HLT
0x6C 1Op1 INSB
0x6D 1Op1D INSD
0xCF 1Op1D IRETD
0x9F 1Op1 LAHF
0xAC 1Op1 LODSB
0xAD 1Op1D LODSD
0xA4 1Op1 MOVSB
0xA5 1Op1D MOVSD
0x90 1Op1 NOP
0x6E 1Op1 OUTSB
0x6F 1Op1D OUTSD
0x61 1Op1D POPAD
0x60 1Op1D PUSHAD
0x9D 1Op1D POPFD
0x9C 1Op1D PUSHFD
0xC3 1Op1 RET
0xCB 1Op1 RETF
0x9E 1Op1 SAHF
0xAE 1Op1 SCASB
0xAF 1Op1D SCASD
0xF9 1Op1 STC
0xFD 1Op1 STD
0xFB 1Op1 STI
0xAA 1Op1 STOSB
0xAB 1Op1D STOSD
0x9B 1Op1 WAIT
0xD7 1Op1 XLAT
0xD7 1Op1 XLATB
0xF0 1Op1 LOCK
0xF3 1Op1 REP
0xF3 1Op1 REPE
0xF3 1Op1 REPZ
0xF2 1Op1 REPNE
0xF2 1Op1 REPNZ
0x0AD5 1Op2 AAD
0x0AD4 1Op2 AAM
0x310F 1Op2 RDTSC
0x98 1Op1W CBW
0x99 1Op1W CWD
0xA7 1Op1W CMPSW
0x6D 1Op1W INSW
0xCF 1Op1W IRET
0xAD 1Op1W LODSW
0xA5 1Op1W MOVSW
0x6F 1Op1W OUTSW
0x61 1Op1W POPA
0x60 1Op1W PUSHA
0x9D 1Op1W POPF
0x9C 1Op1W PUSHF
0xAF 1Op1W SCASW
0xAB 1Op1W STOSW
0x14 0 0x15 0 0x80 2 0x81 2 0x83 2 0x10 0 0x11 0 0x12 0 0x13 0 2Op ADC
0x04 0 0x05 0 0x80 0 0x81 0 0x83 0 0x00 0 0x01 0 0x02 0 0x03 0 2Op ADD
0x24 0 0x25 0 0x80 4 0x81 4 0x83 4 0x20 0 0x21 0 0x22 0 0x23 0 2Op AND
0x3C 0 0x3D 0 0x80 7 0x81 7 0x83 7 0x38 0 0x39 0 0x3A 0 0x3B 0 2Op CMP
0x1C 0 0x1D 0 0x80 3 0x81 3 0x83 3 0x18 0 0x19 0 0x1A 0 0x1B 0 2Op SBB
0x2C 0 0x2D 0 0x80 5 0x81 5 0x83 5 0x28 0 0x29 0 0x2A 0 0x2B 0 2Op SUB
0x34 0 0x35 0 0x80 6 0x81 6 0x83 6 0x30 0 0x31 0 0x32 0 0x33 0 2Op XOR
0x0C 0 0x0D 0 0x80 1 0x81 1 0x83 1 0x08 0 0x09 0 0x0A 0 0x0B 0 2Op OR
0xA8 0 0xA9 0 0xF6 0 0xF7 0 0xF7 0 0x84 0 0x85 0 0x84 0 0x85 0 2Op TEST
0xFE 0 0xFF 0 0x40 0 IncDec INC
0xFE 1 0xFF 1 0x48 0 IncDec DEC
0xF6 3 0xF7 3 NegNot NEG
0xF6 2 0xF7 2 NegNot NOT
0xF6 4 0xF7 4 NegNot MUL
0xF6 6 0xF7 6 NegNot DIV
0xF6 7 0xF7 7 NegNot IDIV
0x8D 1 LxS LEA
0xC5 1 LxS LDS
0xC4 1 LxS LES
0xB20F 2 LxS LSS
0xB40F 2 LxS LFS
0xB50F 2 LxS LGS
1 0xFF 4 1 0xE9 1 0xEB Jxx JMP
1 0xFF 2 1 0xE8 0 0 Jxx CALL
0 0 0 0 0 1 0xE3 Jxx JECXZ
0 0 0 0 0 2 0xE367 Jxx JCXZ
0 0 0 0 0 1 0xE2 Jxx LOOP
0 0 0 0 0 1 0xE1 Jxx LOOPZ
0 0 0 0 0 1 0xE0 Jxx LOOPNZ
0 0 0 2 0x840F 1 0x74 Jxx JZ
0 0 0 2 0x800F 1 0x70 Jxx JO
0 0 0 2 0x810F 1 0x71 Jxx JNO
0 0 0 2 0x820F 1 0x72 Jxx JC
0 0 0 2 0x830F 1 0x73 Jxx JNC
0 0 0 2 0x850F 1 0x75 Jxx JNZ
0 0 0 2 0x860F 1 0x76 Jxx JNA
0 0 0 2 0x870F 1 0x77 Jxx JA
0 0 0 2 0x880F 1 0x78 Jxx JS
0 0 0 2 0x890F 1 0x79 Jxx JNS
0 0 0 2 0x8A0F 1 0x7A Jxx JPE
0 0 0 2 0x8B0F 1 0x7B Jxx JPO
0 0 0 2 0x8C0F 1 0x7C Jxx JL
0 0 0 2 0x8D0F 1 0x7D Jxx JGE
0 0 0 2 0x8E0F 1 0x7E Jxx JLE
0 0 0 2 0x8F0F 1 0x7F Jxx JG
: JE JZ ;
: JB JC ;
: JNAE JC ;
: JAE JNC ;
: JNB JNC ;
: JNE JNZ ;
: JBE JNA ;
: JNBE JA ;
: JP JPE ;
: JNP JPO ;
: JNGE JL ;
: JNL JGE ;
: JNG JLE ;
: JNLE JG ;
: LOOPE LOOPZ ;
: LOOPNE LOOPNZ ;
0x02 ShIFt RCL
0x03 ShIFt RCR
0x00 ShIFt ROL
0x01 ShIFt ROR
0x04 ShIFt SAL
0x07 ShIFt SAR
0x04 ShIFt SHL
0x05 ShIFt SHR
0xBE0F 0xBF0F MOVxx MOVSX
0xB60F 0xB70F MOVxx MOVZX
0 0xA30F 4 0xBA0F Bit BT
0 0xBB0F 7 0xBA0F Bit BTC
0 0xB30F 6 0xBA0F Bit BTR
0 0xAB0F 5 0xBA0F Bit BTS
0x970F SETxx SETA
0x930F SETxx SETAE
0x920F SETxx SETC
0x960F SETxx SETNA
0x940F SETxx SETZ
0x9F0F SETxx SETG
0x9D0F SETxx SETGE
0x9C0F SETxx SETL
0x9E0F SETxx SETLE
0x950F SETxx SETNZ
0x900F SETxx SETO
0x910F SETxx SETNO
0x980F SETxx SETS
0x990F SETxx SETNS
0x9A0F SETxx SETP
0x9B0F SETxx SETNP
: SETNBE SETA ;
: SETNB SETAE ;
: SETNC SETAE ;
: SETB SETC ;
: SETNAE SETC ;
: SETBE SETNA ;
: SETE SETZ ;
: SETNLE SETG ;
: SETNL SETGE ;
: SETNGE SETL ;
: SETNG SETLE ;
: SETNE SETNZ ;
: SETPE SETP ;
: SETPO SETNP ;
0xA40F 0xA50F SHxD SHLD
0xAC0F 0xAD0F SHxD SHRD
0xBC0F BSx BSF
0xBD0F BSx BSR
0x73 Rxx RC
0x72 Rxx RNC
0x75 Rxx RZ
0x74 Rxx RNZ
0x76 Rxx RA
0x77 Rxx RNA
0x7A Rxx RPO
0x7B Rxx RPE
0x71 Rxx RO
0x70 Rxx RNO
0x7E Rxx RG
0x7F Rxx RNG
0x7D Rxx RL
0x7C Rxx RNL
: RE RZ ;
: RB RC ;
: RNAE RC ;
: RAE RNC ;
: RNB RNC ;
: RNE RNZ ;
: RBE RNA ;
: RNBE RA ;
: RP RPE ;
: RNP RPO ;
: RNGE RL ;
: RGE RNL ;
: RLE RNG ;
: RNLE RG ;
 
PREVIOUS
 
ALSO FORTH DEFINITIONS
 
: Code ( -- )
HEADER STARTCODE ;
 
: STARTCODE STARTCODE ;
 
: USE16 ( --> )
2 TO *DefDatasz
;
: USE32 ( --> )
4 TO *DefDatasz
;
 
S_ASSEM DEFINITIONS
 
: MOVSD 0xA5 C, *DefDatasz 2 = IF 0x66 C, THEN ;
: MOVSW 0xA5 C, *DefDatasz 4 = IF 0x66 C, THEN ;
 
: SEG SEG ;
: PUBLIC PUBLIC ;
: ENDCODE ENDCODE ;
: PUSH PUSH ;
: POP POP ;
: MOV MOV ;
: INT INT ;
: OUT OUT ;
: IN IN ;
: XCHG XCHG ;
: IMUL IMUL ;
: ALIGN ALIGN ;
 
PREVIOUS
PREVIOUS DEFINITIONS
 
\EOF
USE16
Code ZZ
mov bp, msg
msg: ; EQU 4444H
RET
ENDCODE
\EOF
 
C" DBG" FIND NIP
[IF]
 
ALSO S_ASSEM
mov Ebp, msg
 
USE16
DBG mov bp, msg
[THEN]
\S
 
Code ZZ
ADD EBX, {KEY}
ADD EBX, 44H
ADD EBX, 4444444H
WWW: MOV EAX, WWW+4
MOV EAX, [EBP+EDX*4]
FOR 0x44444 ,
JMP SHORT SS1
SS1: JMP SS2
SS2:
EndCode
 
' ZZ 20 DUMP
\ 4B22AE 09C0 OR EAX , EAX
\ http://win32asm.chat.ru/
/programs/develop/SPForth/devel/~mak/asm/ASM_SIF.F
0,0 → 1,40
REQUIRE [IF] ~MAK\CompIF.f
 
C" I'" FIND NIP
[IF]
: I' BL WORD FIND 0= IF -321 THROW THEN ( -? ) ;
[THEN]
 
 
0x75 CONSTANT 0= 0x74 CONSTANT 0<> 0x79 CONSTANT 0<
0x78 CONSTANT 0>= 0x7D CONSTANT < 0x7C CONSTANT >=
0x7F CONSTANT <= 0x7E CONSTANT > 0x73 CONSTANT U<
0x72 CONSTANT U>= 0x77 CONSTANT U<= 0x76 CONSTANT U>
0x71 CONSTANT OV 0x70 CONSTANT NOV 0xE1 CONSTANT <>C0=
0xE2 CONSTANT C0= 0xE0 CONSTANT ?C0= 0xE3 CONSTANT C0<>
 
: SIF ( - a) I' EXECUTE C, HERE ( origin) 0 C, ( blank) ;
: SWHILE ( a1 "opcode" - a2 a1) SIF SWAP ;
: STHEN ( a -) HERE OVER 1+ - SWAP C! ;
: SELSE ( a - a') 0xEB ( short jmp) C,
HERE OVER - SWAP C! HERE 0 C, ;
: SBEGIN ( - a) HERE ;
: SUNTIL_ ( a opc -) C, HERE 1+ - C, ;
: SUNTIL ( a -) I' EXECUTE SUNTIL_ ;
: SAGAIN ( a -) 0xEB SUNTIL_ ;
: SREPEAT ( a a1 -) SAGAIN STHEN ;
 
: SLOOP ( a -) 0xE2 SUNTIL_ ;
: SLOOPZ ( a -) 0xE1 SUNTIL_ ;
: SLOOPNZ ( a -) 0xE0 SUNTIL_ ;
 
: LIF ( opcode - a) I' EXECUTE 0xF10 + W, HERE ( origin) 0 , ( blank) ;
: LWHILE ( a1 opcode - a2 a1) LIF SWAP ;
: LTHEN ( a -) HERE OVER CELL+ - SWAP ! ;
: LELSE ( a - a') 0xE9 ( short jmp) C,
HERE OVER - SWAP ! HERE 0 , ;
: LUNTIL ( a opc -) I' EXECUTE 0xF10 + W, HERE CELL+ - , ;
: LAGAIN ( a -) 0xE9 C, HERE CELL+ - , ;
: LREPEAT ( a -) LAGAIN LTHEN ;
 
: II BL WORD FIND1 0= ;
/programs/develop/SPForth/devel/~mak/asm/asmbase.f
0,0 → 1,237
 
~mak\utils.f
 
CREATE GetOp_STR 80 ALLOT
C" SkipDelimiters" FIND NIP 0=
[IF]
: 2+ 2 + ;
: 0! OFF ;
: 1+! incr ;
: 1-! DECR ;
: EndOfChunk ( -- flag )
>IN @ SOURCE NIP < 0= \ >IN ­¥ ¬¥­ìè¥, 祬 ¤«¨­  ç ­ª 
;
 
: CharAddr ( -- c-addr )
SOURCE DROP >IN @ +
;
 
: PeekChar ( -- char )
CharAddr C@ \ ᨬ¢®« ¨§ ⥪ã饣® §­ ç¥­¨ï >IN
;
 
: GetChar ( -- char flag )
EndOfChunk
IF 0 FALSE
ELSE PeekChar TRUE THEN
;
 
: IsDelimiter ( char -- flag )
BL 1+ < ;
 
: OnDelimiter ( -- flag )
GetChar SWAP IsDelimiter AND
;
 
: SkipDelimiters ( -- ) \ ¯à®¯ãáâ¨âì ¯à®¡¥«ì­ë¥ ᨬ¢®«ë
BEGIN
OnDelimiter
WHILE
>IN 1+!
REPEAT
;
 
: RDROP POSTPONE R>DROP ; IMMEDIATE
 
[THEN]
 
: OnNotDelimiter_ ( C -- flag )
DUP [CHAR] 0 U< IF DROP FALSE EXIT THEN
DUP [CHAR] : U< IF DROP TRUE EXIT THEN
DUP [CHAR] @ U< IF DROP FALSE EXIT THEN
DUP [CHAR] [ U< IF DROP TRUE EXIT THEN
DUP [CHAR] _ = IF DROP TRUE EXIT THEN
DUP [CHAR] a U< IF DROP FALSE EXIT THEN
DUP [CHAR] { U< IF DROP TRUE EXIT THEN
DROP FALSE
;
 
: SkipWord_ ( -- ) \ ¯à®¯ãáâ¨âì term ᨬ¢®«ë
BEGIN
GetChar IF OnNotDelimiter_ THEN
WHILE
>IN 1+!
REPEAT ;
 
: ParseWord_ ( -- c-addr u )
CharAddr >IN @
SkipWord_
>IN @ - NEGATE ;
 
C" UPPER" FIND NIP 0=
[IF]
 
BASE @ HEX
: UPC ( c -- c' )
DUP [CHAR] Z U>
IF DF AND
THEN ;
 
BASE !
 
: UPPER ( ADDR LEN -- )
0 ?DO COUNT UPC OVER 1- C! LOOP DROP ;
 
[THEN]
 
: IN>R POSTPONE >IN
POSTPONE @
POSTPONE >R ; IMMEDIATE
 
: R>IN POSTPONE R>
POSTPONE >IN
POSTPONE ! ; IMMEDIATE
 
: GetOp_BS ParseWord_ GetOp_STR PLACE GetOp_STR ;
 
: non-term 1 GetOp_STR C! PeekChar GetOp_STR 1+ C! >IN 1+! GetOp_STR ;
 
: TERM-STR CharAddr SkipWord_ CharAddr OVER -
GetOp_STR PLACE GetOp_STR DUP COUNT UPPER ;
 
\ types: 1 - non-term (comments, etc.)
\ 2 - number
\ 3 - name
\ 4 - "-bracketed string
\ 5 - '-bracketed string
 
CREATE XXX 0 ,
: (GetOp) ( --> string type )
SkipDelimiters
GetChar 0= IF DROP XXX FALSE EXIT THEN
DUP [CHAR] 0 <
IF DUP [CHAR] " =
IF [CHAR] " GetOp_BS 4 EXIT
THEN
[CHAR] ' =
IF [CHAR] ' GetOp_BS 5 EXIT
THEN non-term 1 EXIT
THEN
DUP [CHAR] : <
IF DROP TERM-STR 2 EXIT
THEN
OnNotDelimiter_
IF TERM-STR 3 EXIT
THEN non-term 1 ;
 
: IFNOT POSTPONE 0=
POSTPONE IF ; IMMEDIATE
 
1000 ALLOT
HERE CONSTANT LS0
VARIABLE LSP
LS0 LSP !
 
: ADDNUMOBJECT ( name addr type --> )
-11 LSP +!
LSP @ C!
11 LSP @ 1+ W!
LSP @ 3 + !
LSP @ 7 + ! ;
 
 
: AddStrObject ( name addr type --> )
ROT
DUP C@ 1+ NEGATE LSP +!
COUNT LSP @ PLACE \ addr type
-7 LSP +!
LSP @ C!
LSP @ 7 + C@ 8 +
LSP @ 1+ W!
LSP @ 3 + ! ;
 
0
1 FIELD L_TYPE
2 FIELD L_SIZE
4 FIELD L_ADDR
0 FIELD L_NAME
DROP
 
: FindStrObject ( name type --> addr true | false )
LSP @ >R
BEGIN R@ L_SIZE W@
WHILE
DUP R@ L_TYPE C@ =
IF OVER R@ L_SIZE W@ 7 -
R@ L_NAME R@ L_SIZE W@ 7 - COMPARE 0=
IF 2DROP R> L_ADDR @ TRUE EXIT
THEN
THEN R@ L_SIZE W@ R> + >R
REPEAT 2DROP RDROP FALSE ;
 
CREATE NullString 0 ,
 
 
: ConvertString ;
 
: S= ( c-addr1 c-addr2 --> true | c-addr1 false )
OVER COUNT ROT COUNT
COMPARE
IF FALSE
ELSE DROP TRUE
THEN ;
: ?S= ( flag n R: >IN --> R: >IN | -->> n true )
SWAP
IF 2R> 2DROP TRUE EXIT
THEN DROP
;
 
 
ALSO FORTH DEFINITIONS
 
: VAL ( ADDR -- UD2 FLAG )
0 0 ROT COUNT >NUMBER NIP 0= ;
 
VARIABLE CUR-PAB
HERE 0 , CUR-PAB !
 
: ?PABLIC ( CFA -- FLAG )
CUR-PAB @
BEGIN 2DUP @ U<
WHILE @
REPEAT CELL+ @ = ;
 
: PABLIC ( -- )
HERE CUR-PAB @ , LAST @ NAME> , CUR-PAB ! ;
 
: >L
-4 LSP +!
LSP @ ! ;
 
: L>
LSP @ @
4 LSP +! ;
 
: ERR_ TRUE ABORT" " ;
 
C" 1-!" FIND NIP 0=
[IF]
: 1-! ( ADDR -- )
DUP>R @ 1- R> ! ;
[THEN]
 
C" ON" FIND NIP 0=
[IF]
: ON ( ADDR -- )
TRUE SWAP ! ;
[THEN]
 
C" ?PAIRS" FIND NIP 0=
[IF]
: ?PAIRS XOR ABORT" conditionals not paired" ;
[THEN]
 
\ : 'Alias ' Alias ;
PREVIOUS DEFINITIONS
 
 
/programs/develop/SPForth/devel/~mak/asm
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/author.txt
0,0 → 1,0
Mihail Maksimov [mak@rtc.ru]
/programs/develop/SPForth/devel/~mak/case.f
0,0 → 1,33
 
 
VARIABLE CSP \ Óêàçàòåëü ñòåêà êîíòðîëÿ
 
: CASE
CSP @ SP@ CSP ! ; IMMEDIATE
 
: ?OF_
POSTPONE IF POSTPONE DROP ; IMMEDIATE
 
: OF
POSTPONE OVER POSTPONE = POSTPONE ?OF_ ; IMMEDIATE
 
: ENDOF
POSTPONE ELSE ; IMMEDIATE
 
: DUPENDCASE
BEGIN SP@ CSP @ <> WHILE POSTPONE THEN REPEAT
CSP ! ; IMMEDIATE
 
: ENDCASE
POSTPONE DROP POSTPONE DUPENDCASE
; IMMEDIATE
 
: OF\
POSTPONE OVER POSTPONE <> POSTPONE IF ; IMMEDIATE
 
: OF;
POSTPONE OVER POSTPONE = POSTPONE IF 2>R
POSTPONE DUPENDCASE 2R>
POSTPONE DROP ; IMMEDIATE
 
HEX
/programs/develop/SPForth/devel/~mak/djgpp/gdis.F
0,0 → 1,637
\ HSSSS H.
 
[IFNDEF] BREAK
: BREAK POSTPONE EXIT POSTPONE THEN ; IMMEDIATE
[THEN]
 
C" VECT-CODE" FIND NIP 0=
[IF] ' _VECT-CODE VALUE VECT-CODE
[ELSE] ' _VECT-CODE TO VECT-CODE
[THEN]
C" USER-CODE" FIND NIP 0=
[IF] ' _USER-CODE VALUE USER-CODE
[ELSE] ' _USER-CODE TO USER-CODE
[THEN]
C" USER-VALUE-CODE" FIND NIP 0=
[IF] ' _USER-VALUE-CODE VALUE USER-VALUE-CODE
[ELSE] ' _USER-VALUE-CODE TO USER-VALUE-CODE
[THEN]
 
\ ' _CONSTANT-CODE TO CONSTANT-CODE
\ ' _CREATE-CODE TO CREATE-CODE
\ ' _CLITERAL-CODE TO CLITERAL-CODE
\ ' _SLITERAL-CODE TO SLITERAL-CODE
 
BASE @ HEX
 
: DUP5B?0 ( C -- C FLAG )
DUP 0C7 AND 5 = \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
OVER 0FC AND 0B8 = OR \ MOV EAX|EBX|ECX|EDX, # X
;
 
: DUP5B?1 ( C -- C FLAG )
DUP 0FD AND 0A1 = \ MOV EAX, X | X , EAX
;
 
: DUP6B?0 ( W -- W FLAG )
DUP C3FF AND C081 = \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
OVER 0C7 = OR \ MOV [EAX], # X
\ OVER 878B = OR \ MOV EAX, X [EDI]
\ OVER 878D = OR \ LEA EAX, X [EDI]
\ OVER 873B = OR \ CMP EAX, X [EDI]
;
 
: DUP6B?1 ( W -- W FLAG )
DUP 00501 = \ ADD X , EAX
OVER 053B = OR \ CMP EAX, X
 
\ X00X.X101 1000.10X1
OVER 67FD AND 0589 = OR \ MOV X {[EBP]}, E(ACDB)X | E(ACDB)X , X {[EBP]}
OVER 0589 = OR \ MOV X , EAX
OVER 058D = OR \ MOV EAX, X
OVER 1D8D = OR \ MOV EBX, X
OVER 808B = OR \ MOV EAX, X [EAX]
OVER 05FF = OR \ INC X
\ OVER FCFF AND C0C7 = OR \ MOV EAX|EBX|ECX|EDX, # X
;
 
: UV> ' >BODY @ TlsIndex@ + POSTPONE LITERAL ; IMMEDIATE
 
\ : GGGX H. ." -0x" TlsIndex@ H. ." -0x" RESERVE H. ;
 
: .EDI ( ADDR n -- ADDR1 )
." [
DROP 2+ DUP @
 
\ ." XX" DUP H.
TlsIndex@ +
CASE
R0 OF ." T_R0" ENDOF
S0 OF ." T_S0" ENDOF
WARNING OF ." T_WARNING" ENDOF
STATE OF ." T_STATE" ENDOF
BLK OF ." T_BLK" ENDOF
CURFILE OF ." T_CURFILE" ENDOF
HANDLER OF ." T_HANDLER" ENDOF
HLD OF ." T_HLD" ENDOF
BASE OF ." T_BASE" ENDOF
PAD OF ." T_PAD" ENDOF
ER-A OF ." T_ERminusA" ENDOF
ER-U OF ." T_ERminusU" ENDOF
DOES>A OF ." T_DOESgreatA" ENDOF
#TIB OF ." T_nTIB" ENDOF
>IN OF ." T_greatIN" ENDOF
UV> TIB OF ." T_TIB" ENDOF
ATIB OF ." T_ATIB" ENDOF
UV> SOURCE-ID OF ." T_SOURCEminusID" ENDOF
CURSTR OF ." T_CURSTR" ENDOF
\ WBW-NFA OF ." T_WBWminusNFA" ENDOF
\ WBW-OFFS OF ." T_WBWminusOFFS" ENDOF
CURRENT OF ." T_CURRENT" ENDOF
S-O OF ." T_SminusO" ENDOF
UV> CONTEXT OF ." T_CONTEXT" ENDOF
>OUT OF ." T_greatOUT" ENDOF
W-CNT OF ." T_WminusCNT" ENDOF
 
\ NNN OF ." T_NNN" ENDOF
TlsIndex@ - RESERVE - DUP 0< IF CR ." (%edi) RESERVE " ABORT THEN
." reserve+0x"
H. ." +edi]" CELL+ EXIT
ENDCASE ." -main_task+edi]" CELL+
;
 
\ RESERVE - DUP 0< IF CR ." (%edi) RESERVE "
\ TlsIndex@ H. RESERVE H. TlsIndex@ - H. H. ABORT THEN
 
\ ." reserve+0x" GGGX ." +edi]" CELL+ EXIT
\ ." reserve+0x" TlsIndex@ - H. RESERVE H. ." +edi]" CELL+ EXIT
\ ENDCASE ." -main_task+edi]" CELL+ ;
 
: H.-H ." 0" BASE @ HEX SWAP U>D (D.) TYPE BASE ! ." H" ;
 
: 1_GD_STEP ( ADDR n -- ADDR1 )
CR ." DB " 0xFF AND H.-H 1+ ;
 
: 2_GD_STEP ( ADDR -- ADDR1 )
1_GD_STEP ." ," DUP C@ H.-H 1+ ;
 
: 3_GD_STEP ( ADDR -- ADDR1 )
2_GD_STEP ." ," DUP C@ H.-H 1+ ;
 
: 4_GD_STEP ( ADDR -- ADDR1 )
3_GD_STEP ." ," DUP C@ H.-H 1+ ;
 
[IFNDEF] OCTAL : OCTAL 8 BASE ! ;
[THEN]
 
: \ooo. ( n1 -- )
BASE @ >R DECIMAL
0 (D.) TYPE
R> BASE ! ;
 
: ATYPE ( arrd len -- )
DUP 0= IF 2DROP BREAK
[CHAR] ' EMIT
0 ?DO COUNT DUP [CHAR] ' = IF ." '" THEN EMIT
LOOP DROP
[CHAR] ' EMIT
;
 
0x5F535953 CONSTANT 'SYS_'
 
: GTYPE
OVER @ 'SYS_' = IF 4 - SWAP 4 + SWAP TYPE BREAK
." cfa_"
2DUP S" CONTEXT" COMPARE 0= IF 2DROP ." _CONTEXT" BREAK
2DUP S" WORD" COMPARE 0= IF 2DROP ." _WORD" BREAK
2DUP S" LEAVE" COMPARE 0= IF 2DROP ." _LEAVE" BREAK
2DUP S" REPEAT" COMPARE 0= IF 2DROP ." _REPEAT" BREAK
2DUP S" exit" COMPARE 0= IF 2DROP ." _exit" BREAK
2DUP S" CHAR" COMPARE 0= IF 2DROP ." _CHAR" BREAK
2DUP S" IF" COMPARE 0= IF 2DROP ." _IF" BREAK
2DUP S" ELSE" COMPARE 0= IF 2DROP ." _ELSE" BREAK
2DUP S" WHILE" COMPARE 0= IF 2DROP ." _WHILE" BREAK
2DUP S" RESIZE" COMPARE 0= IF 2DROP ." _RESIZE" BREAK
2DUP S" free" COMPARE 0= IF 2DROP ." _free" BREAK
2DUP S" write" COMPARE 0= IF 2DROP ." _write" BREAK
2DUP S" KEY_EVENT" COMPARE 0= IF 2DROP ." _KEY_EVENT" BREAK
2DUP S" PAGE" COMPARE 0= IF 2DROP ." _PAGE" BREAK
2DUP S" PAGE_EXECUTE_READWRITE" COMPARE 0= IF 2DROP ." _PAGE_EXECUTE_READWRITE" BREAK
2DUP S" MEM_COMMIT" COMPARE 0= IF 2DROP ." _MEM_COMMIT" BREAK
2DUP S" MEM_RESERVE" COMPARE 0= IF 2DROP ." _MEM_RESERVE" BREAK
2DUP S" INVALID_HANDLE_VALUE" COMPARE 0= IF 2DROP ." _INVALID_HANDLE_VALUE" BREAK
2DUP S" FILE_ATTRIBUTE_ARCHIVE" COMPARE 0= IF 2DROP ." _FILE_ATTRIBUTE_ARCHIVE" BREAK
2DUP S" CREATE_ALWAYS" COMPARE 0= IF 2DROP ." _CREATE_ALWAYS" BREAK
2DUP S" OPEN_EXISTING" COMPARE 0= IF 2DROP ." _OPEN_EXISTING" BREAK
2DUP S" FILE_BEGIN" COMPARE 0= IF 2DROP ." _FILE_BEGIN" BREAK
2DUP S" FILE_CURRENT" COMPARE 0= IF 2DROP ." _FILE_CURRENT" BREAK
2DUP S" EXTERN" COMPARE 0= IF 2DROP ." _EXTERN" BREAK
2DUP S" EXPORT" COMPARE 0= IF 2DROP ." _EXPORT" BREAK
2DUP S" BREAK" COMPARE 0= IF 2DROP ." _BREAK" BREAK
2DUP S" ERR" COMPARE 0= IF 2DROP ." _ERR" BREAK
 
0 DO COUNT
CASE
[CHAR] @ OF ." _ld" ENDOF
[CHAR] ! OF ." save" ENDOF
[CHAR] = OF ." _equ" ENDOF
[CHAR] < OF ." less" ENDOF
[CHAR] > OF ." great" ENDOF
[CHAR] + OF ." plus" ENDOF
[CHAR] - OF ." minus" ENDOF
[CHAR] * OF ." _mul" ENDOF
[CHAR] / OF ." _div" ENDOF
[CHAR] . OF ." dot" ENDOF
[CHAR] : OF ." dcoma" ENDOF
[CHAR] ; OF ." _end" ENDOF
[CHAR] ? OF ." que" ENDOF
[CHAR] ( OF ." _c" ENDOF
[CHAR] ) OF ." cend" ENDOF
[CHAR] [ OF ." _x" ENDOF
[CHAR] ] OF ." _y" ENDOF
[CHAR] { OF ." lsk" ENDOF
[CHAR] } OF ." rsk" ENDOF
[CHAR] , OF ." com" ENDOF
[CHAR] ' OF ." tic" ENDOF
[CHAR] ~ OF ." til" ENDOF
[CHAR] ^ OF ." pic" ENDOF
[CHAR] " OF ." dtic" ENDOF
[CHAR] | OF ." l" ENDOF
[CHAR] # OF ." n" ENDOF
[CHAR] $ OF ." dol" ENDOF
[CHAR] \ OF ." sl" ENDOF
[CHAR] & OF ." and_" ENDOF
I IF EMIT ENDOF
[CHAR] 0 OF ." _0" ENDOF
[CHAR] 1 OF ." _1" ENDOF
[CHAR] 2 OF ." _2" ENDOF
[CHAR] 3 OF ." _3" ENDOF
[CHAR] 4 OF ." _4" ENDOF
[CHAR] 5 OF ." _5" ENDOF
[CHAR] 6 OF ." _6" ENDOF
[CHAR] 7 OF ." _7" ENDOF
[CHAR] 8 OF ." _8" ENDOF
[CHAR] 9 OF ." _9" ENDOF
EMIT
0 ENDCASE
LOOP DROP ;
 
0 VALUE #GN
 
: GN. ( ADDR -- )
DUP 0x80 + 0xFFFFFF00 AND 0= \ ABS 0x7F <
IF H.-H EXIT THEN
DUP HERE U<
IF DUP WordByAddr
OVER >R GTYPE ." +"
R> 1- NAME> - DUP TO #GN H.-H
ELSE NEGATE DUP WordByAddr
>R >R
R@ 1- NAME> - DUP TO #GN H.-H
." -" R> R> GTYPE
THEN
;
 
: .INT ( ADDR -- ADDR1 )
CR DUP HSSSS @ +
@ OVER @ \ ." I=" 2DUP H. H. CR
=
IF ." DD " DUP @ H.-H
ELSE ." DD " DUP @ GN.
THEN CELL+ ;
 
: .ADR ( ADDR -- ADDR1 )
CR ." DD " DUP @ GN. CELL+ ;
 
: .ADR68 ( ADDR -- ADDR1 )
CR ." DD 68 " DUP @ DUP H. GN. CELL+ ;
 
: 5_GD_STEP0 ( ADDR -- ADDR1 )
1_GD_STEP .INT ;
 
: 5_GD_STEP1 ( ADDR -- ADDR1 )
1_GD_STEP .ADR ;
 
: 6_GD_STEP0 ( ADDR -- ADDR1 )
2_GD_STEP .INT ;
 
: 6_GD_STEP1 ( ADDR -- ADDR1 )
2_GD_STEP .ADR ;
 
: 7_GD_STEP ( ADDR -- ADDR1 )
3_GD_STEP .ADR ;
 
: 1A_GD_STEP ( ADDR c -- ADDR1 )
DROP 1+ DUP REL@ CELL+ GN. CELL+ ;
 
: 2A_GD_STEP ( ADDR W -- ADDR1 )
CR ." DW "
H.-H 2+ DUP REL@ CELL+
CR ." DD " GN. ." -$-4" CELL+ ;
C" C>S" FIND NIP 0=
[IF] : C>S ( c -- n ) 0xFF AND [ 0x7F INVERT ] LITERAL XOR 0x80 + ;
[THEN]
 
: J_GD_STEP_
0x70 - 3 *
C" jo jnojb jaeje jnejbeja js jnsjp jnpjl jgejlejg " 1+ +
CR 3 TYPE ." " 1+ DUP C@ C>S OVER + 1+ GN. 1+
; \ short
 
: J_GD_STEP
DUP >R
0x70 - 3 *
C" jo jnojb jaeje jnejbeja js jnsjp jnpjl jgejlejg " 1+ +
CR ." ;" 3 TYPE ." " 1+ DUP C@ C>S OVER + 1+ GN. 1+
2- R>
#GN IF 2_GD_STEP EXIT THEN
J_GD_STEP_
; \ short
 
: GD-STEP ( CFA -- CFA+N )
\ DUP 9 EMIT H.
DUP C@ \ CFA N'
DUP 0C3 = IF 1_GD_STEP EXIT THEN \ RET
DUP 066 = IF 1_GD_STEP EXIT THEN \ D16:
DUP 064 = IF 1_GD_STEP EXIT THEN \ FS:
DUP 068 = IF 1_GD_STEP .INT EXIT THEN \ push X
\ LOOPNZ X LOOPZ X LOOP X JECXZ X IN AL, 0 IN EAX, 0 OUT 0 , AL OUT 0 , EAX
\ 1110.0XXX
DUP 0F8 AND 0E0 = IF 2_GD_STEP EXIT THEN
\ 010X.XXXX
DUP 0E0 AND 040 = IF 1_GD_STEP EXIT THEN \ INC|DEC|PUSH|POP E_X
\ 0111.0XXX
DUP 0F0 AND 070 = IF J_GD_STEP EXIT THEN \ JO short
DUP 0EB = IF 2_GD_STEP EXIT THEN \ JMP
DUP 090 = IF 1_GD_STEP EXIT THEN \ !!!!!
DUP 099 = IF 1_GD_STEP EXIT THEN \ CDQ
DUP 0A4 = IF 1_GD_STEP EXIT THEN \
DUP 0A5 = IF 1_GD_STEP EXIT THEN \
DUP 0A6 = IF 1_GD_STEP EXIT THEN \
DUP 0AA = IF 1_GD_STEP EXIT THEN \
DUP 0AB = IF 1_GD_STEP EXIT THEN \
DUP 0AC = IF 1_GD_STEP EXIT THEN \
DUP 0AE = IF 1_GD_STEP EXIT THEN \
DUP 024 = IF 2_GD_STEP EXIT THEN \ AND AL , # 1
DUP 02C = IF 2_GD_STEP EXIT THEN \ SUB AL , # 1
DUP 03C = IF 2_GD_STEP EXIT THEN \ CMP AL , # 1
DUP 0CD = IF 2_GD_STEP EXIT THEN \ INT X
DUP 0B0 = IF 2_GD_STEP EXIT THEN \
DUP 0F2 = IF 1_GD_STEP EXIT THEN \
DUP 0F3 = IF 2_GD_STEP EXIT THEN \ REPZ CMPSB
DUP 0FC = IF 1_GD_STEP EXIT THEN \ CLD
DUP 0FD = IF 1_GD_STEP EXIT THEN \ STD
DUP 09C = IF 1_GD_STEP EXIT THEN \ PUSHFD
DUP 09D = IF 1_GD_STEP EXIT THEN \ POPFD
DUP5B?0 IF 5_GD_STEP0 EXIT THEN
DUP5B?1 IF 5_GD_STEP1 EXIT THEN
 
DUP 0E9 = IF CR ." DB 0E9H"
CR ." DD " 1A_GD_STEP ." -$-4" EXIT THEN \ JMP
DUP 0E8 = IF CR ." call " 1A_GD_STEP
DUP CELL- REL@ CELL+
DUP USER-VALUE-CODE =
OVER USER-CODE = OR
IF CR ." DD reserve+"
DROP DUP @ RESERVE - H.-H CELL+
EXIT
THEN
 
CONSTANT-CODE =
IF .INT EXIT
THEN
 
DUP CELL- REL@ CELL+
CREATE-CODE =
IF .INT 2DUP U>
IF DUP C@ 1_GD_STEP
BEGIN 2DUP U>
WHILE DUP 7 AND
IF ." ,"
ELSE CR ." DB "
THEN DUP C@ H.-H 1+
REPEAT
THEN EXIT
THEN
 
DUP CELL- REL@ CELL+
DUP CLITERAL-CODE =
OVER ALITERAL-CODE = OR
SWAP SLITERAL-CODE = OR
IF CR ." DB " DUP COUNT DUP>R DUP H.-H
CR ." DB " ATYPE ." ,0"
R> + 2+ EXIT
THEN
DUP CELL- REL@ CELL+
VECT-CODE =
IF .ADR EXIT
THEN
 
EXIT THEN \ CALL
\ 1110.11XX
DUP FC AND EC = IF 1_GD_STEP EXIT THEN \ IN|OUT EAX AL, DX | DX, EAX EL
 
DROP
DUP W@ \ CR ." G=" DUP H.
DUP3B?[EBP] IF 3_GD_STEP EXIT THEN
DUP3B? IF 3_GD_STEP EXIT THEN
DUP2B? IF 2_GD_STEP EXIT THEN
DUP 0DB0A = IF 2_GD_STEP EXIT THEN \ OR BL, BL
DUP 0C90A = IF 2_GD_STEP EXIT THEN \ OR CL, CL
DUP 0038B = IF 2_GD_STEP EXIT THEN \ MOV EAX, [EBX]
DUP 0EC87 = IF 2_GD_STEP EXIT THEN \
DUP 0188A = IF 2_GD_STEP EXIT THEN \ MOV BL, [EAX]
DUP 07D8B = IF 3_GD_STEP EXIT THEN \ MOV EDI, X [EBP]
DUP 0C58B = IF 2_GD_STEP EXIT THEN \ MOV EAX, EBP
DUP 0E08B = IF 2_GD_STEP EXIT THEN \ MOV EAX, EBP
DUP 0E88B = IF 2_GD_STEP EXIT THEN \ MOV EAX, EBP
DUP 0458F = IF 3_GD_STEP EXIT THEN \ POP X [EBP]
DUP 075FF = IF 3_GD_STEP EXIT THEN \ PUSH X [EBP]
DUP 0C009 = IF 2_GD_STEP EXIT THEN \ OR EAX, EAX
DUP 0E3FF = IF 2_GD_STEP EXIT THEN \ JMP EBX
\ DUP 0D2FF = IF 2_GD_STEP EXIT THEN \ JMP EDX
DUP 0E2FF = IF 2_GD_STEP EXIT THEN \ JMP EDX
DUP 0D0FF = IF 2_GD_STEP EXIT THEN
DUP 0D2FF = IF 2_GD_STEP EXIT THEN \ CALL EDX
DUP 023FF = IF 2_GD_STEP EXIT THEN \ JMP [EBX]
DUP 0F903 = IF 2_GD_STEP EXIT THEN \ ADD EDI, ECX
DUP 0F103 = IF 2_GD_STEP EXIT THEN \ ADD ESI, ECX
DUP 0F003 = IF 2_GD_STEP EXIT THEN \ ADD ESI, EAX
DUP 0D703 = IF 2_GD_STEP EXIT THEN \ ADD EDX, EDI
DUP 0C703 = IF 2_GD_STEP EXIT THEN \ ADD EAX, EDI
DUP 0DF03 = IF 2_GD_STEP EXIT THEN \ ADD EBX, EDI
DUP 0E103 = IF 2_GD_STEP EXIT THEN \ ADD ESP, ECX
DUP 0E303 = IF 2_GD_STEP EXIT THEN \ ADD ESP, EBX
DUP 0E803 = IF 2_GD_STEP EXIT THEN \ ADD EBP, EAX
DUP 0EB03 = IF 2_GD_STEP EXIT THEN
DUP 0F803 = IF 2_GD_STEP EXIT THEN \ ADD EDI, EAX
DUP 0E903 = IF 2_GD_STEP EXIT THEN \ ADD EBP, ECX
DUP 0523 = IF 2_GD_STEP .INT EXIT THEN \ AND EAX , 55C18F
DUP 052B = IF 2_GD_STEP .INT EXIT THEN \ SUB EAX , 55C18F
DUP 0C72B = IF 2_GD_STEP EXIT THEN \ SUB EAX, EDI
DUP 0CD2B = IF 2_GD_STEP EXIT THEN \ SUB ECX, EBP
DUP 0CF2B = IF 2_GD_STEP EXIT THEN \ SUB ECX, EDI
DUP 0D72B = IF 2_GD_STEP EXIT THEN \ SUB EDX, EDI
DUP 0F22B = IF 2_GD_STEP EXIT THEN \ SUB ESI, EDX
DUP 0DE2B = IF 2_GD_STEP EXIT THEN \ SUB EBX, ESI
DUP 0E32B = IF 2_GD_STEP EXIT THEN \ SUB ESP, EBX
DUP 0E82B = IF 2_GD_STEP EXIT THEN \ SUB EBP, EAX
DUP 0FF33 = IF 2_GD_STEP EXIT THEN \ xor EDI, EDI
DUP 0D233 = IF 2_GD_STEP EXIT THEN \ xor EDX, EDX
DUP 0F33B = IF 2_GD_STEP EXIT THEN \ CMP ESI, EBX
DUP 0C13A = IF 2_GD_STEP EXIT THEN \ CMP AL, CL
DUP 0C23A = IF 2_GD_STEP EXIT THEN \ CMP AL, DL
DUP 0D83A = IF 2_GD_STEP EXIT THEN \ CMP BL, AL
 
DUP 0EB80 = IF 3_GD_STEP EXIT THEN \ SUB BL, # X
DUP 0FB80 = IF 3_GD_STEP EXIT THEN \ CMP BL, # X
DUP 0C0C6 = IF 3_GD_STEP EXIT THEN \ MOV AL, # 0
DUP 00081 = IF 2_GD_STEP .INT EXIT THEN \ ADD [EAX] , # 800
DUP 0581 = IF 2_GD_STEP .ADR .INT EXIT THEN \ ADD X , # Y
DUP 0E181 = IF 2_GD_STEP .INT EXIT THEN \ AND ECX, # FF
DUP 0E281 = IF 2_GD_STEP .INT EXIT THEN \ AND EDX, # FF
DUP 0F981 = IF 2_GD_STEP .INT EXIT THEN \ CMP ECX, # 1
DUP 04583 = IF 4_GD_STEP EXIT THEN \ ADD F8 [EBP] , # 2
DUP 0EB83 = IF 3_GD_STEP EXIT THEN \ SUB EBX, # X
DUP 0FB83 = IF 3_GD_STEP EXIT THEN \ CMP EBX, # X
DUP 0EE83 = IF 3_GD_STEP EXIT THEN \ SUB ESI, # X
DUP 0E183 = IF 3_GD_STEP EXIT THEN \ AND ECX, # 3
DUP 0E383 = IF 3_GD_STEP EXIT THEN \ AND EBX, # 3
DUP 0EC83 = IF 3_GD_STEP EXIT THEN
DUP 0F9C1 = IF 3_GD_STEP EXIT THEN \ SAR ECX, # 2
DUP 01889 = IF 2_GD_STEP EXIT THEN \ MOV [EAX], EBX
DUP 04889 = IF 3_GD_STEP EXIT THEN \ MOV X [EAX], ECX
DUP 04289 = IF 3_GD_STEP EXIT THEN \ MOV 4 [EDX], EAX
DUP 04B89 = IF 3_GD_STEP EXIT THEN \ MOV 2 [EBX], ECX
DUP 0468A = IF 3_GD_STEP EXIT THEN \ MOV AL, X [ESI]
DUP 0088A = IF 2_GD_STEP EXIT THEN \ MOV CL, [EAX]
DUP 0068B = IF 2_GD_STEP EXIT THEN \ MOV EAX, [ESI]
DUP 01B8B = IF 2_GD_STEP EXIT THEN \ MOV EBX, [EBX]
DUP DF8B = IF 2_GD_STEP EXIT THEN \ MOV EBX, EDI
DUP EC8B = IF 2_GD_STEP EXIT THEN
DUP 05089 = IF 3_GD_STEP EXIT THEN \ MOV X [EAX] , EDX
DUP 0368B = IF 2_GD_STEP EXIT THEN \ MOV ESI, [ESI]
DUP 0758B = IF 3_GD_STEP EXIT THEN \ MOV ESI, X [EBP]
DUP 0408B = IF 3_GD_STEP EXIT THEN \ MOV EAX, X [EAX]
DUP 0498B = IF 3_GD_STEP EXIT THEN \ MOV ECX, FC [ECX]
DUP 04B8B = IF 3_GD_STEP EXIT THEN \ MOV ECX, 12 [EBX]
DUP 0E58B = IF 2_GD_STEP EXIT THEN
DUP 06D8D = IF 3_GD_STEP EXIT THEN \ LEA EBP, OFF-EBP [EBP]
DUP 0C583 = IF 3_GD_STEP EXIT THEN \ ADD EBP, # OFF-EBP
DUP 0ED83 = IF 3_GD_STEP EXIT THEN \ SUB EBP, # X
DUP 0C483 = IF 3_GD_STEP EXIT THEN \ ADD ESP, # X
DUP 0FA83 = IF 3_GD_STEP EXIT THEN \ CMP EDX, # 3
DUP 07D83 = IF 4_GD_STEP EXIT THEN \ CMP X [EBP] , # Y
DUP 07D89 = IF 3_GD_STEP EXIT THEN \ MOV X [EBP], EDI
DUP 0CC8B = IF 2_GD_STEP EXIT THEN
DUP 0F58B = IF 2_GD_STEP EXIT THEN
DUP 0FC8B = IF 2_GD_STEP EXIT THEN
 
DUP 0F0FF AND
0800F = IF 2A_GD_STEP EXIT THEN \ JNO X
DUP 075F7 = IF 3_GD_STEP EXIT THEN \ DIV DWORD [EBP]
DUP 0D9F7 = IF 2_GD_STEP EXIT THEN \ NEG ECX
DUP 0DBF7 = IF 2_GD_STEP EXIT THEN \ NEG EBX
DUP 0E3F7 = IF 2_GD_STEP EXIT THEN \ MUL EBX
DUP 0EBF7 = IF 2_GD_STEP EXIT THEN \ IMUL EBX
DUP 0FBF7 = IF 2_GD_STEP EXIT THEN \ IDIV EBX
DUP 0F3F7 = IF 2_GD_STEP EXIT THEN \ DIV EBX
DUP 0F60B = IF 2_GD_STEP EXIT THEN \ OR ESI, ESI
DUP 0CE8B = IF 2_GD_STEP EXIT THEN \ MOV ECX, ESI
DUP 0C48B = IF 2_GD_STEP EXIT THEN \ MOV EAX, ESP
DUP 0F18B = IF 2_GD_STEP EXIT THEN \ MOV ESI, ECX
DUP 0F08B = IF 2_GD_STEP EXIT THEN \ MOV ESI, EAX
DUP 0D58B = IF 2_GD_STEP EXIT THEN \ MOV EDX, EBP
DUP 0D78B = IF 2_GD_STEP EXIT THEN \ MOV EDX, EDI
DUP 0DD8B = IF 2_GD_STEP EXIT THEN \ MOV EBX, EBP
DUP 0FA8B = IF 2_GD_STEP EXIT THEN \ MOV EDI, EDX
DUP 01A8B = IF 2_GD_STEP EXIT THEN \ MOV EBX, [EDX]
DUP 0028B = IF 2_GD_STEP EXIT THEN \ MOV EAX, [EDX]
DUP 0078B = IF 2_GD_STEP EXIT THEN \ MOV EAX, [EDI]
DUP 088B = IF 2_GD_STEP EXIT THEN \ MOV ECX, [EAX]
DUP 098B = IF 2_GD_STEP EXIT THEN \ MOV ECX, [ECX]
DUP 0A8B = IF 2_GD_STEP EXIT THEN \ MOV ECX, [EDX]
DUP 00C6 = IF 3_GD_STEP EXIT THEN \ MOV [EAX] , # x
DUP 0688D = IF 3_GD_STEP EXIT THEN \ LEA EBP, 4 [EAX]
DUP 0428D = IF 3_GD_STEP EXIT THEN \ LEA EAX , FE [EDX]
DUP 0498D = IF 3_GD_STEP EXIT THEN \ LEA ECX, -1 [ECX]
DUP 0488D = IF 3_GD_STEP EXIT THEN \ LEA ECX , FC [EAX]
 
DUP 07F8D = IF 3_GD_STEP EXIT THEN \ LEA EDI, -1 [EDI]
DUP 0528D = IF 3_GD_STEP EXIT THEN \ LEA EDX, -4 [EDX]
\ DUP 01C8D = IF 3_GD_STEP EXIT THEN \ LEA EBX, [EDX] [EAX]
DUP 0038F = IF 2_GD_STEP EXIT THEN \ POP [EBX]
DUP 05DD1 = IF 3_GD_STEP EXIT THEN \ RCR [EBP], # 1
DUP 0D0D1 = IF 2_GD_STEP EXIT THEN \ RCL EAX, # 1
DUP 065D1 = IF 3_GD_STEP EXIT THEN \ SHL [EBP], # 1
DUP 0C0C1 = IF 3_GD_STEP EXIT THEN \ ROL [EBP], # 1
DUP 45FF = IF 3_GD_STEP EXIT THEN \ INC 0 [EBP]
DUP 0310F = IF 2_GD_STEP EXIT THEN \ RDTSC
DUP 873B = IF CR ." cmp " ." eax," .EDI EXIT THEN \ CMP EAX, X [EDI]
DUP 878B = IF CR ." mov " ." eax," .EDI EXIT THEN \ MOV EAX, X [EDI]
DUP 8F8B = IF CR ." mov " ." ecx," .EDI EXIT THEN \ MOV ECX, X [EDI]
DUP 878D = IF CR ." lea " ." eax," .EDI EXIT THEN \ LEA EAX, X [EDI]
DUP 87FF = IF CR ." inc DWORD" .EDI EXIT THEN \ INC 19F9 [EDI]
DUP 8788 = IF CR ." mov al," .EDI EXIT THEN \ MOV 19F9 [EDI] , AL
DUP 8789 = IF CR ." mov " .EDI ." ,eax" EXIT THEN \ MOV X [EDI], EAX
DUP 8703 = IF CR ." add eax," .EDI EXIT THEN \ ADD EAX , X [EDI]
DUP 8733 = IF CR ." xor eax," .EDI EXIT THEN \ XOR EAX , X [EDI]
DUP 87C7 = IF CR ." mov " DROP DUP 6 + @
H. ." ," DUP @ .EDI 6 + EXIT THEN \ MOV X [EDI], # Y
DUP 45C7 = IF 3_GD_STEP .INT EXIT THEN \ MOV X [EBP], # X
DUP 3D83 = IF 2_GD_STEP .ADR DUP C@ 1_GD_STEP EXIT THEN \ MOV X [EBP], # X
DUP 0533 = IF 2_GD_STEP .ADR EXIT THEN \ XOR X [EBP], X
DUP 0503 = IF 2_GD_STEP .ADR EXIT THEN \ ADD EAX , X
DUP 1501 = IF 2_GD_STEP .ADR EXIT THEN \ ADD X , EDX
DUP 050B = IF 2_GD_STEP .ADR EXIT THEN \ OR EAX , X
DUP 0D3B = IF 2_GD_STEP .ADR EXIT THEN \ CMP ECX , x
DUP 2DF7 = IF 2_GD_STEP .ADR EXIT THEN \ IMUL x
DUP 808D = IF 2_GD_STEP .INT EXIT THEN \ LEA EAX , 8700 [EAX]
DUP 9A8D = IF 2_GD_STEP .INT EXIT THEN \ LEA EBX , 55C298 [EDX]
DUP 01C7 = IF 2_GD_STEP .INT EXIT THEN \ MOV [ECX] , # 424648D
DUP 0C0C7 = IF 2_GD_STEP .INT EXIT THEN \ MOV EAX, # X
DUP 0C1C7 = IF 2_GD_STEP .INT EXIT THEN \ MOV ECX, # X
DUP 0C069 = IF 2_GD_STEP .INT EXIT THEN \ IMUL EAX , EAX , # 4
DUP 0C3C7 = IF 2_GD_STEP .INT EXIT THEN \ MOV EBX, # X
DUP 05C7 = IF 2_GD_STEP .ADR .INT EXIT THEN \ MOV 5746E5 ( OPT?+5 ) , # FFFFFFFF
DUP6B?0 IF 6_GD_STEP0 EXIT THEN \ MOV EAX, # X
DUP6B?1 IF 6_GD_STEP1 EXIT THEN
DUP 00583 = IF 6_GD_STEP1
DUP C@ 1_GD_STEP EXIT THEN
DROP
DUP @ FFFFFF AND
DUP 021C8D = IF 3_GD_STEP EXIT THEN
DUP 240401 = IF 3_GD_STEP EXIT THEN \ ADD [ESP] , EAX
DUP C09D0F = IF 3_GD_STEP EXIT THEN \ SETGE AL
DUP C09E0F = IF 3_GD_STEP EXIT THEN \ SETLE AL
DUP 8D1C8D = IF 7_GD_STEP EXIT THEN \ LEA EBX, [ECX*4]
\ CMPXCHG [EAX] , AL| EAX
\ LSS EAX , [EAX]
\ BTR [EAX] , EAX
\ LFS EAX , [EAX]
\ LGS EAX , [EAX]
\ MOVZX EAX , BYTE|WORD PTR [EAX]
\ 0000.0000 1011.1XXX 0000.1111
DUP FFF8FF
AND 00B00F = IF 3_GD_STEP EXIT THEN
 
DUP 24442B = IF 4_GD_STEP EXIT THEN \ SUB EAX, X [ESP]
DUP 24648D = IF 4_GD_STEP EXIT THEN \ LEA ESP, X [ESP]
\ MOV|LEA EAX, X [E__] [E__*X]
\ MOV|LEA X [E__] [E__*X], EAX
\ POP X [E__] [E__*X]
\ XXXX.X1XX 0100.0100 1000.1XX1
DUP 04FFF9
AND 044489 = IF 4_GD_STEP EXIT THEN
DUP 035C8D = IF 4_GD_STEP EXIT THEN \ MOV EBX, X [EBX] [EAX]
DUP 03448B = IF 4_GD_STEP EXIT THEN \ MOV EAX, X [EBX] [EAX]
DUP 03B60F = IF 3_GD_STEP EXIT THEN \ MOVZX EAX, BYTE PTR [EBX]
DUP 18B60F = IF 3_GD_STEP EXIT THEN \ MOVZX EBX, BYTE PTR [EAX]
DUP 31348B = IF 3_GD_STEP EXIT THEN \ MOV ESI, [ESI+ECX]
DUP 40B60F = IF 4_GD_STEP EXIT THEN \ MOVZX EAX , BYTE PTR x [EAX]
DUP 345C8B = IF 4_GD_STEP EXIT THEN \ LEA EAX , [EAX] [ECX*4]
DUP 0E348B = IF 3_GD_STEP EXIT THEN \ MOV ESI, [ESI] [ECX]
DUP 03048D = IF 3_GD_STEP EXIT THEN \ LEA EAX, [EBX] [EAX]
DUP 355C89 = IF 4_GD_STEP EXIT THEN \ MOV EBX, [ESI+ESP-4]
DUP 30748B = IF 4_GD_STEP EXIT THEN \ MOV ESI, [1+ESI+EAX]
DUP 88048D = IF 3_GD_STEP EXIT THEN \ LEA EAX , [EAX] [ECX*4]
DUP 02048D = IF 3_GD_STEP EXIT THEN \ LEA EAX, [EDX] [EAX]
DUP 06748B = IF 4_GD_STEP EXIT THEN \ MOV ESI, 1 [ESI] [EAX]
DUP 245C8B = IF 4_GD_STEP EXIT THEN \ MOV EBX, 8 [ESP]
DUP 244C8B = IF 4_GD_STEP EXIT THEN \ MOV ECX, 8 [ESP]
DUP 2E5C89 = IF 4_GD_STEP EXIT THEN \ MOV -4 [ESI] [EBP], EBX
DUP 045C89 = IF 4_GD_STEP EXIT THEN \ MOV 4 [ESP] [EAX], EBX
DUP 2E74FF = IF 4_GD_STEP EXIT THEN \ PUSH -4 [ESI] [EBP]
DUP 3574FF = IF 4_GD_STEP EXIT THEN \ PUSH -4 [EBP] [ESI]
DUP 240CFF = IF 3_GD_STEP EXIT THEN \ DEC [ESP]
DUP 09B70F = IF 3_GD_STEP EXIT THEN \ MOVZX ECX , WORD PTR X [ECX]
DUP 40B70F = IF 4_GD_STEP EXIT THEN \ MOVZX EAX , WORD PTR X [EAX]
DUP 42B60F = IF 4_GD_STEP EXIT THEN \ MOVZX EAX , WORD PTR X [EDX]
DUP 24048B = IF 3_GD_STEP EXIT THEN \ MOV EAX, 0 [ESP]
DUP 240C8B = IF 3_GD_STEP EXIT THEN \ MOV ECX , [ESP]
DUP 1048B = IF 3_GD_STEP EXIT THEN \ MOV EAX , [ECX] [EAX]
 
DUP 01048D = IF 3_GD_STEP EXIT THEN \ LEA EAX , [ECX] [EAX]
DUP C0BE0F = IF 3_GD_STEP EXIT THEN \ MOV EAX, AL
DUP 0045C7 = IF 3_GD_STEP .INT EXIT THEN \ MOV 0 [EBP], # 0
DUP 240481 = IF 3_GD_STEP .INT EXIT THEN \ ADD [ESP] , # 4
 
DUP B5348D = IF 3_GD_STEP .INT EXIT THEN \ LEA ESI, [ESI*4]
DUP 8D0C8D = IF 3_GD_STEP .INT EXIT THEN \ LEA ECX, [ECX*4]
DUP 84248D = IF 3_GD_STEP EXIT THEN \ LEA ESP, [ESP] [EAX*4]
 
 
DUP 244C2B = IF 4_GD_STEP EXIT THEN \ SUB ECX , 4 [ESP]
DUP 04B60F = IF 4_GD_STEP EXIT THEN \ MOVZX EAX, BYTE [EDI] [ESI]
DUP 243C83 = IF 4_GD_STEP EXIT THEN \ CMP [ESP] , # 0
DUP7B? IF 7_GD_STEP EXIT THEN
DUP 2404FF = IF 3_GD_STEP EXIT THEN \ INC [ESP]
DUP 241C8B = IF 3_GD_STEP EXIT THEN \ MOV EBX, [ESP]
DUP 240403 = IF 3_GD_STEP EXIT THEN \ ADD EAX , [ESP]
DUP 87B60F = IF CR ." movzx eax,BYTE" DROP 1+ DUP .EDI EXIT THEN \ MOVZX EAX , BYTE PTR 19E3 [EDI]
CR H. TRUE ABORT" UNKNOWN CODE"
;
 
: GDIS ( A-limit A-init -- )
\ CR ." VV=" 2DUP H. H. 2DUP - .
BEGIN
\ H-STDOUT 1 TO H-STDOUT ." ." TO H-STDOUT
GD-STEP 2DUP U> 0=
UNTIL 2DROP ;
BASE !
\EOF
2DUP S" MOD" COMPARE 0= IF 2DROP ." _MOD" BREAK
2DUP S" DUP" COMPARE 0= IF 2DROP ." _DUP" BREAK
2DUP S" OR" COMPARE 0= IF 2DROP ." _OR" BREAK
2DUP S" XOR" COMPARE 0= IF 2DROP ." _XOR" BREAK
2DUP S" AND" COMPARE 0= IF 2DROP ." _AND" BREAK
2DUP S" CMOVE" COMPARE 0= IF 2DROP ." _CMOVE" BREAK
2DUP S" TYPE" COMPARE 0= IF 2DROP ." _TYPE" BREAK
2DUP S" ALIGN" COMPARE 0= IF 2DROP ." _ALIGN" BREAK
2DUP S" TITLE" COMPARE 0= IF 2DROP ." _TITLE" BREAK
2DUP S" LT" COMPARE 0= IF 2DROP ." _LT" BREAK
2DUP S" BL" COMPARE 0= IF 2DROP ." _BL" BREAK
2DUP S" DP" COMPARE 0= IF 2DROP ." _DP" BREAK
2DUP S" TRUE" COMPARE 0= IF 2DROP ." _TRUE" BREAK
2DUP S" FALSE" COMPARE 0= IF 2DROP ." _FALSE" BREAK
2DUP S" LOOP" COMPARE 0= IF 2DROP ." _LOOP" BREAK
/programs/develop/SPForth/devel/~mak/djgpp
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/do_want.f
0,0 → 1,13
 
WANT_BUFF COUNT SFIND [IF] DROP \EOF [THEN]
 
[WANT] WDS ~mak\wds.f
[WANT] SKIP : SKIP PSKIP ;
[WANT] PSKIP : PSKIP SKIP ;
[WANT] CASE ~mak\case.f
[WANT] [IF] ~mak/CompIF.f
[WANT] MS : MS 0 DO 100099 0 DO LOOP LOOP ;
[WANT] #define : #define HEADER ['] _CONSTANT-CODE COMPILE, 0 PARSE EVALUATE , ;
 
 
-321 THROW
/programs/develop/SPForth/devel/~mak/lib/csr.f
0,0 → 1,25
[IFNDEF] CSP
VARIABLE CSP \ Óêàçàòåëü ñòåêà êîíòðîëÿ
[THEN]
6 CONSTANT L-CAS# \ Äîïóñòèìûé óðîâåíü âëîæåííîñòè
CREATE S-CSP L-CAS# CELLS ALLOT \ Ñòåê êîíòðîëÿ
S-CSP CSP !
 
: +CSP ( -> P) \ Äîáàâèòü óðîâåíü
CSP @ DUP CELL+ CSP !
;
: -CSP ( -> ) \ Óáðàòü óðîâåíü
CSP @ 1 CELLS - CSP !
;
 
: !CSP ( -> ) \ Èíèöèàëèçèðîâàòü óðîâåíü
SP@ +CSP !
;
 
: CSP@ ( -> A)
CSP @ 1 CELLS - @
;
: ?CSP ( -> ) \ Ïðîâåðèòü âûäåðæàííîñòü ñòåêà
SP@ CSP@ <> 37 ?ERROR ( ABORT" Ñáîé ñòåêà ïî CSP !")
-CSP
;
/programs/develop/SPForth/devel/~mak/lib/locals-ans2.f
0,0 → 1,39
\ $Id: locals-ans.f,v 1.2 2003/01/10 16:44:16 anfilat Exp $
\ Work in spf3, spf4
\ LOCALS ñòàíäàðòà 94.
\ Îáúÿâëåíèå -
\ LOCALS| n1 n2 n3 |
REQUIRE { ~mak/lib/locals4.f
 
GET-CURRENT ALSO vocLocalsSupport_M DEFINITIONS
 
: CompileANSLocInit
uPrevCurrent @ SET-CURRENT
uLocalsUCnt @ ?DUP
IF NEGATE CELLS R_ALLOT,
THEN
uLocalsCnt @ uLocalsUCnt @ - ?DUP
IF DUP CELLS NEGATE uAddDepth +!
DUP 0
DO uLocalsCnt @ uLocalsUCnt @ - I - 1-
LIT, S" PICK >R " EVALUATE LOOP
0 DO POSTPONE DROP LOOP
THEN
;;
 
 
SET-CURRENT
 
: LOCALS|
LocalsStartup
BEGIN
BL PSKIP PeekChar
[CHAR] | <>
WHILE
CREATE LocalsDoes@ IMMEDIATE
REPEAT
[CHAR] | PARSE 2DROP
CompileANSLocInit
;; IMMEDIATE
 
PREVIOUS
/programs/develop/SPForth/devel/~mak/lib/locals4.f
0,0 → 1,401
( 28.Mar.2000 Andrey Cherezov Copyright [C] RU FIG
 
ˆá¯®«ì§®¢ ­ë ¨¤¥¨ á«¥¤ãîé¨å  ¢â®à®¢:
Ruvim Pinka; Dmitry Yakimov; Oleg Shalyopa; Yuriy Zhilovets;
Konstantin Tarasov; Michail Maximov.
 
!!  ¡®â ¥â ⮫쪮 ¢ SPF4.
)
 
( à®á⮥ à áè¨à¥­¨¥ ‘-”®àâ  «®ª «ì­ë¬¨ ¯¥à¥¬¥­­ë¬¨.
¥ «¨§®¢ ­® ¡¥§ ¨á¯®«ì§®¢ ­¨ï LOCALS áâ ­¤ àâ  94.
 
Ž¡ê¥­¨¥ ¢à¥¬¥­­ëå ¯¥à¥¬¥­­ëå, ¢¨¤¨¬ëå ⮫쪮 ¢­ãâà¨
⥪ã饣® á«®¢  ¨ ®£à ­¨ç¥­­ëå ¢à¥¬¥­¥¬ ¢ë§®¢  ¤ ­­®£®
á«®¢  ¢ë¯®«­ï¥âáï á ¯®¬®éìî á«®¢  "{". ‚­ãâਠ®¯à¥¤¥«¥­¨ï
á«®¢  ¨á¯®«ì§ã¥âáï ª®­áâàãªæ¨ï, ¯®¤®¡­ ï á⥪®¢®© ­®â æ¨¨ ”®àâ 
{ ᯨ᮪_¨­¨æ¨ «¨§¨à®¢ ­­ëå_«®ª «®¢ \ á¯.­¥¨­¨æ.«®ª «®¢ -- ç⮠㣮¤­® }
 ¯à¨¬¥à:
 
{ a b c d \ e f -- i j }
 
ˆ«¨ { a b c d \ e f[ EVALUATE_¢ëà ¦¥­¨¥ ] -- i j }
â® §­ ç¨â çâ® ¤«ï ¯¥à¥¬¥­­®© f[ ¡ã¤¥â ¢ë¤¥«¥­ ­  á⥪¥ ¢®§¢à â®¢ ãç á⮪
¯ ¬ï⨠¤«¨­®© n ¡ ©â. ˆá¯®«ì§®¢ ­¨¥ ¯¥à¥¬¥­­®© f[ ¤ áâ  ¤à¥á ­ ç «  í⮣®
ãç á⪠. \‚ á⨫¥ MPE\
 
ˆ«¨ { a b c d \ e [ 12 ] f -- i j }
â® §­ ç¨â çâ® ¤«ï ¯¥à¥¬¥­­®© f ¡ã¤¥â ¢ë¤¥«¥­ ­  á⥪¥ ¢®§¢à â®¢ ãç á⮪
¯ ¬ï⨠¤«¨­®© 12 ¡ ©â. ˆá¯®«ì§®¢ ­¨¥ ¯¥à¥¬¥­­®© f ¤ áâ  ¤à¥á ­ ç «  í⮣®
ãç á⪠.
 
— áâì "\ á¯.­¥¨­¨æ.«®ª «®¢" ¬®¦¥â ®âáãâá⢮¢ âì, ­ ¯à¨¬¥à:
 
{ item1 item2 -- }
 
â® § áâ ¢«ï¥â ‘-”®àâ  ¢â®¬ â¨ç¥áª¨ ¢ë¤¥«ïâì ¬¥áâ® ¢
á⥪¥ ¢®§¢à â®¢ ¤«ï íâ¨å ¯¥à¥¬¥­­ëå ¢ ¬®¬¥­â ¢ë§®¢  á«®¢ 
¨  ¢â®¬ â¨ç¥áª¨ ®á¢®¡®¦¤ âì ¬¥áâ® ¯à¨ ¢ë室¥ ¨§ ­¥£®.
 
Ž¡à é¥­¨¥ ª â ª¨¬ «®ª «ì­ë¬ ¯¥à¥¬¥­­ë¬ - ª ª ª VALUE-¯¥à¥¬¥­­ë¬
¯® ¨¬¥­¨. …᫨ ­ã¦¥­  ¤à¥á ¯¥à¥¬¥­­®©, â® ¨á¯®«ì§ã¥âáï "^ ¨¬ï"
¨«¨ "AT ¨¬ï".
 
 
‚¬¥áâ® \ ¬®¦­® ¨á¯®«ì§®¢ âì |
‚¬¥áâ® -> ¬®¦­® ¨á¯®«ì§®¢ âì TO
 
à¨¬¥àë:
 
: TEST { a b c d \ e f -- } a . b . c . b c + -> e e . f . ^ a @ . ;
Ok
1 2 3 4 TEST
1 2 3 5 0 1 Ok
 
: TEST { a b -- } a . b . CR 5 0 DO I . a . b . CR LOOP ;
Ok
12 34 TEST
12 34
0 12 34
1 12 34
2 12 34
3 12 34
4 12 34
Ok
 
: TEST { a b } a . b . ;
Ok
1 2 TEST
1 2 Ok
 
: TEST { a b \ c } a . b . c . ;
Ok
1 2 TEST
1 2 0 Ok
 
: TEST { a b -- } a . b . ;
Ok
1 2 TEST
1 2 Ok
 
: TEST { a b \ c -- d } a . b . c . ;
Ok
1 2 TEST
1 2 0 Ok
 
: TEST { \ a b } a . b . 1 -> a 2 -> b a . b . ;
Ok
TEST
0 0 1 2 Ok
 
ˆ¬¥­  «®ª «ì­ëå ¯¥à¥¬¥­­ëå áãé¥áâ¢ãîâ ¢ ¤¨­ ¬¨ç¥áª®¬
¢à¥¬¥­­®¬ á«®¢ à¥ ⮫쪮 ¢ ¬®¬¥­â ª®¬¯¨«ï樨 á«®¢ ,  
¯®á«¥ í⮣® ¢ëç¨é îâáï ¨ ¡®«¥¥ ­¥¤®áâ㯭ë.
 
ˆá¯®«ì§®¢ âì ª®­áâàãªæ¨î "{ ... }" ¢­ãâਠ®¤­®£® ®¯à¥¤¥«¥­¨ï ¬®¦­®
⮫쪮 ®¤¨­ à §.
 
Š®¬¯¨«ïæ¨ï í⮩ ¡¨¡«¨®â¥ª¨ ¤®¡ ¢«ï¥â ¢ ⥪ã騩 á«®¢ àì ª®¬¯¨«ï樨
’®«ìª® ¤¢  á«®¢ :
á«®¢ àì "vocLocalsSupport" ¨ "{"
‚ᥠ®áâ «ì­ë¥ ¤¥â «¨ "á¯àïâ ­ë" ¢ á«®¢ à¥, ¨á¯®«ì§®¢ âì ¨å
­¥ ४®¬¥­¤ã¥âáï.
)
 
REQUIRE [IF] ~MAK\CompIF.f
 
C" 'DROP_V" FIND NIP 0=
[IF] ' DROP VALUE 'DROP_V
: 'DROP 'DROP_V ;
[THEN]
 
C" 'DUP_V" FIND NIP 0=
[IF] ' DUP VALUE 'DUP_V
: 'DUP 'DUP_V ;
[THEN]
 
C" 'DROP" FIND NIP 0=
[IF] ' DROP VALUE 'DROP
[THEN]
 
C" 'DUP" FIND NIP 0=
[IF] ' DUP VALUE 'DUP
[THEN]
 
\ C" '(LocalsExit)_V" FIND NIP 0=
\ [IF] ' (LocalsExit)_V VALUE '(LocalsExit)_V
\ [THEN]
 
MODULE: vocLocalsSupport_M
 
VARIABLE uLocalsCnt
VARIABLE uLocalsUCnt
VARIABLE uPrevCurrent
VARIABLE uAddDepth
 
: LocalOffs ( n -- offs )
2+ CELLS uAddDepth @ +
;
 
BASE @ HEX
' RP@ 7 + @ 0xC3042444 =
 
[IF]
 
: R_ALLOT,
DUP SHORT?
OPT_INIT SetOP
IF 8D C, 64 C, 24 C, C, \ mov esp, offset [esp]
ELSE 8D C, A4 C, 24 C, , \ mov esp, offset [esp]
THEN
OPT_CLOSE
;
 
C" MACRO," FIND NIP 0=
[IF] : MACRO, INLINE, ;
[THEN]
 
: CompileLocalRec ( u -- )
LocalOffs DUP
'DUP MACRO,
SHORT?
OPT_INIT SetOP
IF 8D C, 44 C, 24 C, C, \ lea eax, offset [esp]
ELSE 8D C, 84 C, 24 C, , \ lea eax, offset [esp]
THEN OPT
OPT_CLOSE
;
 
: CompileLocal@ ( n -- )
'DUP MACRO,
LocalOffs DUP SHORT?
OPT_INIT SetOP
IF 8B C, 44 C, 24 C, C, \ mov eax, offset [esp]
ELSE 8B C, 84 C, 24 C, , \ mov eax, offset [esp]
THEN OPT
OPT_CLOSE
;
 
: CompileLocal! ( n -- )
LocalOffs DUP SHORT?
OPT_INIT SetOP
IF 89 C, 44 C, 24 C, C, \ mov offset [esp], eax
ELSE 89 C, 84 C, 24 C, , \ mov offset [esp], eax
THEN OPT
OPT_CLOSE
'DROP MACRO,
;
 
\ : CompileLocal@ ( n -- )
\ LocalOffs LIT, POSTPONE RP+@
\ ;
 
 
[ELSE]
 
: R_ALLOT,
] POSTPONE LITERAL S" RP@ + RP! " EVALUATE
POSTPONE [ ;
 
: CompileLocalRec ( u -- )
LocalOffs
POSTPONE LITERAL
\ S" RP@ + " EVALUATE
;
 
: CompileLocal@ ( n -- )
CompileLocalRec
S" @ " EVALUATE
;
 
: CompileLocal! ( n -- )
CompileLocalRec
S" ! " EVALUATE
;
 
[THEN]
 
VARIABLE TEMP-DP
 
: CompileLocalsInit
TEMP-DP @ DP !
uPrevCurrent @ SET-CURRENT
uLocalsUCnt @ ?DUP
IF NEGATE CELLS R_ALLOT,
THEN
uLocalsCnt @ uLocalsUCnt @ - ?DUP
IF DUP CELLS NEGATE uAddDepth +! 0 DO S" >R " EVALUATE LOOP THEN
uLocalsCnt @ ?DUP
IF CELLS POSTPONE LITERAL S" >R ['] (LocalsExit) >R" EVALUATE
-2 CELLS uAddDepth +!
THEN
;
 
 
\ : CompileLocal@ ( n -- )
\ LocalOffs LIT, POSTPONE RP+@
\ ;
 
 
BASE !
 
WORDLIST CONSTANT widLocals@
 
CREATE TEMP-BUF 1000 ALLOT
 
: LocalsStartup
GET-CURRENT uPrevCurrent !
ALSO vocLocalsSupport_M
ALSO widLocals@ CONTEXT ! DEFINITIONS
HERE TEMP-DP !
TEMP-BUF DP !
widLocals@ 0!
uLocalsCnt 0!
uLocalsUCnt 0!
uAddDepth 0!
;
: LocalsCleanup
PREVIOUS PREVIOUS
;
 
: ProcessLocRec ( "name" -- u )
[CHAR] ] PARSE
STATE 0!
EVALUATE CELL 1- + CELL / \ ¤¥« ¥¬ ªà â­ë¬ 4
-1 STATE !
\ DUP uLocalsCnt +!
uLocalsCnt @
;
 
: CreateLocArray
[CHAR] [ PSKIP
ProcessLocRec
CREATE ,
DUP uLocalsCnt +!
;
 
: LocalsRecDoes@ ( -- u )
DOES> @ CompileLocalRec
;
 
: LocalsRecDoes@2 ( -- u )
ProcessLocRec ,
DUP uLocalsCnt +!
DOES> @ CompileLocalRec
;
 
: LocalsDoes@
uLocalsCnt @ ,
uLocalsCnt 1+!
DOES> @ CompileLocal@
;
 
: ;; POSTPONE ; ; IMMEDIATE
 
 
: ^
' >BODY @
CompileLocalRec
; IMMEDIATE
 
 
: -> ' >BODY @ CompileLocal! ; IMMEDIATE
 
WARNING DUP @ SWAP 0!
 
: AT
[COMPILE] ^
; IMMEDIATE
 
: TO ( "name" -- )
>IN @ NextWord widLocals@ SEARCH-WORDLIST 1 =
IF >BODY @ CompileLocal! DROP
ELSE >IN ! [COMPILE] TO
THEN
; IMMEDIATE
 
WARNING !
 
: ¢ POSTPONE -> ; IMMEDIATE
 
WARNING @ WARNING 0!
\ ===
\ ¯¥à¥®¯à¥¤¥«¥­¨¥ ᮮ⢥âáâ¢ãîé¨å á«®¢ ¤«ï ¢®§¬®¦­®á⨠¨á¯®«ì§®¢ âì
\ ¢à¥¬¥­­ë¥ ¯¥à¥¬¥­­ë¥ ¢­ãâਠ横«  DO LOOP ¨ ­¥§ ¢¨á¨¬® ®â ¨§¬¥­¥­¨ï
\ ᮤ¥à¦¨¬®£® á⥪  ¢®§¢à â®¢ á«®¢ ¬¨ >R R>
C" DO_SIZE" FIND NIP 0=
[IF] 3 CELLS CONSTANT DO_SIZE
[THEN]
 
 
: DO POSTPONE DO DO_SIZE uAddDepth +! ; IMMEDIATE
: ?DO POSTPONE ?DO DO_SIZE uAddDepth +! ; IMMEDIATE
: LOOP POSTPONE LOOP DO_SIZE NEGATE uAddDepth +! ; IMMEDIATE
: +LOOP POSTPONE +LOOP DO_SIZE NEGATE uAddDepth +! ; IMMEDIATE
: >R POSTPONE >R [ 1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: R> POSTPONE R> [ -1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: RDROP POSTPONE RDROP [ -1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: 2>R POSTPONE 2>R [ 2 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: 2R> POSTPONE 2R> [ -2 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
 
\ ===
 
\ uLocalsCnt @ ?DUP
\ IF CELLS RLIT, ['] (LocalsExit) RLIT, THEN
 
: ; LocalsCleanup
S" ;" EVAL-WORD
; IMMEDIATE
 
WARNING !
 
\ =====================================================================
 
 
EXPORT
 
: {
LocalsStartup
BEGIN
BL PSKIP PeekChar DUP [CHAR] \ <>
OVER [CHAR] - <> AND
OVER [CHAR] } <> AND
OVER [CHAR] | <> AND
SWAP [CHAR] ) XOR AND
WHILE
CREATE LocalsDoes@ IMMEDIATE
REPEAT
PeekChar >IN 1+! DUP [CHAR] } <>
IF
DUP [CHAR] \ =
SWAP [CHAR] | = OR
IF
BEGIN
BL PSKIP PeekChar DUP
DUP [CHAR] - <>
SWAP [CHAR] } <> AND
SWAP [CHAR] ) XOR AND
WHILE
PeekChar [CHAR] [ =
IF CreateLocArray LocalsRecDoes@
ELSE
CREATE LATEST DUP C@ + C@
[CHAR] [ =
IF
LocalsRecDoes@2
ELSE
LocalsDoes@ 1
THEN
THEN DUP U.
uLocalsUCnt +!
IMMEDIATE
REPEAT
THEN
[CHAR] } PARSE 2DROP
ELSE DROP THEN
CompileLocalsInit
;; IMMEDIATE
 
;MODULE
/programs/develop/SPForth/devel/~mak/lib/map.f
0,0 → 1,35
 
\ ~mak/want.f WANT #define
 
0 VALUE M#define-CODE
 
: M#define CREATE PARSE-WORD EVALUATE ,
DOES> [ HERE 5 - TO M#define-CODE ] @ ;
 
: Archive_
PARSE-WORD EVALUATE
' DUP 1+ REL@ CELL+ M#define-CODE =
IF
>BODY ! EXIT
THEN 1 THROW ;
 
 
: Archive \ F7_ED
BEGIN
PARSE-WORD DUP 0=
IF NIP REFILL 0= IF DROP TRUE THEN
ELSE S" size" COMPARE 0= THEN
UNTIL
REFILL DROP
BEGIN REFILL 0= IF \EOF EXIT THEN
SOURCE NIP
WHILE M#define
REPEAT
 
BEGIN REFILL
WHILE SOURCE NIP 40 >
IF
['] Archive_ CATCH DROP
THEN
REPEAT POSTPONE \
;
/programs/develop/SPForth/devel/~mak/lib/vt/colors.f
0,0 → 1,15
 
: (ESC) 27 EMIT TYPE ;
: CLEAR S" [2J" (ESC) ; : HOME CLEAR S" [1;1H" (ESC) ;
: NORMAL S" [0m" (ESC) ; : BOLD S" [1m" (ESC) ;
 
: BLACK S" [30m" (ESC) ; : RED S" [31m" (ESC) ;
: GREEN S" [32m" (ESC) ; : YELLOW S" [33m" (ESC) ;
: BLUE S" [34m" (ESC) ; : MAGENTA S" [35m" (ESC) ;
: CYAN S" [36m" (ESC) ; : WHITE S" [37m" (ESC) ;
 
: ONBLACK S" [40m" (ESC) ; : ONRED S" [41m" (ESC) ;
: ONGREEN S" [42m" (ESC) ; : ONYELLOW S" [43m" (ESC) ;
: ONBLUE S" [44m" (ESC) ; : ONMAGENTA S" [45m" (ESC) ;
: ONCYAN S" [46m" (ESC) ; : ONWHITE S" [47m" (ESC) ;
 
/programs/develop/SPForth/devel/~mak/lib/vt
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/lib
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/listing3.f
0,0 → 1,161
 
REQUIRE PLACE ~mak/place.f
REQUIRE [IF] ~mak/CompIF.f
REQUIRE DISASSEMBLER lib/ext/disasm.f
 
C" STREAM-FILE" FIND NIP
[IF]
: FROM_SOURCE-ID SOURCE-ID STREAM-FILE ;
: TO_SOURCE-ID FILE>RSTREAM TO SOURCE-ID ;
[ELSE]
: FROM_SOURCE-ID SOURCE-ID ;
: TO_SOURCE-ID TO SOURCE-ID ;
[THEN]
 
: INST [ ALSO DISASSEMBLER ] INST
[ PREVIOUS ] ;
 
C" -CELL" FIND NIP 0=
[IF] -1 CELLS CONSTANT -CELL
[THEN]
 
CREATE FILE_NAME_L 120 ALLOT
 
CREATE HERE-TAB 5000 CELLS ALLOT
HERE CELL- CONSTANT HERE-TAB-MAX
VARIABLE HERE-TAB-CUR
HERE-TAB HERE-TAB-CUR !
VARIABLE S_STATE
 
: HERE-TAB-CUR+
HERE-TAB-CUR @ CELL+ HERE-TAB-MAX UMIN
HERE-TAB-CUR
!
\ [ .( XXXX) DIS-OPT KEY DROP ]
;
 
: HERE-TO-TAB DP @ HERE-TAB-CUR @ ! HERE-TAB-CUR+ ;
 
 
CREATE SHERE-TAB 800 CELLS ALLOT
HERE CELL- CONSTANT SHERE-TAB-MAX
VARIABLE SHERE-TAB-CUR
SHERE-TAB SHERE-TAB-CUR !
 
: SHERE-TAB-CUR+
SHERE-TAB-CUR @ CELL+ SHERE-TAB-MAX UMIN
SHERE-TAB-CUR ! ;
 
: SHERE-TO-TAB DP @ SHERE-TAB-CUR @ ! SHERE-TAB-CUR+ ;
 
80 VALUE DUMP_MAX
 
: MDUMP ( addr u -- )
DUP 0= IF 2DROP EXIT THEN
BASE @ >R HEX
BEGIN
CR OVER BASE-ADDR - 4 .0 SPACE
2DUP 0x10 MIN
2DUP 0 DO I 4 MOD 0= IF SPACE THEN
DUP C@ 2 .0 SPACE 1+
LOOP DROP
DUP >R PTYPE
R@ - SWAP R> + SWAP DUP 0=
UNTIL 2DROP
R> BASE ! CR
;
 
: .LIST ( ADDR ADDR1 -- ADDR1' )
S_STATE @
IF
SWAP
BEGIN 2DUP U>
WHILE INST CR
REPEAT NIP
ELSE
TUCK
OVER - DUP
IF DUP DUMP_MAX U>
 
IF >R DUMP_MAX DUMP
CR DUP U. R> DUMP_MAX - U. ." bytes"
ELSE MDUMP
THEN CR
ELSE 2DROP
THEN
THEN
;
VECT INCLUDED$
 
' INCLUDED TO INCLUDED$
: INCLUDED_L
['] <PRE> >BODY @ >R
['] HERE-TO-TAB TO <PRE>
HERE-TAB HERE-TAB-CUR !
SHERE-TAB SHERE-TAB-CUR !
2DUP 2>R INCLUDED$ 2R> R> TO <PRE>
-1 SHERE-TAB-CUR @ ! SHERE-TAB-CUR+
HERE-TO-TAB
HERE-TO-TAB -CELL HERE-TAB-CUR +!
HERE-TAB-CUR @ @ -CELL HERE-TAB-CUR +!
BEGIN HERE-TAB-CUR @ HERE-TAB <>
WHILE HERE-TAB-CUR @ @ UMIN DUP HERE-TAB-CUR @ !
-CELL HERE-TAB-CUR +!
REPEAT DROP
S_STATE 0!
SHERE-TAB SHERE-TAB-CUR !
 
2DUP FILE_NAME_L PLACE
S" _L" FILE_NAME_L +PLACE
R/O OPEN-FILE THROW
FILE_NAME_L COUNT 2DUP + 0!
W/O CREATE-FILE THROW
 
TIB >R >IN @ >R #TIB @ >R SOURCE-ID >R BLK @ >R CURSTR @ >R
H-STDOUT >R BASE @ >R HEX
C/L 2 + ALLOCATE THROW TO TIB BLK 0!
TO H-STDOUT
." ZZ=" DUP .
TO_SOURCE-ID
CURSTR 0! HERE-TAB-CUR @ @
BEGIN REFILL
WHILE
SOURCE TYPE CR
BEGIN SHERE-TAB-CUR @ @ HERE-TAB-CUR @ CELL+ @ U<
WHILE SHERE-TAB-CUR @ @ .LIST SHERE-TAB-CUR+
S_STATE @ INVERT S_STATE !
REPEAT HERE-TAB-CUR+ HERE-TAB-CUR @ @ .LIST
REPEAT DROP
TIB FREE THROW
FROM_SOURCE-ID
." ZZ=" DUP .
CLOSE-FILE THROW ( îøèáêà çàêðûòèÿ ôàéëà )
H-STDOUT CLOSE-FILE THROW ( îøèáêà çàêðûòèÿ ôàéëà )
R> BASE ! R> TO H-STDOUT
R> CURSTR ! R> BLK ! R> TO SOURCE-ID R> #TIB ! R> >IN ! R> TO TIB
;
 
: REQUIRED_L ( waddr wu laddr lu -- )
2SWAP SFIND
IF DROP 2DROP EXIT
ELSE 2DROP INCLUDED_L THEN
;
 
[UNDEFINED] PSKIP [IF]
: PSKIP SKIP ;
[THEN]
 
: REQUIRE_L ( "word" "libpath" -- )
BL PSKIP BL PARSE
BL PSKIP BL PARSE 2DUP + 0 SWAP C!
REQUIRED_L
;
 
: : : SHERE-TO-TAB ;
 
: ; POSTPONE ; SHERE-TO-TAB ; IMMEDIATE
 
: SSSS
HERE-TAB HERE-TAB-CUR !
SHERE-TAB SHERE-TAB-CUR !
;
/programs/develop/SPForth/devel/~mak/temps4.f
0,0 → 1,198
 
\ Temporary variables
( 24.09.1997 —¥à¥§®¢ €. )
\ April 12th, 2000 - 14:44 Mihail Maksimov
\ ¤®¡ ¢¨« ª®­áâàãªæ¨¨ !! ... !! ¨ >| ... | , «¨ª¢¨¤¨à®¢ « |DOES
 
\ ®¯â¨¬¨§¨à®¢ ­­ë© ¢ à¨ ­â. ¯¥à¥¬¥­­ë¥ ¬®¦­® ¨á¯®«ì§®¢ âì ¨ ¢­ãâਠDO LOOP
( 10.06.1999 Ruvim Pinka, idea - Mihail Maksimov )
 
( à®á⮥ à áè¨à¥­¨¥ ‘-”®àâ  «®ª «ì­ë¬¨ ¯¥à¥¬¥­­ë¬¨.
¥ «¨§®¢ ­® ¡¥§ ¨á¯®«ì§®¢ ­¨ï LOCALS áâ ­¤ àâ  94.
 
Ž¡ê¥­¨¥ ¢à¥¬¥­­ëå ¯¥à¥¬¥­­ëå, ¢¨¤¨¬ëå ⮫쪮 ¢­ãâà¨
⥪ã饣® á«®¢  ¨ ®£à ­¨ç¥­­ëå ¢à¥¬¥­¥¬ ¢ë§®¢  ¤ ­­®£®
á«®¢  ¢ë¯®«­ï¥âáï á ¯®¬®éìî á«®¢  "|"  ­ «®£¨ç­®
‘¬®«â®«ªã: ¢­ãâਠ®¯à¥¤¥«¥­¨ï á«®¢  ¨á¯®«ì§ã¥âáï
ª®­áâàãªæ¨ï
| ᯨ᮪ «®ª «ì­ëå ¯¥à¥¬¥­­ëå ç¥à¥§ ¯à®¡¥« |
 
â® § áâ ¢«ï¥â ‘-”®àâ  ¢â®¬ â¨ç¥áª¨ ¢ë¤¥«ïâì ¬¥áâ® ¢
á⥪¥ ¢®§¢à â®¢ ¤«ï íâ¨å ¯¥à¥¬¥­­ëå ¢ ¬®¬¥­â ¢ë§®¢  á«®¢ 
¨  ¢â®¬ â¨ç¥áª¨ ®á¢®¡®¦¤ âì ¬¥áâ® ¯à¨ ¢ë室¥ ¨§ ­¥£®.
 
Ž¡à é¥­¨¥ ª â ª¨¬ «®ª «ì­ë¬ ¯¥à¥¬¥­­ë¬ - ª ª ª ®¡ëç­ë¬
¯¥à¥¬¥­­ë¬ ¯® ¨¬¥­¨ ¨ á«¥¤ãî騬¨ @ ¨ !
ˆ¬¥­  «®ª «ì­ëå ¯¥à¥¬¥­­ëå áãé¥áâ¢ãîâ ¢ ¤¨­ ¬¨ç¥áª®¬
á«®¢ à¥ TEMP-NAMES ⮫쪮 ¢ ¬®¬¥­â ª®¬¯¨«ï樨 á«®¢ ,  
¯®á«¥ í⮣® ¢ëç¨é îâáï ¨ ¡®«¥¥ ­¥¤®áâ㯭ë.
)
\ ˆ­¨æ¨ «¨§ æ¨ï ¢à¥¬¥­­ëå ¯¥à¥¬¥­­ëå §­ ç¥­¨ï¬¨, «¥¦ é¨¬¨ ­ 
\ á⥪¥ (­ ¯à¨¬¥à, ¢å®¤­ë¬¨ ¯ à ¬¥âà ¬¨), ¢®§¬®¦­  "ᯨ᪮¬"
\ á ¯®¬®éìî ª®­áâàãªæ¨¨
\ (( ¨¬¥­  ¨­¨æ¨ «¨§¨à㥬ëå «®ª «ì­ëå ¯¥à¥¬¥­­ëå ))
\ ˆ¬¥­  ¤®«¦­ë ¡ëâì à ­¥¥ ®¡ê¥­ë ¢ á«®¢¥ á ¯®¬®éìî | ... |
 
( ˆá¯®«ì§®¢ ­¨¥ «®ª «ì­ëå ¯¥à¥¬¥­­ëå ¢­ãâਠ横«®¢ DO LOOP
­¥¢®§¬®¦­® ¯® ¯à¨ç¨­¥, ®¯¨á ­­®© ¢ áâ ­¤ à⥠94.
 
à¨ ¦¥« ­¨¨ ¨á¯®«ì§®¢ âì «®ª «ì­ë¥ ¯¥à¥¬¥­­ë¥ ¢ á⨫¥ VALUE-¯¥à¥¬¥­­ëå
¬®¦­® ¨á¯®«ì§®¢ âì ª®­áâàãªæ¨î
|| ᯨ᮪ «®ª «ì­ëå ¯¥à¥¬¥­­ëå ç¥à¥§ ¯à®¡¥« ||
ˆ¬¥­  íâ¨å ¯¥à¥¬¥­­ëå ¡ã¤ãâ ¤ ¢ âì ­¥  ¤à¥á,   ᢮¥ §­ ç¥­¨¥.
‘®®â¢¥âá⢥­­® ¯à¨á¢®¥­¨¥ §­ ç¥­¨© ¡ã¤¥â ®áãé¥á⢫ïâìáï ª®­áâàãªæ¨¥©
-> ¨¬ï
¯®  ­ «®£¨¨ á ¯à¨á¢®¥­¨¥¬ §­ ç¥­¨© VALUE-¯¥à¥¬¥­­ë¬ á«®¢®¬ TO.
)
 
VARIABLE TEMP-CNT
WORDLIST CONSTANT TEMP-NAMES
 
: INIT-TEMP-NAMES
ALSO TEMP-NAMES CONTEXT !
TEMP-CNT 0!
;
: DEL-NAMES ( A -- )
DUP>R
@
BEGIN
DUP 0<>
WHILE
DUP CDR SWAP 5 - FREE THROW
REPEAT DROP
R> 0!
;
: DEL-TEMP-NAMES
TEMP-NAMES DEL-NAMES
;
HEX
: COMPIL, ( A -- )
0E8 DOES>A @ C! DOES>A 1+! \ ¬ è¨­­ ï ª®¬ ­¤  CALL
DOES>A @ CELL+ - DOES>A @ !
DOES>A @ 1- DOES>A !
;
DECIMAL
C" LAST-HERE" FIND NIP
[IF]
: TEMP-DOES ( N -- ) ( -- ADDR )
['] DUP MACRO,
0x8D C, 0x44 C, 0x24 C, C, \ LEA EAX , X [ESP]
HERE TO LAST-HERE \ à §à¥è¥­® ®¯â¨¬¨§¨à®¢ âì
;
[ELSE]
: TEMP-DOES ( N -- ) ( -- ADDR )
POSTPONE RP@ LIT, POSTPONE + ;
[THEN]
 
: |TEMP-DOES ( N -- ) ( -- VALUE )
TEMP-DOES ['] @ COMPILE,
;
: |TEMP-DOES! ( N -- ) ( X -- )
TEMP-DOES ['] ! COMPILE,
;
 
VARIABLE add_depth add_depth 0!
 
\ £«ã¡¨­  ¢ á⥪¥ ¢®§¢à â®¢ ¤® ­ ç «  ¯¥à¥¬¥­­ëå
 
: !TEMP-CREATE ( addr u -- )
DUP 20 + ALLOCATE THROW >R
R@ CELL+ CHAR+ 2DUP C!
CHAR+ SWAP MOVE ( name )
TEMP-NAMES @
R@ CELL+ CHAR+ TEMP-NAMES ! ( latest )
R@ CELL+ CHAR+ COUNT + DUP>R ! ( link )
R> CELL+ DUP DOES>A ! R@ ! ( cfa )
&IMMEDIATE R> CELL+ C! ( flags )
['] _CREATE-CODE COMPIL,
TEMP-CNT @ DOES>A @ 5 + !
TEMP-CNT 1+!
POSTPONE >R DOES> @ 2 + CELLS add_depth @ + |TEMP-DOES ;
 
: TEMP-CREATE ( addr u -- )
!TEMP-CREATE DOES> @ 2 + CELLS add_depth @ + TEMP-DOES ;
 
: -> ' 5 + @ 2 + CELLS add_depth @ + |TEMP-DOES!
; IMMEDIATE
 
: |DROP R> RP@ + RP! ;
 
' |DROP VALUE '|DROP
 
: !!!!; ( N N1 -- )
DROP TEMP-CNT @ CELLS LIT, POSTPONE >R
DROP '|DROP LIT, POSTPONE >R ;
 
: !!
BEGIN NextWord 2DUP S" !!" COMPARE 0<>
WHILE !TEMP-CREATE
REPEAT !!!!; ; IMMEDIATE
 
: ||
BEGIN NextWord 2DUP S" ||" COMPARE 0<>
WHILE 0 LIT, !TEMP-CREATE
REPEAT !!!!; ; IMMEDIATE
 
: |
BEGIN NextWord 2DUP S" |" COMPARE 0<>
WHILE 0 LIT, TEMP-CREATE
REPEAT !!!!; ; IMMEDIATE
 
: >|
BEGIN NextWord 2DUP S" |" COMPARE 0<>
WHILE TEMP-CREATE
REPEAT !!!!; ; IMMEDIATE
 
: ((
0
BEGIN
BL WORD DUP COUNT S" ))" COMPARE 0<>
WHILE
FIND IF >R 1+ ELSE 5012 THROW THEN
REPEAT DROP
BEGIN
DUP 0<>
WHILE
\ R> EXECUTE POSTPONE ! ( ¨á¯à ¢«¥­® ¤«ï ¯®¤¤¥à¦ª¨ || )
R> 5 + @ 2 + CELLS add_depth @ +
|TEMP-DOES!
1-
REPEAT DROP
; IMMEDIATE
 
 
\ ===
\ ¯¥à¥®¯à¥¤¥«¥­¨¥ ᮮ⢥âáâ¢ãîé¨å á«®¢ ¤«ï ¢®§¬®¦­®á⨠¨á¯®«ì§®¢ âì
\ ¢à¥¬¥­­ë¥ ¯¥à¥¬¥­­ë¥ ¢­ãâਠ横«  DO LOOP ¨ ­¥§ ¢¨á¨¬® ®â ¨§¬¥­¥­¨ï
\ ᮤ¥à¦¨¬®£® á⥪  ¢®§¢à â®¢ á«®¢ ¬¨ >R R>
 
 
: DO POSTPONE DO [ 3 CELLS ] LITERAL add_depth +!
; IMMEDIATE
 
: LOOP POSTPONE LOOP [ -3 CELLS ] LITERAL add_depth +!
; IMMEDIATE
 
: +LOOP POSTPONE +LOOP [ -3 CELLS ] LITERAL add_depth +!
; IMMEDIATE
 
: >R POSTPONE >R [ 1 CELLS ] LITERAL add_depth +!
; IMMEDIATE
 
: R> POSTPONE R> [ -1 CELLS ] LITERAL add_depth +!
; IMMEDIATE
 
\ ===
 
 
: :: : ;
 
: : ( -- )
: INIT-TEMP-NAMES
;
:: ; ( -- )
DEL-TEMP-NAMES PREVIOUS
POSTPONE ;
add_depth 0! \ ­  ¢á直© á«ãç © ;)
; IMMEDIATE
 
/programs/develop/SPForth/devel/~mak/utils.f
0,0 → 1,45
REQUIRE [IF] ~MAK\CompIF.f
 
C" H." FIND NIP 0=
[IF]
: H. BASE @ HEX SWAP U. BASE ! ;
\ OP1
[THEN]
 
C" FIELD" FIND NIP 0=
[IF] : FIELD -- ;
[THEN]
 
C" BETWEEN" FIND NIP 0=
[IF] : BETWEEN 1+ WITHIN ;
[THEN]
 
C" ?EXIT" FIND NIP 0=
[IF]
: ?EXIT POSTPONE IF
POSTPONE EXIT
POSTPONE THEN ; IMMEDIATE
\ : ?EXIT IF RDROP THEN ;
[THEN]
 
C" DUP>R" FIND NIP 0=
[IF]
 
: DUP>R POSTPONE DUP
POSTPONE >R ; IMMEDIATE
[THEN]
 
C" >NAME" FIND NIP 0=
[IF] : >NAME 4 - DUP BEGIN 1- 2DUP COUNT + U< 0= UNTIL NIP ;
[THEN]
 
C" 2," FIND NIP 0=
[IF]
: 2, ( D -- )
HERE 2! 2 CELLS ALLOT ;
[THEN]
 
C" C>S" FIND NIP 0=
[IF] : C>S ( c -- n ) 0xFF AND [ 0x7F INVERT ] LITERAL XOR 0x80 + ;
[THEN]
/programs/develop/SPForth/devel/~mak/utils_.f
0,0 → 1,510
CR .( UTILS_.F)
REQUIRE [IF] ~MAK\CompIF.f
\ WINAPI: GetCurrentDirectoryA KERNEL32.DLL
\ WINAPI: MoveFileA KERNEL32.DLL
 
: DEFER VECT ;
 
80 CONSTANT MAXSTRING
 
C" PLACE" FIND NIP 0=
[IF]
 
255 CONSTANT MAXCOUNTED \ maximum length of contents of a counted string
 
 
: "CLIP" ( a1 n1 -- a1 n1' ) \ clip a string to between 0 and MAXCOUNTED
MAXCOUNTED MIN 0 MAX ;
 
: PLACE ( addr len dest -- )
SWAP "CLIP" SWAP
2DUP 2>R
CHAR+ SWAP MOVE
2R> C! ;
 
: +PLACE ( addr len dest -- ) \ append string addr,len to counted
\ string dest
>R "CLIP" MAXCOUNTED R@ C@ - MIN R>
\ clip total to MAXCOUNTED string
2DUP 2>R
 
COUNT CHARS + SWAP MOVE
2R> +! ;
 
: C+PLACE ( c1 a1 -- ) \ append char c1 to the counted string at a1
DUP 1+! COUNT + 1- C! ;
[THEN]
: OFF 0! ;
 
: BLANK ( addr len -- ) \ fill addr for len with spaces (blanks)
BL FILL ;
 
: START/STOP ( -- )
KEY?
IF KEY 27 = IF ABORT THEN
THEN ;
 
: .S ( -- )
S0 @ SP@ CELL+ 2DUP =
IF ." EMPTY" 2DROP
ELSE DO I @ . START/STOP 1 CELLS +LOOP
THEN ;
 
C" TUCK" FIND NIP 0=
[IF]
: TUCK ( n1 n2 -- n2 n1 n2 ) \ copy top data stack to under second item
SWAP OVER ;
[THEN]
 
 
128 CONSTANT SPCS-MAX ( optimization for SPACES )
 
CREATE SPCS
SPCS-MAX ALLOT
SPCS SPCS-MAX BLANK
 
: (D.) ( d -- addr len ) TUCK DABS <# #S ROT SIGN #> ;
 
C" WITHIN" FIND NIP 0=
[IF]
: WITHIN ( n1 low high -- f1 ) \ f1=true if ((n1 >= low) & (n1 < high))
OVER - >R - R> U< ;
[THEN]
: BETWEEN 1+ WITHIN ;
 
80 VALUE COLS
 
: H.R ( n1 n2 -- ) \ display n1 as a hex number right
\ justified in a field of n2 characters
BASE @ >R HEX >R
0 <# #S #> R> OVER - SPACES TYPE
R> BASE ! ;
 
: H.N ( n1 n2 -- ) \ display n1 as a HEX number of n2 digits
BASE @ >R HEX >R
0 <# R> 0 ?DO # LOOP #> TYPE
R> BASE ! ;
: COL ( N -- )
DROP 9 EMIT ;
 
: UPC [ CHAR A CHAR a XOR INVERT ] LITERAL AND ;
 
: 2, ( D -- )
HERE 2! 2 CELLS ALLOT ;
 
: VOC-STATE,
CONTEXT @ ,
CONTEXT @ @ ,
VOC-LIST @ VOC-LIST 2,
CURRENT @ CURRENT 2,
LAST @ LAST 2,
VOC-LIST @
BEGIN ?DUP
WHILE DUP CELL+ DUP @ SWAP 2, @
REPEAT
;
: INCLUDE BL WORD COUNT INCLUDED ;
 
: CELLS+ CELLS + ;
 
: ? @ . ;
: DEFINED ( -- str 0 | cfa flag )
BL WORD FIND ;
: [IFUNDEF] DEFINED NIP 0= POSTPONE [IF] ;
\ C" CELL-" FIND NIP 0=
1
[IF] : CELL- 1 CELLS - ;
[THEN]
 
\ C" LCOUNT" FIND NIP 0=
1
[IF] : LCOUNT CELL+ DUP CELL- @ ;
[THEN]
: INCR 1 SWAP +! ;
: FIELD+ -- ;
0 [IF]
: CUR_DIR PAD 256 GetCurrentDirectoryA PAD SWAP ;
CREATE FIRST-PATH-BUF CUR_DIR NIP 1+ ALLOT
CUR_DIR FIRST-PATH-BUF PLACE
: FIRST-PATH" FIRST-PATH-BUF COUNT ;
: RENAME-FILE ( adr1 len adr2 len -- ior )
4DUP + DUP @ 2>R + DUP @ 2>R
4DUP + 0! + 0!
DROP NIP SWAP MoveFileA
2R> SWAP ! 2R> SWAP !
;
 
[THEN]
: FILE-APPEND ( fileid -- ior )
DUP >R FILE-SIZE DROP
R> RESIZE-FILE ;
 
C" U>" FIND NIP 0=
[IF]
: U> ( U1 U2 -- FLAG )
SWAP U< ;
[THEN]
 
C" FOLLOWER" FIND NIP
[IF]
: 2, ( D -- )
HERE 2! 2 CELLS ALLOT ;
 
: VOC-STATE,
CONTEXT @ ,
CONTEXT @ @ ,
VOC-LIST @ VOC-LIST 2,
CURRENT @ CURRENT 2,
LAST @ LAST 2,
VOC-LIST @
BEGIN ?DUP
WHILE DUP CELL+ DUP @ SWAP 2, @
REPEAT
;
 
: MARKER, ( -- ADDR )
HERE
VOC-STATE,
FOLLOWER @ FOLLOWER 2,
HERE 4 CELLS + DP 2, 0. 2,
;
: MARKER! ( ADDR -- )
DUP @ CONTEXT ! CELL+
DUP @ CONTEXT @ ! CELL+
BEGIN DUP 2@ DUP
WHILE ! 2 CELLS +
REPEAT 2DROP DROP ;
[ELSE]
: MARKER ( "<spaces>name" -- ) \ 94 CORE EXT
\ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëàìè.
\ Ñîçäàòü îïðåäåëåíèå ñ ñåìàíòèêîé âûïîëíåíèÿ, îïèñàííîé íèæå.
\ name Âûïîëíåíèå: ( -- )
\ Âîññòàíîâèòü ðàñïðåäåëåíèå ïàìÿòè ñëîâàðÿ è óêàçàòåëè ïîðÿäêà ïîèñêà
\ ê ñîñòîÿíèþ, êîòîðîå îíè èìåëè ïåðåä îïðåäåëåíèåì name. Óáðàòü
\ îïðåäåëåíèå name è âñå ïîñëåäóþùèå îïðåäåëåíèÿ. Íå òðåáóåòñÿ
\ îáÿçàòåëüíî âîññòàíàâëèâàòü ëþáûå îñòàâøèåñÿ ñòðóêòóðû, êîòîðûå
\ ìîãóò áûòü ñâÿçàíû ñ óäàëåííûìè îïðåäåëåíèÿìè èëè îñâîáîæäåííûì
\ ïðîñòðàíñòâîì äàííûõ. Íèêàêàÿ äðóãàÿ êîíòåêñòóàëüíàÿ èíôîðìàöèÿ,
\ êàê îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ, íå èçìåíÿåòñÿ.
HERE
\ [C]HERE , [E]HERE ,
GET-CURRENT ,
GET-ORDER DUP , 0 ?DO DUP , @ , LOOP
CREATE ,
DOES> @ DUP \ ONLY
\ DUP @ [C]DP ! CELL+
\ DUP @ [E]DP ! CELL+
DUP @ SET-CURRENT CELL+
DUP @ >R R@ CELLS 2* + 1 CELLS - R@ 0
?DO DUP DUP @ SWAP CELL+ @ OVER ! SWAP 2 CELLS - LOOP
DROP R> SET-ORDER
DP !
;
 
[THEN]
 
C" BODY>" FIND NIP 0=
[IF] : BODY> 5 - ;
[THEN]
 
C" >NAME" FIND NIP 0=
[IF] : >NAME 4 - DUP BEGIN 1- 2DUP COUNT + U< 0= UNTIL NIP ;
[THEN]
 
C" CELL/" FIND NIP 0=
[IF] : CELL/ ( N - N1 ) 2 RSHIFT ;
[THEN]
 
C" IMAGE-BEGIN" FIND NIP
[IF]
: ?NAME ( ADDR - FLAG )
DUP IMAGE-BEGIN U>
OVER HERE U< AND
IF DUP >NAME COUNT + CELL+ =
ELSE DROP FALSE
THEN ;
[THEN]
 
H-STDOUT CONSTANT FORTH-OUT
 
: FORTH-IO
FORTH-OUT H-STDOUT <>
IF H-STDOUT CLOSE-FILE DROP
FORTH-OUT TO H-STDOUT
THEN
;
: H. BASE @ HEX SWAP U. BASE ! ;
: 3DROP DROP 2DROP ;
: 4DUP 2OVER 2OVER ;
: 0.0 0 DUP ;
: IS POSTPONE TO ; IMMEDIATE
 
C" -ROT" FIND NIP 0=
[IF] : -ROT ROT ROT ;
[THEN]
 
 
: SCAN ( adr len char -- adr' len' )
\ Scan for char through addr for len, returning addr' and len' of char.
>R 2DUP R> -ROT
OVER + SWAP
?DO DUP I C@ =
IF LEAVE
ELSE >R 1 -1 D+ R>
THEN
LOOP DROP ;
 
: SSKIP ( adr len char -- adr' len' )
\ Skip char through addr for len, returning addr' and len' of char+1.
>R 2DUP R> -ROT
OVER + SWAP
?DO DUP I C@ <>
IF LEAVE
ELSE >R 1 -1 D+ R>
THEN
LOOP DROP ;
 
1 CELLS CONSTANT CELL
 
C" LSCAN" FIND NIP 0=
[IF]
: LSCAN ( adr len long -- adr' len' )
\ Scan for char through addr for len, returning addr' and len' of char.
>R 2DUP CELLS R> -ROT \ adr len long adr len
OVER + SWAP \ adr len long adr+len adr
?DO DUP I @ =
IF LEAVE
ELSE >R 1- >R CELL+ R> R>
THEN CELL
+LOOP DROP ;
[THEN]
 
C" /STRING" FIND NIP 0=
[IF] : /STRING DUP >R - SWAP R> + SWAP ;
[THEN]
 
: "TO-PATHEND" ( a1 n1 --- a2 n2 ) \ return a2 and count=n1 of filename
OVER 1+ C@ [CHAR] : = \ second char is ':'
OVER 2 > AND \ and name is longer than two characters
IF 2 /STRING \ then remove first two characters
THEN \ now scan to end of last '\' in filename
BEGIN 2DUP [CHAR] \ SCAN ?DUP
WHILE 2SWAP 2DROP 1 /STRING
REPEAT DROP ;
 
: ON TRUE SWAP ! ;
C" -ROT" FIND NIP 0=
[IF] : -ROT ROT ROT ;
[THEN]
 
C" BOUNDS" FIND NIP 0=
[IF] : BOUNDS OVER + SWAP ;
[THEN]
: >= < INVERT ;
: 4DROP 2DROP 2DROP ;
 
C" RECURSE" FIND NIP 0=
[IF]
: RECURSE ( -- ) \ cause current definition to execute itself
?COMP LAST @ NAME> COMPILE, ; IMMEDIATE
[THEN]
C" DUP>R" FIND NIP 0=
[IF] : DUP>R POSTPONE DUP POSTPONE >R ; IMMEDIATE
[THEN]
 
C" PICK" FIND NIP 0=
[IF]
: PICK ( n -- n' )
1+ CELLS SP@ + @ ;
[THEN]
 
C" ROLL" FIND NIP 0=
[IF]
 
: ROLL ( n1 n2 .. nk k -- n2 n3 .. nk n1 )
\ Rotate k values on the stack, bringing the deepest to the top.
\ ?DUP IF 1- SWAP >R RECURSE R> SWAP THEN ;
DUP>R PICK SP@ DUP CELL+ R> 1+ CELLS MOVE DROP ;
[THEN]
 
C" AHEAD" FIND NIP 0=
[IF]
: AHEAD POSTPONE FALSE POSTPONE IF ; IMMEDIATE
[THEN]
 
C" NOT" FIND NIP 0=
[IF] : NOT 0= ;
[THEN]
 
C" ?EXIT" FIND NIP 0=
[IF]
: ?EXIT POSTPONE IF
POSTPONE EXIT
POSTPONE THEN ; IMMEDIATE
\ : ?EXIT IF RDROP THEN ;
[THEN]
 
: BEEP 7 EMIT ;
 
16 CONSTANT #VOCS
-1 CELLS CONSTANT -CELL
C" D2*" FIND NIP 0=
[IF] : D2* 2DUP D+ ;
[THEN]
: ," [CHAR] " WORD C@ 1+ ALLOT 0 C, ;
: TAB 9 EMIT ;
 
: (D.) ( d -- addr len ) TUCK DABS <# #S ROT SIGN #> ;
: D.R ( d w -- ) >R (D.) R> OVER - SPACES TYPE ;
: U.R ( u w -- ) 0 SWAP D.R ;
: $ SOURCE TYPE CR ; IMMEDIATE
: +NULL ( a1 -- ) \ append a NULL just beyond the counted chars
COUNT + 0 SWAP C! ;
 
C" CELLS+" FIND NIP 0=
[IF]
: CELLS+ CELLS + ;
[THEN]
 
C" +CELLS" FIND NIP 0=
[IF]
: +CELLS SWAP CELLS+ ;
[THEN]
C" PERFORM" FIND NIP 0=
[IF]
: PERFORM @ EXECUTE ;
[THEN]
 
C" UPPER" FIND NIP 0=
[IF]
: UPPER ( A L -- )
OVER + SWAP
?DO I C@ DUP [CHAR] Z U>
IF 0xDF AND
THEN I C!
LOOP ;
[THEN]
 
C" RESET-STACKS" FIND NIP 0=
[IF]
: RESET-STACKS S0 @ SP! ;
[THEN]
C" D-" FIND NIP 0=
[IF]
: D- ( D1 D2 -- FLAG )
DNEGATE D+ ;
[THEN]
 
C" D=" FIND NIP 0=
[IF]
: D= ( D1 D2 -- FLAG )
D- D0= ;
[THEN]
 
C" D<>" FIND NIP 0=
[IF]
: D<> ( D1 D2 -- FLAG )
D= INVERT ;
[THEN]
 
C" <=" FIND NIP 0=
[IF]
: <= ( D1 D2 -- FLAG )
> INVERT ;
[THEN]
 
C" UMAX" FIND NIP 0=
[IF]
: UMAX ( D1 D2 -- FLAG )
2DUP U< IF NIP ELSE DROP THEN ;
[THEN]
 
C" D2/" FIND NIP 0=
[IF]
: D2/ ( d1 -- d2 ) \ divide the double number d1 by two
DUP 1 AND 0x1F RSHIFT ROT 2/ OR SWAP 2/ ;
[THEN]
 
C" D0<" FIND NIP 0=
[IF]
: D0< ( d1 -- f1 )
\ Signed compare d1 double number with zero. If d1 < 0, RETNurn TRUE.
0< NIP ;
[THEN]
C" \S" FIND NIP 0=
[IF]
: \S \ comment to end of file
BEGIN REFILL 0= UNTIL
 
\ SOURCE-ID FILE-SIZE DROP
\ SOURCE-ID REPOSITION-FILE DROP
[COMPILE] \ ; IMMEDIATE
[THEN]
 
\ C" NEEDS" FIND NIP 0=
 
[IF]
: NEEDS
BL WORD FIND NIP
BL WORD SWAP 0=
IF COUNT INCLUDED
ELSE DROP
THEN
;
[THEN]
C" 0MIN" FIND NIP 0=
[IF] : 0MIN 0 MIN ;
[THEN]
C" 0MAX" FIND NIP 0=
[IF] : 0MAX 0 MIN ;
[THEN]
 
C" H." FIND NIP 0=
[IF] : H. BASE @ SWAP HEX U. BASE ! ;
[THEN]
 
C" .HS" FIND NIP 0=
[IF]
: .HS ( N -- N1 )
BASE @ >R HEX .S R> BASE ! ;
[THEN]
 
 
C" MS" FIND NIP 0=
[IF]
C" PAUSE" FIND NIP
[IF] : MS ( N -- ) PAUSE ;
[THEN]
[THEN]
 
C" 0>" FIND NIP 0=
[IF]
: 0> ( N -- ) NEGATE 0< ;
[THEN]
C" CS-DUP" FIND NIP 0=
[IF] : CS-DUP 2DUP ;
[THEN]
C" M_WL" FIND NIP 0=
[IF] : M_WL CS-DUP POSTPONE WHILE ; IMMEDIATE
[THEN]
 
C" AHEAD" FIND NIP 0=
[IF] : AHEAD ?COMP HERE BRANCH, >MARK 1 ; IMMEDIATE
[THEN]
 
C" CS-DUP" FIND NIP 0=
[IF] : CS-DUP 2DUP ;
[THEN]
 
C" CS-!" FIND NIP 0=
[IF] : CS-! 2! ;
[THEN]
 
C" CS-@" FIND NIP 0=
[IF] : CS-@ 2@ ;
[THEN]
 
C" CS-CELLS" FIND NIP 0=
[IF] : CS-CELLS CELLS 2* ;
[THEN]
/programs/develop/SPForth/devel/~mak/want.f
0,0 → 1,22
REQUIRE [IF] ~mak/CompIF.f
REQUIRE $! ~mak\place.f
REQUIRE [IFNDEF] ~nn\lib\ifdef.f
 
[IFNDEF] PARSE-WORD
: PARSE-WORD NextWord ;
[THEN]
 
CREATE WANT_BUFF 0x101 ALLOT
CREATE WANT_FILE 0x101 ALLOT
S" ~mak\do_want.f" WANT_FILE $!
 
: [WANT] ( addr len -- addr len | )
2DUP PARSE-WORD COMPARE
IF POSTPONE \ EXIT THEN
2DROP INTERPRET \EOF ;
 
: WANT ( -- )
PARSE-WORD WANT_BUFF $!
WANT_FILE COUNT INCLUDED ;
/programs/develop/SPForth/devel/~mak/~af/lib/c/zstr.f
0,0 → 1,75
\ $Id: zstring.f,v 1.1 2003/01/18 09:02:11 anfilat Exp $
\ ã«ì-áâப¨. ’¥å­®«®£¨ï ¢§ïâ  ¨§ ~yz\common.f
 
\ Š®¯¨àã¥â áâபã addr u ¯®  ¤à¥áã z. ‚ ª®­¥æ áâப¨ § ¯¨á뢠¥â 0
: CZMOVE ( a # z --) 2DUP + >R SWAP CMOVE R> 0 SWAP C! ;
 
: ALITERAL R> COUNT OVER + 1+ >R ;
 
\ VOCABULARY ZStrSupport
\ GET-CURRENT ALSO ZStrSupport DEFINITIONS
 
USER toadr USER fromadr USER counter
: zchar ( --c/0) counter @ 1 <
IF 0 ELSE -1 counter +! fromadr @ C@ fromadr 1+! THEN ;
: unchar counter 1+! -1 fromadr +! ;
: c> ( c--) toadr @ C! toadr 1+! ;
: escape ( c--c )
DUP [CHAR] n = IF DROP 10 ELSE
DUP [CHAR] r = IF DROP 13 ELSE
DUP [CHAR] t = IF DROP 9 ELSE
DUP [CHAR] b = IF DROP 8 ELSE
DUP [CHAR] q = IF DROP [CHAR] " ELSE
DUP [ CHAR 0 1- ] LITERAL OVER < SWAP [ CHAR 9 1+ ] LITERAL < AND IF
[CHAR] 0 -
BEGIN ( n) zchar DUP
[ CHAR 0 1- ] LITERAL OVER < SWAP [ CHAR 9 1+ ] LITERAL < AND
WHILE
( n c) [CHAR] 0 - SWAP 10 * +
REPEAT
0<> IF unchar THEN
THEN
THEN
THEN
THEN
THEN
THEN
;
: ESC-CZMOVE ( a # to --)
toadr ! counter ! fromadr !
BEGIN
zchar
DUP [CHAR] \ = IF DROP zchar escape THEN
DUP c> 0= UNTIL ;
 
 
\ SET-CURRENT
 
: Z\LITERAL ( addr u -- \ a) \ ¢ ०¨¬¥ ¨­â¥à¯à¥â æ¨¨ ¢®§¢à é ¥â  ¤à¥á
\ ¡ãä¥à  ¢ ¤¨­ ¬¨ç¥áª®© ¯ ¬ïâ¨. ãä¥à ¦¥« â¥«ì­® ®á¢®¡®¤¨âì
STATE @ IF
POSTPONE ALITERAL
HERE 1+ DUP >R ESC-CZMOVE
R@ ASCIIZ> NIP 2+ DUP ALLOT 2- R> 1- C!
ELSE
DUP 1+ ALLOCATE THROW DUP >R ESC-CZMOVE R>
THEN
; IMMEDIATE
 
: ZLITERAL ( addr u -- \ a)
STATE @ IF
POSTPONE ALITERAL
DUP C,
HERE SWAP DUP ALLOT MOVE 0 C,
ELSE
DUP 1+ ALLOCATE THROW DUP >R CZMOVE R>
THEN
; IMMEDIATE
 
\ ‘®§¤ ¥â áâபã, ®ª ­ç¨¢ îéãîáï ­ã«¥¬
: Z" ( -->") [CHAR] " PARSE [COMPILE] ZLITERAL ; IMMEDIATE
 
\ ‘®§¤ ¥â 0-áâபã, ¯à¨ í⮬ ¯à¥®¡à §ã¥â ¥¥ ¯® C-¯à ¢¨« ¬.
: Z\" ( -->") [CHAR] " PARSE [COMPILE] Z\LITERAL ; IMMEDIATE
 
\ PREVIOUS
/programs/develop/SPForth/devel/~mak/~af/lib/c
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/~af/lib
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak/~af
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~mak
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~nn/lib/ifdef.f
0,0 → 1,21
C" [DEFINED]" FIND NIP 0=
[IF]
: [DEFINED] ( -- f ) \ "name"
NextWord SFIND IF DROP TRUE ELSE 2DROP FALSE THEN
; IMMEDIATE
 
: [UNDEFINED] ( -- f ) \ "name"
POSTPONE [DEFINED] 0=
; IMMEDIATE
[THEN]
 
: [IFDEF]
POSTPONE [DEFINED]
0= IF POSTPONE [ELSE] THEN
; IMMEDIATE
 
: [IFNDEF]
POSTPONE [UNDEFINED]
0= IF POSTPONE [ELSE] THEN
; IMMEDIATE
 
/programs/develop/SPForth/devel/~nn/lib
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel/~nn
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/devel
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/gif_lite.inc
0,0 → 1,318
; GIF LITE v2.0 by Willow
; Written in pure assembler by Ivushkin Andrey aka Willow
;
; This include file will contain functions to handle GIF image format
;
; Created: August 15, 2004
; Last changed: September 9, 2004
 
; Change COLOR_ORDER in your program
; if colors are displayed improperly
 
if ~ (COLOR_ORDER in <MENUETOS,OTHER>)
; This message may not appear under MenuetOS, so watch...
display 'Please define COLOR_ORDER: MENUETOS or OTHER',13,10
end if
 
struc GIF_info
{
; .NextImg rd 1 ; used internally
.Left rw 1
.Top rw 1
.Width rw 1
.Height rw 1
}
 
_null fix 0x1000
 
; ****************************************
; FUNCTION GetGIFinfo - retrieve Nth image info
; ****************************************
; in:
; esi - pointer to image list header
; ecx - image_index (0...img_count-1)
; edi - pointer to GIF_info structure to be filled
 
; out:
; eax - pointer to RAW data, or 0, if error
 
GetGIFinfo:
push esi ecx edi
xor eax,eax
jecxz .eloop
.lp:
mov esi,[esi]
test esi,esi
jz .error
loop .lp
.eloop:
add esi,4
movsd
movsd
mov eax,esi
.error:
pop edi ecx esi
ret
 
; ****************************************
; FUNCTION ReadGIF - unpacks GIF image
; ****************************************
; in:
; esi - pointer to GIF file in memory
; edi - pointer to output image list
; eax - pointer to work area (MIN 16 KB!)
 
; out:
; eax - 0, all OK;
; eax - 1, invalid signature;
; eax >=8, unsupported image attributes
;
; ecx - number of images
 
ReadGIF:
push esi edi
mov [.table_ptr],eax
mov [.cur_info],edi
xor eax,eax
mov [.globalColor],eax
mov [.img_count],eax
inc eax
cmp dword[esi],'GIF8'
jne .er ; signature
mov ecx,[esi+0xa]
inc eax
add esi,0xd
mov edi,esi
bt ecx,7
jnc .nextblock
mov [.globalColor],esi
call .Gif_skipmap
.nextblock:
cmp byte[edi],0x21
jne .noextblock
inc edi
cmp byte[edi],0xf9 ; Graphic Control Ext
jne .no_gc
add edi,7
jmp .nextblock
.no_gc:
cmp byte[edi],0xfe ; Comment Ext
jne .no_comm
inc edi
.block_skip:
movzx eax,byte[edi]
lea edi,[edi+eax+1]
cmp byte[edi],0
jnz .block_skip
inc edi
jmp .nextblock
.no_comm:
cmp byte[edi],0xff ; Application Ext
jne .nextblock
add edi,13
jmp .block_skip
.noextblock:
cmp byte[edi],0x2c ; image beginning
jne .er
inc [.img_count]
inc edi
mov esi,[.cur_info]
add esi,4
xchg esi,edi
movsd
movsd
push edi
movzx ecx,word[esi]
inc esi
bt ecx,7
jc .uselocal
push [.globalColor]
mov edi,esi
jmp .setPal
.uselocal:
call .Gif_skipmap
push esi
.setPal:
movzx ecx,byte[edi]
inc ecx
mov [.codesize],ecx
dec ecx
pop [.Palette]
lea esi,[edi+1]
mov edi,[.table_ptr]
xor eax,eax
cld
lodsb ; eax - block_count
add eax,esi
mov [.block_ofs],eax
mov [.bit_count],8
mov eax,1
shl eax,cl
mov [.CC],eax
inc eax
mov [.EOI],eax
lea ecx,[eax-1]
mov eax, _null shl 16
.filltable:
stosd
inc eax
loop .filltable
pop edi
mov [.img_start],edi
.reinit:
mov edx,[.EOI]
inc edx
push [.codesize]
pop [.compsize]
call .Gif_get_sym
cmp eax,[.CC]
je .reinit
call .Gif_output
.cycle:
movzx ebx,ax
call .Gif_get_sym
cmp eax,edx
jae .notintable
cmp eax,[.CC]
je .reinit
cmp eax,[.EOI]
je .end
call .Gif_output
.add:
push eax
mov eax,[.table_ptr]
mov [eax+edx*4],ebx
pop eax
cmp edx,0xFFF
jae .cycle
inc edx
bsr ebx,edx
cmp ebx,[.compsize]
jne .noinc
inc [.compsize]
.noinc:
jmp .cycle
.notintable:
push eax
mov eax,ebx
call .Gif_output
push ebx
movzx eax,bx
call .Gif_output
pop ebx eax
jmp .add
.er:
pop edi
jmp .ex
.end:
mov eax,[.cur_info]
mov [eax],edi
mov [.cur_info],edi
add esi,2
xchg esi,edi
.nxt:
cmp byte[edi],0
jnz .continue
inc edi
jmp .nxt
.continue:
cmp byte[edi],0x3b
jne .nextblock
xor eax,eax
stosd
mov ecx,[.img_count]
.ex:
pop edi esi
ret
 
.Gif_skipmap:
; in: ecx - image descriptor, esi - pointer to colormap
; out: edi - pointer to area after colormap
 
and ecx,111b
inc ecx ; color map size
mov ebx,1
shl ebx,cl
lea ebx,[ebx*2+ebx]
lea edi,[esi+ebx]
ret
 
.Gif_get_sym:
mov ecx,[.compsize]
push ecx
xor eax,eax
.shift:
ror byte[esi],1
rcr eax,1
dec [.bit_count]
jnz .loop1
inc esi
cmp esi,[.block_ofs]
jb .noblock
push eax
xor eax,eax
lodsb
test eax,eax
jnz .nextbl
mov eax,[.EOI]
sub esi,2
add esp,8
jmp .exx
.nextbl:
add eax,esi
mov [.block_ofs],eax
pop eax
.noblock:
mov [.bit_count],8
.loop1:
loop .shift
pop ecx
rol eax,cl
.exx:
xor ecx,ecx
ret
 
.Gif_output:
push esi eax edx
mov edx,[.table_ptr]
.next:
push word[edx+eax*4]
mov ax,word[edx+eax*4+2]
inc ecx
cmp ax,_null
jnz .next
shl ebx,16
mov bx,[esp]
.loop2:
pop ax
 
lea esi,[eax+eax*2]
add esi,[.Palette]
 
if COLOR_ORDER eq MENUETOS
mov esi,[esi]
bswap esi
shr esi,8
mov [edi],esi
add edi,3
else
movsw
movsb
end if
 
loop .loop2
pop edx eax esi
ret
 
.globalColor rd 1
.img_count rd 1
.cur_info rd 1 ; image table pointer
.img_start rd 1
.codesize rd 1
.compsize rd 1
.bit_count rd 1
.CC rd 1
.EOI rd 1
.Palette rd 1
.block_ofs rd 1
.table_ptr rd 1
/programs/develop/SPForth/img.asm
0,0 → 1,29075
 
MUSEROFFS EQU 4144
 
AHEADER 0 ,'TST1',cfa_TST1
 
call cfa__SLITERALminusCODE+00H
DB 05H
DB 'WORDS',0
call cfa_EVALUATE+00H
DB 0C3H
AHEADER 0 ,'TST',cfa_TST
 
call cfa__SLITERALminusCODE+00H
DB 010H
DB '/rd/1/autoload.f',0
call cfa_INCLUDED_+00H
DB 0C3H
AHEADER 0 ,'H.',cfa_Hdot
 
call cfa_BASE+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_HEX+00H
call cfa_Udot+00H
call cfa_BASE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'EMIT',cfa_EMIT
 
call cfa__VECTminusCODE+00H
DD cfa__EMIT+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'TYPE',cfa_TYPE
 
call cfa__VECTminusCODE+00H
DD cfa__TYPE+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'INCLUDED',cfa_INCLUDED
 
call cfa_INCLUDED_+00H
DB 0C3H
AHEADER 0 ,':NONAME',cfa_dcomaNONAME
 
call cfa_HERE+00H
call cfa__y+00H
call cfa_HERE+00H
call cfa_dcomaminusSET+09H
DB 0C3H
AHEADER 0 ,'IMMEDIATE',cfa_IMMEDIATE
 
call cfa_LAST+00H
DB 08BH,00H
DB 08DH,040H,0F7H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_and_IMMEDIATE+00H
DB 0BH,045H,00H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 08BH,055H,04H
DB 088H,010H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'ALIGN-NOP',cfa_ALIGNminusNOP
 
call cfa_HERE+00H
DB 089H,045H,0FCH
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,055H,00H
DB 08BH,055H,0FCH
DB 089H,045H,0F8H
DB 089H,055H,0F4H
DB 08BH,0C8H
DB 08BH,045H,0F4H
DB 099H
DB 0F7H,0F9H
DB 089H,055H,0F4H
DB 08BH,045H,0F4H
DB 08DH,06DH,0F8H
DB 0BH,0C0H
;je cfa_ALIGNminusNOP+03FH
DB 074H,0DH
DB 0F7H,0D8H
DB 03H,045H,00H
DB 03H,045H,04H
DB 08DH,06DH,08H
DB 0EBH,06H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 090H
DB 08DH,06DH,0FCH
call cfa_FILL+00H
DB 0C3H
AHEADER 0 ,'ALIGN',cfa_ALIGN
 
call cfa_DP+00H
DB 08BH,00H
call cfa_ALIGNED+00H
call cfa_DP+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_ALLOT+00H
DB 0C3H
AHEADER 0 ,'ALIGNED',cfa_ALIGNED
 
call cfa_ALIGNminusBYTES+00H
DB 08BH,00H
DB 0BH,0C0H
;jne cfa_ALIGNED+024H
DB 075H,019H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_ALIGNminusBYTES+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08BH,0C8H
DB 08BH,045H,0F8H
DB 099H
DB 0F7H,0F9H
DB 089H,055H,0F8H
DB 08BH,045H,0F8H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_ALIGNED+04FH
DB 074H,0DH
DB 0F7H,0D8H
DB 03H,045H,00H
DB 03H,045H,04H
DB 08DH,06DH,08H
DB 0EBH,06H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'ALIGN-BYTES',cfa_ALIGNminusBYTES
 
call cfa__USERminusCODE+00H
DD reserve+0102CH
AHEADER 0 ,'H-STDERR',cfa_HminusSTDERR
 
call cfa__CONSTANTminusCODE+00H
DD 01H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'H-STDOUT',cfa_HminusSTDOUT
 
call cfa__CONSTANTminusCODE+00H
DD 01H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'H-STDIN',cfa_HminusSTDIN
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'HLD',cfa_HLD
 
call cfa__USERminusCODE+00H
DD reserve+01028H
AHEADER 0 ,'.S',cfa_dotS
 
call cfa_DEPTH+00H
call cfa_dotSN+00H
DB 0C3H
AHEADER 1 ,'$"',cfa_doldtic
 
call cfa_Cdtic+00H
DB 0C3H
AHEADER 1 ,'}}',cfa_rskrsk
 
call cfa_PREVIOUS+00H
DB 0C3H
AHEADER 1 ,'{{',cfa_lsklsk
 
call cfa_DEPTH+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_ALSO+00H
call cfa_tic+00H
call cfa_EXECUTE+00H
call cfa_DEPTH+00H
DB 089H,045H,0FCH
DB 058H
DB 033H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_lsklsk+03FH
DB 074H,010H
call cfa__CONTEXT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,';MODULE',cfa__endMODULE
 
call cfa_SETminusCURRENT+00H
call cfa_PREVIOUS+00H
DB 0C3H
AHEADER 0 ,'EXPORT',cfa__EXPORT
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_SETminusCURRENT+00H
DB 0C3H
AHEADER 0 ,'MODULE:',cfa_MODULEdcoma
 
call cfa_greatIN+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_tic+00H
call cfa_CATCH+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_MODULEdcoma+055H
DB 074H,033H
call cfa_greatIN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_VOCABULARY+00H
call cfa_GETminusCURRENT+00H
call cfa_ALSO+00H
call cfa_LATEST+00H
DB 08BH,040H,0F8H
call cfa_EXECUTE+00H
call cfa_DEFINITIONS+00H
DB 0EBH,01FH
DB 08DH,06DH,04H
call cfa_GETminusCURRENT+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_ALSO+00H
call cfa_EXECUTE+00H
call cfa_DEFINITIONS+00H
DB 0C3H
AHEADER 0 ,'INIT',cfa_INIT
 
call cfa_CURFILE+00H
DB 0C7H,00H
DD 00H
DB 0B8H
DD 01H
call cfa_ALIGNminusBYTES+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_JP0+00H
call cfa_JpBuffSize+00H
call cfa_ERASE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_LITcom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 020H
DB 08DH,06DH,0FCH
call cfa_MM_SIZE+09H
call cfa_SETminusOPT+00H
call cfa_TITLE+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_AUTOEXEC+00H
call cfa_CATCH+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INIT+08CH
DB 074H,05H
call cfa_ERROR_DO+00H
DB 090H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_QUIT+00H
call cfa_CATCH+00H
call cfa_ERROR_DO+00H
DB 0EBH,0E8H
DB 0C3H
AHEADER 0 ,'HH.',cfa_HHdot
 
DB 089H,045H,0FCH
DB 0B8H
DD 010000000H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01000000H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0100000H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 010000H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01000H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0100H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 010H
DB 08DH,06DH,0FCH
call cfa_U_divMOD+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
call cfa_DIGITgreat+00H
call cfa_EMIT+00H
DB 0C3H
AHEADER 0 ,'ERR-EXIT',cfa_ERRminusEXIT
 
call cfa_CATCH+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_ERRminusEXIT+019H
DB 074H,05H
call cfa__BYE+00H
DB 0C3H
AHEADER 0 ,'TITLE',cfa_TITLE
 
call cfa__SLITERALminusCODE+00H
DB 01EH
DB 'SP-FOPTH ANS FORTH 94 for fasm',0
call cfa_TYPE+00H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 024H
DB 'A.Cherezov http://www.forth.org.ru/',0
call cfa_TYPE+00H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 03EH
DB 'M.Maksimov http://forth.spb.su:8888/ http://www.chat.ru/~mak',0
call cfa_TYPE+00H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 01BH
DB 'PAGE - Clearing of a screen',0
call cfa_TYPE+00H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 01BH
DB 'WORDS - list of forth-words',0
call cfa_TYPE+00H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 01CH
DB 'BYE - KolibriOS continuance',0
call cfa_TYPE+00H
call cfa_CR+00H
DB 0C3H
AHEADER 0 ,'<FLOAT-INIT>',cfa_lessFLOATminusINITgreat
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'MAINX',cfa_MAINX
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'REFILL',cfa_REFILL
 
call cfa_SOURCEminusID+00H
DB 03DH
DD 0FFFFFFFFH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_REFILL+01CH
DB 075H,0AH
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
DB 0EBH,02BH
call cfa_SOURCEminusID+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_REFILL+037H
DB 074H,0CH
call cfa_SOURCEminusID+00H
call cfa_FREFILL+00H
DB 0EBH,010H
call cfa_QUERY+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'FREFILL',cfa_FREFILL
 
call cfa_TIB+00H
call cfa_C_divL+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,055H,04H
call cfa_READminusLINE+00H
call cfa_THROW+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_nTIB+00H
DB 08BH,055H,00H
DB 089H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_greatIN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_CURSTR+00H
DB 0FFH,00H
DB 033H,0C0H
call cfa_SOURCE+00H
DB 03H,045H,00H
DB 08BH,055H,04H
DB 088H,010H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'QUERY',cfa_QUERY
 
call cfa_TIB+00H
DB 089H,045H,0FCH
DB 0B8H
DD 050H
DB 08DH,06DH,0FCH
call cfa_ACCEPT+00H
call cfa_nTIB+00H
DB 08BH,055H,00H
DB 089H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_greatIN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'CONSOLE-HANDLES',cfa_CONSOLEminusHANDLES
 
DB 0C3H
AHEADER 0 ,'<PRE>',cfa_lessPREgreat
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'PSKIP',cfa_PSKIP
 
DB 090H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_GetChar+00H
DB 050H
DB 08BH,045H,00H
DB 033H,045H,04H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,04H
DB 058H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0840FH
DD cfa_PSKIP+03AH-$-4
call cfa_greatIN+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,0C7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'PARSE',cfa_PARSE
 
call cfa_CharAddr+00H
call cfa_greatIN+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,055H,04H
call cfa_SkipUpTo+00H
call cfa_greatIN+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 0F7H,0D8H
DB 08DH,06DH,04H
call cfa_greatIN+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'PARSE-NAME',cfa_PARSEminusNAME
 
call cfa_PARSEminusWORD+00H
DB 0C3H
AHEADER 0 ,'NextWord',cfa_NextWord
 
call cfa_PARSEminusWORD+00H
DB 0C3H
AHEADER 0 ,'PARSE-WORD',cfa_PARSEminusWORD
 
call cfa_SkipDelimiters+00H
call cfa_ParseWord+00H
call cfa_greatIN+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'UPPER_NW',cfa_UPPER_NW
 
call cfa_UPPER_SCR+00H
call cfa_PLACE+00H
call cfa_UPPER_SCR+00H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08BH,055H,0FCH
DB 089H,045H,0F8H
DB 089H,055H,0F4H
DB 08DH,06DH,0F4H
call cfa_UPPER+00H
DB 0C3H
AHEADER 0 ,'UPPER',cfa_UPPER
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0BBH
DD cfa_UPPER+055H
DB 03BH,045H,0F8H
;jne cfa_UPPER+017H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_UPC+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,040H,0FFH
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,04H,024H
;jno cfa_UPPER+027H
DB 071H,0D6H
DB 08DH,064H,024H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'UPC',cfa_UPC
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 05AH
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
;jae cfa_UPC+01EH
DB 073H,0BH
DB 089H,045H,0FCH
DB 0B8H
DD 0DFH
DB 023H,045H,0FCH
DB 0C3H
AHEADER 0 ,'UPPER_SCR',cfa_UPPER_SCR
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H
AHEADER 0 ,'ParseWord',cfa_ParseWord
 
call cfa_CharAddr+00H
call cfa_greatIN+00H
DB 08BH,00H
call cfa_SkipWord+00H
call cfa_greatIN+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 0F7H,0D8H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SkipUpTo',cfa_SkipUpTo
 
DB 090H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_GetChar+00H
DB 050H
DB 08BH,045H,00H
DB 033H,045H,04H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 089H,045H,04H
DB 058H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0840FH
DD cfa_SkipUpTo+039H-$-4
call cfa_greatIN+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,0C8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SkipWord',cfa_SkipWord
 
DB 090H
call cfa_OnNotDelimiter+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_SkipWord+023H-$-4
call cfa_greatIN+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,0DEH
DB 0C3H
AHEADER 0 ,'OnNotDelimiter',cfa_OnNotDelimiter
 
call cfa_GetChar+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_IsDelimiter+00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SkipDelimiters',cfa_SkipDelimiters
 
DB 090H
call cfa_OnDelimiter+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_SkipDelimiters+023H-$-4
call cfa_greatIN+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,0DEH
call cfa_greatIN+00H
DB 08BH,00H
call cfa_greatIN_WORD+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'OnDelimiter',cfa_OnDelimiter
 
call cfa_GetChar+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_IsDelimiter+00H
DB 023H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'GetChar',cfa_GetChar
 
call cfa_EndOfChunk+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_GetChar+01EH
DB 074H,0FH
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_FALSE+00H
DB 0EBH,0AH
call cfa_PeekChar+00H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'IsDelimiter',cfa_IsDelimiter
 
call cfa_BL+00H
DB 08DH,040H,01H
DB 039H,045H,00H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'PeekChar',cfa_PeekChar
 
call cfa_CharAddr+00H
DB 0FH,0B6H,00H
DB 0C3H
AHEADER 0 ,'CharAddr',cfa_CharAddr
 
call cfa_SOURCE+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_greatIN+00H
DB 08BH,00H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'EndOfChunk',cfa_EndOfChunk
 
call cfa_greatIN+00H
DB 08BH,00H
call cfa_SOURCE+00H
DB 039H,045H,04H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SOURCE!',cfa_SOURCEsave
 
call cfa_nTIB+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TIB+09H
call cfa_greatIN+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SOURCE',cfa_SOURCE
 
call cfa_TIB+00H
call cfa_nTIB+00H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'C/L',cfa_C_divL
 
call cfa__CONSTANTminusCODE+00H
DD 0200H
call cfa__TOVALUEminusCODE+00H
AHEADER 1 ,'>r',cfa_greatr
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusgreatR+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 1 ,'r>',cfa_rgreat
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusRgreat+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 0 ,'>RESOLVE',cfa_greatRESOLVE
 
DB 03DH
DD 01H
;jne cfa_greatRESOLVE+014H
DB 075H,0DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_greatRESOLVE1+00H
DB 0EBH,022H
DB 03DH
DD 02H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_greatRESOLVE+031H
DB 074H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF829H
DB 08DH,06DH,0FCH
call cfa_THROW+00H
call cfa_greatRESOLVE1+00H
DB 0C3H
AHEADER 0 ,'>RESOLVE1',cfa_greatRESOLVE1
 
call cfa_HERE+00H
DB 08BH,04DH,00H
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'>ORESOLVE',cfa_greatORESOLVE
 
DB 03DH
DD 01H
;jne cfa_greatORESOLVE+014H
DB 075H,0DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_greatORESOLVE1+00H
DB 0EBH,022H
DB 03DH
DD 02H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_greatORESOLVE+031H
DB 074H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF829H
DB 08DH,06DH,0FCH
call cfa_THROW+00H
call cfa_greatORESOLVE1+00H
DB 0C3H
AHEADER 0 ,'>ORESOLVE1',cfa_greatORESOLVE1
 
call cfa_queSET+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+09H
DB 08BH,04DH,00H
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_RESOLVE_OPT+00H
DB 0C3H
AHEADER 0 ,'<MARK',cfa_lessMARK
 
call cfa_HERE+00H
DB 0C3H
AHEADER 0 ,'>MARK',cfa_greatMARK
 
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+09H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'",',cfa_dticcom
 
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_Sdticcom+00H
DB 0C3H
AHEADER 0 ,'CLIT,',cfa_CLITcom
 
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_PAD+00H
call cfa_dolsave+00H
call cfa_CLITERALminusCODE+00H
call cfa__COMPILEcom+00H
call cfa_PAD+00H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_Sdticcom+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0C3H
AHEADER 0 ,'SLIT,',cfa_SLITcom
 
call cfa_SLITERALminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_Sdticcom+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0C3H
AHEADER 0 ,'S",',cfa_Sdticcom
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_Scom+00H
DB 0C3H
AHEADER 0 ,'S,',cfa_Scom
 
call cfa_DP+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_CMOVE+00H
DB 0C3H
AHEADER 0 ,'?BRANCH,',cfa_queBRANCHcom
 
call cfa_queSET+00H
DB 089H,045H,0FCH
DB 0B8H
DD 084H
DB 08DH,06DH,0FCH
call cfa_J_COD+09H
call cfa_quequequeBRminusOPT+00H
call cfa_SetJP+00H
call cfa_SetOP+00H
call cfa_J_COD+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_Ccom+00H
DB 0BH,0C0H
;je cfa_queBRANCHcom+054H
DB 074H,012H
call cfa_DP+00H
DB 08BH,00H
DB 08DH,040H,04H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_com+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+09H
DB 0C3H
AHEADER 0 ,'RLIT,',cfa_RLITcom
 
DB 089H,045H,0FCH
DB 0B8H
DD 068H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'DLIT,',cfa_DLITcom
 
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_LITcom+00H
call cfa_LITcom+00H
DB 0C3H
AHEADER 0 ,'LIT,',cfa_LITcom
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_DUP+00H
call cfa_INLINEcom+00H
call cfa_OPT_INIT+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_OPT+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
AHEADER 0 ,'RET,',cfa_RETcom
 
call cfa_queSET+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C3H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_OPT+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
AHEADER 0 ,'BRANCH,',cfa_BRANCHcom
 
call cfa_queSET+00H
call cfa_SetOP+00H
call cfa_SetJP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E9H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0BH,0C0H
;je cfa_BRANCHcom+035H
DB 074H,012H
call cfa_DP+00H
DB 08BH,00H
DB 08DH,040H,04H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_com+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+09H
DB 0C3H
AHEADER 0 ,'COMPILE,',cfa_COMPILEcom
 
call cfa_CONgreatLIT+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_COMPILEcom+02AH
DB 074H,01BH
call cfa_INLINEque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_COMPILEcom+025H
DB 074H,07H
call cfa_INLINEcom+00H
DB 0EBH,05H
call cfa__COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'_COMPILE,',cfa__COMPILEcom
 
call cfa_queSET+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E8H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_DP+00H
DB 08BH,00H
DB 08DH,040H,04H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_com+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+09H
DB 0C3H
AHEADER 0 ,'HERE',cfa_HERE
 
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+09H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_JminusSET+09H
DB 0C3H
AHEADER 0 ,'RESOLVE_OPT',cfa_RESOLVE_OPT
 
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_RESOLVE_OPT+016H
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
call cfa_J_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_RESOLVE_OPT+02CH
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,040H,0FCH
DB 08DH,06DH,0FCH
call cfa_JP0+00H
call cfa_JpBuffSize+00H
DB 03H,045H,00H
DB 08DH,040H,0FCH
DB 08BH,00H
DB 03BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jbe cfa_RESOLVE_OPT+075H
DB 076H,023H
DB 089H,045H,0FCH
DB 08DH,040H,0FCH
DB 089H,045H,0F8H
DB 08BH,00H
DB 03H,045H,0F8H
DB 08DH,040H,04H
DB 08DH,06DH,0FCH
call cfa_JminusSET+00H
call cfa_UMAX+00H
call cfa_JminusSET+09H
call cfa_DP+00H
DB 08BH,00H
DB 08BH,04DH,00H
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 07EH
DB 03BH,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jge cfa_RESOLVE_OPT+09EH
DB 07DH,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_RESOLVE_OPT+0C1H
DB 074H,0CH
call cfa_queSET+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_RESOLVE_OPT+0D7H
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 08DH,040H,04H
call cfa_OP0+00H
DB 090H
DB 090H
call cfa_Jque_STEP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_RESOLVE_OPT+0E1H
DB 074H,0F1H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_RESOLVE_OPT+016FH
DB 074H,075H
DB 089H,045H,0FCH
DB 08BH,00H
DB 089H,045H,0F8H
DB 0FH,0B6H,00H
DB 03DH
DD 0E9H
DB 08BH,045H,0F8H
DB 08DH,06DH,0FCH
;jne cfa_RESOLVE_OPT+012EH
DB 075H,01CH
DB 089H,045H,0FCH
DB 0B8H
DD 0EBH
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08BH,055H,0FCH
DB 088H,010H
DB 0B8H
DD 03H
DB 0EBH,02FH
DB 089H,045H,0FCH
DB 0FH,0B7H,040H,01H
DB 089H,045H,0F8H
DB 0B8H
DD 010H
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_J_MOVE+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+09H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'J_OPT?',cfa_J_OPTque
 
call cfa__CONSTANTminusCODE+00H
DD 0FFFFFFFFH
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'J_MOVE',cfa_J_MOVE
 
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0840FH
DD cfa_J_MOVE+0E5H-$-4
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08BH,00H
DB 08BH,055H,0FCH
DB 089H,045H,0F8H
DB 089H,055H,0F4H
DB 0F7H,0D8H
DB 03H,045H,0F4H
DB 0F7H,0D8H
DB 089H,045H,0F4H
DB 08BH,045H,0F8H
DB 08DH,06DH,0F4H
call cfa_DP+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 0F7H,0D8H
DB 08DH,06DH,04H
call cfa_CMOVE+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08DH,06DH,08H
DB 0BBH
DD cfa_J_MOVE+0E5H
DB 03BH,045H,0F8H
;jne cfa_J_MOVE+077H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 0F7H,0D8H
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,055H,0F8H
DB 01H,010H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0E8H
DB 08BH,045H,0FCH
;jne cfa_J_MOVE+0D1H
DB 075H,01AH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0F8H
DB 01H,010H
DB 08BH,045H,0FCH
call cfa_CELL+00H
DB 01H,04H,024H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jno cfa_J_MOVE+087H
DB 071H,0A6H
DB 08DH,064H,024H,0CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_JP0+00H
call cfa_JpBuffSize+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_JP0+00H
DB 08DH,06DH,08H
DB 0BBH
DD cfa_J_MOVE+0210H
DB 03BH,045H,0F8H
;jne cfa_J_MOVE+0117H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 08BH,0CH,024H
DB 02BH,04CH,024H,04H
DB 08BH,09H
DB 0BH,0C9H
DW 0840FH
DD cfa_J_MOVE+01F8H-$-4
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
;jbe cfa_J_MOVE+01A7H
DB 076H,058H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,055H,0F8H
DB 01H,010H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_J__ld+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jae cfa_J_MOVE+01A5H
DB 073H,01AH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_J_plussave+00H
DB 0EBH,051H
DB 089H,045H,0FCH
DB 08BH,0CH,024H
DB 02BH,04CH,024H,04H
DB 08BH,09H
DB 033H,0C1H
DB 08BH,045H,0FCH
;je cfa_J_MOVE+01F8H
DB 074H,03EH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_J__ld+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_J_MOVE+01F8H
DB 076H,01CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_J_plussave+00H
call cfa_CELL+00H
DB 01H,04H,024H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0810FH
DD cfa_J_MOVE+0127H-$-4
DB 08DH,064H,024H,0CH
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 089H,045H,04H
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_dcomaminusSET+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_dcomaminusSET+09H
DB 0C3H
DB 0C3H
AHEADER 0 ,'J_+!',cfa_J_plussave
 
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 025H
DD 0F0H
DB 03DH
DD 070H
DB 08BH,045H,0FCH
;jne cfa_J_plussave+01DH
DB 075H,08H
DB 08DH,040H,01H
DB 0E9H
DD cfa_J_plussave+083H-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0EBH
DB 08BH,045H,0FCH
;jne cfa_J_plussave+035H
DB 075H,08H
DB 08DH,040H,01H
DB 0E9H
DD cfa_J_plussave+083H-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0E9H
DB 08BH,045H,0FCH
;jne cfa_J_plussave+04DH
DB 075H,08H
DB 08DH,040H,01H
DB 0E9H
DD cfa_J_plussave+083H-$-4
DB 089H,045H,0FCH
DB 0FH,0B7H,00H
DB 025H
DD 0F0FFH
DB 03DH
DD 0800FH
DB 08BH,045H,0FCH
;jne cfa_J_plussave+06AH
DB 075H,08H
DB 08DH,040H,02H
DB 0E9H
DD cfa_J_plussave+083H-$-4
call cfa__SLITERALminusCODE+00H
DB 08H
DB 'J_+! ERR',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'J?_STEP',cfa_Jque_STEP
 
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_JminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jb cfa_Jque_STEP+02AH
DB 072H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_Jque_STEP+053H
DB 075H,0EH
DB 08DH,06DH,04H
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,08H
DB 08BH,09H
DB 081H,0E1H
DD 0FFFFF0FFH
DB 081H,0F9H
DD 0800FH
;jne cfa_Jque_STEP+076H
DB 075H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,08H
DB 08BH,09H
DB 081H,0F9H
DD 0E9H
;jne cfa_Jque_STEP+093H
DB 075H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,040H,04H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
call cfa_OpBuffSize+00H
DB 03H,045H,00H
DB 03BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jae cfa_Jque_STEP+0C5H
DB 073H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 08BH,00H
DB 033H,0C2H
DB 0BH,0C0H
DB 08BH,045H,0FCH
;jne cfa_Jque_STEP+0E7H
DB 075H,011H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'CON>LIT',cfa_CONgreatLIT
 
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_CONgreatLIT+015H
DB 075H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_queSET+00H
call cfa_MM_SIZE+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_CONgreatLIT+02FH
DB 075H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0E8H
DB 08BH,045H,0FCH
;je cfa_CONgreatLIT+045H
DB 074H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,040H,01H
DB 089H,045H,0F8H
DB 08BH,00H
DB 03H,045H,0F8H
DB 08DH,040H,04H
DB 089H,045H,0F8H
DB 08DH,06DH,0F8H
call cfa_CREATEminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+092H
DB 075H,026H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OPT_INIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
call cfa_FORLITcom+00H
call cfa_FALSE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_USERminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+0FAH
DB 075H,052H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OPT_INIT+00H
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDUP_V+05H
DB 08DH,06DH,0FCH
call cfa__INLINEcom+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0878DH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_com+00H
call cfa_OPT+00H
call cfa_FALSE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_USERminusVALUEminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+0162H
DB 075H,052H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OPT_INIT+00H
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDUP_V+05H
DB 08DH,06DH,0FCH
call cfa__INLINEcom+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0878BH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_com+00H
call cfa_OPT+00H
call cfa_FALSE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_CONSTANTminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_CONgreatLIT+0201H-$-4
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OPT_INIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 05H
DB 03H,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,00H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_TOVALUEminusCODE+00H
DB 08DH,040H,0FCH
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+01EFH
DB 075H,031H
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDUP_V+05H
DB 08DH,06DH,0FCH
call cfa__INLINEcom+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_OPT+00H
DB 0EBH,07H
DB 08BH,00H
call cfa_FORLITcom+00H
call cfa_FALSE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,040H,01H
DB 089H,045H,0F8H
DB 08BH,00H
DB 03H,045H,0F8H
DB 08DH,040H,04H
DB 08DH,06DH,0FCH
call cfa_DOESminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+0256H
DB 075H,031H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
call cfa_OPT_INIT+00H
call cfa_FORLITcom+00H
call cfa_TRUE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_TOUSERminusVALUEminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+02B6H
DB 075H,04AH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OPT_INIT+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08789H
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
DB 08DH,040H,0FCH
DB 08BH,00H
call cfa_com+00H
call cfa_OPT+00H
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDROP_V+05H
DB 08DH,06DH,0FCH
call cfa__INLINEcom+00H
call cfa_FALSE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
call cfa_TOVALUEminusCODE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_CONgreatLIT+0308H
DB 075H,042H
call cfa_OPT_INIT+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A3H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 08DH,040H,0FCH
call cfa_com+00H
call cfa_OPT+00H
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDROP_V+05H
DB 08DH,06DH,0FCH
call cfa__INLINEcom+00H
call cfa_FALSE+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'FORLIT,',cfa_FORLITcom
 
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDUP_V+05H
DB 08DH,06DH,0FCH
call cfa__INLINEcom+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_OPT+00H
DB 0C3H
AHEADER 0 ,'OPT',cfa_OPT
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_NOOP+00H
call cfa_DO_OPT+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'???BR-OPT',cfa_quequequeBRminusOPT
 
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_quequequeBRminusOPT+01FH
DB 075H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0C00BH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
call cfa_FALSE+00H
call cfa_tilBRminusOPT+09H
DB 089H,045H,0FCH
DB 0A1H
DD cfa_ticDROP_V+05H
DB 08DH,06DH,0FCH
call cfa_quequeBRminusOPT+00H
call cfa_INLINEcom+00H
call cfa_TRUE+00H
call cfa_tilBRminusOPT+09H
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_quequequeBRminusOPT+0E8H-$-4
call cfa_OPT_INIT+00H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C00BH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0FCH
DB 050H
DB 083H,07DH,0FCH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_quequequeBRminusOPT+094H
DB 074H,0AH
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_NOOP+00H
call cfa_queBRminusOPT+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C00BH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0FCH
DB 058H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_quequequeBRminusOPT+0E3H
DB 074H,0AH
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
AHEADER 0 ,'??BR-OPT',cfa_quequeBRminusOPT
 
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_quequeBRminusOPT+01EH
DB 074H,0FH
call cfa_OPT_INIT+00H
call cfa_queBRminusOPT+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
AHEADER 0 ,'?BR-OPT',cfa_queBRminusOPT
 
DB 090H
call cfa_queBRminusOPTminusRULES+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queBRminusOPT+01H
DB 074H,0F1H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_NOOP+00H
call cfa_OPTminusRULES+00H
DB 0BH,0C0H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_queBRminusOPT+01H
DB 074H,0D6H
call cfa_BRminusEVENminusEAX+00H
call cfa_OP0+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queBRminusOPT+05DH
DB 076H,016H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C00BH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 025H
DD 0C7H
DB 089H,045H,0F8H
DB 0B8H
DD 05H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 040H
DB 033H,045H,0F4H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 048H
DB 033H,045H,0F4H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 03BH
DB 033H,045H,0F4H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 0BH
DB 033H,045H,0F4H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0F8H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 04000H
DB 0BH,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_ADDlXORlORlAND_equ+00H
DB 0F7H,0D0H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C01BH
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0D02BH
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 04539H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C083H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C203H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C133H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0F8C1H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 07D83H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 03D81H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 03C81H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 07C81H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 03D83H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 03C83H
DB 033H,045H,0F8H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,0FCH
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0240433H
DB 033H,045H,0FCH
DB 023H,045H,00H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;je cfa_queBRminusOPT+0277H
DB 074H,015H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C00BH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
DB 0C3H
AHEADER 0 ,'BR-EVEN-EAX',cfa_BRminusEVENminusEAX
 
call cfa_OFFminusEAX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_BRminusEVENminusEAX+03BH
DB 074H,02CH
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_OFFminusEAX+00H
call cfa_com+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_OFFminusEAX+09H
DB 0C3H
AHEADER 0 ,'?BR-OPT-RULES',cfa_queBRminusOPTminusRULES
 
call cfa_OP0+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queBRminusOPTminusRULES+01DH
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 05H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+070H
DB 075H,03CH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OFFminusEAX+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OFFminusEAX+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_queBRminusOPTminusRULES+0D3H-$-4
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+09H
call cfa_INLINEcom+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_NOOP+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,0FCH
call cfa_OFFminusEAX+00H
DB 083H,0E8H,01H
DB 01BH,0C0H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,00H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;je cfa_queBRminusOPTminusRULES+015DH
DB 074H,042H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 03D83H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OFFminusEAX+00H
DB 083H,0E8H,01H
DB 01BH,0C0H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 024048BH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_queBRminusOPTminusRULES+01C3H
DB 074H,033H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0243C83H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+021EH
DB 075H,02AH
DB 089H,045H,0FCH
DB 0B8H
DD 07D83H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+026CH
DB 075H,01DH
DB 089H,045H,0FCH
DB 0B8H
DD 0D00BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0408DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+02A0H
DB 075H,01DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C083H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0808DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+030BH
DB 075H,054H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TRUE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 01FF8C1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0386H
DB 075H,046H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08DH
DB 08DH,06DH,0FCH
call cfa_J_COD+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 023H,045H,0FCH
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_J_COD+09H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 035H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+03DAH
DB 075H,023H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0240433H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0432H
DB 075H,023H
DB 089H,045H,0FCH
DB 0B8H
DD 03BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04539H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+0471H
DB 075H,028H
DB 089H,045H,0FCH
DB 0B8H
DD 03BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_XC_J+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queBRminusOPTminusRULES+048EH
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C01BD8F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+04DEH
DB 075H,020H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01B01E883H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C01BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+055EH
DB 075H,035H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_J_COD+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 033H,045H,0FCH
call cfa_J_COD+09H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03BH
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFDH
DB 089H,045H,0FCH
DB 0B8H
DD 04539H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C01BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queBRminusOPTminusRULES+0633H
DB 075H,046H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 083H
DB 08DH,06DH,0FCH
call cfa_J_COD+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 023H,045H,0FCH
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_J_COD+09H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0240C8BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C13BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+06A3H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 043BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0240C8BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C133H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0713H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0433H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0C13BCA8BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+0760H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0C23BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C23BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+07CCH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0453BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C83B008BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0833H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 083BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D03B008BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+089AH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0103BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C13B008BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0906H
DB 075H,03CH
DB 089H,045H,0FCH
DB 0B8H
DD 083BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_XC_J+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C133H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0978H
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C23BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+09EAH
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 0453BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C83BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0A61H
DB 075H,042H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_XC_J+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0C23B008BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+0AB3H
DB 075H,03CH
DB 089H,045H,0FCH
DB 0B8H
DD 0103BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_XC_J+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 024448BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0B58H
DB 075H,055H
DB 089H,045H,0FCH
DB 0B8H
DD 07C81H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0244C8BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C83BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0BEBH
DB 075H,05AH
DB 089H,045H,0FCH
DB 0B8H
DD 0443BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_XC_J+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C83BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0C7AH
DB 075H,05AH
DB 089H,045H,0FCH
DB 0B8H
DD 053BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_XC_J+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 085048BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0D1FH
DB 075H,055H
DB 089H,045H,0FCH
DB 0B8H
DD 03C81H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0DAAH
DB 075H,03FH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 03D81H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C203H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0E2DH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0D02BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0C90BCA8BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+0E7AH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0D20BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03DFF408DH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0EE2H
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 048H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF9H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queBRminusOPTminusRULES+0EFFH
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0453BC033H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queBRminusOPTminusRULES+0F9EH
DB 075H,048H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_XC_J+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0453B008BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queBRminusOPTminusRULES+01022H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C23BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0453B008BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queBRminusOPTminusRULES+010A6H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C13BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04539H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_queBRminusOPTminusRULES+0118AH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04D89H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+01146H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C83BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 05589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queBRminusOPTminusRULES+0118AH
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0D03BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queBRminusOPTminusRULES+011A7H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 025H
DD 0FFFFFCFFH
DB 089H,045H,0FCH
DB 0B8H
DD 083C09C0FH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04801E083H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queBRminusOPTminusRULES+0124CH
DB 075H,053H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 010H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_J_COD+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 023H,045H,0FCH
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_J_COD+09H
call cfa_OP3+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF9H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04533H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queBRminusOPTminusRULES+0137AH-$-4
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queBRminusOPTminusRULES+0137AH
DB 075H,066H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_TRUE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF8H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'MACRO,',cfa_MACROcom
 
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 0 ,'INLINE,',cfa_INLINEcom
 
call cfa_OPT_INIT+00H
call cfa__INLINEcom+00H
call cfa_OPT_CLOSE+00H
DB 0C3H
AHEADER 0 ,'OPT_INIT',cfa_OPT_INIT
 
call cfa_queSET+00H
call cfa_minusEVENminusEBP+00H
DB 0C3H
AHEADER 0 ,'OPT_CLOSE',cfa_OPT_CLOSE
 
call cfa_EVENminusEBP+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_LASTminusHERE+09H
DB 0C3H
AHEADER 0 ,'XC_J',cfa_XC_J
 
call cfa_J_COD+00H
DB 025H
DD 0FEH
DB 03DH
DD 04H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_XC_J+018H
DB 075H,01H
DB 0C3H
call cfa_J_COD+00H
DB 08BH,0C8H
DB 081H,0E1H
DD 08H
;je cfa_XC_J+034H
DB 074H,0DH
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
DB 0EBH,0BH
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_J_COD+09H
DB 0C3H
AHEADER 0 ,'_INLINE,',cfa__INLINEcom
 
DB 090H
call cfa_DO_OPT+00H
DB 089H,045H,0FCH
DB 08BH,00H
DB 089H,045H,0F8H
DB 089H,045H,0F4H
DB 0B8H
DD 08BE08B5BH
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,0F8H
DB 0BH,0C0H
;je cfa__INLINEcom+058H
DB 074H,033H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 089H,045H,0F8H
DB 0C7H,045H,0F4H
DD 0E3FF046DH
DB 0B8H
DD 08D00458BH
DB 08DH,06DH,0F4H
call cfa_D_equ+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+09DH
DB 074H,03BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0A1H
DD cfa_ticDROP_V+05H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 0C3H
;jne cfa__INLINEcom+0B6H
DB 075H,07H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
call cfa_DUP5Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+0CFH
DB 074H,0AH
call cfa__5_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0E0H
DB 081H,0F9H
DD 040H
;jne cfa__INLINEcom+0E9H
DB 075H,0AH
call cfa__1_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0F4H
DB 081H,0F9H
DD 064H
;jne cfa__INLINEcom+0103H
DB 075H,0AH
call cfa__1_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 099H
;jne cfa__INLINEcom+0114H
DB 075H,0AH
call cfa__1_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 089H,045H,0FCH
DB 08BH,0C8H
DB 081H,0E1H
DD 0FCH
DB 081H,0F9H
DD 0ECH
;jne cfa__INLINEcom+0131H
DB 075H,0AH
call cfa__1_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0CDH
;jne cfa__INLINEcom+0142H
DB 075H,0AH
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0F0H
DB 081H,0F9H
DD 070H
;jne cfa__INLINEcom+015CH
DB 075H,0AH
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0E8H
;jne cfa__INLINEcom+016DH
DB 075H,0AH
call cfa__1A_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0E9H
;jne cfa__INLINEcom+017EH
DB 075H,0AH
call cfa__1A_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0FH,0B7H,00H
call cfa_DUP3Bque_xEBP_y+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+01A5H
DB 074H,0FH
call cfa__2_com_STEP+00H
call cfa_plusEBP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
call cfa_DUP3Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+01BEH
DB 074H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
call cfa_DUP2Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+01D7H
DB 074H,0AH
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0C48BH
;jne cfa__INLINEcom+01E8H
DB 075H,0AH
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0C58BH
;jne cfa__INLINEcom+01FEH
DB 075H,0FH
call cfa_EVENminusEBP+00H
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0EC87H
;jne cfa__INLINEcom+0214H
DB 075H,0FH
call cfa_EVENminusEBP+00H
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 06D8DH
;jne cfa__INLINEcom+0241H
DB 075H,026H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 03H,045H,0FCH
DB 0FH,0B6H,00H
call cfa_plusgreatOFFminusEBP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0C583H
;jne cfa__INLINEcom+026EH
DB 075H,026H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 03H,045H,0FCH
DB 0FH,0B6H,00H
call cfa_plusgreatOFFminusEBP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0ED83H
;jne cfa__INLINEcom+02A2H
DB 075H,02DH
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 03H,045H,0FCH
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
DB 0F7H,0D8H
call cfa_plusgreatOFFminusEBP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0C483H
;jne cfa__INLINEcom+02B3H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
call cfa_DUP6Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+02CCH
DB 074H,0AH
call cfa__6_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0E3FFH
;jne cfa__INLINEcom+02E2H
DB 075H,0FH
call cfa_EVENminusEBP+00H
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0D2FFH
;jne cfa__INLINEcom+02F8H
DB 075H,0FH
call cfa_EVENminusEBP+00H
call cfa__2_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0810FH
;jne cfa__INLINEcom+0309H
DB 075H,0AH
call cfa__2A_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 045C7H
;jne cfa__INLINEcom+0324H
DB 075H,014H
call cfa__2_com_STEP+00H
call cfa_plusEBP+00H
call cfa__4_com_STEP_+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 05C7H
;jne cfa__INLINEcom+0335H
DB 075H,0AH
call cfa_A_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0581H
;jne cfa__INLINEcom+0346H
DB 075H,0AH
call cfa_A_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 03DH
DD 0424448BH
;jne cfa__INLINEcom+03A0H
DB 075H,04BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 024H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 03H,045H,0FCH
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0424448DH
;jne cfa__INLINEcom+03E2H
DB 075H,03BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C4H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 03H,045H,0FCH
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 0C09D0FH
;jne cfa__INLINEcom+03FEH
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0C09E0FH
;jne cfa__INLINEcom+040FH
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 090048DH
;jne cfa__INLINEcom+0420H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 02048DH
;jne cfa__INLINEcom+0431H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 040B70FH
;jne cfa__INLINEcom+0442H
DB 075H,0AH
call cfa__4_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0240401H
;jne cfa__INLINEcom+0453H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0FFF8FFH
DB 081H,0F9H
DD 0B00FH
;jne cfa__INLINEcom+046DH
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 0244403H
;jne cfa__INLINEcom+047EH
DB 075H,0AH
call cfa__4_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 024442BH
;jne cfa__INLINEcom+048FH
DB 075H,0AH
call cfa__4_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 024448BH
;jne cfa__INLINEcom+04A0H
DB 075H,0AH
call cfa__4_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 085448BH
;jne cfa__INLINEcom+04B6H
DB 075H,0FH
call cfa__3_com_STEP+00H
call cfa_plusEBP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 024048BH
;jne cfa__INLINEcom+04C7H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 020488BH
;jne cfa__INLINEcom+04D8H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 020488DH
;jne cfa__INLINEcom+04E9H
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 021C8DH
;jne cfa__INLINEcom+04FAH
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 085048DH
;jne cfa__INLINEcom+050BH
DB 075H,0AH
call cfa__7_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 02404FFH
;jne cfa__INLINEcom+051CH
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
DB 03DH
DD 018B60FH
;jne cfa__INLINEcom+052DH
DB 075H,0AH
call cfa__3_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
call cfa_DUP7Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__INLINEcom+0546H
DB 074H,0AH
call cfa__7_com_STEP+00H
DB 0E9H
DD cfa__INLINEcom+01H-$-4
call cfa_HEX+00H
call cfa_Udot+00H
call cfa__SLITERALminusCODE+00H
DB 0BH
DB '@COD, ERROR',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'2A_,_STEP',cfa__2A_com_STEP
 
call cfa__2_com_STEP+00H
call cfa__0A_com_STEP+00H
DB 0C3H
AHEADER 0 ,'1A_,_STEP',cfa__1A_com_STEP
 
call cfa__1_com_STEP+00H
call cfa__0A_com_STEP+00H
DB 0C3H
AHEADER 0 ,'0A_,_STEP',cfa__0A_com_STEP
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,00H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_com+00H
DB 08DH,040H,04H
DB 0C3H
AHEADER 0 ,'A_,_STEP',cfa_A_com_STEP
 
call cfa__2_com_STEP+00H
call cfa__4_com_STEP_+00H
call cfa__4_com_STEP_+00H
DB 0C3H
AHEADER 0 ,'7_,_STEP',cfa__7_com_STEP
 
call cfa__3_com_STEP+00H
call cfa__4_com_STEP_+00H
DB 0C3H
AHEADER 0 ,'6_,_STEP',cfa__6_com_STEP
 
call cfa__2_com_STEP+00H
call cfa__4_com_STEP_+00H
DB 0C3H
AHEADER 0 ,'5_,_STEP',cfa__5_com_STEP
 
call cfa__1_com_STEP+00H
call cfa__4_com_STEP_+00H
DB 0C3H
AHEADER 0 ,'4_,_STEP',cfa__4_com_STEP
 
call cfa_SetOP+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__4_com_STEP_+00H
DB 0C3H
AHEADER 0 ,'4_,_STEP_',cfa__4_com_STEP_
 
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 08DH,040H,04H
DB 0C3H
AHEADER 0 ,'3_,_STEP',cfa__3_com_STEP
 
call cfa__2_com_STEP+00H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 08DH,040H,01H
DB 0C3H
AHEADER 0 ,'2_,_STEP',cfa__2_com_STEP
 
call cfa_SetOP+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0FH,0B7H,00H
call cfa_Wcom+00H
DB 08DH,040H,02H
DB 0C3H
AHEADER 0 ,'1_,_STEP',cfa__1_com_STEP
 
call cfa_SetOP+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0FH,0B6H,00H
call cfa_Ccom+00H
DB 08DH,040H,01H
DB 0C3H
AHEADER 0 ,'+EBP',cfa_plusEBP
 
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_CgreatS+00H
call cfa_OFFminusEBP+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_Ccom+00H
DB 08DH,040H,01H
DB 0C3H
AHEADER 0 ,'MACRO?',cfa_MACROque
 
call cfa_INLINEque+00H
DB 0C3H
AHEADER 0 ,'INLINE?',cfa_INLINEque
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 090H
DB 090H
DB 090H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa_MM_SIZE+00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 03BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jb cfa_INLINEque+036H
DB 072H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0C3H
DB 08DH,06DH,0FCH
;jne cfa_INLINEque+052H
DB 075H,0CH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TRUE+00H
DB 0C3H
call cfa_DUP5Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_INLINEque+072H-$-4
DB 0B8H
DD 05H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0EBH,097H
DB 08BH,0C8H
DB 081H,0E1H
DD 0F4H
DB 081H,0F9H
DD 040H
;jne cfa_INLINEque+090H
DB 075H,0EH
DB 08BH,045H,00H
DB 08DH,040H,01H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 099H
;jne cfa_INLINEque+0A5H
DB 075H,0EH
DB 08BH,045H,00H
DB 08DH,040H,01H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 089H,045H,0FCH
DB 08BH,0C8H
DB 081H,0E1H
DD 0FCH
DB 081H,0F9H
DD 0ECH
;jne cfa_INLINEque+0C6H
DB 075H,0EH
DB 08BH,045H,00H
DB 08DH,040H,01H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0CDH
;jne cfa_INLINEque+0DBH
DB 075H,0EH
DB 08BH,045H,00H
DB 08DH,040H,02H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0FH,0B7H,00H
call cfa_DUP3Bque_xEBP_y+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INLINEque+0103H
DB 074H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
call cfa_DUP3Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INLINEque+0122H
DB 074H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 06D8DH
;jne cfa_INLINEque+0139H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0C583H
;jne cfa_INLINEque+0150H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0ED83H
;jne cfa_INLINEque+0167H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
call cfa_DUP2Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INLINEque+0184H
DB 074H,0EH
DB 08BH,045H,00H
DB 08DH,040H,02H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0EC87H
;jne cfa_INLINEque+0199H
DB 075H,0EH
DB 08BH,045H,00H
DB 08DH,040H,02H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0C58BH
;jne cfa_INLINEque+01AEH
DB 075H,0EH
DB 08BH,045H,00H
DB 08DH,040H,02H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
call cfa_DUP6Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INLINEque+01CDH
DB 074H,010H
DB 0B8H
DD 06H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 045C7H
;jne cfa_INLINEque+01E4H
DB 075H,010H
DB 0B8H
DD 07H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 05C7H
;jne cfa_INLINEque+01FBH
DB 075H,010H
DB 0B8H
DD 0AH
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0581H
;jne cfa_INLINEque+0212H
DB 075H,010H
DB 0B8H
DD 0AH
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 03DH
DD 0424448BH
;jne cfa_INLINEque+0231H
DB 075H,010H
DB 0B8H
DD 04H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0424448DH
;jne cfa_INLINEque+0248H
DB 075H,010H
DB 0B8H
DD 04H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 08BE08B5BH
;jne cfa_INLINEque+0295H
DB 075H,046H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 03H
DB 03H,045H,0F8H
DB 08BH,050H,04H
DB 089H,055H,0F8H
DB 08BH,00H
DB 089H,045H,0F4H
DB 0C7H,045H,0F0H
DD 0E3FF046DH
DB 0B8H
DD 08D00458BH
DB 08DH,06DH,0F0H
call cfa_D_equ+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INLINEque+0295H
DB 074H,0CH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 0C09D0FH
;jne cfa_INLINEque+02B7H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 0C09E0FH
;jne cfa_INLINEque+02CEH
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 090048DH
;jne cfa_INLINEque+02E5H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 02048DH
;jne cfa_INLINEque+02FCH
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 040B70FH
;jne cfa_INLINEque+0313H
DB 075H,010H
DB 0B8H
DD 04H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0FFF8FFH
DB 081H,0F9H
DD 0B00FH
;jne cfa_INLINEque+0333H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 020488BH
;jne cfa_INLINEque+034AH
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 020488DH
;jne cfa_INLINEque+0361H
DB 075H,010H
DB 0B8H
DD 03H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 085448BH
;jne cfa_INLINEque+0378H
DB 075H,010H
DB 0B8H
DD 04H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 03DH
DD 02048DH
;jne cfa_INLINEque+038FH
DB 075H,010H
DB 0B8H
DD 04H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
call cfa_DUP7Bque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_INLINEque+03AEH
DB 074H,010H
DB 0B8H
DD 07H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_INLINEque+09H-$-4
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'DO_OPT',cfa_DO_OPT
 
call cfa_OPTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_DO_OPT+014H
DB 074H,05H
call cfa_OPT_+00H
DB 0C3H
AHEADER 0 ,'OPT_',cfa_OPT_
 
DB 090H
call cfa_OPTminusRULES+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPT_+01H
DB 074H,0F1H
call cfa_EVENminusEAX+00H
DB 0C3H
AHEADER 0 ,'-EVEN-EBP',cfa_minusEVENminusEBP
 
call cfa_OP0+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_minusEVENminusEBP+018H
DB 076H,01H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 06D8DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_minusEVENminusEBP+05CH
DB 075H,02DH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_plusgreatOFFminusEBP+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 0C3H
AHEADER 0 ,'OPT-RULES',cfa_OPTminusRULES
 
DB 090H
call cfa_OP0+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_OPTminusRULES+01EH
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0408DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+077H-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
call cfa_OFFminusEAX+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0EBH,08AH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
call cfa_tilBRminusOPT+00H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_OPTminusRULES+0DDH
DB 074H,03CH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OFFminusEAX+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0808DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0130H
DB 075H,03CH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OFFminusEAX+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OFFminusEAX+00H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C033H
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_OPTminusRULES+01ABH
DB 074H,051H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OFFminusEAX+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 03FFFFFH
DB 03DH
DD 05048DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+02A7H-$-4
call cfa_OP1+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0870FH
DD cfa_OPTminusRULES+0281H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0281H
DB 075H,068H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0C00000H
DB 089H,045H,0FCH
DB 0B8H
DD 016H
DB 08BH,0C8H
DB 08BH,045H,0FCH
DB 0D3H,0E8H
DB 08BH,0C8H
DB 08BH,045H,00H
DB 0D3H,0E0H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF9H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OFFminusEAX+00H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 01H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+0398H-$-4
call cfa_OFFminusEAX+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 01H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+031BH
DB 075H,027H
DB 089H,045H,0FCH
DB 0B8H
DD 0C033H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_OP1+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_OPTminusRULES+0338H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0398H
DB 075H,02CH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
call cfa_OFFminusEBP+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_OPTminusRULES+0398H
DB 076H,0AH
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0C3H
DB 08BH,045H,0FCH
;jne cfa_OPTminusRULES+041AH
DB 075H,072H
call cfa_OFFminusEBP+00H
DB 050H
DB 0B8H
DD 05555H
call cfa_DP+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_OP0+00H
call cfa_minusEBPCLR+00H
call cfa_OP0+00H
call cfa_minusEBPCLR+00H
call cfa_OP0+00H
call cfa_minusEBPCLR+00H
call cfa_OP0+00H
call cfa_minusEBPCLR+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+040EH
DB 074H,012H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_OFFminusEBP+09H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_OFFminusEBP+09H
call cfa_OFFminusEAX+00H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,00H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0840FH
DD cfa_OPTminusRULES+04F0H-$-4
call cfa_OFFminusEAX+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_SHORTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+04AFH
DB 074H,030H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 0418DH
DB 0B8H
DD 0C18BH
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_Ccom+00H
DB 0EBH,02EH
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 0828DH
DB 0B8H
DD 0C28BH
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_com+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_OFFminusEAX+09H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,040H,02H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C069H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+054FH
DB 075H,02AH
DB 089H,045H,0FCH
DB 0B8H
DD 080048DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0D28BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0576H
DB 075H,010H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 01004583H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+05B9H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 045FFH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_OPTminusRULES+05D6H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_quetilEAX+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFDH
DB 089H,045H,0FCH
DB 0B8H
DD 0244489H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 023H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 023H,045H,0FCH
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+0656H
DB 075H,020H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0408BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+06DEH
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 08B0889H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0711H
DB 075H,01DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 058H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_picqueEAX_equ+00H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0743H
DB 075H,06H
call cfa_queEAX_equRULES+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 04503C033H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0786H
DB 075H,02DH
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 048DC033H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0811H
DB 075H,075H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,040H,02H
DB 03DH
DD 085H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0811H
DB 075H,05DH
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_queCminusJMP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+0899H
DB 074H,079H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C3H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0899H
DB 075H,044H
call cfa_OP1+00H
DB 08BH,00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_SetJP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 038FFH
DB 03DH
DD 08DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+097FH-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 08BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+090DH
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFEFFH
DB 03DH
DD 0B60FH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+097FH
DB 075H,057H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
call cfa__2save+00H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+09F3H
DB 075H,037H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0458BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+09F3H
DB 075H,020H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+0B8BH-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0D8F7H
;jne cfa_OPTminusRULES+0A68H
DB 075H,049H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 0F7H,0D8H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 03DH
DD 0D0F7H
;jne cfa_OPTminusRULES+0AB8H
DB 075H,049H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 0F7H,0D0H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 03DH
DD 08BH
;jne cfa_OPTminusRULES+0AF6H
DB 075H,037H
DB 0B8H
DD 0A1H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 03DH
DD 085448BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0B8BH
DB 075H,074H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 08DH,04H,085H
DD 00H
DB 03H,045H,00H
DB 089H,045H,00H
DB 0B8H
DD 0458BH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+0C06H
DB 075H,023H
DB 089H,045H,0FCH
DB 0B8H
DD 02048DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+0C8BH
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0D18BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0408DH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 085048DH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0F8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0D0FH
DB 075H,046H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
DB 08DH,04H,085H
DD 00H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 085048DH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 02048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
DB 08DH,080H
DD 080H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFF00H
DB 023H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0DB1H
DB 075H,03AH
DB 089H,045H,0FCH
DB 0B8H
DD 08244H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0FFFDH
DB 03DH
DD 05589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+0E12H-$-4
call cfa_OP1+00H
DB 090H
DB 090H
DB 090H
call cfa_MOV_EDX__xEBP_y+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+0DD9H
DB 074H,0F1H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+0E12H
DB 074H,020H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06DF7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
call cfa_OFFminusEBP+00H
DB 03BH,045H,00H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+0EE2H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0E8F7H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0E7FFH
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0F5BH
DB 075H,05DH
call cfa_OFFminusEBP+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
DB 08DH,040H,04H
call cfa_OFFminusEBP+09H
call cfa_FALSE+00H
call cfa_OP1+00H
call cfa_minusEBPCLR+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+0F4FH
DB 074H,012H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_OFFminusEBP+09H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_OFFminusEBP+09H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0CA8BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 088048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0FB7H
DB 075H,023H
DB 089H,045H,0FCH
DB 0B8H
DD 090048DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0CA8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 090048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0101AH
DB 075H,010H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 08D0C8DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 01048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+010AEH
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 088048DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF9H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 090048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01128H
DB 075H,041H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 095H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 048DD9F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01192H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0C12BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0244C8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C12BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0121CH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0442BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C12BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+012A2H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 052BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A3H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01351H
DB 075H,060H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 05C7H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0244489H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+013E2H
DB 075H,03EH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_com+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C7H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01001H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01443H
DB 075H,02CH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 01501H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+014A4H
DB 075H,02CH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 01589H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 01501D08BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+014D7H
DB 075H,01DH
DB 089H,045H,0FCH
DB 0B8H
DD 0501H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A4CB60FH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C133H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01577H
DB 075H,052H
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A443200H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0850C8DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01189H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+015F1H
DB 075H,027H
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01489H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+016BDH-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0450BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+01679H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0453BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+016BDH
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C23BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0170FH
DB 075H,01DH
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0176EH
DB 075H,010H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+017D9H
DB 075H,010H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0501D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+0181CH
DB 075H,010H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+018DBH
DB 075H,070H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 05C7H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01952H
DB 075H,042H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0B9H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 03H
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D9F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+019CAH
DB 075H,043H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 0F7H,0D8H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0F7FFH
DB 089H,045H,0FCH
DB 0B8H
DD 0E0D3H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01A5CH
DB 075H,03EH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C1H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 085048BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01B04H
DB 075H,06FH
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 08DH,04H,085H
DD 00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C033H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 085048BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01B7CH
DB 075H,03FH
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,055H,00H
DB 01H,010H
DB 0B8H
DD 0A1H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0F7FFH
DB 089H,045H,0FCH
DB 0B8H
DD 0E0C1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01C21H
DB 075H,06BH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0800H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+01BF2H
DB 074H,0CH
DB 08BH,0C8H
DB 08BH,045H,00H
DB 0D3H,0E8H
DB 08DH,06DH,04H
DB 0EBH,0AH
DB 08BH,0C8H
DB 08BH,045H,00H
DB 0D3H,0E0H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0CA8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C12BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01C97H
DB 075H,027H
DB 089H,045H,0FCH
DB 0B8H
DD 0C22BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_OPTminusRULES+01CB4H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8F7H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04501H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01D16H
DB 075H,02DH
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 029H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503D8F7H
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+01D90H
DB 075H,046H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0452BH
DB 0BH,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
call cfa_ADDlXORlORlAND_equ+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_OPTminusRULES+02200H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+01F81H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0878BH
;jne cfa_OPTminusRULES+01E67H
DB 075H,068H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 08700H
DB 03H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 03DH
DD 0458BH
;jne cfa_OPTminusRULES+01EB5H
DB 075H,047H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04500H
DB 03H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 0B8H
;jne cfa_OPTminusRULES+01F0CH
DB 075H,045H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 08DH,040H,02H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 03DH
DD 0A1H
;jne cfa_OPTminusRULES+01F7BH
DB 075H,068H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0500H
DB 03H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0203CH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 0C300H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
call cfa_EXECUTE+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+020AFH
DB 075H,036H
DB 089H,045H,0FCH
DB 0B8H
DD 0C1H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
call cfa_minusEBPLIT+00H
DB 089H,045H,00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;je cfa_OPTminusRULES+02165H
DB 074H,056H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04503H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+02165H
DB 075H,03FH
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OFFminusEAX+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OFFminusEAX+09H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+02200H
DB 075H,055H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 08DH,040H,02H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 02H
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0558BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+022C8H-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
call cfa_minusEBPLIT+00H
DB 089H,045H,00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;je cfa_OPTminusRULES+022C2H
DB 074H,047H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08BH,00H
DB 089H,045H,04H
DB 0B8H
DD 03H
DB 03H,045H,04H
DB 08BH,00H
DB 08DH,06DH,08H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04539H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+024B3H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+0234DH
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0D03BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+02403H
DB 075H,05EH
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+024B3H
DB 075H,058H
DB 089H,045H,0FCH
DB 0B8H
DD 053BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B7H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0458BH
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+027EDH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0408DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+02556H
DB 075H,039H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05089H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_OPTminusRULES+02573H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+027EDH-$-4
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+02684H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0262CH
DB 075H,05EH
DB 089H,045H,0FCH
DB 0B8H
DD 0A3H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF8H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0878DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+02684H
DB 075H,041H
call cfa_OP3+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08789H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 045C7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+027EDH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+02749H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFC000H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF9H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0878DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+027EDH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 087C7H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP3+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF8H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 085048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+028A1H
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 048DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_queChEAX+00H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+0295DH
DB 075H,036H
DB 089H,045H,0FCH
DB 0B8H
DD 0D1H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 08BC28BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+029AAH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 028BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0C3H
DB 08BH,045H,0FCH
;jne cfa_OPTminusRULES+02A26H
DB 075H,06CH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D18BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+02A26H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0889H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06DF7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+02B76H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 045C7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+02B0EH
DB 075H,05BH
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 0F7H,06DH,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+02B76H
DB 075H,051H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 069H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06DF7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+02D25H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+02C5BH
DB 075H,058H
DB 089H,045H,0FCH
DB 0B8H
DD 02DF7H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 045C7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+02D25H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 01H,010H
DB 0B8H
DD 02DF7H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503008BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+02DB9H
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0CA8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 051H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+02E5AH
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 075FFH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFBFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 024048BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+02F0EH
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_queChEAX+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_OPTminusRULES+02F98H
DB 075H,020H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 025H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPTminusRULES+03064H
DB 075H,056H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
call cfa_ADDlXORlORlAND_equ+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_OPTminusRULES+033D9H-$-4
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 090H
DB 090H
call cfa_queEAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+0309DH
DB 074H,0F1H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_OPTminusRULES+0315DH-$-4
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+030D5H
DB 074H,0AH
call cfa_ECXdcoma_equEAX+00H
DB 0E9H
DD cfa_OPTminusRULES+030E4H-$-4
call cfa_EAXgreatECX0+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+030D5H
DB 074H,0F1H
DB 090H
call cfa_EAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+030E5H
DB 074H,0F1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04503H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+03130H
DB 075H,01FH
DB 089H,045H,0FCH
DB 0B8H
DD 01048DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0EBH,027H
DB 089H,045H,0FCH
DB 0B8H
DD 0C1H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 090H
DB 090H
call cfa_queEAXgreatEBX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+03179H
DB 074H,0F1H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_OPTminusRULES+032BCH-$-4
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+031B1H
DB 074H,0AH
call cfa_EBXdcoma_equEAX+00H
DB 0E9H
DD cfa_OPTminusRULES+031C0H-$-4
call cfa_EAXgreatEBX0+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+031B1H
DB 074H,0F1H
DB 090H
call cfa_EAXgreatEBX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_OPTminusRULES+031C1H
DB 074H,0F1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04503H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0320FH
DB 075H,022H
DB 089H,045H,0FCH
DB 0B8H
DD 03048DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0E9H
DD cfa_OPTminusRULES+032B6H-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04539H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0324FH
DB 075H,029H
DB 089H,045H,0FCH
DB 0B8H
DD 0C33BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0EBH,067H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0453BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+0328FH
DB 075H,029H
DB 089H,045H,0FCH
DB 0B8H
DD 0D83BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0EBH,027H
DB 089H,045H,0FCH
DB 0B8H
DD 0C3H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 04503D8F7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+033D9H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0458BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+03355H
DB 075H,068H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 02BH
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0A1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_OPTminusRULES+033D9H
DB 075H,06DH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02BH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0FFFDH
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0FFFDH
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+0344FH-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0458BC28BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+03479H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 0B9H
DD 0B9H
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 0FEH
DB 023H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01189H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0353DH-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0BAH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+03501H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 01C7H
DB 08DH,06DH,0FCH
DB 0E9H
DD cfa_OPTminusRULES+0350CH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 01589H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+035C8H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 08D0C8DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03658H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 04C7H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 085048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+036E0H-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 08D048DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+037B7H-$-4
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 024448BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03871H-$-4
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D9F7CA8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,040H,0FFH
DB 089H,045H,0FCH
DB 0B8H
DD 01048DD9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+038F3H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02048DDAH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7D08BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0393BH-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05501H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04513H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03A20H-$-4
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 04581H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 024448BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0244489H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03B1FH-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 08901408DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+03ADEH-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 089FF408DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+03B1FH-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04CFFH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0408DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0244403H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0B60FH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03BEEH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0548BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0244B60FH
DB 08DH,06DH,0FCH
call cfa_com+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8F7H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D0F7H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 058H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C123H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
call cfa_ADDlXORlORlAND_equ+00H
DB 083H,0E8H,01H
DB 01BH,0C0H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+03D0AH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0C2H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89C82BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03D93H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 04529H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03E1DH-$-4
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03EA5H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 04D8BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_SHORTque+00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03F5DH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0428DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0428DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+03FEAH-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04583H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_queEDX__xEBP_y+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04095H-$-4
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 095048DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 095048BH
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0413DH-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 085H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E1C1CA8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C10BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+041CDH-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E2C1H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0878DD08BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01088H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04248H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,040H,02H
DB 089H,045H,0FCH
DB 0B8H
DD 09788H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0878DH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589D98BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C323H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+042C1H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C123H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 023F05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0433AH-$-4
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04523H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BF04523H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+043E0H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0450BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04523H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0447BH-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C223H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04523H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04516H-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C123H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_CgreatS+00H
call cfa_OFFminusEBP+00H
DB 039H,045H,00H
DB 01BH,0C0H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BC123H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+045C8H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0450BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C123CA8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0450BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04641H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C223H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C10BCA23H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C10BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+046ECH-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05523H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0528DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0479DH-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04583H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E0D3H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C20BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0484DH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 045H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04913H-$-4
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 01048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+049ACH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C22BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04A53H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0452BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 02048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04B36H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06DF7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04C52H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E9F7H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0AF0FH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04D46H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C103H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06DF7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+04DEDH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0EAF7H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_OPTminusRULES+04E0EH-$-4
call cfa_TRUE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0D08BC28BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+04E38H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0453BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+05124H-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 025H
DD 0FFFCFFH
DB 03DH
DD 0C09C0FH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+05124H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+04F67H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 02H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0300H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+05124H-$-4
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+05053H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 053BH
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 03H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0300H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 045C7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OPTminusRULES+05124H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 03D81H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP3+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 03H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0458B1089H
DB 033H,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 05H
DB 03H,045H,0F4H
DB 08BH,00H
DB 089H,045H,0F4H
DB 0B8H
DD 0C3086D8DH
DB 033H,045H,0F4H
DB 0BH,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D18BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+0519CH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0889H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 08DH,040H,02H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 090048DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+05296H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 085048DH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+053D5H-$-4
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_DO_EAXgreatECX+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 089H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 055H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_Ccom+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C033H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04581H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04513H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05497H-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D083H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0552BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05586H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D02BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,04H
call cfa_ALLOT+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
call cfa_queEDX__xEBP_y+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_queEDX__xEBP_y+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05641H-$-4
call cfa_OP2+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D03H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05733H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C803H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+057DEH-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP2+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0158BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0428DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05908H-$-4
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP2+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D18BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP4+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_OPTminusRULES+05929H-$-4
call cfa_TRUE+00H
DB 0C3H
call cfa_OP4+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BC88BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0F7FFH
DB 089H,045H,0FCH
DB 0B8H
DD 0E0D3H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP4+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0850FH
DD cfa_OPTminusRULES+05A23H-$-4
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 012H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_OP4+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP4+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP4+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFF4H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 082448DH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0889H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05A97H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 04C89H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP4+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP4+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C203D8F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05BAFH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 04DH
DB 08DH,06DH,0FCH
call cfa_OP4+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 0D08BH
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C103D8F7H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP4+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D8BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05C3FH-$-4
call cfa_OP3+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0CA8BH
DB 08DH,06DH,0FCH
call cfa_OP4+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0EAF7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04503H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_OPTminusRULES+05D6FH-$-4
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0AF0FH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D2H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 0C203H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP5+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_OPTminusRULES+05D90H-$-4
call cfa_TRUE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'?C-JMP',cfa_queCminusJMP
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'?EAX=RULES',cfa_queEAX_equRULES
 
DB 090H
call cfa_OP1+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+01EH
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
call cfa_queChEAX+00H
DB 083H,0E8H,01H
DB 01BH,0C0H
call cfa_tilBRminusOPT+00H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0840FH
DD cfa_queEAX_equRULES+04FH-$-4
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 0EBH,0B2H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0FC458B58H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+092H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0424648DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0870FH
DD cfa_queEAX_equRULES+02BCH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0245H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 03DH
DD 0240401H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+017BH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 0240481H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 02H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa__2save+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0C7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0245H-$-4
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 05C7H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 05H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa__2save+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
call cfa_queChEAX+00H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01501H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01589H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queEAX_equRULES+02BCH
DB 075H,010H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0458BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+066CH-$-4
call cfa_OP1+00H
DB 090H
call cfa_XX_STEP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+02DDH
DB 074H,0F1H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+0316H
DB 074H,020H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_DO_EAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+032BH
DB 074H,06H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_queEAXgreatEBX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+0345H
DB 074H,0F1H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queEAX_equRULES+03C2H-$-4
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+037DH
DB 074H,0AH
call cfa_EBXdcoma_equEAX+00H
DB 0E9H
DD cfa_queEAX_equRULES+038CH-$-4
call cfa_EAXgreatEBX0+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+037DH
DB 074H,0F1H
DB 090H
call cfa_EAXgreatEBX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+038DH
DB 074H,0F1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_dcomaminusSET+00H
call cfa_OP2+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_queEAX_equRULES+066CH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0889H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queEAX_equRULES+0462H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 050H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queEAX_equRULES+04F7H
DB 075H,03DH
DB 089H,045H,0FCH
DB 0B8H
DD 050H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFAH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0582H
DB 075H,03CH
call cfa_OP2+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C7H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_dcomaminusSET+00H
call cfa_OP4+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_queEAX_equRULES+066CH-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP4+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP4+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;jne cfa_queEAX_equRULES+066CH
DB 075H,027H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04889H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_queEAX_equRULES+07EAH-$-4
call cfa_OP1+00H
call cfa_queEAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+06C2H
DB 074H,0AH
call cfa_TqueEAXgreatECX+00H
DB 0E9H
DD cfa_queEAX_equRULES+0785H-$-4
DB 08DH,040H,0FCH
call cfa_queOPlast+00H
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 039H,045H,00H
DB 01BH,0C0H
DB 089H,045H,00H
DB 058H
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_queEAX_equRULES+0701H
DB 074H,015H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0E9H
DD cfa_queEAX_equRULES+0785H-$-4
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,040H,0FCH
DB 08BH,00H
DB 08DH,040H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0772H
DB 075H,040H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 025H
DD 0FDH
DB 089H,045H,0F8H
DB 0B8H
DD 0A1H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_queEAX_equRULES+0760H
DB 074H,07H
call cfa_FqueEAXgreatECX+00H
DB 0EBH,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0EBH,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 083H,0C4H,04H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queEAX_equRULES+06A9H-$-4
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queEAX_equRULES+07EAH-$-4
DB 08DH,040H,0FCH
DB 090H
call cfa_EAXgreatECX0+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+07A5H
DB 074H,0F1H
DB 090H
call cfa_EAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+07B5H
DB 074H,0F1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFBH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 058H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_queEAX_equRULES+0952H-$-4
call cfa_OP1+00H
DB 090H
DB 090H
call cfa_queEAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+0842H
DB 074H,0AH
call cfa_TqueEAXgreatECX+00H
DB 0E9H
DD cfa_queEAX_equRULES+08C7H-$-4
DB 08DH,040H,0FCH
call cfa_queOPlast+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 039H,045H,00H
DB 01BH,0C0H
DB 0BH,045H,04H
DB 089H,045H,04H
DB 08BH,045H,08H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,00H
DB 025H
DD 0FF00FFH
DB 089H,045H,00H
DB 0B8H
DD 024008BH
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
;je cfa_queEAX_equRULES+08A1H
DB 074H,012H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0EBH,026H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 050H
DB 08BH,045H,0FCH
;jne cfa_queEAX_equRULES+08BFH
DB 075H,0CH
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0EBH,08H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queEAX_equRULES+0829H-$-4
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queEAX_equRULES+0952H-$-4
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OPexcise+00H
DB 08DH,040H,0FCH
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+090CH
DB 074H,0AH
call cfa_ECXdcoma_equEAX+00H
DB 0E9H
DD cfa_queEAX_equRULES+091CH-$-4
DB 090H
call cfa_EAXgreatECX0+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+090DH
DB 074H,0F1H
DB 090H
call cfa_EAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAX_equRULES+091DH
DB 074H,0F1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 024048B50H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0978H
DB 075H,010H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 095048BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+09FBH
DB 075H,030H
call cfa_OP1+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 085H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0A64H
DB 075H,010H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+0A81H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0A3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0D84H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0B2AH
DB 075H,077H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 05C7H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0C033H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0BEFH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 05C7H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,04H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 08H
DB 03H,045H,0FCH
call cfa_OP1+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+0C0CH
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_queEAX_equRULES+0D7EH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 025H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0D09H-$-4
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0AH
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02581H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0408DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0D7EH
DB 075H,05EH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,040H,02H
DB 03DH
DD 0FFH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0D7EH
DB 075H,046H
call cfa_OP3+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0DFFH
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0E0FH
DB 075H,056H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 03D81H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0E98H
DB 075H,072H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0E98H
DB 075H,05BH
DB 089H,045H,0FCH
DB 0B8H
DD 068H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa__2save+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0F7EH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+0F7EH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 02H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa__2save+00H
call cfa_OP1+00H
call cfa_ToOP0+00H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0FE0H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0878DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01042H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 08D048DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+010A2H
DB 075H,027H
DB 089H,045H,0FCH
DB 0B8H
DD 01489H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 08D1489H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0111CH
DB 075H,027H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0489H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+011BFH
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C033H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01260H
DB 075H,06CH
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,055H,00H
DB 01H,010H
DB 0B8H
DD 045C7H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7D08BH
DB 033H,045H,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+012A4H
DB 075H,010H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01088H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01351H
DB 075H,05EH
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 0FH,0B6H,00H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C6H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0808DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C6H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+013DEH
DB 075H,058H
DB 089H,045H,0FCH
DB 0B8H
DD 080C6H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 0B8H
DD 01H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D18BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01454H
DB 075H,027H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0889H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 024448BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0F7FFH
DB 089H,045H,0FCH
DB 0B8H
DD 044FFH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+014A2H
DB 075H,010H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 021C8DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01517H
DB 075H,03CH
call cfa_OP2+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 09A8DH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 09A8DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+015C1H
DB 075H,075H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BBH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BC00BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01622H
DB 075H,02DH
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BD20BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D18BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+016B3H
DB 075H,027H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0501D08BH
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0589D08BH
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 0BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0172CH
DB 075H,010H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 01589D08BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+0175FH
DB 075H,01DH
DB 089H,045H,0FCH
DB 0B8H
DD 0589H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0408DH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BC88BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+017BAH
DB 075H,027H
DB 089H,045H,0FCH
DB 0B8H
DD 0488DH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
call cfa_queChEAX+00H
call cfa_OP2+00H
DB 08BH,00H
call cfa_picqueEAX_equ+00H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01808H
DB 075H,010H
call cfa_OP2+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_queEDX__xEBP_y+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+018A0H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 09788D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+018FAH
DB 075H,027H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08788H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 050H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 048BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0195AH
DB 075H,010H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+01977H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0C28BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+019D2H
DB 075H,044H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04589H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queEAX_equRULES+019D2H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 01000H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0408DC48BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01A52H
DB 075H,04CH
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,055H,00H
DB 01H,010H
DB 0B8H
DD 024648D00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,0FFH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0C88BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_queEAX_equRULES+01B7BH-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0428DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01B1FH
DB 075H,048H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0528DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP5+00H
DB 08BH,00H
call cfa_JminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;ja cfa_queEAX_equRULES+01B7BH
DB 077H,045H
call cfa_OP5+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 033H,045H,0FCH
call cfa_OP4+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0840FH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01B7BH
DB 075H,010H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C103D8F7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01C22H
DB 075H,03EH
call cfa_OP3+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C82BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C82BD08BH
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01C9BH
DB 075H,02AH
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0C3H
DB 08BH,045H,0FCH
;jne cfa_queEAX_equRULES+01C8BH
DB 075H,0AH
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0418DD08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01D4CH
DB 075H,048H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0498DH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04D89H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
call cfa_queEDX__xEBP_y+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_queEDX__xEBP_y+00H
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01DF4H
DB 075H,02DH
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458B1001H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+01E7EH
DB 075H,03CH
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 081H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 081H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_queEAX_equRULES+01F4DH-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,00H
call cfa_OP1+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0581H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 045C7H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B9H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_queEAX_equRULES+02058H-$-4
call cfa_OP2+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 03H,045H,0FCH
DB 08BH,00H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0B8H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP2+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+02075H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0A1H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+02118H
DB 075H,053H
call cfa_OP3+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0158BH
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 058H
DB 033H,045H,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,00H
DB 025H
DD 0FFFFFFH
DB 089H,045H,0FCH
DB 0B8H
DD 0FF408DH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 050H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+021A3H
DB 075H,037H
DB 089H,045H,0FCH
DB 0B8H
DD 0240CFFH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BD08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C28BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+02254H
DB 075H,048H
call cfa_OP3+00H
call cfa_OPexcise+00H
call cfa_OP0+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 05589H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0C3H
DB 033H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D08BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01089H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0458BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+02317H
DB 075H,03EH
call cfa_OP3+00H
call cfa_OPexcise+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0558BH
DB 08DH,06DH,0FCH
call cfa_OP2+00H
DB 08BH,00H
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0289H
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_OP4+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+02334H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP5+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAX_equRULES+02351H
DB 076H,06H
call cfa_TRUE+00H
DB 0C3H
call cfa_OP5+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0B8H
DB 033H,045H,0FCH
call cfa_OP4+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP3+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04589H
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP2+00H
DB 08BH,00H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BAH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D02BH
DB 033H,045H,0FCH
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAX_equRULES+0240AH
DB 075H,033H
call cfa_OP5+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,00H
DB 0F7H,0D8H
call cfa_OP2+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_OPexcise+00H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'FPOP',cfa_FPOP
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'DO_EAX>ECX',cfa_DO_EAXgreatECX
 
call cfa_OP1+00H
call cfa_queEAXgreatECX+00H
DB 0BH,0C0H
DW 0850FH
DD cfa_DO_EAXgreatECX+0104H-$-4
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_DO_EAXgreatECX+036H
DB 074H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_DO_EAXgreatECX+05AH
DB 076H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 04D89H
DB 08BH,045H,0FCH
DW 0850FH
DD cfa_DO_EAXgreatECX+0FCH-$-4
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_DO_EAXgreatECX+0EAH
DB 075H,054H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_quetilEAX+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C18BH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
call cfa_Wsave+00H
call cfa_OP0+00H
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0EBH,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0EBH,08H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_DO_EAXgreatECX+05H-$-4
DB 089H,045H,0FCH
DB 050H
DB 083H,07DH,0FCH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_DO_EAXgreatECX+0180H-$-4
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_DO_EAXgreatECX+0141H
DB 074H,0AH
call cfa_ECXdcoma_equEAX+00H
DB 0E9H
DD cfa_DO_EAXgreatECX+0150H-$-4
call cfa_EAXgreatECX0+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_DO_EAXgreatECX+0141H
DB 074H,0F1H
DB 090H
call cfa_EAXgreatECX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_DO_EAXgreatECX+0151H
DB 074H,0F1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFDH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'?EAX:=ECX',cfa_queEAXdcoma_equECX
 
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAXdcoma_equECX+036H
DB 074H,025H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08BH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C1H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0C3H
AHEADER 0 ,'~BR-OPT',cfa_tilBRminusOPT
 
call cfa__CONSTANTminusCODE+00H
DD 0FFFFFFFFH
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'EBX:=EAX',cfa_EBXdcoma_equEAX
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 02H
DB 08DH,06DH,0F8H
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D88BH
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08DH,040H,04H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 0C3H
AHEADER 0 ,'ECX:=EAX',cfa_ECXdcoma_equEAX
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 02H
DB 08DH,06DH,0F8H
call cfa_OPinsert+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C88BH
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08DH,040H,04H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 0C3H
AHEADER 0 ,'F?EAX>ECX',cfa_FqueEAXgreatECX
 
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_FqueEAXgreatECX+034H
DB 074H,02AH
call cfa_quetilEAX+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_FqueEAXgreatECX+028H
DB 074H,0DH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0EBH,05H
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0EBH,05H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'T?EAX>ECX',cfa_TqueEAXgreatECX
 
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_TqueEAXgreatECX+017H
DB 074H,0DH
DB 08DH,040H,04H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0EBH,0AH
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'-EBPCLR',cfa_minusEBPCLR
 
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_minusEBPCLR+01FH
DB 076H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
call cfa_OFFminusEBP+00H
DB 08DH,040H,0FCH
call cfa_OFFminusEBP+09H
DB 090H
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_minusEBPCLR+043H
DB 074H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 06D8DH
DB 08BH,045H,0FCH
;jne cfa_minusEBPCLR+05CH
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0E8H
DB 08BH,045H,0FCH
;jne cfa_minusEBPCLR+075H
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0E9H
DB 08BH,045H,0FCH
;jne cfa_minusEBPCLR+08EH
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 025H
DD 0F0H
DB 03DH
DD 070H
DB 08BH,045H,0FCH
;jne cfa_minusEBPCLR+0ACH
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0EBH
DB 08BH,045H,0FCH
;jne cfa_minusEBPCLR+0C5H
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0F0FFH
DB 03DH
DD 0800FH
DB 08BH,045H,0FCH
;jne cfa_minusEBPCLR+0E3H
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 08BH,08H
DB 08BH,09H
DB 081H,0E1H
DD 0FFFFFFH
DB 081H,0F9H
DD 085448BH
;jne cfa_minusEBPCLR+0FCH
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_OFFminusEBP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_minusEBPCLR+018CH
DB 075H,067H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0E7FFH
DB 089H,045H,0F8H
DB 0B8H
DD 04589H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0F4H
DB 0B8H
DD 045C7H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 08BH,045H,0FCH
;je cfa_minusEBPCLR+0185H
DB 074H,020H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OPexcise+00H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08DH,040H,0FCH
DB 0EBH,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
DB 08DH,040H,04H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_minusEBPCLR+02DH-$-4
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'-EBPLIT',cfa_minusEBPLIT
 
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jb cfa_minusEBPLIT+019H
DB 072H,01H
DB 0C3H
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_minusEBPLIT+029H
DB 074H,01H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 06D8DH
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+03CH
DB 075H,01H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0E8H
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+04FH
DB 075H,01H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0E9H
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+062H
DB 075H,01H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 025H
DD 0F0H
DB 03DH
DD 070H
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+07AH
DB 075H,01H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B6H,00H
DB 03DH
DD 0EBH
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+08DH
DB 075H,01H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 025H
DD 0F0FFH
DB 03DH
DD 0800FH
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+0A5H
DB 075H,01H
DB 0C3H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,0F8H
DB 08BH,045H,0FCH
;jne cfa_minusEBPLIT+0BFH
DB 075H,01H
DB 0C3H
DB 08DH,040H,04H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0820FH
DD cfa_minusEBPLIT+019H-$-4
DB 0C3H
AHEADER 0 ,'EAX>ECX',cfa_EAXgreatECX
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_EAXgreatECX+01CH
DB 075H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 05589H
DB 08DH,06DH,0FCH
;jne cfa_EAXgreatECX+03DH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,0C8H
DB 081H,0E1H
DD 03AFFH
DB 081H,0F9H
DD 028BH
;jne cfa_EAXgreatECX+06EH
DB 075H,021H
DB 0B8H
DD 0800H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 01H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0458BH
;jne cfa_EAXgreatECX+099H
DB 075H,024H
DB 0B8H
DD 04DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 08BH
;jne cfa_EAXgreatECX+0C4H
DB 075H,024H
DB 0B8H
DD 09H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D08BH
;jne cfa_EAXgreatECX+0EFH
DB 075H,024H
DB 0B8H
DD 0D1H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C28BH
;jne cfa_EAXgreatECX+011AH
DB 075H,024H
DB 0B8H
DD 0CAH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0E0C1H
;jne cfa_EAXgreatECX+0145H
DB 075H,024H
DB 0B8H
DD 0E1H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C223H
;jne cfa_EAXgreatECX+0170H
DB 075H,024H
DB 0B8H
DD 0CAH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0501H
;jne cfa_EAXgreatECX+0195H
DB 075H,01EH
DB 0B8H
DD 0D01H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0508BH
;jne cfa_EAXgreatECX+01C0H
DB 075H,024H
DB 0B8H
DD 051H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 053BH
;jne cfa_EAXgreatECX+01EBH
DB 075H,024H
DB 0B8H
DD 0DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0103BH
;jne cfa_EAXgreatECX+0216H
DB 075H,024H
DB 0B8H
DD 011H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C23BH
;jne cfa_EAXgreatECX+0241H
DB 075H,024H
DB 0B8H
DD 0CAH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C00BH
;jne cfa_EAXgreatECX+026CH
DB 075H,024H
DB 0B8H
DD 0C9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C01BH
;jne cfa_EAXgreatECX+0297H
DB 075H,024H
DB 0B8H
DD 0C9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0F8H
DB 03DH
DD 0F8D1H
;jne cfa_EAXgreatECX+02C5H
DB 075H,024H
DB 0B8H
DD 0F9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0E8C1H
;jne cfa_EAXgreatECX+02F0H
DB 075H,024H
DB 0B8H
DD 0E9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04589H
;jne cfa_EAXgreatECX+031BH
DB 075H,024H
DB 0B8H
DD 04DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 05089H
;jne cfa_EAXgreatECX+0346H
DB 075H,024H
DB 0B8H
DD 051H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 01089H
;jne cfa_EAXgreatECX+0371H
DB 075H,024H
DB 0B8H
DD 011H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 080C6H
;jne cfa_EAXgreatECX+039CH
DB 075H,024H
DB 0B8H
DD 081H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0408DH
;jne cfa_EAXgreatECX+03C7H
DB 075H,024H
DB 0B8H
DD 049H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0408BH
;jne cfa_EAXgreatECX+03F2H
DB 075H,024H
DB 0B8H
DD 049H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0428DH
;jne cfa_EAXgreatECX+041AH
DB 075H,021H
DB 0B8H
DD 0800H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 01H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0808DH
;jne cfa_EAXgreatECX+0445H
DB 075H,024H
DB 0B8H
DD 089H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C28BH
;jne cfa_EAXgreatECX+0470H
DB 075H,024H
DB 0B8H
DD 0CAH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D8F7H
;jne cfa_EAXgreatECX+049BH
DB 075H,024H
DB 0B8H
DD 0D9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D0F7H
;jne cfa_EAXgreatECX+04C6H
DB 075H,024H
DB 0B8H
DD 0D1H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D0F7H
;jne cfa_EAXgreatECX+04F1H
DB 075H,024H
DB 0B8H
DD 0D1H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04503H
;jne cfa_EAXgreatECX+051CH
DB 075H,024H
DB 0B8H
DD 04DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0523H
;jne cfa_EAXgreatECX+0547H
DB 075H,024H
DB 0B8H
DD 0DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0558BH
;jne cfa_EAXgreatECX+055DH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0158BH
;jne cfa_EAXgreatECX+0573H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 045C7H
;jne cfa_EAXgreatECX+0589H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0244B60FH
;jne cfa_EAXgreatECX+05BBH
DB 075H,021H
DB 0B8H
DD 0A4CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 085048DH
;jne cfa_EAXgreatECX+05EEH
DB 075H,021H
DB 0B8H
DD 08D0CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 085048BH
;jne cfa_EAXgreatECX+0616H
DB 075H,021H
DB 0B8H
DD 08D0CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 080B60FH
;jne cfa_EAXgreatECX+0641H
DB 075H,024H
DB 0B8H
DD 089H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 040B70FH
;jne cfa_EAXgreatECX+066CH
DB 075H,024H
DB 0B8H
DD 049H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0B70FH
;jne cfa_EAXgreatECX+0697H
DB 075H,024H
DB 0B8H
DD 09H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 082448BH
;jne cfa_EAXgreatECX+06BFH
DB 075H,021H
DB 0B8H
DD 08A4CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024048BH
;jne cfa_EAXgreatECX+06EAH
DB 075H,024H
DB 0B8H
DD 0CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024448BH
;jne cfa_EAXgreatECX+0715H
DB 075H,024H
DB 0B8H
DD 04CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024043BH
;jne cfa_EAXgreatECX+0740H
DB 075H,024H
DB 0B8H
DD 0CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024443BH
;jne cfa_EAXgreatECX+076BH
DB 075H,024H
DB 0B8H
DD 04CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024548BH
;jne cfa_EAXgreatECX+0781H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024442BH
;jne cfa_EAXgreatECX+07ACH
DB 075H,024H
DB 0B8H
DD 04CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 050H
;jne cfa_EAXgreatECX+07DFH
DB 075H,021H
DB 0B8H
DD 051H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0B8H
;jne cfa_EAXgreatECX+0807H
DB 075H,021H
DB 0B8H
DD 0B9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0A3H
;jne cfa_EAXgreatECX+0842H
DB 075H,034H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D89H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0A1H
;jne cfa_EAXgreatECX+087DH
DB 075H,034H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8BH
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 025H
;jne cfa_EAXgreatECX+08B8H
DB 075H,034H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0E181H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0BAH
;jne cfa_EAXgreatECX+08CEH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 03DH
;jne cfa_EAXgreatECX+0909H
DB 075H,034H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0F981H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
call cfa_Udot+00H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_Udot+00H
call cfa_Udot+00H
call cfa__SLITERALminusCODE+00H
DB 07H
DB 'EAX>ECX',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'EAX>ECX0',cfa_EAXgreatECX0
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_EAXgreatECX0+01CH
DB 075H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 08BH,0C8H
DB 081H,0E1H
DD 0EFFFH
DB 081H,0F9H
DD 04589H
DB 08DH,06DH,0FCH
;jne cfa_EAXgreatECX0+046H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0501H
;jne cfa_EAXgreatECX0+05CH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 05589H
;jne cfa_EAXgreatECX0+072H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,0C8H
DB 081H,0E1H
DD 038FFH
DB 081H,0F9H
DD 08BH
;jne cfa_EAXgreatECX0+0A3H
DB 075H,021H
DB 0B8H
DD 0800H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 01H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0C28BH
;jne cfa_EAXgreatECX0+0CEH
DB 075H,024H
DB 0B8H
DD 0CAH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0808DH
;jne cfa_EAXgreatECX0+0F9H
DB 075H,024H
DB 0B8H
DD 088H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0408DH
;jne cfa_EAXgreatECX0+0124H
DB 075H,024H
DB 0B8H
DD 048H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0408BH
;jne cfa_EAXgreatECX0+014FH
DB 075H,024H
DB 0B8H
DD 048H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,0C8H
DB 081H,0E1H
DD 0FFH
DB 081H,0F9H
DD 08BH
;jne cfa_EAXgreatECX0+016EH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,0C8H
DB 081H,0E1H
DD 038FFH
DB 081H,0F9H
DD 08DH
;jne cfa_EAXgreatECX0+019FH
DB 075H,021H
DB 0B8H
DD 0800H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 01H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0428DH
;jne cfa_EAXgreatECX0+01C7H
DB 075H,021H
DB 0B8H
DD 0800H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 01H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0C00BH
;jne cfa_EAXgreatECX0+01DDH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 05089H
;jne cfa_EAXgreatECX0+01F3H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 01089H
;jne cfa_EAXgreatECX0+0209H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 080C6H
;jne cfa_EAXgreatECX0+021FH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 045C7H
;jne cfa_EAXgreatECX0+0235H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08BH,00H
DB 03DH
DD 0244B60FH
;jne cfa_EAXgreatECX0+026AH
DB 075H,024H
DB 0B8H
DD 04CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 080B60FH
;jne cfa_EAXgreatECX0+02A0H
DB 075H,024H
DB 0B8H
DD 088H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 040B70FH
;jne cfa_EAXgreatECX0+02CBH
DB 075H,024H
DB 0B8H
DD 048H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0B70FH
;jne cfa_EAXgreatECX0+02F6H
DB 075H,024H
DB 0B8H
DD 08H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 050H
;jne cfa_EAXgreatECX0+0317H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0B8H
;jne cfa_EAXgreatECX0+033FH
DB 075H,021H
DB 0B8H
DD 0B9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0BAH
;jne cfa_EAXgreatECX0+0355H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 03DH
;jne cfa_EAXgreatECX0+036BH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 03BH
;jne cfa_EAXgreatECX0+0381H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0A3H
;jne cfa_EAXgreatECX0+0397H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0A1H
;jne cfa_EAXgreatECX0+03D2H
DB 075H,034H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_OPresize+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0D8BH
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_TRUE+00H
DB 0C3H
call cfa_HEX+00H
call cfa_Udot+00H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_Udot+00H
call cfa_Udot+00H
call cfa__SLITERALminusCODE+00H
DB 08H
DB 'EAX>ECX0',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'?EAX>ECX',cfa_queEAXgreatECX
 
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAXgreatECX+020H
DB 074H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAXgreatECX+049H
DB 076H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0F8H
DB 089H,045H,0F4H
DB 0B8H
DD 04589H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F4H
DB 08BH,045H,0F8H
DB 089H,045H,0F0H
DB 0B8H
DD 0458BH
DB 033H,045H,0F0H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F4H
DB 08BH,045H,0F8H
DB 08DH,06DH,0FCH
;je cfa_queEAXgreatECX+0E6H
DB 074H,061H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAXgreatECX+0BAH
DB 075H,0FH
DB 08DH,040H,0FCH
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0EBH,02BH
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0458BH
DB 08BH,045H,0FCH
;jne cfa_queEAXgreatECX+0DDH
DB 075H,011H
call cfa_quetilEAX+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 05589H
;jne cfa_queEAXgreatECX+012EH
DB 075H,041H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAXgreatECX+0125H
DB 075H,012H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0EBH,08H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_quetilEAXlsk+00H
DB 08BH,0C8H
DB 081H,0E1H
DD 03AFFH
DB 081H,0F9H
DD 028BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 08BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0408DH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0408BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0428DH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0C28BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 03DH
DD 0C00BH
DB 08DH,06DH,08H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0C01BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 089H,045H,0F8H
DB 03DH
DD 0F8D1H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0E8C1H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0D8F7H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0D0F7H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0D0F7H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 04503H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0523H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0E0C1H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0C223H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
call cfa_rskquetilEAX+00H
DB 03DH
DD 0508BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 053BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0103BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0558BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0158BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0D08BH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0501H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 05089H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 01089H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 080C6H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 045C7H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 050H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0A3H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_quetilEAXlsk+00H
DB 03DH
DD 0B8H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 0A1H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 089H,045H,00H
DB 03DH
DD 025H
DB 08DH,06DH,08H
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
call cfa_rskquetilEAX+00H
DB 03DH
DD 0BAH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 03DH
DD 03DH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_quetilEAXlsk+00H
DB 03DH
DD 0244B60FH
DW 0840FH
DD cfa_queEAXgreatECX+03C3H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 085048DH
;je cfa_queEAXgreatECX+03C3H
DB 074H,078H
DB 03DH
DD 085048BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,071H
DB 03DH
DD 080B60FH
;je cfa_queEAXgreatECX+03C3H
DB 074H,06AH
DB 03DH
DD 040B70FH
;je cfa_queEAXgreatECX+03C3H
DB 074H,063H
DB 03DH
DD 0B70FH
;je cfa_queEAXgreatECX+03C3H
DB 074H,05CH
DB 03DH
DD 082448BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,055H
DB 03DH
DD 024048BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,04EH
DB 03DH
DD 024448BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,047H
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 03DH
DD 024442BH
DB 08DH,06DH,08H
;je cfa_queEAXgreatECX+03C3H
DB 074H,02BH
call cfa_rskquetilEAX+00H
DB 03DH
DD 024043BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,01FH
DB 03DH
DD 024443BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,018H
DB 03DH
DD 024548BH
;je cfa_queEAXgreatECX+03C3H
DB 074H,011H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'EAX>EBX',cfa_EAXgreatEBX
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_EAXgreatEBX+01CH
DB 075H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0508BH
DB 08DH,06DH,0FCH
;jne cfa_EAXgreatEBX+052H
DB 075H,024H
DB 0B8H
DD 053H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 083BH
;jne cfa_EAXgreatEBX+07AH
DB 075H,021H
DB 0B8H
DD 0BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C83BH
;jne cfa_EAXgreatEBX+0A2H
DB 075H,021H
DB 0B8H
DD 0CBH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C13BH
;jne cfa_EAXgreatEBX+0CAH
DB 075H,021H
DB 0B8H
DD 0D9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_Wsave+00H
DB 08DH,040H,0FCH
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 088BH
;jne cfa_EAXgreatEBX+0F5H
DB 075H,024H
DB 0B8H
DD 0BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0458BH
;jne cfa_EAXgreatEBX+0120H
DB 075H,024H
DB 0B8H
DD 05DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 098BH
;jne cfa_EAXgreatEBX+0136H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04D8BH
;jne cfa_EAXgreatEBX+014CH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 05589H
;jne cfa_EAXgreatEBX+0162H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C88BH
;jne cfa_EAXgreatEBX+018DH
DB 075H,024H
DB 0B8H
DD 0CBH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0889H
;jne cfa_EAXgreatEBX+01B8H
DB 075H,024H
DB 0B8H
DD 0BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 01089H
;jne cfa_EAXgreatEBX+01E3H
DB 075H,024H
DB 0B8H
DD 013H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04889H
;jne cfa_EAXgreatEBX+020EH
DB 075H,024H
DB 0B8H
DD 04BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04589H
;jne cfa_EAXgreatEBX+0239H
DB 075H,024H
DB 0B8H
DD 05DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0408DH
;jne cfa_EAXgreatEBX+0264H
DB 075H,024H
DB 0B8H
DD 05BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0808DH
;jne cfa_EAXgreatEBX+028FH
DB 075H,024H
DB 0B8H
DD 09BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 08BH
;jne cfa_EAXgreatEBX+02BAH
DB 075H,024H
DB 0B8H
DD 01BH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C18BH
;jne cfa_EAXgreatEBX+02E5H
DB 075H,024H
DB 0B8H
DD 0D9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D8F7H
;jne cfa_EAXgreatEBX+0310H
DB 075H,024H
DB 0B8H
DD 0DBH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 08D0489H
;jne cfa_EAXgreatEBX+0350H
DB 075H,024H
DB 0B8H
DD 01CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024048BH
;jne cfa_EAXgreatEBX+037BH
DB 075H,024H
DB 0B8H
DD 01CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0240C8BH
;jne cfa_EAXgreatEBX+0391H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024442BH
;jne cfa_EAXgreatEBX+03BCH
DB 075H,024H
DB 0B8H
DD 05CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
call cfa_HEX+00H
call cfa_Udot+00H
call cfa_Udot+00H
call cfa__SLITERALminusCODE+00H
DB 07H
DB 'EAX>EBX',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'EAX>EBX0',cfa_EAXgreatEBX0
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_EAXgreatEBX0+01CH
DB 075H,06H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0508BH
DB 08DH,06DH,0FCH
;jne cfa_EAXgreatEBX0+03DH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 088BH
;jne cfa_EAXgreatEBX0+053H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 098BH
;jne cfa_EAXgreatEBX0+069H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04D8BH
;jne cfa_EAXgreatEBX0+07FH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 05589H
;jne cfa_EAXgreatEBX0+095H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C88BH
;jne cfa_EAXgreatEBX0+0ABH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0889H
;jne cfa_EAXgreatEBX0+0C1H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 01089H
;jne cfa_EAXgreatEBX0+0D7H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 04889H
;jne cfa_EAXgreatEBX0+0EDH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0408DH
;jne cfa_EAXgreatEBX0+0118H
DB 075H,024H
DB 0B8H
DD 058H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0808DH
;jne cfa_EAXgreatEBX0+0143H
DB 075H,024H
DB 0B8H
DD 098H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 08BH
;jne cfa_EAXgreatEBX0+016EH
DB 075H,024H
DB 0B8H
DD 018H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0C18BH
;jne cfa_EAXgreatEBX0+0199H
DB 075H,024H
DB 0B8H
DD 0D9H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0458BH
;jne cfa_EAXgreatEBX0+01C4H
DB 075H,024H
DB 0B8H
DD 05DH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0D8F7H
;jne cfa_EAXgreatEBX0+01EFH
DB 075H,024H
DB 0B8H
DD 0DBH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 08D0489H
;jne cfa_EAXgreatEBX0+021AH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 024048BH
;jne cfa_EAXgreatEBX0+0245H
DB 075H,024H
DB 0B8H
DD 01CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0240C8BH
;jne cfa_EAXgreatEBX0+025BH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 03BH
;jne cfa_EAXgreatEBX0+027CH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,0FCH
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
call cfa_HEX+00H
call cfa_Udot+00H
call cfa_Udot+00H
call cfa__SLITERALminusCODE+00H
DB 08H
DB 'EAX>EBX0',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'?EAX>EBX',cfa_queEAXgreatEBX
 
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEAXgreatEBX+020H
DB 074H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queEAXgreatEBX+049H
DB 076H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 089H,045H,0F8H
DB 089H,045H,0F4H
DB 0B8H
DD 04589H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F4H
DB 08BH,045H,0F8H
DB 089H,045H,0F0H
DB 0B8H
DD 0458BH
DB 033H,045H,0F0H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F4H
DB 08BH,045H,0F8H
DB 08DH,06DH,0FCH
;je cfa_queEAXgreatEBX+0E6H
DB 074H,061H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAXgreatEBX+0BAH
DB 075H,0FH
DB 08DH,040H,0FCH
call cfa_TRUE+00H
call cfa_TRUE+00H
DB 0EBH,02BH
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0458BH
DB 08BH,045H,0FCH
;jne cfa_queEAXgreatEBX+0DDH
DB 075H,011H
call cfa_quetilEAX+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 083BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0C83BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0C13BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0508BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 088BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 098BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0C88BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0889H
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 01089H
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 04889H
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_quetilEAXlsk+00H
DB 03DH
DD 0408DH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0808DH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 08BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 0C18BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 03DH
DD 0D8F7H
DB 08DH,06DH,08H
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
call cfa_rskquetilEAX+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 0240C8BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 03DH
DD 08D0489H
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_quetilEAXlsk+00H
DB 03DH
DD 024048BH
DW 0840FH
DD cfa_queEAXgreatEBX+027AH-$-4
call cfa_TRUE+00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 03DH
DD 024442BH
DB 08DH,06DH,08H
;je cfa_queEAXgreatEBX+027AH
DB 074H,069H
call cfa_rskquetilEAX+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFH
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_queEAXgreatEBX+025BH
DB 075H,011H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 04D8BH
;je cfa_queEAXgreatEBX+027AH
DB 074H,018H
DB 03DH
DD 05589H
;je cfa_queEAXgreatEBX+027AH
DB 074H,011H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'}?~EAX',cfa_rskquetilEAX
 
call cfa_SAVEminusquetilEAX+00H
DB 08BH,00H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'?~EAX{',cfa_quetilEAXlsk
 
call cfa_quetilEAX+00H
DB 08BH,00H
call cfa_SAVEminusquetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_quetilEAX+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SAVE-?~EAX',cfa_SAVEminusquetilEAX
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'?~EAX',cfa_quetilEAX
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'OPinsert',cfa_OPinsert
 
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa_OPresize+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_CELL+00H
DB 03H,045H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
call cfa_OP0+00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OpBuffSize+00H
DB 08DH,040H,0FCH
DB 0F7H,0D8H
DB 03H,045H,00H
DB 0F7H,0D8H
DB 08DH,06DH,04H
call cfa_MOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08BH,055H,0FCH
DB 01H,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'OPresize',cfa_OPresize
 
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08DH,06DH,08H
DB 0BBH
DD cfa_OPresize+060H
DB 03BH,045H,0F8H
;jne cfa_OPresize+027H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,055H,0F8H
DB 01H,010H
DB 08BH,045H,0FCH
call cfa_CELL+00H
DB 01H,04H,024H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jno cfa_OPresize+037H
DB 071H,0DBH
DB 08DH,064H,024H,0CH
call cfa_ALLOT+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 058H
DB 03H,045H,0F8H
DB 089H,045H,0F8H
DB 08DH,06DH,0F8H
call cfa_DP+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 0F7H,0D8H
DB 08DH,06DH,04H
call cfa_MOVE+00H
DB 0C3H
AHEADER 0 ,'MOV_EDX_[EBP]',cfa_MOV_EDX__xEBP_y
 
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_MOV_EDX__xEBP_y+020H
DB 074H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_MOV_EDX__xEBP_y+049H
DB 076H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_queChEAX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_MOV_EDX__xEBP_y+069H
DB 075H,09H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_queEDX__xEBP_y+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_MOV_EDX__xEBP_y+087H
DB 075H,09H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0448BH
DB 08DH,06DH,0FCH
;jne cfa_MOV_EDX__xEBP_y+0A8H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 01489H
;jne cfa_MOV_EDX__xEBP_y+0BEH
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 08BCAH
;jne cfa_MOV_EDX__xEBP_y+0D4H
DB 075H,0FH
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,0C8H
DB 081H,0E1H
DD 0FFFDH
DB 081H,0F9H
DD 05589H
;jne cfa_MOV_EDX__xEBP_y+0110H
DB 075H,02CH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'?EDX_[EBP]',cfa_queEDX__xEBP_y
 
DB 089H,045H,0FCH
DB 08BH,00H
DB 08BH,00H
DB 089H,045H,0F8H
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0F8H
DB 03DH
DD 024048BH
DB 08DH,06DH,0FCH
;jne cfa_queEDX__xEBP_y+028H
DB 075H,0CH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFH
DB 023H,045H,0FCH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 0458BH
DB 033H,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 04589H
DB 033H,045H,0F4H
DB 0BH,045H,0F8H
DB 08BH,045H,0FCH
;jne cfa_queEDX__xEBP_y+081H
DB 075H,027H
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,04H
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,04H
DB 0C3H
DB 089H,045H,00H
call cfa_ADDlXORlORlAND_equ+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queEDX__xEBP_y+09FH
DB 074H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0E8C1H
;jne cfa_queEDX__xEBP_y+0B2H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0418DH
;jne cfa_queEDX__xEBP_y+0C5H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0408DH
;jne cfa_queEDX__xEBP_y+0D8H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0878DH
;jne cfa_queEDX__xEBP_y+0EBH
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D0F7H
;jne cfa_queEDX__xEBP_y+0FEH
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0D8F7H
;jne cfa_queEDX__xEBP_y+0111H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C123H
;jne cfa_queEDX__xEBP_y+0124H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C033H
;jne cfa_queEDX__xEBP_y+0137H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0808DH
;jne cfa_queEDX__xEBP_y+014AH
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 088BH
;jne cfa_queEDX__xEBP_y+015DH
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0C00BH
;jne cfa_queEDX__xEBP_y+0170H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0488DH
;jne cfa_queEDX__xEBP_y+0183H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0E0D3H
;jne cfa_queEDX__xEBP_y+0196H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFH
DB 023H,045H,0FCH
DB 03DH
DD 0A1H
;jne cfa_queEDX__xEBP_y+01B4H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 058H
;jne cfa_queEDX__xEBP_y+01C7H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 03DH
DD 0B9H
;jne cfa_queEDX__xEBP_y+01DAH
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'XX_STEP',cfa_XX_STEP
 
call cfa_queOPlast+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_XX_STEP+020H
DB 074H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,00H
DB 089H,045H,0F8H
DB 08DH,06DH,0F8H
call cfa_dcomaminusSET+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_XX_STEP+04CH
DB 076H,011H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 0FH,0B6H,00H
DB 03DH
DD 03DH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 03BH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0A3H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0B9H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0BAH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0BBH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 050H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,00H
DB 0FH,0B7H,00H
DB 08BH,0C8H
DB 081H,0E1H
DD 04FFH
DB 081H,0F9H
DD 04C7H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 040FEH
DB 081H,0F9H
DD 088H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 04D89H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0558BH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 04C8BH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0648DH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 034FFH
DB 081H,0F9H
DD 04FFH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0C00BH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0D00BH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0D02BH
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 03DH
DD 0401H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 06FDH
DB 081H,0F9H
DD 0481H
DW 0840FH
DD cfa_XX_STEP+01CCH-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0FFFDH
DB 081H,0F9H
DD 04589H
;jne cfa_XX_STEP+01BBH
DB 075H,05CH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0FH,0B6H,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_XX_STEP+0194H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 03DH
DD 0458BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_XX_STEP+01B2H
DB 075H,011H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08DH,040H,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'?OPlast',cfa_queOPlast
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
call cfa_OpBuffSize+00H
DB 03H,045H,00H
DB 08DH,040H,0FCH
DB 08DH,040H,0FCH
DB 03BH,045H,04H
DB 01BH,0C0H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'OPexcise',cfa_OPexcise
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_OPexcise+033H
DB 075H,01DH
DB 08BH,00H
call cfa_DP+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_OP1+00H
call cfa_ToOP0+00H
DB 0C3H
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,04H,024H
DB 08DH,040H,0FCH
DB 08BH,00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08BH,00H
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,040H,0FCH
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_CMOVE+00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,06DH,0FCH
call cfa_OP_SIZE+00H
DB 0F7H,0D8H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 0BAH
DD 080000000H
DB 02BH,055H,00H
DB 08DH,01CH,02H
DB 08BH,045H,04H
DB 08BH,0D2H
DB 08DH,06DH,08H
DB 068H
DD cfa_OPexcise+0CAH
DB 052H
DB 053H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08BH,055H,0F8H
DB 01H,010H
DB 08BH,045H,0FCH
call cfa_CELL+00H
DB 01H,04H,024H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jno cfa_OPexcise+0A1H
DB 071H,0DBH
DB 08DH,064H,024H,0CH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,040H,04H
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 08DH,06DH,0F8H
call cfa_OpBuffSize+00H
DB 08DH,040H,0FCH
DB 089H,045H,0FCH
DB 058H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_OP0+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_CMOVE+00H
DB 0C3H
AHEADER 0 ,'OP_SIZE',cfa_OP_SIZE
 
DB 0BH,0C0H
;je cfa_OP_SIZE+04H
DB 074H,00H
DB 089H,045H,0FCH
DB 08DH,040H,0FCH
DB 08BH,00H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'^?EAX=',cfa_picqueEAX_equ
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_queChEAX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_picqueEAX_equ+021H
DB 074H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0FH,0B7H,00H
DB 08BH,0C8H
DB 081H,0E1H
DD 0F9H
DB 081H,0F9H
DD 089H
DB 08DH,06DH,0FCH
;je cfa_picqueEAX_equ+046H
DB 074H,0CH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FF00H
DB 023H,045H,0FCH
DB 08BH,0C8H
DB 081H,0E1H
DD 0100H
DB 081H,0F9H
DD 0100H
;je cfa_picqueEAX_equ+0A0H
DB 074H,03FH
DB 03DH
DD 0C200H
;je cfa_picqueEAX_equ+0A0H
DB 074H,038H
DB 03DH
DD 0D800H
;je cfa_picqueEAX_equ+0A0H
DB 074H,031H
DB 08BH,045H,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFF00H
DB 023H,045H,0FCH
DB 03DH
DD 0240400H
;je cfa_picqueEAX_equ+0A0H
DB 074H,01AH
DB 03DH
DD 0244400H
;je cfa_picqueEAX_equ+0A0H
DB 074H,013H
DB 03DH
DD 095048BH
;je cfa_picqueEAX_equ+0A0H
DB 074H,0CH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'?ChEAX',cfa_queChEAX
 
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0B8H
DB 08DH,06DH,0FCH
;je cfa_queChEAX+071H
DB 074H,061H
DB 03DH
DD 0A1H
;je cfa_queChEAX+071H
DB 074H,05AH
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0FH,0B7H,00H
DB 03DH
DD 0C033H
;je cfa_queChEAX+071H
DB 074H,04AH
DB 03DH
DD 0C031H
;je cfa_queChEAX+071H
DB 074H,043H
DB 03DH
DD 0D889H
;je cfa_queChEAX+071H
DB 074H,03CH
DB 089H,045H,0FCH
DB 0B8H
DD 038FFH
DB 023H,045H,0FCH
DB 03DH
DD 08BH
;je cfa_queChEAX+071H
DB 074H,02AH
DB 03DH
DD 08DH
;je cfa_queChEAX+071H
DB 074H,023H
DB 08BH,045H,00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFH
DB 023H,045H,0FCH
DB 03DH
DD 02048DH
;je cfa_queChEAX+071H
DB 074H,0CH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TRUE+00H
DB 0C3H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 0C3H
AHEADER 0 ,'TTTT',cfa_TTTT
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'DUP7B?',cfa_DUP7Bque
 
DB 089H,045H,0FCH
DB 025H
DD 03FFFFDH
DB 089H,045H,0F8H
DB 0B8H
DD 050489H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 025H
DD 03FFFFBH
DB 089H,045H,0F4H
DB 0B8H
DD 050489H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 080B60FH
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 045048DH
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'DUP5B?',cfa_DUP5Bque
 
DB 089H,045H,0FCH
DB 025H
DD 0C7H
DB 089H,045H,0F8H
DB 0B8H
DD 05H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 025H
DD 0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 0B8H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 025H
DD 0FDH
DB 089H,045H,0F4H
DB 0B8H
DD 0A1H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'DUP6B?',cfa_DUP6Bque
 
DB 08BH,0C8H
DB 081H,0E1H
DD 067FDH
DB 081H,0F9H
DD 0589H
;je cfa_DUP6Bque+088H
DB 074H,078H
DB 08BH,0C8H
DB 081H,0E1H
DD 0C3FFH
DB 081H,0F9H
DD 0C081H
;je cfa_DUP6Bque+088H
DB 074H,068H
DB 03DH
DD 0501H
;je cfa_DUP6Bque+088H
DB 074H,061H
DB 03DH
DD 0503H
;je cfa_DUP6Bque+088H
DB 074H,05AH
DB 03DH
DD 053BH
;je cfa_DUP6Bque+088H
DB 074H,053H
DB 03DH
DD 0873BH
;je cfa_DUP6Bque+088H
DB 074H,04CH
DB 03DH
DD 0F281H
;je cfa_DUP6Bque+088H
DB 074H,045H
DB 03DH
DD 0928DH
;je cfa_DUP6Bque+088H
DB 074H,03EH
DB 03DH
DD 0808BH
;je cfa_DUP6Bque+088H
DB 074H,037H
DB 03DH
DD 0808DH
;je cfa_DUP6Bque+088H
DB 074H,030H
DB 03DH
DD 08703H
;je cfa_DUP6Bque+088H
DB 074H,029H
DB 03DH
DD 0878BH
;je cfa_DUP6Bque+088H
DB 074H,022H
DB 03DH
DD 0878DH
;je cfa_DUP6Bque+088H
DB 074H,01BH
DB 03DH
DD 0C7H
;je cfa_DUP6Bque+088H
DB 074H,014H
DB 03DH
DD 081H
;je cfa_DUP6Bque+088H
DB 074H,0DH
DB 03DH
DD 05FFH
;je cfa_DUP6Bque+088H
DB 074H,06H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'DUP2B?',cfa_DUP2Bque
 
DB 08BH,0C8H
DB 081H,0E1H
DD 0E4C5H
DB 081H,0F9H
DD 0C001H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 01001H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 03H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0F633H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0108BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0C0FFH
DB 081H,0F9H
DD 0C085H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 089H,045H,0FCH
DB 08BH,0C8H
DB 081H,0E1H
DD 0E4FCH
DB 081H,0F9H
DD 0C088H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0C4FEH
DB 081H,0F9H
DD 088H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 08BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 028BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0C78BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 089H,045H,0F8H
DB 03DH
DD 0F88BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0F08BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0C88BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0D18BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0C68BH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 089H,045H,0FCH
DB 08BH,0C8H
DB 081H,0E1H
DD 0E4FCH
DB 081H,0F9H
DD 0E0D0H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 03DH
DD 0C0DDH
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0F0FFH
DB 081H,0F9H
DD 0C0D9H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0FAFFH
DB 081H,0F9H
DD 0E0D9H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0E8FFH
DB 081H,0F9H
DD 0E8D9H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0F0FFH
DB 081H,0F9H
DD 0F0D9H
DW 0840FH
DD cfa_DUP2Bque+01D1H-$-4
DB 08BH,0C8H
DB 081H,0E1H
DD 0E8FFH
DB 081H,0F9H
DD 020DBH
;je cfa_DUP2Bque+01D1H
DB 074H,075H
DB 08BH,0C8H
DB 081H,0E1H
DD 0E8FFH
DB 081H,0F9H
DD 0DDH
;je cfa_DUP2Bque+01D1H
DB 074H,065H
DB 08BH,0C8H
DB 081H,0E1H
DD 0F0FFH
DB 081H,0F9H
DD 0C0DEH
;je cfa_DUP2Bque+01D1H
DB 074H,055H
DB 08BH,0C8H
DB 081H,0E1H
DD 0E0FFH
DB 081H,0F9H
DD 0E0DEH
;je cfa_DUP2Bque+01D1H
DB 074H,045H
DB 03DH
DD 0FFH
;je cfa_DUP2Bque+01D1H
DB 074H,03EH
DB 03DH
DD 0D0F7H
;je cfa_DUP2Bque+01D1H
DB 074H,037H
DB 03DH
DD 0D1F7H
;je cfa_DUP2Bque+01D1H
DB 074H,030H
DB 03DH
DD 0D8F7H
;je cfa_DUP2Bque+01D1H
DB 074H,029H
DB 03DH
DD 0D9F7H
;je cfa_DUP2Bque+01D1H
DB 074H,022H
DB 03DH
DD 0DAF7H
;je cfa_DUP2Bque+01D1H
DB 074H,01BH
DB 03DH
DD 0E9F7H
;je cfa_DUP2Bque+01D1H
DB 074H,014H
DB 03DH
DD 0F1F7H
;je cfa_DUP2Bque+01D1H
DB 074H,0DH
DB 03DH
DD 0F9F7H
;je cfa_DUP2Bque+01D1H
DB 074H,06H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'DUP3B?',cfa_DUP3Bque
 
DB 08BH,0C8H
DB 081H,0E1H
DD 0C7FFH
DB 081H,0F9H
DD 0C083H
DW 0840FH
DD cfa_DUP3Bque+098H-$-4
DB 03DH
DD 0478BH
DW 0840FH
DD cfa_DUP3Bque+098H-$-4
DB 03DH
DD 0488BH
;je cfa_DUP3Bque+098H
DB 074H,072H
DB 03DH
DD 0588BH
;je cfa_DUP3Bque+098H
DB 074H,06BH
DB 03DH
DD 0508BH
;je cfa_DUP3Bque+098H
DB 074H,064H
DB 03DH
DD 0788BH
;je cfa_DUP3Bque+098H
DB 074H,05DH
DB 03DH
DD 0708BH
;je cfa_DUP3Bque+098H
DB 074H,056H
DB 03DH
DD 0588DH
;je cfa_DUP3Bque+098H
DB 074H,04FH
DB 03DH
DD 0508DH
;je cfa_DUP3Bque+098H
DB 074H,048H
DB 03DH
DD 05089H
;je cfa_DUP3Bque+098H
DB 074H,041H
DB 03DH
DD 05189H
;je cfa_DUP3Bque+098H
DB 074H,03AH
DB 03DH
DD 07589H
;je cfa_DUP3Bque+098H
DB 074H,033H
DB 089H,045H,0F8H
DB 03DH
DD 0F8C1H
;je cfa_DUP3Bque+098H
DB 074H,029H
DB 03DH
DD 0E0C1H
;je cfa_DUP3Bque+098H
DB 074H,022H
DB 03DH
DD 0E1C1H
;je cfa_DUP3Bque+098H
DB 074H,01BH
DB 03DH
DD 0E8C1H
;je cfa_DUP3Bque+098H
DB 074H,014H
DB 03DH
DD 0408DH
;je cfa_DUP3Bque+098H
DB 074H,0DH
DB 03DH
DD 0408BH
;je cfa_DUP3Bque+098H
DB 074H,06H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'DUP3B?[EBP]',cfa_DUP3Bque_xEBP_y
 
DB 08BH,0C8H
DB 081H,0E1H
DD 0E7C4H
DB 081H,0F9H
DD 04500H
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,049H
DB 08BH,0C8H
DB 081H,0E1H
DD 0E7FDH
DB 081H,0F9H
DD 04589H
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,039H
DB 03DH
DD 0758BH
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,032H
DB 08BH,0C8H
DB 081H,0E1H
DD 0EFFFH
DB 081H,0F9H
DD 06DDBH
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,022H
DB 03DH
DD 045DBH
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,01BH
DB 03DH
DD 065F7H
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,014H
DB 03DH
DD 06DF7H
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,0DH
DB 03DH
DD 04587H
;je cfa_DUP3Bque_xEBP_y+059H
DB 074H,06H
call cfa_FALSE+00H
DB 0C3H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'ADD|XOR|OR|AND=',cfa_ADDlXORlORlAND_equ
 
DB 03DH
DD 04503H
;je cfa_ADDlXORlORlAND_equ+028H
DB 074H,021H
DB 03DH
DD 0450BH
;je cfa_ADDlXORlORlAND_equ+028H
DB 074H,01AH
DB 03DH
DD 04523H
;je cfa_ADDlXORlORlAND_equ+028H
DB 074H,013H
DB 03DH
DD 04533H
;je cfa_ADDlXORlORlAND_equ+028H
DB 074H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALSE+00H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'+>OFF-EBP',cfa_plusgreatOFFminusEBP
 
call cfa_CgreatS+00H
call cfa_OFFminusEBP+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_OFFminusEBP+09H
DB 0C3H
AHEADER 0 ,'EVEN-EBP',cfa_EVENminusEBP
 
call cfa_OFFminusEBP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_EVENminusEBP+03BH
DB 074H,02CH
call cfa_SetOP+00H
call cfa_OFFminusEBP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 06D8DH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_OFFminusEBP+09H
DB 0C3H
AHEADER 0 ,'EVEN-EAX',cfa_EVENminusEAX
 
call cfa_OFFminusEAX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_EVENminusEAX+067H
DB 074H,058H
call cfa_SetOP+00H
call cfa_OFFminusEAX+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_SHORTque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_EVENminusEAX+045H
DB 074H,017H
DB 089H,045H,0FCH
DB 0B8H
DD 0408DH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
call cfa_Ccom+00H
DB 0EBH,015H
DB 089H,045H,0FCH
DB 0B8H
DD 0808DH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
call cfa_com+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_OFFminusEAX+09H
DB 0C3H
AHEADER 0 ,'SHORT?',cfa_SHORTque
 
DB 08DH,080H
DD 080H
DB 089H,045H,0FCH
DB 0B8H
DD 0100H
DB 039H,045H,0FCH
DB 01BH,0C0H
DB 0C3H
AHEADER 0 ,'?SET',cfa_queSET
 
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_LASTminusHERE+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_queSET+033H
DB 074H,016H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+09H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_JminusSET+09H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP0+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queSET+05CH
DB 076H,011H
call cfa_OP0+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_OP1+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queSET+085H
DB 076H,011H
call cfa_OP1+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_JP0+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queSET+0AEH
DB 076H,011H
call cfa_JP0+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_JP1+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queSET+0D1H
DB 076H,011H
call cfa_JP1+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SetJP',cfa_SetJP
 
call cfa_JP0+00H
call cfa_JpBuffSize+00H
DB 03H,045H,00H
DB 08BH,040H,0FCH
DB 08DH,06DH,04H
DB 0BH,0C0H
;je cfa_SetJP+01CH
DB 074H,05H
call cfa_J__ld+00H
call cfa_JminusSET+00H
call cfa_UMAX+00H
call cfa_JminusSET+09H
call cfa_JP0+00H
call cfa_JP1+00H
call cfa_JpBuffSize+00H
DB 08DH,040H,0FCH
call cfa_CMOVEgreat+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_JP0+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'J_@',cfa_J__ld
 
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 025H
DD 0F0H
DB 03DH
DD 070H
DB 08BH,045H,0FCH
;jne cfa_J__ld+01FH
DB 075H,0AH
call cfa_SJ_ld+00H
DB 0E9H
DD cfa_J__ld+0B4H-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0EBH
DB 08BH,045H,0FCH
;jne cfa_J__ld+039H
DB 075H,0AH
call cfa_SJ_ld+00H
DB 0E9H
DD cfa_J__ld+0B4H-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 03DH
DD 0E9H
DB 08BH,045H,0FCH
;jne cfa_J__ld+05CH
DB 075H,013H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 08BH,00H
DB 03H,045H,0FCH
DB 08DH,040H,04H
DB 0E9H
DD cfa_J__ld+0B4H-$-4
DB 089H,045H,0FCH
DB 0FH,0B7H,00H
DB 025H
DD 0F0FFH
DB 03DH
DD 0800FH
DB 08BH,045H,0FCH
;jne cfa_J__ld+087H
DB 075H,016H
DB 08DH,040H,01H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 08BH,00H
DB 03H,045H,0FCH
DB 08DH,040H,04H
DB 0E9H
DD cfa_J__ld+0B4H-$-4
call cfa_HEX+00H
call cfa_Udot+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa__SLITERALminusCODE+00H
DB 07H
DB 'J_@ ERR',0
call cfa_TYPE+00H
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'SJ@',cfa_SJ_ld
 
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_CgreatS+00H
DB 03H,045H,00H
DB 08DH,040H,01H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'J@',cfa_J_ld
 
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 08BH,00H
DB 03H,045H,0FCH
DB 08DH,040H,04H
DB 0C3H
AHEADER 0 ,'ClearJpBuff',cfa_ClearJpBuff
 
call cfa_JP0+00H
call cfa_JpBuffSize+00H
call cfa_ERASE+00H
DB 0C3H
AHEADER 0 ,'JP4',cfa_JP4
 
call cfa__CONSTANTminusCODE+00H
DD cfa_JP0+015H
AHEADER 0 ,'JP3',cfa_JP3
 
call cfa__CONSTANTminusCODE+00H
DD cfa_JP0+011H
AHEADER 0 ,'JP2',cfa_JP2
 
call cfa__CONSTANTminusCODE+00H
DD cfa_JP0+0DH
AHEADER 0 ,'JP1',cfa_JP1
 
call cfa__CONSTANTminusCODE+00H
DD cfa_JP0+09H
AHEADER 0 ,'JP0',cfa_JP0
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
AHEADER 0 ,'JpBuffSize',cfa_JpBuffSize
 
call cfa__CONSTANTminusCODE+00H
DD 044H
AHEADER 0 ,'ToOP0',cfa_ToOP0
 
call cfa_OP0+00H
call cfa_OpBuffSize+00H
DB 08DH,040H,0FCH
call cfa_CMOVE+00H
DB 0C3H
AHEADER 0 ,'SetOP',cfa_SetOP
 
call cfa_OP0+00H
call cfa_OP1+00H
call cfa_OpBuffSize+00H
DB 08DH,040H,0FCH
call cfa_CMOVEgreat+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_OP0+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'OP8',cfa_OP8
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+025H
AHEADER 0 ,'OP7',cfa_OP7
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+021H
AHEADER 0 ,'OP6',cfa_OP6
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+01DH
AHEADER 0 ,'OP5',cfa_OP5
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+019H
AHEADER 0 ,'OP4',cfa_OP4
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+015H
AHEADER 0 ,'OP3',cfa_OP3
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+011H
AHEADER 0 ,'OP2',cfa_OP2
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+0DH
AHEADER 0 ,'OP1',cfa_OP1
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+09H
AHEADER 0 ,'OPLast',cfa_OPLast
 
call cfa__CONSTANTminusCODE+00H
DD cfa_OP0+0111H
AHEADER 0 ,'OP0',cfa_OP0
 
call cfa__CREATEminusCODE+00H
DD cfa_OP0+05H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
AHEADER 0 ,'OpBuffSize',cfa_OpBuffSize
 
call cfa__CONSTANTminusCODE+00H
DD 0110H
AHEADER 0 ,'LAST-HERE',cfa_LASTminusHERE
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'J-SET',cfa_JminusSET
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,':-SET',cfa_dcomaminusSET
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'OFF-EAX',cfa_OFFminusEAX
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'OFF-EBP',cfa_OFFminusEBP
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'MM_SIZE',cfa_MM_SIZE
 
call cfa__CONSTANTminusCODE+00H
DD 020H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'DIS-OPT',cfa_DISminusOPT
 
call cfa_FALSE+00H
call cfa_OPTque+09H
DB 0C3H
AHEADER 0 ,'SET-OPT',cfa_SETminusOPT
 
call cfa_TRUE+00H
call cfa_OPTque+09H
DB 0C3H
AHEADER 0 ,'J_COD',cfa_J_COD
 
call cfa__CONSTANTminusCODE+00H
DD 084H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'OPT?',cfa_OPTque
 
call cfa__CONSTANTminusCODE+00H
DD 0FFFFFFFFH
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'REL@',cfa_REL_ld
 
DB 089H,045H,0FCH
DB 08BH,00H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'RESIZE',cfa__RESIZE
 
call cfa_THROW+00H
call cfa__CLITERALminusCODE+00H
DB 015H
DB 'RESIZE is''t in system',0
call cfa__cABORTdticcend+00H
DB 0C3H
AHEADER 0 ,'FREE',cfa_FREE
 
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 05H
DB 0B8H
DD 044H
DB 08BH,04DH,0FCH
DB 08BH,05DH,0F8H
DB 0CDH,040H
DB 033H,0C0H
DB 0C3H
AHEADER 0 ,'ALLOCATE',cfa_ALLOCATE
 
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 05H
DB 0B8H
DD 044H
DB 08BH,04DH,0FCH
DB 08BH,05DH,0F8H
DB 0CDH,040H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'USER-HERE',cfa_USERminusHERE
 
call cfa_USERminusOFFS+00H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'USER-ALLOT',cfa_USERminusALLOT
 
call cfa_USERminusOFFS+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'ERR',cfa__ERR
 
DB 0C3H
AHEADER 0 ,'THREAD-HEAP',cfa_THREADminusHEAP
 
call cfa__USERminusCODE+00H
DD reserve+01024H
AHEADER 0 ,'REPOSITION-FILE',cfa_REPOSITIONminusFILE
 
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 03H,045H,0FCH
call cfa_Dsave+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'FILE-POSITION',cfa_FILEminusPOSITION
 
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 03H,045H,0FCH
DB 08BH,010H
DB 089H,055H,0FCH
DB 08BH,040H,04H
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08DH,06DH,0F8H
DB 0C3H
AHEADER 0 ,'READ-LINE',cfa_READminusLINE
 
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
call cfa_FILEminusPOSITION+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_READminusLINE+01FH
DB 074H,09H
DB 0C7H,045H,00H
DD 00H
DB 033H,0C0H
call cfa__fp1+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa__fp2+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,040H,01H
DB 089H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,04H
call cfa__addr+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 089H,045H,04H
DB 08BH,04H,024H
DB 08DH,06DH,04H
call cfa_READminusFILE+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_READminusLINE+091H
DB 074H,01FH
DB 083H,0C4H,04H
DB 089H,045H,00H
DB 0C7H,045H,0FCH
DD 00H
DB 033H,0C0H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,055H,00H
DB 08DH,06DH,0FCH
DB 0C3H
DB 089H,045H,0FCH
DB 050H
DB 083H,07DH,0FCH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_READminusLINE+0BEH
DB 075H,01DH
DB 083H,0C4H,04H
DB 083H,0C4H,04H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 00H
DB 0C7H,045H,0F4H
DD 00H
DB 033H,0C0H
DB 08DH,06DH,0F4H
DB 0C3H
call cfa__addr+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,06DH,0FCH
call cfa_LT+00H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_SEARCH+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_READminusLINE+0160H
DB 074H,070H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__addr+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 089H,045H,00H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 099H
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa__fp2+00H
DB 08BH,00H
call cfa__fp1+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 01H,055H,08H
DB 013H,045H,04H
DB 083H,0C4H,04H
DB 089H,045H,04H
DB 058H
DB 08DH,06DH,04H
call cfa_REPOSITIONminusFILE+00H
DB 08BH,045H,00H
DB 089H,045H,00H
call cfa__addr+00H
DB 08BH,00H
DB 03H,045H,00H
DB 0FH,0B6H,040H,0FFH
DB 089H,045H,00H
DB 03DH
DD 0DH
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_READminusLINE+015EH
DB 075H,03H
DB 08DH,040H,0FFH
DB 0EBH,0DH
DB 08BH,045H,04H
DB 089H,045H,04H
DB 058H
DB 083H,0C4H,04H
DB 08DH,06DH,04H
call cfa_TRUE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'_addr',cfa__addr
 
call cfa__USERminusCODE+00H
DD reserve+01020H
AHEADER 0 ,'_fp2',cfa__fp2
 
call cfa__USERminusCODE+00H
DD reserve+0101CH
AHEADER 0 ,'_fp1',cfa__fp1
 
call cfa__USERminusCODE+00H
DD reserve+01018H
AHEADER 0 ,'CLOSE-FILE',cfa_CLOSEminusFILE
 
DB 089H,045H,0FCH
DB 0B8H
DD 014H
DB 03H,045H,0FCH
DB 0C7H,00H
DD 00H
DB 033H,0C0H
DB 0C3H
AHEADER 0 ,'OPEN-FILE',cfa_OPENminusFILE
 
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FALLOC+00H
DB 0BH,0C0H
;je cfa_OPENminusFILE+051H
DB 074H,042H
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,04H,024H
call cfa_FILE_STR+00H
call cfa_ERASE+00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 089H,045H,0F8H
DB 0B8H
DD 014H
DB 03H,045H,0F8H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_MOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08DH,06DH,0F8H
DB 0C3H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'FALLOC',cfa_FALLOC
 
call cfa_FILE_STR_BUF+00H
call cfa_FILE_STR+00H
call cfa_MAX_OPEN_FILES+00H
DB 0F7H,06DH,00H
DB 03H,045H,04H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 08DH,06DH,04H
DB 090H
DB 089H,045H,0F8H
DB 0B9H
DD 014H
DB 03H,04DH,0F8H
DB 08BH,09H
DB 0BH,0C9H
;jne cfa_FALLOC+036H
DB 075H,04H
DB 08DH,06DH,04H
DB 0C3H
call cfa_FILE_STR+00H
DB 03H,045H,00H
DB 03BH,045H,04H
DB 08DH,06DH,04H
;jbe cfa_FALLOC+021H
DB 076H,0DBH
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'FILE_STR_BUF',cfa_FILE_STR_BUF
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H
AHEADER 0 ,'MAX_OPEN_FILES',cfa_MAX_OPEN_FILES
 
call cfa__CONSTANTminusCODE+00H
DD 016H
AHEADER 0 ,'READ-FILE',cfa_READminusFILE
 
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,04H,024H
DB 089H,045H,0FCH
DB 0B8H
DD 0CH
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 089H,045H,04H
DB 08BH,04H,024H
DB 089H,045H,00H
DB 0B8H
DD 010H
DB 03H,045H,00H
DB 08BH,055H,04H
DB 089H,010H
DB 08BH,045H,08H
DB 089H,045H,08H
DB 08BH,04H,024H
DB 089H,045H,04H
DB 0B8H
DD 046H
DB 08BH,05DH,04H
DB 0CDH,040H
DB 089H,045H,04H
DB 08BH,0C3H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 089H,055H,00H
DB 03DH
DD 06H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_READminusFILE+074H
DB 075H,02H
DB 033H,0C0H
DB 0BH,0C0H
;jne cfa_READminusFILE+0CBH
DB 075H,053H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 089H,045H,0F8H
DB 0B8H
DD 04H
DB 03H,045H,0F8H
DB 08BH,010H
DB 089H,055H,0F8H
DB 08BH,040H,04H
DB 089H,045H,0F4H
DB 08BH,04H,024H
DB 089H,045H,0F0H
DB 0B8H
DD 0CH
DB 03H,045H,0F0H
DB 08BH,00H
DB 089H,045H,0F0H
DB 033H,0C0H
DB 08BH,055H,0F0H
DB 01H,055H,0F8H
DB 013H,045H,0F4H
DB 089H,045H,0F4H
DB 08BH,04H,024H
DB 089H,045H,0F0H
DB 0B8H
DD 04H
DB 03H,045H,0F0H
DB 08DH,06DH,0F4H
call cfa_Dsave+00H
DB 083H,0C4H,04H
DB 0C3H
AHEADER 0 ,'UNIX-LINES',cfa_UNIXminusLINES
 
DB 089H,045H,0FCH
DB 0B8H
DD 0A0AH
DB 08DH,06DH,0FCH
call cfa_LT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 01H
DB 08DH,06DH,04H
call cfa_LTL+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'DOS-LINES',cfa_DOSminusLINES
 
DB 089H,045H,0FCH
DB 0B8H
DD 0A0DH
DB 08DH,06DH,0FCH
call cfa_LT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 02H
DB 08DH,06DH,04H
call cfa_LTL+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'LTL',cfa_LTL
 
call cfa__CREATEminusCODE+00H
DD 02H
AHEADER 0 ,'LT',cfa_LT
 
call cfa__CREATEminusCODE+00H
DD 0A0D0A0DH
AHEADER 0 ,'KEY',cfa_KEY
 
call cfa__VECTminusCODE+00H
DD cfa__KEY+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'KEY?',cfa_KEYque
 
call cfa_EVENTminusCASE+00H
call cfa_DOminusKEYque+00H
call cfa_and_KEY+00H
DB 08BH,00H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 0C3H
AHEADER 0 ,'DO-KEY?',cfa_DOminusKEYque
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'PENDING-CHAR',cfa_PENDINGminusCHAR
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'SPACES',cfa_SPACES
 
DB 090H
DB 0BH,0C0H
DW 0840FH
DD cfa_SPACES+018H-$-4
call cfa_BL+00H
call cfa_EMIT+00H
DB 08DH,040H,0FFH
DB 0EBH,0E9H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SPACE',cfa_SPACE
 
call cfa_BL+00H
call cfa_EMIT+00H
DB 0C3H
AHEADER 0 ,'BL',cfa_BL
 
call cfa__CONSTANTminusCODE+00H
DD 020H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'PAGE',cfa__PAGE
 
call cfa_draw_window+00H
call cfa_SCR_BUF+00H
call cfa_SCR_WIDTH+00H
call cfa_SCR_HEIGHT+00H
DB 0F7H,06DH,00H
DB 08DH,06DH,04H
call cfa_BLANK+00H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 00H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa_ATminusXY+00H
call cfa_DRAW_LINS+00H
DB 0C3H
AHEADER 0 ,'_KEY',cfa__KEY
 
call cfa_CORSOR_DROW+00H
call cfa_KEYque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__KEY+05H
DB 074H,0F1H
call cfa_and_KEY+00H
DB 0FH,0B6H,00H
call cfa_and_KEY+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SWITCH_CHAR+00H
DB 0C3H
AHEADER 0 ,'KEY_M',cfa_KEY_M
 
call cfa_DR_CUR+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_queKEY+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_KEY_M+05H
DB 074H,0E9H
call cfa_CL_CUR+00H
call cfa_SWITCH_CHAR+00H
DB 0C3H
AHEADER 0 ,'SWITCH_CHAR',cfa_SWITCH_CHAR
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0C7H,045H,0F4H
DD 061H
DB 0B8H
DD 07AH
DB 08DH,040H,01H
DB 08DH,06DH,0F4H
call cfa_WITHIN+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,045H,0F8H
DB 0C7H,045H,0F4H
DD 041H
DB 0B8H
DD 05AH
DB 08DH,040H,01H
DB 08DH,06DH,0F4H
call cfa_WITHIN+00H
DB 0BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_SWITCH_CHAR+053H
DB 074H,0BH
DB 089H,045H,0FCH
DB 0B8H
DD 020H
DB 033H,045H,0FCH
DB 0C3H
AHEADER 0 ,'_EMIT',cfa__EMIT
 
DB 03DH
DD 0DH
;jne cfa__EMIT+013H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SCR_CR+00H
DB 0C3H
DB 03DH
DD 08H
;jne cfa__EMIT+08EH
DB 075H,074H
DB 0B8H
DD 0800000H
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0DH
DB 0F7H,06DH,0FCH
DB 08DH,040H,015H
DB 0C1H,0E0H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0BH
DB 0BH,045H,0FCH
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,040H,02H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 0F7H,06DH,0FCH
DB 0C1H,0E0H,010H
DB 0DH
DD 06H
DB 089H,045H,0FCH
DB 0B8H
DD 0DH
DB 08BH,055H,04H
DB 08BH,04DH,00H
DB 08BH,05DH,0FCH
DB 0CDH,040H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
call cfa_ATminusXYque+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,040H,0FFH
DB 089H,045H,00H
DB 058H
call cfa_ATminusXY+00H
DB 0C3H
DB 050H
DB 08BH,045H,00H
DB 08BH,0C4H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa__TYPE+00H
DB 083H,0C4H,04H
DB 0C3H
AHEADER 0 ,'CR',cfa_CR
 
call cfa__VECTminusCODE+00H
DD cfa__CR+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'_CR',cfa__CR
 
DB 089H,045H,0FCH
DB 0B8H
DD 0DH
DB 08DH,06DH,0FCH
call cfa_EMIT+00H
DB 0C3H
AHEADER 0 ,'_TYPE',cfa__TYPE
 
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa_SCR_BUF+00H
call cfa_ATminusXYque+00H
DB 089H,045H,0FCH
DB 0B8H
DD 050H
DB 0F7H,06DH,0FCH
DB 03H,045H,00H
DB 03H,045H,04H
DB 08BH,055H,08H
DB 089H,045H,08H
DB 08BH,0C2H
DB 08DH,06DH,08H
call cfa_CMOVE+00H
call cfa_SCR_TYPE+00H
DB 0C3H
AHEADER 0 ,'TYPE_M',cfa_TYPE_M
 
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 02BH,0D0H
DW 0840FH
DD cfa_TYPE_M+02FH-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_EMIT_N+00H
DB 08DH,040H,01H
DB 0EBH,0E2H
call cfa_CC_LINES+00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'ACCEPT',cfa_ACCEPT
 
call cfa__VECTminusCODE+00H
DD cfa_ACCEPT0+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'ACCEPT0',cfa_ACCEPT0
 
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 03H,045H,0FCH
DB 08DH,040H,0FFH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_NMNM+00H
DB 090H
DB 090H
DB 090H
call cfa_KEY+00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 0AH
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 0DH
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 08BH,045H,0FCH
DW 0850FH
DD cfa_ACCEPT0+0142H-$-4
DB 03DH
DD 01BH
;jne cfa_ACCEPT0+071H
DB 075H,013H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 0FH,0B6H,00H
call cfa_EMIT+00H
DB 0E9H
DD cfa_ACCEPT0+012CH-$-4
DB 03DH
DD 08H
;jne cfa_ACCEPT0+0B5H
DB 075H,03DH
call cfa_EMIT+00H
call cfa_BL+00H
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08H
DB 08DH,06DH,0FCH
call cfa_EMIT+00H
DB 08DH,040H,0FEH
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 08DH,040H,0FFH
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_UMAX+00H
DB 0EBH,077H
DB 03DH
DD 09H
;jne cfa_ACCEPT0+0110H
DB 075H,054H
DB 08BH,045H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 08H
DB 08DH,06DH,0FCH
call cfa_BLANK+00H
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,045H,0FCH
DB 058H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08BH,04DH,0FCH
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0F8H
DB 0B8H
DD 08H
DB 08BH,0C8H
DB 08BH,045H,0F8H
DB 099H
DB 0F7H,0F9H
DB 08DH,040H,01H
DB 089H,045H,0F8H
DB 0B8H
DD 08H
DB 0F7H,06DH,0F8H
DB 03H,045H,0FCH
DB 0EBH,01CH
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_EMIT+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
call cfa_UMIN+00H
DB 0E9H
DD cfa_ACCEPT0+01DH-$-4
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 03H,045H,08H
DB 0F7H,0D8H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'NMNM',cfa_NMNM
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 0BH,0C0H
DB 08BH,045H,0FCH
;je cfa_NMNM+0CH
DB 074H,00H
DB 0C3H
AHEADER 0 ,'SOURCE-NAME',cfa_SOURCEminusNAME
 
call cfa_CURFILE+00H
DB 08BH,00H
DB 0BH,0C0H
;je cfa_SOURCEminusNAME+012H
DB 074H,07H
call cfa_ASCIIZgreat+00H
DB 0EBH,08H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'+LibraryDirName',cfa_plusLibraryDirName
 
call cfa__2greatR+00H
call cfa_ModuleDirName+00H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa__SLITERALminusCODE+00H
DB 06H
DB 'devel\',0
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,055H,04H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_MOVE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa__2Rgreat+00H
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,055H,04H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08DH,040H,01H
call cfa_MOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'+ModuleDirName',cfa_plusModuleDirName
 
call cfa__2greatR+00H
call cfa_ModuleDirName+00H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa__2Rgreat+00H
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,055H,04H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08DH,040H,01H
call cfa_MOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'ModuleDirName',cfa_ModuleDirName
 
call cfa_ModuleName+00H
call cfa_CUTminusPATH+00H
DB 0C3H
AHEADER 0 ,'ModuleName',cfa_ModuleName
 
call cfa_ABORT+00H
DB 0C3H
AHEADER 0 ,'CUT-PATH',cfa_CUTminusPATH
 
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 033H,045H,0F8H
DB 08BH,045H,0FCH
DW 0840FH
DD cfa_CUTminusPATH+042H-$-4
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_is_path_delimiter+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_CUTminusPATH+03FH-$-4
DB 08DH,040H,0FFH
DB 0EBH,0CAH
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'is_path_delimiter',cfa_is_path_delimiter
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 05CH
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 0B8H
DD 02FH
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'SCREEN-LENGTH',cfa_SCREENminusLENGTH
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,0FCH
DB 089H,055H,0FCH
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 03H,045H,0F8H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,04H
DB 0BBH
DD cfa_SCREENminusLENGTH+07EH
DB 03BH,045H,0F8H
;jne cfa_SCREENminusLENGTH+034H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 0FH,0B6H,00H
DB 03DH
DD 09H
DB 08BH,045H,0FCH
;jne cfa_SCREENminusLENGTH+072H
DB 075H,017H
DB 0C1H,0E8H,03H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08BH,0C8H
DB 08BH,045H,0FCH
DB 0D3H,0E0H
DB 0EBH,03H
DB 08DH,040H,01H
DB 0FFH,04H,024H
;jno cfa_SCREENminusLENGTH+044H
DB 071H,0CAH
DB 08DH,064H,024H,0CH
DB 0C3H
AHEADER 0 ,'>NUMBER',cfa_greatNUMBER
 
DB 090H
DB 0BH,0C0H
DW 0840FH
DD cfa_greatNUMBER+090H-$-4
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 050H
DB 08BH,045H,00H
DB 0FH,0B6H,00H
DB 08DH,06DH,04H
call cfa_BASE+00H
DB 08BH,00H
call cfa_DIGIT+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_greatNUMBER+03CH
DB 075H,0CH
DB 089H,045H,0FCH
DB 058H
DB 089H,045H,0F8H
DB 058H
DB 08DH,06DH,0F8H
DB 0C3H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_BASE+00H
DB 08BH,00H
DB 0F7H,065H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,045H,00H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,045H,08H
DB 089H,055H,08H
DB 08DH,06DH,04H
call cfa_BASE+00H
DB 08BH,00H
DB 0F7H,065H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 01H,055H,08H
DB 013H,045H,04H
DB 089H,045H,04H
DB 058H
DB 08DH,040H,01H
DB 089H,045H,00H
DB 058H
DB 08DH,040H,0FFH
DB 0E9H
DD cfa_greatNUMBER+01H-$-4
DB 0C3H
AHEADER 0 ,'DIGIT',cfa_DIGIT
 
DB 050H
DB 0B8H
DD 030H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 089H,045H,00H
DB 0B8H
DD 0AH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 03BH,045H,0FCH
DB 08DH,06DH,04H
;jbe cfa_DIGIT+09AH
DB 076H,079H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0C7H,045H,0F4H
DD 041H
DB 0B8H
DD 030H
DB 0F7H,0D8H
DB 03H,045H,0F4H
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
;jle cfa_DIGIT+046H
DB 07EH,06H
DB 083H,0C4H,04H
DB 033H,0C0H
DB 0C3H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0C7H,045H,0F4H
DD 061H
DB 0B8H
DD 030H
DB 0F7H,0D8H
DB 03H,045H,0F4H
DB 08DH,040H,0FFH
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
;jge cfa_DIGIT+081H
DB 07DH,019H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 061H
DB 0B8H
DD 041H
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 011H
DB 0B8H
DD 0AH
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 058H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 03BH,045H,0F8H
DB 01BH,0C0H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;jne cfa_DIGIT+0B3H
DB 075H,03H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'(.")',cfa__cdotdticcend
 
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_TYPE+00H
DB 0C3H
AHEADER 0 ,'DUMP',cfa_DUMP
 
DB 0BH,0C0H
;jne cfa_DUMP+0BH
DB 075H,07H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
call cfa_BASE+00H
DB 08BH,00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_HEX+00H
DB 08DH,040H,0FH
DB 089H,045H,0FCH
DB 0B8H
DD 010H
DB 08BH,0C8H
DB 08BH,045H,0FCH
DB 033H,0D2H
DB 0F7H,0F1H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 0BAH
DD 080000000H
DB 02BH,055H,0FCH
DB 08DH,01CH,02H
DB 08BH,045H,00H
DB 08BH,0D2H
DB 08DH,06DH,04H
DB 068H
DD cfa_DUMP+010FH
DB 052H
DB 053H
call cfa_CR+00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 04H
DB 08DH,06DH,0F8H
call cfa_dot0+00H
call cfa_SPACE+00H
call cfa_SPACE+00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0C7H,045H,0F4H
DD 010H
DB 033H,0C0H
DB 0BAH
DD 080000000H
DB 02BH,055H,0F4H
DB 08DH,01CH,02H
DB 08BH,045H,0F8H
DB 08BH,0D2H
DB 08DH,06DH,0FCH
DB 068H
DD cfa_DUMP+0ECH
DB 052H
DB 053H
DB 090H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 089H,045H,0F8H
DB 0B8H
DD 04H
DB 08BH,0C8H
DB 08BH,045H,0F8H
DB 099H
DB 0F7H,0F9H
DB 08BH,0C2H
DB 0BH,0C0H
DB 08BH,045H,0FCH
;jne cfa_DUMP+0C5H
DB 075H,05H
call cfa_SPACE+00H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 02H
DB 08DH,06DH,0F8H
call cfa_dot0+00H
call cfa_SPACE+00H
DB 08DH,040H,01H
DB 0FFH,04H,024H
;jno cfa_DUMP+09DH
DB 071H,0B5H
DB 08DH,064H,024H,0CH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 0B8H
DD 010H
DB 08DH,06DH,0FCH
call cfa_PTYPE+00H
DB 0FFH,04H,024H
DW 0810FH
DD cfa_DUMP+051H-$-4
DB 08DH,064H,024H,0CH
DB 08BH,045H,00H
DB 089H,045H,00H
DB 058H
call cfa_BASE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'PTYPE',cfa_PTYPE
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 0BAH
DD 080000000H
DB 02BH,055H,0FCH
DB 08DH,01CH,02H
DB 08BH,045H,00H
DB 08BH,0D2H
DB 08DH,06DH,04H
DB 068H
DD cfa_PTYPE+040H
DB 052H
DB 053H
DB 090H
DB 090H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_greatPRT+00H
call cfa_EMIT+00H
DB 08DH,040H,01H
DB 0FFH,04H,024H
;jno cfa_PTYPE+021H
DB 071H,0E5H
DB 08DH,064H,024H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'>PRT',cfa_greatPRT
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_BL+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_greatPRT+01BH
DB 076H,05H
DB 0B8H
DD 02EH
DB 0C3H
AHEADER 0 ,'.0',cfa_dot0
 
DB 050H
DB 033H,0C0H
call cfa_lessn+00H
call cfa_nS+00H
call cfa_ngreat+00H
DB 089H,045H,0FCH
DB 058H
DB 08BH,04DH,0FCH
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa_MAX+00H
DB 0BH,0C0H
DW 0840FH
DD cfa_dot0+070H-$-4
DB 089H,045H,0FCH
DB 033H,0C0H
DB 0BAH
DD 080000000H
DB 02BH,055H,0FCH
DB 08DH,01CH,02H
DB 08BH,045H,00H
DB 08BH,0D2H
DB 08DH,06DH,04H
DB 068H
DD cfa_dot0+06EH
DB 052H
DB 053H
DB 090H
DB 090H
DB 090H
DB 089H,045H,0FCH
DB 0B8H
DD 030H
DB 08DH,06DH,0FCH
call cfa_EMIT+00H
DB 0FFH,04H,024H
;jno cfa_dot0+055H
DB 071H,0EBH
DB 08DH,064H,024H,0CH
DB 0EBH,06H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_TYPE+00H
DB 0C3H
AHEADER 0 ,'U.',cfa_Udot
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ddot+00H
DB 0C3H
AHEADER 0 ,'U.R',cfa_UdotR
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_DdotR+00H
DB 0C3H
AHEADER 0 ,'.R',cfa_dotR
 
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 099H
DB 08BH,0C2H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_DdotR+00H
DB 0C3H
AHEADER 0 ,'D.R',cfa_DdotR
 
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__cDdotcend+00H
DB 089H,045H,0FCH
DB 058H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 08DH,06DH,0FCH
call cfa__0MAX+00H
call cfa_SPACES+00H
call cfa_TYPE+00H
DB 0C3H
AHEADER 0 ,'.',cfa_dot
 
DB 089H,045H,0FCH
DB 099H
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_Ddot+00H
DB 0C3H
AHEADER 0 ,'D.',cfa_Ddot
 
call cfa__cDdotcend+00H
call cfa_TYPE+00H
call cfa_SPACE+00H
DB 0C3H
AHEADER 0 ,'(D.)',cfa__cDdotcend
 
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
call cfa_DABS+00H
call cfa_lessn+00H
call cfa_nS+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_SIGN+00H
call cfa_ngreat+00H
DB 0C3H
AHEADER 0 ,'SIGN',cfa_SIGN
 
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jge cfa_SIGN+01AH
DB 07DH,010H
DB 089H,045H,0FCH
DB 0B8H
DD 02DH
DB 08DH,06DH,0FCH
call cfa_HOLD+00H
DB 0C3H
AHEADER 0 ,'#>',cfa_ngreat
 
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_HLD+00H
DB 08BH,00H
call cfa_PAD+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 08DH,040H,0FFH
DB 0C3H
AHEADER 0 ,'#S',cfa_nS
 
DB 090H
call cfa_n+00H
DB 08BH,055H,00H
DB 0BH,0D0H
;jne cfa_nS+01H
DB 075H,0F4H
DB 0C3H
AHEADER 0 ,'#',cfa_n
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_BASE+00H
DB 08BH,00H
call cfa_UM_divMOD+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_BASE+00H
DB 08BH,00H
call cfa_UM_divMOD+00H
DB 089H,045H,0FCH
DB 058H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 089H,055H,00H
DB 08DH,06DH,0FCH
call cfa_DIGITgreat+00H
call cfa_HOLD+00H
DB 0C3H
AHEADER 0 ,'DIGIT>',cfa_DIGITgreat
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 0AH
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
;jg cfa_DIGITgreat+01EH
DB 07FH,0BH
DB 089H,045H,0FCH
DB 0B8H
DD 07H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 0B8H
DD 030H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'<#',cfa_lessn
 
call cfa_PAD+00H
DB 08DH,040H,0FFH
call cfa_HLD+00H
DB 08BH,055H,00H
DB 089H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_PAD+00H
DB 08DH,040H,0FFH
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'HOLDS',cfa_HOLDS
 
DB 08BH,055H,00H
DB 089H,055H,0FCH
DB 089H,045H,00H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0BBH
DD cfa_HOLDS+062H
DB 03BH,045H,0F8H
;jne cfa_HOLDS+029H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 0F7H,0D8H
DB 03H,045H,0F8H
DB 08DH,040H,0FFH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_HOLD+00H
DB 0FFH,04H,024H
;jno cfa_HOLDS+039H
DB 071H,0DBH
DB 08DH,064H,024H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'HOLD',cfa_HOLD
 
call cfa_HLD+00H
DB 08BH,00H
DB 08DH,040H,0FFH
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_HLD+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08BH,055H,08H
DB 088H,010H
DB 08BH,045H,0CH
DB 08DH,06DH,010H
DB 0C3H
AHEADER 0 ,'DECIMAL',cfa_DECIMAL
 
DB 089H,045H,0FCH
DB 0B8H
DD 0AH
DB 08DH,06DH,0FCH
call cfa_BASE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'HEX',cfa_HEX
 
DB 089H,045H,0FCH
DB 0B8H
DD 010H
DB 08DH,06DH,0FCH
call cfa_BASE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SYSTEM-PAD',cfa_SYSTEMminusPAD
 
call cfa__USERminusCODE+00H
DD reserve+018H
AHEADER 0 ,'NUMERIC-OUTPUT-LENGTH',cfa_NUMERICminusOUTPUTminusLENGTH
 
call cfa__CONSTANTminusCODE+00H
DD 01000H
AHEADER 0 ,'ABORT',cfa_ABORT
 
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'CATCH',cfa_CATCH
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08BH,0C5H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_HANDLER+00H
DB 08BH,00H
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 08BH,0C4H
call cfa_HANDLER+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_EXECUTE+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_HANDLER+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 083H,0C4H,04H
DB 089H,045H,04H
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'<SET-EXC-HANDLER>',cfa_lessSETminusEXCminusHANDLERgreat
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'THROW',cfa_THROW
 
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_THROW+061H
DB 074H,052H
call cfa_HANDLER+00H
DB 08BH,00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_THROW+05CH
DB 074H,037H
DB 08BH,0E0H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 058H
call cfa_HANDLER+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 089H,045H,04H
DB 058H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 050H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_SPsave+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 058H
DB 0EBH,05H
call cfa_FATALminusHANDLER+00H
DB 0C3H
AHEADER 0 ,'(THROW)',cfa__cTHROWcend
 
DB 0BH,0C0H
;je cfa__cTHROWcend+05FH
DB 074H,05BH
DB 03DH
DD 06DH
;jne cfa__cTHROWcend+012H
DB 075H,07H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
call cfa_HANDLER+00H
DB 08BH,00H
DB 0BH,0C0H
;je cfa__cTHROWcend+054H
DB 074H,037H
DB 08BH,0E0H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 058H
call cfa_HANDLER+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 089H,045H,04H
DB 058H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 050H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_SPsave+00H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 058H
DB 0EBH,0BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FATALminusHANDLER+00H
DB 0C3H
AHEADER 0 ,'FATAL-HANDLER',cfa_FATALminusHANDLER
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 1 ,'Z\"',cfa_Zsldtic
 
DB 089H,045H,0FCH
DB 0B8H
DD 022H
DB 08DH,06DH,0FCH
call cfa_PARSE+00H
call cfa_ZslLITERAL+00H
DB 0C3H
AHEADER 1 ,'Z"',cfa_Zdtic
 
DB 089H,045H,0FCH
DB 0B8H
DD 022H
DB 08DH,06DH,0FCH
call cfa_PARSE+00H
call cfa_ZLITERAL+00H
DB 0C3H
AHEADER 1 ,'ZLITERAL',cfa_ZLITERAL
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_ZLITERAL+058H
DB 074H,047H
DB 089H,045H,0FCH
DB 0B8H
DD cfa_ALITERAL+00H
DB 08DH,06DH,0FCH
call cfa_COMPILEcom_M+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_HERE+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_MOVE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0EBH,026H
DB 089H,045H,0FCH
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_ALLOCATE+00H
call cfa_THROW+00H
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
call cfa_CZMOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 1 ,'Z\LITERAL',cfa_ZslLITERAL
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_ZslLITERAL+065H
DB 074H,054H
DB 089H,045H,0FCH
DB 0B8H
DD cfa_ALITERAL+00H
DB 08DH,06DH,0FCH
call cfa_COMPILEcom_M+00H
call cfa_HERE+00H
DB 08DH,040H,01H
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
call cfa_ESCminusCZMOVE+00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,06DH,0FCH
call cfa_ASCIIZgreat+00H
DB 08DH,040H,02H
DB 089H,045H,00H
call cfa_ALLOT+00H
DB 08DH,040H,0FEH
DB 089H,045H,0FCH
DB 058H
DB 08DH,040H,0FFH
DB 08BH,055H,0FCH
DB 088H,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,026H
DB 089H,045H,0FCH
DB 08DH,040H,01H
DB 08DH,06DH,0FCH
call cfa_ALLOCATE+00H
call cfa_THROW+00H
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
call cfa_ESCminusCZMOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'ESC-CZMOVE',cfa_ESCminusCZMOVE
 
call cfa_toadr+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_counter+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_fromadr+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 090H
call cfa_zchar+00H
DB 03DH
DD 05CH
;jne cfa_ESCminusCZMOVE+04DH
DB 075H,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_zchar+00H
call cfa_escape+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_cgreat+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_ESCminusCZMOVE+031H
DB 075H,0CFH
DB 0C3H
AHEADER 0 ,'escape',cfa_escape
 
DB 03DH
DD 06EH
;jne cfa_escape+011H
DB 075H,0AH
DB 0B8H
DD 0AH
DB 0E9H
DD cfa_escape+011AH-$-4
DB 03DH
DD 072H
;jne cfa_escape+022H
DB 075H,0AH
DB 0B8H
DD 0DH
DB 0E9H
DD cfa_escape+011AH-$-4
DB 03DH
DD 074H
;jne cfa_escape+033H
DB 075H,0AH
DB 0B8H
DD 09H
DB 0E9H
DD cfa_escape+011AH-$-4
DB 03DH
DD 062H
;jne cfa_escape+044H
DB 075H,0AH
DB 0B8H
DD 08H
DB 0E9H
DD cfa_escape+011AH-$-4
DB 03DH
DD 071H
;jne cfa_escape+055H
DB 075H,0AH
DB 0B8H
DD 022H
DB 0E9H
DD cfa_escape+011AH-$-4
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 02FH
DB 089H,045H,0F4H
DB 08BH,045H,0F8H
DB 039H,045H,0F4H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 08BH,055H,0F8H
DB 089H,045H,0F8H
DB 089H,055H,0F4H
DB 0B8H
DD 03AH
DB 039H,045H,0F4H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 023H,045H,0F8H
DB 08BH,045H,0FCH
DW 0840FH
DD cfa_escape+011AH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 030H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_zchar+00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 02FH
DB 089H,045H,0F4H
DB 08BH,045H,0F8H
DB 039H,045H,0F4H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 08BH,055H,0F8H
DB 089H,045H,0F8H
DB 089H,055H,0F4H
DB 0B8H
DD 03AH
DB 039H,045H,0F4H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 023H,045H,0F8H
DB 08BH,045H,0FCH
DW 0840FH
DD cfa_escape+010BH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 030H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 0B8H
DD 0AH
DB 0F7H,06DH,0FCH
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0EBH,096H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_escape+011AH
DB 074H,05H
call cfa_unchar+00H
DB 0C3H
AHEADER 0 ,'c>',cfa_cgreat
 
call cfa_toadr+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_toadr+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'unchar',cfa_unchar
 
call cfa_counter+00H
DB 0FFH,00H
DB 0B8H
DD 0FFFFFFFFH
call cfa_fromadr+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'zchar',cfa_zchar
 
call cfa_counter+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 03BH,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jle cfa_zchar+024H
DB 07EH,0AH
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
DB 0EBH,032H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_counter+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_fromadr+00H
DB 08BH,00H
DB 0FH,0B6H,00H
call cfa_fromadr+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'counter',cfa_counter
 
call cfa__USERminusCODE+00H
DD reserve+014H
AHEADER 0 ,'fromadr',cfa_fromadr
 
call cfa__USERminusCODE+00H
DD reserve+010H
AHEADER 0 ,'toadr',cfa_toadr
 
call cfa__USERminusCODE+00H
DD reserve+0CH
AHEADER 0 ,'ALITERAL',cfa_ALITERAL
 
DB 089H,045H,0FCH
DB 058H
DB 08DH,050H,01H
DB 089H,055H,0F8H
DB 0FH,0B6H,00H
DB 089H,045H,0F4H
DB 08BH,045H,0F8H
DB 03H,045H,0F4H
DB 08DH,040H,01H
DB 050H
DB 08BH,045H,0F8H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'CZMOVE',cfa_CZMOVE
 
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 03H,045H,0F8H
DB 050H
DB 08BH,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_CMOVE+00H
DB 089H,045H,0FCH
DB 058H
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08BH,055H,0F8H
DB 089H,045H,0F8H
DB 08BH,0C2H
DB 08BH,055H,0F8H
DB 088H,010H
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'W,',cfa_Wcom
 
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_Wsave+00H
DB 0C3H
AHEADER 0 ,'C,',cfa_Ccom
 
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,',',cfa_com
 
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'ALLOT',cfa_ALLOT
 
call cfa_DP+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'IS-TEMP-WL',cfa_ISminusTEMPminusWL
 
call cfa_GETminusCURRENT+00H
DB 08BH,040H,0FCH
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0C3H
AHEADER 0 ,'GET-CURRENT',cfa_GETminusCURRENT
 
call cfa_CURRENT+00H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'SET-CURRENT',cfa_SETminusCURRENT
 
call cfa_CURRENT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'CFL',cfa_CFL
 
call cfa__CONSTANTminusCODE+00H
DD 05H
AHEADER 1 ,'3RDROP',cfa__3RDROP
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_Cminus3RDROP+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 1 ,'2RDROP',cfa__2RDROP
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_Cminus2RDROP+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 1 ,'RDROP',cfa_RDROP
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusRDROP+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 0 ,'WORDS',cfa_WORDS
 
call cfa__CONTEXT+00H
DB 08BH,00H
call cfa_NLIST+00H
DB 0C3H
AHEADER 0 ,'NLIST',cfa_NLIST
 
DB 08BH,00H
call cfa_CR+00H
call cfa_WminusCNT+00H
DB 0C7H,00H
DD 00H
DB 0B8H
DD 010H
call cfa_NNN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 090H
DB 090H
call cfa_queCRminusBREAK+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_NLIST+084H-$-4
call cfa_WminusCNT+00H
DB 0FFH,00H
DB 08BH,045H,00H
DB 089H,045H,00H
call cfa_IDdot+00H
call cfa_SPACE+00H
call cfa_ATminusXYque+00H
DB 050H
DB 0B8H
DD 08H
DB 08BH,0C8H
DB 08BH,045H,00H
DB 099H
DB 0F7H,0F9H
DB 08DH,040H,01H
DB 089H,045H,00H
DB 0B8H
DD 08H
DB 0F7H,06DH,00H
DB 089H,045H,00H
DB 058H
call cfa_ATminusXY+00H
call cfa_CDR+00H
DB 0EBH,0A5H
call cfa_KEYque+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_NLIST+09EH
DB 074H,0BH
call cfa_KEY+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_CR+00H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 07H
DB 'Words: ',0
call cfa_TYPE+00H
call cfa_WminusCNT+00H
DB 08BH,00H
call cfa_Udot+00H
call cfa_CR+00H
DB 0C3H
AHEADER 0 ,'?CR-BREAK',cfa_queCRminusBREAK
 
DB 0BH,0C0H
DW 0840FH
DD cfa_queCRminusBREAK+0CEH-$-4
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_ZCOUNT+00H
DB 08DH,06DH,04H
call cfa_ATminusXYque+00H
DB 08BH,045H,00H
DB 03H,045H,04H
DB 08DH,06DH,08H
call cfa_SCR_WIDTHminusS+00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 08D0FH
DD cfa_queCRminusBREAK+0C9H-$-4
call cfa_CR+00H
call cfa_NNN+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queCRminusBREAK+073H
DB 074H,025H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_NNN+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TRUE+00H
DB 0E9H
DD cfa_queCRminusBREAK+0C7H-$-4
call cfa__SLITERALminusCODE+00H
DB 05H
DB 'more?',0
call cfa_TYPE+00H
call cfa_CR+00H
DB 089H,045H,0FCH
DB 0B8H
DD 010H
DB 08DH,06DH,0FCH
call cfa_NNN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_KEY+00H
DB 089H,045H,0FCH
DB 0B8H
DD 051H
DB 033H,045H,0FCH
DB 0F7H,0D8H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_queDUP+00H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 0EBH,05H
call cfa_TRUE+00H
DB 0C3H
AHEADER 0 ,'NNN',cfa_NNN
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'LATEST',cfa_LATEST
 
call cfa_CURRENT+00H
DB 08BH,00H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'ORDER',cfa_ORDER
 
call cfa_GETminusORDER+00H
call cfa__SLITERALminusCODE+00H
DB 09H
DB 'Context: ',0
call cfa_TYPE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0BBH
DD cfa_ORDER+054H
DB 03BH,045H,0F8H
;jne cfa_ORDER+031H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
call cfa_VOCminusNAMEdot+00H
call cfa_SPACE+00H
DB 0FFH,04H,024H
;jno cfa_ORDER+041H
DB 071H,0F1H
DB 08DH,064H,024H,0CH
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 09H
DB 'Current: ',0
call cfa_TYPE+00H
DB 089H,045H,0FCH
mov eax,[T_CURRENT-main_task+edi]
DB 08DH,06DH,0FCH
call cfa_VOCminusNAMEdot+00H
call cfa_CR+00H
DB 0C3H
AHEADER 0 ,'VOC-NAME.',cfa_VOCminusNAMEdot
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_FORTHminusWORDLIST+00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_VOCminusNAMEdot+032H-$-4
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__SLITERALminusCODE+00H
DB 05H
DB 'FORTH',0
call cfa_TYPE+00H
DB 0C3H
DB 089H,045H,0FCH
DB 08BH,040H,04H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_VOCminusNAMEdot+04FH
DB 074H,010H
call cfa_IDdot+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0E9H
DD cfa_VOCminusNAMEdot+06FH-$-4
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__SLITERALminusCODE+00H
DB 09H
DB '<NONAME>:',0
call cfa_TYPE+00H
call cfa_Udot+00H
DB 0C3H
AHEADER 0 ,'_PREVIOUS',cfa__PREVIOUS
 
call cfa__CONTEXT+00H
DB 08DH,040H,04H
call cfa__CONTEXT+00H
call cfa_CONTEXT_SIZE+00H
call cfa_CMOVE+00H
DB 0C3H
AHEADER 0 ,'PREVIOUS',cfa_PREVIOUS
 
call cfa__PREVIOUS+00H
DB 0C3H
AHEADER 0 ,'ALSO',cfa_ALSO
 
call cfa__CONTEXT+00H
call cfa__CONTEXT+00H
DB 08DH,040H,04H
call cfa_CONTEXT_SIZE+00H
call cfa_CMOVEgreat+00H
DB 0C3H
AHEADER 0 ,'ONLY',cfa_ONLY
 
call cfa__CONTEXT+00H
DB 08DH,040H,04H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_FORTH+00H
DB 0C3H
AHEADER 0 ,'FORTH',cfa_FORTH
 
call cfa_FORTHminusWORDLIST+00H
call cfa__CONTEXT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SET-ORDER',cfa_SETminusORDER
 
DB 0BH,0C0H
;jge cfa_SETminusORDER+014H
DB 07DH,010H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_ONLY+00H
DB 0E9H
DD cfa_SETminusORDER+077H-$-4
call cfa__CONTEXT+00H
call cfa_CONTEXT_SIZE+00H
call cfa_ERASE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0BBH
DD cfa_SETminusORDER+077H
DB 03BH,045H,0F8H
;jne cfa_SETminusORDER+03AH
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
call cfa__CONTEXT+00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08DH,04H,085H
DD 00H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0FFH,04H,024H
;jno cfa_SETminusORDER+04AH
DB 071H,0D7H
DB 08DH,064H,024H,0CH
DB 0C3H
AHEADER 0 ,'GET-ORDER',cfa_GETminusORDER
 
call cfa_DEPTH+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__CONTEXT+00H
call cfa_GETminusORDER_DROP+00H
call cfa_DEPTH+00H
DB 089H,045H,0FCH
DB 058H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'GET-ORDER_DROP',cfa_GETminusORDER_DROP
 
DB 089H,045H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_GETminusORDER_DROP+023H
DB 074H,017H
DB 050H
DB 08BH,045H,00H
DB 08DH,040H,04H
DB 08DH,06DH,04H
call cfa_GETminusORDER_DROP+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
DB 0C3H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'DEFINITIONS',cfa_DEFINITIONS
 
call cfa__CONTEXT+00H
DB 08BH,00H
call cfa_SETminusCURRENT+00H
DB 0C3H
AHEADER 0 ,'FIND1',cfa_FIND1
 
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_SFIND+00H
DB 0BH,0C0H
;jne cfa_FIND1+023H
DB 075H,0EH
DB 08BH,045H,04H
DB 08DH,040H,0FFH
DB 089H,045H,04H
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SFIND',cfa_SFIND
 
call cfa__CONTEXT+00H
DB 08BH,08H
DB 0BH,0C9H
DW 0840FH
DD cfa_SFIND+050H-$-4
DB 050H
DB 08BH,045H,00H
DB 08BH,055H,04H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 08BH,00H
DB 08DH,06DH,0F8H
call cfa_SEARCHminusWORDLIST+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_SFIND+044H
DB 074H,09H
DB 083H,0C4H,04H
call cfa__2NIP+00H
DB 0C3H
DB 089H,045H,0FCH
DB 058H
DB 08DH,040H,04H
DB 08DH,06DH,0FCH
DB 0EBH,0B5H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'SEARCH-WORDLIST',cfa_SEARCHminusWORDLIST
 
DB 050H
DB 0B8H
DD 07FH
DB 023H,045H,00H
DB 08DH,06DH,04H
call cfa_SEARCHminusBUFF+00H
call cfa_ASCIIminusZ+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_ZSEARCHminusWORDLIST+00H
DB 0C3H
AHEADER 0 ,'ZSEARCH-WORDLIST',cfa_ZSEARCHminusWORDLIST
 
DB 08BH,055H,00H
DB 052H
DB 08BH,00H
DB 050H
DB 08DH,06DH,04H
call cfa_GETPR+00H
DB 085H,0C0H
DW 0840FH
DD cfa_ZSEARCHminusWORDLIST+025H-$-4
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 0FH,0B6H,042H,0F7H
DB 048H
DB 083H,0C8H,01H
DB 0C3H
AHEADER 0 ,'SEARCH-BUFF',cfa_SEARCHminusBUFF
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H
AHEADER 0 ,'CONTEXT_SIZE',cfa_CONTEXT_SIZE
 
call cfa__CONSTANTminusCODE+00H
DD 040H
AHEADER 0 ,'FIND',cfa_FIND
 
call cfa__VECTminusCODE+00H
DD cfa_FIND1+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'WordByAddr',cfa_WordByAddr
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0830FH
DD cfa_WordByAddr+03CH-$-4
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__SLITERALminusCODE+00H
DB 012H
DB '<not in the image>',0
DB 0C3H
call cfa_NEAR_NFA+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0BH,0C0H
DW 0850FH
DD cfa_WordByAddr+068H-$-4
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__SLITERALminusCODE+00H
DB 0BH
DB '<not found>',0
DB 0C3H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'NEAR_NFA',cfa_NEAR_NFA
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_VOCminusLIST+00H
DB 08BH,00H
DB 0BH,0C0H
DW 0840FH
DD cfa_NEAR_NFA+044H-$-4
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
call cfa_WL_NEAR_NFA_M+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_N_UMAX+00H
DB 089H,045H,0FCH
DB 058H
DB 089H,045H,0F8H
DB 058H
DB 08DH,06DH,0F8H
DB 0EBH,0D1H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'WL_NEAR_NFA_M',cfa_WL_NEAR_NFA_M
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,0FCH
DB 089H,055H,0FCH
DB 08DH,040H,04H
DB 08BH,00H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
DW 0840FH
DD cfa_WL_NEAR_NFA_M+062H-$-4
call cfa_WL_NEAR_NFA_N+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 050H
DB 08BH,045H,00H
DB 089H,045H,00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_N_UMAX+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_WL_NEAR_NFA_M+051H
DB 074H,05H
call cfa_CDR+00H
DB 089H,045H,0FCH
DB 058H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
DB 0EBH,0B7H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'WL_NEAR_NFA_N',cfa_WL_NEAR_NFA_N
 
DB 090H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
DB 0BH,0C0H
;je cfa_WL_NEAR_NFA_N+014H
DB 074H,03H
DB 08BH,040H,0F8H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_WL_NEAR_NFA_N+02AH-$-4
call cfa_CDR+00H
DB 0EBH,0D7H
DB 0C3H
AHEADER 0 ,'WL_NEAR_NFA',cfa_WL_NEAR_NFA
 
DB 08BH,00H
DB 090H
DB 090H
DB 090H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
DB 0BH,0C0H
;je cfa_WL_NEAR_NFA+018H
DB 074H,03H
DB 08BH,040H,0F8H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0860FH
DD cfa_WL_NEAR_NFA+02EH-$-4
call cfa_CDR+00H
DB 0EBH,0D7H
DB 0C3H
AHEADER 0 ,'N_UMAX',cfa_N_UMAX
 
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_N_UMAX+010H
DB 074H,03H
DB 08BH,040H,0F8H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
;je cfa_N_UMAX+020H
DB 074H,03H
DB 08BH,040H,0F8H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_N_UMAX+02FH
DB 076H,04H
DB 08DH,06DH,04H
DB 0C3H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'VOC',cfa_VOC
 
call cfa_LAST+00H
DB 08BH,00H
DB 08DH,040H,0F7H
DB 089H,045H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_and_VOC+00H
DB 0BH,045H,00H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 08BH,055H,04H
DB 088H,010H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'?VOC',cfa_queVOC
 
DB 08DH,040H,0F7H
DB 0FH,0B6H,00H
call cfa_and_VOC+00H
DB 023H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'?IMMEDIATE',cfa_queIMMEDIATE
 
DB 08DH,040H,0F7H
DB 0FH,0B6H,00H
call cfa_and_IMMEDIATE+00H
DB 023H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'CDR',cfa_CDR
 
DB 0BH,0C0H
;je cfa_CDR+07H
DB 074H,03H
DB 08BH,040H,0FCH
DB 0C3H
AHEADER 0 ,'NAME>F',cfa_NAMEgreatF
 
DB 08DH,040H,0F7H
DB 0C3H
AHEADER 0 ,'NAME>',cfa_NAMEgreat
 
DB 08BH,040H,0F8H
DB 0C3H
AHEADER 0 ,'NAME>C',cfa_NAMEgreatC
 
DB 08DH,040H,0F8H
DB 0C3H
AHEADER 0 ,'NAME>L',cfa_NAMEgreatL
 
DB 08DH,040H,0FCH
DB 0C3H
AHEADER 0 ,'ID.',cfa_IDdot
 
call cfa_ZCOUNT+00H
call cfa_TYPE+00H
DB 0C3H
AHEADER 0 ,'PAR@',cfa_PAR_ld
 
DB 08DH,040H,04H
DB 08DH,040H,04H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'PAR!',cfa_PARsave
 
DB 08DH,040H,04H
DB 08DH,040H,04H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'CLASS@',cfa_CLASS_ld
 
DB 08DH,040H,04H
DB 08DH,040H,04H
DB 08DH,040H,04H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'CLASS!',cfa_CLASSsave
 
DB 08DH,040H,04H
DB 08DH,040H,04H
DB 08DH,040H,04H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'WORDLIST',cfa_WORDLIST
 
call cfa_HERE+00H
call cfa_VOCminusLIST+00H
DB 08BH,00H
call cfa_com+00H
call cfa_VOCminusLIST+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_HERE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'SWORD,',cfa_SWORDcom
 
call cfa_HERE+00H
DB 08DH,040H,04H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_LAST+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08BH,055H,08H
DB 089H,045H,08H
DB 08BH,0C2H
DB 089H,045H,04H
DB 08BH,00H
DB 08DH,06DH,04H
call cfa_com+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_Scom+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0C3H
AHEADER 0 ,'>BODY',cfa_greatBODY
 
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'&VOC',cfa_and_VOC
 
call cfa__CONSTANTminusCODE+00H
DD 02H
AHEADER 0 ,'&IMMEDIATE',cfa_and_IMMEDIATE
 
call cfa__CONSTANTminusCODE+00H
DD 01H
AHEADER 1 ,'RECURSE',cfa_RECURSE
 
call cfa_queCOMP+00H
call cfa_LASTminusNON+00H
DB 0BH,0C0H
;jne cfa_RECURSE+01FH
DB 075H,011H
DB 08BH,045H,00H
DB 089H,045H,00H
mov eax,[T_CURRENT-main_task+edi]
DB 08BH,00H
DB 08BH,040H,0FBH
call cfa__COMPILEcom+00H
DB 0C3H
AHEADER 1 ,'AGAIN',cfa_AGAIN
 
call cfa_queCOMP+00H
DB 03DH
DD 03H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_AGAIN+022H
DB 074H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82AH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 089H,045H,00H
DB 08DH,080H
DD 080H
DB 03DH
DD 0100H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jae cfa_AGAIN+06FH
DB 073H,022H
call cfa_SetJP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0EBH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_Ccom+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,0BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_BRANCHcom+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_dcomaminusSET+09H
DB 0C3H
AHEADER 1 ,'REPEAT',cfa__REPEAT
 
call cfa_queCOMP+00H
DB 03DH
DD 03H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__REPEAT+022H
DB 074H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82BH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 08DH,040H,02H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 089H,045H,00H
DB 08DH,080H
DD 080H
DB 03DH
DD 0100H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jae cfa__REPEAT+06FH
DB 073H,022H
call cfa_SetJP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0EBH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_Ccom+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0EBH,0BH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_BRANCHcom+00H
call cfa_greatORESOLVE+00H
DB 0C3H
AHEADER 1 ,'WHILE',cfa__WHILE
 
call cfa_queCOMP+00H
call cfa__IF+00H
call cfa__2SWAP+00H
DB 0C3H
AHEADER 1 ,'UNTIL',cfa_UNTIL
 
call cfa_queCOMP+00H
DB 03DH
DD 03H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_UNTIL+022H
DB 074H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82CH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
call cfa_queBRANCHcom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFF80H
DB 08DH,06DH,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 08BH,00H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_UNTIL+09EH
DB 076H,04BH
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 05H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 03F0H
DB 03H,045H,0FCH
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_Wsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 0C3H
AHEADER 1 ,'BEGIN',cfa_BEGIN
 
call cfa_queCOMP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_ALIGNminusNOP+00H
call cfa_lessMARK+00H
DB 089H,045H,0FCH
DB 0B8H
DD 03H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 1 ,'BREAK',cfa__BREAK
 
call cfa_EXIT+00H
call cfa_THEN+00H
DB 0C3H
AHEADER 1 ,'THEN',cfa_THEN
 
call cfa_queCOMP+00H
call cfa_greatORESOLVE+00H
DB 0C3H
AHEADER 1 ,'ELSE',cfa__ELSE
 
call cfa_queCOMP+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_BRANCHcom+00H
call cfa_greatORESOLVE+00H
call cfa_greatMARK+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 1 ,'IF',cfa__IF
 
call cfa_queCOMP+00H
call cfa_DP+00H
DB 08BH,00H
call cfa_queBRANCHcom+00H
call cfa_greatMARK+00H
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'?LITERAL2',cfa_queLITERAL2
 
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_queSLITERAL2+00H
DB 0C3H
AHEADER 0 ,'?SLITERAL2',cfa_queSLITERAL2
 
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 01H
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
;jge cfa_queSLITERAL2+058H
DB 07DH,045H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0FH,0B7H,00H
DB 03DH
DD 07830H
DB 08BH,045H,0FCH
;jne cfa_queSLITERAL2+058H
DB 075H,032H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa__2greatR+00H
call cfa_HEXminusSLITERAL+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queSLITERAL2+053H-$-4
DB 083H,0C4H,04H
DB 083H,0C4H,04H
DB 0C3H
DB 0EBH,05H
call cfa__2Rgreat+00H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa__2greatR+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_queSLITERAL1+00H
call cfa_CATCH+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queSLITERAL2+0182H-$-4
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa__2Rgreat+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0FH,0B6H,00H
DB 089H,045H,0F8H
DB 0B8H
DD 022H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 02H
DB 03BH,045H,0F4H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 023H,045H,0F8H
DB 08BH,045H,0FCH
;je cfa_queSLITERAL2+0ECH
DB 074H,020H
DB 089H,045H,0FCH
DB 0B8H
DD 02H
DB 0F7H,0D8H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 08DH,04H,02H
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08BH,055H,0F8H
DB 089H,045H,0F8H
DB 08BH,0C2H
DB 08BH,055H,0F8H
DB 088H,010H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_INCLUDED_S+00H
call cfa_CATCH+00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 02H
DB 033H,045H,0F8H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 03H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 089H,045H,0F4H
DB 0B8H
DD 0A1H
DB 033H,045H,0F4H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0BH,045H,0F8H
DB 08BH,045H,0FCH
DW 0840FH
DD cfa_queSLITERAL2+017BH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82DH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0EBH,05H
call cfa_THROW+00H
DB 0EBH,06H
DB 083H,0C4H,04H
DB 083H,0C4H,04H
DB 0C3H
AHEADER 0 ,'INCLUDED_S',cfa_INCLUDED_S
 
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82DH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
call cfa_INCLUDED+00H
DB 0C3H
AHEADER 0 ,'HEX-SLITERAL',cfa_HEXminusSLITERAL
 
call cfa_BASE+00H
DB 08BH,00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_HEX+00H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 00H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa__2SWAP+00H
DB 08DH,040H,0FEH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08DH,040H,02H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_greatNUMBER+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_HEXminusSLITERAL+0B0H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 0FH,0B6H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04CH
DB 033H,045H,0FCH
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jne cfa_HEXminusSLITERAL+0AEH
DB 075H,023H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_FALSE+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_BASE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
DB 0EBH,06H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_LITERAL+00H
call cfa_TRUE+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_BASE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'?LITERAL1',cfa_queLITERAL1
 
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_queSLITERAL1+00H
DB 0C3H
AHEADER 0 ,'?SLITERAL1',cfa_queSLITERAL1
 
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 00H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa__2SWAP+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 0FH,0B6H,00H
DB 03DH
DD 02DH
DB 08BH,045H,0FCH
DW 0850FH
DD cfa_queSLITERAL1+048H-$-4
DB 08DH,040H,0FFH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_TRUE+00H
DB 0EBH,05H
call cfa_FALSE+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_greatNUMBER+00H
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 01H
DB 03BH,045H,0F8H
DB 08BH,045H,0FCH
DW 08D0FH
DD cfa_queSLITERAL1+08EH-$-4
call cfa__SLITERALminusCODE+00H
DB 02H
DB '-?',0
call cfa_TYPE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82FH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_queSLITERAL1+0DBH-$-4
DB 0FH,0B6H,00H
DB 03DH
DD 02EH
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_queSLITERAL1+0BCH
DB 074H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82EH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 089H,045H,0FCH
DB 058H
DB 0BH,0C0H
DB 08BH,045H,0FCH
;je cfa_queSLITERAL1+0D4H
DB 074H,0DH
DB 08BH,055H,00H
DB 0F7H,0D8H
DB 0F7H,0DAH
DB 083H,0D8H,00H
DB 089H,055H,00H
call cfa__2LITERAL+00H
DB 0EBH,01BH
DB 08BH,045H,00H
DB 08BH,045H,04H
DB 089H,045H,04H
DB 058H
DB 0BH,0C0H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;je cfa_queSLITERAL1+0F1H
DB 074H,02H
DB 0F7H,0D8H
call cfa_LITERAL+00H
DB 0C3H
AHEADER 0 ,'--',cfa_minusminus
 
call cfa_FIELD+00H
DB 0C3H
AHEADER 0 ,'FIELD',cfa_FIELD
 
call cfa_dcoma+00H
DB 089H,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,0FCH
DB 0BH,0C0H
DW 0840FH
DD cfa_FIELD+032H-$-4
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_LITcom+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_plus+00H
call cfa_COMPILEcom+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa__end+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'\EOF',cfa_slEOF
 
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
call cfa_REFILL+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_slEOF+05H
DB 075H,0F1H
call cfa_sl+00H
DB 0C3H
AHEADER 1 ,'EXIT',cfa_EXIT
 
call cfa_RETcom+00H
DB 0C3H
AHEADER 0 ,'[;]',cfa__x_end_y
 
call cfa_RETcom+00H
call cfa__x+00H
call cfa_REVEAL+00H
call cfa_ClearJpBuff+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_LASTminusNON+09H
DB 0C3H
AHEADER 1 ,';',cfa__end
 
call cfa__x_end_y+00H
DB 0C3H
AHEADER 1 ,'[COMPILE]',cfa__xCOMPILE_y
 
call cfa_queCOMP+00H
call cfa_tic+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 1 ,'(',cfa__c
 
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 089H,045H,0FCH
DB 0B8H
DD 029H
DB 089H,045H,0F8H
DB 08DH,06DH,0F8H
call cfa_PARSE+00H
DB 03H,045H,00H
DB 0FH,0B6H,00H
DB 033H,045H,04H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DW 0840FH
DD cfa__c+03FH-$-4
call cfa_REFILL+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa__c+03DH
DB 075H,01H
DB 0C3H
DB 0EBH,0C6H
DB 0C3H
AHEADER 1 ,'.(',cfa_dot_c
 
DB 089H,045H,0FCH
DB 0B8H
DD 029H
DB 08DH,06DH,0FCH
call cfa_PARSE+00H
call cfa_TYPE+00H
DB 0C3H
AHEADER 1 ,'\',cfa_sl
 
DB 089H,045H,0FCH
DB 0B8H
DD 01H
DB 08DH,06DH,0FCH
call cfa_PARSE+00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 1 ,'POSTPONE',cfa_POSTPONE
 
call cfa_queCOMP+00H
call cfa_PARSEminusWORD+00H
call cfa_SFIND+00H
DB 0BH,0C0H
;jne cfa_POSTPONE+023H
DB 075H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFEBFH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 03DH
DD 01H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_POSTPONE+03EH-$-4
call cfa_COMPILEcom+00H
DB 0E9H
DD cfa_POSTPONE+054H-$-4
call cfa_LITcom+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_COMPILEcom_M+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'COMPILE,_M',cfa_COMPILEcom_M
 
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 1 ,'TO',cfa_TO
 
call cfa_tic+00H
DB 08DH,040H,05H
DB 08DH,040H,04H
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_TO+027H-$-4
call cfa_COMPILEcom+00H
DB 0EBH,05H
call cfa_EXECUTE+00H
DB 0C3H
AHEADER 0 ,'AUTOEXEC',cfa_AUTOEXEC
 
call cfa__SLITERALminusCODE+00H
DB 0BH
DB '/sys/INIT.F',0
call cfa_INCLUDED_+00H
DB 0C3H
AHEADER 0 ,'REQUIRE',cfa_REQUIRE
 
call cfa_PARSEminusNAME+00H
call cfa_PARSEminusNAME+00H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 08DH,04H,02H
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08BH,055H,0F8H
DB 089H,045H,0F8H
DB 08BH,0C2H
DB 08BH,055H,0F8H
DB 088H,010H
DB 08BH,045H,0FCH
call cfa_REQUIRED+00H
DB 0C3H
AHEADER 0 ,'REQUIRED',cfa_REQUIRED
 
call cfa__2SWAP+00H
call cfa_SFIND+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_REQUIRED+023H-$-4
DB 08BH,045H,00H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DB 0EBH,0BH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_INCLUDED_+00H
DB 0C3H
AHEADER 0 ,'INCLUDED_',cfa_INCLUDED_
 
call cfa_R_divO+00H
call cfa_OPENminusFILE+00H
call cfa_THROW+00H
DB 089H,045H,0FCH
DB 050H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_INCLUDEminusFILE+00H
call cfa_CATCH+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_CLOSEminusFILE+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'INCLUDE-FILE',cfa_INCLUDEminusFILE
 
call cfa_greatIN+00H
DB 08BH,00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SOURCEminusID+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SOURCEminusID+09H
DB 089H,045H,0FCH
DB 08BH,0C4H
DB 08DH,06DH,0FCH
call cfa_nTIB+00H
DB 08BH,00H
call cfa_ALIGNED+00H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08BH,0E0H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_TIB+00H
DB 089H,045H,0FCH
DB 08BH,0C4H
DB 08DH,06DH,0FCH
call cfa_nTIB+00H
DB 08BH,00H
call cfa_CMOVE+00H
call cfa_SOURCE+00H
call cfa__2greatR+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_FQUIT+00H
call cfa_CATCH+00H
call cfa_SAVEERR+00H
call cfa__2Rgreat+00H
call cfa_SOURCEsave+00H
DB 089H,045H,0FCH
DB 08BH,0C4H
DB 08DH,06DH,0FCH
call cfa_TIB+00H
call cfa_nTIB+00H
DB 08BH,00H
call cfa_CMOVE+00H
DB 089H,045H,0FCH
DB 08BH,0C4H
DB 08DH,06DH,0FCH
call cfa_nTIB+00H
DB 08BH,00H
call cfa_ALIGNED+00H
DB 03H,045H,00H
DB 08BH,0E0H
DB 08BH,045H,04H
DB 089H,045H,04H
DB 058H
DB 08DH,06DH,04H
call cfa_SOURCEminusID+09H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_greatIN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'FQUIT',cfa_FQUIT
 
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
call cfa_REFILL+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_FQUIT+01FH-$-4
call cfa_INTERPRET+00H
DB 0EBH,0E6H
DB 0C3H
AHEADER 0 ,'EVALUATE',cfa_EVALUATE
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_INTERPRET+00H
call cfa_EVALUATEminusWITH+00H
DB 0C3H
AHEADER 0 ,'EVALUATE-WITH',cfa_EVALUATEminusWITH
 
call cfa_SAVEminusSOURCE+00H
call cfa_NgreatR+00H
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SOURCEsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0FCH
call cfa_SOURCEminusID+09H
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_CATCH+00H
call cfa_NRgreat+00H
call cfa_RESTOREminusSOURCE+00H
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'RESTORE-SOURCE',cfa_RESTOREminusSOURCE
 
DB 03DH
DD 06H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_RESTOREminusSOURCE+012H
DB 074H,05H
call cfa_ABORT+00H
call cfa_CURSTR+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_SOURCEsave+00H
call cfa_greatIN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_SOURCEminusID+09H
call cfa_SOURCEminusIDminusXT+09H
DB 0C3H
AHEADER 0 ,'SAVE-SOURCE',cfa_SAVEminusSOURCE
 
call cfa_SOURCEminusIDminusXT+00H
call cfa_SOURCEminusID+00H
call cfa_greatIN+00H
DB 08BH,00H
call cfa_SOURCE+00H
call cfa_CURSTR+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'MAIN1',cfa_MAIN1
 
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
call cfa_REFILL+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_MAIN1+024H-$-4
call cfa_INTERPRET+00H
call cfa_OKdot+00H
DB 0EBH,0E1H
call cfa__BYE+00H
DB 0C3H
AHEADER 0 ,'QUIT',cfa_QUIT
 
call cfa_CONSOLEminusHANDLES+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_SOURCEminusID+09H
call cfa__x+00H
call cfa_lessMAINgreat+00H
DB 0C3H
AHEADER 0 ,']',cfa__y
 
call cfa_TRUE+00H
call cfa_STATE+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 1 ,'[',cfa__x
 
call cfa_STATE+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'EVAL-WORD',cfa_EVALminusWORD
 
call cfa_SFIND+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_EVALminusWORD+03CH-$-4
call cfa_STATE+00H
DB 08BH,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_EVALminusWORD+035H-$-4
call cfa_COMPILEcom+00H
DB 0EBH,05H
call cfa_EXECUTE+00H
DB 0EBH,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFF82DH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'OK1',cfa_OK1
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0850FH
DD cfa_OK1+07EH-$-4
call cfa__SLITERALminusCODE+00H
DB 03H
DB ' Ok',0
call cfa_TYPE+00H
call cfa_DEPTH+00H
DB 089H,045H,0FCH
DB 0B8H
DD 046H
DB 08DH,06DH,0FCH
call cfa_UMIN+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,04H
DB 0BBH
DD cfa_OK1+079H
DB 03BH,045H,0F8H
;jne cfa_OK1+050H
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
DB 0B8H
DD 02EH
DB 08DH,06DH,0FCH
call cfa_EMIT+00H
DB 0FFH,04H,024H
;jno cfa_OK1+060H
DB 071H,0EBH
DB 08DH,064H,024H,0CH
call cfa_CR+00H
DB 0C3H
AHEADER 0 ,'.SN',cfa_dotSN
 
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 083H,03CH,024H,00H
DW 0840FH
DD cfa_dotSN+0C6H-$-4
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08BH,0C5H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 08DH,040H,0FFH
DB 08DH,04H,085H
DD 00H
DB 03H,045H,0FCH
DB 08BH,00H
DB 0BH,0C0H
DW 08D0FH
DD cfa_dotSN+0B1H-$-4
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa_lessn+00H
call cfa_nS+00H
call cfa_ngreat+00H
call cfa_TYPE+00H
call cfa__SLITERALminusCODE+00H
DB 01H
DB '(',0
call cfa_TYPE+00H
call cfa_ABS+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_lessn+00H
call cfa_nS+00H
DB 089H,045H,0FCH
DB 0B8H
DD 02DH
DB 08DH,06DH,0FCH
call cfa_HOLD+00H
call cfa_ngreat+00H
call cfa_TYPE+00H
call cfa__SLITERALminusCODE+00H
DB 02H
DB ') ',0
call cfa_TYPE+00H
DB 0EBH,05H
call cfa_dot+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,040H,0FFH
DB 050H
DB 08BH,045H,0FCH
DB 0E9H
DD cfa_dotSN+015H-$-4
DB 083H,0C4H,04H
DB 0C3H
AHEADER 0 ,'INTERPRET',cfa_INTERPRET
 
call cfa_and_INTERPRET+00H
DB 08BH,00H
call cfa_EXECUTE+00H
DB 0C3H
AHEADER 0 ,'&INTERPRET',cfa_and_INTERPRET
 
call cfa__CREATEminusCODE+00H
DD cfa_INTERPRET_+00H
AHEADER 0 ,'INTERPRET_',cfa_INTERPRET_
 
call cfa_SAVEERRque+00H
call cfa_ON+00H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
call cfa_PARSEminusWORD+00H
DB 0BH,0C0H
DW 0840FH
DD cfa_INTERPRET_+0B5H-$-4
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa_ILASTminusWORD+00H
call cfa__2save+00H
call cfa_SFIND+00H
call cfa_queDUP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_INTERPRET_+077H-$-4
call cfa_STATE+00H
DB 08BH,00H
DB 033H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0850FH
DD cfa_INTERPRET_+06DH-$-4
call cfa_COMPILEcom+00H
DB 0EBH,05H
call cfa_EXECUTE+00H
DB 0E9H
DD cfa_INTERPRET_+0ABH-$-4
call cfa__SLITERALminusCODE+00H
DB 08H
DB 'NOTFOUND',0
call cfa_SFIND+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_INTERPRET_+0A0H-$-4
call cfa_EXECUTE+00H
DB 0EBH,0BH
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_queSLITERAL+00H
call cfa_queSTACK+00H
DB 0E9H
DD cfa_INTERPRET_+015H-$-4
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'ILAST-WORD',cfa_ILASTminusWORD
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
AHEADER 0 ,'CHAR',cfa__CHAR
 
call cfa_PARSEminusWORD+00H
DB 08BH,045H,00H
DB 0FH,0B6H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'''',cfa_tic
 
call cfa_PARSEminusWORD+00H
call cfa_SFIND+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_tic+024H
DB 075H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFEBFH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'WORD',cfa__WORD
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_PSKIP+00H
call cfa_PARSE+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_HERE+00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_HERE+00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_CMOVE+00H
call cfa_BL+00H
call cfa_HERE+00H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_HERE+00H
DB 0C3H
AHEADER 0 ,'?COMP',cfa_queCOMP
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_queCOMP+021H
DB 075H,010H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFEC8H
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'?STACK',cfa_queSTACK
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08BH,0C5H
call cfa_S0+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 03BH,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
;jbe cfa_queSTACK+03EH
DB 076H,01CH
call cfa_S0+00H
DB 08BH,00H
call cfa_SPsave+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFCH
DB 08DH,06DH,0FCH
call cfa_THROW+00H
DB 0C3H
AHEADER 0 ,'DEPTH',cfa_DEPTH
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08BH,0C5H
call cfa_S0+00H
DB 08BH,00H
DB 02BH,045H,00H
DB 089H,045H,00H
DB 0B8H
DD 04H
DB 08BH,0C8H
DB 08BH,045H,00H
DB 033H,0D2H
DB 0F7H,0F1H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SOURCE-ID-XT',cfa_SOURCEminusIDminusXT
 
call cfa__USERminusVALUEminusCODE+00H
DD reserve+08H
call cfa__TOUSERminusVALUEminusCODE+00H
AHEADER 0 ,'?SLITERAL',cfa_queSLITERAL
 
call cfa__VECTminusCODE+00H
DD cfa_queSLITERAL2+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'?LITERAL',cfa_queLITERAL
 
call cfa__VECTminusCODE+00H
DD cfa_queLITERAL2+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'<MAIN>',cfa_lessMAINgreat
 
call cfa__VECTminusCODE+00H
DD cfa_MAIN1+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'OK.',cfa_OKdot
 
call cfa__VECTminusCODE+00H
DD cfa_OK1+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'ERROR_DO',cfa_ERROR_DO
 
call cfa_SAVEERR+00H
call cfa_CR+00H
call cfa_ERRFILE+00H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_TYPE+00H
call cfa_CR+00H
call cfa_ERRTIB+00H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_TYPE+00H
call cfa_CR+00H
call cfa_ERgreatIN+00H
DB 08BH,00H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
call cfa_SPACE+00H
DB 08DH,040H,0FFH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa_MAX+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_ERROR_DO+055H
DB 075H,0DEH
call cfa__SLITERALminusCODE+00H
DB 01H
DB '^',0
call cfa_TYPE+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_CR+00H
call cfa__SLITERALminusCODE+00H
DB 04H
DB 'ERR=',0
call cfa_TYPE+00H
call cfa_dot+00H
call cfa_CR+00H
call cfa_S0+00H
DB 08BH,00H
call cfa_SPsave+00H
call cfa_STATE+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SAVEERR',cfa_SAVEERR
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_SAVEERRque+00H
DB 08BH,00H
DB 023H,045H,00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DW 0840FH
DD cfa_SAVEERR+0A0H-$-4
call cfa_SOURCE+00H
call cfa_ERRTIB+00H
call cfa_dolsave+00H
call cfa_greatIN_WORD+00H
DB 08BH,00H
call cfa_ERgreatIN+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_SAVEERRque+00H
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SOURCEminusID+00H
DB 089H,045H,0FCH
DB 0B8H
DD 03E7H
DB 08DH,06DH,0FCH
call cfa_HERE+00H
call cfa_WITHIN+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_SAVEERR+0A0H
DB 074H,029H
call cfa_SOURCEminusID+00H
DB 089H,045H,0FCH
DB 0B8H
DD 014H
DB 03H,045H,0FCH
call cfa_ZCOUNT+00H
call cfa_C_divL+00H
call cfa_UMIN+00H
call cfa_ERRFILE+00H
call cfa_dolsave+00H
DB 0C3H
AHEADER 0 ,'>IN_WORD',cfa_greatIN_WORD
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'SAVEERR?',cfa_SAVEERRque
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'ER>IN',cfa_ERgreatIN
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'ERRFILE',cfa_ERRFILE
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H
AHEADER 0 ,'ERRTIB',cfa_ERRTIB
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H
AHEADER 0 ,'(ABORT1")',cfa__cABORT1dticcend
 
DB 08BH,055H,00H
DB 0BH,0D2H
DB 08DH,06DH,04H
DW 0840FH
DD cfa__cABORT1dticcend+043H-$-4
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 08DH,06DH,0FCH
call cfa_ERminusU+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_ERminusA+00H
DB 08BH,055H,00H
DB 089H,010H
DB 0B8H
DD 0FFFFFFFEH
DB 08DH,06DH,04H
call cfa_THROW+00H
DB 0EBH,06H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'(ABORT")',cfa__cABORTdticcend
 
call cfa__VECTminusCODE+00H
DD cfa__cABORT1dticcend+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'ERROR',cfa_ERROR
 
call cfa__VECTminusCODE+00H
DD cfa_NOOP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 1 ,'UNLOOP',cfa_UNLOOP
 
call cfa_queCOMP+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C24648DH
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 0C3H
AHEADER 1 ,'LEAVE',cfa__LEAVE
 
call cfa_queCOMP+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0824648DH
DB 08DH,06DH,0FCH
call cfa_com+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C3H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 0C3H
AHEADER 1 ,'J',cfa_J
 
call cfa_queCOMP+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusJ+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 1 ,'I',cfa_I
 
call cfa_queCOMP+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusI+00H
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 1 ,'+LOOP',cfa_plusLOOP
 
call cfa_queCOMP+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_ADD_xESP_ycomEAX+00H
call cfa_INLINEcom+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_DROP+00H
call cfa_INLINEcom+00H
call cfa_HERE+00H
DB 08DH,040H,02H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 089H,045H,00H
DB 08DH,080H
DD 080H
DB 03DH
DD 0100H
DB 01BH,0C0H
call cfa_SetOP+00H
call cfa_SetJP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_plusLOOP+073H-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 071H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_Ccom+00H
DB 0EBH,02FH
DB 0B9H
DD 04H
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 0FH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 081H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C24648DH
DB 08DH,06DH,0FCH
call cfa_com+00H
call cfa_DP+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 1 ,'LOOP',cfa_LOOP
 
call cfa_queCOMP+00H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 024H
DB 0B8H
DD 04FFH
DB 08DH,06DH,0F8H
call cfa_Wcom+00H
call cfa_Ccom+00H
call cfa_HERE+00H
DB 08DH,040H,02H
DB 0F7H,0D8H
DB 03H,045H,00H
DB 089H,045H,00H
DB 08DH,080H
DD 080H
DB 03DH
DD 0100H
DB 01BH,0C0H
call cfa_SetOP+00H
call cfa_SetJP+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa_LOOP+06DH-$-4
DB 089H,045H,0FCH
DB 0B8H
DD 071H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_Ccom+00H
DB 0EBH,02FH
DB 0B9H
DD 04H
DB 0F7H,0D9H
DB 08DH,04H,01H
DB 089H,045H,0FCH
DB 0B8H
DD 0FH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 081H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_com+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0C24648DH
DB 08DH,06DH,0FCH
call cfa_com+00H
call cfa_DP+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 1 ,'?DO',cfa_queDO
 
call cfa_queCOMP+00H
call cfa_OP0+00H
DB 08BH,00H
call cfa_dcomaminusSET+00H
call cfa_UMAX+00H
call cfa_dcomaminusSET+09H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_NIP+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_INLINEcom+00H
call cfa_INLINEcom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 0BBH
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_HERE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusqueDO+00H
call cfa_INLINEcom+00H
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+09H
DB 0C3H
AHEADER 1 ,'DO',cfa_DO
 
call cfa_queCOMP+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_CminusDO+00H
call cfa_INLINEcom+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 068H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 052H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_SetOP+00H
DB 089H,045H,0FCH
DB 0B8H
DD 053H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_ALIGNminusNOP+00H
call cfa_DP+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_dcomaminusSET+09H
DB 0C3H
AHEADER 0 ,'_:',cfa__dcoma
 
call cfa_PARSEminusWORD+00H
call cfa__SHEADER+00H
call cfa__y+00H
call cfa_HERE+00H
call cfa_dcomaminusSET+09H
DB 0C3H
AHEADER 0 ,':',cfa_dcoma
 
call cfa__dcoma+00H
DB 0C3H
AHEADER 0 ,'->VECT',cfa_minusgreatVECT
 
call cfa_HEADER+00H
call cfa_VECTminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_com+00H
call cfa_TOVALUEminusCODE+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'USER-VALUE',cfa_USERminusVALUE
 
call cfa_HEADER+00H
call cfa_USERminusVALUEminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_USERminusALIGNED+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_com+00H
DB 08DH,040H,04H
call cfa_USERminusALLOT+00H
call cfa_TOUSERminusVALUEminusCODE+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'USER',cfa_USER
 
call cfa_USERminusCREATE+00H
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 08DH,06DH,0FCH
call cfa_USERminusALLOT+00H
DB 0C3H
AHEADER 0 ,'USER-CREATE',cfa_USERminusCREATE
 
call cfa_HEADER+00H
call cfa_HERE+00H
call cfa_DOESgreatA+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_USERminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_USERminusALIGNED+00H
call cfa_USERminusALLOT+00H
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'USER-ALIGNED',cfa_USERminusALIGNED
 
DB 089H,045H,0FCH
DB 0A1H
DD cfa_USERminusOFFS+05H
DB 08DH,040H,03H
DB 0C1H,0E8H,02H
DB 089H,045H,0F8H
DB 0B8H
DD 04H
DB 0F7H,06DH,0F8H
DB 089H,045H,0F8H
DB 089H,045H,0F4H
DB 0A1H
DD cfa_USERminusOFFS+05H
DB 0F7H,0D8H
DB 03H,045H,0F4H
DB 08DH,06DH,0F8H
DB 0C3H
AHEADER 0 ,'->VARIABLE',cfa_minusgreatVARIABLE
 
call cfa_HEADER+00H
call cfa_CREATEminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'VECT',cfa_VECT
 
call cfa_HEADER+00H
call cfa_VECTminusCODE+00H
call cfa_COMPILEcom+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_NOOP+00H
call cfa_com+00H
call cfa_TOVALUEminusCODE+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'VALUE',cfa_VALUE
 
call cfa_HEADER+00H
call cfa_CONSTANTminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_com+00H
call cfa_TOVALUEminusCODE+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'CONSTANT',cfa_CONSTANT
 
call cfa_HEADER+00H
call cfa_CONSTANTminusCODE+00H
call cfa_COMPILEcom+00H
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'VARIABLE',cfa_VARIABLE
 
call cfa_CREATE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'VOCABULARY',cfa_VOCABULARY
 
call cfa_WORDLIST+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_CREATE+00H
call cfa_com+00H
DB 089H,045H,0FCH
mov eax,[T_CURRENT-main_task+edi]
DB 08BH,00H
DB 089H,045H,0F8H
DB 08BH,045H,0FCH
DB 08DH,040H,04H
DB 08BH,055H,0F8H
DB 089H,010H
DB 08BH,045H,0FCH
DB 089H,045H,0FCH
mov eax,[T_CURRENT-main_task+edi]
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08BH,055H,0FCH
DB 089H,050H,08H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_VOC+00H
call cfa__cDOES1cend+00H
call cfa__cDOES2cend+00H
DB 08BH,00H
call cfa__CONTEXT+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 1 ,'DOES>',cfa_DOESgreat
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa__cDOES1cend+00H
call cfa_COMPILEcom+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa__cDOES2cend+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'(DOES2)',cfa__cDOES2cend
 
DB 083H,0EDH,04H
DB 089H,045H,00H
DB 05BH
DB 058H
DB 053H
DB 0C3H
AHEADER 0 ,'(DOES1)',cfa__cDOES1cend
 
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_DOESgreatA+00H
DB 08BH,00H
call cfa_CFL+00H
DB 03H,045H,00H
DB 0F7H,0D8H
DB 03H,045H,04H
DB 08DH,06DH,08H
call cfa_DOESgreatA+00H
DB 08BH,00H
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'CREATE',cfa_CREATE
 
call cfa_PARSEminusWORD+00H
call cfa_CREATED+00H
DB 0C3H
AHEADER 0 ,'CREATED',cfa_CREATED
 
call cfa_SHEADER+00H
call cfa_HERE+00H
call cfa_DOESgreatA+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
call cfa_CREATEminusCODE+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 0 ,'HEADER',cfa_HEADER
 
call cfa_PARSEminusWORD+00H
call cfa_SHEADER+00H
DB 0C3H
AHEADER 0 ,'_SHEADER',cfa__SHEADER
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_Ccom+00H
call cfa_HERE+00H
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_com+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
call cfa_LASTminusCFA+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08BH,055H,0CH
DB 089H,045H,0CH
DB 08BH,045H,08H
DB 089H,055H,08H
DB 08DH,06DH,08H
call cfa_WARNING+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa__SHEADER+0B0H-$-4
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 089H,045H,0F4H
mov eax,[T_CURRENT-main_task+edi]
DB 08DH,06DH,0F4H
call cfa_SEARCHminusWORDLIST+00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0840FH
DD cfa__SHEADER+0B0H-$-4
DB 08BH,045H,00H
DB 08BH,055H,04H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 08DH,06DH,0FCH
call cfa_TYPE+00H
call cfa__SLITERALminusCODE+00H
DB 0DH
DB ' isn''t unique',0
call cfa_TYPE+00H
call cfa_CR+00H
call cfa_CURRENT+00H
DB 08BH,00H
call cfa_SWORDcom+00H
call cfa_ALIGN+00H
call cfa_HERE+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SHEADER',cfa_SHEADER
 
call cfa__SHEADER+00H
call cfa_REVEAL+00H
DB 0C3H
AHEADER 0 ,'REVEAL',cfa_REVEAL
 
call cfa_LAST+00H
DB 08BH,00H
call cfa_CURRENT+00H
DB 08BH,00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'LAST-NON',cfa_LASTminusNON
 
call cfa__USERminusVALUEminusCODE+00H
DD reserve+04H
call cfa__TOUSERminusVALUEminusCODE+00H
AHEADER 0 ,'LAST-CFA',cfa_LASTminusCFA
 
call cfa__USERminusCODE+00H
DD reserve+00H
AHEADER 1 ,'ABORT"',cfa_ABORTdtic
 
call cfa_queCOMP+00H
call cfa_queCOMP+00H
call cfa_Cdtic+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa__cABORTdticcend+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 1 ,'[CHAR]',cfa__xCHAR_y
 
call cfa_queCOMP+00H
call cfa_PARSEminusWORD+00H
DB 08BH,045H,00H
DB 0FH,0B6H,00H
DB 08DH,06DH,04H
call cfa_LITERAL+00H
DB 0C3H
AHEADER 1 ,'."',cfa_dotdtic
 
call cfa_queCOMP+00H
call cfa_Sdtic+00H
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_TYPE+00H
call cfa_COMPILEcom+00H
DB 0C3H
AHEADER 1 ,'CLITERAL',cfa_CLITERAL
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_CLITERAL+016H
DB 074H,05H
call cfa_CLITcom+00H
DB 0C3H
AHEADER 1 ,'C"',cfa_Cdtic
 
DB 089H,045H,0FCH
DB 0B8H
DD 022H
DB 08DH,06DH,0FCH
call cfa__WORD+00H
call cfa_CLITERAL+00H
DB 0C3H
AHEADER 1 ,'S"',cfa_Sdtic
 
DB 089H,045H,0FCH
DB 0B8H
DD 022H
DB 08DH,06DH,0FCH
call cfa_PARSE+00H
call cfa_SLITERAL+00H
DB 0C3H
AHEADER 0 ,'PSLITERAL',cfa_PSLITERAL
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_PSLITERAL+016H
DB 074H,05H
call cfa_SLITcom+00H
DB 0C3H
AHEADER 1 ,'SLITERAL',cfa_SLITERAL
 
call cfa_PSLITERAL+00H
DB 0C3H
AHEADER 1 ,'2LITERAL',cfa__2LITERAL
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa__2LITERAL+016H
DB 074H,05H
call cfa_DLITcom+00H
DB 0C3H
AHEADER 1 ,'LITERAL',cfa_LITERAL
 
call cfa_STATE+00H
DB 08BH,00H
DB 0BH,0C0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;je cfa_LITERAL+016H
DB 074H,05H
call cfa_LITcom+00H
DB 0C3H
AHEADER 1 ,'['']',cfa__xtic_y
 
call cfa_queCOMP+00H
call cfa_tic+00H
call cfa__xLIT_ycom+00H
DB 0C3H
AHEADER 0 ,'[LIT],',cfa__xLIT_ycom
 
DB 089H,045H,0FCH
DB 08DH,06DH,0FCH
DB 08DH,05H
DD cfa_DUP+00H
call cfa_INLINEcom+00H
DB 089H,045H,0FCH
DB 0B8H
DD 058DH
DB 08DH,06DH,0FCH
call cfa_Wcom+00H
call cfa_com+00H
DB 0C3H
AHEADER 0 ,'WINDOW',cfa_WINDOW
 
call cfa_draw_window+00H
call cfa_CC_LINES+00H
DB 0C3H
AHEADER 0 ,'FILE_STR',cfa_FILE_STR
 
call cfa__CONSTANTminusCODE+00H
DD 0F2H
AHEADER 0 ,'.NAME',cfa_dotNAME
 
DB 089H,045H,0FCH
DB 0B8H
DD 014H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'.DATA',cfa_dotDATA
 
DB 089H,045H,0FCH
DB 0B8H
DD 010H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'.SIZE',cfa_dotSIZE
 
DB 089H,045H,0FCH
DB 0B8H
DD 0CH
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'.FIRST',cfa_dotFIRST
 
DB 089H,045H,0FCH
DB 0B8H
DD 04H
DB 03H,045H,0FCH
DB 0C3H
AHEADER 0 ,'.CODE',cfa_dotCODE
 
DB 0C3H
AHEADER 0 ,'EVENT-CASE',cfa_EVENTminusCASE
 
DB 089H,045H,0FCH
DB 0B8H
DD 0BH
DB 0CDH,040H
DB 03DH
DD 01H
DB 08DH,06DH,0FCH
;jne cfa_EVENTminusCASE+020H
DB 075H,0CH
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_REDRAW+00H
DB 0C3H
DB 03DH
DD 02H
;jne cfa_EVENTminusCASE+04EH
DB 075H,027H
DB 0B8H
DD 02H
DB 0CDH,040H
DB 089H,045H,0FCH
DB 0B8H
DD 08H
DB 08BH,0C8H
DB 08BH,045H,0FCH
DB 0D3H,0E8H
call cfa_and_KEY+00H
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
DB 03DH
DD 03H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jne cfa_EVENTminusCASE+069H
DB 075H,0EH
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFFFFFH
DB 0CDH,040H
DB 08DH,06DH,0FCH
DB 0C3H
DB 0C3H
AHEADER 0 ,'REDRAW',cfa_REDRAW
 
call cfa_draw_window+00H
call cfa_DRAW_LINS+00H
call cfa_CORSOR_DROW+00H
DB 0C3H
AHEADER 0 ,'CORSOR_DROW',cfa_CORSOR_DROW
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_LAST_CUR+00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 089H,045H,0F8H
DB 0B8H
DD 026H
DB 08BH,055H,00H
DB 08BH,04DH,0FCH
DB 08BH,05DH,0F8H
DB 0CDH,040H
DB 0B8H
DD 0FF00FFH
DB 08DH,06DH,04H
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0DH
DB 0F7H,06DH,0FCH
DB 089H,045H,0FCH
DB 0B8H
DD 021H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 089H,045H,0F8H
DB 0B8H
DD 010H
DB 08BH,0C8H
DB 08BH,045H,0F8H
DB 0D3H,0E0H
DB 03H,045H,0FCH
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,040H,02H
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 0F7H,06DH,0FCH
DB 089H,045H,0FCH
DB 0B8H
DD 06H
DB 03H,045H,0FCH
DB 089H,045H,0FCH
DB 08DH,040H,06H
DB 089H,045H,0F8H
DB 0B8H
DD 010H
DB 08BH,0C8H
DB 08BH,045H,0F8H
DB 0D3H,0E0H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
call cfa_LAST_CUR+00H
call cfa__2save+00H
DB 089H,045H,0FCH
DB 0B8H
DD 026H
DB 08BH,055H,04H
DB 08BH,04DH,00H
DB 08BH,05DH,0FCH
DB 0CDH,040H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'LAST_CUR',cfa_LAST_CUR
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H
DB 00H,00H,00H
AHEADER 0 ,'_PAGE-UP',cfa__PAGEminusUP
 
call cfa_draw_window+00H
call cfa___PAGEminusUP+00H
call cfa_DRAW_LINS+00H
DB 0C3H
AHEADER 0 ,'DRAW_LINS',cfa_DRAW_LINS
 
DB 089H,045H,0FCH
DB 0B8H
DD cfa_PAGEminusUP+00H
DB 08BH,040H,05H
DB 089H,045H,0F8H
DB 0B8H
DD cfa_NOOP+00H
DB 08DH,06DH,0F8H
call cfa_PAGEminusUP+09H
call cfa_ATminusXYque+00H
DB 089H,045H,0FCH
DB 0C7H,045H,0F8H
DD 00H
DB 033H,0C0H
DB 08DH,06DH,0F8H
call cfa_ATminusXY+00H
call cfa_SCR_BUF+00H
call cfa_SCR_WIDTH+00H
call cfa_SCR_HEIGHT+00H
DB 0F7H,06DH,00H
DB 03H,045H,04H
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,0C2H
DB 0BAH
DD 080000000H
DB 02BH,055H,04H
DB 08DH,01CH,02H
DB 08BH,045H,08H
DB 08DH,06DH,0CH
DB 068H
DD cfa_DRAW_LINS+0A0H
DB 052H
DB 053H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 090H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 08DH,06DH,0FCH
call cfa_SCR_WIDTH+00H
call cfa_SCR_TYPE+00H
call cfa_SCR_WIDTH+00H
DB 01H,04H,024H
DB 08BH,045H,00H
DB 08DH,06DH,04H
;jno cfa_DRAW_LINS+075H
DB 071H,0D9H
DB 08DH,064H,024H,0CH
call cfa_ATminusXY+00H
call cfa_PAGEminusUP+09H
DB 0C3H
AHEADER 0 ,'SCR_TYPE',cfa_SCR_TYPE
 
DB 08BH,055H,00H
DB 089H,055H,0FCH
DB 089H,045H,00H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_and_ATRIB+00H
DB 08BH,00H
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,040H,02H
DB 089H,045H,0FCH
DB 0B8H
DD 060000H
DB 0F7H,06DH,0FCH
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0DH
DB 0F7H,06DH,0FCH
DB 03H,045H,00H
DB 08DH,080H
DD 060018H
DB 089H,045H,00H
DB 0B8H
DD 04H
call cfa_SYS5+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_quePAGEminusUP+00H
DB 0C3H
AHEADER 0 ,'SCR_CR',cfa_SCR_CR
 
call cfa_and_ATminusXY+00H
DB 08BH,00H
DB 089H,045H,0FCH
DB 0B8H
DD 0FFFFH
DB 023H,045H,0FCH
DB 08DH,040H,01H
call cfa_and_ATminusXY+00H
DB 08BH,055H,00H
DB 089H,010H
DB 033H,0C0H
DB 08DH,06DH,04H
call cfa_quePAGEminusUP+00H
DB 0C3H
AHEADER 0 ,'?PAGE-UP',cfa_quePAGEminusUP
 
call cfa_and_ATminusXY+00H
DB 08DH,040H,02H
DB 0FH,0B7H,00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_SCR_WIDTH+00H
DB 08BH,0C8H
DB 08BH,045H,00H
DB 099H
DB 0F7H,0F9H
DB 089H,055H,00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_and_ATminusXY+00H
DB 08DH,040H,02H
call cfa_Wsave+00H
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_SCR_HEIGHT+00H
DB 08BH,0C8H
DB 08BH,045H,00H
DB 099H
DB 0F7H,0F9H
DB 0BH,0C0H
DB 08BH,0C2H
DB 08DH,06DH,04H
;je cfa_quePAGEminusUP+06DH
DB 074H,013H
call cfa_PAGEminusUP+00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_SCR_HEIGHT+00H
DB 08DH,040H,0FFH
call cfa_and_ATminusXY+00H
call cfa_Wsave+00H
DB 0C3H
AHEADER 0 ,'PAGE-UP',cfa_PAGEminusUP
 
call cfa__VECTminusCODE+00H
DD cfa__PAGEminusUP+00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'__PAGE-UP',cfa___PAGEminusUP
 
call cfa_SCR_BUF+00H
call cfa_SCR_WIDTH+00H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_SCR_BUF+00H
call cfa_SCR_WIDTH+00H
call cfa_SCR_HEIGHT+00H
DB 0F7H,06DH,00H
DB 08DH,06DH,04H
call cfa_CMOVE+00H
call cfa_SCR_BUF+00H
call cfa_SCR_WIDTH+00H
call cfa_SCR_HEIGHT+00H
DB 08DH,040H,0FFH
DB 0F7H,06DH,00H
DB 03H,045H,04H
DB 08DH,06DH,08H
call cfa_SCR_WIDTH+00H
call cfa_BLANK+00H
call cfa_ATminusXYque+00H
DB 08DH,040H,0FFH
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_MAX+00H
call cfa_ATminusXY+00H
DB 0C3H
AHEADER 0 ,'AT-XY?',cfa_ATminusXYque
 
call cfa_and_ATminusXY+00H
DB 08DH,040H,02H
DB 0FH,0B7H,00H
call cfa_and_ATminusXY+00H
DB 0FH,0B7H,00H
DB 0C3H
AHEADER 0 ,'AT-XY',cfa_ATminusXY
 
DB 08BH,055H,00H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 0B8H
DD 010H
DB 08BH,0C8H
DB 08BH,045H,0FCH
DB 0D3H,0E0H
DB 03H,045H,00H
DB 08DH,06DH,04H
call cfa_and_ATminusXY+00H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SCR_BUF',cfa_SCR_BUF
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H
AHEADER 0 ,'>PIC',cfa_greatPIC
 
call cfa__CONSTANTminusCODE+00H
DD 011000DH
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'&ATRIB',cfa_and_ATRIB
 
call cfa__CREATEminusCODE+00H
DD 0FFFFH
AHEADER 0 ,'&KEY',cfa_and_KEY
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'&AT-XY',cfa_and_ATminusXY
 
call cfa__CREATEminusCODE+00H
DD 00H
DB 00H
DB 00H,00H,00H
AHEADER 0 ,'SCR_HEIGHT',cfa_SCR_HEIGHT
 
call cfa__CONSTANTminusCODE+00H
DD 019H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'SCR_WIDTH-S',cfa_SCR_WIDTHminusS
 
call cfa__CONSTANTminusCODE+00H
DD 03CH
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'SCR_WIDTH',cfa_SCR_WIDTH
 
call cfa__CONSTANTminusCODE+00H
DD 050H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'SYSV',cfa_SYSV
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 0B8H
DD cfa_reg_struc+00H
DB 057H
DB 08BH,078H,014H
DB 08BH,070H,010H
DB 08BH,050H,0CH
DB 08BH,048H,08H
DB 08BH,058H,04H
DB 08BH,00H
DB 0CDH,040H
DB 05FH
DB 0C3H
AHEADER 0 ,'reg_struc',cfa_reg_struc
 
call cfa__CREATEminusCODE+00H
DD 00H
AHEADER 0 ,'SYS6',cfa_SYS6
 
DB 057H
DB 08BH,07DH,010H
DB 08BH,075H,0CH
DB 08BH,055H,08H
DB 08BH,04DH,04H
DB 08BH,05DH,00H
DB 0CDH,040H
DB 08DH,06DH,014H
DB 05FH
DB 0C3H
AHEADER 0 ,'SYS5',cfa_SYS5
 
DB 08BH,075H,0CH
DB 08BH,055H,08H
DB 08BH,04DH,04H
DB 08BH,05DH,00H
DB 0CDH,040H
DB 08DH,06DH,010H
DB 0C3H
AHEADER 0 ,'SYS4',cfa_SYS4
 
DB 08BH,055H,08H
DB 08BH,04DH,04H
DB 08BH,05DH,00H
DB 0CDH,040H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'SYS3',cfa_SYS3
 
DB 08BH,04DH,04H
DB 08BH,05DH,00H
DB 0CDH,040H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'SYS2',cfa_SYS2
 
DB 08BH,05DH,00H
DB 0CDH,040H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'SYS1',cfa_SYS1
 
DB 0CDH,040H
DB 0C3H
AHEADER 0 ,'R/W',cfa_R_divW
 
call cfa__CONSTANTminusCODE+00H
DD 0C0000000H
AHEADER 0 ,'W/O',cfa_W_divO
 
call cfa__CONSTANTminusCODE+00H
DD 040000000H
AHEADER 0 ,'R/O',cfa_R_divO
 
call cfa__CONSTANTminusCODE+00H
DD 080000000H
AHEADER 0 ,'OFF',cfa_OFF
 
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'ON',cfa_ON
 
call cfa_TRUE+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'2NIP',cfa__2NIP
 
call cfa__2SWAP+00H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'U/MOD',cfa_U_divMOD
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 08DH,06DH,0FCH
call cfa_UM_divMOD+00H
DB 0C3H
AHEADER 0 ,'2CONSTANT',cfa__2CONSTANT
 
call cfa_CREATE+00H
call cfa_HERE+00H
call cfa__2save+00H
DB 089H,045H,0FCH
DB 0B8H
DD 08H
DB 08DH,06DH,0FCH
call cfa_ALLOT+00H
call cfa__cDOES1cend+00H
call cfa__cDOES2cend+00H
DB 08BH,050H,04H
DB 089H,055H,0FCH
DB 08BH,00H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 1 ,'>R',cfa_greatR
 
DB 089H,045H,0FCH
DB 0B8H
DD cfa_CminusgreatR+00H
DB 08DH,06DH,0FCH
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 1 ,'R>',cfa_Rgreat
 
DB 089H,045H,0FCH
DB 0B8H
DD cfa_CminusRgreat+00H
DB 08DH,06DH,0FCH
call cfa_INLINEcom+00H
DB 0C3H
AHEADER 0 ,'ASCIIZ>',cfa_ASCIIZgreat
 
call cfa_ZCOUNT+00H
DB 0C3H
AHEADER 0 ,'0MAX',cfa__0MAX
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_MAX+00H
DB 0C3H
AHEADER 0 ,'ASCII-Z',cfa_ASCIIminusZ
 
DB 050H
call cfa_dolsave+00H
DB 089H,045H,0FCH
DB 058H
DB 08DH,050H,01H
DB 089H,055H,0F8H
DB 0FH,0B6H,00H
DB 03H,045H,0F8H
DB 089H,045H,0F4H
DB 033H,0C0H
DB 08BH,055H,0F4H
DB 089H,045H,0F4H
DB 08BH,0C2H
DB 08BH,055H,0F4H
DB 088H,010H
DB 08BH,045H,0F8H
DB 08DH,06DH,0FCH
DB 0C3H
AHEADER 0 ,'$!',cfa_dolsave
 
call cfa_PLACE+00H
DB 0C3H
AHEADER 0 ,'DOES-CODE',cfa_DOESminusCODE
 
call cfa__CONSTANTminusCODE+00H
DD 00H
call cfa__TOVALUEminusCODE+00H
AHEADER 0 ,'STR>R',cfa_STRgreatR
 
DB 0C3H
AHEADER 0 ,'C+PLACE',cfa_CplusPLACE
 
DB 089H,045H,0FCH
DB 0FFH,00H
DB 08BH,045H,0FCH
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 03H,045H,0FCH
DB 08DH,040H,0FFH
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'+PLACE',cfa_plusPLACE
 
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
call cfa_dticCLIPdtic+00H
call cfa_MAXCOUNTED+00H
DB 089H,045H,0FCH
DB 08BH,04H,024H
DB 0FH,0B6H,00H
DB 0F7H,0D8H
DB 03H,045H,0FCH
call cfa_MIN+00H
DB 089H,045H,0FCH
DB 058H
DB 08BH,055H,0FCH
DB 089H,045H,0F8H
DB 089H,055H,0F4H
DB 08DH,06DH,0F4H
call cfa__2greatR+00H
DB 08DH,050H,01H
DB 089H,055H,0FCH
DB 0FH,0B6H,00H
DB 03H,045H,0FCH
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_MOVE+00H
call cfa__2Rgreat+00H
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'PLACE',cfa_PLACE
 
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_dticCLIPdtic+00H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08BH,055H,0F8H
DB 088H,010H
DB 08BH,045H,0FCH
DB 08DH,040H,01H
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
call cfa_MOVE+00H
DB 0C3H
AHEADER 0 ,'"CLIP"',cfa_dticCLIPdtic
 
call cfa_MAXCOUNTED+00H
DB 023H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'MAXCOUNTED',cfa_MAXCOUNTED
 
call cfa__CONSTANTminusCODE+00H
DD 0FFH
AHEADER 0 ,'DABS',cfa_DABS
 
DB 0BH,0C0H
;jge cfa_DABS+011H
DB 07DH,0DH
DB 08BH,055H,00H
DB 0F7H,0D8H
DB 0F7H,0DAH
DB 083H,0D8H,00H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'BLANK',cfa_BLANK
 
call cfa_BL+00H
call cfa_FILL+00H
DB 0C3H
AHEADER 0 ,'ERASE',cfa_ERASE
 
DB 089H,045H,0FCH
DB 033H,0C0H
DB 08DH,06DH,0FCH
call cfa_FILL+00H
DB 0C3H
AHEADER 0 ,'MOVE',cfa_MOVE
 
DB 050H
DB 08BH,045H,00H
DB 08BH,055H,04H
DB 089H,045H,00H
DB 089H,055H,0FCH
DB 08BH,055H,0FCH
DB 089H,045H,0FCH
DB 08BH,0C2H
DB 089H,045H,0F8H
DB 08BH,04H,024H
DB 03H,045H,0F8H
DB 03BH,045H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DW 0860FH
DD cfa_MOVE+052H-$-4
DB 03BH,045H,00H
DW 0860FH
DD cfa_MOVE+044H-$-4
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_CMOVEgreat+00H
DB 0EBH,0CH
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_CMOVE+00H
DB 0EBH,0CH
DB 089H,045H,0FCH
DB 058H
DB 08DH,06DH,0FCH
call cfa_CMOVE+00H
DB 0C3H
AHEADER 1 ,'CHARS',cfa_CHARS
 
DB 0C3H
AHEADER 0 ,'CHAR+',cfa_CHARplus
 
DB 08DH,040H,01H
DB 0C3H
AHEADER 0 ,'*/',cfa__mul_div
 
call cfa__mul_divMOD+00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'CELL',cfa_CELL
 
call cfa__CONSTANTminusCODE+00H
DD 04H
AHEADER 0 ,'TRUE',cfa_TRUE
 
call cfa__CONSTANTminusCODE+00H
DD 0FFFFFFFFH
AHEADER 0 ,'FALSE',cfa_FALSE
 
call cfa__CONSTANTminusCODE+00H
DD 00H
AHEADER 0 ,'TRAP-CODE',cfa_TRAPminusCODE
 
DB 05AH
DB 05EH
DB 0BH,0F6H
DW 0840FH
DD cfa_TRAPminusCODE+022H-$-4
DB 08DH,034H,0B5H
DD 00H
DB 08BH,0CEH
DB 08BH,05CH,034H,0FCH
DB 089H,05CH,035H,0FCH
DB 083H,0EEH,04H
;jne cfa_TRAPminusCODE+013H
DB 075H,0F3H
DB 03H,0E1H
DB 0FFH,0E2H
AHEADER 0 ,'TIMER@',cfa_TIMER_ld
 
DB 089H,045H,0FCH
DB 0FH,031H
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
DB 087H,045H,00H
DB 0C3H
AHEADER 0 ,'(LocalsExit)',cfa__cLocalsExitcend
 
DB 05BH
DB 03H,0E3H
DB 0C3H
AHEADER 0 ,'RFREE',cfa_RFREE
 
DB 05AH
DB 08DH,024H,084H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0E2H
AHEADER 0 ,'(RALLOT)',cfa__cRALLOTcend
 
DB 05AH
DB 08BH,0C8H
DB 033H,0C0H
DB 050H
DB 049H
;jne cfa__cRALLOTcend+05H
DB 075H,0FCH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0E2H
AHEADER 0 ,'RALLOT',cfa_RALLOT
 
DB 05AH
DB 08BH,0C8H
DB 033H,0C0H
DB 050H
DB 049H
;jne cfa_RALLOT+05H
DB 075H,0FCH
DB 08BH,0C4H
DB 0FFH,0E2H
AHEADER 0 ,'RP+!',cfa_RPplussave
 
DB 08BH,05DH,00H
DB 089H,05CH,04H,04H
DB 08DH,06DH,08H
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'RP+',cfa_RPplus
 
DB 08DH,044H,04H,04H
DB 0C3H
AHEADER 0 ,'RP+@',cfa_RPplus_ld
 
DB 08BH,044H,04H,04H
DB 0C3H
AHEADER 0 ,'NRCOPY',cfa_NRCOPY
 
DB 08BH,0C8H
DB 08DH,0CH,08DH
DD 00H
DB 05AH
DB 0E3H,0BH
DB 08BH,0F1H
DB 0FFH,074H,035H,0FCH
DB 083H,0EEH,04H
;jne cfa_NRCOPY+0EH
DB 075H,0F7H
DB 050H
DB 0FFH,0E2H
AHEADER 0 ,'N>R',cfa_NgreatR
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08DH,04H,085H
DD 04H
DB 05AH
DB 08BH,0F0H
DB 0FFH,074H,02EH,0FCH
DB 083H,0EEH,04H
;jne cfa_NgreatR+010H
DB 075H,0F7H
DB 03H,0E8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0E2H
AHEADER 0 ,'NR>',cfa_NRgreat
 
DB 05AH
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 058H
DB 0BH,0C0H
DW 0850FH
DD cfa_NRgreat+012H-$-4
DB 0FFH,0E2H
DB 08DH,04H,085H
DD 00H
DB 08BH,0F0H
DB 08BH,0DDH
DB 02BH,0DEH
DB 08FH,03H
DB 083H,0EEH,04H
;jne cfa_NRgreat+01BH
DB 075H,0F5H
DB 02BH,0E8H
DB 0C1H,0F8H,02H
DB 0FFH,0E2H
AHEADER 0 ,'DRMOVE',cfa_DRMOVE
 
DB 05AH
DB 08BH,0F0H
DB 0FFH,074H,02EH,0FCH
DB 083H,0EEH,04H
;jne cfa_DRMOVE+03H
DB 075H,0F7H
DB 03H,0E8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0E2H
AHEADER 0 ,'@EXECUTE',cfa__ldEXECUTE
 
DB 08BH,0D8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,023H
AHEADER 0 ,'EXECUTE',cfa_EXECUTE
 
DB 08BH,0D8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0E3H
AHEADER 0 ,'C-EXECUTE',cfa_CminusEXECUTE
 
DB 08BH,0D0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0D2H
DB 0C3H
AHEADER 0 ,'C-3RDROP',cfa_Cminus3RDROP
 
DB 083H,0C4H,0CH
DB 0C3H
AHEADER 0 ,'C-2RDROP',cfa_Cminus2RDROP
 
DB 083H,0C4H,08H
DB 0C3H
AHEADER 0 ,'C-RDROP',cfa_CminusRDROP
 
DB 083H,0C4H,04H
DB 0C3H
AHEADER 0 ,'C-R>',cfa_CminusRgreat
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 058H
DB 0C3H
AHEADER 0 ,'C->R',cfa_CminusgreatR
 
DB 050H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'C-I',cfa_CminusI
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,04H,024H
DB 02BH,044H,024H,04H
DB 0C3H
AHEADER 0 ,'ADD[ESP],EAX',cfa_ADD_xESP_ycomEAX
 
DB 01H,04H,024H
DB 0C3H
AHEADER 0 ,'C-?DO',cfa_CminusqueDO
 
DB 03BH,045H,0F8H
;jne cfa_CminusqueDO+0AH
DB 075H,05H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
DB 053H
DB 0BBH
DD 080000000H
DB 02BH,05DH,0F8H
DB 053H
DB 03H,0D8H
DB 053H
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'C-DO',cfa_CminusDO
 
DB 08DH,06DH,08H
DB 0BAH
DD 080000000H
DB 02BH,055H,0F8H
DB 08DH,01CH,02H
DB 08BH,045H,0FCH
DB 08BH,0D2H
DB 0C3H
AHEADER 0 ,'C-J',cfa_CminusJ
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,044H,024H,0CH
DB 02BH,044H,024H,010H
DB 0C3H
AHEADER 0 ,'TlsIndex@',cfa_TlsIndex_ld
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,0C7H
DB 0C3H
AHEADER 0 ,'TlsIndex!',cfa_TlsIndexsave
 
DB 08BH,0F8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'RP@',cfa_RP_ld
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08DH,044H,024H,04H
DB 0C3H
AHEADER 0 ,'SP@',cfa_SP_ld
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,0C5H
DB 0C3H
AHEADER 0 ,'RP!',cfa_RPsave
 
DB 05BH
DB 08BH,0E0H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0FFH,0E3H
AHEADER 0 ,'SP!',cfa_SPsave
 
DB 08DH,068H,04H
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'ZCOUNT',cfa_ZCOUNT
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 033H,0DBH
DB 08AH,018H
DB 040H
DB 0AH,0DBH
;jne cfa_ZCOUNT+08H
DB 075H,0F9H
DB 048H
DB 02BH,045H,00H
DB 0C3H
AHEADER 0 ,'FILL',cfa_FILL
 
DB 08BH,0D7H
DB 08BH,04DH,00H
DB 08BH,07DH,04H
DB 0FCH
DB 0F3H,0AAH
DB 08BH,0FAH
DB 08DH,06DH,0CH
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'CMOVE>',cfa_CMOVEgreat
 
DB 08BH,0D7H
DB 08BH,0C8H
DB 08BH,07DH,00H
DB 08BH,075H,04H
DB 0FDH
DB 03H,0F9H
DB 04FH
DB 03H,0F1H
DB 04EH
DB 0F3H,0A4H
DB 08BH,0FAH
DB 08DH,06DH,0CH
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'QCMOVE',cfa_QCMOVE
 
call cfa_CMOVE+00H
DB 0C3H
AHEADER 0 ,'CMOVE',cfa_CMOVE
 
DB 08BH,0D7H
DB 08BH,0C8H
DB 08BH,07DH,00H
DB 08BH,075H,04H
DB 0FCH
DB 0F3H,0A4H
DB 08DH,06DH,0CH
DB 08BH,045H,0FCH
DB 08BH,0FAH
DB 0C3H
AHEADER 0 ,'SEARCH',cfa_SEARCH
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 057H
DB 0FCH
DB 08BH,05DH,00H
DB 0BH,0DBH
;je cfa_SEARCH+044H
DB 074H,035H
DB 08BH,055H,08H
DB 08BH,07DH,0CH
DB 03H,0D7H
DB 08BH,075H,04H
DB 0ACH
DB 08BH,0CAH
DB 02BH,0CFH
DB 0E3H,02AH
DB 0F2H
DB 0AEH
;jne cfa_SEARCH+04BH
DB 075H,026H
DB 083H,0FBH,01H
;je cfa_SEARCH+03BH
DB 074H,011H
DB 08BH,0CBH
DB 049H
DB 08BH,0C2H
DB 02BH,0C7H
DB 03BH,0C1H
;jb cfa_SEARCH+04BH
DB 072H,016H
DB 057H
DB 0F3H,0A6H
DB 05FH
;jne cfa_SEARCH+017H
DB 075H,0DCH
DB 04FH
DB 02BH,0D7H
DB 089H,07DH,0CH
DB 089H,055H,08H
DB 0B8H
DD 0FFFFFFFFH
DB 0EBH,02H
DB 033H,0C0H
DB 08DH,06DH,04H
DB 089H,045H,00H
DB 05FH
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'COMPARE',cfa_COMPARE
 
DB 057H
DB 08BH,0C8H
DB 02BH,0C0H
DB 03BH,04DH,04H
;je cfa_COMPARE+013H
DB 074H,09H
;jae cfa_COMPARE+0FH
DB 073H,03H
DB 040H
DB 0EBH,04H
DB 048H
DB 08BH,04DH,04H
DB 08BH,075H,08H
DB 08BH,07DH,00H
DB 0F3H,0A6H
;je cfa_COMPARE+02BH
DB 074H,0EH
;jb cfa_COMPARE+026H
DB 072H,07H
DB 0B8H
DD 01H
DB 0EBH,05H
DB 0B8H
DD 0FFFFFFFFH
DB 08DH,06DH,0CH
DB 05FH
DB 0C3H
AHEADER 0 ,'-TRAILING',cfa_minusTRAILING
 
DB 057H
DB 08BH,0C8H
DB 0E3H,011H
DB 08BH,07DH,00H
DB 03H,0F9H
DB 04FH
DB 0B0H,020H
DB 0FDH
DB 0F3H,0AEH
;je cfa_minusTRAILING+013H
DB 074H,01H
DB 041H
DB 0FCH
DB 08BH,0C1H
DB 05FH
DB 0C3H
AHEADER 0 ,'D2/',cfa_D2_div
 
DB 0D1H,0F8H
DB 0D1H,05DH,00H
DB 0C3H
AHEADER 0 ,'D2*',cfa_D2_mul
 
DB 0D1H,065H,00H
DB 0D1H,0D0H
DB 0C3H
AHEADER 0 ,'D=',cfa_D_equ
 
DB 08BH,055H,00H
DB 033H,045H,04H
DB 033H,055H,08H
DB 0BH,0C2H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,0CH
DB 0C3H
AHEADER 0 ,'D0=',cfa_D0_equ
 
DB 0BH,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'0<>',cfa__0lessgreat
 
DB 0F7H,0D8H
DB 01BH,0C0H
DB 0C3H
AHEADER 0 ,'0=',cfa__0_equ
 
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 0C3H
AHEADER 0 ,'0<',cfa__0less
 
DB 0C1H,0F8H,01FH
DB 0C3H
AHEADER 0 ,'U>',cfa_Ugreat
 
DB 03BH,045H,00H
DB 01BH,0C0H
DB 083H,0C5H,04H
DB 0C3H
AHEADER 0 ,'U<',cfa_Uless
 
DB 039H,045H,00H
DB 01BH,0C0H
DB 083H,0C5H,04H
DB 0C3H
AHEADER 0 ,'D>',cfa_Dgreat
 
DB 08BH,05DH,00H
DB 03BH,05DH,08H
DB 01BH,045H,04H
DB 0C1H,0F8H,01FH
DB 083H,0C5H,0CH
DB 0C3H
AHEADER 0 ,'D<',cfa_Dless
 
DB 08BH,05DH,00H
DB 039H,05DH,08H
DB 019H,045H,04H
DB 0B8H
DD 00H
;jge cfa_Dless+011H
DB 07DH,01H
DB 048H
DB 083H,0C5H,0CH
DB 0C3H
AHEADER 0 ,'WITHIN',cfa_WITHIN
 
DB 08BH,05DH,04H
DB 02BH,045H,00H
DB 02BH,05DH,00H
DB 02BH,0D8H
DB 01BH,0C0H
DB 083H,0C5H,08H
DB 0C3H
AHEADER 0 ,'>',cfa_great
 
DB 03BH,045H,00H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'<',cfa_less
 
DB 039H,045H,00H
DB 0FH,09DH,0C0H
DB 083H,0E0H,01H
DB 048H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'<>',cfa_lessgreat
 
DB 033H,045H,00H
DB 0F7H,0D8H
DB 01BH,0C0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'=',cfa__equ
 
DB 033H,045H,00H
DB 083H,0E8H,01H
DB 01BH,0C0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'FM/MOD',cfa_FM_divMOD
 
DB 08BH,0C8H
DB 08BH,055H,00H
DB 08BH,0DAH
DB 08BH,045H,04H
DB 0F7H,0F9H
DB 085H,0D2H
;je cfa_FM_divMOD+017H
DB 074H,07H
DB 033H,0D9H
;jns cfa_FM_divMOD+017H
DB 079H,03H
DB 048H
DB 03H,0D1H
DB 08DH,06DH,04H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'SM/REM',cfa_SM_divREM
 
DB 08BH,0D8H
DB 08BH,055H,00H
DB 08BH,045H,04H
DB 0F7H,0FBH
DB 08DH,06DH,04H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'RSHIFT',cfa_RSHIFT
 
DB 08BH,0C8H
DB 08BH,045H,00H
DB 0D3H,0E8H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'LSHIFT',cfa_LSHIFT
 
DB 08BH,0C8H
DB 08BH,045H,00H
DB 0D3H,0E0H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'M*',cfa_M_mul
 
DB 0F7H,06DH,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 0C3H
AHEADER 0 ,'*/MOD',cfa__mul_divMOD
 
DB 08BH,0D8H
DB 08BH,045H,00H
DB 08BH,04DH,04H
DB 0F7H,0E9H
DB 0F7H,0FBH
DB 089H,055H,04H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'2/',cfa__2_div
 
DB 0D1H,0F8H
DB 0C3H
AHEADER 0 ,'UM/MOD',cfa_UM_divMOD
 
DB 08BH,0C8H
DB 08BH,055H,00H
DB 08BH,045H,04H
DB 0F7H,0F1H
DB 08DH,06DH,04H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'UMOD',cfa_UMOD
 
DB 08BH,0C8H
DB 033H,0D2H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0F7H,0F1H
DB 08BH,0C2H
DB 0C3H
AHEADER 0 ,'/MOD',cfa__divMOD
 
DB 08BH,0C8H
DB 08BH,045H,00H
DB 099H
DB 0F7H,0F9H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'MOD',cfa_MOD
 
DB 08BH,0C8H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 099H
DB 0F7H,0F9H
DB 08BH,0C2H
DB 0C3H
AHEADER 0 ,'+!',cfa_plussave
 
DB 08BH,055H,00H
DB 01H,010H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'U/',cfa_U_div
 
DB 08BH,0C8H
DB 08BH,045H,00H
DB 033H,0D2H
DB 08DH,06DH,04H
DB 0F7H,0F1H
DB 0C3H
AHEADER 0 ,'/',cfa__div
 
DB 08BH,0C8H
DB 08BH,045H,00H
DB 099H
DB 0F7H,0F9H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'UM*',cfa_UM_mul
 
DB 0F7H,065H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 0C3H
AHEADER 0 ,'C>S',cfa_CgreatS
 
DB 0FH,0BEH,0C0H
DB 0C3H
AHEADER 0 ,'U>D',cfa_UgreatD
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 033H,0C0H
DB 0C3H
AHEADER 0 ,'D>S',cfa_DgreatS
 
DB 08BH,045H,00H
DB 083H,0C5H,04H
DB 0C3H
AHEADER 0 ,'S>D',cfa_SgreatD
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 099H
DB 08BH,0C2H
DB 0C3H
AHEADER 0 ,'NOOP',cfa_NOOP
 
DB 0C3H
AHEADER 0 ,'DNEGATE',cfa_DNEGATE
 
DB 08BH,055H,00H
DB 0F7H,0D8H
DB 0F7H,0DAH
DB 083H,0D8H,00H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'ABS',cfa_ABS
 
DB 085H,0C0H
;js cfa_NEGATE+00H
js cfa_NEGATE+00H
DB 0C3H
AHEADER 0 ,'NEGATE',cfa_NEGATE
 
DB 0F7H,0D8H
DB 0C3H
AHEADER 0 ,'INVERT',cfa_INVERT
 
DB 0F7H,0D0H
DB 0C3H
AHEADER 0 ,'XOR',cfa_XOR
 
DB 033H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'OR',cfa_OR
 
DB 0BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'AND',cfa_AND
 
DB 023H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'*',cfa__mul
 
DB 0F7H,06DH,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'COUNT',cfa_COUNT
 
DB 08DH,06DH,0FCH
DB 08DH,050H,01H
DB 089H,055H,00H
DB 0FH,0B6H,00H
DB 0C3H
AHEADER 0 ,'0!',cfa__0save
 
DB 0C7H,00H
DD 00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'1+!',cfa__1plussave
 
DB 0FFH,00H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'-',cfa_minus
 
DB 0F7H,0D8H
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'D-',cfa_Dminus
 
DB 08BH,055H,00H
DB 029H,055H,08H
DB 019H,045H,04H
DB 08BH,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'D+',cfa_Dplus
 
DB 08BH,055H,00H
DB 01H,055H,08H
DB 013H,045H,04H
DB 08DH,06DH,08H
DB 0C3H
AHEADER 0 ,'+',cfa_plus
 
DB 03H,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'CELLS',cfa_CELLS
 
DB 08DH,04H,085H
DD 00H
DB 0C3H
AHEADER 0 ,'CELL-',cfa_CELLminus
 
DB 08DH,040H,0FCH
DB 0C3H
AHEADER 0 ,'CELL+',cfa_CELLplus
 
DB 08DH,040H,04H
DB 0C3H
AHEADER 0 ,'2*',cfa__2_mul
 
DB 08DH,04H,045H
DD 00H
DB 0C3H
AHEADER 0 ,'2-',cfa__2minus
 
DB 08DH,040H,0FEH
DB 0C3H
AHEADER 0 ,'2+',cfa__2plus
 
DB 08DH,040H,02H
DB 0C3H
AHEADER 0 ,'1-',cfa__1minus
 
DB 08DH,040H,0FFH
DB 0C3H
AHEADER 0 ,'1+',cfa__1plus
 
DB 08DH,040H,01H
DB 0C3H
AHEADER 0 ,'EBX@',cfa_EBX_ld
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,0C3H
DB 0C3H
AHEADER 0 ,'D!',cfa_Dsave
 
DB 08BH,055H,00H
DB 089H,050H,04H
DB 08BH,055H,04H
DB 089H,010H
DB 08DH,06DH,0CH
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'D@',cfa_D_ld
 
DB 08BH,010H
DB 08DH,06DH,0FCH
DB 089H,055H,00H
DB 08BH,040H,04H
DB 0C3H
AHEADER 0 ,'2!',cfa__2save
 
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,055H,04H
DB 089H,050H,04H
DB 08DH,06DH,0CH
DB 08BH,045H,0FCH
DB 0C3H
AHEADER 0 ,'2@',cfa__2_ld
 
DB 08BH,050H,04H
DB 08DH,06DH,0FCH
DB 089H,055H,00H
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'W!',cfa_Wsave
 
DB 08BH,055H,00H
DB 066H
DB 089H,010H
DB 08BH,045H,04H
DB 083H,0C5H,08H
DB 0C3H
AHEADER 0 ,'W@',cfa_W_ld
 
DB 0FH,0B7H,00H
DB 0C3H
AHEADER 0 ,'C!',cfa_Csave
 
DB 08BH,055H,00H
DB 088H,010H
DB 08BH,045H,04H
DB 083H,0C5H,08H
DB 0C3H
AHEADER 0 ,'C@',cfa_C_ld
 
DB 0FH,0B6H,00H
DB 0C3H
AHEADER 0 ,'!',cfa_save
 
DB 08BH,055H,00H
DB 089H,010H
DB 08BH,045H,04H
DB 083H,0C5H,08H
DB 0C3H
AHEADER 0 ,'@',cfa__ld
 
DB 08BH,00H
DB 0C3H
AHEADER 0 ,'2R@',cfa__2R_ld
 
DB 08DH,06DH,0F8H
DB 089H,045H,04H
DB 08BH,044H,024H,08H
DB 089H,045H,00H
DB 08BH,044H,024H,04H
DB 0C3H
AHEADER 0 ,'R@',cfa_R_ld
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,044H,024H,04H
DB 0C3H
AHEADER 0 ,'2R>',cfa__2Rgreat
 
DB 08DH,06DH,0F8H
DB 05BH
DB 089H,045H,04H
DB 058H
DB 08FH,045H,00H
DB 053H
DB 0C3H
AHEADER 0 ,'2>R',cfa__2greatR
 
DB 05BH
DB 0FFH,075H,00H
DB 050H
DB 08DH,06DH,08H
DB 08BH,045H,0FCH
DB 0FFH,0E3H
AHEADER 0 ,'TUCK',cfa_TUCK
 
DB 08DH,06DH,0FCH
DB 08BH,055H,04H
DB 089H,055H,00H
DB 089H,045H,04H
DB 0C3H
AHEADER 0 ,'ROLL',cfa_ROLL
 
DB 0BH,0C0H
;je cfa_ROLL+022H
DB 074H,01EH
DB 08BH,0C8H
DB 08DH,04H,085H
DD 00H
DB 08BH,0D5H
DB 03H,0D0H
DB 08BH,01AH
DB 08DH,052H,0FCH
DB 08BH,02H
DB 089H,042H,04H
DB 049H
;jne cfa_ROLL+013H
DB 075H,0F5H
DB 08BH,0C3H
DB 0EBH,03H
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'PICK',cfa_PICK
 
DB 08BH,044H,085H,00H
DB 0C3H
AHEADER 0 ,'-ROT',cfa_minusROT
 
DB 08BH,055H,04H
DB 089H,045H,04H
DB 08BH,045H,00H
DB 089H,055H,00H
DB 0C3H
AHEADER 0 ,'ROT',cfa_ROT
 
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,045H,04H
DB 089H,055H,04H
DB 0C3H
AHEADER 0 ,'NIP',cfa_NIP
 
DB 083H,0C5H,04H
DB 0C3H
AHEADER 0 ,'2OVER',cfa__2OVER
 
DB 08BH,055H,08H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08BH,045H,04H
DB 08DH,06DH,0F8H
DB 0C3H
AHEADER 0 ,'OVER',cfa_OVER
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 08BH,045H,04H
DB 0C3H
AHEADER 0 ,'2SWAP',cfa__2SWAP
 
DB 08BH,04DH,00H
DB 08BH,05DH,04H
DB 08BH,055H,08H
DB 089H,04DH,08H
DB 089H,045H,04H
DB 089H,055H,00H
DB 08BH,0C3H
DB 0C3H
AHEADER 0 ,'SWAP',cfa_SWAP
 
DB 08BH,055H,00H
DB 089H,045H,00H
DB 08BH,0C2H
DB 0C3H
AHEADER 0 ,'2DROP',cfa__2DROP
 
DB 08BH,045H,04H
DB 083H,0C5H,08H
DB 0C3H
AHEADER 0 ,'UMIN',cfa_UMIN
 
DB 03BH,045H,00H
DW 0870FH
DD cfa_DROP+00H-$-4
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'UMAX',cfa_UMAX
 
DB 03BH,045H,00H
DW 0820FH
DD cfa_DROP+00H-$-4
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'MIN',cfa_MIN
 
DB 03BH,045H,00H
;jg cfa_DROP+00H
jg cfa_DROP+00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'MAX',cfa_MAX
 
DB 03BH,045H,00H
;jl cfa_DROP+00H
jl cfa_DROP+00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'DROP',cfa_DROP
 
DB 08BH,045H,00H
DB 08DH,06DH,04H
DB 0C3H
AHEADER 0 ,'2DUP',cfa__2DUP
 
DB 08BH,055H,00H
DB 089H,045H,0FCH
DB 089H,055H,0F8H
DB 08DH,06DH,0F8H
DB 0C3H
AHEADER 0 ,'?DUP',cfa_queDUP
 
DB 0BH,0C0H
;jne cfa_DUP+00H
jne cfa_DUP+00H
DB 0C3H
AHEADER 0 ,'DUP',cfa_DUP
 
DB 08DH,06DH,0FCH
DB 089H,045H,00H
DB 0C3H
/programs/develop/SPForth/lib/asm/486asm.f
0,0 → 1,2103
( 486 AND PENTIUM ASSEMBLER FOR WINDOWS 32BIT FORTH, VERSION 1.26 )
( COPYRIGHT [C] 1994, 1995, BY JIM SCHNEIDER )
 
( THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY )
( IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY )
( THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR )
( <AT YOUR OPTION> ANY LATER VERSION. )
( )
( THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, )
( BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF )
( MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE )
( GNU GENERAL PUBLIC LICENSE FOR MORE DETAILS. )
( )
( YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE )
( ALONG WITH THIS PROGRAM; IF NOT, WRITE TO THE FREE SOFTWARE )
( FOUNDATION, INC., 675 MASS AVE, CAMBRIDGE, MA 02139, USA. )
 
( DECLARE THE VOCABULARIES NEEDED )
ONLY FORTH DEFINITIONS ( VOCABULARY ASSEMBLER ) ALSO ASSEMBLER DEFINITIONS
VOCABULARY ASM-HIDDEN ALSO ASM-HIDDEN DEFINITIONS ALSO ASSEMBLER
( THE ALSO ASSEMBLER IS STRICTLY TO TURN OFF STACK WARNINGS )
 
( WORDS TO MANIPULATE THE VOCABULARY SEARCH ORDER )
: IN-ASM ( ALL LATER WORDS ARE DEFINED IN THE ASSEMBLER VOCABULARY )
ONLY FORTH ALSO ASM-HIDDEN ALSO ASSEMBLER DEFINITIONS ;
: IN-HIDDEN ( ALL LATER WORDS ARE DEFINED IN THE HIDDEN VOCABULARY )
ONLY FORTH ALSO ASM-HIDDEN DEFINITIONS ALSO ASSEMBLER ;
: IN-FORTH ( ALL LATER WORDS ARE DEFINED IN THE FORTH VOCABULARY )
ONLY FORTH DEFINITIONS ALSO ASM-HIDDEN ALSO ASSEMBLER ;
IN-HIDDEN
 
( MISCELLANEOUS HOUSEKEEPING )
BASE @ DECIMAL ( SAVE THE BASE BECAUSE I HATE GRATUITOUS BASE BASHING )
: CELL- [ 1 CELLS ] LITERAL - ;
: CELL/ [ 1 CELLS ] LITERAL / ;
: 8* 8 * ;
: 8/ 8 / ;
: 8+ 8 + ;
: 8- 8 - ;
: 4+ 4 + ;
: 2+ 2 + ;
: 2- 2 - ;
: 8*+ 8* + ;
: 16*+ 16 * + ;
: 16/MOD 16 /MOD ;
HEX
: C0-8* 0C0 - 8* ;
: C0+ 0C0 + ;
: C0- 0C0 - ;
 
( DEFER SOME WORDS FOR EASE IN PORTING TO A CROSS ASSEMBLER )
DEFER CODE-C, ' C, IS CODE-C, ( X -- )
DEFER CODE-W, ' W, IS CODE-W, ( X -- )
DEFER CODE-D, ' , IS CODE-D, ( X -- )
DEFER DATA-, ' , IS DATA-, ( X -- )
DEFER CODE-C! ' C! IS CODE-C! ( X \ A -- )
DEFER CODE-W! ' W! IS CODE-W! ( X \ A -- )
DEFER CODE-D! ' ! IS CODE-D! ( X \ A -- )
DEFER DATA-! ' ! IS DATA-! ( X \ A -- )
DEFER DATA-+! ' +! IS DATA-+! ( X \ A -- )
DEFER CODE-C@ ' C@ IS CODE-C@ ( A -- X )
DEFER CODE-W@ ' W@ IS CODE-W@ ( A -- X )
DEFER CODE-D@ ' @ IS CODE-D@ ( A -- X )
DEFER DATA-@ ' @ IS DATA-@ ( A -- X )
DEFER DATA-HERE ' HERE IS DATA-HERE ( -- A )
DEFER CODE-HERE ' HERE IS CODE-HERE ( -- A )
DEFER CODE-ALIGN ' ALIGN IS CODE-ALIGN ( -- )
DEFER CODE-HEADER ' HEADER IS CODE-HEADER ( -- )
 
( REGISTER OUT OF SCOPE FORWARD REFERENCES, FOR USE BY A CROSS-COMPILER )
DEFER REGISTER-REF ' DROP IS REGISTER-REF ( ADDRESS \ TYPE -- ADDRESS )
( REGISTER ACTUAL CODE CREATION, FOR USE IN OPTOMIZERS, DEBUGGERS, ETC. )
DEFER REGISTER-ASM ' NOOP IS REGISTER-ASM ( DATA \ XT -- DATA \ XT )
 
IN-FORTH
( SET UP THE REGISTRATION CALLBACK FUNCTIONS )
: SET-REGISTER-REF IS REGISTER-REF ;
: SET-REGISTER-ASM IS REGISTER-ASM ;
IN-HIDDEN
 
( CONSTANTS FOR THE TYPE ARGUMENT )
1 CONSTANT 8B-ABS ( 8 BIT ABSOLUTE ADDRESSING )
2 CONSTANT 16B-ABS ( 16 BIT ABSOLUTE ADDRESSING )
3 CONSTANT 32B-ABS ( 32 BIT ABSOLUTE ADDRESSING )
5 CONSTANT 8B-REL ( 8 BIT RELATIVE ADDRESSING )
6 CONSTANT 16B-REL ( 16 BIT RELATIVE ADDRESSING )
7 CONSTANT 32B-REL ( 32 BIT RELATIVE ADDRESSING )
 
( DEFER THE ERROR HANDLER WORDS SO THEY CAN BE INDIVIDUALLY TURNED OFF )
( DEFER THEM HERE SO THEY CAN BE USED BEFORE THEY ARE ACTUALLY DEFINED )
: DEF-ERR-HAND ( THE DEFAULT ERROR HANDLER FOR UNINITIALIZED ERROR HANDLERS )
( X*I -- X*J )
-1 ABORT" NO ERROR HANDLER INSTALLED" ;
' DEF-ERR-HAND CONSTANT DEH-XT
 
DEFER ?PARAMS DEH-XT IS ?PARAMS ( -- ) \ ARE THERE PARAMETERS?
DEFER ?SEG DEH-XT IS ?SEG ( -- ) \ IS THERE A SEG OVERRIDE?
DEFER ?LOCK DEH-XT IS ?LOCK ( -- ) \ IS THERE A LOCK PREFIX?
DEFER ?REP DEH-XT IS ?REP ( -- ) \ IS THERE A REP TYPE PREFIX?
DEFER ?INST-PRE DEH-XT IS ?INST-PRE ( -- ) \ IS THERE AN INST PREFIX?
DEFER ?OPERANDS DEH-XT IS ?OPERANDS ( -- ) \ ARE THERE OPERANDS?
DEFER ?OPSIZE DEH-XT IS ?OPSIZE ( N -- ) \ IS THE OPERAND SIZE MISMATCHED?
DEFER ?ADSIZE DEH-XT IS ?ADSIZE ( N -- ) \ IS THE ADDRESS SIZE MISMATCHED?
DEFER ?SHORT DEH-XT IS ?SHORT ( -- ) \ IS THERE AN ILLEGAL SHORT?
DEFER ?TOOFAR DEH-XT IS ?TOOFAR ( FLAG -- ) \ IS THE DEST OF A BRANCH TO BIG?
DEFER ?UNRES DEH-XT IS ?UNRES ( -- ) \ IS THERE AN UNRESOLVED FORWARD REFERENCE?
DEFER ?NOADSIZE DEH-XT IS ?NOADSIZE ( -- ) \ IS THE FWD REF ADDR SIZE UNKNOWN?
DEFER ?TOOMANYOPS DEH-XT IS ?TOOMANYOPS ( N -- ) \ ARE THERE TOO MANY OPERANDS?
DEFER ?NOFAR DEH-XT IS ?NOFAR ( -- ) \ IS THERE A FAR REFERENCE?
DEFER ?MATCH DEH-XT IS ?MATCH ( X1 \ X2 -- ) \ ERROR IF X1==X2
DEFER ?NOMATCH DEH-XT IS ?NOMATCH ( X1 \ X2 -- ) \ ERROR IF X1!=X2
DEFER ?FINISHED DEH-XT IS ?FINISHED ( -- ) \ ARE THERE OPERANDS LEFT OVER?
DEFER ?BADTYPE DEH-XT IS ?BADTYPE ( MAX TYPE VAL -- ) \ IS THE TYPE UNALLOWED?
DEFER ?BADCOMBINE DEH-XT IS ?BADCOMBINE ( FLAG -- ) \ CAN THE TYPES BE COMBINED?
DEFER ?NOTENOUGH DEH-XT IS ?NOTENOUGH ( N -- ) \ ARE THERE TOO FEW OPERANDS?
DEFER ?NOIMMED DEH-XT IS ?NOIMMED ( -- ) \ IS THERE AN ILLEGAL IMMEDIATE OP?
DEFER ?BADMODE DEH-XT IS ?BADMODE ( FLAG -- ) \ IS THE ADDRESS MODE ILLEGAL?
DEFER ?REG,R/M DEH-XT IS ?REG,R/M ( -- ) \ IS THE DEST A REG?
DEFER ?R/M,REG DEH-XT IS ?R/M,REG ( -- ) \ IS THE SOURCE A REG?
DEFER ?MEM DEH-XT IS ?MEM ( -- ) \ DO WE HAVE AN ILLEGAL REGISTER OPERAND?
DEFER ?REG DEH-XT IS ?REG ( -- ) \ DO WE HAVE AN ILLEGAL MEMORY OPERAND?
 
( DEFER THE WORD THAT CALLS THE WORDS THAT CREATE THE CODE )
( IT COMES IN TWO FLAVORS -- PREFIX AND POSTFIX )
( IT'S DEFERRED HERE SO I CAN USE IT NOW )
: NO-OPCODE-HANDLER -1 ABORT" NO OPCODE CREATOR INSTALLED" ;
DEFER DO-OPCODE ' NO-OPCODE-HANDLER IS DO-OPCODE ( X? \ X? \ 0|ADDR -- )
\ POSTFIX MODE: THIS ACTUALLY SAVES THE CURRENT INSTRUCTION AND
\ DOES THE PREVIOUS ONE.
 
IN-ASM
: A; ( FINISH THE ASSEMBLY OF THE PREVIOUS INSTRUCTION )
( -- )
0 DO-OPCODE ;
 
( ADDRESS AND DATA SIZES )
IN-HIDDEN
0 CONSTANT UNKNOWN ( ALSO, OPERAND TYPE AND NUMBER )
1 CONSTANT 8BIT
2 CONSTANT 16BIT
3 CONSTANT 32BIT
4 CONSTANT 64BIT
5 CONSTANT 80BIT
 
( DETERMINE WHAT SIZE CODE TO GENERATE )
32BIT VALUE DEFAULT-SIZE ( THE DEFAULT USE SIZE )
: !DEFAULT-SIZE ( NOT THE DEFAULT SIZE, EG. CHANGE 16BIT TO 32BIT )
( -- SIZE )
DEFAULT-SIZE 16BIT = IF 32BIT ELSE 16BIT THEN ;
IN-ASM
: USE16 ( GENERATE 16 BIT CODE BY DEFAULT )
16BIT TO DEFAULT-SIZE ;
: USE32 ( GENERATE 32 BIT CODE BY DEFAULT )
32BIT TO DEFAULT-SIZE ;
 
( CREATE A STACK FOR OPERANDS )
IN-HIDDEN
7 CONSTANT MAX-OPERANDS ( MAXIMUM NUMBER OF OPERANDS ON THE OPSTACK )
CREATE OPSTACK MAX-OPERANDS 1+ CELLS ALLOT HERE CONSTANT OPSTACK-END
: CLR-OPSTACK OPSTACK DUP CELL+ SWAP DATA-! ;
CLR-OPSTACK ( INITIALIZE THE OPSTACK )
: ?CLR-OPSTACK ( CLEAR THE OPERAND STACK WHEN THE FLAG IS NON-ZERO )
( F -- )
IF CLR-OPSTACK THEN ;
IN-ASM
: PUSH-OP ( MOVE A PARAMETER STACK ITEM TO THE OPSTACK )
( X -- )
OPSTACK DATA-@ OPSTACK-END = DUP ?CLR-OPSTACK
ABORT" OPSTACK OVERFLOW" OPSTACK DUP DATA-@ DUP CELL+ ROT DATA-!
DATA-! ;
: POP-OP ( MOVE AN ITEM FROM THE OPERAND STACK TO THE PARAMETER STACK )
( -- X )
OPSTACK DUP DATA-@ SWAP CELL+ = DUP ?CLR-OPSTACK
ABORT" OPSTACK UNDERFLOW" OPSTACK DUP DATA-@ CELL- DUP ROT
DATA-! DATA-@ ;
IN-HIDDEN
: OP-DEPTH ( CHECK THE DEPTH OF THE OPERAND STACK )
OPSTACK DUP DATA-@ SWAP - CELL- CELL/ ;
 
( WORDS TO SUPPORT FORWARD REFERENCED LOCAL LABELS )
100 CONSTANT FRMAX ( MAX NUMBER OF UNRESOLVED FORWARD REFERENCES )
140 CONSTANT LBMAX ( MAX NUMBER OF LOCAL LABELS )
CREATE FRTABLE FRMAX 2* CELLS ALLOT ( HOLDS UNRESOLVED FORWARD REFERENCES )
CREATE LBTABLE LBMAX CELLS ALLOT ( HOLDS LOCAL LABEL BINDINGS )
: ADDREF ( ADD A FORWARD REFERENCE AT CODE-HERE )
( REF# -- REF# )
FRTABLE [ FRMAX 1+ ] LITERAL 0 DO
FRMAX I = DUP ?CLR-OPSTACK
ABORT" TOO MANY UNRESOLVED FORWARD REFERENCES"
DUP DATA-@ IF
CELL+ CELL+ ELSE 2DUP DATA-! CODE-HERE OVER CELL+
DATA-! LEAVE
THEN
LOOP DROP ;
: BACKPATCH ( BACKPATCH A FORWARD REFERENCE TO HERE )
( ADDRESS \ SIZE -- )
CASE 8BIT OF
CODE-HERE OVER 1+ - DUP ABS 7F > ?TOOFAR SWAP CODE-C!
ENDOF 16BIT OF
CODE-HERE OVER 2+ - DUP ABS 7FFF > ?TOOFAR SWAP CODE-W!
ENDOF 32BIT OF
CODE-HERE OVER 4+ - SWAP CODE-D!
ENDOF ?NOADSIZE DROP ENDCASE ;
: REFSIZE ( DETERMINE THE SIZE OF A BOUND REFERENCE )
( ADDR OF INSTR -- ADDR OF OPERAND \ SIZE )
DUP CODE-C@ 67 ( ADDR SIZE OVERRIDE PREFIX ) = IF
1+ !DEFAULT-SIZE
ELSE
DEFAULT-SIZE
THEN
( STACK: ADDRESS OF ACTUAL INSTRUCTION \ PROVISIONAL SIZE )
>R DUP CODE-C@ CASE
0F OF ( A NEAR CONDITIONAL BRANCH )
1+ ( ADJUST FOR THE FIRST BYTE OF THE OPCODE )
ENDOF 0E9 OF ( A JMP NEAR, DON'T NEED TO DO ANYTHING )
ENDOF 0E8 OF ( A NEAR CALL, DON'T NEED TO DO ANYTHING )
ENDOF ( IF WE GET TO HERE, IT MUST BE 8 BIT )
R> DROP 8BIT >R
ENDCASE 1+ R> ;
: RESOLVE ( RESOLVE A FORWARD REFERENCE TO CODE-HERE )
( REF# -- REF# )
FRTABLE FRMAX 0 DO
2DUP DATA-@ = IF
DUP CELL+ DATA-@ REFSIZE BACKPATCH 0 OVER DATA-!
THEN
CELL+ CELL+
LOOP
DROP ;
: !LABEL ( BIND A LABEL TO CODE-HERE )
( REF# -- )
RESOLVE CODE-HERE SWAP CELLS LBTABLE + DATA-! ;
: @LABEL ( FETCH THE BINDING OF A LABEL, OR RETURN A PSEUDO ADDRESS IF NOT )
( YET BOUND TO AN ADDRESS )
( REF# -- ADDR )
DUP CELLS LBTABLE + DATA-@ ?DUP IF SWAP DROP ELSE ADDREF DROP
CODE-HERE THEN ;
: CREATE-REF ( CREATE WORDS TO REFERENCE LOCAL LABELS )
( C:: INDEX -- )
( R:: -- ADDR )
CREATE DATA-, DOES> DATA-@ @LABEL ;
: CREATE-BIND ( CREATE WORDS TO BIND LOCAL LABELS )
( C:: INDEX -- )
( R:: -- )
CREATE DATA-, DOES> >R A; R> DATA-@ !LABEL ;
 
( THESE REFERENCES AND BINDINGS ARE NAMED FOR GENERAL USE. DO NOT USE THEM )
( IN MACROS )
IN-ASM
1 CREATE-REF @@1 1 CREATE-BIND @@1:
2 CREATE-REF @@2 2 CREATE-BIND @@2:
3 CREATE-REF @@3 3 CREATE-BIND @@3:
4 CREATE-REF @@4 4 CREATE-BIND @@4:
5 CREATE-REF @@5 5 CREATE-BIND @@5:
6 CREATE-REF @@6 6 CREATE-BIND @@6:
7 CREATE-REF @@7 7 CREATE-BIND @@7:
8 CREATE-REF @@8 8 CREATE-BIND @@8:
9 CREATE-REF @@9 9 CREATE-BIND @@9:
 
IN-HIDDEN
0 VALUE IN-MACRO? ( A SEMAPHORE TO TELL IF WE'RE IN EXECUTION OF A MACRO )
0A VALUE MACRO-LABELS ( THE FIRST LABEL USED FOR MACROS )
VARIABLE MACRO-LABEL-LEVEL ( FOR LABELS TO USE IN MACROS )
: IN-MACRO ( FLAG THE FACT THAT WE ARE IN A MACRO )
( -- )
1 +TO IN-MACRO? ;
: !IN-MACRO ( FLAG THE FACT THAT WE'VE LEFT A MACRO )
( -- )
-1 +TO IN-MACRO? ;
: +MACRO ( GET AN INDEX INTO THE LABEL TABLE FROM AN OFFSET )
( OFFSET -- INDEX )
MACRO-LABEL-LEVEL DATA-@ + DUP LBMAX >
ABORT" TOO MANY LOCAL LABELS IN MACROS" ;
: +MACRO-REF ( REFERENCE A LABEL OFFSET FROM THE MACRO LEVEL )
( OFFSET -- ADDR )
+MACRO @LABEL ;
: +MACRO-BIND ( BIND A LABEL OFFSET FROM THE MACRO LEVEL )
( OFFSET -- )
+MACRO !LABEL ;
: ENTER-MACRO ( SET UP MACRO RELATIVE LOCAL LABELS )
( -- )
MACRO-LABELS MACRO-LABEL-LEVEL DUP DATA-@ ROT + DUP ROT DATA-! CELLS
LBTABLE + MACRO-LABELS CELLS ERASE IN-MACRO ;
: LEAVE-MACRO ( GO BACK TO THE OLD REGIME )
( OLD MACRO LABEL LEVEL -- )
MACRO-LABELS MACRO-LABEL-LEVEL DUP DATA-@ ROT - SWAP DATA-! !IN-MACRO ;
: CREATE-MACRO-REF ( CREATE MACRO-SAFE LOCAL LABEL REFERENCES )
( C:: LABEL OFFSET -- )
( R:: -- ADDR )
CREATE DATA-, DOES> DATA-@ +MACRO-REF ;
: CREATE-MACRO-BIND ( CREATE MACRO-SAFE LOCAL LABEL BINDINGS )
( C:: LABEL OFFSET -- )
( R:: -- )
CREATE DATA-, DOES> >R A; R> DATA-@ +MACRO-BIND ;
: LOC-INIT ( INITIALIZE THE TABLES AND VARIABLES )
( -- )
FRTABLE [ FRMAX 2* CELLS ] LITERAL ERASE LBTABLE [ LBMAX CELLS ]
LITERAL ERASE MACRO-LABELS MACRO-LABEL-LEVEL DATA-! ;
 
( MACRO SAFE LOCAL LABELS )
IN-ASM
0 CREATE-MACRO-REF @@M0 0 CREATE-MACRO-BIND @@M0:
1 CREATE-MACRO-REF @@M1 1 CREATE-MACRO-BIND @@M1:
2 CREATE-MACRO-REF @@M2 2 CREATE-MACRO-BIND @@M2:
3 CREATE-MACRO-REF @@M3 3 CREATE-MACRO-BIND @@M3:
4 CREATE-MACRO-REF @@M4 4 CREATE-MACRO-BIND @@M4:
5 CREATE-MACRO-REF @@M5 5 CREATE-MACRO-BIND @@M5:
6 CREATE-MACRO-REF @@M6 6 CREATE-MACRO-BIND @@M6:
7 CREATE-MACRO-REF @@M7 7 CREATE-MACRO-BIND @@M7:
8 CREATE-MACRO-REF @@M8 8 CREATE-MACRO-BIND @@M8:
9 CREATE-MACRO-REF @@M9 9 CREATE-MACRO-BIND @@M9:
( CREATE ALTERNATIVE LABEL REFERENCE AND BINDING NAMES FOR TOM )
0 CREATE-MACRO-REF L$0 0 CREATE-MACRO-BIND L$0:
1 CREATE-MACRO-REF L$1 1 CREATE-MACRO-BIND L$1:
2 CREATE-MACRO-REF L$2 2 CREATE-MACRO-BIND L$2:
3 CREATE-MACRO-REF L$3 3 CREATE-MACRO-BIND L$3:
4 CREATE-MACRO-REF L$4 4 CREATE-MACRO-BIND L$4:
5 CREATE-MACRO-REF L$5 5 CREATE-MACRO-BIND L$5:
6 CREATE-MACRO-REF L$6 6 CREATE-MACRO-BIND L$6:
7 CREATE-MACRO-REF L$7 7 CREATE-MACRO-BIND L$7:
8 CREATE-MACRO-REF L$8 8 CREATE-MACRO-BIND L$8:
9 CREATE-MACRO-REF L$9 9 CREATE-MACRO-BIND L$9:
 
( CONSTANTS FOR OPERAND TYPING )
( OPERAND TYPES )
IN-HIDDEN
1 CONSTANT INDIRECT ( 16 BIT REGISTER INDIRECT )
2 CONSTANT BASED ( 32 BIT REGISTER INDIRECT OR SCALED INDEX/BASE )
3 CONSTANT INDEX ( 32 BIT SCALED INDEX )
4 CONSTANT IMMEDIATE ( AN IMMEDIATE OPERAND )
5 CONSTANT REGISTER ( A GENERAL PURPOSE MACHINE REGISTER )
6 CONSTANT SREG ( A SEGMENT REGISTER )
7 CONSTANT CREG ( A CONTROL REGISTER )
8 CONSTANT DREG ( A DEBUG REGISTER )
9 CONSTANT TREG ( A TEST REGISTER )
0A CONSTANT FREG ( A FLOATING POINT REGISTER )
 
( ENCODE AND DECODE REGISTER REPRESENTATIONS )
( REGISTER ENCODING: )
( BITS USE )
( 0-3 DATA SIZE )
( 4-7 ADDRESS SIZE )
( 8-11 TYPE )
( 12-13 R/M OR S-I-B )
: <ENC-REG> ( ENCODE THE SINGLE CELL OPERAND REPRESENTATION FROM THE VALUES )
( ON THE STACK )
( DATA SIZE \ ADDR SIZE \ TYPE \ R/M OR S-I-B -- REG VAL )
16*+ 16*+ 16*+ ;
: <DEC-REG> ( DECODE THE SINGLE CELL OPERAND REPRESENTATION TO ITS )
( CONSTITUENT PARTS )
( REG VAL -- DATA SIZE \ ADDR SIZE \ TYPE \ R/M OR S-I-B )
16/MOD 16/MOD 16/MOD ;
: ASM-OP ( CREATE THE ASSEMBLER OPERANDS FROM OPERAND DESCRIPTIONS )
( C:: DATA SIZE \ ADDR SIZE \ TYPE \ R/M OR S-I-B -- )
( R:: -- )
( R::OS: -- X )
CREATE <ENC-REG> DATA-, DOES> DATA-@ PUSH-OP ;
 
( THE ASSEMBLER OPERANDS )
IN-ASM
8BIT UNKNOWN REGISTER 0 ASM-OP AL
8BIT UNKNOWN REGISTER 1 ASM-OP CL
8BIT UNKNOWN REGISTER 2 ASM-OP DL
8BIT UNKNOWN REGISTER 3 ASM-OP BL
8BIT UNKNOWN REGISTER 4 ASM-OP AH
8BIT UNKNOWN REGISTER 5 ASM-OP CH
8BIT UNKNOWN REGISTER 6 ASM-OP DH
8BIT UNKNOWN REGISTER 7 ASM-OP BH
16BIT UNKNOWN REGISTER 0 ASM-OP AX
16BIT UNKNOWN REGISTER 1 ASM-OP CX
16BIT UNKNOWN REGISTER 2 ASM-OP DX
16BIT UNKNOWN REGISTER 3 ASM-OP BX
16BIT UNKNOWN REGISTER 4 ASM-OP SP
16BIT UNKNOWN REGISTER 5 ASM-OP BP
16BIT UNKNOWN REGISTER 6 ASM-OP SI
16BIT UNKNOWN REGISTER 7 ASM-OP DI
32BIT UNKNOWN REGISTER 0 ASM-OP EAX
32BIT UNKNOWN REGISTER 1 ASM-OP ECX
32BIT UNKNOWN REGISTER 2 ASM-OP EDX
32BIT UNKNOWN REGISTER 3 ASM-OP EBX
32BIT UNKNOWN REGISTER 4 ASM-OP ESP
32BIT UNKNOWN REGISTER 5 ASM-OP EBP
32BIT UNKNOWN REGISTER 6 ASM-OP ESI
32BIT UNKNOWN REGISTER 7 ASM-OP EDI
UNKNOWN 16BIT INDIRECT 0 ASM-OP [BX+SI]
UNKNOWN 16BIT INDIRECT 1 ASM-OP [BX+DI]
UNKNOWN 16BIT INDIRECT 2 ASM-OP [BP+SI]
UNKNOWN 16BIT INDIRECT 3 ASM-OP [BP+DI]
UNKNOWN 16BIT INDIRECT 4 ASM-OP [SI]
UNKNOWN 16BIT INDIRECT 5 ASM-OP [DI]
UNKNOWN 16BIT INDIRECT 6 ASM-OP [BP]
UNKNOWN 16BIT INDIRECT 7 ASM-OP [BX]
UNKNOWN 32BIT BASED 0 ASM-OP [EAX]
UNKNOWN 32BIT BASED 1 ASM-OP [ECX]
UNKNOWN 32BIT BASED 2 ASM-OP [EDX]
UNKNOWN 32BIT BASED 3 ASM-OP [EBX]
UNKNOWN 32BIT BASED 4 ASM-OP [ESP]
UNKNOWN 32BIT BASED 5 ASM-OP [EBP]
UNKNOWN 32BIT BASED 6 ASM-OP [ESI]
UNKNOWN 32BIT BASED 7 ASM-OP [EDI]
UNKNOWN 32BIT INDEX 8 ASM-OP [EAX*2]
UNKNOWN 32BIT INDEX 9 ASM-OP [ECX*2]
UNKNOWN 32BIT INDEX 0A ASM-OP [EDX*2]
UNKNOWN 32BIT INDEX 0B ASM-OP [EBX*2]
UNKNOWN 32BIT INDEX 0D ASM-OP [EBP*2]
UNKNOWN 32BIT INDEX 0E ASM-OP [ESI*2]
UNKNOWN 32BIT INDEX 0F ASM-OP [EDI*2]
UNKNOWN 32BIT INDEX 10 ASM-OP [EAX*4]
UNKNOWN 32BIT INDEX 11 ASM-OP [ECX*4]
UNKNOWN 32BIT INDEX 12 ASM-OP [EDX*4]
UNKNOWN 32BIT INDEX 13 ASM-OP [EBX*4]
UNKNOWN 32BIT INDEX 15 ASM-OP [EBP*4]
UNKNOWN 32BIT INDEX 16 ASM-OP [ESI*4]
UNKNOWN 32BIT INDEX 17 ASM-OP [EDI*4]
UNKNOWN 32BIT INDEX 18 ASM-OP [EAX*8]
UNKNOWN 32BIT INDEX 19 ASM-OP [ECX*8]
UNKNOWN 32BIT INDEX 1A ASM-OP [EDX*8]
UNKNOWN 32BIT INDEX 1B ASM-OP [EBX*8]
UNKNOWN 32BIT INDEX 1D ASM-OP [EBP*8]
UNKNOWN 32BIT INDEX 1E ASM-OP [ESI*8]
UNKNOWN 32BIT INDEX 1F ASM-OP [EDI*8]
16BIT UNKNOWN SREG 0 ASM-OP ES
16BIT UNKNOWN SREG 1 ASM-OP CS
16BIT UNKNOWN SREG 2 ASM-OP SS
16BIT UNKNOWN SREG 3 ASM-OP DS
16BIT UNKNOWN SREG 4 ASM-OP FS
16BIT UNKNOWN SREG 5 ASM-OP GS
32BIT UNKNOWN CREG 0 ASM-OP CR0
32BIT UNKNOWN CREG 2 ASM-OP CR2
32BIT UNKNOWN CREG 3 ASM-OP CR3
32BIT UNKNOWN CREG 4 ASM-OP CR4
32BIT UNKNOWN DREG 0 ASM-OP DR0
32BIT UNKNOWN DREG 1 ASM-OP DR1
32BIT UNKNOWN DREG 2 ASM-OP DR2
32BIT UNKNOWN DREG 3 ASM-OP DR3
32BIT UNKNOWN DREG 6 ASM-OP DR6
32BIT UNKNOWN DREG 7 ASM-OP DR7
32BIT UNKNOWN TREG 3 ASM-OP TR3
32BIT UNKNOWN TREG 4 ASM-OP TR4
32BIT UNKNOWN TREG 5 ASM-OP TR5
32BIT UNKNOWN TREG 6 ASM-OP TR6
32BIT UNKNOWN TREG 7 ASM-OP TR7
UNKNOWN UNKNOWN FREG 0 ASM-OP ST
UNKNOWN UNKNOWN FREG 0 ASM-OP ST(0)
UNKNOWN UNKNOWN FREG 1 ASM-OP ST(1)
UNKNOWN UNKNOWN FREG 2 ASM-OP ST(2)
UNKNOWN UNKNOWN FREG 3 ASM-OP ST(3)
UNKNOWN UNKNOWN FREG 4 ASM-OP ST(4)
UNKNOWN UNKNOWN FREG 5 ASM-OP ST(5)
UNKNOWN UNKNOWN FREG 6 ASM-OP ST(6)
UNKNOWN UNKNOWN FREG 7 ASM-OP ST(7)
8BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP BYTE
16BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP WORD
32BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP DWORD
64BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP QWORD
32BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP FLOAT
64BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP DOUBLE
80BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP LONG
80BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP EXTENDED
80BIT UNKNOWN UNKNOWN UNKNOWN ASM-OP TBYTE
UNKNOWN 8BIT UNKNOWN UNKNOWN ASM-OP SHORT
UNKNOWN 16BIT UNKNOWN UNKNOWN ASM-OP NEAR
UNKNOWN 32BIT UNKNOWN UNKNOWN ASM-OP FAR
UNKNOWN UNKNOWN IMMEDIATE UNKNOWN ASM-OP #
UNKNOWN UNKNOWN UNKNOWN UNKNOWN ASM-OP ,
 
( VARIABLES USED FOR INSTRUCTION CODING )
IN-HIDDEN
VARIABLE INST-PREFIX ( INSTRUCTION PREFIXES )
VARIABLE ADDR-PREFIX ( ADDRESS SIZE PREFIX )
VARIABLE DATA-PREFIX ( DATA SIZE PREFIX )
VARIABLE SEG-PREFIX ( SEGMENT OVERRIDE PREFIX )
VARIABLE SV-INST-PREFIX ( THE SAVED INSTRUCTION PREFIX )
VARIABLE INST-SAVE ( THE PREVIOUSLY EXECUTED INSTRUCTION )
VARIABLE SP-SAVE ( THE STACK POINTER )
VARIABLE OFFSET-SV ( SAVE THE OFFSET PART )
VARIABLE IMMED-SV ( SAVE THE IMMEDIATE PART )
VARIABLE DT-SIZE ( DATA ITEM SIZE )
VARIABLE AD-SIZE ( ADDRESS SIZE )
VARIABLE RTYPE ( THE WORKING REGISTER TYPE )
VARIABLE MAXTYPE ( THE MAXIMUM NUMERICAL TYPE VALUE ENCOUNTERED )
VARIABLE MOD-R/M ( THE WORKING AREA FOR THE MOD-R/M BYTE )
VARIABLE S-I-B ( THE WORKING AREA FOR THE S-I-B BYTE )
VARIABLE ADDMODE ( ADDRESSING MODE FLAGS )
 
: RESET-VARS ( STORE 0 INTO ALL INSTRUCTION CODING VARIABLES )
0 INST-PREFIX DATA-! 0 ADDR-PREFIX DATA-! 0 DATA-PREFIX DATA-!
0 SEG-PREFIX DATA-! 0 SV-INST-PREFIX DATA-! 0 INST-SAVE DATA-!
0 SP-SAVE DATA-! 0 OFFSET-SV DATA-! 0 IMMED-SV DATA-! 0 DT-SIZE DATA-!
0 AD-SIZE DATA-! 0 RTYPE DATA-! 0 MAXTYPE DATA-! 0 MOD-R/M DATA-!
0 S-I-B DATA-! 0 ADDMODE DATA-! ;
 
: RESET-FOR-NEXT-INSTR ( STORE A 0 INTO INTERMEDIATE CODING VARIABLES )
0 OFFSET-SV DATA-! 0 IMMED-SV DATA-! 0 DT-SIZE DATA-!
0 AD-SIZE DATA-! 0 RTYPE DATA-! 0 MAXTYPE DATA-! 0 MOD-R/M DATA-!
0 S-I-B DATA-! 0 ADDMODE DATA-! ;
 
( SET/RESET MODE BITS )
1 CONSTANT IMMED-BIT ( FLAG AN IMMEDIATE OPERAND )
2 CONSTANT DIRECT-BIT ( FLAG THE DIRECTION )
4 CONSTANT MOD-R/M-BIT ( FLAG THAT WE'VE STARTED THE MOD-R/M )
8 CONSTANT S-I-B-BIT ( FLAG THE BEGINNING OF S-I-B CREATION )
10 CONSTANT FULL-OFF-BIT ( FLAG A FULL OFFSET )
20 CONSTANT BASED-BIT ( FLAG THAT WE'VE SEEN A BASE )
40 CONSTANT OFFSET-BIT ( FLAG AN OFFSET )
80 CONSTANT SHORT-BIT ( FLAG SHORT )
100 CONSTANT NEAR-BIT ( FLAG NEAR )
200 CONSTANT FAR-BIT ( FLAG FAR )
400 CONSTANT DO-1OP-BIT ( FLAG WE'VE BEEN THROUGH DO-1OP ONCE )
800 CONSTANT MAYBE-OFFSET-BIT ( FLAG THAT MAYBE WE'VE GOT AN OFFSET )
IMMED-BIT
DIRECT-BIT OR
MOD-R/M-BIT OR
S-I-B-BIT OR
FULL-OFF-BIT OR
BASED-BIT OR
OFFSET-BIT OR
SHORT-BIT OR
NEAR-BIT OR
FAR-BIT OR
DO-1OP-BIT OR
MAYBE-OFFSET-BIT OR
CONSTANT MODE-MASK ( ALL MODE BITS SET )
 
: 1MODE-BIT! ( SET A MODE BIT )
( BIT CONSTANT -- )
ADDMODE SWAP OVER DATA-@ OR SWAP DATA-! ;
: 0MODE-BIT! ( CLEAR A MODE BIT )
( BIT CONSTANT -- )
MODE-MASK XOR ADDMODE SWAP OVER DATA-@ AND SWAP DATA-! ;
: MODE-BIT@ ( FETCH A MODE BIT )
( BIT MASK -- FLAG )
ADDMODE DATA-@ AND 0<> ;
: HAS-IMMED ( FLAG AN IMMEDIATE OPERAND )
( -- )
IMMED-BIT 1MODE-BIT! ;
: HAS-IMMED? ( DO WE HAVE AN IMMEDIATE OPERAND? )
( -- FLAG )
IMMED-BIT MODE-BIT@ ;
: HAS-MOD-R/M ( WE'VE SEEN AT LEAST ONE OPERAND )
( -- )
MOD-R/M-BIT 1MODE-BIT! ;
: HAS-MOD-R/M? ( HAVE WE SEEN AN OPERAND? )
( -- FLAG )
MOD-R/M-BIT MODE-BIT@ ;
: HAS-S-I-B ( WE'VE STARTED WORK ON THE S-I-B )
( -- )
S-I-B-BIT 1MODE-BIT! ;
: HAS-S-I-B? ( HAVE WE STARTED WORK ON THE S-I-B )
( -- FLAG )
S-I-B-BIT MODE-BIT@ ;
: REG,R/M ( ADDRESSING MODE IS REGISTER, REGISTER/MEMORY )
( -- )
DIRECT-BIT 1MODE-BIT! ;
: R/M,REG ( ADDRESSING MODE IS REGISTER/MEMORY, REGISTER )
( -- )
DIRECT-BIT 0MODE-BIT! ;
: DIRECTION? ( IS THE DESTINATION A REGISTER? )
( -- FLAG )
DIRECT-BIT MODE-BIT@ ;
: HAS-FULL-OFF ( MUST GENERATE A FULL OFFSET )
( -- )
FULL-OFF-BIT 1MODE-BIT! ;
: HAS-FULL-OFF? ( DO WE NEED A FULL OFFSET? )
( -- FLAG )
FULL-OFF-BIT MODE-BIT@ ;
: HAS-BASE ( WE HAVE A BASE )
( -- )
BASED-BIT 1MODE-BIT! ;
: HAS-BASE? ( DO WE HAVE A BASE? )
( -- FLAG )
BASED-BIT MODE-BIT@ ;
: MAYBE-S-I-B? ( DO WE HAVE A POSSIBLE S-I-B? )
( -- FLAG )
BASED-BIT MODE-BIT@ S-I-B-BIT MODE-BIT@ OR ;
: HAS-OFFSET ( FLAG THAT WE DO HAVE AN OFFSET )
( -- )
OFFSET-BIT 1MODE-BIT! ;
: HAS-OFFSET? ( DO WE HAVE AN OFFSET? )
( -- FLAG )
OFFSET-BIT MODE-BIT@ FULL-OFF-BIT MODE-BIT@ OR ;
: IS-SHORT ( WE HAVE A SHORT DISPLACEMENT )
( -- )
SHORT-BIT 1MODE-BIT! ;
: IS-SHORT? ( IS THE DISPLACEMENT SHORT? )
( -- FLAG )
SHORT-BIT MODE-BIT@ ;
: IS-NEAR ( WE HAVE A NEAR DISPLACEMENT )
( -- )
NEAR-BIT 1MODE-BIT! ;
: IS-NEAR? ( DO WE HAVE A NEAR DISPLACEMENT? )
( -- FLAG )
NEAR-BIT MODE-BIT@ FAR-BIT MODE-BIT@ 0= OR ;
: IS-FAR ( WE HAVE A FAR POINTER )
( -- )
FAR-BIT 1MODE-BIT! ;
: IS-FAR? ( DO WE HAVE A FAR DISPLACEMENT? )
( -- FLAG )
FAR-BIT MODE-BIT@ ;
: DO-1OP-EXED ( WE'VE EXEC'D DO-1OP )
( -- )
DO-1OP-BIT 1MODE-BIT! ;
( NOTE: WHEN WE START TO ASSEMBLE AN OPCODE, ALL FLAGS ARE OFF )
: DO-1OP-EXED? ( HAVE WE EXEC'D DO-1OP? )
( -- FLAG )
DO-1OP-BIT MODE-BIT@ ;
: MAYBE-HAS-OFFSET ( FLAG THAT WE'VE PICKED SOMETHING UP FROM THE STACK )
( -- )
MAYBE-OFFSET-BIT 1MODE-BIT! ;
: MAYBE-HAS-OFFSET? ( HAVE WE PICKED UP SOMETHING FROM THE STACK? )
( -- FLAG )
MAYBE-OFFSET-BIT MODE-BIT@ ;
 
( TEST FOR ERROR CONDITIONS )
: _?PARAMS ( ARE THERE PARAMETERS ON THE STACK? )
SP@ SP-SAVE DATA-@ - DUP ?CLR-OPSTACK
ABORT" OFFSET OR IMMEDIATE OPERAND NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?PARAMS IS ?PARAMS
 
: _?SEG ( IS THERE A SEGMENT OVERRIDE? )
SEG-PREFIX DATA-@ DUP ?CLR-OPSTACK
ABORT" SEGMENT OVERRIDE NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?SEG IS ?SEG
 
: _?LOCK ( IS THERE A LOCK PREFIX? )
INST-PREFIX DATA-@ 0F0 = DUP ?CLR-OPSTACK
ABORT" LOCK PREFIX NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?LOCK IS ?LOCK
 
: _?REP ( IS THERE A REPEAT PREFIX? )
INST-PREFIX DATA-@ 0F3 OVER = 0F2 ROT = OR DUP ?CLR-OPSTACK
ABORT" REP, ETC. NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?REP IS ?REP
 
: _?INST-PRE ( IS THERE ANY INSTRUCTION PREFIX? )
INST-PREFIX DATA-@ DUP ?CLR-OPSTACK
ABORT" INSTRUCTION PREFIXES NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?INST-PRE IS ?INST-PRE
 
: _?OPERANDS ( ARE THERE ANY OPERANDS? )
OP-DEPTH DUP ?CLR-OPSTACK
ABORT" OPERANDS NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?OPERANDS IS ?OPERANDS
 
: _?OPSIZE1 ( IS THE OPERAND SIZE MISMATCHED? )
( N -- )
?DUP IF DT-SIZE DATA-@ ?DUP IF - DUP ?CLR-OPSTACK
ABORT" OPERAND SIZE MISMATCHED" ELSE DT-SIZE DATA-! THEN THEN ;
: _?OPSIZE2 ( JUST STORE THE OPERAND SIZE )
( N -- )
?DUP IF DT-SIZE DATA-! THEN ;
' _?OPSIZE1 IS ?OPSIZE
 
: _?ADSIZE1 ( IS THE ADDRESS SIZE MISMATCHED? )
( N -- )
?DUP IF AD-SIZE DATA-@ ?DUP IF - DUP ?CLR-OPSTACK
ABORT" ADDRESS SIZE MISMATCHED" ELSE AD-SIZE DATA-! THEN THEN ;
: _?ADSIZE2 ( JUST STORE THE ADDRESS SIZE )
( N -- )
?DUP IF AD-SIZE DATA-! THEN ;
' _?ADSIZE1 IS ?ADSIZE
 
: _?SHORT ( IS THE ADDRESS SHORT? )
( -- )
AD-SIZE DATA-@ 8BIT = DUP ?CLR-OPSTACK
ABORT" SHORT NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?SHORT IS ?SHORT
 
: ?NOSHORT ( DO WE HAVE AN ILLEGAL SHORT? )
( -- )
IS-SHORT? IF 8BIT AD-SIZE DATA-! ?SHORT THEN ;
 
: _?TOOFAR ( IS THE BRANCH OFFSET TO FAR? )
( FLAG -- )
DUP ?CLR-OPSTACK
ABORT" BRANCH OFFSET TOO BIG TO FIT SPECIFIED WIDTH" ;
' _?TOOFAR IS ?TOOFAR
 
: _?UNRES ( ARE THERE ANY UNRESOLVED FORWARD REFERENCE LABELS? )
( -- )
FRTABLE FRMAX 0 DO DUP DATA-@ DUP ?CLR-OPSTACK
ABORT" UNRESOLVED FORWARD REFERENCE" CELL+ CELL+ LOOP DROP ;
' _?UNRES IS ?UNRES
 
: _?NOADSIZE ( NO OR UNKNOWN ADDRESS SIZE )
( -- )
CLR-OPSTACK -1
ABORT" NO OR UNKNOWN ADDRESS SIZE" ;
' _?NOADSIZE IS ?NOADSIZE
 
: _?TOOMANYOPS ( ARE THERE TOO MANY OPERANDS? )
( MAX ALLOWED OPERANDS -- )
OP-DEPTH < DUP ?CLR-OPSTACK
ABORT" TOO MANY OPERANDS" ;
' _?TOOMANYOPS IS ?TOOMANYOPS
 
: _?NOFAR ( IS THERE AN UNALLOWED FAR REFERENCE? )
( -- )
AD-SIZE DATA-@ 32BIT = DUP ?CLR-OPSTACK
ABORT" FAR REFERENCES NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?NOFAR IS ?NOFAR
 
: <_?MATCH> ( THE ERROR ACTION FOR ?MATCH AND ?NOMATCH )
( FLAG -- )
DUP ?CLR-OPSTACK
ABORT" OPERAND MISMATCH" ;
 
: _?MATCH ( ERROR IF THE PARAMETERS MATCH )
( X1 \ X2 -- )
= <_?MATCH> ;
' _?MATCH IS ?MATCH
 
: _?NOMATCH ( ERROR IF THE PARAMETERS DON'T MATCH )
( X1 \ X2 -- )
- <_?MATCH> ;
' _?NOMATCH IS ?NOMATCH
 
: _?FINISHED ( ARE THERE OPERANDS LEFT? )
( -- )
OP-DEPTH DUP ?CLR-OPSTACK
ABORT" UNCONSUMED OPERANDS" ;
' _?FINISHED IS ?FINISHED
 
: _?BADTYPE ( IS THE OPERAND TYPE ALLOWED? )
( MAX TYPE ALLOWED -- )
MAXTYPE DATA-@ < DUP ?CLR-OPSTACK
ABORT" ADDRESSING MODE NOT ALLOWED" ;
' _?BADTYPE IS ?BADTYPE
 
: _?BADCOMBINE ( CAN THE OPERAND TYPES BE COMBINED? )
( FLAG -- )
DUP ?CLR-OPSTACK
ABORT" ILLEGAL OPERAND COMBINATION" ;
' _?BADCOMBINE IS ?BADCOMBINE
 
: _?NOTENOUGH ( ARE THERE NOT ENOUGH OPERANDS? )
( N -- )
OP-DEPTH > DUP ?CLR-OPSTACK
ABORT" NOT ENOUGH OPERANDS" ;
' _?NOTENOUGH IS ?NOTENOUGH
 
: _?NOIMMED ( IS THERE AN ILLEGAL IMMEDIATE OPERAND? )
( -- ) HAS-IMMED? DUP ?CLR-OPSTACK
ABORT" IMMEDIATE OPERANDS NOT ALLOWED WITH THIS INSTRUCTION" ;
' _?NOIMMED IS ?NOIMMED
 
: _?BADMODE ( IS THE ADDRESS MODE ILLEGAL? )
( FLAG -- )
DUP ?CLR-OPSTACK
ABORT" ILLEGAL ADDRESS MODE" ;
' _?BADMODE IS ?BADMODE
 
: _?REG,R/M ( IS THE DESTINATION A REGISTER? )
( -- )
DIRECTION? 0= MOD-R/M DATA-@ 0C0 < AND DUP ?CLR-OPSTACK
ABORT" DESTINATION MUST BE A REGISTER" ;
' _?REG,R/M IS ?REG,R/M
 
: _?R/M,REG ( IS THE SOURCE A REGISTER? )
( -- )
DIRECTION? MOD-R/M DATA-@ 0C0 < AND DUP ?CLR-OPSTACK
ABORT" SOURCE MUST BE A REGISTER" ;
' _?R/M,REG IS ?R/M,REG
 
: _?MEM ( IS ONE OF THE OPERANDS IN MEMORY? )
( -- )
MOD-R/M DATA-@ 0BF > MAYBE-HAS-OFFSET? 0= AND DUP ?CLR-OPSTACK
ABORT" INSTRUCTION REQUIRES A MEMORY OPERAND" ;
' _?MEM IS ?MEM
 
: _?REG ( ARE ALL OF THE OPERANDS REGISTER? )
( -- )
MOD-R/M DATA-@ 0C0 < HAS-OFFSET? OR DUP ?CLR-OPSTACK
ABORT" THIS INSTRUCTION MAY ONLY USE REGISTERS" ;
' _?REG IS ?REG
 
: ?MEM,REG ( IS THE INSTRUCTION CODED AS MEMORY,REGISTER? )
( -- )
?R/M,REG ?MEM ;
 
: ?REG,MEM ( IS THE INSTRUCTION CODED AS REGISTER,MEMORY? )
( -- )
?REG,R/M ?MEM ;
 
: ?REGEXCLUS ( IS THE ADDRESSING MODE EXCLUSIVE? )
( -- )
RTYPE DATA-@ 0 ?NOMATCH ;
 
IN-ASM
: REPORT-ERRORS ( TURN ON ERROR REPORTING )
['] _?PARAMS IS ?PARAMS
['] _?SEG IS ?SEG
['] _?LOCK IS ?LOCK
['] _?REP IS ?REP
['] _?INST-PRE IS ?INST-PRE
['] _?OPERANDS IS ?OPERANDS
['] _?OPSIZE1 IS ?OPSIZE
['] _?ADSIZE1 IS ?ADSIZE
['] _?SHORT IS ?SHORT
['] _?TOOFAR IS ?TOOFAR
['] _?UNRES IS ?UNRES
['] _?NOADSIZE IS ?NOADSIZE
['] _?TOOMANYOPS IS ?TOOMANYOPS
['] _?NOFAR IS ?NOFAR
['] _?MATCH IS ?MATCH
['] _?NOMATCH IS ?NOMATCH
['] _?FINISHED IS ?FINISHED
['] _?BADTYPE IS ?BADTYPE
['] _?BADCOMBINE IS ?BADCOMBINE
['] _?NOTENOUGH IS ?NOTENOUGH
['] _?NOIMMED IS ?NOIMMED
['] _?BADMODE IS ?BADMODE
['] _?REG,R/M IS ?REG,R/M
['] _?R/M,REG IS ?R/M,REG
['] _?MEM IS ?MEM
['] _?REG IS ?REG ;
 
: NO-ERRORS ( TURN OFF ERROR REPORTING )
['] NOOP IS ?PARAMS
['] NOOP IS ?SEG
['] NOOP IS ?LOCK
['] NOOP IS ?REP
['] NOOP IS ?INST-PRE
['] NOOP IS ?OPERANDS
['] _?OPSIZE2 IS ?OPSIZE
['] _?ADSIZE2 IS ?ADSIZE
['] NOOP IS ?SHORT
['] DROP IS ?TOOFAR
['] NOOP IS ?UNRES
['] NOOP IS ?NOADSIZE
['] DROP IS ?TOOMANYOPS
['] NOOP IS ?NOFAR
['] 2DROP IS ?MATCH
['] 2DROP IS ?NOMATCH
['] NOOP IS ?FINISHED
['] DROP IS ?BADTYPE
['] DROP IS ?BADCOMBINE
['] DROP IS ?NOTENOUGH
['] NOOP IS ?NOIMMED
['] DROP IS ?BADMODE
['] NOOP IS ?REG,R/M
['] NOOP IS ?R/M,REG
['] NOOP IS ?MEM
['] NOOP IS ?REG ;
 
( GENERATE PREFIX SEQUENCES )
IN-HIDDEN
: INST, ( GENERATE A NECESSARY INSTRUCTION PREFIX )
( -- )
INST-PREFIX DATA-@ ?DUP IF CODE-C, 0 INST-PREFIX DATA-! THEN ;
: ADDR, ( GENERATE A NECESSARY ADDRESS SIZE PREFIX )
( -- )
ADDR-PREFIX DATA-@ IF 67 CODE-C, 0 ADDR-PREFIX DATA-! THEN ;
: DATA, ( GENERATE A NECESSARY DATA SIZE PREFIX )
( -- )
DATA-PREFIX DATA-@ IF 66 CODE-C, 0 DATA-PREFIX DATA-! THEN ;
: SEG, ( GENERATE A NECESSARY SEGMENT OVERRIDE PREFIX )
( -- )
SEG-PREFIX DATA-@ ?DUP IF CODE-C, 0 SEG-PREFIX DATA-! THEN ;
 
: GENERATE-PREFIXES ( GENERATE NECESSARY PREFIXES )
( -- )
INST, ADDR, DATA, SEG, ;
 
( THE PREFIXES )
: SEG-PRE CREATE DATA-, DOES> DATA-@ SEG-PREFIX DATA-! ;
: INST-PRE CREATE DATA-, DOES> DATA-@ INST-PREFIX DATA-! ;
IN-ASM
2E SEG-PRE CS:
36 SEG-PRE SS:
3E SEG-PRE DS:
26 SEG-PRE ES:
64 SEG-PRE FS:
65 SEG-PRE GS:
0F3 INST-PRE REP
0F3 INST-PRE REPE
0F3 INST-PRE REPZ
0F2 INST-PRE REPNE
0F2 INST-PRE REPNZ
0F0 INST-PRE LOCK
 
( SAVE THE P-STACK DEPTH )
IN-HIDDEN
: SAVE-DEPTH ( -- )
SP@ SP-SAVE DATA-! ;
: DEPTH-CHANGE ( REPORT ON A CHANGE OF DEPTH )
SP@ SP-SAVE DATA-@ SWAP - CELL/ ;
 
( CREATE AN ASSEMBLY MNEMONIC )
: COMPILE-OPCODE ( COMPILE THE BYTES IN AN OPCODE )
( 0 -- | A -- | X \ A -- | X \ X' \ A -- )
( OS: X ... -- )
( A IS THE ADDRESS OF A TWO CELL DATA STRUCTURE: )
( OFFSET 0 -- XT OF THE ACTUAL ROUTINE TO COMPILE THE CODE )
( OFFSET 1 -- PARAMETER USED TO GENERATE THE CODE )
?DUP IF
DUP CELL+ DATA-@ SWAP DATA-@ REGISTER-ASM EXECUTE
THEN ;
 
DEFER SAVE-INST ( SAVE THE CURRENT INSTRUCTION -- USED IN POSTFIX MODE )
: _SAVE-INST ( SAVE THE CURRENT INSTRUCTION, AND FETCH THE PREVIOUS ONE )
( ALSO SWAPS INSTRUCTION PREFIXES )
( A -- A' )
INST-SAVE DUP DATA-@ >R DATA-! R> INST-PREFIX SV-INST-PREFIX
2DUP DATA-@ SWAP DATA-@ ROT DATA-! SWAP DATA-! ;
' _SAVE-INST IS SAVE-INST
 
IN-ASM
: POSTFIX ['] _SAVE-INST IS SAVE-INST ;
: PREFIX ['] NOOP IS SAVE-INST ;
 
IN-HIDDEN
: _DO-OPCODE ( CREATE THE ACTUAL OPCODE, OR AT LEAST CALL THE FUNCTIONS )
( THAT DO ... )
( X? \ X? \ 0|ADDR -- )
SAVE-INST COMPILE-OPCODE RESET-FOR-NEXT-INSTR SAVE-DEPTH ;
' _DO-OPCODE IS DO-OPCODE
 
: OPCODE ( C:: PARAMETER \ XT -- )
( R:: -- | X -- | X \ X' -- )
( R::OS: X ... -- )
CREATE DATA-, DATA-, DOES> DO-OPCODE ;
 
( SUPPORT ROUTINES FOR CREATING ASSEMBLY CODE )
: ALL-EXCEPT ( PROCESS ALL OPERANDS EXCEPT ONE IN PARTICULAR )
( X \ N -- TYPE \ MOD-R/M {X!=N} | -- 0 \ 0 )
OVER = IF DROP 0 0 ELSE <DEC-REG> >R >R ?ADSIZE ?OPSIZE R> R> THEN ;
 
: OFFSET8, ( CREATE AN 8 BIT CODE-HERE RELATIVE OFFSET )
( ADDR -- )
8B-REL REGISTER-REF CODE-HERE 1+ - DUP ABS 7F > ?TOOFAR CODE-C, ;
: OFFSET16, ( CREATE A 16 BIT CODE-HERE RELATIVE OFFSET )
( ADDR -- )
16B-REL REGISTER-REF CODE-HERE 2+ - DUP ABS 7FFF > ?TOOFAR CODE-W, ;
: OFFSET32, ( CREATE A 32 BIT CODE-HERE RELATIVE OFFSET )
( ADDR -- )
32B-REL REGISTER-REF CODE-HERE 4+ - CODE-D, ;
: OFFSET16/32, ( CREATE A 16 OR 32 BIT CODE-HERE RELATIVE OFFSET )
( ADDR \ 16BIT? -- )
IF OFFSET16, ELSE OFFSET32, THEN ;
 
: FLAG-FOR-SIZE-PREFIX ( DO WE NEED A SIZE PREFIX? )
( SIZE -- FLAG )
DUP IF DUP 8BIT - IF DEFAULT-SIZE - ELSE DROP 0 THEN THEN ;
: CHECK-AD-SIZE ( CHECK THE ADDRESS SIZE )
( -- )
AD-SIZE DATA-@ FLAG-FOR-SIZE-PREFIX ADDR-PREFIX DATA-! ;
: CHECK-DT-SIZE ( CHECK THE OPERAND SIZE )
( -- )
DT-SIZE DATA-@ FLAG-FOR-SIZE-PREFIX DATA-PREFIX DATA-! ;
: CHECK-SIZES ( CHECK THE ADDRESS AND OPERAND SIZES )
( -- )
CHECK-AD-SIZE CHECK-DT-SIZE ;
: RTYPE! ( STORE THE ADDRESSING MODE TYPE AND UPDATE MAXTYPE )
( TYPE -- )
DUP RTYPE DATA-! MAXTYPE DATA-@ OVER < IF MAXTYPE DATA-! ELSE
DROP THEN ;
: SPECIAL-PROCESS? ( DO WE NEED TO SPECIALLY PROCESS THIS REGISTER? )
( -- FLAG )
MAXTYPE DATA-@ DUP REGISTER > SWAP FREG < AND ;
: SPECIAL-REGISTER? ( IS THIS A SPECIAL REGISTER? )
( -- FLAG )
RTYPE DATA-@ DUP REGISTER > SWAP FREG < AND ;
: DO-REG ( DO ANY REGISTER ADDRESSING MODE TRANSLATION )
( REG \ TYPE -- )
?REGEXCLUS RTYPE! DO-1OP-EXED? IF
HAS-MOD-R/M? IF
MOD-R/M DATA-@ SWAP SPECIAL-PROCESS? IF
SPECIAL-REGISTER? IF
8*+ REG,R/M
ELSE
MAXTYPE DATA-@ SREG = IF
C0+ SWAP C0-8* +
ELSE
C0+ +
THEN R/M,REG
THEN
ELSE
8*+ REG,R/M
THEN
ELSE ( *MUST* BE REG,DISP OR REG,IMMED )
C0+ REG,R/M HAS-MOD-R/M HAS-IMMED? 0= IF
HAS-OFFSET
THEN
THEN
ELSE ( FIRST TIME THROUGH DO-1OP )
SPECIAL-REGISTER? RTYPE DATA-@ SREG <> AND IF
8*
ELSE ( EITHER A GENERAL OR SEGMENT REGISTER )
C0+
THEN HAS-MOD-R/M R/M,REG
THEN MOD-R/M DATA-! ;
: DO-IMMED ( DO AN IMMEDIATE ADDRESSING MODE OPERAND )
( X \ 0 -- )
DROP IMMED-SV DATA-! HAS-IMMED IMMEDIATE RTYPE! ;
: DO-INDIRE ( DO AN INDIRECT ADDRESSING MODE OPERAND )
( REG -- )
HAS-MOD-R/M? IF
MOD-R/M DATA-@ DUP 0BF > IF
C0-8* +
ELSE
+
THEN
ELSE
HAS-MOD-R/M
THEN MOD-R/M DATA-! HAS-BASE ;
: DO-INDEX ( DO A SCALED INDEX ADDRESSING MODE )
( REG -- )
HAS-S-I-B 8* S-I-B DATA-@ 8/ + S-I-B DATA-! HAS-MOD-R/M? IF
MOD-R/M DATA-@ DUP 0BF > IF
C0-8* 4+
ELSE
[ 7 -1 XOR ] LITERAL AND 4+
THEN
ELSE
4 HAS-MOD-R/M
THEN MOD-R/M DATA-! ;
: DO-BASED ( DO A BASE REGISTER ADDRESSING MODE )
( REG -- )
HAS-MOD-R/M? IF
MOD-R/M DATA-@ DUP 0BF > IF
C0-8* OVER 8* S-I-B DATA-! +
ELSE
MAYBE-S-I-B? IF
HAS-S-I-B S-I-B ROT OVER DATA-@ + SWAP
DATA-! [ 7 -1 XOR ] LITERAL AND 4+
ELSE
OVER 8* S-I-B DATA-! +
THEN
THEN
ELSE
DUP 8* S-I-B DATA-! HAS-MOD-R/M
THEN MOD-R/M DATA-! HAS-BASE ;
 
: OPERAND-CASES ( PROCESS AN OPERAND BASED ON ITS TYPE )
( REG \ TYPE -- | X \ REG \ TYPE -- )
CASE UNKNOWN OF
DROP
ENDOF IMMEDIATE OF
DO-IMMED
ENDOF INDIRECT OF
?REGEXCLUS INDIRECT RTYPE! DO-INDIRE
ENDOF INDEX OF
RTYPE DATA-@ ?DUP IF BASED ?NOMATCH THEN INDEX RTYPE! DO-INDEX
ENDOF BASED OF
RTYPE DATA-@ ?DUP IF BASED OVER = INDEX ROT = OR 0= ?BADCOMBINE
THEN BASED RTYPE! DO-BASED
ENDOF ( MUST BE A REGISTER TYPE ) DO-REG DUP ( SO ENDCASE HAS )
( SOMETHING TO DISCARD ) ENDCASE ;
: SAVE-OFFSET ( SAVE THE OFFSET, IF IT'S PRESENT )
( X -- | -- )
DEPTH-CHANGE IF MAYBE-HAS-OFFSET ?DUP IF OFFSET-SV DATA-! HAS-OFFSET
THEN THEN ;
: DO-1OP ( PROCESS A SINGLE OPERAND )
( -- | X -- | X \ X' -- )
0 RTYPE DATA-! BEGIN OP-DEPTH IF POP-OP ELSE FALSE THEN ?DUP WHILE
0 ALL-EXCEPT SWAP OPERAND-CASES REPEAT SAVE-OFFSET DO-1OP-EXED ;
: LIT-OP ( INSTERT THE LITERAL VALUE OF AN OPERAND INTO CODE )
( C:: -- )
( R:: -- X )
' >BODY DATA-@ POSTPONE LITERAL ; ALSO FORTH IMMEDIATE IN-HIDDEN
: PARSE-CALL/JMP-OPERANDS ( PARSE THE OPERANDS FOR CALLS AND JUMPS )
( -- | X -- )
0 RTYPE DATA-! BEGIN OP-DEPTH WHILE POP-OP DUP LIT-OP SHORT = OVER
LIT-OP NEAR = OR OVER LIT-OP FAR = OR IF CASE LIT-OP SHORT OF
IS-SHORT ENDOF LIT-OP NEAR OF IS-NEAR ENDOF IS-FAR ENDCASE ELSE
0 ALL-EXCEPT SWAP OPERAND-CASES THEN REPEAT ?NOIMMED SAVE-OFFSET ;
: DO-2OPS ( DO TWO OPERANDS AND SET SIZE PREFIXES )
( -- | X -- | X \ X -- )
DO-1OP DO-1OP CHECK-SIZES ;
: INSTALL-/R ( INSTALL THE /R FIELD IN A MOD-R/M BYTE )
( /R VALUE -- )
8* MOD-R/M DATA-@ [ 7 8* -1 XOR ] LITERAL AND OR MOD-R/M DATA-! ;
 
: DISP, ( COMPILE THE DISPLACEMENT )
( -- )
HAS-OFFSET? IF OFFSET-SV DATA-@ DUP ABS 7F > HAS-FULL-OFF? OR
IF AD-SIZE DATA-@ 16BIT = IF 16B-ABS REGISTER-REF CODE-W, ELSE 32B-ABS
REGISTER-REF CODE-D, THEN ELSE 8B-ABS REGISTER-REF CODE-C, THEN THEN ;
 
: DEFAULT-8BIT ( CHANGE A ZERO SIZE TO 8BIT )
( SIZE -- SIZE' )
?DUP 0= IF 8BIT THEN ;
: >DEFAULT-SIZE ( CHANGE A ZERO SIZE TO THE DEFAULT SIZE )
( SIZE -- SIZE' )
?DUP 0= IF DEFAULT-SIZE THEN ;
: GET-DT-SIZE ( GET THE CURRENT DATA SIZE, DEFAULT IS 8 BIT )
( -- DATA SIZE )
DT-SIZE DATA-@ DEFAULT-8BIT ;
: GET-AD-SIZE ( GET THE CURRENT ADDRESS SIZE, DEFAULT IS DEFAULT-SIZE )
( -- ADDRESS SIZE )
AD-SIZE DATA-@ >DEFAULT-SIZE ;
: GET-FP-SIZE ( GET THE SIZE OF FP OPERAND, DEFAULT IS DEFAULT-SIZE )
DT-SIZE DATA-@ >DEFAULT-SIZE ;
 
: IMMED, ( COMPILE THE IMMEDIATE OPERAND )
( -- )
HAS-IMMED? IF
IMMED-SV DATA-@ GET-DT-SIZE CASE
8BIT OF 8B-ABS REGISTER-REF CODE-C, ENDOF
16BIT OF 16B-ABS REGISTER-REF CODE-W, ENDOF
32BIT OF 32B-ABS REGISTER-REF CODE-D, ENDOF
?NOADSIZE DROP
ENDCASE
THEN ;
 
: 8BIT? ( IS THE OPERATION 8 BITS WIDE? )
( -- FLAG )
GET-DT-SIZE 8BIT = ;
: A16BIT? ( IS THE ADDRESS SIZE 16 BITS? )
( -- FLAG )
GET-AD-SIZE 16BIT = ;
: A32BIT? ( IS THE ADDRESS SIZE 32 BITS? )
( -- FLAG )
GET-AD-SIZE 32BIT = ;
 
: S-I-B, ( COMPILE THE S-I-B BYTE )
( -- )
HAS-S-I-B? A32BIT? AND IF S-I-B DATA-@ CODE-C, THEN ;
 
: +SIZE-BIT ( ADJUST AN OPCODE FOR THE SIZE OF THE OPERATION )
( OP-CODE -- OP-CODE' )
8BIT? 0= IF 1+ THEN ;
: +DIRECT-BIT ( ADJUST AN OPCODE FOR THE DIRECTION OF THE OPERANDS )
( OP-CODE -- OP-CODE' )
DIRECTION? IF 2+ THEN ;
 
: MATCH-R/M? ( DOES THE VALUE MATCH THE R/M FIELD OF THE MOD-R/M? )
( VALUE -- FLAG )
MOD-R/M DATA-@ 7 AND = ;
: PURE-REG? ( IS THE MOD FIELD OF THE MOD-R/M = 3? )
( -- FLAG )
MOD-R/M DATA-@ 0BF > ;
: DISPLACEMENT? ( DOES THE ADDRESS MODE HAVE A PURE DISPLACEMENT? )
( -- FLAG )
HAS-MOD-R/M? IF PURE-REG? MAYBE-HAS-OFFSET? AND ELSE TRUE THEN ;
: [(E)BP]? ( DOES THE ADDRESS MODE HAVE EITHER [BP] OR [EBP] ALONE? )
( -- FLAG )
A16BIT? 6 MATCH-R/M? AND A32BIT? 5 MATCH-R/M? AND OR MOD-R/M
DATA-@ 40 < AND ;
: [REG*N]? ( DOES IT HAVE ONLY AN INDEX REGISTER? )
( -- FLAG )
HAS-S-I-B? HAS-BASE? 0= AND ;
: [ESP][REG]? ( DOES IT HAVE ESP AS AN INDEX REGISTER? )
( -- FLAG )
S-I-B DATA-@ 8/ 4 = ;
: [ESP]? ( DOES IT HAVE ONLY A BASE OF ESP? )
( -- FLAG )
A32BIT? HAS-BASE? HAS-S-I-B? 0= 4 MATCH-R/M? AND AND AND ;
 
: DO-[(E)BP] ( DO A NAKED [BP] OR [EBP] )
( -- )
[(E)BP]? IF HAS-OFFSET THEN ;
: DO-DISP ( PROCESS A DISPLACEMENT )
( -- )
MOD-R/M DATA-@ DUP 0BF > IF C0-8* THEN 5 + A16BIT? IF 1+ THEN
CODE-C, HAS-FULL-OFF ;
: DO-[REG*N] ( PROCESS A NAKED INDEX )
( -- )
[REG*N]? IF HAS-FULL-OFF 5 S-I-B DATA-+! -80 MOD-R/M DATA-+! THEN ;
: DO-[ESP][REG] ( SWAP INDEX AND BASE REGISTERS IN S-I-B )
( -- )
[ESP][REG]? IF S-I-B DATA-@ 7 AND 8* 4+ S-I-B DATA-! THEN ;
: DO-[ESP] ( DO [ESP] ONLY )
( -- )
[ESP]? IF 24 S-I-B DATA-! HAS-S-I-B THEN ;
: MOD-R/M, ( COMPILE THE MOD-R/M FIELD )
( -- )
DISPLACEMENT? IF DO-DISP ELSE DO-[(E)BP] DO-[ESP][REG] DO-[REG*N]
DO-[ESP] MOD-R/M DATA-@ HAS-OFFSET? IF OFFSET-SV DATA-@ ABS
7F > HAS-FULL-OFF? OR IF 80 ELSE 40 THEN + THEN CODE-C, THEN ;
: COMPILE-FIELDS ( COMPILE THE MOD-R/M, S-I-B, DISPLACEMENT, AND IMMED FIELDS )
( -- )
MOD-R/M, S-I-B, DISP, IMMED, ;
: GENERIC-ENTRY2 ( GENERIC ENTRY SEQUENCE FOR TWO OPERAND INSTRUCTIONS )
( PARAM \ MAX TYPE -- )
( | X \ PARAM \ MAX TYPE -- )
( | X \ X' \ PARAM \ MAX TYPE -- )
2>R DO-2OPS ?FINISHED 2R> ?BADTYPE GENERATE-PREFIXES ;
: +FP-SIZE ( ADD 4 IF THE OPERATION SIZE IS 64BIT: IE., DEFAULT FLOAT )
( N -- N' )
DT-SIZE DATA-@ 64BIT = IF 4+ THEN ;
: /R&FREG>MOD-R/M ( TURN /R AND FP REG INTO THE RQD MOD-R/M )
( /R \ FREG -- MOD-R/M )
SWAP 8*+ C0+ ;
: SWAP-REGS ( SWAP THE ORDER OF REGISTERS IN THE MOD-R/M BYTE )
( -- )
MOD-R/M DATA-@ DUP 0BF > IF 3F AND 8 /MOD /R&FREG>MOD-R/M THEN MOD-R/M
DATA-! ;
: PARSE-FP-OPS ( PARSE FLOATING POINT INSTRUCTION OPERANDS )
( -- N | X -- N )
DEPTH-CHANGE 0<> OP-DEPTH 0<> OR IF DO-1OP OP-DEPTH IF DO-1OP 2 ELSE
1 THEN ELSE 0 THEN ?NOIMMED ?FINISHED CHECK-SIZES ;
: MOD-R/M>FREG ( CONVERT MOD-R/M BYTE INTO AN FP REGISTER NUMBER )
( -- N )
MOD-R/M DATA-@ C0- DUP 7 > IF 8/ THEN ;
: FP-DIRECTION? ( WHICH DIRECTION IS THE FLOATING POINT DATA GOING? )
( -- FLAG )
MOD-R/M DATA-@ 0C7 > ;
: +FP-DIRECT-BIT ( ADD 4, DEPENDING ON THE DIRECTION OF THE OPERANDS )
( X -- X' )
FP-DIRECTION? IF 4+ THEN ;
: FP-GENERIC-ASSEMBLE ( GENERIC ASSEMBLY OF FLOATING POINT INSTRUCTIONS )
( OPCODE \ /R FIELD -- )
INSTALL-/R ADDR, SEG, CODE-C, COMPILE-FIELDS ;
: SAVE-IMMED ( SAVE IMMEDIATE OPERANDS FOR DOUBLE-SHIFT )
( X \ PARAM -- PARAM )
SWAP IMMED-SV DATA-! HAS-IMMED ;
: NEXT-IS-, ( MAKE SURE THE NEXT OPERAND IS A COMMA )
( -- )
POP-OP LIT-OP , - ?BADMODE ;
 
( THE ASSEMBLY ENGINE WORDS -- ACTUALLY DO THE ASSEMBLY )
( SIMPLE ASSEMBLY INSTRUCTIONS -- NO-BRAINERS )
: 1BYTE ( COMPILE A SINGLE BYTE, NO OPERAND, NO OVERRIDE OPCODE )
( PARAM -- )
>R ?PARAMS R> ?SEG ?INST-PRE ?OPERANDS CODE-C, ;
: 2BYTE ( COMPILE A TWO BYTE, NO OPERAND, NO OVERRIDE OPCODE )
( PARAM -- )
>R ?PARAMS R> ?SEG ?INST-PRE ?OPERANDS CODE-W, ;
: 3BYTE ( COMPILE A THREE BYTE, NO OPERAND, NO OVERRIDE OPCODE )
( PARAM -- )
>R ?PARAMS R> ?SEG ?INST-PRE ?OPERANDS 10000 /MOD SWAP CODE-W,
CODE-C, ;
: SIZE-COND-COMP ( COMPILE A SIZE CONDITIONAL ASSEMBLY SEQUENCE )
( PARAM -- )
>R ?PARAMS R> ?SEG ?INST-PRE ?OPERANDS 100 /MOD DEFAULT-SIZE - IF
66 CODE-C, THEN CODE-C, ;
 
( STRING INSTRUCTIONS )
: STR-ENTRY ( CHECK FOR ENTRY ERROR CONDITIONS )
( PARAM -- PARAM )
>R ?PARAMS R> ?LOCK SEG-PREFIX DATA-@ ?DUP IF 3E OVER - 0<>
26 ROT - 0<> AND IF ?SEG THEN 0 SEG-PREFIX DATA-! THEN ;
: STR-OPERANDS ( PROCESS OPERANDS FOR STRING INSTRUCTIONS )
( -- )
BEGIN OP-DEPTH WHILE POP-OP LIT-OP DX ALL-EXCEPT 2DROP REPEAT ;
: STR-INST ( THE ENGINE TO CREATE STRING INSTRUCTIONS )
( PARAM -- )
STR-ENTRY STR-OPERANDS ?SHORT CHECK-SIZES
DT-SIZE DATA-@ DUP 0= 8BIT ROT = OR 0= IF 1+ THEN
GENERATE-PREFIXES CODE-C, ;
: BYTE-STR-INST ( BYTE STRING INSTRUCTIONS )
( PARAM -- )
BYTE STR-INST ;
: WORD-STR-INST ( WORD STRING INSTRUCTIONS )
( PARAM -- )
WORD STR-INST ;
: DWORD-STR-INST ( DWORD STRING INSTRUCTIONS )
( PARAM -- )
DWORD STR-INST ;
 
( CONDITIONAL BRANCH INSTRUCTIONS )
: JCC-ENTRY ( THE ENTRY SEQUENCE FOR CONDITIONAL BRANCH INSTRUCTIONS )
( -- )
?SEG ?INST-PRE 1 ?TOOMANYOPS OP-DEPTH IF POP-OP 0 ALL-EXCEPT
2DROP ?NOFAR AD-SIZE DATA-@ 16BIT = IF DEFAULT-SIZE AD-SIZE DATA-!
THEN DT-SIZE DATA-@ ?DUP IF AD-SIZE DATA-! THEN THEN ;
: JCC-8BIT ( COMPILE AN 8 BIT CONDITIONAL BRANCH )
( ADDR \ PARAM -- )
CODE-C, OFFSET8, ;
: JCC-16/32BIT ( COMPILE A 16 OR 32BIT CONDITIONAL BRANCH )
( ADDR \ PARAM \ SIZE -- )
DUP >R FLAG-FOR-SIZE-PREFIX IF 67 ( ADDRESS SIZE PREFIX ) CODE-C,
THEN 0F CODE-C, 10 + CODE-C, R> 16BIT = OFFSET16/32, ;
: JCC-UNKNOWN ( COMPILE A CONDITIONAL BRANCH WITH AN UNKNOWN SIZE )
( ADDR \ PARAM -- )
OVER CODE-HERE = IF ( UNRESOLVED FORWARD REFERENCE )
DEFAULT-SIZE JCC-16/32BIT
ELSE
OVER CODE-HERE 2+ SWAP - ABS 7F > IF ( CAN'T BE SHORT )
DEFAULT-SIZE JCC-16/32BIT
ELSE ( IT CAN BE SHORT )
JCC-8BIT
THEN
THEN ;
: JCC-COMPILE ( COMPILE A CONDITIONAL BRANCH )
( ADDR \ PARAM -- )
JCC-ENTRY AD-SIZE DATA-@ CASE
UNKNOWN OF JCC-UNKNOWN ENDOF
8BIT OF JCC-8BIT ENDOF
16BIT OF 16BIT JCC-16/32BIT ENDOF
32BIT OF 32BIT JCC-16/32BIT ENDOF
?NOADSIZE 2DROP ENDCASE ;
 
( LOOP INSTRUCTIONS )
: LOOP-ENTRY ( THE ENTRY SEQUENCE FOR LOOP INSTRUCTIONS )
( -- )
?SEG ?INST-PRE 2 ?TOOMANYOPS OP-DEPTH IF POP-OP ?DUP 0= IF POP-OP
THEN 0 ALL-EXCEPT OP-DEPTH IF POP-OP DROP THEN 1 ?NOMATCH
REGISTER ?NOMATCH DT-SIZE DATA-@ DUP 8BIT ?MATCH ELSE DEFAULT-SIZE
THEN AD-SIZE DATA-! ;
: LOOP-COMPILE ( COMPILE A LOOP INSTRUCTION )
( ADDRESS \ PARAM -- )
LOOP-ENTRY AD-SIZE DATA-@ FLAG-FOR-SIZE-PREFIX IF 67 CODE-C, THEN
JCC-8BIT ;
 
( JCXZ/JECXZ )
: JCXZ-COMPILE ( COMPILE JCXZ )
( ADDRESS \ PARAM -- )
CX LOOP-COMPILE ;
: JECXZ-COMPILE ( COMPILE JECXZ )
( ADDRESS \ PARAM -- )
ECX LOOP-COMPILE ;
 
( GROUP 1 INSTRUCTIONS -- ADD, ETC. )
: GROUP1-COMPILE ( COMPILE GROUP 1 INSTRUCTIONS )
( PARAM -- | X \ PARAM -- | X \ X \ PARAM -- )
?REP REGISTER GENERIC-ENTRY2 HAS-IMMED? IF 80 +SIZE-BIT IMMED-SV
DATA-@ 80 OVER > -81 ROT < AND GET-DT-SIZE 8BIT <> AND IF 2+ 8BIT
DT-SIZE DATA-! THEN SWAP INSTALL-/R ELSE 8* +SIZE-BIT +DIRECT-BIT
THEN GENERATE-PREFIXES CODE-C, COMPILE-FIELDS ;
 
( GROUP 2 INSTRUCTIONS -- RCL, ETC. )
: GROUP2-COMPILE ( COMPILE GROUP 2 INSTRUCTIONS )
( PARAM -- | X \ PARAM -- | X \ X \ PARAM -- )
?INST-PRE 1 ?NOTENOUGH >R POP-OP CASE
LIT-OP , OF 0 SAVE-IMMED DROP ENDOF
LIT-OP # OF 0 SAVE-IMMED DROP NEXT-IS-, ENDOF
LIT-OP CL OF NEXT-IS-, ENDOF
DUP PUSH-OP 1 0 SAVE-IMMED DROP
ENDCASE DO-1OP CHECK-SIZES REGISTER ?BADTYPE HAS-IMMED? IF 0C0
ELSE 0D2 THEN +SIZE-BIT GENERATE-PREFIXES CODE-C, R> INSTALL-/R
MOD-R/M, S-I-B, DISP, 8BIT DT-SIZE DATA-! IMMED, ;
 
( GROUP 3 INSTRUCTIONS -- DIV, ETC. )
: GROUP3-COMPILE ( COMPILE GROUP 3 INSTRUCTIONS )
( PARAM -- | X \ PARAM -- )
?REP >R DO-1OP BEGIN OP-DEPTH WHILE POP-OP 0 ALL-EXCEPT 2DROP REPEAT
?NOIMMED REGISTER ?BADTYPE CHECK-SIZES GENERATE-PREFIXES R> INSTALL-/R
0F6 +SIZE-BIT CODE-C, COMPILE-FIELDS ;
: TEST-COMPILE ( COMPILE THE TEST INSTRUCTION, WHICH IS A SPECIAL GROUP3 INS )
( PARAM -- | X \ PARAM -- | X \ X' \ PARAM -- )
?INST-PRE REGISTER GENERIC-ENTRY2 DROP HAS-IMMED? IF 0F6 0 INSTALL-/R
ELSE 84 THEN +SIZE-BIT CODE-C, COMPILE-FIELDS ;
 
 
( INC AND DEC )
: INC-DEC-ENTRY ( PARAM -- | X \ PARAM -- )
?REP >R DO-1OP R>
CHECK-SIZES ?FINISHED REGISTER ?BADTYPE
GENERATE-PREFIXES
MAXTYPE @ REGISTER =
;
 
: INC-COMPILE ( COMPILE AN INC OR DEC )
( PARAM -- | X \ PARAM -- )
INC-DEC-ENTRY
IF MOD-R/M DATA-@ [ 40 C0 - ] LITERAL + CODE-C, DROP EXIT
ELSE 0FE +SIZE-BIT CODE-C,
THEN
INSTALL-/R COMPILE-FIELDS
;
 
: DEC-COMPILE ( COMPILE AN INC OR DEC )
( PARAM -- | X \ PARAM -- )
INC-DEC-ENTRY
IF MOD-R/M DATA-@ [ 48 C0 - ] LITERAL + CODE-C, DROP EXIT
ELSE 0FE +SIZE-BIT CODE-C,
THEN
INSTALL-/R COMPILE-FIELDS
;
 
( GROUP 6 AND 7 INSTRUCTIONS -- SLDT, SGDT, ETC. )
: GROUP6&7-COMPILE ( COMPILE A GROUP 6 OR 7 INSTRUCTION )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R DO-1OP R> ?FINISHED DUP 100 > OVER 0FF AND 4 <> AND
IF ?MEM THEN CHECK-SIZES ADDR, SEG, 0F CODE-C, 100 /MOD CODE-C,
INSTALL-/R COMPILE-FIELDS ;
 
( GROUP 8 INSTRUCTIONS -- BT, ETC. )
: GROUP8-COMPILE ( COMPILE A GROUP 8 INSTRUCTION )
( PARAM -- | X \ PARAM -- | X \ X' \ PARAM -- )
?REP REGISTER GENERIC-ENTRY2 0F CODE-C, HAS-IMMED? IF INSTALL-/R BA
ELSE 8* 83 + ?R/M,REG THEN CODE-C, MOD-R/M, S-I-B, DISP, 8BIT DT-SIZE
DATA-! IMMED, ;
 
( ENTER )
: ENTER-COMPILE ( COMPILE THE ENTER INSTRUCTION )
( X \ X' \ PARAM -- )
3 ?TOOMANYOPS ?INST-PRE ?SEG CLR-OPSTACK DROP 0C8 CODE-C, SWAP
CODE-W, CODE-C, ;
 
( ARPL )
: ARPL-COMPILE ( COMPILE THE ARPL INSTRUCTION )
( PARAM -- | X \ PARAM -- )
?INST-PRE DROP DO-2OPS ?FINISHED REGISTER ?BADTYPE ?R/M,REG ?NOIMMED
ADDR, SEG, 63 CODE-C, SWAP-REGS COMPILE-FIELDS ;
 
( ECHANGE & ALU INSTRUCTIONS -- CMPXCHG, XADD )
: XCHG&ALU-COMPILE ( COMPILE CMPXCHG OR XADD )
( PARAM -- | X \ PARAM -- )
?REP REGISTER GENERIC-ENTRY2 ?R/M,REG ?NOIMMED 0F CODE-C, +SIZE-BIT
CODE-C, SWAP-REGS COMPILE-FIELDS ;
 
( CMPXCHG8B -- PENTIUM INSTRUCTION SET )
: CMPXCHG8B-COMP ( ASSEMBLE CMPXCHG8B )
( PARAM -- )
?REP DROP ?PARAMS DO-1OP CHECK-AD-SIZE DT-SIZE DATA-@ ?DUP IF 64BIT <>
?BADMODE THEN ?MEM ?NOIMMED GENERATE-PREFIXES 0C70F CODE-W,
COMPILE-FIELDS ;
 
( BOUND CHECKING )
: BOUND-COMPILE ( COMPILE THE BOUND INSTRUCTION )
( PARAM -- | X \ PARAM -- )
?INST-PRE REGISTER GENERIC-ENTRY2 ?REG,MEM ?NOIMMED DROP 62 CODE-C,
COMPILE-FIELDS ;
 
( BSWAP )
: BSWAP-COMPILE ( COMPILE BSWAP )
( PARAM -- )
?INST-PRE ?SEG DROP ?PARAMS 1 ?TOOMANYOPS POP-OP 0 ALL-EXCEPT SWAP
REGISTER ?NOMATCH 0F CODE-C, 0C8 + CODE-C, ;
 
( PUSH AND POP )
: PUSH/POP-ENTRY ( ENTRY SEQUENCE FOR PUSH AND POP COMPILERS )
( PARAM -- )
?INST-PRE DROP DO-1OP ?FINISHED SREG ?BADTYPE CHECK-SIZES
SREG MAXTYPE DATA-@ - IF GENERATE-PREFIXES THEN MAXTYPE DATA-@ ;
 
: PUSH-COMPILE ( COMPILE PUSH )
( PARAM -- | X \ PARAM -- )
PUSH/POP-ENTRY CASE
UNKNOWN OF A16BIT? IF 6 ELSE 5 THEN MOD-R/M DATA-! 6
INSTALL-/R 0FF CODE-C, MOD-R/M DATA-@ CODE-C,
HAS-FULL-OFF DISP,
ENDOF REGISTER OF MOD-R/M DATA-@ [ 50 C0- ] LITERAL +
CODE-C,
ENDOF SREG OF MOD-R/M DATA-@ C0-8* 6 + DUP 1E > IF 0F CODE-C,
[ 0A0 26 - ] LITERAL + THEN CODE-C,
ENDOF IMMEDIATE OF IMMED-SV DATA-@ ABS 7F > IF 68 GET-FP-SIZE
DT-SIZE DATA-! ELSE 6A 8BIT DT-SIZE DATA-! THEN
CODE-C, IMMED,
ENDOF 0FF CODE-C, 6 INSTALL-/R COMPILE-FIELDS
ENDCASE ;
 
: POP-COMPILE ( COMPILE POP )
( PARAM -- | X \ PARAM -- )
PUSH/POP-ENTRY ?NOIMMED CASE
UNKNOWN OF A16BIT? IF 6 ELSE 5 THEN MOD-R/M DATA-! 0
INSTALL-/R 8F CODE-C, MOD-R/M DATA-@ CODE-C,
HAS-FULL-OFF DISP,
ENDOF REGISTER OF MOD-R/M DATA-@ [ 58 C0- ] LITERAL +
CODE-C,
ENDOF SREG OF MOD-R/M DATA-@ C0-8* 7 + DUP 1F > IF 0F CODE-C,
[ 0A1 27 - ] LITERAL + THEN CODE-C,
ENDOF 8F CODE-C, 0 INSTALL-/R COMPILE-FIELDS
ENDCASE ;
 
( CALL AND JMP )
: CALL/JMP-ENTRY ( ENTRY FOR CALL AND JUMP )
( PARAM -- )
DROP ?INST-PRE PARSE-CALL/JMP-OPERANDS REGISTER ?BADTYPE CHECK-SIZES ;
: CALL-COMPILE ( COMPILE CALL )
( PARAM -- | X \ PARAM -- )
CALL/JMP-ENTRY ?NOSHORT GENERATE-PREFIXES IS-NEAR? IF HAS-MOD-R/M?
IF 0FF CODE-C, 2 INSTALL-/R COMPILE-FIELDS ELSE 0E8 CODE-C, OFFSET-SV
DATA-@ A16BIT? OFFSET16/32, THEN ELSE HAS-MOD-R/M? IF 0FF CODE-C, 3
INSTALL-/R COMPILE-FIELDS ELSE 9A CODE-C, OFFSET-SV DATA-@ A16BIT?
IF CODE-W, ELSE CODE-D, THEN CODE-W, THEN THEN ;
: JMP-COMPILE ( COMPILE JMP )
( PARAM -- | X \ PARAM -- )
CALL/JMP-ENTRY GENERATE-PREFIXES IS-SHORT? IF OFFSET-SV DATA-@ 0EB
CODE-C, OFFSET8, ELSE IS-NEAR? IF HAS-MOD-R/M? IF 0FF CODE-C, 4
INSTALL-/R COMPILE-FIELDS ELSE 0E9 CODE-C, OFFSET-SV DATA-@ A16BIT?
OFFSET16/32, THEN ELSE HAS-MOD-R/M? IF 0FF CODE-C, 5 INSTALL-/R
COMPILE-FIELDS ELSE 0EA CODE-C, OFFSET-SV DATA-@ A16BIT? IF CODE-W,
ELSE CODE-D, THEN CODE-W, THEN THEN THEN ;
 
( I/O INSTRUCTIONS )
: I/O-COMPILE ( COMPILE AN IN OR OUT )
( PARAM -- | X \ PARAM -- )
?INST-PRE ?SEG 3 ?TOOMANYOPS >R DEPTH-CHANGE IF IMMED-SV DATA-!
HAS-IMMED THEN R> BEGIN OP-DEPTH WHILE POP-OP CASE
LIT-OP , OF ( DISCARD IT ) ENDOF
LIT-OP DX OF ( DISCARD IT ) ENDOF
LIT-OP # OF ( DISCARD IT ) ENDOF
LIT-OP AL OF 8BIT ?OPSIZE ENDOF
LIT-OP BYTE OF 8BIT ?OPSIZE ENDOF
LIT-OP AX OF 16BIT ?OPSIZE ENDOF
LIT-OP WORD OF 16BIT ?OPSIZE ENDOF
LIT-OP EAX OF 32BIT ?OPSIZE ENDOF
LIT-OP DWORD OF 32BIT ?OPSIZE ENDOF
-1 ?BADMODE
ENDCASE REPEAT CHECK-DT-SIZE DATA, +SIZE-BIT HAS-IMMED?
IF CODE-C, IMMED-SV DATA-@ CODE-C, ELSE 8+ CODE-C, THEN ;
 
( BIT SCAN INSTRUCTIONS )
: BS-COMPILE ( COMPILE A BIT SCAN INSTRUCTION, AND ALSO SELECTOR VALIDATION )
( PARAM -- | X \ PARAM -- )
?INST-PRE REGISTER GENERIC-ENTRY2 ?NOIMMED ?REG,R/M 0F CODE-C, CODE-C,
COMPILE-FIELDS ;
 
( MOV INSTRUCTION )
: MOV-COMPILE ( COMPILE A MOV INSTRUCTION )
( PARAM -- | X \ PARAM -- | X \ X' \ PARAM -- )
?REP TREG GENERIC-ENTRY2 DROP HAS-IMMED? IF 0C6 +SIZE-BIT ELSE
MAXTYPE DATA-@ CASE
REGISTER OF 88 +SIZE-BIT ENDOF
SREG OF 8C ENDOF
CREG OF ?REG 0F CODE-C, 20 ENDOF
DREG OF ?REG 0F CODE-C, 21 ENDOF
TREG OF ?REG 0F CODE-C, 24 ENDOF
-1 ?BADMODE 0
ENDCASE +DIRECT-BIT THEN CODE-C, COMPILE-FIELDS ;
 
( XCHG INSTRUCTION )
: XCHG-COMPILE ( COMPILE THE XCHG INSTRUCTION )
( PARAM -- | X \ PARAM -- )
?REP REGISTER GENERIC-ENTRY2 ?NOIMMED +SIZE-BIT CODE-C,
COMPILE-FIELDS ;
 
( RET INSTRUCTION )
: RETF? ( ADJUST OPCODE FOR FAR RETURN )
( X -- X' )
IS-FAR? IF 8+ THEN ;
: RET-COMPILE ( COMPILE THE RET INSTRUCTION )
( PARAM -- | X \ PARAM -- )
?INST-PRE 2 ?TOOMANYOPS DROP DEPTH-CHANGE IF IMMED-SV DATA-! HAS-IMMED
THEN BEGIN OP-DEPTH WHILE POP-OP CASE
LIT-OP NEAR OF IS-NEAR ENDOF
LIT-OP FAR OF IS-FAR ENDOF
LIT-OP # OF ENDOF
-1 ?BADMODE
ENDCASE REPEAT HAS-IMMED? IF 0C2 RETF? CODE-C, IMMED-SV DATA-@ CODE-W,
ELSE 0C3 RETF? CODE-C, THEN ;
 
: RETF-COMPILE ( COMPILE RETF )
( PARAM -- | X \ PARAM -- )
FAR RET-COMPILE ;
 
( INT INSTRUCTION )
: INT-COMPILE ( COMPILE THE INT INSTRUCTION )
( X \ PARAM -- )
?INST-PRE DROP 0 ?TOOMANYOPS DEPTH-CHANGE 0= IF 2 ?NOTENOUGH THEN
DUP 3 = IF DROP 0CC ELSE 0CD CODE-C, THEN CODE-C, ;
 
( SETCC INSTRUCTIONS )
: SETCC-COMPILE ( COMPILE SETCC INSTRUCTIONS )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R DO-1OP ?FINISHED ?NOIMMED REGISTER ?BADTYPE CHECK-SIZES
GENERATE-PREFIXES 0F CODE-C, R> CODE-C, COMPILE-FIELDS ;
 
( XLAT/XLATB )
: XLAT-COMPILE ( COMPILE XLAT )
( PARAM -- )
?INST-PRE DROP ?PARAMS 3 ?TOOMANYOPS BEGIN OP-DEPTH WHILE POP-OP CASE
LIT-OP AL OF ENDOF
LIT-OP [BX] OF 16BIT ?OPSIZE ENDOF
LIT-OP [EBX] OF 32BIT ?OPSIZE ENDOF
-1 ?BADMODE
ENDCASE REPEAT CHECK-SIZES GENERATE-PREFIXES 0D7 CODE-C, ;
 
: XLATB-COMPILE ( COMPILE XLATB )
( PARAM -- )
?SEG ?OPERANDS DEFAULT-SIZE 16BIT = IF [BX] ELSE [EBX] THEN
XLAT-COMPILE ;
 
( DOUBLE PRECISION SHIFT INSTRUCTIONS )
: DOUBLE-SHIFT ( COMPILE SHLD, SHRD )
( PARAM -- | X \ PARAM -- | X \ X' \ PARAM -- )
?INST-PRE POP-OP CASE LIT-OP , OF SAVE-IMMED ENDOF LIT-OP # OF
SAVE-IMMED NEXT-IS-, ENDOF LIT-OP CL OF 1+ NEXT-IS-, ENDOF -1
?BADMODE ENDCASE REGISTER GENERIC-ENTRY2 0F CODE-C, CODE-C, MOD-R/M,
S-I-B, DISP, 8BIT DT-SIZE DATA-! IMMED, ;
 
( POINTER LOADING INSTRUCTIONS )
: LOAD-PTR-COMP ( COMPILE A POINTER LOAD INSTRUCTION )
( PARAM -- | X \ PARAM -- )
?INST-PRE REGISTER GENERIC-ENTRY2 ?NOIMMED ?REG,R/M ?MEM DUP 100 >
IF CODE-W, ELSE CODE-C, THEN COMPILE-FIELDS ;
 
( EXTENDED MOV INSTRUCTIONS )
: MOVX-COMPILE ( COMPILE MOVSX/MOVZX )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R DO-1OP R> +SIZE-BIT 0 DT-SIZE DATA-! >R DO-1OP R>
?FINISHED ?NOIMMED ?REG,R/M CHECK-SIZES GENERATE-PREFIXES 0F CODE-C,
CODE-C, COMPILE-FIELDS ;
 
( FADD & FMUL )
: FAD/FMUL-COMPILE ( COMPILE FADD AND FMUL )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R PARSE-FP-OPS R> SWAP CASE
0 OF 1 /R&FREG>MOD-R/M ?SEG 0DE CODE-C, CODE-C, ENDOF
1 OF 0D8 +FP-SIZE SWAP FP-GENERIC-ASSEMBLE ENDOF
2 OF ?SEG 0D8 +FP-DIRECT-BIT CODE-C, MOD-R/M>FREG
/R&FREG>MOD-R/M CODE-C, ENDOF
ENDCASE ;
 
( FST & FSTP )
: FST-COMPILE ( COMPILE FST AND FSTP )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R DO-1OP R> ?FINISHED ?NOIMMED MAXTYPE DATA-@ FREG = IF
?SEG 0DD CODE-C, MOD-R/M>FREG /R&FREG>MOD-R/M CODE-C,
ELSE
REGISTER ?BADTYPE ?MEM CHECK-SIZES DT-SIZE DATA-@
CASE
UNKNOWN OF ( FLOAT BY DEFAULT ) 0D9 ENDOF
32BIT OF 0D9 ENDOF
64BIT OF 0DD ENDOF
80BIT OF 4+ 0DB ENDOF
-1 ?BADMODE 0
ENDCASE SWAP FP-GENERIC-ASSEMBLE
THEN ;
 
( INTEGER/FLOATING POINT OPERATIONS )
: FIX-COMPILE ( COMPILE FIX INSTRUCTIONS )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R DO-1OP ?FINISHED REGISTER ?BADTYPE ?NOIMMED ?MEM
CHECK-SIZES 0DA DT-SIZE DATA-@ 16BIT = IF 4+ THEN R>
FP-GENERIC-ASSEMBLE ;
 
( FLOAT OPS THAT POP THE STACK )
: FXP-COMPILE ( COMPILE FXP INSTRUCTIONS )
( PARAM -- )
?INST-PRE ?SEG >R PARSE-FP-OPS 2- ?BADMODE R> 0DE CODE-C,
MOD-R/M>FREG + CODE-C, ;
 
( FCOM )
: FCOM-COMPILE ( COMPILE FCOM AND FCOMP )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R PARSE-FP-OPS R> SWAP CASE
0 OF 0D8 CODE-C, 1 /R&FREG>MOD-R/M CODE-C, ENDOF
1 OF MAXTYPE DATA-@ FREG = IF
0D8 CODE-C, MOD-R/M>FREG /R&FREG>MOD-R/M CODE-C,
ELSE
REGISTER ?BADTYPE ?MEM 0D8 +FP-SIZE SWAP
FP-GENERIC-ASSEMBLE
THEN ENDOF
-1 ?BADMODE DROP
ENDCASE ;
 
( MISCELLANEOUS FLOATING POINT INSTRUCTIONS )
: FMISC-COMPILE ( COMPILE MISCELLANEOUS FP INSTRUCTIONS )
( PARAM -- )
?INST-PRE ?SEG >R ?PARAMS PARSE-FP-OPS R> 100 /MOD ROT CASE
0 OF 1+ ENDOF
1 OF MAXTYPE DATA-@ FREG - ?BADMODE MOD-R/M>FREG + ENDOF
-1 ?BADMODE
ENDCASE SWAP CODE-C, CODE-C, ;
 
( FBLD & FBSTP, AND LOAD AND STORE CONTROL WORD, ENVIRONMENT, ETC. )
: GENERIC-FP-ENTRY1 ( GENERIC ENTRY SEQUENCE FOR FP INST THAT TAKE ONE MEMORY )
( OPERAND )
( PARAM -- PARAM | X \ PARAM -- PARAM )
?INST-PRE >R PARSE-FP-OPS 1- ?BADMODE R> REGISTER ?BADTYPE ?MEM ;
: FBLD/STP-COMPILE ( COMPILE FBLD & FBSTP )
( PARAM -- | X \ PARAM -- )
GENERIC-FP-ENTRY1 100 /MOD DUP 7 > IF 8- 9B CODE-C, THEN
FP-GENERIC-ASSEMBLE ;
 
( FIST )
: FIST-COMPILE ( COMPILE FIST & FISTP )
( PARAM -- | X \ PARAM -- )
GENERIC-FP-ENTRY1 GET-FP-SIZE CASE
16BIT OF 0DF ENDOF
32BIT OF 0DB ENDOF
64BIT OF 4+ 0DF ENDOF
-1 ?BADMODE 0
ENDCASE SWAP FP-GENERIC-ASSEMBLE ;
 
( FSTSW )
: FSTSW-COMPILE ( COMPILE FSTSW & FNSTSW )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R PARSE-FP-OPS DUP 1 > ?BADMODE REGISTER ?BADTYPE R> IF
9B CODE-C, THEN CASE
0 OF ?SEG 0E0DF CODE-W, ENDOF
1 OF MAXTYPE DATA-@ REGISTER = IF
MOD-R/M DATA-@ C0- ?BADMODE ?SEG 0E0DF CODE-W,
ELSE
0DD 7 FP-GENERIC-ASSEMBLE
THEN ENDOF
ENDCASE ;
 
( FILD )
: FILD-COMPILE ( COMPILE FILD )
( PARAM -- | X \ PARAM -- )
GENERIC-FP-ENTRY1 DROP GET-FP-SIZE CASE
16BIT OF 0DF 0 ENDOF
32BIT OF 0DB 0 ENDOF
64BIT OF 0DF 5 ENDOF
-1 ?BADMODE 0 0
ENDCASE FP-GENERIC-ASSEMBLE ;
 
( FLD COMPILE )
: FLD-COMPILE ( COMPILE FLD )
( PARAM -- | X \ PARAM -- )
?INST-PRE DROP PARSE-FP-OPS 1- ?BADMODE MAXTYPE DATA-@ FREG = IF
?SEG 0D9 CODE-C, MOD-R/M>FREG C0+ CODE-C,
ELSE
REGISTER ?BADTYPE ?MEM DT-SIZE DATA-@ CASE
UNKNOWN OF ( ASSUME FLOAT ) 0D9 0 ENDOF
32BIT OF 0D9 0 ENDOF
64BIT OF 0DD 0 ENDOF
80BIT OF 0DB 5 ENDOF
-1 ?BADMODE 0 0
ENDCASE FP-GENERIC-ASSEMBLE
THEN ;
 
( FDIV, FDIVR, FSUB, FSUBR )
: FDIV/SUB-COMPILE ( COMPILE FDIV, FDIVR, FSUB, & FSUBR )
( PARAM -- | X \ PARAM -- )
?INST-PRE >R PARSE-FP-OPS R> SWAP CASE
0 OF ?SEG 1 XOR 0DE CODE-C, 1 /R&FREG>MOD-R/M CODE-C, ENDOF
1 OF ?MEM 0D8 +FP-SIZE SWAP FP-GENERIC-ASSEMBLE ENDOF
2 OF ?SEG MAXTYPE DATA-@ FREG ?NOMATCH 0D8 +FP-DIRECT-BIT
CODE-C, FP-DIRECTION? IF 1 XOR THEN MOD-R/M>FREG
/R&FREG>MOD-R/M CODE-C, ENDOF
ENDCASE ;
 
( THE INSTRUCTIONS )
IN-ASM
37 ' 1BYTE OPCODE AAA
0AD5 ' 2BYTE OPCODE AAD
0AD4 ' 2BYTE OPCODE AAM
3F ' 1BYTE OPCODE AAS
02 ' GROUP1-COMPILE OPCODE ADC
00 ' GROUP1-COMPILE OPCODE ADD
04 ' GROUP1-COMPILE OPCODE AND
0 ' ARPL-COMPILE OPCODE ARPL
0 ' BOUND-COMPILE OPCODE BOUND
0BC ' BS-COMPILE OPCODE BSF
0BD ' BS-COMPILE OPCODE BSR
0 ' BSWAP-COMPILE OPCODE BSWAP
04 ' GROUP8-COMPILE OPCODE BT
07 ' GROUP8-COMPILE OPCODE BTC
06 ' GROUP8-COMPILE OPCODE BTR
05 ' GROUP8-COMPILE OPCODE BTS
0 ' CALL-COMPILE OPCODE CALL
298 ' SIZE-COND-COMP OPCODE CBW
399 ' SIZE-COND-COMP OPCODE CDQ
0F8 ' 1BYTE OPCODE CLC
0FC ' 1BYTE OPCODE CLD
0FA ' 1BYTE OPCODE CLI
060F ' 2BYTE OPCODE CLTS
0F5 ' 1BYTE OPCODE CMC
07 ' GROUP1-COMPILE OPCODE CMP
0A6 ' STR-INST OPCODE CMPS
0A6 ' BYTE-STR-INST OPCODE CMPSB
0A6 ' DWORD-STR-INST OPCODE CMPSD
0A6 ' WORD-STR-INST OPCODE CMPSW
0BC ' XCHG&ALU-COMPILE OPCODE CMPXCHG
0 ' CMPXCHG8B-COMP OPCODE CMPXCHG8B
0A20F ' 2BYTE OPCODE CPUID
299 ' SIZE-COND-COMP OPCODE CWD
398 ' SIZE-COND-COMP OPCODE CWDE
27 ' 1BYTE OPCODE DAA
2F ' 1BYTE OPCODE DAS
01 ' DEC-COMPILE OPCODE DEC
06 ' GROUP3-COMPILE OPCODE DIV
0 ' ENTER-COMPILE OPCODE ENTER
0F0D9 ' 2BYTE OPCODE F2XM1
0E1D9 ' 2BYTE OPCODE FABS
00 ' FAD/FMUL-COMPILE OPCODE FADD
0C0 ' FXP-COMPILE OPCODE FADDP
4DF ' FBLD/STP-COMPILE OPCODE FBLD
6DF ' FBLD/STP-COMPILE OPCODE FBSTP
0E0D9 ' 2BYTE OPCODE FCHS
0E2DB9B ' 3BYTE OPCODE FCLEX
02 ' FCOM-COMPILE OPCODE FCOM
03 ' FCOM-COMPILE OPCODE FCOMP
0D9DE ' 2BYTE OPCODE FCOMPP
0FFD9 ' 2BYTE OPCODE FCOS
0F6D9 ' 2BYTE OPCODE FDECSTP
06 ' FDIV/SUB-COMPILE OPCODE FDIV
0F8 ' FXP-COMPILE OPCODE FDIVP
07 ' FDIV/SUB-COMPILE OPCODE FDIVR
0F0 ' FXP-COMPILE OPCODE FDIVPR
0C0DD ' FMISC-COMPILE OPCODE FFREE
00 ' FIX-COMPILE OPCODE FIADD
02 ' FIX-COMPILE OPCODE FICOM
03 ' FIX-COMPILE OPCODE FICOMP
06 ' FIX-COMPILE OPCODE FIDIV
07 ' FIX-COMPILE OPCODE FIDIVR
0 ' FILD-COMPILE OPCODE FILD
01 ' FIX-COMPILE OPCODE FIMUL
0F7D9 ' 2BYTE OPCODE FINCSTP
0E3DB9B ' 3BYTE OPCODE FINIT
04 ' FIX-COMPILE OPCODE FISUB
05 ' FIX-COMPILE OPCODE FISUBR
02 ' FIST-COMPILE OPCODE FIST
03 ' FIST-COMPILE OPCODE FISTP
0 ' FLD-COMPILE OPCODE FLD
0E8D9 ' 2BYTE OPCODE FLD1
5D9 ' FBLD/STP-COMPILE OPCODE FLDCW
4D9 ' FBLD/STP-COMPILE OPCODE FLDENV
0E9D9 ' 2BYTE OPCODE FLDL2T
0EAD9 ' 2BYTE OPCODE FLDL2E
0EBD9 ' 2BYTE OPCODE FLDPI
0ECD9 ' 2BYTE OPCODE FLDLG2
0EDD9 ' 2BYTE OPCODE FLDLN2
0EED9 ' 2BYTE OPCODE FLDZ
01 ' FAD/FMUL-COMPILE OPCODE FMUL
0C8 ' FXP-COMPILE OPCODE FMULP
0E2DB ' 2BYTE OPCODE FNCLEX
0E3DB ' 2BYTE OPCODE FNINIT
0D0D9 ' 2BYTE OPCODE FNOP
6DD ' FBLD/STP-COMPILE OPCODE FNSAVE
7D9 ' FBLD/STP-COMPILE OPCODE FNSTCW
00 ' FSTSW-COMPILE OPCODE FNSTSW
6D9 ' FBLD/STP-COMPILE OPCODE FNSTENV
0F3D9 ' 2BYTE OPCODE FPATAN
0F8D9 ' 2BYTE OPCODE FPREM
0F5D9 ' 2BYTE OPCODE FPREM1
0F2D9 ' 2BYTE OPCODE FPTAN
0FCD9 ' 2BYTE OPCODE FRNDINT
4DD ' FBLD/STP-COMPILE OPCODE FRSTOR
0EDD ' FBLD/STP-COMPILE OPCODE FSAVE
0FDD9 ' 2BYTE OPCODE FSCALE
0FED9 ' 2BYTE OPCODE FSIN
0FBD9 ' 2BYTE OPCODE FSINCOS
0FAD9 ' 2BYTE OPCODE FSQRT
02 ' FST-COMPILE OPCODE FST
0FD9 ' FBLD/STP-COMPILE OPCODE FSTCW
0ED9 ' FBLD/STP-COMPILE OPCODE FSTENV
03 ' FST-COMPILE OPCODE FSTP
01 ' FSTSW-COMPILE OPCODE FSTSW
04 ' FDIV/SUB-COMPILE OPCODE FSUB
0E8 ' FXP-COMPILE OPCODE FSUBP
0E0 ' FXP-COMPILE OPCODE FSUBPR
05 ' FDIV/SUB-COMPILE OPCODE FSUBR
0E4D9 ' 2BYTE OPCODE FTST
0E0DD ' FMISC-COMPILE OPCODE FUCOM
0E8DD ' FMISC-COMPILE OPCODE FUCOMP
0E9DA ' 2BYTE OPCODE FUCOMPP
9B ' 1BYTE OPCODE FWAIT
0E5D9 ' 2BYTE OPCODE FXAM
0C8D9 ' FMISC-COMPILE OPCODE FXCH
0F4D9 ' 2BYTE OPCODE FXTRACT
0F1D9 ' 2BYTE OPCODE FYL2X
0F9D9 ' 2BYTE OPCODE FYL2XP1
0F4 ' 1BYTE OPCODE HLT
07 ' GROUP3-COMPILE OPCODE IDIV
05 ' GROUP3-COMPILE OPCODE IMUL
0E4 ' I/O-COMPILE OPCODE IN
00 ' INC-COMPILE OPCODE INC
6C ' STR-INST OPCODE INS
6C ' BYTE-STR-INST OPCODE INSB
6C ' DWORD-STR-INST OPCODE INSD
6C ' WORD-STR-INST OPCODE INSW
0 ' INT-COMPILE OPCODE INT
0C3 ' 1BYTE OPCODE INTO
080F ' 2BYTE OPCODE INVD
107 ' GROUP6&7-COMPILE OPCODE INVLPG
2CF ' SIZE-COND-COMP OPCODE IRET
3CF ' SIZE-COND-COMP OPCODE IRETD
77 ' JCC-COMPILE OPCODE JA
73 ' JCC-COMPILE OPCODE JAE
72 ' JCC-COMPILE OPCODE JB
76 ' JCC-COMPILE OPCODE JBE
72 ' JCC-COMPILE OPCODE JC
0E3 ' JCXZ-COMPILE OPCODE JCXZ
0E3 ' JECXZ-COMPILE OPCODE JECXZ
74 ' JCC-COMPILE OPCODE JE
7F ' JCC-COMPILE OPCODE JG
7D ' JCC-COMPILE OPCODE JGE
7C ' JCC-COMPILE OPCODE JL
7E ' JCC-COMPILE OPCODE JLE
0 ' JMP-COMPILE OPCODE JMP
76 ' JCC-COMPILE OPCODE JNA
72 ' JCC-COMPILE OPCODE JNAE
73 ' JCC-COMPILE OPCODE JNB
77 ' JCC-COMPILE OPCODE JNBE
73 ' JCC-COMPILE OPCODE JNC
75 ' JCC-COMPILE OPCODE JNE
7E ' JCC-COMPILE OPCODE JNG
7C ' JCC-COMPILE OPCODE JNGE
7D ' JCC-COMPILE OPCODE JNL
7F ' JCC-COMPILE OPCODE JNLE
71 ' JCC-COMPILE OPCODE JNO
7B ' JCC-COMPILE OPCODE JNP
79 ' JCC-COMPILE OPCODE JNS
75 ' JCC-COMPILE OPCODE JNZ
70 ' JCC-COMPILE OPCODE JO
7A ' JCC-COMPILE OPCODE JP
7A ' JCC-COMPILE OPCODE JPE
7B ' JCC-COMPILE OPCODE JPO
78 ' JCC-COMPILE OPCODE JS
74 ' JCC-COMPILE OPCODE JZ
9F ' 1BYTE OPCODE LAHF
02 ' BS-COMPILE OPCODE LAR
0C5 ' LOAD-PTR-COMP OPCODE LDS
8D ' LOAD-PTR-COMP OPCODE LEA
0C9 ' 1BYTE OPCODE LEAVE
0C4 ' LOAD-PTR-COMP OPCODE LES
0B40F ' LOAD-PTR-COMP OPCODE LFS
0B50F ' LOAD-PTR-COMP OPCODE LGS
03 ' BS-COMPILE OPCODE LSL
0B20F ' LOAD-PTR-COMP OPCODE LSS
102 ' GROUP6&7-COMPILE OPCODE LGDT
103 ' GROUP6&7-COMPILE OPCODE LIDT
02 ' GROUP6&7-COMPILE OPCODE LLDT
106 ' GROUP6&7-COMPILE OPCODE LMSW
0AC ' STR-INST OPCODE LODS
0AC ' BYTE-STR-INST OPCODE LODSB
0AC ' DWORD-STR-INST OPCODE LODSD
0AC ' WORD-STR-INST OPCODE LODSW
0E2 ' LOOP-COMPILE OPCODE LOOP
0E1 ' LOOP-COMPILE OPCODE LOOPE
0E0 ' LOOP-COMPILE OPCODE LOOPNE
0E0 ' LOOP-COMPILE OPCODE LOOPNZ
0E1 ' LOOP-COMPILE OPCODE LOOPZ
03 ' GROUP6&7-COMPILE OPCODE LTR
0 ' MOV-COMPILE OPCODE MOV
0A4 ' STR-INST OPCODE MOVS
0BE ' MOVX-COMPILE OPCODE MOVSX
0A4 ' BYTE-STR-INST OPCODE MOVSB
0A4 ' DWORD-STR-INST OPCODE MOVSD
0A4 ' WORD-STR-INST OPCODE MOVSW
0B6 ' MOVX-COMPILE OPCODE MOVZX
04 ' GROUP3-COMPILE OPCODE MUL
03 ' GROUP3-COMPILE OPCODE NEG
90 ' 1BYTE OPCODE NOP
02 ' GROUP3-COMPILE OPCODE NOT
01 ' GROUP1-COMPILE OPCODE OR
0E6 ' I/O-COMPILE OPCODE OUT
6E ' STR-INST OPCODE OUTS
6E ' BYTE-STR-INST OPCODE OUTSB
6E ' DWORD-STR-INST OPCODE OUTSD
6E ' WORD-STR-INST OPCODE OUTSW
0 ' POP-COMPILE OPCODE POP
261 ' SIZE-COND-COMP OPCODE POPA
361 ' SIZE-COND-COMP OPCODE POPAD
29D ' SIZE-COND-COMP OPCODE POPF
39D ' SIZE-COND-COMP OPCODE POPFD
0 ' PUSH-COMPILE OPCODE PUSH
260 ' SIZE-COND-COMP OPCODE PUSHA
360 ' SIZE-COND-COMP OPCODE PUSHAD
29C ' SIZE-COND-COMP OPCODE PUSHF
39C ' SIZE-COND-COMP OPCODE PUSHFD
02 ' GROUP2-COMPILE OPCODE RCL
03 ' GROUP2-COMPILE OPCODE RCR
320F ' 2BYTE OPCODE RDMSR
310F ' 2BYTE OPCODE RDTSC
0 ' RET-COMPILE OPCODE RET
0 ' RETF-COMPILE OPCODE RETF
00 ' GROUP2-COMPILE OPCODE ROL
01 ' GROUP2-COMPILE OPCODE ROR
0AA0F ' 2BYTE OPCODE RSM
9E ' 1BYTE OPCODE SAHF
04 ' GROUP2-COMPILE OPCODE SAL
07 ' GROUP2-COMPILE OPCODE SAR
03 ' GROUP1-COMPILE OPCODE SBB
0AE ' STR-INST OPCODE SCAS
0AE ' BYTE-STR-INST OPCODE SCASB
0AE ' DWORD-STR-INST OPCODE SCASD
0AE ' WORD-STR-INST OPCODE SCASW
97 ' SETCC-COMPILE OPCODE SETA
93 ' SETCC-COMPILE OPCODE SETAE
92 ' SETCC-COMPILE OPCODE SETB
96 ' SETCC-COMPILE OPCODE SETBE
92 ' SETCC-COMPILE OPCODE SETC
94 ' SETCC-COMPILE OPCODE SETE
9F ' SETCC-COMPILE OPCODE SETG
9D ' SETCC-COMPILE OPCODE SETGE
9C ' SETCC-COMPILE OPCODE SETL
9E ' SETCC-COMPILE OPCODE SETLE
96 ' SETCC-COMPILE OPCODE SETNA
92 ' SETCC-COMPILE OPCODE SETNAE
93 ' SETCC-COMPILE OPCODE SETNB
97 ' SETCC-COMPILE OPCODE SETNBE
93 ' SETCC-COMPILE OPCODE SETNC
95 ' SETCC-COMPILE OPCODE SETNE
9E ' SETCC-COMPILE OPCODE SETNG
9C ' SETCC-COMPILE OPCODE SETNGE
9D ' SETCC-COMPILE OPCODE SETNL
9F ' SETCC-COMPILE OPCODE SETNLE
91 ' SETCC-COMPILE OPCODE SETNO
9B ' SETCC-COMPILE OPCODE SETNP
99 ' SETCC-COMPILE OPCODE SETNS
95 ' SETCC-COMPILE OPCODE SETNZ
90 ' SETCC-COMPILE OPCODE SETO
9A ' SETCC-COMPILE OPCODE SETP
9A ' SETCC-COMPILE OPCODE SETPE
9B ' SETCC-COMPILE OPCODE SETPO
98 ' SETCC-COMPILE OPCODE SETS
94 ' SETCC-COMPILE OPCODE SETZ
100 ' GROUP6&7-COMPILE OPCODE SGDT
04 ' GROUP2-COMPILE OPCODE SHL
0A4 ' DOUBLE-SHIFT OPCODE SHLD
05 ' GROUP2-COMPILE OPCODE SHR
0AC ' DOUBLE-SHIFT OPCODE SHRD
101 ' GROUP6&7-COMPILE OPCODE SIDT
00 ' GROUP6&7-COMPILE OPCODE SLDT
104 ' GROUP6&7-COMPILE OPCODE SMSW
0F9 ' 1BYTE OPCODE STC
0FD ' 1BYTE OPCODE STD
0FB ' 1BYTE OPCODE STI
0AA ' STR-INST OPCODE STOS
0AA ' BYTE-STR-INST OPCODE STOSB
0AA ' DWORD-STR-INST OPCODE STOSD
0AA ' WORD-STR-INST OPCODE STOSW
01 ' GROUP6&7-COMPILE OPCODE STR
05 ' GROUP1-COMPILE OPCODE SUB
0 ' TEST-COMPILE OPCODE TEST
04 ' GROUP6&7-COMPILE OPCODE VERR
05 ' GROUP6&7-COMPILE OPCODE VERW
9B ' 1BYTE OPCODE WAIT
090F ' 2BYTE OPCODE WBINVD
300F ' 2BYTE OPCODE WRMSR
0C0 ' XCHG&ALU-COMPILE OPCODE XADD
86 ' XCHG-COMPILE OPCODE XCHG
0 ' XLAT-COMPILE OPCODE XLAT
0 ' XLATB-COMPILE OPCODE XLATB
06 ' GROUP1-COMPILE OPCODE XOR
 
( CREATE CODE DEFINITIONS )
IN-HIDDEN
VARIABLE CURRENT-SV ( NEEDED FOR STASHING THE CURRENT VOCABULARY )
: SAVE-CURRENT ( SAVE THE CURRENT VOCABULARY LINKAGE )
( -- )
CURRENT DATA-@ CURRENT-SV DATA-! ;
 
: UNSAVE-CURRENT ( RESET CURRENT-SV )
( -- )
0 CURRENT-SV DATA-! ;
 
: RESTORE-CURRENT ( RESTORE CURRENT TO ITS PREVIOUSLY SAVED VALUE )
( -- )
CURRENT-SV DATA-@ ?DUP IF CURRENT DATA-! UNSAVE-CURRENT THEN ;
 
( DEBUGGING )
: RESET-ASM RESET-VARS CLR-OPSTACK LOC-INIT SAVE-DEPTH ;
 
IN-ASM
: INIT-ASM ( INITALIZE ASSEMBLY )
( -- )
ALSO ASSEMBLER RESET-ASM ;
 
( FORTH HEADER CREATION WORDS )
IN-HIDDEN
: _CODE ( START A NATIVE CODE DEFINITION )
CODE-HEADER CODE-HERE CELL+ CODE-D, HIDE !CSP INIT-ASM ;
 
: _;CODE ( CREATE THE [;CODE] PART OF A LOW LEVEL DEFINING WORD )
?CSP !CSP COMPILE (;CODE) POSTPONE [ INIT-ASM ;
 
IN-FORTH
DEFER CODE ' _CODE IS CODE
DEFER ;CODE ' _;CODE IS ;CODE
ALSO FORTH IMMEDIATE PREVIOUS ( NECESSARY BECAUSE OF ASM-HIDDEN IMMEDIATE )
 
: SUBR: ( CREATE A SUBROUTINE IN THE ASSEMBLER VOCABULARY )
SAVE-CURRENT INIT-ASM DEFINITIONS !CSP CREATE HIDE DATA-HERE 0
DATA-, CODE-ALIGN CODE-HERE SWAP DATA-! DOES> DATA-@ ;
 
: MACRO: ( CREATE A MACRO IN THE ASSEMBLER VOCABULARY )
SAVE-CURRENT ALSO ASSEMBLER DEFINITIONS : POSTPONE ENTER-MACRO ;
 
( END CODE DEFINITIONS )
IN-ASM
: END-ASM A; PREVIOUS ;
 
IN-HIDDEN
: _END-CODE ( END A CODE DEFINITION )
END-ASM ?FINISHED ?UNRES ?CSP REVEAL RESTORE-CURRENT CODE-ALIGN
EXIT-ASSEMBLER ;
 
IN-ASM
DEFER END-CODE ' _END-CODE IS END-CODE
DEFER ;C ' _END-CODE IS ;C
 
: ENDM ( END A MACRO DEFINITION )
POSTPONE LEAVE-MACRO POSTPONE ; PREVIOUS RESTORE-CURRENT ;
 
 
ALSO FORTH IMMEDIATE PREVIOUS
 
: ;MACRO ( END A MACRO DEFINITION )
POSTPONE ENDM ; ALSO FORTH IMMEDIATE PREVIOUS
 
\ : EXIT ( REDEFINE EXIT TO TAKE CARE OF MACROS )
\ IN-MACRO? IF LEAVE-MACRO THEN R> DROP ;
( REDEFINE EXIT TO BE CLOSER TO STANDARD )
: ?LEAVE-MACRO ( CONDITIONALLY UNNEST A MACRO )
IN-MACRO? IF LEAVE-MACRO THEN ;
 
: EXIT ( REDEFINE EXIT TO TAKE CARE OF MACROS )
STATE @ IF POSTPONE ?LEAVE-MACRO POSTPONE EXIT ELSE
?LEAVE-MACRO EXIT THEN ; ALSO FORTH IMMEDIATE PREVIOUS
 
( UTILITY WORDS )
: PREFIX? ( ARE WE IN PREFIX MODE? )
( -- FLAG )
DEFER@ SAVE-INST ['] NOOP = ;
 
: POSTFIX? ( ARE WE IN POSTFIX MODE? )
( -- FLAG )
PREFIX? 0= ;
 
( SETTING AND RESTORING THE ASSEMBLER SYNTAX )
: SET-POSTFIX ( SET THE ASSEMBLER TO POSTFIX MODE, LEAVE A MODE FLAG )
( -- PREV. MODE==PREFIX )
PREFIX? DUP IF >R A; POSTFIX R> THEN ;
 
: SET-PREFIX ( SET THE ASSEMBLER TO PREFIX MODE, LEAVE A MODE FLAG )
( -- PREV. MODE==PREFIX )
PREFIX? DUP 0= IF >R A; PREFIX R> THEN ;
 
: RESET-SYNTAX ( RESET THE ASSEMBLER TO THE PREVIOUSLY FLAGGED SYNTAX )
( PREV. MODE==PREFIX -- )
IF A; PREFIX ELSE A; POSTFIX THEN ;
 
ONLY FORTH DEFINITIONS BASE !
/programs/develop/SPForth/lib/asm/asmmac.f
0,0 → 1,111
( Miscellaneous macros for Win32FORTH 486ASM version 1.24 )
( copyright [c] 1994 by Jim Schneider )
( This file version 1.2 )
 
( This program is free software; you can redistribute it and/or modify )
( it under the terms of the GNU General Public License as published by )
( the Free Software Foundation; either version 2 of the License, or )
( <at your option> any later version. )
( )
( This program is distributed in the hope that it will be useful, )
( but WITHOUT ANY WARRANTY; without even the implied warranty of )
( MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the )
( GNU General Public License for more details. )
( )
( You should have received a copy of the GNU General Public License )
( along with this program; if not, write to the Free Software )
( Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. )
 
MACRO: ;M POSTPONE ;MACRO ENDM IMMEDIATE
MACRO: AL, AL , ;M
MACRO: CL, CL , ;M
MACRO: DL, DL , ;M
MACRO: BL, BL , ;M
MACRO: AH, AH , ;M
MACRO: CH, CH , ;M
MACRO: DH, DH , ;M
MACRO: BH, BH , ;M
MACRO: AX, AX , ;M
MACRO: CX, CX , ;M
MACRO: DX, DX , ;M
MACRO: BX, BX , ;M
MACRO: SP, SP , ;M
MACRO: BP, BP , ;M
MACRO: SI, SI , ;M
MACRO: DI, DI , ;M
MACRO: EAX, EAX , ;M
MACRO: ECX, ECX , ;M
MACRO: EDX, EDX , ;M
MACRO: EBX, EBX , ;M
MACRO: ESP, ESP , ;M
MACRO: EBP, EBP , ;M
MACRO: ESI, ESI , ;M
MACRO: EDI, EDI , ;M
MACRO: [BX+SI], [BX+SI] , ;M
MACRO: [BX+DI], [BX+DI] , ;M
MACRO: [BP+SI], [BP+SI] , ;M
MACRO: [BP+DI], [BP+DI] , ;M
MACRO: [SI], [SI] , ;M
MACRO: [DI], [DI] , ;M
MACRO: [BP], [BP] , ;M
MACRO: [BX], [BX] , ;M
MACRO: [EAX], [EAX] , ;M
MACRO: [ECX], [ECX] , ;M
MACRO: [EDX], [EDX] , ;M
MACRO: [EBX], [EBX] , ;M
MACRO: [ESP], [ESP] , ;M
MACRO: [EBP], [EBP] , ;M
MACRO: [ESI], [ESI] , ;M
MACRO: [EDI], [EDI] , ;M
MACRO: [EAX*2], [EAX*2] , ;M
MACRO: [ECX*2], [ECX*2] , ;M
MACRO: [EDX*2], [EDX*2] , ;M
MACRO: [EBX*2], [EBX*2] , ;M
\ MACRO: [ESP*2], [ESP*2] , ;M
MACRO: [EBP*2], [EBP*2] , ;M
MACRO: [ESI*2], [ESI*2] , ;M
MACRO: [EDI*2], [EDI*2] , ;M
MACRO: [EAX*4], [EAX*4] , ;M
MACRO: [ECX*4], [ECX*4] , ;M
MACRO: [EDX*4], [EDX*4] , ;M
MACRO: [EBX*4], [EBX*4] , ;M
MACRO: [EBP*4], [EBP*4] , ;M
MACRO: [ESI*4], [ESI*4] , ;M
MACRO: [EDI*4], [EDI*4] , ;M
MACRO: [EAX*8], [EAX*8] , ;M
MACRO: [ECX*8], [ECX*8] , ;M
MACRO: [EDX*8], [EDX*8] , ;M
MACRO: [EBX*8], [EBX*8] , ;M
MACRO: [EBP*8], [EBP*8] , ;M
MACRO: [ESI*8], [ESI*8] , ;M
MACRO: [EDI*8], [EDI*8] , ;M
MACRO: ES, ES , ;M
MACRO: CS, CS , ;M
MACRO: SS, SS , ;M
MACRO: DS, DS , ;M
MACRO: FS, FS , ;M
MACRO: GS, GS , ;M
MACRO: CR0, CR0 , ;M
MACRO: CR2, CR2 , ;M
MACRO: CR3, CR3 , ;M
MACRO: CR4, CR4 , ;M
MACRO: DR0, DR0 , ;M
MACRO: DR1, DR1 , ;M
MACRO: DR2, DR2 , ;M
MACRO: DR3, DR3 , ;M
MACRO: DR6, DR6 , ;M
MACRO: DR7, DR7 , ;M
MACRO: TR3, TR3 , ;M
MACRO: TR4, TR4 , ;M
MACRO: TR5, TR5 , ;M
MACRO: TR6, TR6 , ;M
MACRO: TR7, TR7 , ;M
MACRO: ST, ST , ;M
MACRO: ST(0), ST(0) , ;M
MACRO: ST(1), ST(1) , ;M
MACRO: ST(2), ST(2) , ;M
MACRO: ST(3), ST(3) , ;M
MACRO: ST(4), ST(4) , ;M
MACRO: ST(5), ST(5) , ;M
MACRO: ST(6), ST(6) , ;M
MACRO: ST(7), ST(7) , ;M
/programs/develop/SPForth/lib/asm
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/lib/ext/case.f
0,0 → 1,42
\ Êîíñòðóêöèÿ âûáîðà CASE
\ ñ ó÷åòîì âîçìîæíîé âëîæåííîñòè îïåðàòîðîâ CASE
 
 
DECIMAL
VARIABLE CSP \ Óêàçàòåëü ñòåêà êîíòðîëÿ
6 CONSTANT L-CAS# \ Äîïóñòèìûé óðîâåíü âëîæåííîñòè
CREATE S-CSP L-CAS# CELLS ALLOT \ Ñòåê êîíòðîëÿ
S-CSP CSP !
 
: +CSP ( -> P) \ Äîáàâèòü óðîâåíü
CSP @ DUP CELL+ CSP !
;
: -CSP ( -> ) \ Óáðàòü óðîâåíü
CSP @ 1 CELLS - CSP !
;
 
: !CSP ( -> ) \ Èíèöèàëèçèðîâàòü óðîâåíü
SP@ +CSP !
;
 
: CSP@ ( -> A)
CSP @ 1 CELLS - @
;
: ?CSP ( -> ) \ Ïðîâåðèòü âûäåðæàííîñòü ñòåêà
\ SP@ CSP@ <> 37 ?ERROR ( ABORT" Ñáîé ñòåêà ïî CSP !")
-CSP
;
: CASE ( -> )
!CSP
; IMMEDIATE
: OF
POSTPONE OVER POSTPONE =
[COMPILE] IF POSTPONE DROP
; IMMEDIATE
: ENDOF
[COMPILE] ELSE
; IMMEDIATE
: ENDCASE
POSTPONE DROP BEGIN SP@ CSP@ =
0= WHILE [COMPILE] THEN REPEAT -CSP
; IMMEDIATE
/programs/develop/SPForth/lib/ext/disasm.f
0,0 → 1,1555
\ 80386 DISASSEMBLER
\ ANDREW MCKEWAN, APRIL 1994
\ TOM ZIMMER, 05/18/94 PORT TO WIN32F
\ MODIFIED TO WORD IN DECIMAL 08/03/94 10:04 TJZ
\ 06-??-95 SMUB NEXT SEQUENCE DEFINED IN FKERNEL
\ 06-21-95 SMUB REMOVED REDUNDANT COUNT CALLS FROM TXB, LXS.
\ 04-??-97 EXTENDED BY C.L. TO INCLUDE P6 AND MMX INSTRUCTIONS
\ 14-11-2000 Adapted from SPFOPT (Michael Maximov) by Dmitry Yakimov
 
\ ??-11-2000 Fixed FE. FF. (Bandaletov) and H.R (Yakimov)
\ 15-11-2000 Fixed MV2 (Yakimov)
\ 25-12-2000 Added float literals recognition (Yakimov)
\ 26-07-2001 Fixed MVX (Maksimov)
\ 11-05-2004 Fixed FDA and CMV (Serguei Jidkov)
 
CR .( Loading Intel Pentium MMX disassembler...)
 
WARNING @
BASE @
GET-CURRENT
( warn base wid )
 
WARNING 0!
DECIMAL
 
REQUIRE [DEFINED] lib/include/tools.f
\ REQUIRE [IF] ~mak\CompIF.f
REQUIRE CASE lib/ext/case.f
\ REQUIRE WITHIN lib\include\core-ext.f
REQUIRE NextNFA lib/ext/vocs.f
 
: DEFER VECT ;
 
: DUP>R R> OVER >R >R ;
 
: UMAX ( D1 D2 -- FLAG )
2DUP U< IF NIP ELSE DROP THEN ;
 
 
80 CONSTANT MAXSTRING
 
255 CONSTANT MAXCOUNTED \ maximum length of contents of a counted string
 
: 0X BASE @ HEX >R BL WORD ?LITERAL
R> BASE ! ; IMMEDIATE
 
: "CLIP" ( a1 n1 -- a1 n1' ) \ clip a string to between 0 and MAXCOUNTED
MAXCOUNTED MIN 0 MAX ;
 
: PLACE ( addr len dest -- )
SWAP "CLIP" SWAP
2DUP 2>R
CHAR+ SWAP MOVE
2R> C! ;
 
: +PLACE ( addr len dest -- ) \ append string addr,len to counted
\ string dest
>R "CLIP" MAXCOUNTED R@ C@ - MIN R>
\ clip total to MAXCOUNTED string
2DUP 2>R
 
COUNT CHARS + SWAP MOVE
2R> +! ;
 
: C+PLACE ( c1 a1 -- ) \ append char c1 to the counted string at a1
DUP 1+! COUNT + 1- C! ;
 
 
: OFF 0! ;
 
: BLANK ( addr len -- ) \ fill addr for len with spaces (blanks)
BL FILL ;
 
128 CONSTANT SPCS-MAX ( optimization for SPACES )
 
CREATE SPCS SPCS-MAX ALLOT
SPCS SPCS-MAX BLANK
 
C" UPC" FIND NIP 0=
[IF]
: UPC ( c -- c' )
DUP [CHAR] Z U>
IF 0xDF AND
THEN ;
[THEN]
 
: (D.) ( d -- addr len ) TUCK DABS <# #S ROT SIGN #> ;
 
 
80 VALUE COLS
 
: H.R ( n1 n2 -- ) \ display n1 as a hex number right
\ justified in a field of n2 characters
BASE @ >R HEX >R
0 <# #S #> R> OVER - 0 MAX SPACES TYPE
R> BASE ! ;
 
: H.N ( n1 n2 -- ) \ display n1 as a HEX number of n2 digits
BASE @ >R HEX >R
0 <# R> 0 ?DO # LOOP #> TYPE
R> BASE ! ;
 
0 VALUE DEFAULT-16BIT?
 
: DEFAULT-16BIT ( -- )
TRUE TO DEFAULT-16BIT? ;
 
: DEFAULT-32BIT ( -- )
FALSE TO DEFAULT-16BIT? ;
 
DEFER SHOW-NAME ( CFA -- ) \ DISPLAY NEAREST SYMBOL
 
0 VALUE BASE-ADDR
 
VOCABULARY DISASSEMBLER
ALSO DISASSEMBLER DEFINITIONS
 
CREATE S-BUF MAXSTRING ALLOT
 
: >S ( A1 N1 -- )
S-BUF +PLACE ;
 
: 0>S ( -- ) \ RESET S-BUF
S-BUF OFF ;
 
: SSPACES ( N1 -- )
SPCS SWAP S-BUF +PLACE ;
 
: SSPACE ( -- )
1 SSPACES ;
 
: EMIT>S ( C1 -- )
S-BUF C+PLACE ;
 
: S> ( -- A1 N1 )
S-BUF COUNT ;
 
: (.S") ( addr len -- )
S-BUF +PLACE ;
 
: .S" ( 'TEXT' -- )
[CHAR] " PARSE
POSTPONE SLITERAL
POSTPONE (.S") ; IMMEDIATE
 
 
: D.R>S ( D W -- )
>R (D.) R> OVER - SSPACES >S ;
 
: .R>S ( N W -- )
>R S>D R> D.R>S ;
 
: U.R>S ( U W -- )
0 SWAP D.R>S ;
 
: H.>S ( U -- )
BASE @ SWAP HEX 0 (D.) >S SSPACE BASE ! ;
 
: H.R>S ( N1 N2 -- )
BASE @ >R HEX >R
0 <# #S #> R> OVER - SSPACES >S
R> BASE ! ;
 
: ?.NAME>S ( CFA -- )
\ ELIMINATE " 0X"
DUP 1 H.R>S SSPACE
NEAR_NFA
>R DUP
IF .S" ( " DUP COUNT >S
NAME> R> - DUP
IF DUP .S" +" NEGATE H.>S
THEN DROP .S" ) "
ELSE RDROP DROP
THEN
;
 
' ?.NAME>S TO SHOW-NAME
 
\ 32 CONSTANT COMMENT-COL
 
0 VALUE SIZE
0 VALUE 16-BIT-DATA
0 VALUE 16-BIT-ADDR
0 VALUE PREFIX-OP
0 VALUE MMX-REG
 
: @+ ( ADDR -- ADDR N ) DUP CELL+ SWAP @ ;
: W@+ ( ADDR -- ADDR N ) DUP 2 + SWAP W@ ;
 
: SEXT ( BYTE -- N ) DUP 128 AND IF 0xFFFFFF00 OR THEN ;
: MOD/SIB ( MOD-R-R/M -- R/M R MOD ) \ R INCLUDING GENERAL, SPECIAL, SEGMENT, MMX
( MOD-OP-R/M -- R/M OP MOD )
( S-I-B -- B I S )
255 AND 8 /MOD 8 /MOD ;
 
: ??? ( N1 -- )
.S" ??? " DROP ;
 
: SS. ( N ADR LEN W ) >R DROP SWAP R@ * + R> >S SSPACE ;
 
: TTTN ( CODE -- ) 15 AND S" O NOB AEE NEBEA S NSP NPL GELEG " 2 SS. ;
 
: SREG ( SREG -- ) 3 RSHIFT 7 AND S" ESCSSSDSFSGSXXXX" 2 SS. ;
: CREG ( EEE -- ) 3 RSHIFT 7 AND S" CR0???CR2CR3CR4?????????" 3 SS. ;
: DREG ( EEE -- ) 3 RSHIFT 7 AND S" DR0DR1DR2DR3??????DR6DR7" 3 SS. ;
: TREG ( EEE -- ) 3 RSHIFT 7 AND S" ?????????TR3TR4TR5TR6TR7" 3 SS. ; \ OBSOLETE
: MREG ( N -- ) 7 AND S" MM0MM1MM2MM3MM4MM5MM6MM7" 3 SS. ;
 
: REG8 ( N -- ) 7 AND S" ALCLDLBLAHCHDHBH" 2 SS. ;
: REG16 ( N -- ) 7 AND S" AXCXDXBXSPBPSIDI" 2 SS. ;
: REG32 ( N -- ) 7 AND S" EAXECXEDXEBXESPEBPESIEDI" 3 SS. ;
: REG16/32 ( N -- )
16-BIT-DATA
IF REG16
ELSE REG32
THEN ;
: REG ( A N -- A )
MMX-REG
IF MREG
ELSE SIZE
IF REG16/32
ELSE REG8
THEN
THEN
;
 
: [BASE16] ( R/M -- ) 4 - S" [SI][DI][BP][BX]" 4 SS. ;
\ R/M = 4 , 5 , 6 , 7
: [IND16] ( R/M -- ) S" [BX+SI][BX+DI][BP+SI][BP+DI]" 7 SS. ;
\ R/M = 0 , 1 , 2 , 3
: [REG16] ( R/M -- ) DUP 4 <
IF [IND16]
ELSE [BASE16]
THEN ;
: [REG32] ( N -- ) 7 AND S" [EAX][ECX][EDX][EBX][ESP][EBP][ESI][EDI]" 5 SS. ;
 
 
: [REG*2] ( I -- ) S" [EAX*2][ECX*2][EDX*2][EBX*2][XXX*2][EBP*2][ESI*2][EDI*2]" 7 SS. ;
: [REG*4] ( I -- ) S" [EAX*4][ECX*4][EDX*4][EBX*4][XXX*4][EBP*4][ESI*4][EDI*4]" 7 SS. ;
: [REG*8] ( I -- ) S" [EAX*8][ECX*8][EDX*8][EBX*8][XXX*8][EBP*8][ESI*8][EDI*8]" 7 SS. ;
: [INDEX] ( SIB -- ) MOD/SIB OVER 4 =
IF 2DROP \ NO ESP SCALED INDEX
ELSE CASE ( S )
0 OF [REG32] ENDOF
1 OF [REG*2] ENDOF
2 OF [REG*4] ENDOF
3 OF [REG*8] ENDOF
ENDCASE
THEN DROP ;
 
: DISP8 ( ADR -- ADR' ) COUNT H.>S ;
: DISP16 ( ADR -- ADR' ) W@+ SHOW-NAME ;
: DISP32 ( ADR -- ADR' ) @+ ( BODY> ) SHOW-NAME ;
: DISP16/32 ( ADR -- ADR' )
16-BIT-ADDR
IF DISP16
ELSE DISP32
THEN ;
 
: ., ( -- ) .S" , " ;
 
: .# ., .S" # " ;
 
: IMM8 ( ADR -- ADR' ) .# COUNT H.>S ;
 
\ : IMM16 ( ADR -- ADR' ) .# W@+ H.>S ;
 
: IMM16/32 ( ADR -- ADR' )
.# 16-BIT-DATA
IF W@+
ELSE @+
THEN H.>S ;
 
: SIB ( ADR MOD -- ADR )
>R COUNT TUCK 7 AND 5 = R@ 0= AND
IF DISP32 SWAP [INDEX] R> DROP \ EBP BASE AND MOD = 00
ELSE R> CASE ( MOD )
1 OF DISP8 ENDOF
2 OF DISP32 ENDOF
ENDCASE
SWAP DUP [REG32] [INDEX]
THEN ;
 
 
: MOD-R/M32 ( ADR R/M MOD -- ADR' )
DUP 3 =
IF DROP REG \ MOD = 3, REGISTER CASE
ELSE OVER 4 =
IF NIP SIB \ R/M = 4, SIB CASE
ELSE 2DUP 0= SWAP 5 = AND \ MOD = 0, R/M = 5,
IF 2DROP DISP32 \ DISP32 CASE
ELSE ROT SWAP
CASE ( MOD )
1 OF DISP8 ENDOF
2 OF DISP32 ENDOF
ENDCASE
SWAP [REG32]
THEN
THEN
THEN ;
 
: MOD-R/M16 ( ADR R/M MOD -- ADR' )
2DUP 0= SWAP 6 = AND
IF 2DROP DISP16 \ DISP16 CASE
ELSE CASE ( MOD )
0 OF [REG16] ENDOF
1 OF SWAP DISP8 SWAP [REG16] ENDOF
2 OF SWAP DISP16 SWAP [REG16] ENDOF
3 OF REG ENDOF
ENDCASE
THEN ;
 
: MOD-R/M ( ADR MODR/M -- ADR' )
MOD/SIB NIP 16-BIT-ADDR
IF MOD-R/M16
ELSE MOD-R/M32
THEN ;
 
 
: R/M8 0 TO SIZE MOD-R/M ;
: R/M16/32 1 TO SIZE MOD-R/M ;
: R/M16 TRUE TO 16-BIT-DATA R/M16/32 ;
 
: R,R/M ( ADR -- ADR' )
COUNT DUP 3 RSHIFT REG ., MOD-R/M ;
 
: R/M,R ( ADR -- ADR' )
COUNT DUP>R MOD-R/M ., R> 3 RSHIFT REG ;
 
: R/M ( ADR OP -- ADR' )
2 AND
IF R,R/M
ELSE R/M,R
THEN ;
 
\ -------------------- SIMPLE OPCODES --------------------
 
: INH ( -<NAME>- )
CREATE
BL WORD COUNT HERE PLACE
HERE C@ 1+ ALLOT
DOES> COUNT >S SSPACE DROP ;
 
INH CLC CLC
INH STC STC
INH CLD CLD
INH STD STD
\ INH RPNZ REPNZ
\ INH REPZ REPZ
INH CBW CBW
INH CDQ CDQ
INH DAA DAA
INH DAS DAS
INH AAA AAA
INH AAS AAS
\ INH LOCK LOCK
INH INB INSB
INH OSB OUTSB
INH SAH SAHF
INH LAH LAHF
\ INH AAM AAM
\ INH AAD AAD
INH HLT HLT
INH CMC CMC
INH XLT XLAT
INH CLI CLI
INH STI STI
 
INH CLT CLTS
INH INV INVD
INH WIV WBINVD
INH UD2 UD2
INH WMR WRMSR
INH RTC RDTSC
INH RMR RDMSR
INH RPC RDPMC
INH EMS EMMS
INH RSM RSM
INH CPU CPUID
INH UD1 UD1
\ INH LSS LSS
\ INH LFS LFS
\ INH LGS LGS
 
\ INH D16: D16:
\ INH A16: A16:
\ INH ES: ES:
\ INH CS: CS:
\ INH DS: DS:
\ INH FS: FS:
\ INH GS: GS:
 
: AAM ( ADR CODE -- ADR' )
.S" AAM" DROP COUNT DROP ;
 
: AAD ( ADR CODE -- ADR' )
.S" AAD" DROP COUNT DROP ;
 
: D16 ( ADR CODE -- ADR' )
DROP .S" D16:"
TRUE TO 16-BIT-DATA
TRUE TO PREFIX-OP
;
 
: A16 ( ADR CODE -- ADR' )
DROP .S" A16:"
TRUE TO 16-BIT-ADDR
TRUE TO PREFIX-OP
;
 
: RPZ ( ADR CODE -- ADR' )
DROP .S" REPNZ"
TRUE TO PREFIX-OP
;
 
: REP ( ADR CODE -- ADR' )
DROP .S" REPZ"
TRUE TO PREFIX-OP
;
 
: LOK ( ADR CODE -- ADR' ) \ THIS SHOULD HAVE ERROR CHECKING ADDED
DROP .S" LOCK"
TRUE TO PREFIX-OP
;
 
: CS: ( ADR CODE -- ADR' )
DROP .S" CS:"
TRUE TO PREFIX-OP
;
 
: DS: ( ADR CODE -- ADR' )
DROP .S" DS:"
TRUE TO PREFIX-OP
;
 
: SS: ( ADR CODE -- ADR' )
DROP .S" SS:"
TRUE TO PREFIX-OP
;
 
: ES: ( ADR CODE -- ADR' )
DROP .S" ES:"
TRUE TO PREFIX-OP
;
 
: GS: ( ADR CODE -- ADR' )
DROP .S" GS:"
TRUE TO PREFIX-OP
;
 
: FS: ( ADR CODE -- ADR' )
DROP .S" FS:"
TRUE TO PREFIX-OP
;
 
: ISD ( ADR CODE -- ADR' )
DROP 16-BIT-DATA
IF .S" INSW "
ELSE .S" INSD "
THEN ;
 
: OSD ( ADR CODE -- ADR' )
DROP 16-BIT-DATA
IF .S" OUTSW "
ELSE .S" OUTSD "
THEN ;
 
: INP ( ADDR CODE -- ADDR' )
.S" IN " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
ELSE .S" AL , "
THEN
COUNT H.>S ;
 
: OTP ( ADDR CODE -- ADDR' )
.S" OUT " 1 AND
IF COUNT H.>S 16-BIT-DATA
IF .S" , AX"
ELSE .S" , EAX"
THEN
ELSE COUNT H.>S .S" , AL"
THEN
;
 
: IND ( ADDR CODE -- ADDR' )
.S" IN " 1 AND
IF 16-BIT-DATA
IF .S" AX , DX"
ELSE .S" EAX , DX"
THEN
ELSE .S" AL , DX"
THEN
;
 
: OTD ( ADDR CODE -- ADDR' )
.S" OUT " 1 AND
IF 16-BIT-DATA
IF .S" DX , AX"
ELSE .S" DX , EAX"
THEN
ELSE .S" DX , AL"
THEN
;
 
\ -------------------- ALU OPCODES --------------------
 
: .ALU ( N -- )
7 AND S" ADDOR ADCSBBANDSUBXORCMP" 3 SS. 4 SSPACES
;
 
: ALU ( ADR OP -- ADR' )
DUP 3 RSHIFT .ALU R/M ;
 
: ALI ( ADR OP -- ADR' )
>R COUNT
DUP 3 RSHIFT .ALU
MOD-R/M
R> 3 AND ?DUP
IF 1 =
IF IMM16/32
ELSE .# COUNT SEXT 0 .R>S SSPACE
THEN
ELSE IMM8
THEN ;
 
: ALA ( ADR OP -- ADR' )
DUP 3 RSHIFT .ALU
1 AND IF 0 REG IMM16/32 ELSE 0 REG8 IMM8 THEN ;
 
 
\ -------------------- TEST/XCHG --------------------
 
: TXB ( ADDR OP -- ADDR' )
DUP 3 AND S" TESTTESTXCHGXCHG" 4 SS. 3 SSPACES
1 AND
IF 1 TO SIZE R,R/M \ SMUB REMOVED COUNT
ELSE 0 TO SIZE R,R/M \ SMUB REMOVED COUNT
THEN
;
 
: TST ( ADDR OP -- ADDR' )
.S" TEST " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
IMM16/32
ELSE .S" AL , " IMM8
THEN
;
 
\ -------------------- INC/DEC ----------------------
 
: INC ( ADDR OP -- ADDR' )
.S" INC " REG16/32 ;
 
: DEC ( ADDR OP -- ADDR' )
.S" DEC " REG16/32 ;
 
 
\ -------------------- PUSH/POP --------------------
 
: PSH ( ADDR OP -- ADDR' )
.S" PUSH " REG16/32 ;
 
: POP ( ADDR OP -- ADDR' )
.S" POP " REG16/32 ;
 
: PSS ( ADDR OP -- ADDR' )
.S" PUSH " SREG ;
 
: PPS ( ADDR OP -- ADDR' )
.S" POP " SREG ;
 
: PSA ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" PUSHA "
ELSE .S" PUSHAD "
THEN ;
 
: PPA ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" POPA "
ELSE .S" POPAD "
THEN ;
 
: PSI ( ADDR OP -- ADDR' )
.S" PUSH " 2 AND
IF IMM8
ELSE IMM16/32
THEN ;
 
: PSF ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" PUSHF "
ELSE .S" PUSHFD "
THEN ;
 
: PPF ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" POPF "
ELSE .S" POPFD "
THEN ;
 
: 8F. ( ADDR OP -- ADDR' )
DROP COUNT .S" POP " R/M16/32 ;
 
\ -------------------- MOVE --------------------
 
: MOV ( ADDR OP -- ADDR' )
.S" MOV " R/M ;
 
: MRI ( ADDR OP -- ADDR' ) ( MOV REGISTER, IMM )
.S" MOV " DUP 8 AND
IF REG16/32 IMM16/32
ELSE REG8 IMM8
THEN ;
 
: MVI ( ADR OP -- ADR' ) ( MOV MEM, IMM )
.S" MOV " DROP COUNT MOD-R/M
SIZE
IF IMM16/32
ELSE IMM8
THEN
;
 
: MRS ( ADDR OP -- ADDR' )
\ ? REMOVE REDUNDANT >R , R>
16-BIT-DATA
IF .S" MOV " DROP
1 TO SIZE
COUNT DUP MOD-R/M .,
SREG
ELSE ???
THEN ;
 
: MSR ( ADDR OP -- ADDR' )
16-BIT-DATA
IF .S" MOV " DROP
1 TO SIZE
COUNT DUP SREG .,
MOD-R/M
ELSE ???
THEN ;
 
: MRC ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP REG32 .S" , "
CREG ;
 
: MCR ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP CREG .S" , "
REG32 ;
 
: MRD ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP REG32 .S" , "
DREG ;
 
: MDR ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP DREG .S" , "
REG32 ;
 
: MRT ( ADDR OP -- ADDR' )
\ OBSOLETE
.S" MOV "
DROP COUNT DUP REG32 .S" , "
TREG ;
 
: MTR ( ADDR OP -- ADDR' )
\ OBSOLETE
.S" MOV "
DROP COUNT DUP TREG .S" , "
REG32 ;
 
: MV1 ( ADDR OP -- ADDR' )
.S" MOV " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
ELSE .S" AL , "
THEN
DISP16/32 ;
 
: MV2 ( ADDR OP -- ADDR' )
.S" MOV " SWAP DISP16/32 .,
SWAP 1 AND
IF 16-BIT-DATA
IF .S" AX"
ELSE .S" EAX"
THEN
ELSE .S" AL"
THEN
;
 
: LEA ( ADDR OP -- ADDR' )
.S" LEA " DROP 1 TO SIZE R,R/M ;
 
: LXS ( ADDR OP -- ADDR' )
1 AND
IF .S" LDS "
ELSE .S" LES "
THEN
R,R/M \ SMUB REMOVED COUNT
;
 
: BND ( ADDR OP -- ADDR' )
.S" BOUND " DROP 1 TO SIZE R,R/M ;
 
: ARP ( ADDR OP -- ADDR' )
.S" ARPL " DROP
1 TO SIZE
TRUE TO 16-BIT-DATA
R,R/M
;
 
: MLI ( ADDR OP -- ADDR' )
1 TO SIZE
.S" IMUL " 0x69 =
IF R,R/M IMM16/32
ELSE R,R/M IMM8
THEN ;
 
\ -------------------- JUMPS AND CALLS --------------------
 
0 VALUE MAX_REFERENCE
 
: >MAX_R DUP MAX_REFERENCE UMAX TO MAX_REFERENCE ;
 
: REL8 ( ADDR OP -- ADDR' )
COUNT SEXT OVER + BASE-ADDR - >MAX_R H.>S ;
 
 
 
: REL16/32 ( ADDR OP -- ADDR' )
16-BIT-ADDR
IF W@+
ELSE @+
THEN OVER + BASE-ADDR - >MAX_R SHOW-NAME ;
 
: JSR ( ADDR OP -- ADDR' )
.S" CALL " DROP REL16/32 ;
 
: JMP ( ADDR OP -- ADDR' )
.S" JMP " 2 AND IF REL8 ELSE REL16/32 THEN ;
 
: .JXX ( ADDR OP -- ADDR' )
.S" J" TTTN 4 SSPACES ;
 
: BRA ( ADDR OP -- ADDR' )
.JXX REL8 ;
 
: LUP ( ADDR OP -- ADDR' )
3 AND S" LOOPNZLOOPZ LOOP JECXZ " 6 SS. 1 SSPACES REL8 ;
 
: LBR ( ADDR OP -- ADDR' )
.JXX REL16/32 ;
 
: RTN ( ADDR OP -- ADDR' )
.S" RET NEAR " 1 AND 0=
IF W@+ H.>S
THEN ;
 
: RTF ( ADDR OP -- ADDR' )
.S" RET FAR " 1 AND 0=
IF W@+ H.>S
THEN ;
 
: ENT ( ADDR OP -- ADDR' )
DROP
.S" ENTER " W@+ H.>S ., COUNT H.>S ;
 
: CIS ( ADDR OP -- ADDR' )
0x9A =
IF .S" CALL "
ELSE .S" JMP "
THEN
16-BIT-DATA
IF .S" PTR16:16 "
ELSE .S" PTR16:32 "
THEN
COUNT MOD-R/M ;
 
: NT3 ( ADDR OP -- ADDR' )
DROP .S" INT 3 "
;
 
: INT ( ADDR OP -- ADDR' )
DROP .S" INT "
COUNT H.>S ;
 
INH LEV LEAVE
INH IRT IRET
INH NTO INTO
 
\ -------------------- STRING OPS --------------------
 
: STR INH DOES> COUNT >S 1 AND IF .S" D" ELSE .S" B" THEN ;
 
STR MVS MOVS
STR CPS CMPS
STR STS STOS
STR LDS LODS
STR SCS SCAS
 
\ -------------------- EXCHANGE --------------------
 
: XGA ( ADDR OP -- ADDR' )
.S" XCHG EAX, " REG16/32 ;
 
\ : XCH ( ADDR OP -- ADDR' )
\ .S" XCHG " DROP R,R/M ;
 
 
\ -------------------- SHIFTS & ROTATES --------------------
 
: .SHIFT ( N -- )
7 AND S" ROLRORRCLRCRSHLSHRXXXSAR" 3 SS. 4 SSPACES ;
 
: SHF ( ADDR OP -- ADDR' )
>R COUNT
DUP 3 RSHIFT .SHIFT
MOD-R/M .,
R> 0xD2 AND
CASE
0xC0 OF COUNT H.>S ENDOF
0xD0 OF 1 H.>S ENDOF
0xD2 OF 1 REG8 ENDOF
ENDCASE ;
 
\ -------------------- EXTENDED OPCODES --------------------
 
: WF1 ( ADDR -- ADDR' )
1+ COUNT DUP
0x0C0 <
IF DUP
3 RSHIFT 7 AND
CASE 6 OF .S" FSTENV " MOD-R/M ENDOF
7 OF .S" FSTCW WORD " MOD-R/M ENDOF
2DROP 2 - DUP .S" FWAIT "
ENDCASE
ELSE DROP 2 - .S" FWAIT "
THEN ;
 
: WF2 ( ADDR -- ADDR' )
1+ COUNT
CASE 0xE2 OF .S" FCLEX " ENDOF
0xE3 OF .S" FINIT " ENDOF
SWAP 2 - SWAP .S" FWAIT "
ENDCASE ;
 
: WF3 ( ADDR -- ADDR' )
1+ COUNT DUP 3 RSHIFT 7 AND
CASE 6 OF .S" FSAVE " MOD-R/M ENDOF
7 OF .S" FSTSW WORD " MOD-R/M ENDOF
2DROP 2 - DUP .S" FWAIT "
ENDCASE ;
 
: WF4 ( ADDR -- ADDR' )
1+ COUNT 0xE0 =
IF .S" FSTSW AX "
ELSE 2 - .S" FWAIT "
THEN ;
 
: FWAITOPS ( ADDR OP -- ADDR' )
CASE 0xD9 OF WF1 ENDOF
0xDB OF WF2 ENDOF
0xDD OF WF3 ENDOF
0xDF OF WF4 ENDOF
.S" FWAIT "
ENDCASE ;
 
: W8F ( ADDR OP -- ADDR' )
DROP DUP C@ DUP 0xF8 AND 0xD8 =
IF FWAITOPS
ELSE DROP .S" WAIT "
THEN ;
 
: FALU1 ( XOPCODE -- )
3 RSHIFT 7 AND
S" FADD FMUL FCOM FCOMPFSUB FSUBRFDIV FDIVR"
5 SS. 2 SSPACES ;
 
: FALU5 ( XOPCODE -- )
3 RSHIFT 7 AND
S" FADD FMUL ???? ???? FSUBRFSUB FDIVRFDIV "
5 SS. 2 SSPACES ;
 
: STI. ( OP -- )
7 AND .S" ST(" 1 .R>S .S" )";
 
\ : STI.ST ( OP -- )
\ 7 AND
\ .S" ST(" 1 .R>S .S" )" .S" ST " ;
 
: FD8 ( ADDR OPCODE -- ADDR' )
DROP COUNT DUP FALU1
DUP 0xC0 <
IF .S" FLOAT " MOD-R/M
ELSE DUP 0xF0 AND 0xD0 =
IF STI.
ELSE .S" ST , " STI.
THEN
THEN ;
 
: FDC ( ADDR OPCODE -- ADDR' )
DROP COUNT
DUP DUP 0xC0 <
IF FALU1 .S" DOUBLE " MOD-R/M
ELSE FALU5 STI. .S" , ST"
THEN ;
 
: FNULLARY-F ( OP -- )
0x0F AND DUP 8 <
IF
S" F2XM1 FYL2X FPTAN FPATAN FXTRACTFPREM1 FDECSTPFINCSTP"
ELSE 8 -
S" FPREM FYL2XP1FSQRT FSINCOSFRNDINTFSCALE FSIN FCOS "
THEN
7 SS. ;
 
: FNULLARY-E ( OP -- )
0x0F AND DUP 8 <
IF
S" FCHS FABS ??? ??? FTST FXAM ??? ??? "
ELSE 8 -
S" FLD1 FLDL2T FLDL2E FLDPI FLDLG2 FLDLN2 FLDZ ??? "
THEN
7 SS. ;
 
: FNULLARY ( OP -- )
DUP 0xEF >
IF FNULLARY-F EXIT
THEN
DUP 0xE0 <
IF 0xD0 =
IF .S" FNOP"
ELSE DUP ???
THEN
EXIT
THEN
FNULLARY-E ;
 
 
\ : FALU2 ( OP -- )
\ 3 RSHIFT 7 AND
\ S" FLD ??? FST FSTP FLDENV FLDCW FNSTENVFNSTCW "
\ 7 SS. ;
 
: FD9 ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE
0x00 OF .S" FLD FLOAT " ENDOF
0x10 OF .S" FST FLOAT " ENDOF
0x18 OF .S" FSTP FLOAT " ENDOF
0x20 OF .S" FLDENV " ENDOF
0x28 OF .S" FLDCW WORD " ENDOF
0x30 OF .S" FNSTENV " ENDOF
0x38 OF .S" FNSTCW WORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE
DUP 0xD0 <
IF DUP 0xC8 <
IF .S" FLD "
ELSE .S" FXCH "
THEN
STI.
ELSE FNULLARY
THEN
THEN ;
 
: FALU3 ( OP -- )
3 RSHIFT 7 AND
S" FIADD FIMUL FICOM FICOMPFISUB FISUBRFIDIV FIDIVR"
6 SS. 1 SSPACES ;
 
: FCMOVA ( OP -- )
3 RSHIFT 7 AND
S" FCMOVB FCMOVE FCMOVBEFCMOVU ??? ??? ??? ??? "
7 SS. ;
 
: FDA ( ADDR OP -- )
DROP COUNT DUP 0xC0 <
IF DUP FALU3 .S" DWORD " MOD-R/M
ELSE DUP 0xE9 =
IF .S" FUCOMPP" DROP
ELSE DUP FCMOVA STI.
THEN
THEN ;
 
: FALU7 ( OP -- )
3 RSHIFT 7 AND
S" FADDP FMULP ??? ??? FSUBRPFSUBP FDIVRPFDIVP "
6 SS. SSPACE ;
 
: FDE ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP FALU3 .S" WORD " MOD-R/M
ELSE DUP 0xD9 =
IF .S" FCOMPP" DROP
ELSE DUP FALU7 STI.
THEN
THEN ;
 
 
: FCMOVB ( OP -- )
3 RSHIFT 7 AND
S" FCMOVNB FCMOVNE FCMOVNBEFCMOVNU ??? FUCOMI FCOMI ??? "
8 SS. ;
 
: FDB ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FILD DWORD " ENDOF
0x10 OF .S" FIST DWORD " ENDOF
0x18 OF .S" FISTP DWORD " ENDOF
0x28 OF .S" FLD EXTENDED " ENDOF
0x38 OF .S" FSTP EXTENDED " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE
CASE 0xE2 OF .S" FNCLEX" ENDOF
0xE3 OF .S" FNINIT" ENDOF
DUP DUP FCMOVB STI.
ENDCASE
THEN ;
 
: FALU6 ( OP -- )
3 RSHIFT 7 AND
S" FFREE ??? FST FSTP FUCOM FUCOMP??? ??? "
6 SS. SSPACE ;
 
: FDD ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FLD DOUBLE " ENDOF
0x10 OF .S" FST DOUBLE " ENDOF
0x18 OF .S" FSTP DOUBLE " ENDOF
0x20 OF .S" FRSTOR " ENDOF
0x30 OF .S" FNSAVE " ENDOF
0x38 OF .S" FNSTSW WORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE DUP FALU6 STI.
THEN ;
 
: FDF ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FILD WORD " ENDOF
0x10 OF .S" FIST WORD " ENDOF
0x18 OF .S" FISTP WORD " ENDOF
0x20 OF .S" FBLD TBYTE " ENDOF
0x28 OF .S" FILD QWORD " ENDOF
0x30 OF .S" FBSTP TBYTE " ENDOF
0x38 OF .S" FISTP QWORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE DUP 0xE0 =
IF .S" FNSTSW AX " DROP
ELSE DUP 0x38 AND
CASE 0x28 OF .S" FUCOMIP " STI. ENDOF
0x30 OF .S" FCOMIP " STI. ENDOF
???
ENDCASE
THEN
THEN ;
 
: GP6 ( ADDR OP -- ADDR' )
DROP COUNT DUP 3 RSHIFT
7 AND S" SLDTSTR LLDTLTR VERRVERW??? ???" 4 SS. 3 SSPACES
R/M16 ;
 
: GP7 ( ADDR OP -- ADDR' )
DROP COUNT DUP 3 RSHIFT
7 AND DUP S" SGDT SIDT LGDT LIDT SMSW ??? LMSW INVLPG" 6 SS. 1 SSPACES
4 AND 4 =
IF R/M16
ELSE R/M16/32
THEN ;
 
: BTX. ( N -- )
3 RSHIFT
3 AND S" BT BTSBTRBTC" 3 SS. 4 SSPACES ;
 
: GP8 ( ADDR OP -- ADDR' )
DROP COUNT DUP BTX.
R/M16/32 IMM8 ;
 
: LAR ( ADDR OP -- ADDR' )
.S" LAR " DROP R,R/M ;
 
: LSL ( ADDR OP -- ADDR' )
.S" LSL " DROP R,R/M ;
 
: LSS ( ADDR OP -- ADDR' )
.S" LSS " DROP R,R/M ;
 
: LFS ( ADDR OP -- ADDR' )
.S" LFS " DROP R,R/M ;
 
: LGS ( ADDR OP -- ADDR' )
.S" LGS " DROP R,R/M ;
 
: BTX ( ADDR OP -- ADDR' )
BTX. R/M,R ;
 
: SLI ( ADDR OP -- ADDR' )
.S" SHLD " DROP R/M,R IMM8 ;
 
: SRI ( ADDR OP -- ADDR' )
.S" SHRD " DROP R/M,R IMM8 ;
 
: SLC ( ADDR OP -- ADDR' )
.S" SHLD " DROP R/M,R .S" , CL" ;
 
: SRC ( ADDR OP -- ADDR' )
.S" SHRD " DROP R/M,R .S" , CL" ;
 
: IML ( ADDR OP -- ADDR' )
.S" IMUL " DROP R,R/M ;
 
: CXC ( ADDR OP -- ADDR' )
.S" CMPXCHG " 1 AND TO SIZE R/M,R ;
 
: MVX ( ADDR OP -- ADDR' )
DUP 8 AND
IF .S" MOVSX "
ELSE .S" MOVZX "
THEN
1 AND >R
COUNT MOD/SIB R> \ SIZE BIT
IF SWAP REG32 ., \ WORD TO DWORD CASE
3 =
IF REG16
ELSE .S" WORD PTR " DROP DUP 1- C@ MOD-R/M
THEN
ELSE SWAP REG16/32 ., \ BYTE CASE
3 =
IF REG8
ELSE .S" BYTE PTR " DROP DUP 1- C@ MOD-R/M
THEN
THEN ;
 
: XAD ( ADDR OP -- ADDR' )
.S" XADD " 1 AND TO SIZE R/M,R ;
 
: BSF ( ADDR OP -- ADDR' )
.S" BSF " DROP R,R/M ;
 
: BSR ( ADDR OP -- ADDR' )
.S" BSR " DROP R,R/M ;
 
: CX8 ( ADDR OP -- ADDR' )
.S" CMPXCHG8B " DROP COUNT R/M16/32 ;
 
: BSP ( ADDR OP -- ADDR' )
.S" BSWAP " REG32 ;
 
 
: F6. ( ADDR OP -- ADDR' )
\ ??
>R COUNT
DUP 3 RSHIFT 7 AND DUP>R S" TESTXXXXNOT NEG MUL IMULDIV IDIV" 4 SS. 3 SSPACES
MOD-R/M
R> 0= IF
R@ 1 AND IF IMM16/32
ELSE IMM8
THEN
THEN
R> DROP ;
 
: FE. ( ADDR OP -- ADDR' )
DROP COUNT
DUP 3 RSHIFT 7 AND
CASE
0 OF .S" INC " ENDOF
1 OF .S" DEC " ENDOF
.S" ??? "
ENDCASE R/M8 ;
 
: FF. ( ADDR OP -- ADDR' )
DROP COUNT
DUP 3 RSHIFT 7 AND
CASE
0 OF .S" INC " ENDOF
1 OF .S" DEC " ENDOF
2 OF .S" CALL " ENDOF
3 OF .S" CALL FAR " ENDOF
4 OF .S" JMP " ENDOF
5 OF .S" JMP FAR " ENDOF
6 OF .S" PUSH " ENDOF
.S" ??? "
ENDCASE R/M16/32 ;
 
 
\ --------------------- CONDITIONAL MOVE ---------------
 
: SET ( ADR OP -- )
.S" SET"
TTTN 2 SSPACES
COUNT R/M8 ;
 
: CMV ( ADR OP -- )
.S" CMOV"
TTTN 1 SSPACES
R,R/M ;
 
\ --------------------- MMX OPERATIONS -----------------
 
: MMX-SIZE ( OP -- )
3 AND S" BWDQ" 1 SS. ;
 
: UPL ( ADR OP -- ADR' )
3 AND S" PUNPCKLBWPUNPCKLWDPUNPCKLDQ" 9 SS. R,R/M ;
 
: UPH ( ADR OP -- ADR' )
3 AND S" PUNPCKHBWPUNPCKHWDPUNPCKHDQ" 9 SS. R,R/M ;
 
: CGT ( ADR OP -- ADR' )
.S" PCMPGT" MMX-SIZE R,R/M ;
 
: CEQ ( ADR OP -- ADR' )
.S" PCMPEQ" MMX-SIZE R,R/M ;
 
: PSH. ( OP -- )
0x30 AND
CASE
0x10 OF .S" PSRL" ENDOF
0x20 OF .S" PSRA" ENDOF
0x30 OF .S" PSLL" ENDOF
ENDCASE ;
 
: GPA ( ADR OP -- ADR' )
>R COUNT DUP PSH. R> MMX-SIZE 2 SSPACES MREG IMM8 ;
 
: PUW ( ADR OP -- ADR' )
.S" PACKUSDW " DROP R,R/M ;
 
: PSB ( ADR OP -- ADR' )
.S" PACKSSWB " DROP R,R/M ;
 
: PSW ( ADR OP -- ADR' )
.S" PACKSSDW " DROP R,R/M ;
 
: MPD ( ADR OP -- ADR' )
.S" MOVD " DROP COUNT MOD/SIB
SWAP MREG ., 3 =
IF REG32
ELSE MOD-R/M
THEN ;
 
: MDP ( ADR OP -- ADR' )
.S" MOVD " DROP COUNT MOD/SIB
3 =
IF SWAP REG32
ELSE SWAP MOD-R/M
THEN ., MREG ;
 
: MPQ ( ADR OP -- ADR' )
.S" MOVQ " DROP R,R/M ;
 
: MQP ( ADR OP -- ADR' )
.S" MOVQ " DROP R/M,R ;
 
: SHX ( ADR OP -- ADR' )
DUP PSH. MMX-SIZE 2 SSPACES R,R/M ;
 
: MLL ( ADR OP -- ADR' )
.S" PMULLW " DROP R,R/M ;
 
: MLH ( ADR OP -- ADR' )
.S" PMULHW " DROP R,R/M ;
 
: MAD ( ADR OP -- ADR' )
.S" PMADDWD " DROP R,R/M ;
 
: SUS ( ADR OP -- ADR' )
.S" PSUBUS" MMX-SIZE R,R/M ;
 
: SBS ( ADR OP -- ADR' )
.S" PSUBS" MMX-SIZE SSPACE R,R/M ;
 
: SUB ( ADR OP -- ADR' )
.S" PSUB" MMX-SIZE 2 SSPACES R,R/M ;
 
: AUS ( ADR OP -- ADR' )
.S" PADDUS" MMX-SIZE R,R/M ;
 
: ADS ( ADR OP -- ADR' )
.S" PADDS" MMX-SIZE SSPACE R,R/M ;
 
: ADD ( ADR OP -- ADR' )
.S" PADD" MMX-SIZE 2 SSPACES R,R/M ;
 
: PAD ( ADR OP -- ADR' )
.S" PAND " DROP R,R/M ;
 
: POR ( ADR OP -- ADR' )
.S" POR " DROP R,R/M ;
 
: PAN ( ADR OP -- ADR' )
.S" PANDN " DROP R,R/M ;
 
: PXR ( ADR OP -- ADR' )
.S" PXOR " DROP R,R/M ;
 
 
\ -------------------- OPCODE TABLE --------------------
 
: OPS 0x10 0 DO ' , LOOP ;
 
 
CREATE OP-TABLE2
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
OPS GP6 GP7 LAR LSL ??? ??? CLT ??? INV WIV ??? UD2 ??? ??? ??? ??? \ 0
OPS ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 1
OPS MRC MRD MCR MDR MRT ??? MTR ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 2
OPS WMR RTC RMR RPC ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 3
 
OPS CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV \ 4
OPS ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 5
OPS UPL UPL UPL PUW CGT CGT CGT PSB UPH UPH UPH PSW ??? ??? MPD MPQ \ 6
OPS ??? GPA GPA GPA CEQ CEQ CEQ EMS ??? ??? ??? ??? ??? ??? MDP MQP \ 7
 
OPS LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR \ 8
OPS SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET \ 9
OPS PSS PPS CPU BTX SLI SLC ??? ??? PSS PPS RSM BTX SRI SRC ??? IML \ A
OPS CXC CXC LSS BTX LFS LGS MVX MVX ??? UD1 GP8 BTX BSF BSR MVX MVX \ B
 
OPS XAD XAD ??? ??? ??? ??? ??? CX8 BSP BSP BSP BSP BSP BSP BSP BSP \ C
OPS ??? SHX SHX SHX ??? MLL ??? ??? SUS SUS ??? PAD AUS AUS ??? PAN \ D
OPS ??? SHX SHX ??? ??? MLH ??? ??? SBS SBS ??? POR ADS ADS ??? PXR \ E
OPS ??? ??? SHX SHX ??? MAD ??? ??? SUB SUB SUB ??? ADD ADD ADD ??? \ F
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
: 0F. ( ADR CODE -- )
DROP COUNT DUP
DUP 0x70 AND 0x50 0x80 WITHIN TO MMX-REG
CELLS OP-TABLE2 + @ EXECUTE
0 TO MMX-REG ;
 
 
CREATE OP-TABLE
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
OPS ALU ALU ALU ALU ALA ALA PSS PPS ALU ALU ALU ALU ALA ALA PSS 0F. \ 0
OPS ALU ALU ALU ALU ALA ALA PSS PPS ALU ALU ALU ALU ALA ALA PSS PPS \ 1
OPS ALU ALU ALU ALU ALA ALA ES: DAA ALU ALU ALU ALU ALA ALA CS: DAS \ 2
OPS ALU ALU ALU ALU ALA ALA SS: AAA ALU ALU ALU ALU ALA ALA DS: AAS \ 3
 
OPS INC INC INC INC INC INC INC INC DEC DEC DEC DEC DEC DEC DEC DEC \ 4
OPS PSH PSH PSH PSH PSH PSH PSH PSH POP POP POP POP POP POP POP POP \ 5
OPS PSA PPA BND ARP FS: GS: D16 A16 PSI MLI PSI MLI INB ISD OSB OSD \ 6
OPS BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA \ 7
 
OPS ALI ALI ??? ALI TXB TXB TXB TXB MOV MOV MOV MOV MRS LEA MSR 8F. \ 8
OPS XGA XGA XGA XGA XGA XGA XGA XGA CBW CDQ CIS W8F PSF PPF SAH LAH \ 9
OPS MV1 MV1 MV2 MV2 MVS MVS CPS CPS TST TST STS STS LDS LDS SCS SCS \ A
OPS MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI \ B
 
OPS SHF SHF RTN RTN LXS LXS MVI MVI ENT LEV RTF RTF NT3 INT NTO IRT \ C
OPS SHF SHF SHF SHF AAM AAD ??? XLT FD8 FD9 FDA FDB FDC FDD FDE FDF \ D
OPS LUP LUP LUP LUP INP INP OTP OTP JSR JMP CIS JMP IND IND OTD OTD \ E
OPS LOK ??? RPZ REP HLT CMC F6. F6. CLC STC CLI STI CLD STD FE. FF. \ F
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
: DIS-OP ( ADR -- ADR' )
0>S
FALSE TO PREFIX-OP \ SMUB
COUNT
DUP 1 AND TO SIZE
DUP CELLS OP-TABLE + @ EXECUTE
PREFIX-OP 0=
IF DEFAULT-16BIT? 0=
IF FALSE TO 16-BIT-DATA
FALSE TO 16-BIT-ADDR
ELSE TRUE TO 16-BIT-DATA
TRUE TO 16-BIT-ADDR
THEN
THEN ;
 
 
0 VALUE NEXT-INST
 
: X". ( ADDR -- ADDR' )
\ CR DUP BASE-ADDR - 6 H.R SPACE
DUP C@ 2DUP DUMP
+ 2+
\ ." C, " 1+ OVER + SWAP
\ DO I C@ 2 H.R ." C, " LOOP
\ COUNT + 1+
;
 
[DEFINED] G. [IF]
 
: FLIT8. ( ADDR -- ADDR' )
." FLITERAL: "
DUP DF@ G. 8 +
;
 
: FLIT10. ( ADDR -- ADDR' )
." FLITERAL: "
DUP F@ G. 10 +
;
 
[ELSE]
 
: FLIT8.
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP 8 OVER + SWAP
DO I C@ 3 H.R ." C," LOOP
8 +
;
 
: FLIT10. ( ADDR -- ADDR' )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP 10 OVER + SWAP
DO I C@ 3 H.R ." C," LOOP
10 +
;
 
[THEN]
 
: VECT. ( ADDR -- ADDR' )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP @ 8 H.R DUP CELL+ SWAP @ ." , \ " WordByAddr TYPE
;
 
: CONS. ( ADDR -- )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " @ 8 H.R ." ,"
;
 
: USER. ( ADDR -- )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " @ 8 H.R ." , \ Relative in heap [hex]" \ CELL+
;
 
: UVAL. ( ADDR -- ADDR' )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP @ 8 H.R ." , \ Relative in heap [hex]" CELL+
;
 
: CODE. ( ADDR -- )
DUP NextNFA
?DUP
IF OVER - 5 -
ELSE
DUP DP @ SWAP - ABS DUP 512 > IF DROP 40 THEN \ no applicable end found
THEN
." Size of data: ~" DUP .
DUMP
;
 
 
: DIS-DB CR .S" DB " COUNT H.>S ;
: DIS-DW CR .S" DW " W@+ H.>S ;
: DIS-DD CR .S" DD " @+ H.>S ;
: DIS-DS CR .S" STRING " 0x22 EMIT>S COUNT 2DUP >S + 0x22 EMIT>S ;
 
: FIND-REST-END ( xt -- addr | 0)
DUP NextNFA DUP
IF
NIP
NAME>C 1- \ Skip CFA field
ELSE
DROP
DP @ - ABS 100 > IF 0 EXIT THEN \ no applicable end found
DP @ 1-
THEN
 
BEGIN \ Skip alignment
DUP C@ 0= WHILE 1-
REPEAT ;
 
( wid ) SET-CURRENT
 
: INST ( ADR -- ADR' )
DUP TO NEXT-INST
COLS 0x29 <
IF DIS-OP
S-BUF COUNT TYPE
ELSE DUP DIS-OP
OVER BASE-ADDR - 6 H.R SPACE
DUP ROT
2DUP - DUP>R 0x10 U> ABORT" DECOMPILER ERROR"
DO I C@ 2 H.N LOOP
R> 5 < IF 9 EMIT THEN
9 EMIT S-BUF COUNT TYPE
THEN NEXT-INST C@ 0xE8 =
IF NEXT-INST 1+ @+ SWAP +
CASE
['] _CLITERAL-CODE OF X". ENDOF
['] _SLITERAL-CODE OF X". ENDOF
['] _VECT-CODE OF VECT. 2DROP RDROP ENDOF
['] _CONSTANT-CODE OF CONS. DROP RDROP ENDOF
['] _USER-CODE OF USER. DROP RDROP ENDOF
['] _CREATE-CODE OF CODE. DROP RDROP ENDOF
['] _USER-VALUE-CODE OF UVAL. ENDOF
['] _FLIT-CODE10 OF FLIT10. ENDOF
['] _FLIT-CODE8 OF FLIT8. ENDOF
ENDCASE
THEN ;
 
 
: (REST-AREA) ( addr1 addr2 -- )
\ if addr2 = 0 continue till RET instruction
SWAP DUP TO NEXT-INST
BEGIN
\ We do not look for JMP's because there may be
\ a jump in a forth word
CR
OVER 0= IF NEXT-INST C@ 0xC3 <>
ELSE 2DUP < INVERT
THEN
WHILE INST
REPEAT 2DROP ." END-CODE "
;
 
VECT REST-AREA
' (REST-AREA) TO REST-AREA
 
: REST ( addr -- )
DUP HERE U> 0= HERE 1- AND REST-AREA
;
 
: SEE ( "name" -- )
' DUP FIND-REST-END ['] REST-AREA CATCH DROP
;
 
PREVIOUS
 
( warn base )
BASE !
WARNING !
 
.( Ok) CR
/programs/develop/SPForth/lib/ext/disasm2.f
0,0 → 1,1955
\ 80386 DISASSEMBLER
\ ANDREW MCKEWAN, APRIL 1994
\ TOM ZIMMER, 05/18/94 PORT TO WIN32F
\ MODIFIED TO WORD IN DECIMAL 08/03/94 10:04 TJZ
\ 06-??-95 SMUB NEXT SEQUENCE DEFINED IN FKERNEL
\ 06-21-95 SMUB REMOVED REDUNDANT COUNT CALLS FROM TXB, LXS.
\ 04-??-97 EXTENDED BY C.L. TO INCLUDE P6 AND MMX INSTRUCTIONS
\ 14-11-2000 Adapted from SPFOPT (Michael Maximov) by Dmitry Yakimov
 
\ ??-11-2000 Fixed FE. FF. (Bandaletov) and H.R (Yakimov)
\ 15-11-2000 Fixed MV2 (Yakimov)
\ 25-12-2000 Added float literals recognition (Yakimov)
\ 26-07-2001 Fixed MVX (Maksimov)
 
CR .( Loading Intel Pentium MMX disassembler...)
 
WARNING 0!
DECIMAL
 
\ REQUIRE [IF] ~mak/CompIF.f
\ REQUIRE CASE lib/ext/case.f
\ REQUIRE WITHIN lib/include/core-ext.f
 
REQUIRE [DEFINED] lib/include/tools.f
\ REQUIRE [IF] ~mak\CompIF.f
REQUIRE CASE lib/ext/case.f
\ REQUIRE WITHIN lib\include\core-ext.f
REQUIRE NextNFA lib/ext/vocs.f
 
VARIABLE END-WORD
VARIABLE START-WORD
\ VARIABLE START-LAB
\ VARIABLE FINISH-LAB
\ VARIABLE START-LIST
\ VARIABLE FINISH-LIST
\ VARIABLE IMAGE-END
VARIABLE START-LAB
VARIABLE FINISH-LAB
VARIABLE START-LIST
VARIABLE FINISH-LIST
VARIABLE START-LIST2
VARIABLE FINISH-LIST2
VARIABLE FINISH-LIST3
VARIABLE START-VAR
VARIABLE FINISH-VAR
VARIABLE START-ARRAY
VARIABLE FINISH-ARRAY
0 VALUE IMAGE-END
 
VARIABLE CALL-TYPE?
VARIABLE TRIGER
VARIABLE TRIGER3
VARIABLE DISP8?
: ADD-CALL
>R START-LIST @
BEGIN DUP @ R@ =
IF DROP RDROP 0 CALL-TYPE? ! EXIT
ELSE DUP FINISH-LIST @ = 0= THEN
WHILE CELL+ REPEAT CELL+ DUP FINISH-LIST ! R> OVER !
BEGIN DUP CELL- 2DUP 2>R @ SWAP @ < IF 2R@ @ SWAP 2R@ SWAP @ SWAP ! ! THEN
2R> NIP DUP START-LIST @ = UNTIL
DROP 1 CALL-TYPE? !
;
: ADD-CALL2
>R START-LIST2 @
BEGIN DUP @ R@ =
IF DROP RDROP 0 CALL-TYPE? ! EXIT
ELSE DUP FINISH-LIST2 @ = 0= THEN
WHILE CELL+ REPEAT CELL+ DUP FINISH-LIST2 ! R> OVER !
BEGIN DUP CELL- 2DUP 2>R @ SWAP @ < IF 2R@ @ SWAP 2R@ SWAP @ SWAP ! ! THEN
2R> NIP DUP START-LIST2 @ = UNTIL
DROP 1 CALL-TYPE? !
;
 
: ADD-LAB
>R START-LAB @
BEGIN DUP @ R@ =
IF DROP RDROP EXIT
ELSE DUP FINISH-LAB @ = 0= THEN
WHILE CELL+ REPEAT CELL+ DUP FINISH-LAB ! R> OVER !
BEGIN DUP CELL- 2DUP 2>R @ SWAP @ < IF 2R@ @ SWAP 2R@ SWAP @ SWAP ! ! THEN
2R> NIP DUP START-LAB @ = UNTIL DROP ;
 
: ADD-VAR
>R START-VAR @
BEGIN DUP @ R@ =
IF DROP RDROP EXIT
ELSE DUP FINISH-VAR @ = 0= THEN
WHILE CELL+ REPEAT CELL+ DUP FINISH-VAR ! R> OVER !
BEGIN DUP CELL- 2DUP 2>R @ SWAP @ < IF 2R@ @ SWAP 2R@ SWAP @ SWAP ! ! THEN
2R> NIP DUP START-VAR @ = UNTIL DROP ;
 
: LAB
>R START-LIST @
BEGIN DUP @ R@ =
IF DROP RDROP 1 EXIT
ELSE DUP FINISH-LIST @ = 0= THEN
WHILE CELL+ REPEAT DROP RDROP 0 ;
 
 
: TYPE-LAB
>R START-LAB @
BEGIN DUP @ R@ =
IF DROP RDROP 0 EXIT
ELSE DUP FINISH-LAB @ = 0= THEN
WHILE CELL+ REPEAT DROP RDROP 1
;
 
\ : TYPE-ARRAY START-ARRAY @ DUP FINISH-ARRAY @ = IF DROP EXIT THEN
\ BEGIN DUP 2@ HEX . . DECIMAL CR 2 CELLS + DUP FINISH-ARRAY @ =
\ UNTIL DROP
\ ;
 
VARIABLE TRIGER4
VARIABLE ALLOTN
: ARRAY? 0 ALLOTN !
>R START-ARRAY @ DUP FINISH-ARRAY @ = IF RDROP 0 TRIGER4 ! EXIT THEN
BEGIN DUP @ R@ =
IF ." ALLOT" ALLOTN @ . ." :" ." array[0.." 2@ DROP
BASE @ >R DECIMAL . R> BASE !
." ] of byte;" CR RDROP 1 TRIGER3 ! 1 TRIGER4 ! EXIT THEN \ 1 EXIT THEN
ALLOTN 1+! 2 CELLS + DUP FINISH-ARRAY @ =
UNTIL DROP RDROP 0 TRIGER4 !
;
 
: ARRAY2? 0 ALLOTN !
>R START-ARRAY @ DUP FINISH-ARRAY @ = IF RDROP 0 EXIT THEN
BEGIN DUP @ R@ =
IF ." ALLOT" ALLOTN @
BASE @ >R DECIMAL . R> BASE ! ." ;" CR
DROP RDROP 1 EXIT THEN
ALLOTN 1+! 2 CELLS + DUP FINISH-ARRAY @ =
UNTIL DROP RDROP 0
;
 
: DEFER VECT ;
 
: DUP>R R> OVER >R >R ;
 
: UMAX ( D1 D2 -- FLAG )
2DUP U< IF NIP ELSE DROP THEN ;
 
 
80 CONSTANT MAXSTRING
 
255 CONSTANT MAXCOUNTED \ maximum length of contents of a counted string
 
: 0X BASE @ HEX >R BL WORD ?LITERAL
R> BASE ! ; IMMEDIATE
 
: "CLIP" ( a1 n1 -- a1 n1' ) \ clip a string to between 0 and MAXCOUNTED
MAXCOUNTED MIN 0 MAX ;
 
: PLACE ( addr len dest -- )
SWAP "CLIP" SWAP
2DUP 2>R
CHAR+ SWAP MOVE
2R> C! ;
 
: +PLACE ( addr len dest -- ) \ append string addr,len to counted
\ string dest
>R "CLIP" MAXCOUNTED R@ C@ - MIN R>
\ clip total to MAXCOUNTED string
2DUP 2>R
 
COUNT CHARS + SWAP MOVE
2R> +! ;
 
: C+PLACE ( c1 a1 -- ) \ append char c1 to the counted string at a1
DUP 1+! COUNT + 1- C! ;
 
 
: OFF 0! ;
 
: BLANK ( addr len -- ) \ fill addr for len with spaces (blanks)
BL FILL ;
 
128 CONSTANT SPCS-MAX ( optimization for SPACES )
 
CREATE SPCS SPCS-MAX ALLOT
SPCS SPCS-MAX BLANK
 
C" UPC" FIND NIP 0=
[IF]
: UPC ( c -- c' )
DUP [CHAR] Z U>
IF 0xDF AND
THEN ;
[THEN]
 
: (D.) ( d -- addr len ) TUCK DABS <# #S ROT SIGN #> ;
 
 
80 VALUE COLS
 
: H.R ( n1 n2 -- ) \ display n1 as a hex number right
\ justified in a field of n2 characters
BASE @ >R HEX >R
0 <# #S #> R> OVER - 0 MAX SPACES TYPE
R> BASE ! ;
 
: H.N ( n1 n2 -- ) \ display n1 as a HEX number of n2 digits
BASE @ >R HEX >R
0 <# R> 0 ?DO # LOOP #> TYPE
R> BASE ! ;
 
ONLY FORTH ALSO DEFINITIONS
 
0 VALUE DEFAULT-16BIT?
 
: DEFAULT-16BIT ( -- )
TRUE TO DEFAULT-16BIT? ;
 
: DEFAULT-32BIT ( -- )
FALSE TO DEFAULT-16BIT? ;
 
DEFER SHOW-NAME ( CFA -- ) \ DISPLAY NEAREST SYMBOL
 
0 VALUE BASE-ADDR
 
VOCABULARY DISASSEMBLER
DISASSEMBLER ALSO DEFINITIONS
 
DECIMAL
 
CREATE S-BUF MAXSTRING ALLOT
 
: >S ( A1 N1 -- )
S-BUF +PLACE ;
 
: 0>S ( -- ) \ RESET S-BUF
S-BUF OFF ;
 
: SSPACES ( N1 -- )
SPCS SWAP S-BUF +PLACE ;
 
: SSPACE ( -- )
1 SSPACES ;
 
: EMIT>S ( C1 -- )
S-BUF C+PLACE ;
 
: S> ( -- A1 N1 )
S-BUF COUNT ;
 
: (.S") ( addr len -- )
S-BUF +PLACE ;
 
: .S" ( 'TEXT' -- )
[CHAR] " PARSE
POSTPONE SLITERAL
POSTPONE (.S") ; IMMEDIATE
VARIABLE ADR@
: D.>S BASE @ SWAP DECIMAL DUP 0= IF DROP ELSE DUP 128 > IF .S" -" 256 SWAP - ELSE .S" +" THEN
0 (D.) >S THEN BASE ! 0 DISP8? ! ;
: D.R>S ( D W -- )
\ >R (D.) R> OVER - SSPACES >S ;
>R (D.) R> OVER - SSPACES >S ;
: .R>S ( N W -- )
>R S>D R> D.R>S ;
 
: U.R>S ( U W -- )
0 SWAP D.R>S ;
 
: H.>S ( U -- )
BASE @ SWAP
DUP DUP IMAGE-BEGIN > SWAP IMAGE-END < AND IF DUP ADD-LAB \ .S" [OFFSET @" HEX 0 (D.) >S .S" ]" ELSE
.S" OFFSET [" SHOW-NAME .S" ]" ELSE \ .S" [OFFSET @" SHOW-NAME .S" ]" ELSE
.S" $" HEX 0 (D.) >S THEN
( SSPACE ) BASE ! ;
 
: H.>Sn ( U -- )
BASE @ SWAP HEX 0 (D.) >S ( SSPACE ) BASE ! ;
 
: H.R>S ( N1 N2 -- )
BASE @ >R HEX >R
0 <# #S #> R> OVER - SSPACES >S
R> BASE ! ;
VARIABLE NAME
\ [THEN]
 
: ?.NAME>S ( CFA -- )
\ ELIMINATE " 0X"
\ DUP 1 H.R>S SSPACE \ ïå÷àòü àäðåñà ïåðåõîäà
NEAR_NFA
>R DUP
IF \ .S" @"
\ IF ñþäà ïðîâåðêó ELSE
 
R@ DUP START-WORD @ < >R END-WORD @ > R> OR R@ START-WORD @ = OR 0= IF R> DUP ADD-LAB .S" @" 1 H.R>S ELSE
\ .S" @"
ADR@ @ R@ = IF 0 ADR@ ! ELSE R@ ADD-LAB THEN \ .S" 2@" <--
DUP NAME ! \ COUNT >S \ ïå÷àòü ñêîáîê. Çíàê ìåòêè
NAME> DUP ADD-CALL2 \ áåç ADD-CALL íå ðàáîòàþò ññûëêè íà ïåðåìåííûå ADD-LAB CR WordByAddr TYPE CR
( DUP H.>Sn ) R@ -
DUP IF .S" [OFFSET " \ .S" [OFFSET @@"
\ DUP .S" +" NEGATE H.>S
\ R> H.>Sn .S" ]" NAME @ COUNT >S
RDROP NAME @ COUNT >S .S" ]"
ELSE
.S" @@" RDROP NAME @ COUNT >S THEN \ êîíåö ïðîâåðêè
THEN
DROP \ .S" ) "
ELSE R> .S" [" H.>S .S" ]" DROP \ òóò
THEN
;
 
' ?.NAME>S TO SHOW-NAME
 
\ 32 CONSTANT COMMENT-COL
 
0 VALUE SIZE
0 VALUE 16-BIT-DATA
0 VALUE 16-BIT-ADDR
0 VALUE PREFIX-OP
0 VALUE MMX-REG
 
: @+ ( ADDR -- ADDR N ) DUP CELL+ SWAP @ ;
: W@+ ( ADDR -- ADDR N ) DUP 2 + SWAP W@ ;
 
: SEXT ( BYTE -- N ) DUP 128 AND IF 0xFFFFFF00 OR THEN ;
: MOD/SIB ( MOD-R-R/M -- R/M R MOD ) \ R INCLUDING GENERAL, SPECIAL, SEGMENT, MMX
( MOD-OP-R/M -- R/M OP MOD )
( S-I-B -- B I S )
255 AND 8 /MOD 8 /MOD ;
 
: ??? ( N1 -- )
.S" ??? " DROP ;
 
: SS. ( N ADR LEN W ) >R DROP SWAP R@ * + R> >S SSPACE ;
 
: TTTN ( CODE -- ) 15 AND S" O NOB AEE NEBEA S NSP NPL GELEG " 2 SS. ;
 
: SREG ( SREG -- ) 3 RSHIFT 7 AND S" ESCSSSDSFSGSXXXX" 2 SS. ;
: CREG ( EEE -- ) 3 RSHIFT 7 AND S" CR0???CR2CR3CR4?????????" 3 SS. ;
: DREG ( EEE -- ) 3 RSHIFT 7 AND S" DR0DR1DR2DR3??????DR6DR7" 3 SS. ;
: TREG ( EEE -- ) 3 RSHIFT 7 AND S" ?????????TR3TR4TR5TR6TR7" 3 SS. ; \ OBSOLETE
: MREG ( N -- ) 7 AND S" MM0MM1MM2MM3MM4MM5MM6MM7" 3 SS. ;
 
: REG8 ( N -- ) 7 AND S" ALCLDLBLAHCHDHBH" 2 SS. ;
: REG16 ( N -- ) 7 AND S" AXCXDXBXSPBPSIDI" 2 SS. ;
: REG32 ( N -- ) 7 AND S" EAXECXEDXEBXESPEBPESIEDI" 3 SS. ;
: REG16/32 ( N -- )
16-BIT-DATA
IF REG16
ELSE REG32
THEN ;
: REG ( A N -- A )
MMX-REG
IF MREG
ELSE SIZE
IF REG16/32
ELSE REG8
THEN
THEN
;
 
: [BASE16] ( R/M -- ) 4 - S" [SI][DI][BP][BX]" 4 SS. ;
\ R/M = 4 , 5 , 6 , 7
: [IND16] ( R/M -- ) S" [BX+SI][BX+DI][BP+SI][BP+DI]" 7 SS. ;
\ R/M = 0 , 1 , 2 , 3
: [REG16] ( R/M -- ) DUP 4 <
IF [IND16]
ELSE [BASE16]
THEN ;
: [REG32] ( N -- ) 7 AND \ TRIGER3 @ IF
\ S" [EAX][ECX][EDX][EBX][ESP][EBP][ESI][EDI]" 5 SS.
\ ELSE
S" [EAX[ECX[EDX[EBX[ESP[EBP[ESI[EDI" 4 SS. DISP8? @ D.>S .S" ]"
\ THEN
;
 
 
: [REG*2] ( I -- ) S" [EAX*2][ECX*2][EDX*2][EBX*2][XXX*2][EBP*2][ESI*2][EDI*2]" 7 SS. ;
: [REG*4] ( I -- ) S" [EAX*4][ECX*4][EDX*4][EBX*4][XXX*4][EBP*4][ESI*4][EDI*4]" 7 SS. ;
: [REG*8] ( I -- ) S" [EAX*8][ECX*8][EDX*8][EBX*8][XXX*8][EBP*8][ESI*8][EDI*8]" 7 SS. ;
: [INDEX] ( SIB -- ) MOD/SIB OVER 4 =
IF 2DROP \ NO ESP SCALED INDEX
ELSE CASE ( S )
0 OF [REG32] ENDOF
1 OF [REG*2] ENDOF
2 OF [REG*4] ENDOF
3 OF [REG*8] ENDOF
ENDCASE
THEN DROP ;
 
: DISP8 ( ADR -- ADR' )
\ COUNT DUP DISP8? ! D.>S ;
COUNT DISP8? ! ;
 
: DISP16 ( ADR -- ADR' ) W@+ SHOW-NAME ;
: DISP32 ( ADR -- ADR' ) @+ ( BODY> ) SHOW-NAME ;
: DISP16/32 ( ADR -- ADR' )
16-BIT-ADDR
IF DISP16
ELSE DISP32
THEN ;
 
: ., ( -- ) TRIGER @ IF .S" , " THEN 1 TRIGER ! ;
 
: .# ., .S" $" ;
\ : .# ., ;
\ : .# ., .S" # " ;
 
: IMM8 ( ADR -- ADR' ) .# COUNT H.>Sn ;
 
\ : IMM16 ( ADR -- ADR' ) .# W@+ H.>S ;
 
: IMM16/32 ( ADR -- ADR' )
\ .#
.,
16-BIT-DATA
IF W@+
ELSE @+
THEN H.>S ; \ \\\\\\\
: SIB ( ADR MOD -- ADR )
>R COUNT TUCK 7 AND 5 = R@ 0= AND
IF DISP32 SWAP [INDEX] R> DROP \ EBP BASE AND MOD = 00
ELSE R> CASE ( MOD )
1 OF DISP8 ENDOF
2 OF DISP32 ENDOF
ENDCASE
SWAP DUP [REG32] [INDEX]
THEN ;
 
 
: MOD-R/M32 ( ADR R/M MOD -- ADR' )
DUP 3 =
IF DROP REG \ MOD = 3, REGISTER CASE
ELSE OVER 4 =
IF NIP SIB \ R/M = 4, SIB CASE
ELSE 2DUP 0= SWAP 5 = AND \ MOD = 0, R/M = 5,
IF 2DROP DISP32 \ DISP32 CASE
ELSE ROT SWAP
CASE ( MOD )
1 OF DISP8 ENDOF
2 OF DISP32 ENDOF
ENDCASE
SWAP [REG32]
THEN
THEN
THEN ;
 
: MOD-R/M16 ( ADR R/M MOD -- ADR' )
2DUP 0= SWAP 6 = AND
IF 2DROP DISP16 \ DISP16 CASE
ELSE CASE ( MOD )
0 OF [REG16] ENDOF
1 OF SWAP DISP8 SWAP [REG16] ENDOF
2 OF SWAP DISP16 SWAP [REG16] ENDOF
3 OF REG ENDOF
ENDCASE
THEN ;
 
: MOD-R/M ( ADR MODR/M -- ADR' )
MOD/SIB NIP 16-BIT-ADDR
IF MOD-R/M16
ELSE MOD-R/M32
THEN ;
 
 
: R/M8 0 TO SIZE MOD-R/M ;
: R/M16/32 1 TO SIZE MOD-R/M ;
: R/M16 TRUE TO 16-BIT-DATA R/M16/32 ;
 
: R,R/M ( ADR -- ADR' )
COUNT DUP 3 RSHIFT REG ., MOD-R/M ;
 
: R/M,R ( ADR -- ADR' )
COUNT DUP>R MOD-R/M ., R> 3 RSHIFT REG ;
 
: R/M ( ADR OP -- ADR' )
2 AND
IF R,R/M
ELSE R/M,R
THEN ;
 
\ -------------------- SIMPLE OPCODES --------------------
 
: INH ( -<NAME>- )
CREATE
BL WORD COUNT HERE PLACE
HERE C@ 1+ ALLOT
DOES> COUNT >S SSPACE DROP ;
 
INH CLC CLC
INH STC STC
INH CLD CLD
INH STD STD
\ INH RPNZ REPNZ
\ INH REPZ REPZ
INH CBW CBW
INH CDQ CDQ
INH DAA DAA
INH DAS DAS
INH AAA AAA
INH AAS AAS
\ INH LOCK LOCK
INH INB INSB
INH OSB OUTSB
INH SAH SAHF
INH LAH LAHF
\ INH AAM AAM
\ INH AAD AAD
INH HLT HLT
INH CMC CMC
INH XLT XLAT
INH CLI CLI
INH STI STI
 
INH CLT CLTS
INH INV INVD
INH WIV WBINVD
INH UD2 UD2
INH WMR WRMSR
INH RTC RDTSC
INH RMR RDMSR
INH RPC RDPMC
INH EMS EMMS
INH RSM RSM
INH CPU CPUID
INH UD1 UD1
\ INH LSS LSS
\ INH LFS LFS
\ INH LGS LGS
 
\ INH D16: D16:
\ INH A16: A16:
\ INH ES: ES:
\ INH CS: CS:
\ INH DS: DS:
\ INH FS: FS:
\ INH GS: GS:
 
: AAM ( ADR CODE -- ADR' )
.S" AAM" DROP COUNT DROP ;
 
: AAD ( ADR CODE -- ADR' )
.S" AAD" DROP COUNT DROP ;
 
: D16 ( ADR CODE -- ADR' )
DROP .S" D16:"
TRUE TO 16-BIT-DATA
TRUE TO PREFIX-OP
;
 
: A16 ( ADR CODE -- ADR' )
DROP .S" A16:"
TRUE TO 16-BIT-ADDR
TRUE TO PREFIX-OP
;
 
: RPZ ( ADR CODE -- ADR' )
DROP .S" REPNZ"
TRUE TO PREFIX-OP
;
 
: REP ( ADR CODE -- ADR' )
DROP .S" REPZ"
TRUE TO PREFIX-OP
;
 
: LOK ( ADR CODE -- ADR' ) \ THIS SHOULD HAVE ERROR CHECKING ADDED
DROP .S" LOCK"
TRUE TO PREFIX-OP
;
 
: CS: ( ADR CODE -- ADR' )
DROP .S" CS:"
TRUE TO PREFIX-OP
;
 
: DS: ( ADR CODE -- ADR' )
DROP .S" DS:"
TRUE TO PREFIX-OP
;
 
: SS: ( ADR CODE -- ADR' )
DROP .S" SS:"
TRUE TO PREFIX-OP
;
 
: ES: ( ADR CODE -- ADR' )
DROP .S" ES:"
TRUE TO PREFIX-OP
;
 
: GS: ( ADR CODE -- ADR' )
DROP .S" GS:"
TRUE TO PREFIX-OP
;
 
: FS: ( ADR CODE -- ADR' )
DROP .S" FS:"
TRUE TO PREFIX-OP
;
 
: ISD ( ADR CODE -- ADR' )
DROP 16-BIT-DATA
IF .S" INSW "
ELSE .S" INSD "
THEN ;
 
: OSD ( ADR CODE -- ADR' )
DROP 16-BIT-DATA
IF .S" OUTSW "
ELSE .S" OUTSD "
THEN ;
 
: INP ( ADDR CODE -- ADDR' )
.S" IN " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
ELSE .S" AL , "
THEN
COUNT H.>S ;
 
: OTP ( ADDR CODE -- ADDR' )
.S" OUT " 1 AND
IF COUNT H.>S 16-BIT-DATA
IF .S" , AX"
ELSE .S" , EAX"
THEN
ELSE COUNT H.>S .S" , AL"
THEN
;
 
: IND ( ADDR CODE -- ADDR' )
.S" IN " 1 AND
IF 16-BIT-DATA
IF .S" AX , DX"
ELSE .S" EAX , DX"
THEN
ELSE .S" AL , DX"
THEN
;
 
: OTD ( ADDR CODE -- ADDR' )
.S" OUT " 1 AND
IF 16-BIT-DATA
IF .S" DX , AX"
ELSE .S" DX , EAX"
THEN
ELSE .S" DX , AL"
THEN
;
 
\ -------------------- ALU OPCODES --------------------
 
: .ALU ( N -- )
7 AND S" ADDOR ADCSBBANDSUBXORCMP" 3 SS. 4 SSPACES
;
 
: ALU ( ADR OP -- ADR' )
DUP 3 RSHIFT .ALU R/M ;
 
: ALI ( ADR OP -- ADR' )
>R COUNT
DUP 3 RSHIFT .ALU
MOD-R/M
R> 3 AND ?DUP
IF 1 =
IF IMM16/32
ELSE .# COUNT SEXT 0 .R>S SSPACE
THEN
ELSE IMM8
THEN ;
 
: ALA ( ADR OP -- ADR' )
DUP 3 RSHIFT .ALU
1 AND IF 0 REG IMM16/32 ELSE 0 REG8 IMM8 THEN ;
 
 
\ -------------------- TEST/XCHG --------------------
 
: TXB ( ADDR OP -- ADDR' )
DUP 3 AND S" TESTTESTXCHGXCHG" 4 SS. 3 SSPACES
1 AND
IF 1 TO SIZE R,R/M \ SMUB REMOVED COUNT
ELSE 0 TO SIZE R,R/M \ SMUB REMOVED COUNT
THEN
;
 
: TST ( ADDR OP -- ADDR' )
.S" TEST " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
IMM16/32
ELSE .S" AL , " IMM8
THEN
;
 
\ -------------------- INC/DEC ----------------------
 
: INC ( ADDR OP -- ADDR' )
.S" INC " REG16/32 ;
 
: DEC ( ADDR OP -- ADDR' )
.S" DEC " REG16/32 ;
 
 
\ -------------------- PUSH/POP --------------------
 
: PSH ( ADDR OP -- ADDR' )
.S" PUSH " REG16/32
0 TRIGER !
;
 
: POP ( ADDR OP -- ADDR' )
.S" POP " REG16/32
0 TRIGER !
;
 
: PSS ( ADDR OP -- ADDR' )
.S" PUSH " SREG ;
 
: PPS ( ADDR OP -- ADDR' )
.S" POP " SREG
0 TRIGER !
;
 
: PSA ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" PUSHA "
ELSE .S" PUSHAD "
THEN
0 TRIGER !
;
 
: PPA ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" POPA "
ELSE .S" POPAD "
THEN
0 TRIGER !
;
 
: PSI ( ADDR OP -- ADDR' )
.S" PUSH " 2 AND
IF IMM8
ELSE IMM16/32
THEN
0 TRIGER !
;
 
: PSF ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" PUSHF "
ELSE .S" PUSHFD "
THEN
0 TRIGER !
;
 
: PPF ( ADDR OP -- ADDR' )
DROP 16-BIT-DATA
IF .S" POPF "
ELSE .S" POPFD "
THEN
0 TRIGER !
;
 
: 8F. ( ADDR OP -- ADDR' )
DROP COUNT .S" POP " R/M16/32
0 TRIGER !
;
 
\ -------------------- MOVE --------------------
 
: MOV ( ADDR OP -- ADDR' )
.S" MOV " R/M ;
 
: MRI ( ADDR OP -- ADDR' ) ( MOV REGISTER, IMM )
.S" MOV " DUP 8 AND
IF REG16/32 IMM16/32
ELSE REG8 IMM8
THEN ;
 
: MVI ( ADR OP -- ADR' ) ( MOV MEM, IMM )
.S" MOV " DROP COUNT MOD-R/M
SIZE
IF IMM16/32
ELSE IMM8
THEN
;
 
: MRS ( ADDR OP -- ADDR' )
\ ? REMOVE REDUNDANT >R , R>
16-BIT-DATA
IF .S" MOV " DROP
1 TO SIZE
COUNT DUP MOD-R/M .,
SREG
ELSE ???
THEN ;
 
: MSR ( ADDR OP -- ADDR' )
16-BIT-DATA
IF .S" MOV " DROP
1 TO SIZE
COUNT DUP SREG .,
MOD-R/M
ELSE ???
THEN ;
 
: MRC ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP REG32 .S" , "
CREG ;
 
: MCR ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP CREG .S" , "
REG32 ;
 
: MRD ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP REG32 .S" , "
DREG ;
 
: MDR ( ADDR OP -- ADDR' )
.S" MOV "
DROP COUNT DUP DREG .S" , "
REG32 ;
 
: MRT ( ADDR OP -- ADDR' )
\ OBSOLETE
.S" MOV "
DROP COUNT DUP REG32 .S" , "
TREG ;
 
: MTR ( ADDR OP -- ADDR' )
\ OBSOLETE
.S" MOV "
DROP COUNT DUP TREG .S" , "
REG32 ;
 
: MV1 ( ADDR OP -- ADDR' )
.S" MOV " 1 AND
IF 16-BIT-DATA
IF .S" AX , "
ELSE .S" EAX , "
THEN
ELSE .S" AL , "
THEN
DISP16/32 ;
 
: MV2 ( ADDR OP -- ADDR' )
.S" MOV " SWAP DISP16/32 .,
SWAP 1 AND
IF 16-BIT-DATA
IF .S" AX"
ELSE .S" EAX"
THEN
ELSE .S" AL"
THEN
;
 
: LEA ( ADDR OP -- ADDR' )
.S" LEA " DROP 1 TO SIZE R,R/M ;
 
: LXS ( ADDR OP -- ADDR' )
1 AND
IF .S" LDS "
ELSE .S" LES "
THEN
R,R/M \ SMUB REMOVED COUNT
;
 
: BND ( ADDR OP -- ADDR' )
.S" BOUND " DROP 1 TO SIZE R,R/M ;
 
: ARP ( ADDR OP -- ADDR' )
.S" ARPL " DROP
1 TO SIZE
TRUE TO 16-BIT-DATA
R,R/M
;
 
: MLI ( ADDR OP -- ADDR' )
1 TO SIZE
.S" IMUL " 0x69 =
IF R,R/M IMM16/32
ELSE R,R/M IMM8
THEN ;
 
\ -------------------- JUMPS AND CALLS --------------------
 
0 VALUE MAX_REFERENCE
 
: >MAX_R DUP MAX_REFERENCE UMAX TO MAX_REFERENCE ;
 
: REL8 ( ADDR OP -- ADDR' )
\ .S" @" \
COUNT SEXT OVER + BASE-ADDR - >MAX_R DUP ADD-LAB
SHOW-NAME ; \ H.>Sn ;
 
 
 
: REL16/32 ( ADDR OP -- ADDR' )
\ .S" @"
16-BIT-ADDR
IF W@+
ELSE @+
THEN OVER + BASE-ADDR - >MAX_R DUP ADR@ ! DUP ADD-LAB SHOW-NAME ;
 
: JSR ( ADDR OP -- ADDR' )
.S" CALL " DROP REL16/32 \ DUP @ >R REL16/32 DUP R> + DROP
;
 
: JMP ( ADDR OP -- ADDR' )
.S" JMP " 2 AND IF REL8 ELSE REL16/32 THEN
;
: .JXX ( ADDR OP -- ADDR' )
.S" J" TTTN 4 SSPACES
;
 
: BRA ( ADDR OP -- ADDR' )
.JXX REL8 ;
 
: LUP ( ADDR OP -- ADDR' )
3 AND S" LOOPNZLOOPZ LOOP JECXZ " 6 SS. 1 SSPACES REL8 ;
 
: LBR ( ADDR OP -- ADDR' )
.JXX REL16/32 ;
 
: RTN ( ADDR OP -- ADDR' )
.S" RET" 1 AND 0= \ .S" RET NEAR " 1 AND 0=
IF W@+ H.>S
THEN ;
 
: RTF ( ADDR OP -- ADDR' )
.S" RET FAR " 1 AND 0=
IF W@+ H.>S
THEN ;
 
: ENT ( ADDR OP -- ADDR' )
DROP
.S" ENTER " W@+ H.>S ., COUNT H.>S ;
 
: CIS ( ADDR OP -- ADDR' )
0x9A =
IF .S" CALL "
ELSE .S" JMP "
THEN
16-BIT-DATA
IF .S" PTR16:16 "
ELSE .S" PTR16:32 "
THEN
COUNT MOD-R/M
;
 
: NT3 ( ADDR OP -- ADDR' )
DROP .S" INT 3 "
;
 
: INT ( ADDR OP -- ADDR' )
DROP .S" INT "
COUNT H.>S ;
 
INH LEV LEAVE
INH IRT IRET
INH NTO INTO
 
\ -------------------- STRING OPS --------------------
 
: STR INH DOES> COUNT >S 1 AND IF .S" D" ELSE .S" B" THEN ;
 
STR MVS MOVS
STR CPS CMPS
STR STS STOS
STR LDS LODS
STR SCS SCAS
 
\ -------------------- EXCHANGE --------------------
 
: XGA ( ADDR OP -- ADDR' )
.S" XCHG EAX, " REG16/32 ;
 
\ : XCH ( ADDR OP -- ADDR' )
\ .S" XCHG " DROP R,R/M ;
 
 
\ -------------------- SHIFTS & ROTATES --------------------
 
: .SHIFT ( N -- )
7 AND S" ROLRORRCLRCRSHLSHRXXXSAR" 3 SS. 4 SSPACES ;
 
: SHF ( ADDR OP -- ADDR' )
>R COUNT
DUP 3 RSHIFT .SHIFT
MOD-R/M .,
R> 0xD2 AND
CASE
0xC0 OF COUNT H.>S ENDOF
0xD0 OF 1 H.>S ENDOF
0xD2 OF 1 REG8 ENDOF
ENDCASE ;
 
\ -------------------- EXTENDED OPCODES --------------------
 
: WF1 ( ADDR -- ADDR' )
1+ COUNT DUP
0x0C0 <
IF DUP
3 RSHIFT 7 AND
CASE 6 OF .S" FSTENV " MOD-R/M ENDOF
7 OF .S" FSTCW WORD " MOD-R/M ENDOF
2DROP 2 - DUP .S" FWAIT "
ENDCASE
ELSE DROP 2 - .S" FWAIT "
THEN ;
 
: WF2 ( ADDR -- ADDR' )
1+ COUNT
CASE 0xE2 OF .S" FCLEX " ENDOF
0xE3 OF .S" FINIT " ENDOF
SWAP 2 - SWAP .S" FWAIT "
ENDCASE ;
 
: WF3 ( ADDR -- ADDR' )
1+ COUNT DUP 3 RSHIFT 7 AND
CASE 6 OF .S" FSAVE " MOD-R/M ENDOF
7 OF .S" FSTSW WORD " MOD-R/M ENDOF
2DROP 2 - DUP .S" FWAIT "
ENDCASE ;
 
: WF4 ( ADDR -- ADDR' )
1+ COUNT 0xE0 =
IF .S" FSTSW AX "
ELSE 2 - .S" FWAIT "
THEN ;
 
: FWAITOPS ( ADDR OP -- ADDR' )
CASE 0xD9 OF WF1 ENDOF
0xDB OF WF2 ENDOF
0xDD OF WF3 ENDOF
0xDF OF WF4 ENDOF
.S" FWAIT "
ENDCASE ;
 
: W8F ( ADDR OP -- ADDR' )
DROP DUP C@ DUP 0xF8 AND 0xD8 =
IF FWAITOPS
ELSE DROP .S" WAIT "
THEN ;
 
: FALU1 ( XOPCODE -- )
3 RSHIFT 7 AND
S" FADD FMUL FCOM FCOMPFSUB FSUBRFDIV FDIVR"
5 SS. 2 SSPACES ;
 
: FALU5 ( XOPCODE -- )
3 RSHIFT 7 AND
S" FADD FMUL ???? ???? FSUBRFSUB FDIVRFDIV "
5 SS. 2 SSPACES ;
 
: STI. ( OP -- )
7 AND .S" ST(" 1 .R>S .S" )";
 
\ : STI.ST ( OP -- )
\ 7 AND
\ .S" ST(" 1 .R>S .S" )" .S" ST " ;
 
: FD8 ( ADDR OPCODE -- ADDR' )
DROP COUNT DUP FALU1
DUP 0xC0 <
IF .S" FLOAT " MOD-R/M
ELSE DUP 0xF0 AND 0xD0 =
IF STI.
ELSE .S" ST , " STI.
THEN
THEN ;
 
: FDC ( ADDR OPCODE -- ADDR' )
DROP COUNT
DUP DUP 0xC0 <
IF FALU1 .S" DOUBLE " MOD-R/M
ELSE FALU5 STI. .S" , ST"
THEN ;
 
: FNULLARY-F ( OP -- )
0x0F AND DUP 8 <
IF
S" F2XM1 FYL2X FPTAN FPATAN FXTRACTFPREM1 FDECSTPFINCSTP"
ELSE 8 -
S" FPREM FYL2XP1FSQRT FSINCOSFRNDINTFSCALE FSIN FCOS "
THEN
7 SS. ;
 
: FNULLARY-E ( OP -- )
0x0F AND DUP 8 <
IF
S" FCHS FABS ??? ??? FTST FXAM ??? ??? "
ELSE 8 -
S" FLD1 FLDL2T FLDL2E FLDPI FLDLG2 FLDLN2 FLDZ ??? "
THEN
7 SS. ;
 
: FNULLARY ( OP -- )
DUP 0xEF >
IF FNULLARY-F EXIT
THEN
DUP 0xE0 <
IF 0xD0 =
IF .S" FNOP"
ELSE DUP ???
THEN
EXIT
THEN
FNULLARY-E ;
 
 
\ : FALU2 ( OP -- )
\ 3 RSHIFT 7 AND
\ S" FLD ??? FST FSTP FLDENV FLDCW FNSTENVFNSTCW "
\ 7 SS. ;
 
: FD9 ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE
0x00 OF .S" FLD FLOAT " ENDOF
0x10 OF .S" FST FLOAT " ENDOF
0x18 OF .S" FSTP FLOAT " ENDOF
0x20 OF .S" FLDENV " ENDOF
0x28 OF .S" FLDCW WORD " ENDOF
0x30 OF .S" FNSTENV " ENDOF
0x38 OF .S" FNSTCW WORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE
DUP 0xD0 <
IF DUP 0xC8 <
IF .S" FLD "
ELSE .S" FXCH "
THEN
STI.
ELSE FNULLARY
THEN
THEN ;
 
: FALU3 ( OP -- )
3 RSHIFT 7 AND
S" FIADD FIMUL FICOM FICOMPFISUB FISUBRFIDIV FIDIVR"
6 SS. 1 SSPACES ;
 
: FCMOVA ( OP -- )
3 RSHIFT 7 AND
S" FCMOVB FCMOVE FCMOVBEFCMOVU ??? ??? ??? ??? "
7 SS. ;
 
: FDA ( ADDR OP -- )
DROP COUNT DUP 0xC0 <
IF DUP FALU3 .S" DWORD " MOD-R/M
ELSE DUP 0xE9 =
IF .S" FUCOMPP" DROP
ELSE DUP FCMOVA STI.
THEN
THEN ;
 
: FALU7 ( OP -- )
3 RSHIFT 7 AND
S" FADDP FMULP ??? ??? FSUBRPFSUBP FDIVRPFDIVP "
6 SS. SSPACE ;
 
: FDE ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP FALU3 .S" WORD " MOD-R/M
ELSE DUP 0xD9 =
IF .S" FCOMPP" DROP
ELSE DUP FALU7 STI.
THEN
THEN ;
 
 
: FCMOVB ( OP -- )
3 RSHIFT 7 AND
S" FCMOVNB FCMOVNE FCMOVNBEFCMOVNU ??? FUCOMI FCOMI ??? "
8 SS. ;
 
: FDB ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FILD DWORD " ENDOF
0x10 OF .S" FIST DWORD " ENDOF
0x18 OF .S" FISTP DWORD " ENDOF
0x28 OF .S" FLD EXTENDED " ENDOF
0x38 OF .S" FSTP EXTENDED " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE
CASE 0xE2 OF .S" FNCLEX" ENDOF
0xE3 OF .S" FNINIT" ENDOF
DUP DUP FCMOVB STI.
ENDCASE
THEN ;
 
: FALU6 ( OP -- )
3 RSHIFT 7 AND
S" FFREE ??? FST FSTP FUCOM FUCOMP??? ??? "
6 SS. SSPACE ;
 
: FDD ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FLD DOUBLE " ENDOF
0x10 OF .S" FST DOUBLE " ENDOF
0x18 OF .S" FSTP DOUBLE " ENDOF
0x20 OF .S" FRSTOR " ENDOF
0x30 OF .S" FNSAVE " ENDOF
0x38 OF .S" FNSTSW WORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE DUP FALU6 STI.
THEN ;
 
: FDF ( ADDR OP -- ADDR' )
DROP COUNT DUP 0xC0 <
IF DUP 0x38 AND
CASE 0x00 OF .S" FILD WORD " ENDOF
0x10 OF .S" FIST WORD " ENDOF
0x18 OF .S" FISTP WORD " ENDOF
0x20 OF .S" FBLD TBYTE " ENDOF
0x28 OF .S" FILD QWORD " ENDOF
0x30 OF .S" FBSTP TBYTE " ENDOF
0x38 OF .S" FISTP QWORD " ENDOF
DUP ???
ENDCASE
MOD-R/M
ELSE DUP 0xE0 =
IF .S" FNSTSW AX " DROP
ELSE DUP 0x38 AND
CASE 0x28 OF .S" FUCOMIP " STI. ENDOF
0x30 OF .S" FCOMIP " STI. ENDOF
???
ENDCASE
THEN
THEN ;
 
: GP6 ( ADDR OP -- ADDR' )
DROP COUNT DUP 3 RSHIFT
7 AND S" SLDTSTR LLDTLTR VERRVERW??? ???" 4 SS. 3 SSPACES
R/M16 ;
 
: GP7 ( ADDR OP -- ADDR' )
DROP COUNT DUP 3 RSHIFT
7 AND DUP S" SGDT SIDT LGDT LIDT SMSW ??? LMSW INVLPG" 6 SS. 1 SSPACES
4 AND 4 =
IF R/M16
ELSE R/M16/32
THEN ;
 
: BTX. ( N -- )
3 RSHIFT
3 AND S" BT BTSBTRBTC" 3 SS. 4 SSPACES ;
 
: GP8 ( ADDR OP -- ADDR' )
DROP COUNT DUP BTX.
R/M16/32 IMM8 ;
 
: LAR ( ADDR OP -- ADDR' )
.S" LAR " DROP R,R/M ;
 
: LSL ( ADDR OP -- ADDR' )
.S" LSL " DROP R,R/M ;
 
: LSS ( ADDR OP -- ADDR' )
.S" LSS " DROP R,R/M ;
 
: LFS ( ADDR OP -- ADDR' )
.S" LFS " DROP R,R/M ;
 
: LGS ( ADDR OP -- ADDR' )
.S" LGS " DROP R,R/M ;
 
: BTX ( ADDR OP -- ADDR' )
BTX. R/M,R ;
 
: SLI ( ADDR OP -- ADDR' )
.S" SHLD " DROP R/M,R IMM8 ;
 
: SRI ( ADDR OP -- ADDR' )
.S" SHRD " DROP R/M,R IMM8 ;
 
: SLC ( ADDR OP -- ADDR' )
.S" SHLD " DROP R/M,R .S" , CL" ;
 
: SRC ( ADDR OP -- ADDR' )
.S" SHRD " DROP R/M,R .S" , CL" ;
 
: IML ( ADDR OP -- ADDR' )
.S" IMUL " DROP R,R/M ;
 
: CXC ( ADDR OP -- ADDR' )
.S" CMPXCHG " 1 AND TO SIZE R/M,R ;
 
: MVX ( ADDR OP -- ADDR' )
DUP 8 AND
IF .S" MOVSX "
ELSE .S" MOVZX "
THEN
1 AND >R
COUNT MOD/SIB R> \ SIZE BIT
IF SWAP REG32 ., \ WORD TO DWORD CASE
3 =
IF REG16
ELSE .S" WORD PTR " DROP DUP 1- C@ MOD-R/M
THEN
ELSE SWAP REG16/32 ., \ BYTE CASE
3 =
IF REG8
ELSE .S" BYTE PTR " DROP DUP 1- C@ MOD-R/M
THEN
THEN ;
 
: XAD ( ADDR OP -- ADDR' )
.S" XADD " 1 AND TO SIZE R/M,R ;
 
: BSF ( ADDR OP -- ADDR' )
.S" BSF " DROP R,R/M ;
 
: BSR ( ADDR OP -- ADDR' )
.S" BSR " DROP R,R/M ;
 
: CX8 ( ADDR OP -- ADDR' )
.S" CMPXCHG8B " DROP COUNT R/M16/32 ;
 
: BSP ( ADDR OP -- ADDR' )
.S" BSWAP " REG32 ;
 
 
: F6. ( ADDR OP -- ADDR' )
\ ??
>R COUNT
DUP 3 RSHIFT 7 AND DUP>R S" TESTXXXXNOT NEG MUL IMULDIV IDIV" 4 SS. 3 SSPACES
MOD-R/M
R> 0= IF
R@ 1 AND IF IMM16/32
ELSE IMM8
THEN
THEN
R> DROP ;
 
: FE. ( ADDR OP -- ADDR' )
DROP COUNT
DUP 3 RSHIFT 7 AND
CASE
0 OF .S" INC " ENDOF
1 OF .S" DEC " ENDOF
.S" ??? "
ENDCASE R/M8 ;
 
: FF. ( ADDR OP -- ADDR' )
DROP COUNT
DUP 3 RSHIFT 7 AND
CASE
0 OF .S" INC " ENDOF
1 OF .S" DEC " ENDOF
2 OF .S" CALL " ENDOF
3 OF .S" CALL FAR " ENDOF
4 OF .S" JMP " ENDOF
5 OF .S" JMP FAR " ENDOF
6 OF .S" PUSH " ENDOF
.S" ??? "
ENDCASE R/M16/32 ;
 
 
\ --------------------- CONDITIONAL MOVE ---------------
 
: SET ( ADR OP -- )
.S" SET"
TTTN 2 SSPACES
COUNT R/M8 ;
 
: CMV ( ADR OP -- )
.S" CMOV"
TTTN 1 SSPACES
R,R/M ;
 
\ --------------------- MMX OPERATIONS -----------------
 
: MMX-SIZE ( OP -- )
3 AND S" BWDQ" 1 SS. ;
 
: UPL ( ADR OP -- ADR' )
3 AND S" PUNPCKLBWPUNPCKLWDPUNPCKLDQ" 9 SS. R,R/M ;
 
: UPH ( ADR OP -- ADR' )
3 AND S" PUNPCKHBWPUNPCKHWDPUNPCKHDQ" 9 SS. R,R/M ;
 
: CGT ( ADR OP -- ADR' )
.S" PCMPGT" MMX-SIZE R,R/M ;
 
: CEQ ( ADR OP -- ADR' )
.S" PCMPEQ" MMX-SIZE R,R/M ;
 
: PSH. ( OP -- )
0x30 AND
CASE
0x10 OF .S" PSRL" ENDOF
0x20 OF .S" PSRA" ENDOF
0x30 OF .S" PSLL" ENDOF
ENDCASE ;
 
: GPA ( ADR OP -- ADR' )
>R COUNT DUP PSH. R> MMX-SIZE 2 SSPACES MREG IMM8 ;
 
: PUW ( ADR OP -- ADR' )
.S" PACKUSDW " DROP R,R/M ;
 
: PSB ( ADR OP -- ADR' )
.S" PACKSSWB " DROP R,R/M ;
 
: PSW ( ADR OP -- ADR' )
.S" PACKSSDW " DROP R,R/M ;
 
: MPD ( ADR OP -- ADR' )
.S" MOVD " DROP COUNT MOD/SIB
SWAP MREG ., 3 =
IF REG32
ELSE MOD-R/M
THEN ;
 
: MDP ( ADR OP -- ADR' )
.S" MOVD " DROP COUNT MOD/SIB
3 =
IF SWAP REG32
ELSE SWAP MOD-R/M
THEN ., MREG ;
 
: MPQ ( ADR OP -- ADR' )
.S" MOVQ " DROP R,R/M ;
 
: MQP ( ADR OP -- ADR' )
.S" MOVQ " DROP R/M,R ;
 
: SHX ( ADR OP -- ADR' )
DUP PSH. MMX-SIZE 2 SSPACES R,R/M ;
 
: MLL ( ADR OP -- ADR' )
.S" PMULLW " DROP R,R/M ;
 
: MLH ( ADR OP -- ADR' )
.S" PMULHW " DROP R,R/M ;
 
: MAD ( ADR OP -- ADR' )
.S" PMADDWD " DROP R,R/M ;
 
: SUS ( ADR OP -- ADR' )
.S" PSUBUS" MMX-SIZE R,R/M ;
 
: SBS ( ADR OP -- ADR' )
.S" PSUBS" MMX-SIZE SSPACE R,R/M ;
 
: SUB ( ADR OP -- ADR' )
.S" PSUB" MMX-SIZE 2 SSPACES R,R/M ;
 
: AUS ( ADR OP -- ADR' )
.S" PADDUS" MMX-SIZE R,R/M ;
 
: ADS ( ADR OP -- ADR' )
.S" PADDS" MMX-SIZE SSPACE R,R/M ;
 
: ADD ( ADR OP -- ADR' )
.S" PADD" MMX-SIZE 2 SSPACES R,R/M ;
 
: PAD ( ADR OP -- ADR' )
.S" PAND " DROP R,R/M ;
 
: POR ( ADR OP -- ADR' )
.S" POR " DROP R,R/M ;
 
: PAN ( ADR OP -- ADR' )
.S" PANDN " DROP R,R/M ;
 
: PXR ( ADR OP -- ADR' )
.S" PXOR " DROP R,R/M ;
 
 
\ -------------------- OPCODE TABLE --------------------
 
: OPS 0x10 0 DO ' , LOOP ;
 
 
CREATE OP-TABLE2
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
OPS GP6 GP7 LAR LSL ??? ??? CLT ??? INV WIV ??? UD2 ??? ??? ??? ??? \ 0
OPS ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 1
OPS MRC MRD MCR MDR MRT ??? MTR ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 2
OPS WMR RTC RMR RPC ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 3
 
OPS CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV CMV \ 4
OPS ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? \ 5
OPS UPL UPL UPL PUW CGT CGT CGT PSB UPH UPH UPH PSW ??? ??? MPD MPQ \ 6
OPS ??? GPA GPA GPA CEQ CEQ CEQ EMS ??? ??? ??? ??? ??? ??? MDP MQP \ 7
 
OPS LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR LBR \ 8
OPS SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET \ 9
OPS PSS PPS CPU BTX SLI SLC ??? ??? PSS PPS RSM BTX SRI SRC ??? IML \ A
OPS CXC CXC LSS BTX LFS LGS MVX MVX ??? UD1 GP8 BTX BSF BSR MVX MVX \ B
 
OPS XAD XAD ??? ??? ??? ??? ??? CX8 BSP BSP BSP BSP BSP BSP BSP BSP \ C
OPS ??? SHX SHX SHX ??? MLL ??? ??? SUS SUS ??? PAD AUS AUS ??? PAN \ D
OPS ??? SHX SHX ??? ??? MLH ??? ??? SBS SBS ??? POR ADS ADS ??? PXR \ E
OPS ??? ??? SHX SHX ??? MAD ??? ??? SUB SUB SUB ??? ADD ADD ADD ??? \ F
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
: 0F. ( ADR CODE -- )
DROP COUNT DUP
DUP 0x70 AND 0x50 0x80 WITHIN TO MMX-REG
CELLS OP-TABLE2 + @ EXECUTE
0 TO MMX-REG ;
 
 
CREATE OP-TABLE
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
OPS ALU ALU ALU ALU ALA ALA PSS PPS ALU ALU ALU ALU ALA ALA PSS 0F. \ 0
OPS ALU ALU ALU ALU ALA ALA PSS PPS ALU ALU ALU ALU ALA ALA PSS PPS \ 1
OPS ALU ALU ALU ALU ALA ALA ES: DAA ALU ALU ALU ALU ALA ALA CS: DAS \ 2
OPS ALU ALU ALU ALU ALA ALA SS: AAA ALU ALU ALU ALU ALA ALA DS: AAS \ 3
 
OPS INC INC INC INC INC INC INC INC DEC DEC DEC DEC DEC DEC DEC DEC \ 4
OPS PSH PSH PSH PSH PSH PSH PSH PSH POP POP POP POP POP POP POP POP \ 5
OPS PSA PPA BND ARP FS: GS: D16 A16 PSI MLI PSI MLI INB ISD OSB OSD \ 6
OPS BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA \ 7
 
OPS ALI ALI ??? ALI TXB TXB TXB TXB MOV MOV MOV MOV MRS LEA MSR 8F. \ 8
OPS XGA XGA XGA XGA XGA XGA XGA XGA CBW CDQ CIS W8F PSF PPF SAH LAH \ 9
OPS MV1 MV1 MV2 MV2 MVS MVS CPS CPS TST TST STS STS LDS LDS SCS SCS \ A
OPS MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI MRI \ B
 
OPS SHF SHF RTN RTN LXS LXS MVI MVI ENT LEV RTF RTF NT3 INT NTO IRT \ C
OPS SHF SHF SHF SHF AAM AAD ??? XLT FD8 FD9 FDA FDB FDC FDD FDE FDF \ D
OPS LUP LUP LUP LUP INP INP OTP OTP JSR JMP CIS JMP IND IND OTD OTD \ E
OPS LOK ??? RPZ REP HLT CMC F6. F6. CLC STC CLI STI CLD STD FE. FF. \ F
 
\ 0 1 2 3 4 5 6 7 8 9 A B C D E F
 
: DIS-OP ( ADR -- ADR' )
0>S
FALSE TO PREFIX-OP \ SMUB
COUNT
DUP 1 AND TO SIZE
DUP CELLS OP-TABLE + @ EXECUTE
PREFIX-OP 0=
IF DEFAULT-16BIT? 0=
IF FALSE TO 16-BIT-DATA
FALSE TO 16-BIT-ADDR
ELSE TRUE TO 16-BIT-DATA
TRUE TO 16-BIT-ADDR
THEN
THEN ;
 
 
0 VALUE NEXT-INST
 
: X". ( ADDR -- ADDR' )
\ CR DUP BASE-ADDR - 6 H.R SPACE
DUP C@ 2DUP SWAP 1+ SWAP ." '" TYPE ." '"
+ 2+
\ ." C, " 1+ OVER + SWAP
\ DO I C@ 2 H.R ." C, " LOOP
\ COUNT + 1+
;
 
[DEFINED] G. [IF]
 
: FLIT8. ( ADDR -- ADDR' ) CR
." FLITERAL: "
DUP DF@ G. 8 +
;
 
: FLIT10. ( ADDR -- ADDR' ) CR
." FLITERAL: "
DUP F@ G. 10 +
;
 
[ELSE]
 
: FLIT8.
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP 8 OVER + SWAP
DO I C@ 3 H.R ." C," LOOP
8 +
;
 
: FLIT10. ( ADDR -- ADDR' )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP 10 OVER + SWAP
DO I C@ 3 H.R ." C," LOOP
10 +
;
 
[THEN]
 
: VECT. ( ADDR -- ADDR' ) CR
\ ." @" DUP BASE-ADDR - 6 H.R ." :" SPACE
." A; " DUP @ 8 H.R DUP CELL+ SWAP @ ." , \ " WordByAddr TYPE CR
;
 
\ : CONS. ( ADDR -- ) \ CR
\ \ ." @" DUP BASE-ADDR - 6 H.R ." :" SPACE
\ SPACE ." CONSTANT " @ 8 SPACES DUP LAB IF ." @" WordByAddr TYPE ELSE DUP ARRAY2? IF DROP ELSE ." $" 1 H.R CR THEN THEN
\ ;
: CONS. ( ADDR -- )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " @ 8 H.R ." ,"
;
 
 
: USER. ( ADDR -- ) CR
\ ." @" DUP BASE-ADDR - 6 H.R ." :" SPACE
." A; " @ 8 H.R ." \ Relative in heap [hex]" \ CELL+
CR
;
 
\ : UVAL. ( ADDR -- ADDR' ) CR
\ ." @" DUP BASE-ADDR - 6 H.R ." :" SPACE
\ ." A; " DUP @ 8 H.R ." \ Relative in heap [hex]" CELL+
\ CR
\ ;
 
: UVAL. ( ADDR -- ADDR' )
CR DUP BASE-ADDR - 6 H.R SPACE
." A; " DUP @ 8 H.R ." , \ Relative in heap [hex]" CELL+
;
 
VARIABLE ENDDB
VARIABLE ENDDD
VARIABLE FLAGDB
: TLABEL TRIGER3 @ IF 0 TRIGER3 ! ELSE OVER . ." :" 6 SPACES THEN ;
: DDADR? OVER @ DUP IMAGE-BEGIN > SWAP IMAGE-END < AND ;
 
: CODE. ( ADDR -- ) 4 SPACES
DUP NextNFA
?DUP
IF OVER - 5 -
ELSE
DUP DP @ SWAP - ABS DUP 512 > IF DROP 124 THEN \ no applicable end found
THEN
BEGIN DUP WHILE OVER LAB 0= IF OVER ARRAY? TLABEL ELSE 24 SPACES THEN
DDADR? IF OVER @ ARRAY2? 0=
IF ." dd @" OVER @ DUP @ ADD-LAB . CR THEN 4 - SWAP 4 + SWAP ELSE
DUP 4 < IF ." db "
\ FLAGDB @ IF ." , " ELSE ." db " THEN OVER C@ . 1- SWAP 1+ SWAP
2DUP OVER + DUP ENDDB ! SWAP DO I DUP ." $" C@ . ENDDB @ 1- <> IF ." , " THEN LOOP CR DROP 0
ELSE OVER @ 0= IF \ OVER @ . 4 - SWAP 4 + SWAP CR
0 FLAGDB ! TRIGER4 @ IF 2DROP EXIT ELSE ." dd $" BEGIN OVER @ 0= OVER 0 > AND
WHILE 4 - SWAP 4 + SWAP FLAGDB 1+! REPEAT FLAGDB @ . ." DUP (?)" THEN CR
ELSE
." db " 4 - OVER DUP 4 + DUP ENDDB ! SWAP DO I DUP
." $" C@ . ENDDB @ 1- <> IF ." , " THEN LOOP SWAP 4 + SWAP CR THEN
THEN
THEN
REPEAT 2DROP
 
;
 
 
\ IMAGE-BEGIN - ïîïðîáîâàòü âìåìåñòî ìåòêè OVER @ IMAGE-BEGIN > IF ." DD" OVER @ . HERE . THEN
 
: DIS-DB CR .S" DB " COUNT H.>S ;
: DIS-DW CR .S" DW " W@+ H.>S ;
: DIS-DD CR .S" DD " @+ H.>S ;
: DIS-DS CR .S" STRING " 0x22 EMIT>S COUNT 2DUP >S + 0x22 EMIT>S ;
 
: FIND-REST-END ( xt -- addr | 0)
DUP NextNFA DUP
IF
NIP
NAME>C 1- \ Skip CFA field
ELSE
DROP
DP @ - ABS 100 > IF 0 EXIT THEN \ no applicable end found
DP @ 1-
THEN
 
BEGIN \ Skip alignment
DUP C@ 0= WHILE 1-
REPEAT ;
 
 
 
 
: INST ( ADR -- ADR' )
DUP TO NEXT-INST
COLS 0x29 <
IF DIS-OP
S-BUF COUNT TYPE
ELSE DUP DIS-OP
OVER BASE-ADDR - 6
\ H.R SPACE \ ïå÷àòü àäðåñà ìåòêè ïî óñëîâèþ, 2DROP óáðàòü
\ 2DROP \ H.R SPACE àäðåñà
OVER TYPE-LAB
IF 2DROP ELSE
OVER LAB IF 0 TRIGER3 ! 2DROP ELSE S" @" TYPE H.R S" :" TYPE SSPACE THEN
THEN
DUP ROT
2DUP - DUP>R 0x10 U> ABORT" DECOMPILER ERROR"
2DROP \ DO I C@ 2 SPACES DROP ( H.N ) LOOP \ 2DROP ( H.N ) LOOP \ äàìï êîìàíäû
R> 12 < IF 9 EMIT THEN
\ NEXT-INST C@ 0xE8 =
\ IF NEXT-INST 1+ @+ SWAP +
\ CASE
\ ['] _CLITERAL-CODE OF 0 ENDOF
\ ['] _SLITERAL-CODE OF 0 ENDOF
\ ['] _VECT-CODE OF 0 ENDOF
\ ['] _CONSTANT-CODE OF 0 ENDOF
\ ['] _USER-CODE OF 0 ENDOF
\ ['] _CREATE-CODE OF 0 ." // Îôîðìèò êàê var èëè label: array[0..10] of Byte/Integer;" ENDOF
\ ['] _USER-VALUE-CODE OF 0 ." // Îôîðìèò êàê" ENDOF
\ ['] _FLIT-CODE10 OF 0 ENDOF
\ ['] _FLIT-CODE8 OF 0 ENDOF
\ ENDCASE
\ THEN
?DUP IF 9 EMIT S-BUF COUNT TYPE THEN
THEN NEXT-INST C@ 0xE8 =
IF NEXT-INST 1+ @+ SWAP +
CASE
['] _CLITERAL-CODE OF CR X". ENDOF
['] _SLITERAL-CODE OF CR X". ENDOF
['] _VECT-CODE OF VECT. 2DROP RDROP ENDOF
['] _CONSTANT-CODE OF CONS. DROP RDROP ENDOF
['] _USER-CODE OF USER. DROP RDROP ENDOF
['] _CREATE-CODE OF CODE. DROP RDROP ENDOF
['] _USER-VALUE-CODE OF UVAL. DROP RDROP ENDOF
['] _FLIT-CODE10 OF FLIT10. ENDOF
['] _FLIT-CODE8 OF FLIT8. ENDOF
ENDCASE
THEN
;
 
: INST1 ( ADR -- ADR' )
DUP TO NEXT-INST
COLS 0x29 <
IF DIS-OP
\ S-BUF COUNT TYPE
ELSE DUP DIS-OP
DUP ROT
2DUP - DUP>R 0x10 U> ABORT" DECOMPILER ERROR"
 
2DROP RDROP
THEN
 
;
 
: (REST-AREA) ( addr1 addr2 -- )
\ if addr2 = 0 continue till RET instruction
SWAP DUP TO NEXT-INST
BEGIN
\ We do not look for JMP's because there may be
\ a jump in a forth word
CR
OVER 0= IF NEXT-INST C@ 0xC3 <>
ELSE 2DUP < INVERT
THEN
WHILE INST \ CR
REPEAT 2DROP
;
 
 
 
 
 
\ : ALLOT DUP HERE FINISH-ARRAY @ 2! FINISH-ARRAY @ 2 CELLS + FINISH-ARRAY ! ALLOT ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
FORTH DEFINITIONS
VECT REST-AREA
\ ' (REST-AREA) TO REST-AREA
 
\ : REST ( addr -- )
\ DUP HERE U> 0= HERE 1- AND REST-AREA
\ ;
 
\ : SEE ( "name" -- )
\ ' DUP FIND-REST-END ['] REST-AREA CATCH DROP
\ ;
 
 
: CALL-TYPE
\ WordByAddr TYPE
\ DUP ADD-CALL DUP ADD-LAB \ ! ! ! ! !
1 TRIGER3 ! S" @@" TYPE NEAR_NFA >R COUNT TYPE S" :" TYPE DROP R>
\ DUP SEE2
;
 
: CALL-FIND \ DUP SEE2
HEX
DUP FIND-REST-END
SWAP DUP TO NEXT-INST
BEGIN
\ We do not look for JMP's because there may be
\ a jump in a forth word
OVER 0= IF NEXT-INST C@ 0xC3 <>
ELSE 2DUP < INVERT
THEN
WHILE DUP INST1 DROP DUP TO NEXT-INST
DUP C@ 0xE8 = IF NEXT-INST 1+ DUP @ + 4 + DUP ADD-CALL
CALL-TYPE? @ IF RECURSE ELSE DROP 5 + THEN
ELSE DIS-OP THEN \ CR
REPEAT 2DROP
;
 
 
: SEE2 ( "addr" -- )
DUP FIND-REST-END 2DUP END-WORD ! START-WORD !
['] REST-AREA CATCH DROP
;
 
: VAR-VECT
1+ @+ SWAP +
CASE
['] _CLITERAL-CODE OF 5 + X". ENDOF
['] _SLITERAL-CODE OF 5 + X". ENDOF
['] _VECT-CODE OF 5 + VECT. DROP ENDOF
['] _CONSTANT-CODE OF 5 + CONS. ENDOF
['] _USER-CODE OF 5 + USER. ENDOF
['] _CREATE-CODE OF 5 + CODE. ENDOF
['] _USER-VALUE-CODE OF 5 + UVAL. ENDOF
['] _FLIT-CODE10 OF 5 + FLIT10. ENDOF
['] _FLIT-CODE8 OF 5 + FLIT8. ENDOF
ENDCASE
;
 
: TYPE-VAR
FINISH-VAR @ START-VAR @ = IF EXIT THEN
FINISH-VAR @ 4 -
BEGIN DUP @
\ DUP 5 + @ ARRAY? .
DUP WordByAddr TYPE 1 TRIGER3 ! DUP VAR-VECT \ SEE2
DUP START-VAR @ = 0= WHILE CELL- REPEAT DROP CR CR
;
 
: TYPE-ALL
START-LIST2 @ FINISH-LIST2 @ 4 - FINISH-LIST3 !
BEGIN DUP @
DUP 1+ @+ SWAP +
CASE
\ ['] _CLITERAL-CODE OF 0 ENDOF
\ ['] _SLITERAL-CODE OF 0 ENDOF
['] _VECT-CODE OF 0 ENDOF
['] _CONSTANT-CODE OF 0 ENDOF
['] _USER-CODE OF 0 ENDOF
['] _CREATE-CODE OF 0 ENDOF
['] _USER-VALUE-CODE OF 0 ENDOF
['] _FLIT-CODE10 OF 0 ENDOF
['] _FLIT-CODE8 OF 0 ENDOF
ENDCASE
?DUP IF ADD-CALL ELSE ADD-VAR THEN DUP FINISH-LIST3 @ = 0= \ ADD-CALL CR WordByAddr TYPE CR
WHILE CELL+ REPEAT DROP
TYPE-VAR
FINISH-LIST @ BEGIN DUP @ DUP CALL-TYPE
SEE2 DUP START-LIST @ = 0= WHILE CELL- REPEAT DROP
;
 
: DISASM-LIST
['] (REST-AREA) TO REST-AREA
DUP START-LIST @ ! CALL-FIND
;
 
 
: DIS ( ADR -- )
BEGIN
DUP
CR INST
KEY UPC DUP 0x1B = OVER [CHAR] Q = OR 0=
WHILE
CASE
[CHAR] Q OF DROP DIS-DB ENDOF
[CHAR] W OF DROP DIS-DW ENDOF
[CHAR] D OF DROP DIS-DD ENDOF
[CHAR] S OF DROP DIS-DS ENDOF
ROT DROP
ENDCASE
 
REPEAT 2DROP DROP ;
 
 
0 VALUE SHOW-NEXT? \ DEFAULT TO NOT SHOWING NEXT INSTRUCTIONS
 
DECIMAL
 
TRUE VALUE SEE-KET-FL
 
VARIABLE COUNT-LINE
 
: REST ( ADR -- )
20 COUNT-LINE !
0 TO MAX_REFERENCE
DUP TO NEXT-INST
BEGIN
CR
NEXT-INST C@
DUP 0xC3 <>
SWAP 0xE9 <> AND \ NEXT, BEHIND US?
NEXT-INST MAX_REFERENCE U< OR
OVER HERE - 0x100 U> AND
WHILE INST
COUNT-LINE @ 1- DUP 0= SEE-KET-FL AND
IF 9 EMIT ." \ Press <enter> | q | any" KEY UPC
DUP 0xD = IF 2DROP 1 ELSE
DUP [CHAR] Q = SWAP 0x1B =
OR IF 2DROP CR EXIT THEN
DROP 20 THEN
THEN
COUNT-LINE !
REPEAT DROP ." END-CODE "
;
 
: SEE ( -- )
' REST ;
 
 
ONLY FORTH DEFINITIONS
 
.( Ok) CR
TRUE WARNING !
/programs/develop/SPForth/lib/ext/locals.f
0,0 → 1,324
( 28.Mar.2000 Andrey Cherezov Copyright [C] RU FIG
 
Èñïîëüçîâàíû èäåè ñëåäóþùèõ àâòîðîâ:
Ruvim Pinka; Dmitry Yakimov; Oleg Shalyopa; Yuriy Zhilovets;
Konstantin Tarasov; Michail Maximov.
 
!! Ðàáîòàåò òîëüêî â SPF4.
)
 
( Ïðîñòîå ðàñøèðåíèå ÑÏ-Ôîðòà ëîêàëüíûìè ïåðåìåííûìè.
Ðåàëèçîâàíî áåç èñïîëüçîâàíèÿ LOCALS ñòàíäàðòà 94.
 
Îáúÿâëåíèå âðåìåííûõ ïåðåìåííûõ, âèäèìûõ òîëüêî âíóòðè
òåêóùåãî ñëîâà è îãðàíè÷åííûõ âðåìåíåì âûçîâà äàííîãî
ñëîâà âûïîëíÿåòñÿ ñ ïîìîùüþ ñëîâà "{". Âíóòðè îïðåäåëåíèÿ
ñëîâà èñïîëüçóåòñÿ êîíñòðóêöèÿ, ïîäîáíàÿ ñòåêîâîé íîòàöèè Ôîðòà
{ ñïèñîê_èíèöèàëèçèðîâàííûõ_ëîêàëîâ \ ñï.íåèíèö.ëîêàëîâ -- ÷òî óãîäíî }
Íàïðèìåð:
 
{ a b c d \ e f -- i j }
 
Èëè { a b c d \ e f[ EVALUATE_âûðàæåíèå ] -- i j }
Ýòî çíà÷èò ÷òî äëÿ ïåðåìåííîé f[ áóäåò âûäåëåí íà ñòåêå âîçâðàòîâ ó÷àñòîê
ïàìÿòè äëèíîé n áàéò. Èñïîëüçîâàíèå ïåðåìåííîé f[ äàñò àäðåñ íà÷àëà ýòîãî
ó÷àñòêà. \ ñòèëå MPE\
 
Èëè { a b c d \ e [ 12 ] f -- i j }
Ýòî çíà÷èò ÷òî äëÿ ïåðåìåííîé f áóäåò âûäåëåí íà ñòåêå âîçâðàòîâ ó÷àñòîê
ïàìÿòè äëèíîé 12 áàéò. Èñïîëüçîâàíèå ïåðåìåííîé f äàñò àäðåñ íà÷àëà ýòîãî
ó÷àñòêà.
 
×àñòü "\ ñï.íåèíèö.ëîêàëîâ" ìîæåò îòñóòñòâîâàòü, íàïðèìåð:
 
{ item1 item2 -- }
 
Ýòî çàñòàâëÿåò ÑÏ-Ôîðò àâòîìàòè÷åñêè âûäåëÿòü ìåñòî â
ñòåêå âîçâðàòîâ äëÿ ýòèõ ïåðåìåííûõ â ìîìåíò âûçîâà ñëîâà
è àâòîìàòè÷åñêè îñâîáîæäàòü ìåñòî ïðè âûõîäå èç íåãî.
 
Îáðàùåíèå ê òàêèì ëîêàëüíûì ïåðåìåííûì - êàê ê VALUE-ïåðåìåííûì
ïî èìåíè. Åñëè íóæåí àäðåñ ïåðåìåííîé, òî èñïîëüçóåòñÿ "^ èìÿ"
èëè "AT èìÿ".
 
 
Âìåñòî \ ìîæíî èñïîëüçîâàòü |
Âìåñòî -> ìîæíî èñïîëüçîâàòü TO
 
Ïðèìåðû:
 
: TEST { a b c d \ e f -- } a . b . c . b c + -> e e . f . ^ a @ . ;
Ok
1 2 3 4 TEST
1 2 3 5 0 1 Ok
 
: TEST { a b -- } a . b . CR 5 0 DO I . a . b . CR LOOP ;
Ok
12 34 TEST
12 34
0 12 34
1 12 34
2 12 34
3 12 34
4 12 34
Ok
 
: TEST { a b } a . b . ;
Ok
1 2 TEST
1 2 Ok
 
: TEST { a b \ c } a . b . c . ;
Ok
1 2 TEST
1 2 0 Ok
 
: TEST { a b -- } a . b . ;
Ok
1 2 TEST
1 2 Ok
 
: TEST { a b \ c -- d } a . b . c . ;
Ok
1 2 TEST
1 2 0 Ok
 
: TEST { \ a b } a . b . 1 -> a 2 -> b a . b . ;
Ok
TEST
0 0 1 2 Ok
 
Èìåíà ëîêàëüíûõ ïåðåìåííûõ ñóùåñòâóþò â äèíàìè÷åñêîì
âðåìåííîì ñëîâàðå òîëüêî â ìîìåíò êîìïèëÿöèè ñëîâà, à
ïîñëå ýòîãî âû÷èùàþòñÿ è áîëåå íåäîñòóïíû.
 
Èñïîëüçîâàòü êîíñòðóêöèþ "{ ... }" âíóòðè îäíîãî îïðåäåëåíèÿ ìîæíî
òîëüêî îäèí ðàç.
 
Êîìïèëÿöèÿ ýòîé áèáëèîòåêè äîáàâëÿåò â òåêóùèé ñëîâàðü êîìïèëÿöèè
Òîëüêî äâà ñëîâà:
ñëîâàðü "vocLocalsSupport" è "{"
Âñå îñòàëüíûå äåòàëè "ñïðÿòàíû" â ñëîâàðå, èñïîëüçîâàòü èõ
íå ðåêîìåíäóåòñÿ.
)
 
MODULE: vocLocalsSupport
 
USER widLocals
USER uLocalsCnt
USER uLocalsUCnt
USER uPrevCurrent
USER uAddDepth
 
: (Local^) ( N -- ADDR )
RP@ +
;
: LocalOffs ( n -- offs )
uLocalsCnt @ SWAP - CELLS CELL+ uAddDepth @ +
;
 
BASE @ HEX
: CompileLocalsInit
uPrevCurrent @ SET-CURRENT
uLocalsCnt @ uLocalsUCnt @ - ?DUP IF CELLS LIT, POSTPONE DRMOVE THEN
uLocalsUCnt @ ?DUP
IF
LIT, POSTPONE (RALLOT)
THEN
uLocalsCnt @ ?DUP
IF CELLS RLIT, ['] (LocalsExit) RLIT, THEN
;
 
: CompileLocal@ ( n -- )
['] DUP MACRO,
LocalOffs DUP SHORT?
OPT_INIT SetOP
IF 8B B, 44 B, 24 B, B, \ mov eax, offset [esp]
ELSE 8B B, 84 B, 24 B, , \ mov eax, offset [esp]
THEN OPT
OPT_CLOSE
;
 
\ : CompileLocal@ ( n -- )
\ LocalOffs LIT, POSTPONE RP+@
\ ;
 
: CompileLocal! ( n -- )
LocalOffs DUP SHORT?
OPT_INIT SetOP
IF 89 B, 44 B, 24 B, B, \ mov offset [esp], eax
ELSE 89 B, 84 B, 24 B, , \ mov offset [esp], eax
THEN OPT
OPT_CLOSE
['] DROP MACRO,
;
 
: CompileLocalRec ( u -- )
LocalOffs DUP
['] DUP MACRO,
SHORT?
OPT_INIT SetOP
IF 8D B, 44 B, 24 B, B, \ lea eax, offset [esp]
ELSE 8D B, 84 B, 24 B, , \ lea eax, offset [esp]
THEN OPT
OPT_CLOSE
;
 
BASE !
 
: LocalsStartup
TEMP-WORDLIST widLocals !
GET-CURRENT uPrevCurrent !
ALSO vocLocalsSupport
ALSO widLocals @ CONTEXT ! DEFINITIONS
uLocalsCnt 0!
uLocalsUCnt 0!
uAddDepth 0!
;
: LocalsCleanup
PREVIOUS PREVIOUS
widLocals @ FREE-WORDLIST
;
 
: ProcessLocRec ( "name" -- u )
[CHAR] ] PARSE
STATE 0!
EVALUATE CELL 1- + CELL / \ äåëàåì êðàòíûì 4
-1 STATE !
DUP uLocalsCnt +!
uLocalsCnt @ 1-
;
 
: CreateLocArray
ProcessLocRec
CREATE ,
;
 
: LocalsRecDoes@ ( -- u )
DOES> @ CompileLocalRec
;
 
: LocalsRecDoes@2 ( -- u )
ProcessLocRec ,
DOES> @ CompileLocalRec
;
 
: LocalsDoes@
uLocalsCnt @ ,
uLocalsCnt 1+!
DOES> @ CompileLocal@
;
 
: ;; POSTPONE ; ; IMMEDIATE
 
 
: ^
' >BODY @
CompileLocalRec
; IMMEDIATE
 
 
: -> ' >BODY @ CompileLocal! ; IMMEDIATE
 
WARNING DUP @ SWAP 0!
 
: AT
[COMPILE] ^
; IMMEDIATE
 
: TO ( "name" -- )
>IN @ NextWord widLocals @ SEARCH-WORDLIST 1 =
IF >BODY @ CompileLocal! DROP
ELSE >IN ! [COMPILE] TO
THEN
; IMMEDIATE
 
WARNING !
 
: â POSTPONE -> ; IMMEDIATE
 
WARNING @ WARNING 0!
\ ===
\ ïåðåîïðåäåëåíèå ñîîòâåòñòâóþùèõ ñëîâ äëÿ âîçìîæíîñòè èñïîëüçîâàòü
\ âðåìåííûå ïåðåìåííûå âíóòðè öèêëà DO LOOP è íåçàâèñèìî îò èçìåíåíèÿ
\ ñîäåðæèìîãî ñòåêà âîçâðàòîâ ñëîâàìè >R R>
 
: DO POSTPONE DO [ 3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: ?DO POSTPONE ?DO [ 3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: LOOP POSTPONE LOOP [ -3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: +LOOP POSTPONE +LOOP [ -3 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: >R POSTPONE >R [ 1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: R> POSTPONE R> [ -1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: RDROP POSTPONE RDROP [ -1 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: 2>R POSTPONE 2>R [ 2 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
: 2R> POSTPONE 2R> [ -2 CELLS ] LITERAL uAddDepth +! ; IMMEDIATE
 
\ ===
 
\ { ... | ... -- _____ }
: ParseLocals3
BEGIN
PARSE-NAME
DUP 0= ABORT" Locals bad syntax (3)"
2DUP S" }" COMPARE 0= IF 2DROP EXIT THEN
2DROP
AGAIN
;
 
\ { ... | _____ -- ... }
: ParseLocals2
BEGIN
PARSE-NAME
DUP 0= ABORT" Locals bad syntax (2)"
2DUP S" --" COMPARE 0= IF 2DROP ParseLocals3 EXIT THEN
2DUP S" }" COMPARE 0= IF 2DROP EXIT THEN
2DUP S" [" COMPARE 0=
IF
2DROP CreateLocArray LocalsRecDoes@
ELSE
CREATED
LATEST DUP C@ CHARS + C@
[CHAR] [ =
IF
LocalsRecDoes@2
ELSE
LocalsDoes@ 1
THEN
THEN
uLocalsUCnt +! IMMEDIATE
AGAIN
;
 
\ { _____ | ... -- ... }
: ParseLocals1
BEGIN
PARSE-NAME
DUP 0= ABORT" Locals bad syntax (1)"
2DUP S" |" COMPARE 0= IF 2DROP ParseLocals2 EXIT THEN
2DUP S" \" COMPARE 0= IF 2DROP ParseLocals2 EXIT THEN
2DUP S" --" COMPARE 0= IF 2DROP ParseLocals3 EXIT THEN
2DUP S" }" COMPARE 0= IF 2DROP EXIT THEN
 
CREATED LocalsDoes@ IMMEDIATE
AGAIN ;
 
\ uLocalsCnt @ ?DUP
\ IF CELLS RLIT, ['] (LocalsExit) RLIT, THEN
 
: ; LocalsCleanup
S" ;" EVAL-WORD
; IMMEDIATE
 
WARNING !
 
\ =====================================================================
 
EXPORT
 
: {
LocalsStartup
ParseLocals1
CompileLocalsInit
;; IMMEDIATE
 
;MODULE
/programs/develop/SPForth/lib/ext/patch.f
0,0 → 1,8
 
\ from gforth
: REPLACE-WORD ( by-xt what-xt )
[ HEX ] E9 [ DECIMAL ] OVER C! \ JMP ...
1+ DUP >R
CELL+ -
R> !
;
/programs/develop/SPForth/lib/ext/spf-asm.f
0,0 → 1,40
REQUIRE CASE lib/ext/case.f
REQUIRE !CSP ~mak/lib/csr.f
 
: DEFER CREATE ['] NOOP , DOES> @ EXECUTE ;
: DEFER@ ' >BODY STATE @ IF POSTPONE LITERAL POSTPONE @ ELSE @ THEN ; IMMEDIATE
: IS ' >BODY STATE @ IF POSTPONE LITERAL POSTPONE ! ELSE ! THEN ; IMMEDIATE
 
: +TO ' >BODY STATE @ IF POSTPONE LITERAL POSTPONE +! ELSE +! THEN ; IMMEDIATE
 
: REVEAL SMUDGE ;
: COMPILE ' POSTPONE LITERAL POSTPONE COMPILE, ; IMMEDIATE
: (;CODE) R> LATEST 5 - ! ;
 
VECT EXIT-ASSEMBLER
 
VOCABULARY ASSEMBLER
 
S" lib/asm/486asm.f" INCLUDED
 
( FORTH HEADER CREATION WORDS )
ALSO ASSEMBLER ALSO ASM-HIDDEN
IN-HIDDEN
: _CODE ( START A NATIVE CODE DEFINITION )
CREATE CFL NEGATE ALLOT HIDE !CSP INIT-ASM ;
 
: _;CODE ( CREATE THE [;CODE] PART OF A LOW LEVEL DEFINING WORD )
?CSP !CSP COMPILE (;CODE) POSTPONE [ INIT-ASM ;
 
IN-FORTH
' _CODE IS CODE
' _;CODE IS ;CODE
 
: FCALL A; [COMPILE] ' COMPILE, ;
 
ONLY FORTH DEFINITIONS
 
ALSO FORTH IMMEDIATE PREVIOUS
 
 
S" lib/asm/asmmac.f" INCLUDED
/programs/develop/SPForth/lib/ext/vocs.f
0,0 → 1,60
 
REQUIRE [DEFINED] lib/include/tools.f
 
\ Ðàñïå÷àòàòü ñïèñîê ñëîâàðåé.
: VOCS
VOC-LIST
BEGIN @ DUP WHILE
DUP CELL+ VOC-NAME.
DUP 3 CELLS + @ \ wid ïðåäêà
?DUP IF ." defined in " VOC-NAME.
ELSE ." is the main vocabulary"
THEN CR
REPEAT
DROP
;
 
0x200 VALUE MAX-WORD-SIZE
 
C" NEAR_NFA" FIND NIP 0=
[IF] : NEAR_NFA ( addr -- NFA addr | 0 addr ) DUP WordByAddr DROP 1- SWAP
2DUP 1000 - U< IF NIP 0 SWAP THEN ;
[THEN]
 
\ Opposite to CDR, might be slow!
\ It does not take wordlists into account.
: NextNFA ( nfa1 -- nfa2 | 0 )
NEAR_NFA SWAP >R
BEGIN
1+ NEAR_NFA ( nfa addr )
OVER 0 >
ROT R@ <> AND
OVER R@ - MAX-WORD-SIZE > OR
UNTIL
 
DUP R> - MAX-WORD-SIZE >
IF DROP 0
ELSE NEAR_NFA DROP
THEN
;
 
: NFAInVoc? ( nfa voc -- f )
@ \ last nfa
BEGIN ( nfa 'nfa )
DUP
WHILE
2DUP = IF 2DROP TRUE EXIT THEN
CDR
REPEAT 2DROP 0
;
 
: VocByNFA ( nfa -- wid | 0 )
VOC-LIST
BEGIN @ DUP WHILE ( nfa voc )
2DUP CELL+ NFAInVoc?
IF
NIP CELL+ EXIT
THEN
REPEAT
2DROP 0
;
/programs/develop/SPForth/lib/ext
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/lib/include/core-ext.f
0,0 → 1,81
\ 94 CORE EXT
 
: .R ( n1 n2 -- ) \ 94 CORE EXT
\ Âûâåñòè íà ýêðàí n1 âûðàâíåííûì âïðàâî â ïîëå øèðèíîé n2 ñèìâîëîâ.
\ Åñëè ÷èñëî ñèìâîëîâ, íåîáõîäèìîå äëÿ èçîáðàæåíèÿ n1, áîëüøå ÷åì n2,
\ èçîáðàæàþòñÿ âñå öèôðû ÷èñëà áåç âåäóùèõ ïðîáåëîâ â ïîëå íåîáõîäèìîé
\ øèðèíû.
>R DUP >R ABS
S>D <# #S R> SIGN #>
R> OVER - 0 MAX SPACES TYPE
;
: 0> ( n -- flag ) \ 94 CORE EXT
\ flag "èñòèíà" òîãäà è òîëüêî òîãäà, êîãäà n áîëüøå íóëÿ
0 >
;
 
: MARKER ( "<spaces>name" -- ) \ 94 CORE EXT
\ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëàìè.
\ Ñîçäàòü îïðåäåëåíèå ñ ñåìàíòèêîé âûïîëíåíèÿ, îïèñàííîé íèæå.
\ name Âûïîëíåíèå: ( -- )
\ Âîññòàíîâèòü ðàñïðåäåëåíèå ïàìÿòè ñëîâàðÿ è óêàçàòåëè ïîðÿäêà ïîèñêà
\ ê ñîñòîÿíèþ, êîòîðîå îíè èìåëè ïåðåä îïðåäåëåíèåì name. Óáðàòü
\ îïðåäåëåíèå name è âñå ïîñëåäóþùèå îïðåäåëåíèÿ. Íå òðåáóåòñÿ
\ îáÿçàòåëüíî âîññòàíàâëèâàòü ëþáûå îñòàâøèåñÿ ñòðóêòóðû, êîòîðûå
\ ìîãóò áûòü ñâÿçàíû ñ óäàëåííûìè îïðåäåëåíèÿìè èëè îñâîáîæäåííûì
\ ïðîñòðàíñòâîì äàííûõ. Íèêàêàÿ äðóãàÿ êîíòåêñòóàëüíàÿ èíôîðìàöèÿ,
\ êàê îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ, íå èçìåíÿåòñÿ.
HERE
\ [C]HERE , [E]HERE ,
GET-CURRENT ,
GET-ORDER DUP , 0 ?DO DUP , @ , LOOP
CREATE ,
DOES> @ DUP \ ONLY
\ DUP @ [C]DP ! CELL+
\ DUP @ [E]DP ! CELL+
DUP @ SET-CURRENT CELL+
DUP @ >R R@ CELLS 2* + 1 CELLS - R@ 0
?DO DUP DUP @ SWAP CELL+ @ OVER ! SWAP 2 CELLS - LOOP
DROP R> SET-ORDER
DP !
;
 
: SAVE-INPUT ( -- xn ... x1 n ) \ 94 CORE EXT
\ x1 - xn îïèñûâàþò òåêóùåå ñîñòîÿíèå ñïåöèôèêàöèé âõîäíîãî ïîòîêà äëÿ
\ ïîñëåäóþùåãî èñïîëüçîâàíèÿ ñëîâîì RESTORE-INPUT.
SOURCE-ID 0>
IF TIB #TIB @ 2DUP C/L 2 + ALLOCATE THROW DUP >R SWAP CMOVE
R> TO TIB >IN @
SOURCE-ID FILE-POSITION THROW
5
ELSE BLK @ >IN @ 2 THEN
;
: RESTORE-INPUT ( xn ... x1 n -- flag ) \ 94 CORE EXT
\ Ïîïûòêà âîññòàíîâèòü ñïåöèôèêàöèè âõîäíîãî ïîòîêà ê ñîñòîÿíèþ,
\ îïèñàííîìó x1 - xn. flag "èñòèíà", åñëè ñïåöèôèêàöèè âõîäíîãî
\ ïîòîêà íå ìîãóò áûòü âîññòàíîâëåíû.
\ Íåîïðåäåëåííàÿ ñèòóàöèÿ âîçíèêàåò, åñëè âõîäíîé ïîòîê,
\ ïðåäñòàâëåííûé àðãóìåíòàìè íå òîò æå, ÷òî è òåêóùèé âõîäíîé ïîòîê.
SOURCE-ID 0>
IF DUP 5 <> IF 0 ?DO DROP LOOP -1 EXIT THEN
DROP SOURCE-ID REPOSITION-FILE ?DUP IF >R 2DROP DROP R> EXIT THEN
>IN ! #TIB ! TO TIB FALSE
ELSE DUP 2 <> IF 0 ?DO DROP LOOP -1 EXIT THEN
DROP >IN ! BLK ! FALSE
THEN
;
: U.R ( u n -- ) \ 94 CORE EXT
\ Âûâåñòè íà ýêðàí u âûðàâíåííûì âïðàâî â ïîëå øèðèíîé n ñèìâîëîâ.
\ Åñëè ÷èñëî ñèìâîëîâ, íåîáõîäèìîå äëÿ èçîáðàæåíèÿ u, áîëüøå ÷åì n,
\ èçîáðàæàþòñÿ âñå öèôðû ÷èñëà áåç âåäóùèõ ïðîáåëîâ â ïîëå íåîáõîäèìîé
\ øèðèíû.
>R U>D <# #S #>
R> OVER - 0 MAX SPACES TYPE
;
\EOF
: UNUSED ( -- u ) \ 94 CORE EXT
\ u - îáúåì ïàìÿòè, îñòàâøåéñÿ â îáëàñòè, àäðåñóåìîé HERE,
\ â áàéòàõ.
IMAGE-SIZE
HERE IMAGE-BASE - -
;
/programs/develop/SPForth/lib/include/tools.f
0,0 → 1,78
\ 94 TOOLS
 
: .S ( -- ) \ 94 TOOLS
\ Ñêîïèðîâàòü è ïîêàçàòü çíà÷åíèÿ, íàõîäÿùèåñÿ íà ñòåêå äàííûõ. Ôîðìàò çàâèñèò
\ îò ðåàëèçàöèè.
\ .S ìîæåò áûòü ðåàëèçîâàíî ñ èñïîëüçîâàíèåì ñëîâ ôîðìàòíîãî ïðåîáðàçîâàíèÿ
\ ÷èñåë. Ñîîòâåòñòâåííî, îí ìîæåò èñïîðòèòü ïåðåìåùàåìóþ îáëàñòü,
\ èäåíòèôèöèðóåìóþ #>.
DEPTH .SN
;
 
: ? ( a-addr -- ) \ 94 TOOLS
\ Ïîêàçàòü çíà÷åíèå, õðàíÿùååñÿ ïî àäðåñó a-addr.
\ ? ìîæåò áûòü ðåàëèçîâàí ñ èñïîëüçîâàíèåì ñëîâ ôîðìàòíîãî ïðåîáðàçîâàíèÿ
\ ÷èñåë. Ñîîòâåòñòâåííî, îí ìîæåò èñïîðòèòü ïåðåìåùàåìóþ îáëàñòü,
\ èäåíòèôèöèðóåìóþ #>.
@ .
;
: AHEAD \ 94 TOOLS EXT
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( C: -- orig )
\ Ïîëîæèòü ìåñòî íåðàçðåøåííîé ññûëêè âïåðåä orig íà ñòåê óïðàâëåíèÿ.
\ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Ñåìàíòèêà íåçàâåðøåíà äî òåõ ïîð, ïîêà orig íå ðàçðåøèòñÿ (íàïðèìåð,
\ ïî THEN).
\ Âðåìÿ âûïîëíåíèÿ: ( -- )
\ Ïðîäîëæèòü âûïîëíåíèå ñ ïîçèöèè, çàäàííîé ðàçðåøåíèåì orig.
HERE BRANCH, >MARK 2
; IMMEDIATE
 
: [ELSE] \ 94 TOOLS EXT
\ Êîìïèëÿöèÿ: Âûïîëíèòü ñåìàíòèêó âûïîëíåíèÿ, äàííóþ íèæå.
\ Âûïîëíåíèå: ( "<spaces>name..." -- )
\ Ïðîïóñòèòü âåäóùèå ïðîáåëû, âûäåëèòü è îòáðîñèòü îãðàíè÷åííûå ïðîáåëàìè
\ ñëîâà èç ðàçáèðàåìîé îáëàñòè, âêëþ÷àÿ âëîæåííûå [IF]...[THEN] è
\ [IF]...[ELSE]...[THEN], äî âûäåëåíèÿ è îòáðàñûâàíèÿ ñëîâà [THEN].
\ Åñëè ðàçáèðàåìàÿ îáëàñòü îïóñòîøàåòñÿ, îíà ñíîâà çàïîëíÿåòñÿ ïî REFILL.
\ [ELSE] - ñëîâî íåìåäëåííîãî èñïîëíåíèÿ.
1
BEGIN
NextWord DUP
IF
2DUP S" [IF]" COMPARE 0= IF 2DROP 1+ ELSE
2DUP S" [ELSE]" COMPARE 0= IF 2DROP 1- DUP IF 1+ THEN ELSE
S" [THEN]" COMPARE 0= IF 1- THEN
THEN THEN
ELSE 2DROP REFILL AND \ SOURCE TYPE
THEN DUP 0=
UNTIL DROP ; IMMEDIATE
 
: [IF] \ 94 TOOLS EXT
\ Êîìïèëÿöèÿ: Âûïîëíèòü ñåìàíòèêó âûïîëíåíèÿ, äàííóþ íèæå.
\ Âûïîëíåíèå: ( flag | flag "<spaces>name..." -- )
\ Åñëè ôëàã "èñòèíà", íè÷åãî íå äåëàòü. Èíà÷å, ïðîïóñòèâ âåäóùèå ïðîáåëû,
\ âûäåëÿòü è îòáðàñûâàòü îãðàíè÷åííûå ïðîáåëàìè ñëîâà èç ðàçáèðàåìîé îáëàñòè,
\ âêëþ÷àÿ âëîæåííûå [IF]...[THEN] è [IF]...[ELSE]...[THEN], äî òåõ ïîð, ïîêà íå
\ áóäåò âûäåëåíî è îòáðîøåíî ñëîâî [ELSE] èëè [THEN].
\ Åñëè ðàçáèðàåìàÿ îáëàñòü îïóñòîøàåòñÿ, îíà ñíîâà çàïîëíÿåòñÿ ïî REFILL.
\ [ELSE] - ñëîâî íåìåäëåííîãî èñïîëíåíèÿ.
0= IF POSTPONE [ELSE] THEN
; IMMEDIATE
 
: [THEN] \ 94 TOOLS EXT
\ Êîìïèëÿöèÿ: Âûïîëíèòü ñåìàíòèêó âûïîëíåíèÿ, äàííóþ íèæå.
\ Âûïîëíåíèå: ( -- )
\ Íè÷åãî íå äåëàòü. [THEN] - ñëîâî íåìåäëåííîãî èñïîëíåíèÿ.
; IMMEDIATE
 
\ Ruvim Pinka additions:
 
: [DEFINED] ( -- f ) \ "name"
NextWord SFIND IF DROP TRUE ELSE 2DROP FALSE THEN
; IMMEDIATE
 
: [UNDEFINED] ( -- f ) \ "name"
POSTPONE [DEFINED] 0=
; IMMEDIATE
 
/programs/develop/SPForth/lib/include
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/lib
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/mbuild.bat
0,0 → 1,0
fasm.exe meforth.ASM
/programs/develop/SPForth/meforth.ASM
0,0 → 1,504
; KolSPForth v12
 
SYSTEM equ EMUL
 
;Memory Map
;
;0
;0x02C7D ;I_END
;0x05430 ;CTOP
 
;0x3F800 ;Data stack
;0x3FA00 ;return stack
;0x3FC00 ;User
;0x3FE00 ;TIB
;0x30000 ;FILE BUFF
;0x40000 (256K)
 
;; Version control
 
VER EQU 1 ;major release version
EXT EQU 0 ;minor extension
 
;; Constants
 
TRUEE EQU -1 ;true flag
 
COMPO EQU 040H ;lexicon compile only bit
IMEDD EQU 080H ;lexicon immediate bit
MASKK EQU 01FH ;lexicon bit mask
 
CELLL EQU 4 ;size of a cell
BASEE EQU 10 ;default radix
VOCSS EQU 8 ;depth of vocabulary stack
 
BKSPP EQU 8 ;back space
LF EQU 10 ;line feed
CRR EQU 13 ;carriage return
ERR EQU 27 ;error escape
TIC EQU 39 ;tick
 
CALLL EQU 0E8H ;CALL opcodes
 
ROWH EQU 13
KEY_DELAY EQU 20
FW_WIDTH equ 500
FW_HEIGHT equ 352
 
 
;; Memory allocation
 
EM EQU 256*1024 ;top of memory
FILE_BS EQU 64*1024 ;file buff size
US EQU 128*CELLL ;user area size in cells
RTS EQU 1024*CELLL ;return stack/TIB size
 
FILE_B EQU EM-FILE_BS ;terminal input buffer (TIB)
TIBB EQU FILE_B-RTS ;terminal input buffer (TIB)
; UPP EQU TIBB-US ;start of user area (UP0)
RPP EQU UPP-RTS ;start of return stack (ESP0)
SPP EQU RPP-RTS ;start of data stack (EBP0)
 
LastNFA = 0
 
LastCFA EQU INIT
 
 
 
macro AHEADER FLAG,ID,F_CFA {
db FLAG
DD F_CFA
DD LastNFA
The_Nfa = $
DB ID,0
LastNFA = The_Nfa
F_CFA:
}
 
macro cfa_AHEADER FLAG,ID,F_CFA {
db FLAG
DD cfa_#F_CFA
DD LastNFA
The_Nfa = $
DB ID,0
LastNFA = The_Nfa
cfa_#F_CFA:
}
 
 
;; Main entry points and COLD start data
 
use32
 
org 0x0
 
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd ORIG ; start of code
dd I_END ; size of image
MEMS: dd EM ; memory for app
dd SPP ; esp
if SYSTEM eq MEOS
dd FINFO.path
else
dd 0
end if
dd 0x0 ; I_Param , I_Icon
 
lang fix ru
include 'MACROS.INC'
include "proc32.inc"
 
align 4
proc strncmp stdcall, s1:dword, s2:dword, n:dword
 
push esi
push edi
mov ecx, [n]
test ecx, ecx ; Max length is zero?
je .done
 
mov esi, [s1] ; esi = string s1
mov edi, [s2] ; edi = string s2
cld
.compare:
cmpsb ; Compare two bytes
jne .done
cmp byte [esi-1], 0 ; End of string?
je .done
dec ecx ; Length limit reached?
jne .compare
.done:
seta al ; al = (s1 > s2)
setb ah ; ah = (s1 < s2)
sub al, ah
movsx eax, al ; eax = (s1 > s2) - (s1 < s2), i.e. -1, 0, 1
pop edi
pop esi
ret
endp
 
align 4
proc GetPr stdcall, exp:dword, sz_name:dword
mov edx, [exp]
.next:
push edx
stdcall strncmp, edx, [sz_name], 16
pop edx
test eax, eax
jz .ok
mov edx, [edx-4]
test edx, edx
jnz .next
mov eax,edx
ret
.ok:
mov eax, [edx-8]
ret
endp
 
AHEADER 0 ,'GETPR',cfa_GETPR
JMP GetPr
 
 
ORIG:
 
MOV EBP,RPP ;initialize RP
CLD ;ESI gets incremented
finit
call draw_window
call calc_lines
XCHG ESP,EBP
CALL amain
BYE: mcall -1
 
ULAST: ; DD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
 
draw_cursor:
 
draw_window:
pusha
mcall 12,1
mov [fRed],ebx
mcall 0, <0,FW_WIDTH>, <0,FW_HEIGHT>, 0x03000000, 0x805080D0, 0x005080D0
mcall 4, <8,8>, 0x10DDEEFF, header, header.size
 
mcall 9,pinfo,-1
mov eax,[pinfo.x_size]
cdq
sub eax,20
mov ebx,6
div ebx
mov [pinfo.x_start],eax
 
mov eax,[pinfo.y_size]
cdq
sub eax,40
mov ebx,ROWH
div ebx
 
mov [pinfo.y_start],eax
call erase_screen
mcall 12, 2
if ~ SYSTEM eq EMUL
mcall 67,-1,-1,FW_WIDTH,FW_HEIGHT
end if
popa
ret
 
lsz header,\
ru,'”®àâ ¤«ï MenuetOS (SPF)',\
en,'EXAMPLE APPLICATION',\
fr,"L'exemplaire programme"
 
erase_screen:
mov ebx,[pinfo.x_size]
add ebx,10 shl 16-20
mov ecx,[pinfo.y_size]
add ecx,30 shl 16-35
mcall 13,,,0;xff
ret
 
 
AHEADER 0,"CC_LINES",cfa_CC_LINES
calc_lines:
cmp dword[UPP+10*4],0
je .ex
pusha
mov ebp,os_work
mov al,0xd
mov edi,screen_buf
; mov esi,[cursor]
; mov byte[esi],'_'
; inc [cursor]
.again:
mov [ebp],edi
mov esi,[cursor]
sub esi,edi
mov ecx,[pinfo.x_start]
; test ecx,ecx
; jnz .no0
; inc ecx
; .no0:
cmp ecx,esi
jbe .ok
mov ecx,esi
.ok:
repne scasb
jecxz .nocrlf
cmp byte[edi],10
jne .nocrlf
inc edi
.nocrlf:
mov ecx,edi
sub ecx,[ebp]
add ebp,8
mov [ebp-4],ecx
cmp edi,[cursor]
jb .again
and dword[ebp],0
; dpd esi
mov eax,[pinfo.y_start]
shl eax,3
sub ebp,eax
cmp ebp,os_work
jae .ok2
mov ebp,os_work
.ok2:
cmp ebp,[last_ebp]
je .ok3
mov [last_ebp],ebp
call erase_screen
.ok3:
mov ebx,10 shl 16 +30
; ud2
.newl:
mcall 4,,0xffffff,[ebp],[ebp+4]
add ebp,8
add ebx,ROWH
cmp dword[ebp],0
jnz .newl
SUB ebx,ROWH
call set_cur
popa
.ex:
ret
 
 
set_cur:
MOV ecx,EBX
shl ecx,16
add ecx,EBX
MOV EAX,[ebp+4-8]
add EAX,2
imul EAX,6
mov EBX,EAX
shl ebx,16
add EBX,EAX
mov [lastcur],ecx
mov [lastcur+4],ebx
ret
 
e_calc_lines:
cmp dword[UPP+10*4],0
je e_.ex
pusha
mov ebp,os_work
mov al,0xd
mov edi,screen_buf
; mov esi,[cursor]
; mov byte[esi],'_'
; inc [cursor]
e_.again:
mov [ebp],edi
mov esi,[cursor]
sub esi,edi
mov ecx,[pinfo.x_start]
; test ecx,ecx
; jnz .no0
; inc ecx
; .no0:
cmp ecx,esi
jbe e_.ok
mov ecx,esi
e_.ok:
repne scasb
jecxz e_.nocrlf
cmp byte[edi],10
jne e_.nocrlf
inc edi
e_.nocrlf:
mov ecx,edi
sub ecx,[ebp]
add ebp,8
mov [ebp-4],ecx
cmp edi,[cursor]
jb e_.again
and dword[ebp],0
; dpd esi
mov eax,[pinfo.y_start]
shl eax,3
sub ebp,eax
cmp ebp,os_work
jae e_.ok2
mov ebp,os_work
e_.ok2:
cmp ebp,[last_ebp]
je e_.ok3
mov [last_ebp],ebp
cmp byte[edi],10
jne e_.ok3
 
call erase_screen
e_.ok3:
mov ebx,10 shl 16+30
; ud2
e_.newl:
; mcall 4,,0xffffff,[ebp],[ebp+4]
add ebp,8
add ebx,ROWH
cmp dword[ebp],0
jnz e_.newl
SUB ebx,ROWH
mcall 4,,0x00ffffff,[ebp-8],[ebp+4-8]
call set_cur
popa
e_.ex:
ret
 
 
AHEADER 0,"?KEY",cfa_queKEY
PUSH EDI
XCHG EBP,ESP
PUSH EAX
POP EBX
mov eax,10
test ebx,ebx
jz QRX0
inc eax
QRX0:
XOR ECX,ECX ;EBX=0 setup for false flag
mcall
cmp eax,1
jne QRX_
call draw_window
call calc_lines
QRX_:
cmp eax,3
je BYE
cmp eax,2
jne QRX3
 
mcall 2
QRX1: MOVZX ECX,AH
QRX2: PUSH ECX ;save character
QRX_TRUE:
MOV ECX,TRUEE ;true flag
QRX3: PUSH ECX
POP eax
XCHG EBP,ESP
POP EDI
ret
 
; ?RX ( -- c T | F )
; Return input character and true, or a false if no input.
 
 
AHEADER 0,"EMIT_N",cfa_EMIT_N
 
PUSH EDI
XCHG EBP,ESP
;char in AL
CMP AL,0FFH ;0FFH is interpreted as input
JNZ TX2 ;do NOT allow input
MOV AL,32 ;change to blank
TX2:
mov ebx,[cursor]
mov [ebx],AL
inc [cursor]
 
POP eax
XCHG EBP,ESP
POP EDI
RET
 
 
;; Basic I/O
 
cfa_AHEADER 0,'CL_CUR',CL_CUR
PUSH EAX
mcall 38,[lastcur+4],[lastcur],0
POP EAX
RET
 
cfa_AHEADER 0,'DR_CUR',DR_CUR
PUSH EAX
mcall 38,[lastcur+4],[lastcur],0x00FF00FF
POP EAX
RET
 
COLOR_ORDER equ MENUETOS
include 'gif_lite.inc'
 
cfa_AHEADER 0,'READ_GIF',READ_GIF ;( gif_ptr, out_ptr -- result )
push esi
push edi
push ebp
mov edi, eax
mov esi,[ebp]
mov eax,os_work
call ReadGIF
pop ebp
pop edi
pop esi
add ebp,4
RET
 
;===============================================================
cursor dd screen_buf
fRed dd 1
last_ebp dd 0
 
include 'amain.asm'
 
FINFO:
.mode dd 0
dd 0
.blk dd 1
.buf dd 0
.work dd os_work
.path:
if SYSTEM eq MEOS
; .path db 0
; .path db '/HD/1/FORTH/AUTORUN.DAT',0
; db '/RD/1/AUTOLOAD.F'
else
db '/RD/1/AUTOLOAD.F'
; db '/RD/1/EXAMPLE.F'
; db '/RD/1/PICTURE.F'
; db '/RD/1/AUTORUN.DAT'
; db '/HD/1/FORTH/AUTORUN.DAT'
end if
db 0
.end_path:
 
 
rb 256-($-.path)
 
 
lastcur dd 0,0
 
I_END:
squote_buf rb 1024
sys_v rd 6
screen_buf:
; sc_end:
rb 4096
pinfo process_information
os_work rb 16*1024
 
CTOP = $ ;next available memory in code dictionary
;=============================================================
/programs/develop/SPForth/meforth_samples/autoload.f
0,0 → 1,41
VARIABLE wd 256 ALLOT
 
: setwd ( uaddr)
COUNT 1+ SWAP 1- SWAP wd SWAP CMOVE ;
 
: _wd
$" /rd/1/" setwd ; _wd
 
: "/ [CHAR] / ;
 
: strcat ( uaddr1 uaddr2 -- uaddr1+uaddr2)
>R DUP COUNT ( ua1 a1 c1)
>R R@ ( ua1 a1 c1)
+ OVER R> R@ SWAP >R ( ua1 ea1 ua1 ua1)
C@ R> + ( ua1 ea1 ua1 u+u2 )
SWAP C! ( ua1 ea1 )
R> COUNT ( ua1 ea1 a2 c2)
>R
SWAP R> CMOVE ;
 
: add/ ( uaddr -- uaddr/)
DUP DUP COUNT SWAP DROP + C@ "/ = IF ELSE $" /" strcat THEN ;
 
: cut/ ( uaddr -- uaddr w/o slash)
COUNT OVER SWAP + 1- ( ua1 lasta1)
DUP C@ "/ = IF 1- THEN .S
BEGIN 2DUP < WHILE 4 . DUP C@ "/ = IF OVER - OVER 1- C! 1- LEAVE ELSE 1- THEN
REPEAT ;
 
: t $" cat" $" dog" strcat COUNT TYPE ;
 
: makepath ( path normalizer: uaddr1 uaddr2 -- uaddr )
DUP 1+ C@ [CHAR] / = IF SWAP DROP ELSE DUP strcat THEN
add/ ;
 
 
: pwd ( print working directory: -- )
CR wd COUNT TYPE ;
 
: cd ( change directory)
wd BL WORD makepath setwd ;
/programs/develop/SPForth/meforth_samples/autorun2.f
0,0 → 1,15
: >asciiz + 0 SWAP C! ;
: >path
finfo @ 20 + 0 finfo @ 8 + ! DUP >R SWAP DUP >R CMOVE R> R> SWAP >asciiz ;
: >param
OVER finfo @ 8 + ! >asciiz ;
: exec
16 finfo @ ! finfo @ 58 sys2 ." started, code=" . CR 5 sys2 DROP ;
S" /RD/1/GRSCREEN" >path 99 exec
S" /RD/1/@RB" >path 30 exec
S" /RD/1/@SS" >path 30 exec
S" /RD/1/@PANEL" >path 30 exec
S" /RD/1/SETUP" >path S" BOOT" >param 30 exec
S" /RD/1/ICON2" >path S" BOOT" >param 10 exec
S" /RD/1/board" >path 25 exec
BYE
/programs/develop/SPForth/meforth_samples/example.f
0,0 → 1,53
DECIMAL
S" /rd/1/menuet.f" INCLUDED
 
: not_emit
emit_proc DUP @ NOT SWAP ! ;
 
new_reg wnd_size
 
CREATE Music $3090 , \ $90 C, $30 C, 0 C,
 
: my_wnd
12 ax 1 bx sysv DROP $805080D0 DUP $02AABBCC 200 50 << 200 DUP << 0
sys6 2 bx sysv 2DROP
$10DDEEFF $" ˆŒ… Žƒ€ŒŒ›" COUNT 8 DUP sys_print
0 $"  ¦¬¨â¥ «î¡ãî ª« ¢¨èã" COUNT 8 30 sys_print
$6688DD 1 5 12 << 200 19 - 12 << 8 sys5 DROP ;
 
: my_wnd_resize
200 dx 50 si 67 ax -1 DUP bx cx sysv DROP ;
 
: my_key
2 sys1 8 RSHIFT DUP 96 = IF not_emit DROP ELSE Music DUP si 1+ C!
55 DUP ax bx sysv DROP THEN ;
 
: my_btn
17 sys1 8 RSHIFT ." Pressed button #" DUP . CR 1 = IF BYE THEN ;
 
CREATE handlers ' my_wnd , ' my_key , ' my_btn ,
 
VARIABLE hnd
 
: msg_loop_console ( subs -- )
CR DUP hnd ! @EXECUTE my_wnd_resize
0 emit_proc !
BEGIN
10 sys1 ?DUP
IF
1-
CELLS hnd @ + @EXECUTE
emit_proc @
IF
WINDOW KEY 96 =
IF
not_emit hnd @ @EXECUTE my_wnd_resize
ELSE
EXIT
THEN
THEN
THEN
AGAIN ;
 
: new_me ( new main loop)
handlers msg_loop_console ;
/programs/develop/SPForth/meforth_samples/locals.f
0,0 → 1,34
( ˆ§  à ­®¢ :
‘⥪ ¤ ­­ëå ª ª ã­¨¢¥àá «ì­®¥ á।á⢮ ¤«ï ¯¥à¥¤ ç¨ ¯ à ¬¥â஢ ¨ १ã«ìâ â®¢
¬¥¦¤ã ä®àâ-á«®¢ ¬¨ ¨¬¥¥â ­¥®á¯®à¨¬ë¥ ¯à¥¨¬ãé¥á⢠. ‚¬¥á⥠á ⥬ ¢­ãâà¨
®¯à¥¤¥«¥­¨ï ®­ ¨á¯®«ì§ã¥âáï ¤«ï ¯à®¬¥¦ãâ®ç­ëå ¢ëç¨á«¥­¨© ¨ à §¬¥é¥­¨ï §­ ç¥­¨©,
ª®â®àë¥ ¢ ­¨å ãç áâ¢ãîâ. â® ¢ë§ë¢ ¥â ®¯à¥¤¥«¥­­ë¥ âà㤭®á⨠¤«ï ¤®áâ㯠 ª
â ª®¬ã «®ª «ì­®¬ã §­ ç¥­¨î, ¯®áª®«ìªã ¥£® ¯®«®¦¥­¨¥ ®â­®á¨â¥«ì­® ¢¥à設ë á⥪ 
¯®áâ®ï­­® ¬¥­ï¥âáï.
„«ï ã¯à®é¥­¨ï à ¡®âë ¦¥« â¥«ì­® § ªà¥¯¨âì §  «®ª «ì­ë¬ ®¡ê¥ªâ ¬¨ ¢­ãâà¨
®¯à¥¤¥«¥­¨ï ­¥ª®â®àë¥ ¯®áâ®ï­­ë¥ ¨¬¥­ , ç¥à¥§ ª®â®àë¥ ¨ ®áãé¥á⢫ïâì ¤®áâ㯠ª
­¨¬.
ˆ¬¥î騩áï ¢ ï§ëª¥ ¬¥å ­¨§¬ ®¯¨á ­¨ï ¯¥à¥¬¥­­ëå ¢ ¤ ­­®¬ á«ãç ¥ ­¥ ¯®¤å®¤¨â,
¯®áª®«ìªã ᮧ¤ ¥â £«®¡ «ì­ë¥ ¨¬¥­ , ⮣¤  ª ª âॡã¥âáï ¨¬¥­®¢ âì «®ª «ì­ë¥
®¡ê¥ªâë, ãç¨âë¢ ï ¯à¨ í⮬ ¢®§¬®¦­®áâì ४ãàᨢ­ëå ¢ë§®¢®¢. ®áâ ¢«¥­­ãî § ¤ çã
à¥è ¥â ¢ª«î祭¨¥ ¢ à ¡®âã ¤®¯®«­¨â¥«ì­®£® á⥪ , ®â«¨ç­®£® ®â á⥪  ¤ ­­ëå.
‹®ª «ì­ë¥ §­ ç¥­¨ï à §¬¥é îâáï ¢ í⮬ á⥪¥ ¯à¨ ¢å®¤¥ ¢ ®¯à¥¤¥«¥­¨¥ ¨ 㡨à îâáï
¨§ ­¥£® ¯à¨ ¢ë室¥.
  ¢á¥ ¢à¥¬ï ¨á¯®«­¥­¨ï ®¯à¥¤¥«¥­¨ï ¨å ¯®«®¦¥­¨¥ ®â­®á¨â¥«ì­® ¢¥à設ë á⥪ 
®áâ ¥âáï ¯®áâ®ï­­ë¬, íâ® ¯®§¢®«ï¥â ®à£ ­¨§®¢ âì ®ç¥­ì ¯à®á⮩ ¤®áâ㯠ª â ª¨¬
§­ ç¥­¨ï¬.
à®á⥩è ï ­ ¤áâனª  ­ ¤ ï§ëª®¬ ”®àâ, ª®â®à ï ¯®§¢®«ï¥â à ¡®â âì á «®ª «ì­ë¬¨
¯¥à¥¬¥­­ë¬¨, ¢ë£«ï¤¨â â ª:)
 
 
100 ALLOT HERE CONSTANT LP0 ( €—€‹Ž ‹ŽŠ.‘’…Š€)
VARIABLE LP ( ’…Š“™€Ÿ ‚…˜ˆ€ ‹ŽŠ€‹œŽƒŽ ‘’…Š€)
: INITLP ( ->) LP0 LP ! ; INITLP
: LOC ( N:‘—…’—ˆŠ->) 1+ CELLS LP @ OVER - DUP LP ! ! ;
: UNLOC ( ->) LP @ @ LP +! ;
: @@ ( N:‘Œ…™->) CREATE , DOES> ( PFA->A) @ CELLS LP @ + @ ;
: !! ( N:‘Œ…™->) CREATE , DOES> ( A,PFA->) @ CELLS LP @ + ! ;
 
1 @@ @1 2 @@ @2 3 @@ @3 4 @@ @4 5 @@ @5 ( ˆ ’.„.)
 
1 !! !1 2 !! !2 3 !! !3 4 !! !4 5 !! !5 ( ˆ ’.„.)
/programs/develop/SPForth/meforth_samples/menuet.f
0,0 → 1,27
\ S" /rd/1/1st.4th" INCLUDED
S" /rd/1/locals.f" INCLUDED
 
\ : sys_wnd ( border, header, workarea, y, x -- )
\ 1 12 sys2 DROP 0 sys6 2 12 sys2 2DROP ;
 
\ : thread ( stack, entry -- )
\ 1 51 sys4 DROP ;
 
: >regs
reg_struc ! ;
 
: new_reg
CREATE 6 CELLS ALLOT LAST @ NAME> 9 + >regs ;
 
: ax reg_struc @ ! ;
: bx reg_struc @ 1 CELLS + ! ;
: cx reg_struc @ 2 CELLS + ! ;
: dx reg_struc @ 3 CELLS + ! ;
: si reg_struc @ 4 CELLS + ! ;
: di reg_struc @ 5 CELLS + ! ;
 
: << ( x,y -- x<<16+y )
SWAP 16 LSHIFT + ;
 
: sys_print ( color, stra, u, x, y -- )
<< >R SWAP ROT R> 4 sys5 DROP ;
/programs/develop/SPForth/meforth_samples/picture.f
0,0 → 1,109
DECIMAL
S" /rd/1/menuet.f" INCLUDED
 
: not_emit
emit_proc DUP @ NOT SWAP ! ;
 
new_reg wnd_size
 
CREATE Music $3090 , \ $90 C, $30 C, 0 C,
 
73 CONSTANT img.width
22 CONSTANT img.height
CREATE raw img.width img.height * 3 * 16 + ALLOT
 
: my_wnd
12 ax 1 bx sysv DROP $805080D0 DUP $02AABBCC 200 150 << 200 DUP << 0
sys6 2 bx sysv 2DROP
$10DDEEFF $" ˆŒ… Žƒ€ŒŒ›" COUNT 8 DUP sys_print
0 $"  ¦¬¨â¥ «î¡ãî ª« ¢¨èã" COUNT 8 30 sys_print
$6688DD 1 5 12 << 200 19 - 12 << 8 sys5 DROP
30 DUP << img.width img.height << raw 12 + 7 sys4 ;
 
: my_wnd_resize
200 dx 50 si 67 ax -1 DUP bx cx sysv DROP ;
 
: my_key
2 sys1 8 RSHIFT DUP 96 = IF not_emit DROP ELSE Music DUP si 1+ C!
55 DUP ax bx sysv DROP THEN ;
 
: my_btn
17 sys1 8 RSHIFT ." Pressed button #" DUP . CR 1 = IF BYE THEN ;
 
CREATE handlers ' my_wnd , ' my_key , ' my_btn ,
 
VARIABLE hnd
 
: msg_loop_console ( subs -- )
CR DUP hnd ! @EXECUTE my_wnd_resize
0 emit_proc !
BEGIN
10 sys1 ?DUP
IF
1-
CELLS hnd @ + @EXECUTE
emit_proc @
IF
WINDOW KEY 96 =
IF
not_emit hnd @ @EXECUTE my_wnd_resize
ELSE
EXIT
THEN
THEN
THEN
AGAIN ;
 
CREATE gif 600 ALLOT
 
 
: new_me ( new main loop)
gif DUP $" /rd/1/Menu.gif" COUNT READ 2DROP
gif raw READ_GIF .
;
 
new_me handlers msg_loop_console WORDS
 
ABORT
 
 
: ENDOF ( orig1 #of -- orig2 #of )
>R ( ïåðåìåñòèòü ñî ñòåêà â ñëó÷àå, åñëè )
( ñòåê ïîòîêà óïðàâëåíèÿ ýòî ñòåê äàííûõ. )
POSTPONE ELSE
R> ( ìû äîëæíû òåïåðü âåðíóòü ñ÷åò÷èê íàçàä )
; IMMEDIATE
 
: ENDCASE ( orig1..orign #of -- )
POSTPONE DROP ( óäàëèòü case ïàðàìåòð )
0 ?DO
POSTPONE THEN
LOOP
; IMMEDIATE
 
[THEN]
 
: SS2 ( N ---> S:ÑÓÌÌÀ ÊÂÀÄÐÀÒÎÂ ÎÒ 1 ÄÎ N)
0 SWAP ( 0,N S[0]=0 )
1+ 1 ( S[0],N+1,1 )
DO I ( S[I-1],I )
DUP * + ( S[I] S[I]=S[I-1]+I*I)
LOOP ; ( S[N] )
 
 
5 SS2 . CR
: test 10 0 ?DO I . LEAVE LOOP 4 ;
test
 
: priem ( N:ÍÎÌÅÐ ÄÍß->) CASE
3 OF ." nepriemn" ENDOF
 
1 OF ." priemn" ENDOF
 
6 OF ." holiday" ENDOF
 
CR . ." - day #?" ABORT
( ENDCASE ) ." day" ;
 
/programs/develop/SPForth/meforth_samples
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/proc32.inc
0,0 → 1,268
 
; Macroinstructions for defining and calling procedures
 
macro stdcall proc,[arg] ; directly call STDCALL procedure
{ common
if ~ arg eq
reverse
pushd arg
common
end if
call proc }
 
macro invoke proc,[arg] ; indirectly call STDCALL procedure
{ common
if ~ arg eq
reverse
pushd arg
common
end if
call [proc] }
 
macro ccall proc,[arg] ; directly call CDECL procedure
{ common
size@ccall = 0
if ~ arg eq
reverse
pushd arg
size@ccall = size@ccall+4
common
end if
call proc
if size@ccall
add esp,size@ccall
end if }
 
macro cinvoke proc,[arg] ; indirectly call CDECL procedure
{ common
size@ccall = 0
if ~ arg eq
reverse
pushd arg
size@ccall = size@ccall+4
common
end if
call [proc]
if size@ccall
add esp,size@ccall
end if }
 
macro proc [args] ; define procedure
{ common
match name params, args>
\{ define@proc name,<params \} }
 
prologue@proc equ prologuedef
 
macro prologuedef procname,flag,parmbytes,localbytes,reglist
{ if parmbytes | localbytes
push ebp
mov ebp,esp
if localbytes
sub esp,localbytes
end if
end if
irps reg, reglist \{ push reg \} }
 
epilogue@proc equ epiloguedef
 
macro epiloguedef procname,flag,parmbytes,localbytes,reglist
{ irps reg, reglist \{ reverse pop reg \}
if parmbytes | localbytes
leave
end if
if (flag and 10000b) | (parmbytes=0)
retn
else
retn parmbytes
end if }
 
macro define@proc name,statement
{ local params,flag,regs,parmbytes,localbytes,current
if used name
name:
match =stdcall args, statement \{ params equ args
flag = 11b \}
match =stdcall, statement \{ params equ
flag = 11b \}
match =c args, statement \{ params equ args
flag = 10001b \}
match =c, statement \{ params equ
flag = 10001b \}
match =params, params \{ params equ statement
flag = 0 \}
virtual at ebp+8
match =uses reglist=,args, params \{ regs equ reglist
params equ args \}
match =regs =uses reglist, regs params \{ regs equ reglist
params equ \}
match =regs, regs \{ regs equ \}
match =,args, params \{ defargs@proc args \}
match =args@proc args, args@proc params \{ defargs@proc args \}
parmbytes = $ - (ebp+8)
end virtual
name # % = parmbytes/4
all@vars equ
current = 0
match prologue:reglist, prologue@proc:<regs> \{ prologue name,flag,parmbytes,localbytes,reglist \}
macro locals
\{ virtual at ebp-localbytes+current
macro label . \\{ deflocal@proc .,:, \\}
struc db [val] \\{ \common deflocal@proc .,db,val \\}
struc dw [val] \\{ \common deflocal@proc .,dw,val \\}
struc dp [val] \\{ \common deflocal@proc .,dp,val \\}
struc dd [val] \\{ \common deflocal@proc .,dd,val \\}
struc dt [val] \\{ \common deflocal@proc .,dt,val \\}
struc dq [val] \\{ \common deflocal@proc .,dq,val \\}
struc rb cnt \\{ deflocal@proc .,rb cnt, \\}
struc rw cnt \\{ deflocal@proc .,rw cnt, \\}
struc rp cnt \\{ deflocal@proc .,rp cnt, \\}
struc rd cnt \\{ deflocal@proc .,rd cnt, \\}
struc rt cnt \\{ deflocal@proc .,rt cnt, \\}
struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \}
macro endl
\{ purge label
restruc db,dw,dp,dd,dt,dq
restruc rb,rw,rp,rd,rt,rq
restruc byte,word,dword,pword,tword,qword
current = $-(ebp-localbytes)
end virtual \}
macro ret operand
\{ match any, operand \\{ retn operand \\}
match , operand \\{ match epilogue:reglist, epilogue@proc:<regs>
\\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \}
macro finish@proc \{ localbytes = (((current-1) shr 2)+1) shl 2
end if \} }
 
macro defargs@proc [arg]
{ common
if ~ arg eq
forward
local ..arg,current@arg
match argname:type, arg
\{ current@arg equ argname
label ..arg type
argname equ ..arg
if dqword eq type
dd ?,?,?,?
else if tbyte eq type
dd ?,?,?
else if qword eq type | pword eq type
dd ?,?
else
dd ?
end if \}
match =current@arg,current@arg
\{ current@arg equ arg
arg equ ..arg
..arg dd ? \}
common
args@proc equ current@arg
forward
restore current@arg
common
end if }
 
macro deflocal@proc name,def,[val]
{ common
match vars, all@vars \{ all@vars equ all@vars, \}
all@vars equ all@vars name
forward
local ..var,..tmp
..var def val
match =?, val \{ ..tmp equ \}
match any =dup (=?), val \{ ..tmp equ \}
match tmp : value, ..tmp : val
\{ tmp: end virtual
initlocal@proc ..var,def value
virtual at tmp\}
common
match first rest, ..var, \{ name equ first \} }
 
macro initlocal@proc name,def
{ virtual at name
def
size@initlocal = $ - name
end virtual
position@initlocal = 0
while size@initlocal > position@initlocal
virtual at name
def
if size@initlocal - position@initlocal < 2
current@initlocal = 1
load byte@initlocal byte from name+position@initlocal
else if size@initlocal - position@initlocal < 4
current@initlocal = 2
load word@initlocal word from name+position@initlocal
else
current@initlocal = 4
load dword@initlocal dword from name+position@initlocal
end if
end virtual
if current@initlocal = 1
mov byte [name+position@initlocal],byte@initlocal
else if current@initlocal = 2
mov word [name+position@initlocal],word@initlocal
else
mov dword [name+position@initlocal],dword@initlocal
end if
position@initlocal = position@initlocal + current@initlocal
end while }
 
macro endp
{ purge ret,locals,endl
finish@proc
purge finish@proc
restore regs@proc
match all,args@proc \{ restore all \}
restore args@proc
match all,all@vars \{ restore all \} }
 
macro local [var]
{ common
locals
forward done@local equ
match varname[count]:vartype, var
\{ match =BYTE, vartype \\{ varname rb count
restore done@local \\}
match =WORD, vartype \\{ varname rw count
restore done@local \\}
match =DWORD, vartype \\{ varname rd count
restore done@local \\}
match =PWORD, vartype \\{ varname rp count
restore done@local \\}
match =QWORD, vartype \\{ varname rq count
restore done@local \\}
match =TBYTE, vartype \\{ varname rt count
restore done@local \\}
match =DQWORD, vartype \\{ label varname dqword
rq count+count
restore done@local \\}
match , done@local \\{ virtual
varname vartype
end virtual
rb count*sizeof.\#vartype
restore done@local \\} \}
match :varname:vartype, done@local:var
\{ match =BYTE, vartype \\{ varname db ?
restore done@local \\}
match =WORD, vartype \\{ varname dw ?
restore done@local \\}
match =DWORD, vartype \\{ varname dd ?
restore done@local \\}
match =PWORD, vartype \\{ varname dp ?
restore done@local \\}
match =QWORD, vartype \\{ varname dq ?
restore done@local \\}
match =TBYTE, vartype \\{ varname dt ?
restore done@local \\}
match =DQWORD, vartype \\{ label varname dqword
dq ?,?
restore done@local \\}
match , done@local \\{ varname vartype
restore done@local \\} \}
match ,done@local
\{ var
restore done@local \}
common
endl }
/programs/develop/SPForth/src/KOL/spf_kol_con_io.f
0,0 → 1,91
( Š®­á®«ì­ë© ¢¢®¤-¢ë¢®¤.
)
: NMNM 0 IF THEN ;
: ACCEPT0 ( c-addr +n1 -- +n2 ) \ 94
\ ‚¢¥á⨠áâப㠬 ªá¨¬ «ì­®© ¤«¨­ë ¤® +n1 ᨬ¢®«®¢.
\ ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ +n1 0 ¨«¨ ¡®«ìè¥ 32767.
\ Žâ®¡à ¦ âì ᨬ¢®«ë ¯® ¬¥à¥ ¢¢®¤ .
\ ‚¢®¤ ¯à¥à뢠¥âáï, ª®£¤  ¯®«ã祭 ᨬ¢®« "ª®­¥æ áâப¨".
\ ¨ç¥£® ­¥ ¤®¡ ¢«ï¥âáï ¢ áâபã.
\ +n2 - ¤«¨­  áâப¨, § ¯¨á ­­®© ¯®  ¤à¥áã c-addr.
OVER + 1- OVER \ SA EA A
NMNM
BEGIN KEY \ SA EA A C
\ ." {" DUP H. ." }"
DUP 10 = OVER 13 = OR 0=
WHILE
DUP 0x1B = IF DROP DUP C@ EMIT ELSE
DUP 8 = IF EMIT BL EMIT 8 EMIT
2- >R OVER 1- R> UMAX ELSE
DUP 9 = IF DROP DUP 8 BLANK
>R OVER R> \ SA EA SA A
SWAP OVER - \ SA EA SA A-SA
8 / 1+ 8 * + ELSE DUP EMIT OVER C!
THEN THEN
THEN 1+ OVER UMIN \ SA EA A
REPEAT \ HEX CR DEPTH .SN
\ SA EA A C
DROP NIP - NEGATE ;
 
VECT ACCEPT
 
' ACCEPT0 TO ACCEPT
 
: TYPE_M ( c-addr1 u --- )
\ Output the string starting at c-addr and length u to the terminal.
OVER + SWAP BEGIN 2DUP - WHILE DUP C@ EMIT_N CHAR+ REPEAT
CC_LINES
2DROP
 
;
 
: _TYPE ( c-addr1 u --- )
\ Output the string starting at c-addr and length u to the terminal.
2DUP SCR_BUF AT-XY? 80 * + + SWAP CMOVE
SCR_TYPE
;
 
\ : ZTYPE ( ADDR -- )
\ DUP >R LZTYPE DROP RDROP ;
 
: _CR ( -- ) \ 94
\ ¥à¥¢®¤ áâப¨.
13 EMIT
;
 
VECT CR ' _CR TO CR
 
: _EMIT ( x -- ) \ 94
\ …᫨ x - ¨§®¡à ¦ ¥¬ë© ᨬ¢®«, ¢ë¢¥á⨠¥£® ­  ¤¨á¯«¥©.
\ DUP SCR_BUF AT-XY? 80 * + + C!
DUP 0xD = IF DROP SCR_CR EXIT THEN
DUP 0x8 = IF DROP 0x00800000
&AT-XY W@ 0xD * 0x15 + 16 LSHIFT 0xB OR
&AT-XY 2+ W@ 0x6 * 16 LSHIFT 6 OR
13 SYS4 DROP
AT-XY? >R 1- R> AT-XY
EXIT THEN
>R RP@ 1 _TYPE RDROP
;
 
 
: SWITCH_CHAR ( c1 -- c2 )
DUP [CHAR] a [CHAR] z 1+ WITHIN
OVER [CHAR] A [CHAR] Z 1+ WITHIN OR
IF 32 XOR THEN
;
 
 
: KEY_M DR_CUR BEGIN 0 ?KEY UNTIL CL_CUR SWITCH_CHAR ;
 
: _KEY
CORSOR_DROW
BEGIN KEY? UNTIL &KEY C@ &KEY 0! SWITCH_CHAR
;
 
: PAGE
draw_window
SCR_BUF SCR_WIDTH SCR_HEIGHT * BLANK
0 0 AT-XY
DRAW_LINS
;
/programs/develop/SPForth/src/KOL/spf_kol_const.f
0,0 → 1,21
( Windows-ª®­áâ ­âë, ­¥®¡å®¤¨¬ë¥ ¯à¨ ¢/¢.
)
 
 
0x80000000 CONSTANT R/O ( -- fam ) \ 94 FILE
\ fam - ®¯à¥¤¥«¥­­®¥ ॠ«¨§ æ¨¥© §­ ç¥­¨¥ ¤«ï ¢ë¡®à  ¬¥â®¤  ¤®áâ㯠
\ ª ä ©«ã "⮫쪮 ¤«ï ç⥭¨ï"
 
0x40000000 CONSTANT W/O ( -- fam ) \ 94 FILE
\ fam - ®¯à¥¤¥«¥­­®¥ ॠ«¨§ æ¨¥© §­ ç¥­¨¥ ¤«ï ¢ë¡®à  ¬¥â®¤  ¤®áâ㯠
\ ª ä ©«ã "⮫쪮 ¤«ï § ¯¨á¨"
 
 
0xC0000000 CONSTANT R/W ( -- fam ) \ 94 FILE
\ fam - ®¯à¥¤¥«¥­­®¥ ॠ«¨§ æ¨¥© §­ ç¥­¨¥ ¤«ï ¢ë¡®à  ¬¥â®¤  ¤®áâ㯠
\ ª ä ©«ã "ç⥭¨¥/§ ¯¨áì"
 
DECIMAL
 
 
\ 7 CONSTANT ZZZ
/programs/develop/SPForth/src/KOL/spf_kol_io.f
0,0 → 1,139
( ” ©«®¢ë© ¢¢®¤-¢ë¢®¤.
)
 
CREATE LT 0xD C, 0xA C, 0xD C, 0xA C, \ line terminator
CREATE LTL 2 , \ line terminator length
 
 
: DOS-LINES ( -- )
0xA0D LT ! 2 LTL !
;
: UNIX-LINES ( -- )
0xA0A LT ! 1 LTL !
;
 
 
: READ-FILE ( c-addr u1 fileid -- u2 ior ) \ 94 FILE
\ à®ç¥áâì u1 ᨬ¢®«®¢ ¢ c-addr ¨§ ⥪ã饩 ¯®§¨æ¨¨ ä ©« ,
\ ¨¤¥­â¨ä¨æ¨à㥬®£® fileid.
\ …᫨ u1 ᨬ¢®«®¢ ¯à®ç¨â ­® ¡¥§ ¨áª«î祭¨©, ior ­®«ì ¨ u2 à ¢¥­ u1.
\ …᫨ ª®­¥æ ä ©«  ¤®á⨣­ãâ ¤® ¯à®ç⥭¨ï u1 ᨬ¢®«®¢, ior ­®«ì
\ ¨ u2 - ª®«¨ç¥á⢮ ॠ«ì­® ¯à®ç¨â ­­ëå ᨬ¢®«®¢.
\ …᫨ ®¯¥à æ¨ï ¯à®¨§¢®¤¨âáï ª®£¤  §­ ç¥­¨¥, ¢®§¢à é ¥¬®¥
\ FILE-POSITION à ¢­® §­ ç¥­¨î, ¢®§¢à é ¥¬®¬ã FILE-SIZE ¤«ï ä ©« 
\ ¨¤¥­â¨ä¨æ¨à㥬®£® fileid, ior ¨ u2 ­ã«¨.
\ …᫨ ¢®§­¨ª«  ¨áª«îç¨â¥«ì­ ï á¨âã æ¨ï, â® ior - ®¯à¥¤¥«¥­­ë© ॠ«¨§ æ¨¥©
\ ª®¤ १ã«ìâ â  ¢¢®¤ /¢ë¢®¤ , ¨ u2 - ª®«¨ç¥á⢮ ­®à¬ «ì­® ¯¥à¥¤ ­­ëå ¢
\ c-addr ᨬ¢®«®¢.
\ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ®¯¥à æ¨ï ¢ë¯®«­ï¥âáï, ª®£¤ 
\ §­ ç¥­¨¥, ¢®§¢à é ¥¬®¥ FILE-POSITION ¡®«ìè¥ ç¥¬ §­ ç¥­¨¥, ¢®§¢à é ¥¬®¥
\ FILE-SIZE ¤«ï ä ©« , ¨¤¥­â¨ä¨æ¨à㥬®£® fileid, ¨«¨ âॡ㥬 ï ®¯¥à æ¨ï
\ ¯ëâ ¥âáï ¯à®ç¥áâì ­¥§ ¯¨á ­­ãî ç áâì ä ©« .
\ ®á«¥ § ¢¥à襭¨ï ®¯¥à æ¨¨ FILE-POSITION ¢®§¢à â¨â á«¥¤ãîéãî ¯®§¨æ¨î
\ ¢ ä ©«¥ ¯®á«¥ ¯®á«¥¤­¥£® ¯à®ç¨â ­­®£® ᨬ¢®« .
DUP >R .CODE 0!
R@ .SIZE !
R@ .DATA !
R@ 70 SYS2
EBX@ SWAP
DUP 6 = IF DROP 0 THEN
DUP 0=
IF R@ .FIRST D@
R@ .SIZE @ 0 D+
R@ .FIRST D!
THEN
RDROP
;
 
22 CONSTANT MAX_OPEN_FILES
 
CREATE FILE_STR_BUF FILE_STR 1+ MAX_OPEN_FILES * ALLOT
 
: FALLOC ( -- 0|fid )
FILE_STR_BUF FILE_STR MAX_OPEN_FILES * BOUNDS
BEGIN DUP .NAME @ 0=
IF NIP EXIT THEN
FILE_STR + 2DUP U<
UNTIL 2DROP 0
;
 
: OPEN-FILE ( c-addr u fam -- fileid ior )
\ Žâªàëâì ä ©« á ¨¬¥­¥¬, § ¤ ­­ë¬ áâப®© c-addr u, á ¬¥â®¤®¬ ¤®áâ㯠 fam.
\ ‘¬ëá« §­ ç¥­¨ï fam ®¯à¥¤¥«¥­ ॠ«¨§ æ¨¥©.
\ …᫨ ä ©« ãᯥ譮 ®âªàëâ, ior ­®«ì, fileid ¥£® ¨¤¥­â¨ä¨ª â®à, ¨ ä ©«
\ ¯®§¨æ¨®­¨à®¢ ­ ­  ­ ç «®.
\ ˆ­ ç¥ ior - ®¯à¥¤¥«¥­­ë© ॠ«¨§ æ¨¥© ª®¤ १ã«ìâ â  ¢¢®¤ /¢ë¢®¤ ,
\ ¨ fileid ­¥®¯à¥¤¥«¥­.
DROP
\ FILE_STR
FALLOC DUP
IF
>R
R@ FILE_STR ERASE
R@ .NAME SWAP MOVE
R> 0 EXIT
THEN -1
;
 
: CLOSE-FILE ( fileid -- ior ) \ 94 FILE
\ ‡ ªàëâì ä ©«, § ¤ ­­ë© fileid.
.NAME 0! 0
;
 
 
USER _fp1
USER _fp2
USER _addr
 
 
: READ-LINE ( c-addr u1 fileid -- u2 flag ior ) \ 94 FILE
\ à®ç¥áâì á«¥¤ãîéãî áâப㠨§ ä ©« , § ¤ ­­®£® fileid, ¢ ¯ ¬ïâì
\ ¯®  ¤à¥áã c-addr. —¨â ¥âáï ­¥ ¡®«ìè¥ u1 ᨬ¢®«®¢. „® ¤¢ãå
\ ®¯à¥¤¥«¥­­ëå ॠ«¨§ æ¨¥© ᨬ¢®«®¢ "ª®­¥æ áâப¨" ¬®£ãâ ¡ëâì
\ ¯à®ç¨â ­ë ¢ ¯ ¬ïâì §  ª®­æ®¬ áâப¨, ­® ­¥ ¢ª«îç¥­ë ¢ áç¥â稪 u2.
\ ãä¥à áâப¨ c-addr ¤®«¦¥­ ¨¬¥âì à §¬¥à ª ª ¬¨­¨¬ã¬ u1+2 ᨬ¢®« .
\ …᫨ ®¯¥à æ¨ï ãᯥ譠, flag "¨á⨭ " ¨ ior ­®«ì. …᫨ ª®­¥æ áâப¨
\ ¯®«ã祭 ¤® ⮣® ª ª ¯à®ç¨â ­ë u1 ᨬ¢®«®¢, â® u2 - ç¨á«® ॠ«ì­®
\ ¯à®ç¨â ­­ëå ᨬ¢®«®¢ (0<=u2<=u1), ­¥ áç¨â ï ᨬ¢®«®¢ "ª®­¥æ áâப¨".
\ Š®£¤  u1=u2 ª®­¥æ áâப¨ 㦥 ¯®«ã祭.
\ …᫨ ®¯¥à æ¨ï ¯à®¨§¢®¤¨âáï, ª®£¤  §­ ç¥­¨¥, ¢®§¢à é ¥¬®¥
\ FILE-POSITION à ¢­® §­ ç¥­¨î, ¢®§¢à é ¥¬®¬ã FILE-SIZE ¤«ï ä ©« ,
\ ¨¤¥­â¨ä¨æ¨à㥬®£® fileid, flag "«®¦ì", ior ­®«ì, ¨ u2 ­®«ì.
\ …᫨ ior ­¥ ­®«ì, â® ¯à®¨§®è«  ¨áª«îç¨â¥«ì­ ï á¨âã æ¨ï ¨ ior -
\ ®¯à¥¤¥«¥­­ë© ॠ«¨§ æ¨¥© ª®¤ १ã«ìâ â  ¢¢®¤ -¢ë¢®¤ .
\ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ®¯¥à æ¨ï ¢ë¯®«­ï¥âáï, ª®£¤ 
\ §­ ç¥­¨¥, ¢®§¢à é ¥¬®¥ FILE-POSITION ¡®«ìè¥ ç¥¬ §­ ç¥­¨¥, ¢®§¢à é ¥¬®¥
\ FILE-SIZE ¤«ï ä ©« , ¨¤¥­â¨ä¨æ¨à㥬®£® fileid, ¨«¨ âॡ㥬 ï ®¯¥à æ¨ï
\ ¯ëâ ¥âáï ¯à®ç¥áâì ­¥§ ¯¨á ­­ãî ç áâì ä ©« .
\ ®á«¥ § ¢¥à襭¨ï ®¯¥à æ¨¨ FILE-POSITION ¢®§¢à â¨â á«¥¤ãîéãî ¯®§¨æ¨î
\ ¢ ä ©«¥ ¯®á«¥ ¯®á«¥¤­¥£® ¯à®ç¨â ­­®£® ᨬ¢®« .
DUP >R
FILE-POSITION IF 2DROP 0 0 THEN _fp1 ! _fp2 !
1+
OVER _addr !
 
R@ READ-FILE ?DUP IF NIP RDROP 0 0 ROT EXIT THEN
 
DUP >R 0= IF RDROP RDROP 0 0 0 EXIT THEN \ ¡ë«¨ ¢ ª®­æ¥ ä ©« 
_addr @ R@ LT 1+ 1 SEARCH
IF \ ­ ©¤¥­ à §¤¥«¨â¥«ì áâப
DROP _addr @ -
DUP 1+ S>D _fp2 @ _fp1 @ D+ RDROP R> REPOSITION-FILE DROP
DUP _addr @ + 1- C@ 0xD = IF 1- THEN
ELSE \ ­¥ ­ ©¤¥­ à §¤¥«¨â¥«ì áâப
2DROP
R> RDROP \ ¥á«¨ áâப  ¯à®ç¨â ­  ­¥ ¯®«­®áâìî - ¡ã¤¥â ࠧ१ ­ 
THEN
TRUE 0
;
 
: FILE-POSITION ( fileid -- ud ior ) \ 94 FILE
\ ud - ⥪ãé ï ¯®§¨æ¨ï ¢ ä ©«¥, ¨¤¥­â¨ä¨æ¨à㥬®¬ fileid.
.FIRST D@ 0
;
 
: REPOSITION-FILE ( ud fileid -- ior ) \ 94 FILE
\ ¥à¥¯®§¨æ¨®­¨à®¢ âì ä ©«, ¨¤¥­â¨ä¨æ¨àã¥¬ë© fileid, ­  ud.
.FIRST D! 0
;
 
/programs/develop/SPForth/src/KOL/spf_kol_memory.f
0,0 → 1,66
( “¯à ¢«¥­¨¥ ¯ ¬ïâìî.
Windows-§ ¢¨á¨¬ë¥ á«®¢ .
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
¥¢¨§¨ï - ᥭâï¡àì 1999
)
\ 94 MEMORY
 
USER THREAD-HEAP \ åí­¤« 娯  ⥪ã饣® ¯®â®ª 
 
\ VARIABLE USER-OFFS \ ᬥ饭¨¥ ¢ ®¡« á⨠¤ ­­ëå ¯®â®ª ,
\ £¤¥ ᮧ¤ îâáï ­®¢ë¥ ¯¥à¥¬¥­­ë¥
: ERR
\ IF 0 ELSE DUP GetLastError THEN
;
 
: USER-ALLOT ( n -- )
USER-OFFS +!
 
\ ¢ë஢­ï¥¬ ¢ USER-CREATE ~day
\ USER-OFFS @ + \ á ­ ç «  ¯à¨¡ ¢«ï¥¬
\ CELL 1- + [ CELL NEGATE ] LITERAL AND \ ¯®â®¬ ¢ëà ¢­¨¢ ¥¬
\ USER-OFFS !
;
 
: USER-HERE ( -- n )
USER-OFFS @
;
 
: ALLOCATE ( u -- a-addr ior ) \ 94 MEMORY
\  á¯à¥¤¥«¨âì u ¡ ©â ­¥¯à¥à뢭®£® ¯à®áâà ­á⢠ ¤ ­­ëå. “ª § â¥«ì ¯à®áâà ­á⢠
\ ¤ ­­ëå ­¥ ¨§¬¥­ï¥âáï í⮩ ®¯¥à æ¨¥©. ¥à¢®­ ç «ì­®¥ ᮤ¥à¦¨¬®¥ ¢ë¤¥«¥­­®£®
\ ãç á⪠ ¯ ¬ï⨠­¥®¯à¥¤¥«¥­®.
\ …᫨ à á¯à¥¤¥«¥­¨¥ ãᯥ譮, a-addr - ¢ë஢­¥­­ë©  ¤à¥á ­ ç «  à á¯à¥¤¥«¥­­®©
\ ®¡« á⨠¨ ior ­®«ì.
\ …᫨ ®¯¥à æ¨ï ­¥ ¯à®è« , a-addr ­¥ ¯à¥¤áâ ¢«ï¥â ¯à ¢¨«ì­ë©  ¤à¥á ¨ ior -
\ § ¢¨áï騩 ®â ॠ«¨§ æ¨¨ ª®¤ ¢¢®¤ -¢ë¢®¤ .
5 68 SYS3 0 ;
 
: FREE ( a-addr -- ior ) \ 94 MEMORY
\ ‚¥à­ãâì ­¥¯à¥à뢭ãî ®¡« áâì ¯à®áâà ­á⢠ ¤ ­­ëå, ¨­¤¨æ¨à㥬ãî a-addr, á¨á⥬¥
\ ¤«ï ¤ «ì­¥©è¥£® à á¯à¥¤¥«¥­¨ï. a-addr ¤®«¦¥­ ¨­¤¨æ¨à®¢ âì ®¡« áâì
\ ¯à®áâà ­á⢠ ¤ ­­ëå, ª®â®à ï à ­¥¥ ¡ë«  ¯®«ã祭  ¯® ALLOCATE ¨«¨ RESIZE.
\ “ª § â¥«ì ¯à®áâà ­á⢠ ¤ ­­ëå ­¥ ¨§¬¥­ï¥âáï ¤ ­­®© ®¯¥à æ¨¥©.
\ …᫨ ®¯¥à æ¨ï ãᯥ譠, ior ­®«ì. …᫨ ®¯¥à æ¨ï ­¥ ¯à®è« , ior - § ¢¨áï騩 ®â
\ ॠ«¨§ æ¨¨ ª®¤ ¢¢®¤ -¢ë¢®¤ .
5 68 SYS3 DROP 0 ;
 
: RESIZE ( a-addr1 u -- a-addr2 ior ) \ 94 MEMORY
\ ˆ§¬¥­¨âì à á¯à¥¤¥«¥­¨¥ ­¥¯à¥à뢭®£® ¯à®áâà ­á⢠ ¤ ­­ëå, ­ ç¨­ î饣®áï á
\  ¤à¥á  a-addr1, à ­¥¥ à á¯à¥¤¥«¥­­®£® ¯® ALLOCATE ¨«¨ RESIZE, ­  u ¡ ©â.
\ u ¬®¦¥â ¡ëâì ¡®«ìè¥ ¨«¨ ¬¥­ìè¥, 祬 ⥪ã騩 à §¬¥à ®¡« áâ¨.
\ “ª § â¥«ì ¯à®áâà ­á⢠ ¤ ­­ëå ­¥ ¨§¬¥­ï¥âáï ¤ ­­®© ®¯¥à æ¨¥©.
\ …᫨ ®¯¥à æ¨ï ãᯥ譠, a-addr2 - ¢ë஢­¥­­ë©  ¤à¥á ­ ç «  u ¡ ©â
\ à á¯à¥¤¥«¥­­®© ¯ ¬ï⨠¨ ior ­®«ì. a-addr2 ¬®¦¥â, ­® ­¥ ¤®«¦¥­, ¡ëâì ⥬ ¦¥
\ á ¬ë¬, çâ® ¨ a-addr1. …᫨ ®­¨ ­¥®¤¨­ ª®¢ë, §­ ç¥­¨ï, ᮤ¥à¦ é¨¥áï ¢ ®¡« áâ¨
\ a-addr1, ª®¯¨àãîâáï ¢ a-addr2 ¢ ª®«¨ç¥á⢥ ¬¨­¨¬ «ì­®£® ¨§ à §¬¥à®¢ íâ¨å
\ ¤¢ãå ®¡« á⥩. …᫨ ®­¨ ®¤¨­ ª®¢ë, §­ ç¥­¨ï, ᮤ¥à¦ é¨¥áï ¢ ®¡« áâ¨,
\ á®åà ­ïîâáï ¤® ¬¨­¨¬ «ì­®£® ¨§ u ¨«¨ ¯¥à¢®­ ç «ì­®£® à §¬¥à . …᫨ a-addr2 ­¥
\ â®â ¦¥, çâ® ¨ a-addr1, ®¡« áâì ¯ ¬ï⨠¯® a-addr1 ¢®§¢à é ¥âáï á¨á⥬¥
\ ᮣ« á­® ®¯¥à æ¨¨ FREE.
\ …᫨ ®¯¥à æ¨ï ­¥ ¯à®è« , a-addr2 à ¢¥­ a-addr1, ®¡« áâì ¯ ¬ï⨠a-addr1 ­¥
\ ¨§¬¥­ï¥âáï, ¨ ior - § ¢¨áï騩 ®â ॠ«¨§ æ¨¨ ª®¤ ¢¢®¤ -¢ë¢®¤ .
THROW ABORT" RESIZE is't in system"
;
 
 
/programs/develop/SPForth/src/KOL/spf_kol_module.f
0,0 → 1,40
 
: is_path_delimiter ( c -- flag )
DUP [CHAR] \ = SWAP [CHAR] / = OR
;
 
: CUT-PATH ( a u -- a u1 )
\ èç ñòðîêè "path\name" âûäåëèòü ñòðîêó "path\"
OVER +
BEGIN 2DUP <> WHILE DUP C@ is_path_delimiter 0= WHILE 1- REPEAT 1+ THEN
\ DUP 0! \ ~ruv (to anfilat): íå äÎëæíî òóò çàòèðàòü ïîäàííûé áóôåð!
OVER -
;
 
: ModuleName ( -- addr u )
ABORT
;
 
: ModuleDirName ( -- addr u )
ModuleName CUT-PATH
;
 
: +ModuleDirName ( addr u -- addr2 u2 )
2>R
ModuleDirName 2DUP +
2R> DUP >R ROT SWAP 1+ MOVE
R> +
;
 
: +LibraryDirName ( addr u -- addr2 u2 )
\ Äîáàâèòü addr u ê ïîëíûé_ïóòü_ïðèëîæåíèÿ+devel\
2>R
ModuleDirName 2DUP +
S" devel\" ROT SWAP MOVE
6 + 2DUP +
2R> DUP >R ROT SWAP 1+ MOVE
R> +
;
: SOURCE-NAME ( -- a u )
CURFILE @ DUP IF ASCIIZ> ELSE 0 THEN
;
/programs/develop/SPForth/src/KOL/spf_kol_module.f_L
0,0 → 1,159
ZZ=D4
: is_path_delimiter ( c -- flag )
 
5A380F 30 38 5A 00 00 11 69 73 5F 70 61 74 68 5F 64 65 08Z...is_path_de
5A381F 6C 69 6D 69 74 65 72 75 37 5A 00 00 00 00 00 00 limiteru7Z......
5A382F 00 .
 
DUP [CHAR] \ = SWAP [CHAR] / = OR
 
5A3830 89 45 FC 89 45 F8 B8 5C 00 00 00 33 45 F8 83 E8 ‰Eü‰Eø¸\...3Eøƒè
5A3840 01 1B C0 8B 55 FC 89 45 FC 89 55 F8 B8 2F 00 00 ..À‹Uü‰Eü‰Uø¸/..
5A3850 00 33 45 F8 83 E8 01 1B C0 0B 45 FC .3Eøƒè..À.Eü
 
;
 
5A385C C3 Ã
 
 
: CUT-PATH ( a u -- a u1 )
 
5A385D 70 38 5A 00 00 08 43 55 54 2D 50 41 54 48 14 38 p8Z...CUT-PATH.8
5A386D 5A 00 00 Z..
 
\ èç ñòðîêè "path\name" âûäåëèòü ñòðîêó "path\"
OVER +
 
5A3870 89 45 FC 8B 45 00 03 45 FC ‰Eü‹E..Eü
 
BEGIN 2DUP <> WHILE DUP C@ is_path_delimiter 0= WHILE 1- REPEAT 1+ THEN
 
5A3879 90 90 90 8B 55 00 89 45 FC 89 55 F8 33 45 F8 8B ‹U.‰Eü‰Uø3Eø‹
5A3889 45 FC 0F 84 24 00 00 00 89 45 FC 0F B6 00 8D 6D Eü.„$...‰Eü.¶.m
5A3899 FC E8 91 FF FF FF 0B C0 8B 45 00 8D 6D 04 0F 85 üè‘ÿÿÿ.À‹E.m..…
5A38A9 05 00 00 00 8D 40 FF EB CA 8D 40 01 ....@ÿëʍ@.
 
\ DUP 0! \ ~ruv (to anfilat): íå äÎëæíî òóò çàòèðàòü ïîäàííûé áóôåð!
OVER -
 
5A38B5 89 45 FC 8B 45 00 F7 D8 03 45 FC ‰Eü‹E.÷Ø.Eü
 
;
 
5A38C0 C3 Ã
 
 
: ModuleName ( -- addr u )
 
5A38C1 E0 38 5A 00 00 0A 4D 6F 64 75 6C 65 4E 61 6D 65 à8Z...ModuleName
5A38D1 62 38 5A 00 00 00 00 00 00 00 00 00 00 00 00 b8Z............
 
ABORT
 
5A38E0 E8 7B F6 FF FF è{öÿÿ
 
;
 
5A38E5 C3 Ã
 
 
: ModuleDirName ( -- addr u )
 
5A38E6 00 39 5A 00 00 0D 4D 6F 64 75 6C 65 44 69 72 4E .9Z...ModuleDirN
5A38F6 61 6D 65 C6 38 5A 00 00 00 00 ameÆ8Z....
 
ModuleName CUT-PATH
 
5A3900 E8 DB FF FF FF E8 66 FF FF FF èÛÿÿÿèfÿÿÿ
 
;
 
5A390A C3 Ã
 
 
: +ModuleDirName ( addr u -- addr2 u2 )
 
5A390B 30 39 5A 00 00 0E 2B 4D 6F 64 75 6C 65 44 69 72 09Z...+ModuleDir
5A391B 4E 61 6D 65 EB 38 5A 00 00 00 00 00 00 00 00 00 Nameë8Z.........
5A392B 00 00 00 00 00 .....
 
2>R
 
5A3930 E8 CB 94 FF FF è˔ÿÿ
 
ModuleDirName 2DUP +
 
5A3935 E8 C6 FF FF FF 8B 55 00 89 45 FC 89 55 F8 03 45 èÆÿÿÿ‹U.‰Eü‰Uø.E
5A3945 F8 8D 6D FC ømü
 
2R> DUP >R ROT SWAP 1+ MOVE
 
5A3949 E8 D2 94 FF FF 89 45 FC 50 8B 45 FC 8B 55 00 89 èҔÿÿ‰EüP‹Eü‹U.‰
5A3959 45 00 8B 45 04 89 55 04 8B 55 00 89 45 00 8B C2 E.‹E.‰U.‹U.‰E.‹Â
5A3969 8D 40 01 E8 AF A4 FF FF @.诤ÿÿ
 
R> +
 
5A3971 89 45 FC 58 03 45 FC ‰EüX.Eü
 
;
 
5A3978 C3 Ã
 
 
: +LibraryDirName ( addr u -- addr2 u2 )
 
5A3979 A0 39 5A 00 00 0F 2B 4C 69 62 72 61 72 79 44 69  9Z...+LibraryDi
5A3989 72 4E 61 6D 65 10 39 5A 00 00 00 00 00 00 00 00 rName.9Z........
5A3999 00 00 00 00 00 00 00 .......
 
\ Äîáàâèòü addr u ê ïîëíûé_ïóòü_ïðèëîæåíèÿ+devel\
2>R
 
5A39A0 E8 5B 94 FF FF è[”ÿÿ
 
ModuleDirName 2DUP +
 
5A39A5 E8 56 FF FF FF 8B 55 00 89 45 FC 89 55 F8 03 45 èVÿÿÿ‹U.‰Eü‰Uø.E
5A39B5 F8 8D 6D FC ømü
 
S" devel\" ROT SWAP MOVE
 
5A39B9 E8 9E E7 F9 FF 06 64 65 76 65 6C 5C 00 8B 55 00 èžçùÿ.devel\.‹U.
5A39C9 89 45 00 8B 45 04 89 55 04 8B 55 00 89 45 00 8B ‰E.‹E.‰U.‹U.‰E.‹
5A39D9 C2 E8 41 A4 FF FF ÂèA¤ÿÿ
 
6 + 2DUP +
 
5A39DF 89 45 FC B8 06 00 00 00 03 45 FC 8B 55 00 89 45 ‰Eü¸.....Eü‹U.‰E
5A39EF FC 89 55 F8 03 45 F8 8D 6D FC ü‰Uø.Eømü
 
2R> DUP >R ROT SWAP 1+ MOVE
 
5A39F9 E8 22 94 FF FF 89 45 FC 50 8B 45 FC 8B 55 00 89 è"”ÿÿ‰EüP‹Eü‹U.‰
5A3A09 45 00 8B 45 04 89 55 04 8B 55 00 89 45 00 8B C2 E.‹E.‰U.‹U.‰E.‹Â
5A3A19 8D 40 01 E8 FF A3 FF FF @.èÿ£ÿÿ
 
R> +
 
5A3A21 89 45 FC 58 03 45 FC ‰EüX.Eü
 
;
 
5A3A28 C3 Ã
 
: SOURCE-NAME ( -- a u )
 
5A3A29 40 3A 5A 00 00 0B 53 4F 55 52 43 45 2D 4E 41 4D @:Z...SOURCE-NAM
5A3A39 45 7E 39 5A 00 00 00 E~9Z...
 
CURFILE @ DUP IF ASCIIZ> ELSE 0 THEN
 
5A3A40 E8 4F 2B FA FF 8B 00 0B C0 74 07 E8 D0 A6 FF FF èO+úÿ‹..Àt.èЦÿÿ
5A3A50 EB 08 89 45 FC 33 C0 8D 6D FC ë.‰Eü3Àmü
 
;
 
5A3A5A C3 Ã
 
ZZ=D4
/programs/develop/SPForth/src/KOL/spf_kol_sys.f
0,0 → 1,173
(
 
)
 
Code SYS1 ;( n -- n1 )
INT 40H
RET
EndCode
 
Code SYS2 ;( n n1 -- n2 )
MOV EBX, [EBP]
INT 40H
LEA EBP, [EBP+4]
RET
EndCode
 
Code SYS3 ;( n n1 n2 -- n3 )
MOV ECX, [EBP+4]
MOV EBX, [EBP]
INT 40H
LEA EBP, [EBP+8]
RET
EndCode
 
Code SYS4 ;( n n1 n2 n3 -- n4 )
MOV EDX, [EBP+8]
MOV ECX, [EBP+4]
MOV EBX, [EBP]
INT 40H
LEA EBP, [EBP+0CH]
RET
EndCode
 
Code SYS5 ;( n n1 n2 n3 n4 -- n5 )
MOV ESI, [EBP+0CH]
MOV EDX, [EBP+8]
MOV ECX, [EBP+4]
MOV EBX, [EBP]
INT 40H
LEA EBP, [EBP+10H]
RET
EndCode
 
Code SYS6 ;( n n1 n2 n3 n4 n5 -- n6 )
PUSH EDI
MOV EDI, [EBP+10H]
MOV ESI, [EBP+0CH]
MOV EDX, [EBP+8]
MOV ECX, [EBP+4]
MOV EBX, [EBP]
INT 40H
LEA EBP, [EBP+14H]
POP EDI
RET
EndCode
 
VARIABLE reg_struc
 
Code SYSV ;( -- n )
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, { ' reg_struc }
PUSH EDI
MOV EDI, [EAX+14H]
MOV ESI, [EAX+10H]
MOV EDX, [EAX+0CH]
MOV ECX, [EAX+8]
MOV EBX, [EAX+4]
MOV EAX, [EAX]
INT 40H
POP EDI
RET
EndCode
 
 
 
80 VALUE SCR_WIDTH
60 VALUE SCR_WIDTH-S
25 VALUE SCR_HEIGHT
 
 
CREATE &AT-XY 0 , 0 ,
CREATE &KEY 0 ,
CREATE &ATRIB 0x0000FFFF ,
 
0x0011000D VALUE >PIC
 
CREATE SCR_BUF SCR_WIDTH SCR_HEIGHT 1+ * ALLOT
 
: AT-XY ( X Y -- )
SWAP 16 LSHIFT + &AT-XY ! ;
 
: AT-XY? ( -- X Y )
&AT-XY 2+ W@ &AT-XY W@ ;
 
: __PAGE-UP
SCR_BUF SCR_WIDTH + SCR_BUF SCR_WIDTH SCR_HEIGHT * CMOVE
SCR_BUF SCR_WIDTH SCR_HEIGHT 1- * + SCR_WIDTH BLANK
AT-XY? 1- 0 MAX AT-XY ;
 
VECT PAGE-UP
 
: ?PAGE-UP ( n -- )
 
&AT-XY 2+ W@ + SCR_WIDTH /MOD SWAP &AT-XY 2+ W!
&AT-XY W@ + SCR_HEIGHT /MOD
IF PAGE-UP DROP SCR_HEIGHT 1- THEN &AT-XY W! ;
 
: SCR_CR
&AT-XY @ 0xFFFF AND 1+ &AT-XY ! 0 ?PAGE-UP ;
 
: SCR_TYPE ( addr len -- )
TUCK SWAP
&ATRIB @
&AT-XY 2+ W@ 0x60000 *
&AT-XY W@ 0xD * +
0x00060018 +
4 SYS5 DROP
\ &AT-XY 2+ +!
?PAGE-UP
;
 
: DRAW_LINS
['] PAGE-UP >BODY @
['] NOOP TO PAGE-UP
AT-XY?
0 0 AT-XY
SCR_BUF SCR_WIDTH SCR_HEIGHT * BOUNDS
DO I SCR_WIDTH SCR_TYPE \ SCR_CR
SCR_WIDTH
+LOOP
AT-XY
TO PAGE-UP ;
 
: _PAGE-UP
draw_window __PAGE-UP
DRAW_LINS
;
 
' _PAGE-UP TO PAGE-UP
 
CREATE LAST_CUR 0 , 0 ,
 
: CORSOR_DROW
0 LAST_CUR 2@ 38 SYS4 DROP
0x00FF00FF
&AT-XY W@ 0xD * 0x21 + DUP 16 LSHIFT +
&AT-XY 2+ W@ 0x6 * 6 + DUP 6 + 16 LSHIFT +
2DUP LAST_CUR 2!
38 SYS4 DROP
;
: REDRAW
draw_window
DRAW_LINS CORSOR_DROW ;
 
: EVENT-CASE
11 SYS1
DUP 1 = IF DROP REDRAW EXIT THEN
DUP 2 = IF DROP 2 SYS1 8 RSHIFT &KEY C! EXIT THEN
3 = IF -1 SYS1 EXIT THEN ;
 
 
0
CELL FIELD .CODE
2 CELLS FIELD .FIRST \ ¯®§¨æ¨ï ¢ ä ©«¥ (¢ ¡ ©â å)
CELL FIELD .SIZE \ ᪮«ìª® ¡ ©â R/W
CELL FIELD .DATA \ 㪠§ â¥«ì ­  ¤ ­­ë¥
222 FIELD .NAME \ ASCIIZ-¨¬ï ä ©« 
CONSTANT FILE_STR
 
: WINDOW
draw_window CC_LINES ;
 
/programs/develop/SPForth/src/KOL/spf_kol_sys.f_L
0,0 → 1,752
ZZ=D4 (
 
)
 
Code SYS1 ;( n -- n1 )
 
59E2C9 E0 E2 59 00 00 04 53 59 53 31 AE E2 59 00 00 00 àâY...SYS1®âY...
59E2D9 00 00 00 00 00 00 00 .......
 
INT 40H
 
59E2E0 CD 40 Í@
 
RET
 
59E2E2 C3 Ã
 
EndCode
 
Code SYS2 ;( n n1 -- n2 )
 
59E2E3 00 E3 59 00 00 04 53 59 53 32 CE E2 59 00 00 00 .ãY...SYS2ÎâY...
59E2F3 00 00 00 00 00 00 00 00 00 00 00 00 00 .............
 
MOV EBX, [EBP]
 
59E300 8B 5D 00 ‹].
 
INT 40H
 
59E303 CD 40 Í@
 
LEA EBP, [EBP+4]
 
59E305 8D 6D 04 m.
 
RET
 
59E308 C3 Ã
 
EndCode
 
Code SYS3 ;( n n1 n2 -- n3 )
 
59E309 20 E3 59 00 00 04 53 59 53 33 E8 E2 59 00 00 00 ãY...SYS3èâY...
59E319 00 00 00 00 00 00 00 .......
 
MOV ECX, [EBP+4]
 
59E320 8B 4D 04 ‹M.
 
MOV EBX, [EBP]
 
59E323 8B 5D 00 ‹].
 
INT 40H
 
59E326 CD 40 Í@
 
LEA EBP, [EBP+8]
 
59E328 8D 6D 08 m.
 
RET
 
59E32B C3 Ã
 
EndCode
 
Code SYS4 ;( n n1 n2 n3 -- n4 )
 
59E32C 40 E3 59 00 00 04 53 59 53 34 0E E3 59 00 00 00 @ãY...SYS4.ãY...
59E33C 00 00 00 00 ....
 
MOV EDX, [EBP+8]
 
59E340 8B 55 08 ‹U.
 
MOV ECX, [EBP+4]
 
59E343 8B 4D 04 ‹M.
 
MOV EBX, [EBP]
 
59E346 8B 5D 00 ‹].
 
INT 40H
 
59E349 CD 40 Í@
 
LEA EBP, [EBP+0CH]
 
59E34B 8D 6D 0C m.
 
RET
 
59E34E C3 Ã
 
EndCode
 
Code SYS5 ;( n n1 n2 n3 n4 -- n5 )
 
59E34F 60 E3 59 00 00 04 53 59 53 35 31 E3 59 00 00 00 `ãY...SYS51ãY...
59E35F 00 .
 
MOV ESI, [EBP+0CH]
 
59E360 8B 75 0C ‹u.
 
MOV EDX, [EBP+8]
 
59E363 8B 55 08 ‹U.
 
MOV ECX, [EBP+4]
 
59E366 8B 4D 04 ‹M.
 
MOV EBX, [EBP]
 
59E369 8B 5D 00 ‹].
 
INT 40H
 
59E36C CD 40 Í@
 
LEA EBP, [EBP+10H]
 
59E36E 8D 6D 10 m.
 
RET
 
59E371 C3 Ã
 
EndCode
 
Code SYS6 ;( n n1 n2 n3 n4 n5 -- n6 )
 
59E372 80 E3 59 00 00 04 53 59 53 36 54 E3 59 00 €ãY...SYS6TãY.
 
PUSH EDI
 
59E380 57 W
 
MOV EDI, [EBP+10H]
 
59E381 8B 7D 10 ‹}.
 
MOV ESI, [EBP+0CH]
 
59E384 8B 75 0C ‹u.
 
MOV EDX, [EBP+8]
 
59E387 8B 55 08 ‹U.
 
MOV ECX, [EBP+4]
 
59E38A 8B 4D 04 ‹M.
 
MOV EBX, [EBP]
 
59E38D 8B 5D 00 ‹].
 
INT 40H
 
59E390 CD 40 Í@
 
LEA EBP, [EBP+14H]
 
59E392 8D 6D 14 m.
 
POP EDI
 
59E395 5F _
 
RET
 
59E396 C3 Ã
 
EndCode
 
VARIABLE reg_struc
 
59E397 AB E3 59 00 00 09 72 65 67 5F 73 74 72 75 63 77 «ãY...reg_strucw
59E3A7 E3 59 00 00 E8 6C 3C FA FF 00 00 00 00 ãY..èl<úÿ....
 
 
Code SYSV ;( -- n )
 
59E3B4 D0 E3 59 00 00 04 53 59 53 56 9C E3 59 00 00 00 ÐãY...SYSVœãY...
59E3C4 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
LEA EBP, [EBP-4]
 
59E3D0 8D 6D FC mü
 
MOV [EBP], EAX
 
59E3D3 89 45 00 ‰E.
 
MOV EAX, { ' reg_struc }
 
59E3D6 B8 AB E3 59 00 ¸«ãY.
 
PUSH EDI
 
59E3DB 57 W
 
MOV EDI, [EAX+14H]
 
59E3DC 8B 78 14 ‹x.
 
MOV ESI, [EAX+10H]
 
59E3DF 8B 70 10 ‹p.
 
MOV EDX, [EAX+0CH]
 
59E3E2 8B 50 0C ‹P.
 
MOV ECX, [EAX+8]
 
59E3E5 8B 48 08 ‹H.
 
MOV EBX, [EAX+4]
 
59E3E8 8B 58 04 ‹X.
 
MOV EAX, [EAX]
 
59E3EB 8B 00 ‹.
 
INT 40H
 
59E3ED CD 40 Í@
 
POP EDI
 
59E3EF 5F _
 
RET
 
59E3F0 C3 Ã
 
EndCode
 
 
 
80 VALUE SCR_WIDTH
 
59E3F1 10 E4 59 00 00 09 53 43 52 5F 57 49 44 54 48 B9 .äY...SCR_WIDTH¹
59E401 E3 59 00 00 00 00 00 00 00 00 00 00 00 00 00 E8 ãY.............è
59E411 27 3C FA FF 50 00 00 00 E8 E6 3C FA FF '<úÿP...èæ<úÿ
 
60 VALUE SCR_WIDTH-S
 
59E41E 40 E4 59 00 00 0B 53 43 52 5F 57 49 44 54 48 2D @äY...SCR_WIDTH-
59E42E 53 F6 E3 59 00 00 00 00 00 00 00 00 00 00 00 00 SöãY............
59E43E 00 00 E8 F7 3B FA FF 3C 00 00 00 E8 B6 3C FA FF ..è÷;úÿ<...è¶<úÿ
 
25 VALUE SCR_HEIGHT
 
59E44E 70 E4 59 00 00 0A 53 43 52 5F 48 45 49 47 48 54 päY...SCR_HEIGHT
59E45E 23 E4 59 00 00 00 00 00 00 00 00 00 00 00 00 00 #äY.............
59E46E 00 00 E8 C7 3B FA FF 19 00 00 00 E8 86 3C FA FF ..èÇ;úÿ....è†<úÿ
 
 
 
CREATE &AT-XY 0 , 0 ,
 
59E47E 8F E4 59 00 00 06 26 41 54 2D 58 59 53 E4 59 00 äY...&AT-XYSäY.
59E48E 00 E8 88 3B FA FF 00 00 00 00 00 00 00 00 .èˆ;úÿ........
 
CREATE &KEY 0 ,
 
59E49C AB E4 59 00 00 04 26 4B 45 59 83 E4 59 00 00 E8 «äY...&KEYƒäY..è
59E4AC 6C 3B FA FF 00 00 00 00 l;úÿ....
 
CREATE &ATRIB 0x0000FFFF ,
 
59E4B4 C7 E4 59 00 00 06 26 41 54 52 49 42 A1 E4 59 00 ÇäY...&ATRIB¡äY.
59E4C4 00 00 00 E8 50 3B FA FF FF FF 00 00 ...èP;úÿÿÿ..
 
 
0x0011000D VALUE >PIC
 
59E4D0 E0 E4 59 00 00 04 3E 50 49 43 B9 E4 59 00 00 00 àäY...>PIC¹äY...
59E4E0 E8 57 3B FA FF 0D 00 11 00 E8 16 3C FA FF èW;úÿ....è.<úÿ
 
 
CREATE SCR_BUF SCR_WIDTH SCR_HEIGHT 1+ * ALLOT
 
59E4EE FF E4 59 00 00 07 53 43 52 5F 42 55 46 D5 E4 59 ÿäY...SCR_BUFÕäY
59E4FE 00 E8 18 3B FA FF 00 00 00 00 00 00 00 00 00 00 .è.;úÿ..........
59E50E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
59E51E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
59E52E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
59ED24 7E6 bytes
 
: AT-XY ( X Y -- )
 
59ED24 40 ED 59 00 00 05 41 54 2D 58 59 F3 E4 59 00 00 @íY...AT-XYóäY..
59ED34 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
SWAP 16 LSHIFT + &AT-XY ! ;
MOV EDX , [EBP ]
MOV [EBP ], EAX
MOV [EBP -4], EDX
MOV EAX , $10
MOV ECX , EAX
MOV EAX , [EBP -4]
SHL EAX , CL
ADD EAX , [EBP ]
LEA EBP , [EBP +4]
CALL @@&AT-XY
MOV EDX , [EBP ]
MOV [EAX ], EDX
MOV EAX , [EBP +4]
LEA EBP , [EBP +8]
RET
 
: AT-XY? ( -- X Y )
 
59ED6C 80 ED 59 00 00 06 41 54 2D 58 59 3F 29 ED 59 00 €íY...AT-XY?)íY.
59ED7C 00 00 00 00 ....
 
&AT-XY 2+ W@ &AT-XY W@ ;
CALL @@&AT-XY
LEA EAX , [EAX +2]
MOVZX EAX , WORD PTR [EAX ]
CALL @@&AT-XY
MOVZX EAX , WORD PTR [EAX ]
RET
 
: __PAGE-UP
 
59ED94 B0 ED 59 00 00 09 5F 5F 50 41 47 45 2D 55 50 71 °íY...__PAGE-UPq
59EDA4 ED 59 00 00 00 00 00 00 00 00 00 00 íY..........
 
SCR_BUF SCR_WIDTH + SCR_BUF SCR_WIDTH SCR_HEIGHT * CMOVE
CALL @@SCR_BUF
CALL @@SCR_WIDTH
ADD EAX , [EBP ]
LEA EBP , [EBP +4]
CALL @@SCR_BUF
CALL @@SCR_WIDTH
CALL @@SCR_HEIGHT
IMUL [EBP ]
LEA EBP , [EBP +4]
CALL @@CMOVE
SCR_BUF SCR_WIDTH SCR_HEIGHT 1- * + SCR_WIDTH BLANK
CALL @@SCR_BUF
CALL @@SCR_WIDTH
CALL @@SCR_HEIGHT
LEA EAX , [EAX -1]
IMUL [EBP ]
ADD EAX , [EBP +4]
LEA EBP , [EBP +8]
CALL @@SCR_WIDTH
CALL @@BLANK
AT-XY? 1- 0 MAX AT-XY ;
CALL @@AT-XY?
LEA EAX , [EAX -1]
MOV [EBP -4], EAX
XOR EAX , EAX
LEA EBP , [EBP -4]
CALL @@MAX
CALL @@AT-XY
RET
 
VECT PAGE-UP
 
59EE1A 30 EE 59 00 00 07 50 41 47 45 2D 55 50 99 ED 59 0îY...PAGE-UP™íY
59EE2A 00 00 00 00 00 00 E8 B3 32 FA FF 60 F0 59 00 E8 ......è³2úÿ`ðY.è
59EE3A C6 32 FA FF Æ2úÿ
 
 
: ?PAGE-UP ( n -- )
 
59EE3E 50 EE 59 00 00 08 3F 50 41 47 45 2D 55 50 1F EE PîY...?PAGE-UP.î
59EE4E 59 00 Y.
 
 
&AT-XY 2+ W@ + SCR_WIDTH /MOD SWAP &AT-XY 2+ W!
CALL @@&AT-XY
LEA EAX , [EAX +2]
MOVZX EAX , WORD PTR [EAX ]
ADD EAX , [EBP ]
LEA EBP , [EBP +4]
CALL @@SCR_WIDTH
MOV ECX , EAX
MOV EAX , [EBP ]
CDQ
IDIV ECX
MOV [EBP ], EDX
MOV EDX , [EBP ]
MOV [EBP ], EAX
MOV EAX , EDX
CALL @@&AT-XY
LEA EAX , [EAX +2]
CALL @@W!
&AT-XY W@ + SCR_HEIGHT /MOD
CALL @@&AT-XY
MOVZX EAX , WORD PTR [EAX ]
ADD EAX , [EBP ]
LEA EBP , [EBP +4]
CALL @@SCR_HEIGHT
MOV ECX , EAX
MOV EAX , [EBP ]
CDQ
IDIV ECX
MOV [EBP ], EDX
IF PAGE-UP DROP SCR_HEIGHT 1- THEN &AT-XY W! ;
OR EAX , EAX
MOV EAX , [EBP ]
LEA EBP , [EBP +4]
JE [OFFSET ?PAGE-UP]
CALL @@PAGE-UP
MOV EAX , [EBP ]
LEA EBP , [EBP +4]
CALL @@SCR_HEIGHT
LEA EAX , [EAX -1]
@59EEC1: CALL @@&AT-XY
CALL @@W!
RET
 
: SCR_CR
 
59EECC E0 EE 59 00 00 06 53 43 52 5F 43 52 43 EE 59 00 àîY...SCR_CRCîY.
59EEDC 00 00 00 00 ....
 
&AT-XY @ 0xFFFF AND 1+ &AT-XY ! 0 ?PAGE-UP ;
CALL @@&AT-XY
MOV EAX , [EAX ]
MOV [EBP -4], EAX
MOV EAX , $FFFF
AND EAX , [EBP -4]
LEA EAX , [EAX +1]
CALL @@&AT-XY
MOV EDX , [EBP ]
MOV [EAX ], EDX
XOR EAX , EAX
LEA EBP , [EBP +4]
CALL @@?PAGE-UP
RET
 
: SCR_TYPE ( addr len -- )
 
59EF0A 20 EF 59 00 00 08 53 43 52 5F 54 59 50 45 D1 EE ïY...SCR_TYPEÑî
59EF1A 59 00 00 00 00 00 Y.....
 
TUCK SWAP
MOV EDX , [EBP ]
MOV [EBP -4], EDX
MOV [EBP ], EAX
MOV EDX , [EBP -4]
MOV [EBP -4], EAX
MOV EAX , EDX
LEA EBP , [EBP -4]
&ATRIB @
CALL @@&ATRIB
MOV EAX , [EAX ]
&AT-XY 2+ W@ 0x60000 *
CALL @@&AT-XY
MOVZX EAX , WORD PTR [EAX +2]
MOV [EBP -4], EAX
MOV EAX , $60000
IMUL [EBP -4]
&AT-XY W@ 0xD * +
CALL @@&AT-XY
MOVZX EAX , WORD PTR [EAX ]
MOV [EBP -4], EAX
MOV EAX , $D
IMUL [EBP -4]
ADD EAX , [EBP ]
LEA EAX , [$60018][EAX ]
0x00060018 +
MOV [EBP ], EAX
MOV EAX , $4
4 SYS5 DROP
CALL @@SYS5
MOV EAX , [EBP ]
LEA EBP , [EBP +4]
\ &AT-XY 2+ +!
?PAGE-UP
CALL @@?PAGE-UP
;
RET
 
: DRAW_LINS
 
59EF84 A0 EF 59 00 00 09 44 52 41 57 5F 4C 49 4E 53 0F  ïY...DRAW_LINS.
59EF94 EF 59 00 00 00 00 00 00 00 00 00 00 ïY..........
 
['] PAGE-UP >BODY @
MOV [EBP -4], EAX
MOV EAX , $59EE30
MOV EAX , [EAX +5]
MOV [EBP -8], EAX
MOV EAX , $59D240
['] NOOP TO PAGE-UP
LEA EBP , [EBP -8]
CALL [OFFSET PAGE-UP]
AT-XY?
CALL @@AT-XY?
0 0 AT-XY
MOV [EBP -4], EAX
MOV [EBP -8], $0
XOR EAX , EAX
LEA EBP , [EBP -8]
CALL @@AT-XY
SCR_BUF SCR_WIDTH SCR_HEIGHT * BOUNDS
CALL @@SCR_BUF
CALL @@SCR_WIDTH
CALL @@SCR_HEIGHT
IMUL [EBP ]
ADD EAX , [EBP +4]
MOV EDX , [EBP +4]
MOV [EBP +4], EAX
MOV EAX , EDX
MOV EDX , $80000000
DO I SCR_WIDTH SCR_TYPE \ SCR_CR
SUB EDX , [EBP +4]
LEA EBX , [EDX ][EAX ]
MOV EAX , [EBP +8]
LEA EBP , [EBP +12]
PUSH , $59F037
PUSH EDX
PUSH EBX
XCHG EAX, EAX
XCHG EAX, EAX
XCHG EAX, EAX
MOV [EBP -4]EAX
MOV EAX , [ESP ]
SUB EAX , [ESP +4]
LEA EBP , [EBP -4]
CALL @@SCR_WIDTH
CALL @@SCR_TYPE
SCR_WIDTH
CALL @@SCR_WIDTH
+LOOP
ADD [ESP ], EAX
MOV EAX , [EBP ]
LEA EBP , [EBP +4]
JNO [OFFSET DRAW_LINS]
LEA ESP , [ESP +12]
AT-XY
CALL @@AT-XY
TO PAGE-UP ;
CALL [OFFSET PAGE-UP]
RET
 
: _PAGE-UP
 
59F042 60 F0 59 00 00 08 5F 50 41 47 45 2D 55 50 89 EF `ðY..._PAGE-UP‰ï
59F052 59 00 00 00 00 00 00 00 00 00 00 00 00 00 Y.............
 
draw_window __PAGE-UP
CALL @@draw_window
CALL @@__PAGE-UP
DRAW_LINS
CALL @@DRAW_LINS
;
RET
 
' _PAGE-UP TO PAGE-UP
 
CREATE LAST_CUR 0 , 0 ,
 
59F070 83 F0 59 00 00 08 4C 41 53 54 5F 43 55 52 47 F0 ƒðY...LAST_CURGð
59F080 59 00 00 E8 94 2F FA FF 00 00 00 00 00 00 00 00 Y..è”/úÿ........
 
 
: CORSOR_DROW
 
59F090 B0 F0 59 00 00 0B 43 4F 52 53 4F 52 5F 44 52 4F °ðY...CORSOR_DRO
59F0A0 57 75 F0 59 00 00 00 00 00 00 00 00 00 00 00 00 WuðY............
 
0 LAST_CUR 2@ 38 SYS4 DROP
MOV [EBP -4], EAX
XOR EAX , EAX
LEA EBP , [EBP -4]
CALL @@LAST_CUR
MOV EDX , [EAX +4]
MOV [EBP -4], EDX
MOV EAX , [EAX ]
MOV [EBP -8], EAX
MOV EAX , $26
MOV EDX , [EBP ]
MOV ECX , [EBP -4]
MOV EBX , [EBP -8]
INT $40
MOV EAX , $FF00FF
LEA EBP , [EBP +4]
0x00FF00FF
&AT-XY W@ 0xD * 0x21 + DUP 16 LSHIFT +
CALL @@&AT-XY
MOVZX EAX , WORD PTR [EAX ]
MOV [EBP -4], EAX
MOV EAX , $D
IMUL [EBP -4]
MOV [EBP -4], EAX
MOV EAX , $21
ADD EAX , [EBP -4]
MOV [EBP -4], EAX
MOV [EBP -8], EAX
MOV EAX , $10
MOV ECX , EAX
MOV EAX , [EBP -8]
SHL EAX , CL
ADD EAX , [EBP -4]
&AT-XY 2+ W@ 0x6 * 6 + DUP 6 + 16 LSHIFT +
CALL @@&AT-XY
MOVZX EAX , WORD PTR [EAX +2]
MOV [EBP -4], EAX
MOV EAX , $6
IMUL [EBP -4]
MOV [EBP -4], EAX
MOV EAX , $6
ADD EAX , [EBP -4]
MOV [EBP -4], EAX
LEA EAX , [EAX +6]
MOV [EBP -8], EAX
MOV EAX , $10
MOV ECX , EAX
MOV EAX , [EBP -8]
SHL EAX , CL
ADD EAX , [EBP -4]
2DUP LAST_CUR 2!
MOV EDX , [EBP ]
MOV [EBP -4], EAX
MOV [EBP -8], EDX
LEA EBP , [EBP -8]
CALL @@LAST_CUR
CALL @@2!
38 SYS4 DROP
MOV [EBP -4], EAX
MOV EAX , $26
MOV EDX , [EBP +4]
MOV ECX , [EBP ]
MOV EBX , [EBP -4]
INT $40
MOV EAX , [EBP +8]
LEA EBP , [EBP +12]
;
RET
: REDRAW
 
59F17A 90 F1 59 00 00 06 52 45 44 52 41 57 95 F0 59 00 ñY...REDRAW•ðY.
59F18A 00 00 00 00 00 00 ......
 
draw_window
CALL @@draw_window
DRAW_LINS CORSOR_DROW ;
CALL @@DRAW_LINS
CALL @@CORSOR_DROW
RET
 
: EVENT-CASE
 
59F1A0 C0 F1 59 00 00 0A 45 56 45 4E 54 2D 43 41 53 45 ÀñY...EVENT-CASE
59F1B0 7F F1 59 00 00 00 00 00 00 00 00 00 00 00 00 00 ñY.............
 
11 SYS1
MOV [EBP -4], EAX
MOV EAX , $B
INT $40
MOV [EBP -8], EAX
DUP 1 = IF DROP REDRAW EXIT THEN
CMP EAX , $1
MOV EAX , [EBP -8]
LEA EBP , [EBP -4]
JNE [OFFSET EVENT-CASE]
MOV EAX , [EBP ]
LEA EBP , [EBP +4]
CALL @@REDRAW
RET
DUP 2 = IF DROP 2 SYS1 8 RSHIFT &KEY C! EXIT THEN
@59F1E6: MOV [EBP -4], EAX
CMP EAX , $2
MOV EAX , [EBP -4]
JNE [OFFSET EVENT-CASE]
MOV EAX , $2
INT $40
MOV [EBP -4], EAX
MOV EAX , $8
MOV ECX , EAX
MOV EAX , [EBP -4]
SHR EAX , CL
CALL @@&KEY
MOV EDX , [EBP ]
MOV [EAX ], DL
MOV EAX , [EBP +4]
LEA EBP , [EBP +8]
RET
3 = IF -1 SYS1 EXIT THEN ;
@59F21A: CMP EAX , $3
MOV EAX , [EBP ]
LEA EBP , [EBP +4]
JNE [OFFSET EVENT-CASE]
MOV [EBP -4], EAX
MOV EAX , $FFFFFFFF
INT $40
LEA EBP , [EBP -4]
RET
@59F235: RET
 
 
0
CELL FIELD .CODE
 
59F236 50 F2 59 00 00 05 2E 43 4F 44 45 A5 F1 59 00 00 PòY....CODE¥ñY..
59F246 00 00 00 00 00 00 00 00 00 00 C3 ..........Ã
 
2 CELLS FIELD .FIRST \ ¯®§¨æ¨ï ¢ ä ©«¥ (¢ ¡ ©â å)
 
59F251 70 F2 59 00 00 06 2E 46 49 52 53 54 3B F2 59 00 pòY....FIRST;òY.
59F261 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 89 ...............‰
59F271 45 FC B8 04 00 00 00 03 45 FC C3 Eü¸.....EüÃ
 
CELL FIELD .SIZE \ ᪮«ìª® ¡ ©â R/W
 
59F27C 90 F2 59 00 00 05 2E 53 49 5A 45 56 F2 59 00 00 òY....SIZEVòY..
59F28C 00 00 00 00 89 45 FC B8 0C 00 00 00 03 45 FC C3 ....‰Eü¸.....EüÃ
 
CELL FIELD .DATA \ 㪠§ â¥«ì ­  ¤ ­­ë¥
 
59F29C B0 F2 59 00 00 05 2E 44 41 54 41 81 F2 59 00 00 °òY....DATAòY..
59F2AC 00 00 00 00 89 45 FC B8 10 00 00 00 03 45 FC C3 ....‰Eü¸.....EüÃ
 
222 FIELD .NAME \ ASCIIZ-¨¬ï ä ©« 
 
59F2BC D0 F2 59 00 00 05 2E 4E 41 4D 45 A1 F2 59 00 00 ÐòY....NAME¡òY..
59F2CC 00 00 00 00 89 45 FC B8 14 00 00 00 03 45 FC C3 ....‰Eü¸.....EüÃ
 
CONSTANT FILE_STR
 
59F2DC F0 F2 59 00 00 08 46 49 4C 45 5F 53 54 52 C1 F2 ðòY...FILE_STRÁò
59F2EC 59 00 00 00 E8 47 2D FA FF F2 00 00 00 Y...èG-úÿò...
 
 
: WINDOW
 
59F2F9 10 F3 59 00 00 06 57 49 4E 44 4F 57 E1 F2 59 00 .óY...WINDOWáòY.
59F309 00 00 00 00 00 00 00 .......
 
draw_window CC_LINES ;
CALL @@draw_window
CALL @@CC_LINES
RET
 
ZZ=D4
/programs/develop/SPForth/src/KOL
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/src/MEFORTH.F
0,0 → 1,2
: $" POSTPONE C" ; IMMEDIATE
: .S DEPTH .SN ;
/programs/develop/SPForth/src/compiler/spf_compile.f
0,0 → 1,154
( Êîìïèëÿöèÿ ÷èñåë è ñòðîê â ñëîâàðü.
ÎÑ-íåçàâèñèìûå îïðåäåëåíèÿ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
Ïðåîáðàçîâàíèå èç 16-ðàçðÿäíîãî â 32-ðàçðÿäíûé êîä - 1995-96ãã
Ðåâèçèÿ - ñåíòÿáðü 1999, ìàðò 2000
)
 
 
HEX
 
: HERE ( -- addr ) \ 94
\ addr - óêàçàòåëü ïðîñòðàíñòâà äàííûõ.
DP @
DUP TO :-SET
DUP TO J-SET
;
 
 
: _COMPILE, \ 94 CORE EXT
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Âûïîëíåíèå: ( xt -- )
\ Äîáàâèòü ñåìàíòèêó âûïîëíåíèÿ îïðåäåëåíèÿ, ïðåäñòàâëåíîãî xt, ê
\ ñåìàíòèêå âûïîëíåíèÿ òåêóùåãî îïðåäåëåíèÿ.
?SET
SetOP
0E8 C, \ ìàøèííàÿ êîìàíäà CALL
DP @ CELL+ - ,
DP @ TO LAST-HERE
;
 
: COMPILE, \ 94 CORE EXT
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Âûïîëíåíèå: ( xt -- )
\ Äîáàâèòü ñåìàíòèêó âûïîëíåíèÿ îïðåäåëåíèÿ, ïðåäñòàâëåíîãî xt, ê
\ ñåìàíòèêå âûïîëíåíèÿ òåêóùåãî îïðåäåëåíèÿ.
CON>LIT
IF INLINE?
IF INLINE,
ELSE _COMPILE,
THEN
THEN
;
 
: BRANCH, ( ADDR -> ) \ ñêîìïèëèðîâàòü èíñòðóêöèþ ADDR JMP
?SET SetOP SetJP E9 C,
DUP IF DP @ CELL+ - THEN , DP @ TO LAST-HERE
;
 
: RET, ( -> ) \ ñêîìïèëèðîâàòü èíñòðóêöèþ RET
?SET SetOP 0xC3 C, OPT OPT_CLOSE
;
 
 
: LIT, ( W -> )
['] DUP INLINE,
OPT_INIT
SetOP 0B8 C, , OPT \ MOV EAX, #
OPT_CLOSE
;
 
: DLIT, ( D -> )
SWAP LIT, LIT,
;
 
: RLIT, ( u -- )
\ Ñêîìïèëèðîâàòü ñëåäóþùóþ ñåìàíòèêó:
\ Ïîëîæèòü íà ñòåê âîçâðàòîâ ëèòåðàë u
68 C, , \ push dword #
;
 
 
: ?BRANCH, ( ADDR -> ) \ ñêîìïèëèðîâàòü èíñòðóêöèþ ADDR ?BRANCH
?SET
084 TO J_COD
???BR-OPT
SetJP SetOP
J_COD \ JX áåç 0x0F
0x0F \ êóñîê îò JX
C, C,
DUP IF DP @ CELL+ - THEN , DP @ TO LAST-HERE
;
 
DECIMAL
 
 
: S, ( addr u -- )
\ Çàðåçåðâèðîâàòü u áàéò ïðîñòðàíñòâà äàííûõ
\ è ïîìåñòèòü òóäà ñîäåðæèìîå u áàéò èç addr.
DP @ SWAP DUP ALLOT CMOVE
;
 
: S", ( addr u -- )
\ Ðàçìåñòèòü â ïðîñòðàíñòâå äàííûõ ñòðîêó, çàäàííóþ addr u,
\ â âèäå ñòðîêè ñî ñ÷åò÷èêîì.
DUP C, S,
;
 
: SLIT, ( a u -- )
\ Ñêîìïèëèðîâàòü ñòðîêó, çàäàííóþ addr u.
SLITERAL-CODE COMPILE, S", 0 C,
;
 
: CLIT, ( a -- )
COUNT PAD $!
CLITERAL-CODE _COMPILE, PAD COUNT S", 0 C, ;
 
 
: ", ( A -> )
\ ðàçìåñòèòü â ïðîñòðàíñòâå äàííûõ ñòðîêó, çàäàííóþ àäðåñîì A,
\ â âèäå ñòðîêè ñî ñ÷åò÷èêîì
COUNT S",
;
 
\ orig - a, 1 (short) èëè a, 2 (near)
\ dest - a, 3
 
: >MARK ( -> A )
DP @ DUP TO :-SET 4 -
;
 
: <MARK ( -> A )
HERE
;
 
: >ORESOLVE1 ( A -> )
?SET
DUP
DP @ DUP TO :-SET
OVER - 4 -
SWAP !
RESOLVE_OPT
;
 
: >ORESOLVE ( A, N -- )
DUP 1 = IF DROP >ORESOLVE1
ELSE 2 <> IF -2007 THROW THEN \ ABORT" Conditionals not paired"
>ORESOLVE1
THEN
;
 
: >RESOLVE1 ( A -> )
HERE OVER - 4 -
SWAP !
;
 
: >RESOLVE ( A, N -- )
DUP 1 = IF DROP >RESOLVE1
ELSE 2 <> IF -2007 THROW THEN \ ABORT" Conditionals not paired"
>RESOLVE1
THEN
;
 
: r> ['] C-R> INLINE, ; IMMEDIATE
: >r ['] C->R INLINE, ; IMMEDIATE
/programs/develop/SPForth/src/compiler/spf_compile0.f
0,0 → 1,60
( ëÏÍÐÉÌÑÃÉÑ ÞÉÓÅÌ ÓÌÏ×ÁÒØ.
ïó-ÎÅÚÁ×ÉÓÉÍÙÅ ÏÐÒÅÄÅÌÅÎÉÑ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ 16-ÒÁÚÒÑÄÎÏÇÏ × 32-ÒÁÚÒÑÄÎÙÊ ËÏÄ - 1995-96ÇÇ
òÅ×ÉÚÉÑ - ÓÅÎÔÑÂÒØ 1999, ÍÁÒÔ 2000
)
 
: RDROP ['] C-RDROP INLINE, ; IMMEDIATE
: 2RDROP ['] C-2RDROP INLINE, ; IMMEDIATE
: 3RDROP ['] C-3RDROP INLINE, ; IMMEDIATE
 
5 CONSTANT CFL \ ÄÌÉÎÁ ËÏÄÁ, ËÏÍÐÉÌÉÒÕÅÍÏÇÏ CREATE × ÓÅÇÍÅÎÔ CS.
\ USER DOES>A \ ×ÒÅÍÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ - ÁÄÒÅÓ ÄÌÑ DOES>
 
: SET-CURRENT ( wid -- ) \ 94 SEARCH
\ õÓÔÁÎÏ×ÉÔØ ÓÐÉÓÏË ËÏÍÐÉÌÑÃÉÉ ÎÁ ÓÐÉÓÏË, ÉÄÅÎÔÉÆÉÃÉÒÕÅÍÙÊ wid.
CURRENT !
;
 
: GET-CURRENT ( -- wid ) \ 94 SEARCH
\ ÷ÏÚ×ÒÁÝÁÅÔ wid - ÉÄÅÎÔÉÆÉËÁÔÏÒ ÓÐÉÓËÁ ËÏÍÐÉÌÑÃÉÉ.
CURRENT @
;
 
: IS-TEMP-WL ( -- flag )
\ ÐÒÏ×ÅÒÑÅÔ, Ñ×ÌÑÅÔÓÑ ÌÉ ÔÅËÕÝÉÊ ÓÌÏ×ÁÒØ ËÏÍÐÉÌÑÃÉÉ ×ÒÅÍÅÎÎÙÍ (×ÎÅÛÎÉÍ)
GET-CURRENT CELL- @ -1 =
;
0 [IF]
: DP ( -- addr ) \ ÐÅÒÅÍÅÎÎÁÑ, ÓÏÄÅÒÖÁÝÁÑ HERE ÓÅÇÍÅÎÔÁ ÄÁÎÎÙÈ
IS-TEMP-WL
IF GET-CURRENT 6 CELLS + ELSE (DP) THEN
;
[THEN]
: ALLOT ( n -- ) \ 94
\ åÓÌÉ n ÂÏÌØÛÅ ÎÕÌÑ, ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ n ÂÁÊÔ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ. åÓÌÉ n ÍÅÎØÛÅ
\ ÎÕÌÑ - ÏÓ×ÏÂÏÄÉÔØ |n| ÂÁÊÔ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ. åÓÌÉ n ÎÏÌØ, ÏÓÔÁ×ÉÔØ
\ ÕËÁÚÁÔÅÌØ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ ÎÅÉÚÍÅÎÎÙÍ.
\ åÓÌÉ ÐÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ALLOT ÕËÁÚÁÔÅÌØ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ ×ÙÒÏ×ÎÅÎ É n
\ ËÒÁÔÎÏ ÒÁÚÍÅÒÕ ÑÞÅÊËÉ, ÏÎ ÏÓÔÁÅÔÓÑ ×ÙÒÏ×ÎÅÎÎÙÍ É ÐÏÓÌÅ ALLOT.
\ åÓÌÉ ÐÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ALLOT ÕËÁÚÁÔÅÌØ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ ×ÙÒÏ×ÎÅÎ ÎÁ
\ ÇÒÁÎÉÃÕ ÓÉÍ×ÏÌÁ É n ËÒÁÔÎÏ ÒÁÚÍÅÒÕ ÓÉÍ×ÏÌÁ, ÏÎ ÏÓÔÁÅÔÓÑ ×ÙÒÏ×ÎÅÎÎÙÍ ÎÁ
\ ÇÒÁÎÉÃÕ ÓÉÍ×ÏÌÁ É ÐÏÓÌÅ ALLOT.
DP +!
;
 
: , ( x -- ) \ 94
\ úÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÏÄÎÕ ÑÞÅÊËÕ × ÏÂÌÁÓÔÉ ÄÁÎÎÙÈ É ÐÏÍÅÓÔÉÔØ x × ÜÔÕ ÑÞÅÊËÕ.
DP @ 4 ALLOT !
;
 
: C, ( char -- ) \ 94
\ úÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÍÅÓÔÏ ÄÌÑ ÓÉÍ×ÏÌÁ × ÏÂÌÁÓÔÉ ÄÁÎÎÙÈ É ÐÏÍÅÓÔÉÔØ ÔÕÄÁ char.
DP @ 1 ALLOT C!
;
 
: W, ( word -- )
\ úÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÍÅÓÔÏ ÄÌÑ word × ÏÂÌÁÓÔÉ ÄÁÎÎÙÈ É ÐÏÍÅÓÔÉÔØ ÔÕÄÁ char.
DP @ 2 ALLOT W!
;
/programs/develop/SPForth/src/compiler/spf_defwords.f
0,0 → 1,206
( Ž¯à¥¤¥«ïî騥 á«®¢ , ᮧ¤ î騥 á«®¢ à­ë¥ áâ âì¨ ¢ á«®¢ à¥.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
USER LAST-CFA
USER-VALUE LAST-NON
 
: REVEAL ( --- )
\ Add the last created definition to the CURRENT wordlist.
LAST @ CURRENT @ ! ;
 
: SHEADER ( addr u -- )
_SHEADER REVEAL
;
 
: _SHEADER ( addr u -- )
0 C, ( flags )
HERE 0 , ( cfa )
DUP LAST-CFA !
-ROT WARNING @
IF 2DUP GET-CURRENT SEARCH-WORDLIST
IF DROP 2DUP TYPE ." isn't unique" CR THEN
THEN
CURRENT @ SWORD,
ALIGN
HERE SWAP ! ( § ¯®«­¨«¨ cfa )
;
 
: HEADER ( "name" -- ) PARSE-WORD SHEADER ;
 
: CREATED ( addr u -- )
\ ‘®§¤ âì ®¯à¥¤¥«¥­¨¥ ¤«ï c-addr u á ᥬ ­â¨ª®© ¢ë¯®«­¥­¨ï, ®¯¨á ­­®© ­¨¦¥.
\ …᫨ 㪠§ â¥«ì ¯à®áâà ­á⢠ ¤ ­­ëå ­¥ ¢ë஢­¥­, § à¥§¥à¢¨à®¢ âì ¬¥áâ®
\ ¤«ï ¢ëà ¢­¨¢ ­¨ï. ®¢ë© 㪠§ â¥«ì ¯à®áâà ­á⢠ ¤ ­­ëå ®¯à¥¤¥«ï¥â
\ ¯®«¥ ¤ ­­ëå name. CREATE ­¥ १¥à¢¨àã¥â ¬¥áâ® ¢ ¯®«¥ ¤ ­­ëå name.
\ name ‚믮«­¥­¨¥: ( -- a-addr )
\ a-addr -  ¤à¥á ¯®«ï ¤ ­­ëå name. ‘¥¬ ­â¨ª  ¢ë¯®«­¥­¨ï name ¬®¦¥â
\ ¡ëâì à áè¨à¥­  á ¯®¬®éìî DOES>.
SHEADER
HERE DOES>A ! ( ¤«ï DOES )
CREATE-CODE COMPILE,
;
 
: CREATE ( "<spaces>name" -- ) \ 94
PARSE-WORD CREATED
;
 
: (DOES1) \ â  ç áâì, ª®â®à ï à ¡®â ¥â ®¤­®¢à¥¬¥­­® á CREATE (®¡ëç­®)
R> DOES>A @ CFL + -
DOES>A @ 1+ ! ;
 
Code (DOES2)
SUB EBP, 4
MOV [EBP], EAX
POP EBX
POP EAX
PUSH EBX
RET
EndCODE
 
: DOES> \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ Š®¬¯¨«ïæ¨ï: ( C: clon-sys1 -- colon-sys2 )
\ „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬ã
\ ®¯à¥¤¥«¥­¨î. ã¤¥â ¨«¨ ­¥â ⥪ã饥 ®¯à¥¤¥«¥­¨¥ ᤥ« ­® ¢¨¤¨¬®
\ ¤«ï ¯®¨áª  ¢ á«®¢ à¥ ¯à¨ ª®¬¯¨«ï樨 DOES>, § ¢¨á¨â ®â ॠ«¨§ æ¨¨.
\ ®£«®é ¥â colon-sys1 ¨ ¯à®¨§¢®¤¨â colon-sys2. „®¡ ¢«ï¥â ᥬ ­â¨ªã
\ ¨­¨æ¨ «¨§ æ¨¨, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
\ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( -- ) ( R: nest-sys1 -- )
\ ‡ ¬¥­¨âì ᥬ ­â¨ªã ¢ë¯®«­¥­¨ï ¯®á«¥¤­¥£® ®¯à¥¤¥«¥­¨ï name, ­  ᥬ ­â¨ªã
\ ¢ë¯®«­¥­¨ï name, ¤ ­­ãî ­¨¦¥. ‚®§¢à â¨âì ã¯à ¢«¥­¨¥ ¢ ¢ë§ë¢ î饥 ®¯à¥¤¥-
\ «¥­¨¥, § ¤ ­­®¥ nest-sys1. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ name
\ ­¥ ¡ë«® ®¯à¥¤¥«¥­® ç¥à¥§ CREATE ¨«¨ ®¯à¥¤¥«¥­­®¥ ¯®«ì§®¢ â¥«¥¬ á«®¢®,
\ ¢ë§ë¢ î饥 CREATE.
\ ˆ­¨æ¨ «¨§ æ¨ï: ( i*x -- i*x a-addr ) ( R: -- nest-sys2 )
\ ‘®åà ­¨âì § ¢¨áïéãî ®â ॠ«¨§ æ¨¨ ¨­ä®à¬ æ¨î nest-sys2 ® ¢ë§ë¢ î饬
\ ®¯à¥¤¥«¥­¨¨. ®«®¦¨âì  ¤à¥á ¯®«ï ¤ ­­ëå name ­  á⥪. «¥¬¥­âë á⥪ 
\ i*x ¯à¥¤áâ ¢«ïîâ  à£ã¬¥­âë name.
\ name ‚믮«­¥­¨¥: ( i*x -- j*x )
\ ‚믮«­¨âì ç áâì ®¯à¥¤¥«¥­¨ï, ª®â®à ï ­ ç¨­ ¥âáï á ᥬ ­â¨ª¨ ¨­¨æ¨ «¨§ æ¨¨,
\ ¤®¡ ¢«¥­­®© DOES>, ª®â®à®¥ ¬®¤¨ä¨æ¨à®¢ «® name. «¥¬¥­âë á⥪  i*x ¨ j*x
\ ¯à¥¤áâ ¢«ïîâ  à£ã¬¥­âë ¨ १ã«ìâ âë á«®¢  name, ᮮ⢥âá⢥­­®.
['] (DOES1) COMPILE,
['] (DOES2) COMPILE, \ ['] C-R> MACRO,
; IMMEDIATE
 
: VOCABULARY ( "<spaces>name" -- )
\ ‘®§¤ âì ᯨ᮪ á«®¢ á ¨¬¥­¥¬ name. ‚믮«­¥­¨¥ name § ¬¥­¨â ¯¥à¢ë© ᯨ᮪
\ ¢ ¯®à浪¥ ¯®¨áª  ­  ᯨ᮪ á ¨¬¥­¥¬ name.
WORDLIST DUP
CREATE
,
LATEST OVER CELL+ ! ( áá뫪  ­  ¨¬ï á«®¢ àï )
GET-CURRENT SWAP PAR! ( á«®¢ àì-¯à¥¤®ª )
\ FORTH-WORDLIST SWAP CLASS! ( ª« áá )
VOC
( DOES> ­¥ à ¡®â ¥â ¢ í⮬ –Š)
(DOES1) (DOES2) \ â ª ᤥ« « ¡ë DOES>, ®¯à¥¤¥«¥­­ë© ¢ëè¥
@ CONTEXT !
;
 
: VARIABLE ( "<spaces>name" -- ) \ 94
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë. ‚뤥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬.
\ ‘®§¤ âì ®¯à¥¤¥«¥­¨¥ ¤«ï name á ᥬ ­â¨ª®© ¢ë¯®«­¥­¨ï, ¤ ­­®© ­¨¦¥.
\ ‡ à¥§¥à¢¨à®¢ âì ®¤­ã ï祩ªã ¯à®áâà ­á⢠ ¤ ­­ëå á ¢ë஢­¥­­ë¬  ¤à¥á®¬.
\ name ¨á¯®«ì§ã¥âáï ª ª "¯¥à¥¬¥­­ ï".
\ name ‚믮«­¥­¨¥: ( -- a-addr )
\ a-addr -  ¤à¥á § à¥§¥à¢¨à®¢ ­­®© ï祩ª¨. ‡  ¨­¨æ¨ «¨§ æ¨î ï祩ª¨ ®â¢¥ç ¥â
\ ¯à®£à ¬¬ 
CREATE
0 ,
;
: CONSTANT ( x "<spaces>name" -- ) \ 94
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë. ‚뤥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬.
\ ‘®§¤ âì ®¯à¥¤¥«¥­¨¥ ¤«ï name á ᥬ ­â¨ª®© ¢ë¯®«­¥­¨ï, ¤ ­­®© ­¨¦¥.
\ name ¨á¯®«ì§ã¥âáï ª ª "ª®­áâ ­â ".
\ name ‚믮«­¥­¨¥: ( -- x )
\ ®«®¦¨âì x ­  á⥪.
HEADER
CONSTANT-CODE COMPILE, ,
;
: VALUE ( x "<spaces>name" -- ) \ 94 CORE EXT
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë. ‚뤥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬. ‘®§¤ âì
\ ®¯à¥¤¥«¥­¨¥ ¤«ï name á ᥬ ­â¨ª®© ¢ë¯®«­¥­¨ï, ®¯à¥¤¥«¥­­®© ­¨¦¥, á ­ ç «ì­ë¬
\ §­ ç¥­¨¥¬ à ¢­ë¬ x.
\ name ¨á¯®«ì§ã¥âáï ª ª "§­ ç¥­¨¥".
\ ‚믮«­¥­¨¥: ( -- x )
\ ®«®¦¨âì x ­  á⥪. ‡­ ç¥­¨¥ x - â®, ª®â®à®¥ ¡ë«® ¤ ­®, ª®£¤  ¨¬ï ᮧ¤ ¢ «®áì,
\ ¯®ª  ­¥ ¨á¯®«­¨âáï äà §  x TO name, § ¤ ¢ ­®¢®¥ §­ ç¥­¨¥ x,
\  áá®æ¨¨à®¢ ­­®¥ á name.
HEADER
CONSTANT-CODE COMPILE, ,
TOVALUE-CODE COMPILE,
;
: VECT ( -> )
( ᮧ¤ âì á«®¢®, ᥬ ­â¨ªã ¢ë¯®«­¥­¨ï ª®â®à®£® ¬®¦­® ¬¥­ïâì,
§ ¯¨áë¢ ï ¢ ­¥£® ­®¢ë© xt ¯® TO)
HEADER
VECT-CODE COMPILE, ['] NOOP ,
TOVALUE-CODE COMPILE,
;
 
: ->VARIABLE ( x "<spaces>name" -- ) \ 94
HEADER
CREATE-CODE COMPILE,
,
;
 
: USER-ALIGNED ( -- a-addr n )
USER-HERE 3 + 2 RSHIFT ( 4 / ) 4 * DUP
USER-HERE -
;
 
: USER-CREATE ( "<spaces>name" -- )
HEADER
HERE DOES>A ! ( ¤«ï DOES )
USER-CODE COMPILE,
USER-ALIGNED
USER-ALLOT ,
;
: USER ( "<spaces>name" -- ) \ «®ª «ì­ë¥ ¯¥à¥¬¥­­ë¥ ¯®â®ª 
USER-CREATE
4 USER-ALLOT
;
 
' _TOUSER-VALUE-CODE TO TOUSER-VALUE-CODE
 
: USER-VALUE ( "<spaces>name" -- ) \ 94 CORE EXT
HEADER
USER-VALUE-CODE COMPILE,
USER-ALIGNED SWAP ,
CELL+ USER-ALLOT
TOUSER-VALUE-CODE COMPILE,
;
 
: ->VECT ( x -> )
HEADER
VECT-CODE COMPILE, ,
TOVALUE-CODE COMPILE,
;
 
: : _: ;
 
: _: ( C: "<spaces>name" -- colon-sys ) \ 94
\ à®¯ãáâ¨âì ¢¥¤ã騥 à §¤¥«¨â¥«¨. ‚뤥«¨âì ¨¬ï, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬.
\ ‘®§¤ âì ®¯à¥¤¥«¥­¨¥ ¤«ï ¨¬¥­¨, ­ §ë¢ ¥¬®¥ "®¯à¥¤¥«¥­¨¥ ç¥à¥§ ¤¢®¥â®ç¨¥".
\ “áâ ­®¢¨âì á®áâ®ï­¨¥ ª®¬¯¨«ï樨 ¨ ­ ç âì ⥪ã饥 ®¯à¥¤¥«¥­¨¥, ¯®«ã稢
\ colon-sys. „®¡ ¢¨âì ᥬ ­â¨ªã ¨­¨æ¨ «¨§ æ¨¨, ®¯¨á ­­ãî ­¨¦¥, ¢ ⥪ã饥
\ ®¯à¥¤¥«¥­¨¥. ‘¥¬ ­â¨ª  ¢ë¯®«­¥­¨ï ¡ã¤¥â ®¯à¥¤¥«¥­  á«®¢ ¬¨, ᪮¬¯¨«¨à®-
\ ¢ ­­ë¬¨ ¢ ⥫® ®¯à¥¤¥«¥­¨ï. ’¥ªã饥 ®¯à¥¤¥«¥­¨¥ ¤®«¦­® ¡ëâì ­¥¢¨¤¨¬®
\ ¯à¨ ¯®¨áª¥ ¢ á«®¢ à¥ ¤® â¥å ¯®à, ¯®ª  ­¥ ¡ã¤¥â § ¢¥à襭®.
\ ˆ­¨æ¨ «¨§ æ¨ï: ( i*x -- i*x ) ( R: -- nest-sys )
\ ‘®åà ­¨âì ¨­ä®à¬ æ¨î nest-sys ® ¢ë§®¢¥ ®¯à¥¤¥«¥­¨ï. ‘®áâ®ï­¨¥ á⥪ 
\ i*x ¯à¥¤áâ ¢«ï¥â  à£ã¬¥­âë ¨¬¥­¨.
\ ˆ¬ï ‚믮«­¥­¨¥: ( i*x -- j*x )
\ ‚믮«­¨âì ®¯à¥¤¥«¥­¨¥ ¨¬¥­¨. ‘®áâ®ï­¨ï á⥪  i*x ¨ j*x ¯à¥¤áâ ¢«ïîâ
\  à£ã¬¥­âë ¨ १ã«ìâ âë ¨¬¥­¨ ᮮ⢥âá⢥­­®.
PARSE-WORD _SHEADER ]
HERE TO :-SET
;
 
\ S" ~mak\CompIF.f" INCLUDED
 
/programs/develop/SPForth/src/compiler/spf_error.f
0,0 → 1,34
( Îáðàáîòêà îøèáîê.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
Ðåâèçèÿ: Cåíòÿáðü 1999
)
 
VECT ERROR \ îáðàáîò÷èê îøèáîê (ABORT)
VECT (ABORT")
 
: (ABORT1") ( flag c-addr -- )
SWAP IF COUNT ER-U ! ER-A ! -2 THROW ELSE DROP THEN
;
 
CREATE ERRTIB C/L 1+ ALLOT
CREATE ERRFILE C/L 1+ ALLOT
VARIABLE ER>IN
VARIABLE SAVEERR?
VARIABLE >IN_WORD
 
: SAVEERR
DUP SAVEERR? @ AND
IF SOURCE ERRTIB $! >IN_WORD @ ER>IN ! SAVEERR? OFF
SOURCE-ID 999 HERE WITHIN
IF SOURCE-ID .NAME ZCOUNT C/L UMIN ERRFILE $!
THEN
THEN ;
 
: ERROR_DO
SAVEERR
CR ERRFILE COUNT TYPE
CR ERRTIB COUNT TYPE
CR ER>IN @ BEGIN SPACE 1- DUP 0 MAX 0= UNTIL ." ^" DROP
CR ." ERR=" .
CR S0 @ SP! STATE 0!
;
/programs/develop/SPForth/src/compiler/spf_find.f
0,0 → 1,149
( ®¨áª á«®¢ ¢ á«®¢ àïå ¨ ã¯à ¢«¥­¨¥ ¯®à浪®¬ ¯®¨áª .
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
Œ®¤¨ä¨æ¨à®¢ ­­® Œ ªá¨¬®¢ë¬ Œ.Ž.
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
â ¤ {812}105-92-03
â à {812}552-47-64
)
 
VECT FIND
 
0x10 CELLS CONSTANT CONTEXT_SIZE
 
CREATE SEARCH-BUFF 0x81 ALLOT
 
Code ZSEARCH-WORDLIST ;( z-addr wid -- 0 | xt 1 | xt -1 ) \ 94 SEARCH
;  ©â¨ ®¯à¥¤¥«¥­¨¥, § ¤ ­­®¥ áâப®© c-addr u ¢ ᯨ᪥ á«®¢, ¨¤¥­â¨ä¨æ¨à㥬®¬
; wid. …᫨ ®¯à¥¤¥«¥­¨¥ ­¥ ­ ©¤¥­®, ¢¥à­ãâì ­®«ì.
; …᫨ ®¯à¥¤¥«¥­¨¥ ­ ©¤¥­®, ¢¥à­ãâì ¢ë¯®«­¨¬ë© ⮪¥­ xt ¨ ¥¤¨­¨æã (1), ¥á«¨
; ®¯à¥¤¥«¥­¨¥ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï, ¨­ ç¥ ¬¨­ãá ¥¤¨­¨æã (-1).
; PUSH WORD PTR [EBP]
MOV EDX, [EBP]
PUSH EDX
MOV EAX, [EAX]
PUSH EAX
LEA EBP, [EBP+4]
CALL {' GETPR}
test eax, eax
JZ END
LEA EBP, [EBP-4]
mov [ebp],eax
MOVZX EAX, BYTE PTR [EDX-9]
DEC EAX
OR EAX,1
END: RET
EndCode
 
: SEARCH-WORDLIST ( c-addr u wid -- 0 | xt 1 | xt -1 )
>R 0x7F AND SEARCH-BUFF ASCII-Z
R> ZSEARCH-WORDLIST
 
;
 
: SFIND ( addr len --- addr len 0| xt 1|xt -1 )
\ Search all word lists in the search order for the name in the
\ counted string at c-addr. If not found return the name address and 0.
\ If found return the execution token xt and -1 if the word is non-immediate
\ and 1 if the word is immediate.
CONTEXT
BEGIN DUP @
WHILE >R
2DUP R@ @ SEARCH-WORDLIST ?DUP
IF RDROP 2NIP EXIT \ Exit if found.
THEN
R> CELL+
REPEAT @
;
 
: FIND1 ( c-addr -- c-addr 0 | xt 1 | xt -1 ) \ 94 SEARCH
\  áè¨à¨âì ᥬ ­â¨ªã CORE FIND á«¥¤ãî騬:
\ ˆáª âì ®¯à¥¤¥«¥­¨¥ á ¨¬¥­¥¬, § ¤ ­­ë¬ áâப®© á® áç¥â稪®¬ c-addr.
\ …᫨ ®¯à¥¤¥«¥­¨¥ ­¥ ­ ©¤¥­® ¯®á«¥ ¯à®á¬®âà  ¢á¥å ᯨ᪮¢ ¢ ¯®à浪¥ ¯®¨áª ,
\ ¢®§¢à â¨âì c-addr ¨ ­®«ì. …᫨ ®¯à¥¤¥«¥­¨¥ ­ ©¤¥­®, ¢®§¢à â¨âì xt.
\ …᫨ ®¯à¥¤¥«¥­¨¥ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï, ¢¥à­ãâì â ª¦¥ ¥¤¨­¨æã (1);
\ ¨­ ç¥ â ª¦¥ ¢¥à­ãâì ¬¨­ãá ¥¤¨­¨æã (-1). „«ï ¤ ­­®© áâப¨, §­ ç¥­¨ï,
\ ¢®§¢à é ¥¬ë¥ FIND ¢® ¢à¥¬ï ª®¬¯¨«ï樨, ¬®£ã⠮⫨ç âìáï ®â §­ ç¥­¨©,
\ ¢®§¢à é ¥¬ëå ­¥ ¢ ०¨¬¥ ª®¬¯¨«ï樨.
COUNT SFIND
DUP 0= IF 2DROP 1- 0 THEN ;
 
: DEFINITIONS ( -- ) \ 94 SEARCH
\ ‘¤¥« âì ᯨ᪮¬ ª®¬¯¨«ï樨 â®â ¦¥ ᯨ᮪ á«®¢, çâ® ¨ ¯¥à¢ë© ᯨ᮪ ¢ ¯®à浪¥
\ ¯®¨áª . ˆ¬¥­  ¯®á«¥¤ãîé¨å ®¯à¥¤¥«¥­¨© ¡ã¤ãâ ¯®¬¥é âìáï ¢ ᯨ᮪ ª®¬¯¨«ï樨.
\ ®á«¥¤ãî騥 ¨§¬¥­¥­¨ï ¯®à浪  ¯®¨áª  ­¥ ¢«¨ïîâ ­  ᯨ᮪ ª®¬¯¨«ï樨.
CONTEXT @ SET-CURRENT
;
 
: GET-ORDER_DROP ( CONTEXT -- widn .. wid1 )
DUP @ DUP IF >R CELL+ RECURSE R> EXIT THEN 2DROP ;
 
: GET-ORDER ( -- widn .. wid1 n )
DEPTH >R
CONTEXT GET-ORDER_DROP
DEPTH R> - ;
 
: SET-ORDER ( widn .. wid1 n -- )
DUP 0<
IF DROP ONLY
ELSE CONTEXT CONTEXT_SIZE ERASE
0
?DO CONTEXT I CELLS+ !
LOOP
THEN ;
 
 
: FORTH ( -- ) \ 94 SEARCH EXT
\ à¥®¡à §®¢ âì ¯®à冷ª ¯®¨áª , á®áâ®ï騩 ¨§ widn, ...wid2, wid1 (£¤¥ wid1
\ ¯à®á¬ âਢ ¥âáï ¯¥à¢ë¬) ¢ widn,... wid2, widFORTH-WORDLIST.
FORTH-WORDLIST CONTEXT !
;
 
: ONLY ( -- ) \ 94 SEARCH EXT
\ “áâ ­®¢¨âì ᯨ᮪ ¯®¨áª  ­  § ¢¨áï騩 ®â ॠ«¨§ æ¨¨ ¬¨­¨¬ «ì­ë© ᯨ᮪ ¯®¨áª .
\ Œ¨­¨¬ «ì­ë© ᯨ᮪ ¯®¨áª  ¤®«¦¥­ ¢ª«îç âì á«®¢  FORTH-WORDLIST ¨ SET-ORDER.
CONTEXT CELL+ 0!
FORTH
;
 
: ALSO ( -- ) \ 94 SEARCH EXT
\ à¥®¡à §®¢ âì ¯®à冷ª ¯®¨áª , á®áâ®ï騩 ¨§ widn, ...wid2, wid1 (£¤¥ wid1
\ ¯à®á¬ âਢ ¥âáï ¯¥à¢ë¬) ¢ widn,... wid2, wid1, wid1. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï
\ ¢®§­¨ª ¥â, ¥á«¨ ¢ ¯®à浪¥ ¯®¨áª  ᫨誮¬ ¬­®£® ᯨ᪮¢.
CONTEXT CONTEXT CELL+ CONTEXT_SIZE CMOVE> ;
 
 
: PREVIOUS ( -- ) \ 94 SEARCH EXT
\ à¥®¡à §®¢ âì ¯®à冷ª ¯®¨áª , á®áâ®ï騩 ¨§ widn, ...wid2, wid1 (£¤¥ wid1
\ ¯à®á¬ âਢ ¥âáï ¯¥à¢ë¬) ¢ widn,... wid2. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â,
\ ¥á«¨ ¯®à冷ª ¯®¨áª  ¡ë« ¯ãáâ ¯¥à¥¤ ¢ë¯®«­¥­¨¥¬ PREVIOUS.
_PREVIOUS ;
 
: _PREVIOUS ( -- ) \ 94 SEARCH EXT
CONTEXT CELL+ CONTEXT CONTEXT_SIZE CMOVE ;
 
: VOC-NAME. ( wid -- ) \ ­ ¯¥ç â âì ¨¬ï ᯨ᪠ á«®¢, ¥á«¨ ®­ ¨¬¥­®¢ ­
DUP FORTH-WORDLIST = IF DROP ." FORTH" EXIT THEN
\ DUP KERNEL-WORDLIST = IF DROP ." KERNEL" EXIT THEN
DUP CELL+ @ DUP IF ID. DROP ELSE DROP ." <NONAME>:" U. THEN
;
 
: ORDER ( -- ) \ 94 SEARCH EXT
\ ®ª § âì ᯨ᪨ ¢ ¯®à浪¥ ¯®¨áª , ®â ¯¥à¢®£® ¯à®á¬ âਢ ¥¬®£® ᯨ᪠ ¤®
\ ¯®á«¥¤­¥£®. ’ ª¦¥ ¯®ª § âì ᯨ᮪ á«®¢, ªã¤  ¯®¬¥é îâáï ­®¢ë¥ ®¯à¥¤¥«¥­¨ï.
\ ”®à¬ â ¨§®¡à ¦¥­¨ï § ¢¨á¨â ®â ॠ«¨§ æ¨¨.
\ ORDER ¬®¦¥â ¡ëâì ॠ«¨§®¢ ­ á ¨á¯®«ì§®¢ ­¨¥¬ á«®¢ ä®à¬ â­®£® ¯à¥®¡à §®¢ ­¨ï
\ ç¨á¥«. ‘«¥¤®¢ â¥«ì­® ®­ ¬®¦¥â à §àãè¨âì ¯¥à¥¬¥é ¥¬ãî ®¡« áâì,
\ ¨¤¥­â¨ä¨æ¨à㥬ãî #>.
GET-ORDER ." Context: "
0 ?DO ( DUP .) VOC-NAME. SPACE LOOP CR
." Current: " GET-CURRENT VOC-NAME. CR
;
 
: LATEST ( -> NFA )
CURRENT @ @
;
/programs/develop/SPForth/src/compiler/spf_find.f_L
0,0 → 1,428
ZZ=D0 ( ®¨áª á«®¢ ¢ á«®¢ àïå ¨ ã¯à ¢«¥­¨¥ ¯®à浪®¬ ¯®¨áª .
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
Œ®¤¨ä¨æ¨à®¢ ­­® Œ ªá¨¬®¢ë¬ Œ.Ž.
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
â ¤ {812}105-92-03
â à {812}552-47-64
)
 
VECT FIND
 
5A1F35 50 1F 5A 00 00 04 46 49 4E 44 A3 1E 5A 00 00 00 P.Z...FIND£.Z...
5A1F45 00 00 00 00 00 00 00 00 00 00 00 E8 93 01 FA FF ...........è“.úÿ
5A1F55 40 D2 59 00 E8 A6 01 FA FF @ÒY.è¦.úÿ
 
 
0x10 CELLS CONSTANT CONTEXT_SIZE
 
5A1F5E 80 1F 5A 00 00 0C 43 4F 4E 54 45 58 54 5F 53 49 €.Z...CONTEXT_SI
5A1F6E 5A 45 3A 1F 5A 00 00 00 00 00 00 00 00 00 00 00 ZE:.Z...........
5A1F7E 00 00 E8 B7 00 FA FF 40 00 00 00 ..è·.úÿ@...
 
 
CREATE SEARCH-BUFF 0x81 ALLOT
 
5A1F89 A0 1F 5A 00 00 0B 53 45 41 52 43 48 2D 42 55 46  .Z...SEARCH-BUF
5A1F99 46 63 1F 5A 00 00 00 E8 77 00 FA FF 00 00 00 00 Fc.Z...èw.úÿ....
5A1FA9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
5A1FB9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
5A1FC9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
5A2026 4D bytes
 
Code ZSEARCH-WORDLIST ;( z-addr wid -- 0 | xt 1 | xt -1 ) \ 94 SEARCH
 
5A2026 40 20 5A 00 00 10 5A 53 45 41 52 43 48 2D 57 4F @ Z...ZSEARCH-WO
5A2036 52 44 4C 49 53 54 8E 1F 5A 00 RDLISTŽ.Z.
 
;  ©â¨ ®¯à¥¤¥«¥­¨¥, § ¤ ­­®¥ áâப®© c-addr u ¢ ᯨ᪥ á«®¢, ¨¤¥­â¨ä¨æ¨à㥬®¬
; wid. …᫨ ®¯à¥¤¥«¥­¨¥ ­¥ ­ ©¤¥­®, ¢¥à­ãâì ­®«ì.
; …᫨ ®¯à¥¤¥«¥­¨¥ ­ ©¤¥­®, ¢¥à­ãâì ¢ë¯®«­¨¬ë© ⮪¥­ xt ¨ ¥¤¨­¨æã (1), ¥á«¨
; ®¯à¥¤¥«¥­¨¥ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï, ¨­ ç¥ ¬¨­ãá ¥¤¨­¨æã (-1).
; PUSH WORD PTR [EBP]
MOV EDX, [EBP]
 
5A2040 8B 55 00 ‹U.
 
PUSH EDX
 
5A2043 52 R
 
MOV EAX, [EAX]
 
5A2044 8B 00 ‹.
 
PUSH EAX
 
5A2046 50 P
 
LEA EBP, [EBP+4]
 
5A2047 8D 6D 04 m.
 
CALL {' GETPR}
 
5A204A E8 31 9E FC FF è1žüÿ
 
TEST EAX, EAX
 
5A204F 85 C0 …À
 
JZ m1
 
5A2051 0F 84 0E 00 00 00 .„....
 
LEA EBP, [EBP-4]
 
5A2057 8D 6D FC mü
 
MOV [EBP], EAX
 
5A205A 89 45 00 ‰E.
 
MOVZX EAX, BYTE PTR [EDX-9]
 
5A205D 0F B6 42 F7 .¶B÷
 
DEC EAX
 
5A2061 48 H
 
OR EAX, 1
 
5A2062 83 C8 01 ƒÈ.
 
m1: RET
 
5A2065 C3 Ã
 
EndCode
 
: SEARCH-WORDLIST ( c-addr u wid -- 0 | xt 1 | xt -1 )
 
5A2066 80 20 5A 00 00 0F 53 45 41 52 43 48 2D 57 4F 52 € Z...SEARCH-WOR
5A2076 44 4C 49 53 54 2B 20 5A 00 00 DLIST+ Z..
 
>R 0x7F AND SEARCH-BUFF ASCII-Z
 
5A2080 50 B8 7F 00 00 00 23 45 00 8D 6D 04 E8 0F FF FF P¸...#E.m.è.ÿÿ
5A2090 FF E8 2A C0 FF FF ÿè*Àÿÿ
 
R> ZSEARCH-WORDLIST
 
5A2096 89 45 FC 58 8D 6D FC E8 9E FF FF FF ‰EüXmüèžÿÿÿ
 
 
;
 
5A20A2 C3 Ã
 
 
: SFIND ( addr len --- addr len 0| xt 1|xt -1 )
 
5A20A3 C0 20 5A 00 00 05 53 46 49 4E 44 6B 20 5A 00 00 À Z...SFINDk Z..
5A20B3 00 00 00 00 00 00 00 00 00 00 00 00 00 .............
 
\ Search all word lists in the search order for the name in the
\ counted string at c-addr. If not found return the name address and 0.
\ If found return the execution token xt and -1 if the word is non-immediate
\ and 1 if the word is immediate.
CONTEXT
 
5A20C0 E8 23 07 FB FF è#.ûÿ
 
BEGIN DUP @
 
5A20C5 90 90 90 89 45 FC 8B 00 0B C0 8B ‰Eü‹..À‹
 
WHILE >R
 
5A20D0 45 FC 0F 84 41 00 00 00 50 8B 45 00 8B 55 04 Eü.„A...P‹E.‹U.
 
2DUP R@ @ SEARCH-WORDLIST ?DUP
 
5A20DF 89 45 00 89 55 FC 89 45 F8 8B 04 24 8B 00 8D 6D ‰E.‰Uü‰Eø‹.$‹.m
5A20EF F8 E8 8B FF FF FF E8 96 AA FF FF øè‹ÿÿÿ薪ÿÿ
 
IF RDROP 2NIP EXIT \ Exit if found.
 
5A20FA 0B C0 8B 45 00 8D 6D 04 74 09 83 C4 04 E8 04 C1 .À‹E.m.t.ƒÄ.è.Á
5A210A FF FF C3 ÿÿÃ
 
THEN
R> CELL+
 
5A210D 89 45 FC 58 8D 40 04 8D 6D FC ‰EüX@.mü
 
REPEAT @
 
5A2117 EB AF 8B 00 믋.
 
;
 
5A211B C3 Ã
 
 
: FIND1 ( c-addr -- c-addr 0 | xt 1 | xt -1 ) \ 94 SEARCH
 
5A211C 30 21 5A 00 00 05 46 49 4E 44 31 A8 20 5A 00 00 0!Z...FIND1¨ Z..
5A212C 00 00 00 00 ....
 
\  áè¨à¨âì ᥬ ­â¨ªã CORE FIND á«¥¤ãî騬:
\ ˆáª âì ®¯à¥¤¥«¥­¨¥ á ¨¬¥­¥¬, § ¤ ­­ë¬ áâப®© á® áç¥â稪®¬ c-addr.
\ …᫨ ®¯à¥¤¥«¥­¨¥ ­¥ ­ ©¤¥­® ¯®á«¥ ¯à®á¬®âà  ¢á¥å ᯨ᪮¢ ¢ ¯®à浪¥ ¯®¨áª ,
\ ¢®§¢à â¨âì c-addr ¨ ­®«ì. …᫨ ®¯à¥¤¥«¥­¨¥ ­ ©¤¥­®, ¢®§¢à â¨âì xt.
\ …᫨ ®¯à¥¤¥«¥­¨¥ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï, ¢¥à­ãâì â ª¦¥ ¥¤¨­¨æã (1);
\ ¨­ ç¥ â ª¦¥ ¢¥à­ãâì ¬¨­ãá ¥¤¨­¨æã (-1). „«ï ¤ ­­®© áâப¨, §­ ç¥­¨ï,
\ ¢®§¢à é ¥¬ë¥ FIND ¢® ¢à¥¬ï ª®¬¯¨«ï樨, ¬®£ã⠮⫨ç âìáï ®â §­ ç¥­¨©,
\ ¢®§¢à é ¥¬ëå ­¥ ¢ ०¨¬¥ ª®¬¯¨«ï樨.
COUNT SFIND
 
5A2130 8D 50 01 89 55 FC 0F B6 00 8D 6D FC E8 7F FF FF P.‰Uü.¶.müèÿÿ
5A2140 FF ÿ
 
DUP 0= IF 2DROP 1- 0 THEN ;
 
5A2141 0B C0 75 0E 8B 45 04 8D 40 FF 89 45 04 33 C0 8D .Àu.‹E.@ÿ‰E.3À
5A2151 6D 04 C3 m.Ã
 
 
: DEFINITIONS ( -- ) \ 94 SEARCH
 
5A2154 70 21 5A 00 00 0B 44 45 46 49 4E 49 54 49 4F 4E p!Z...DEFINITION
5A2164 53 21 21 5A 00 00 00 00 00 00 00 00 S!!Z........
 
\ ‘¤¥« âì ᯨ᪮¬ ª®¬¯¨«ï樨 â®â ¦¥ ᯨ᮪ á«®¢, çâ® ¨ ¯¥à¢ë© ᯨ᮪ ¢ ¯®à浪¥
\ ¯®¨áª . ˆ¬¥­  ¯®á«¥¤ãîé¨å ®¯à¥¤¥«¥­¨© ¡ã¤ãâ ¯®¬¥é âìáï ¢ ᯨ᮪ ª®¬¯¨«ï樨.
\ ®á«¥¤ãî騥 ¨§¬¥­¥­¨ï ¯®à浪  ¯®¨áª  ­¥ ¢«¨ïîâ ­  ᯨ᮪ ª®¬¯¨«ï樨.
CONTEXT @ SET-CURRENT
 
5A2170 E8 73 06 FB FF 8B 00 E8 C0 4E FA FF ès.ûÿ‹.èÀNúÿ
 
;
 
5A217C C3 Ã
 
 
: GET-ORDER_DROP ( CONTEXT -- widn .. wid1 )
 
5A217D A0 21 5A 00 00 0E 47 45 54 2D 4F 52 44 45 52 5F  !Z...GET-ORDER_
5A218D 44 52 4F 50 59 21 5A 00 00 00 00 00 00 00 00 00 DROPY!Z.........
5A219D 00 00 00 ...
 
DUP @ DUP IF >R CELL+ RECURSE R> EXIT THEN 2DROP ;
 
5A21A0 89 45 FC 8B 00 8D 6D FC 0B C0 74 17 50 8B 45 00 ‰Eü‹.mü.Àt.P‹E.
5A21B0 8D 40 04 8D 6D 04 E8 E5 FF FF FF 89 45 FC 58 8D @.m.èåÿÿÿ‰EüX
5A21C0 6D FC C3 8B 45 04 8D 6D 08 C3 müËE.m.Ã
 
 
: GET-ORDER ( -- widn .. wid1 n )
 
5A21CA E0 21 5A 00 00 09 47 45 54 2D 4F 52 44 45 52 82 à!Z...GET-ORDER‚
5A21DA 21 5A 00 00 00 00 !Z....
 
DEPTH >R
 
5A21E0 E8 EB E4 FF FF 50 8B 45 00 8D 6D 04 èëäÿÿP‹E.m.
 
CONTEXT GET-ORDER_DROP
 
5A21EC E8 F7 05 FB FF E8 AA FF FF FF è÷.ûÿèªÿÿÿ
 
DEPTH R> - ;
 
5A21F6 E8 D5 E4 FF FF 89 45 FC 58 F7 D8 03 45 FC C3 èÕäÿÿ‰EüX÷Ø.EüÃ
 
 
: SET-ORDER ( widn .. wid1 n -- )
 
5A2205 20 22 5A 00 00 09 53 45 54 2D 4F 52 44 45 52 CF "Z...SET-ORDERÏ
5A2215 21 5A 00 00 00 00 00 00 00 00 00 !Z.........
 
DUP 0<
 
5A2220 0B C0 7D 10 8B 45 00 8D 6D .À}.‹E.m
 
IF DROP ONLY
 
5A2229 04 E8 A9 07 FB FF E9 63 00 00 .è©.ûÿéc..
 
ELSE CONTEXT CONTEXT_SIZE ERASE
 
5A2233 00 E8 AF 05 FB FF E8 42 FD FF FF E8 5D BC FF FF .è¯.ûÿèBýÿÿè]¼ÿÿ
 
0
 
5A2243 89 45 FC 33 C0 8D 6D 04 ‰Eü3Àm.
 
?DO CONTEXT I CELLS+ !
 
5A224B BB 97 22 5A 00 3B 45 F8 75 05 8B 45 FC FF E3 53 »—"Z.;Eøu.‹EüÿãS
5A225B BB 00 00 00 80 2B 5D F8 53 03 D8 53 8B 45 FC E8 »...€+]øS.ØS‹Eüè
5A226B 79 05 FB FF 89 45 FC 8B 04 24 2B 44 24 04 8D 04 y.ûÿ‰Eü‹.$+D$..
5A227B 85 00 00 00 00 03 45 FC 8B 55 00 89 10 8B 45 04 ….....Eü‹U.‰.‹E.
5A228B 8D 6D 08 m.
 
LOOP
 
5A228E FF 04 24 71 D7 8D 64 24 0C ÿ.$q׍d$.
 
THEN ;
 
5A2297 C3 Ã
 
 
 
: FORTH ( -- ) \ 94 SEARCH EXT
 
5A2298 B0 22 5A 00 00 05 46 4F 52 54 48 0A 22 5A 00 00 °"Z...FORTH."Z..
5A22A8 00 00 00 00 00 00 00 00 ........
 
\ à¥®¡à §®¢ âì ¯®à冷ª ¯®¨áª , á®áâ®ï騩 ¨§ widn, ...wid2, wid1 (£¤¥ wid1
\ ¯à®á¬ âਢ ¥âáï ¯¥à¢ë¬) ¢ widn,... wid2, widFORTH-WORDLIST.
FORTH-WORDLIST CONTEXT !
 
5A22B0 E8 3F FF FA FF E8 2E 05 FB FF 8B 55 00 89 10 8B è?ÿúÿè..ûÿ‹U.‰.‹
5A22C0 45 04 8D 6D 08 E.m.
 
;
 
5A22C5 C3 Ã
 
 
: ONLY ( -- ) \ 94 SEARCH EXT
 
5A22C6 E0 22 5A 00 00 04 4F 4E 4C 59 9D 22 5A 00 00 00 à"Z...ONLY"Z...
5A22D6 00 00 00 00 00 00 00 00 00 00 ..........
 
\ “áâ ­®¢¨âì ᯨ᮪ ¯®¨áª  ­  § ¢¨áï騩 ®â ॠ«¨§ æ¨¨ ¬¨­¨¬ «ì­ë© ᯨ᮪ ¯®¨áª .
\ Œ¨­¨¬ «ì­ë© ᯨ᮪ ¯®¨áª  ¤®«¦¥­ ¢ª«îç âì á«®¢  FORTH-WORDLIST ¨ SET-ORDER.
CONTEXT CELL+ 0!
 
5A22E0 E8 03 05 FB FF 8D 40 04 C7 00 00 00 00 00 8B 45 è..ûÿ@.Ç.....‹E
5A22F0 00 8D 6D 04 .m.
 
FORTH
 
5A22F4 E8 B7 FF FF FF è·ÿÿÿ
 
;
 
5A22F9 C3 Ã
 
 
: ALSO ( -- ) \ 94 SEARCH EXT
 
5A22FA 10 23 5A 00 00 04 41 4C 53 4F CB 22 5A 00 00 00 .#Z...ALSOË"Z...
5A230A 00 00 00 00 00 00 ......
 
\ à¥®¡à §®¢ âì ¯®à冷ª ¯®¨áª , á®áâ®ï騩 ¨§ widn, ...wid2, wid1 (£¤¥ wid1
\ ¯à®á¬ âਢ ¥âáï ¯¥à¢ë¬) ¢ widn,... wid2, wid1, wid1. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï
\ ¢®§­¨ª ¥â, ¥á«¨ ¢ ¯®à浪¥ ¯®¨áª  ᫨誮¬ ¬­®£® ᯨ᪮¢.
CONTEXT CONTEXT CELL+ CONTEXT_SIZE CMOVE> ;
 
5A2310 E8 D3 04 FB FF E8 CE 04 FB FF 8D 40 04 E8 5E FC èÓ.ûÿèÎ.ûÿ@.è^ü
5A2320 FF FF E8 E9 B4 FF FF C3 ÿÿèé´ÿÿÃ
 
 
 
: PREVIOUS ( -- ) \ 94 SEARCH EXT
 
5A2328 40 23 5A 00 00 08 50 52 45 56 49 4F 55 53 FF 22 @#Z...PREVIOUSÿ"
5A2338 5A 00 00 00 00 00 00 00 Z.......
 
\ à¥®¡à §®¢ âì ¯®à冷ª ¯®¨áª , á®áâ®ï騩 ¨§ widn, ...wid2, wid1 (£¤¥ wid1
\ ¯à®á¬ âਢ ¥âáï ¯¥à¢ë¬) ¢ widn,... wid2. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â,
\ ¥á«¨ ¯®à冷ª ¯®¨áª  ¡ë« ¯ãáâ ¯¥à¥¤ ¢ë¯®«­¥­¨¥¬ PREVIOUS.
_PREVIOUS ;
 
5A2340 E8 9B 9D FC FF C3 蛝üÿÃ
 
 
: _PREVIOUS ( -- ) \ 94 SEARCH EXT
 
5A2346 60 23 5A 00 00 09 5F 50 52 45 56 49 4F 55 53 2D `#Z..._PREVIOUS-
5A2356 23 5A 00 00 00 00 00 00 00 00 #Z........
 
CONTEXT CELL+ CONTEXT CONTEXT_SIZE CMOVE ;
 
5A2360 E8 83 04 FB FF 8D 40 04 E8 7B 04 FB FF E8 0E FC èƒ.ûÿ@.è{.ûÿè.ü
5A2370 FF FF E8 49 B4 FF FF C3 ÿÿèI´ÿÿÃ
 
 
: VOC-NAME. ( wid -- ) \ ­ ¯¥ç â âì ¨¬ï ᯨ᪠ á«®¢, ¥á«¨ ®­ ¨¬¥­®¢ ­
 
5A2378 90 23 5A 00 00 09 56 4F 43 2D 4E 41 4D 45 2E 4B #Z...VOC-NAME.K
5A2388 23 5A 00 00 00 00 00 00 #Z......
 
DUP FORTH-WORDLIST = IF DROP ." FORTH" EXIT THEN
 
5A2390 89 45 FC 8D 6D FC E8 59 FE FA FF 33 45 00 8B 45 ‰EümüèYþúÿ3E.‹E
5A23A0 04 8D 6D 08 0F 85 18 00 00 00 8B 45 00 8D 6D 04 .m..…....‹E.m.
5A23B0 E8 A7 FD F9 FF 05 46 4F 52 54 48 00 E8 2F 9A FC è§ýùÿ.FORTH.è/šü
5A23C0 FF C3 ÿÃ
 
\ DUP KERNEL-WORDLIST = IF DROP ." KERNEL" EXIT THEN
DUP CELL+ @ DUP IF ID. DROP ELSE DROP ." <NONAME>:" U. THEN
 
5A23C2 89 45 FC 8B 40 04 8D 6D FC 0B C0 74 10 E8 CC F7 ‰Eü‹@.mü.Àt.èÌ÷
5A23D2 FF FF 8B 45 00 8D 6D 04 E9 20 00 00 00 8B 45 00 ÿÿ‹E.m.é ...‹E.
5A23E2 8D 6D 04 E8 72 FD F9 FF 09 3C 4E 4F 4E 41 4D 45 m.èrýùÿ.<NONAME
5A23F2 3E 3A 00 E8 F6 99 FC FF E8 09 3D FA FF >:.èö™üÿè.=úÿ
 
;
 
5A23FF C3 Ã
 
 
: ORDER ( -- ) \ 94 SEARCH EXT
 
5A2400 10 24 5A 00 00 05 4F 52 44 45 52 7D 23 5A 00 00 .$Z...ORDER}#Z..
 
\ ®ª § âì ᯨ᪨ ¢ ¯®à浪¥ ¯®¨áª , ®â ¯¥à¢®£® ¯à®á¬ âਢ ¥¬®£® ᯨ᪠ ¤®
\ ¯®á«¥¤­¥£®. ’ ª¦¥ ¯®ª § âì ᯨ᮪ á«®¢, ªã¤  ¯®¬¥é îâáï ­®¢ë¥ ®¯à¥¤¥«¥­¨ï.
\ ”®à¬ â ¨§®¡à ¦¥­¨ï § ¢¨á¨â ®â ॠ«¨§ æ¨¨.
\ ORDER ¬®¦¥â ¡ëâì ॠ«¨§®¢ ­ á ¨á¯®«ì§®¢ ­¨¥¬ á«®¢ ä®à¬ â­®£® ¯à¥®¡à §®¢ ­¨ï
\ ç¨á¥«. ‘«¥¤®¢ â¥«ì­® ®­ ¬®¦¥â à §àãè¨âì ¯¥à¥¬¥é ¥¬ãî ®¡« áâì,
\ ¨¤¥­â¨ä¨æ¨à㥬ãî #>.
GET-ORDER ." Context: "
 
5A2410 E8 CB FD FF FF E8 42 FD F9 FF 09 43 6F 6E 74 65 èËýÿÿèBýùÿ.Conte
5A2420 78 74 3A 20 00 E8 C6 99 FC FF xt: .èƙüÿ
 
0 ?DO ( DUP .) VOC-NAME. SPACE LOOP CR
 
5A242A 89 45 FC 33 C0 8D 6D 04 BB 64 24 5A 00 3B 45 F8 ‰Eü3Àm.»d$Z.;Eø
5A243A 75 05 8B 45 FC FF E3 53 BB 00 00 00 80 2B 5D F8 u.‹EüÿãS»...€+]ø
5A244A 53 03 D8 53 8B 45 FC E8 3A FF FF FF E8 9D 38 FA S.ØS‹Eüè:ÿÿÿè8ú
5A245A FF FF 04 24 71 F1 8D 64 24 0C E8 7F 36 FA FF ÿÿ.$qñd$.è6úÿ
 
." Current: " GET-CURRENT VOC-NAME. CR
 
5A2469 E8 EE FC F9 FF 09 43 75 72 72 65 6E 74 3A 20 00 èîüùÿ.Current: .
5A2479 E8 72 99 FC FF 89 45 FC 8B 87 58 18 00 00 8D 6D èr™üÿ‰Eü‹‡X...m
5A2489 FC E8 01 FF FF FF E8 54 36 FA FF üè.ÿÿÿèT6úÿ
 
;
 
5A2494 C3 Ã
 
 
: LATEST ( -> NFA )
 
5A2495 B0 24 5A 00 00 06 4C 41 54 45 53 54 05 24 5A 00 °$Z...LATEST.$Z.
5A24A5 00 00 00 00 00 00 00 00 00 00 00 ...........
 
CURRENT @ @
 
5A24B0 E8 1B 4B FA FF 8B 00 8B 00 è.Kúÿ‹.‹.
 
;
 
5A24B9 C3 Ã
 
ZZ=D0
/programs/develop/SPForth/src/compiler/spf_immed_control.f
0,0 → 1,132
( óÌÏ×Á ÎÅÍÅÄÌÅÎÎÏÇÏ ×ÙÐÏÌÎÅÎÉÑ, ÉÓÐÏÌØÚÕÅÍÙÅ ÐÒÉ ËÏÍÐÉÌÑÃÉÉ
ÓÔÒÕËÔÕÒ ÕÐÒÁ×ÌÅÎÉÑ × ÔÅÌÅ ×ÙÓÏËÏÕÒÏ×ÎÅ×ÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ.
ïó-ÎÅÚÁ×ÉÓÉÍÙÅ ÏÐÒÅÄÅÌÅÎÉÑ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ 16-ÒÁÚÒÑÄÎÏÇÏ × 32-ÒÁÚÒÑÄÎÙÊ ËÏÄ - 1995-96ÇÇ
òÅ×ÉÚÉÑ - ÓÅÎÔÑÂÒØ 1999
)
 
: IF \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: -- orig )
\ ðÏÌÏÖÉÔØ ÎÁ ÕÐÒÁ×ÌÑÀÝÉÊ ÓÔÅË ÐÏÚÉÃÉÀ ÎÏ×ÏÊ ÎÅÒÁÚÒÅÛÅÎÎÏÊ ÓÓÙÌËÉ ×ÐÅÒÅÄ orig.
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ.
\ óÅÍÁÎÔÉËÁ ÎÅÚÁ×ÅÒÛÅÎÁ, ÐÏËÁ orig ÎÅ ÒÁÚÒÅÛÉÔÓÑ, ÎÁÐÒÉÍÅÒ, ÐÏ THEN ÉÌÉ ELSE.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( x -- )
\ åÓÌÉ ×ÓÅ ÂÉÔÙ x ÎÕÌÅ×ÙÅ, ÐÒÏÄÏÌÖÁÔØ ×ÙÐÏÌÎÅÎÉÅ Ó ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ
\ ÒÁÚÒÅÛÅÎÉÅÍ orig.
?COMP DP @ ?BRANCH, >MARK 1
; IMMEDIATE
 
 
: ELSE \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: orig1 -- orig2 )
\ ðÏÌÏÖÉÔØ ÎÁ ÕÐÒÁ×ÌÑÀÝÉÊ ÓÔÅË ÐÏÚÉÃÉÀ ÎÏ×ÏÊ ÎÅÒÁÚÒÅÛÅÎÎÏÊ ÓÓÙÌËÉ ×ÐÅÒÅÄ orig2.
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ.
\ óÅÍÁÎÔÉËÁ ÎÅÚÁ×ÅÒÛÅÎÁ, ÐÏËÁ orig2 ÎÅ ÒÁÚÒÅÛÉÔÓÑ (ÎÁÐÒÉÍÅÒ, ÐÏ THEN).
\ òÁÚÒÅÛÉÔØ ÓÓÙÌËÕ ×ÐÅÒÅÄ orig1, ÉÓÐÏÌØÚÕÑ ÐÏÚÉÃÉÀ ÓÌÅÄÕÀÝÅÊ ÄÏÂÁ×ÌÅÎÎÏÊ
\ ÓÅÍÁÎÔÉËÉ ×ÙÐÏÌÎÅÎÉÑ.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( -- )
\ ðÒÏÄÏÌÖÉÔØ ×ÙÐÏÌÎÅÎÉÅ Ó ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ ÒÁÚÒÅÛÅÎÉÅÍ orig2.
?COMP DP @ BRANCH,
>ORESOLVE
>MARK 2
; IMMEDIATE
 
: THEN \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: orig -- )
\ òÁÚÒÅÛÉÔØ ÓÓÙÌËÕ ×ÐÅÒÅÄ orig, ÉÓÐÏÌØÚÕÑ ÐÏÚÉÃÉÀ ÓÅÍÁÎÔÉËÉ ×ÙÐÏÌÎÅÎÉÑ.
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( -- )
\ ðÒÏÄÏÌÖÉÔØ ×ÙÐÏÌÎÅÎÉÅ.
?COMP \ HERE TO :-SET
>ORESOLVE
; IMMEDIATE
 
: BREAK
POSTPONE EXIT POSTPONE THEN ; IMMEDIATE
 
: BEGIN \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: -- dest )
\ ðÏÌÏÖÉÔØ ÓÌÅÄÕÀÝÕÀ ÐÏÚÉÃÉÀ ÐÅÒÅÄÁÞÉ ÕÐÒÁ×ÌÅÎÉÑ, dest, ÎÁ ÕÐÒÁ×ÌÑÀÝÉÊ ÓÔÅË.
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( -- )
\ ðÒÏÄÏÌÖÉÔØ ×ÙÐÏÌÎÅÎÉÅ.
?COMP
4 ALIGN-NOP
\ HERE TO :-SET
<MARK 3
; IMMEDIATE
 
: UNTIL \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: dest -- )
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ.
\ òÁÚÒÅÛÉÔØ ÓÓÙÌËÕ ÎÁÚÁÄ dest.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( x -- )
\ åÓÌÉ ×ÓÅ ÂÉÔÙ x ÎÕÌÅ×ÙÅ, ÐÒÏÄÏÌÖÁÔØ ×ÙÐÏÌÎÅÎÉÅ Ó ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ dest.
?COMP 3 <> IF -2004 THROW THEN \ ABORT" UNTIL ÂÅÚ BEGIN !"
?BRANCH,
0xFFFFFF80 DP @ 4 - @ U<
IF DP @ 5 - W@ 0x3F0 + DP @ 6 - W! -4 ALLOT
THEN
; IMMEDIATE
 
: WHILE \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: dest -- orig dest )
\ ðÏÌÏÖÉÔØ ÐÏÚÉÃÉÀ ÎÏ×ÏÊ ÎÅÒÁÚÒÅÛÅÎÎÏÊ ÓÓÙÌËÉ ×ÐÅÒÅÄ orig ÎÁ ÕÐÒÁ×ÌÑÀÝÉÊ ÓÔÅË
\ ÐÏÄ ÉÍÅÀÝÉÍÓÑ dest. äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë
\ ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ. óÅÍÁÎÔÉËÁ ÎÅÚÁ×ÅÒÛÅÎÁ, ÐÏËÁ orig É dest ÎÅ ÒÁÚÒÅÛÁÔÓÑ
\ (ÎÁÐÒÉÍÅÒ, ÐÏ REPEAT).
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( x -- )
\ åÓÌÉ ×ÓÅ ÂÉÔÙ x ÎÕÌÅ×ÙÅ, ÐÒÏÄÏÌÖÁÔØ ×ÙÐÏÌÎÅÎÉÅ Ó ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ
\ ÒÁÚÒÅÛÅÎÉÅÍ orig.
?COMP [COMPILE] IF
2SWAP
; IMMEDIATE
 
: REPEAT \ 94
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: orig dest -- )
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ,
\ ÒÁÚÒÅÛÉ× ÓÓÙÌËÕ ÎÁÚÁÄ dest. òÁÚÒÅÛÉÔØ ÓÓÙÌËÕ ×ÐÅÒÅÄ orig, ÉÓÐÏÌØÚÕÑ
\ ÐÏÚÉÃÉÀ ÄÏÂÁ×ÌÅÎÎÏÊ ÓÅÍÁÎÔÉËÉ ×ÙÐÏÌÎÅÎÉÑ.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( -- )
\ ðÒÏÄÏÌÖÉÔØ ×ÙÐÏÌÎÅÎÉÅ Ó ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ dest.
?COMP
3 <> IF -2005 THROW THEN \ ABORT" REPEAT ÂÅÚ BEGIN !"
DUP DP @ 2+ - DUP
SHORT?
IF SetJP 0xEB C, C, DROP
ELSE DROP BRANCH, THEN
>ORESOLVE
; IMMEDIATE
 
: AGAIN \ 94 CORE EXT
\ éÎÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( C: dest -- )
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ, ÄÁÎÎÕÀ ÎÉÖÅ, Ë ÔÅËÕÝÅÍÕ ÏÐÒÅÄÅÌÅÎÉÀ,
\ ÒÁÚÒÅÛÉ× ÓÓÙÌËÕ ÎÁÚÁÄ dest.
\ ÷ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ: ( -- )
\ ðÒÏÄÏÌÖÉÔØ ×ÙÐÏÌÎÅÎÉÅ Ó ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ dest. åÓÌÉ ÄÒÕÇÉÅ ÕÐÒÁ×ÌÑÀÝÉÅ ÓÌÏ×Á
\ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ, ÔÏ ÌÀÂÏÊ ÐÒÏÇÒÁÍÍÎÙÊ ËÏÄ ÐÏÓÌÅ AGAIN ÎÅ ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ.
?COMP 3 <> IF -2006 THROW THEN \ ABORT" AGAIN ÂÅÚ BEGIN !"
DUP DP @ 2+ - DUP
SHORT?
IF SetJP 0xEB C, C, DROP
ELSE DROP BRANCH, THEN DP @ TO :-SET
; IMMEDIATE
 
: RECURSE \ 94
\ éÔÅÒÐÒÅÔÁÃÉÑ: ÓÅÍÁÎÔÉËÁ ÎÅ ÏÐÒÅÄÅÌÅÎÁ.
\ ëÏÍÐÉÌÑÃÉÑ: ( -- )
\ äÏÂÁ×ÉÔØ ÓÅÍÁÎÔÉËÕ ×ÙÐÏÌÎÅÎÉÑ ÔÅËÕÝÅÇÏ ÏÐÒÅÄÅÌÅÎÉÑ × ÔÅËÕÝÅÅ ÏÐÒÅÄÅÌÅÎÉÅ.
\ îÅÏÄÎÏÚÎÁÞÎÁÑ ÓÉÔÕÁÃÉÑ ×ÏÚÎÉËÁÅÔ, ÅÓÌÉ RECURSE ÉÓÐÏÌØÚÕÅÔÓÑ ÐÏÓÌÅ DOES>.
?COMP
LAST-NON DUP 0=
IF DROP LATEST NAME> THEN _COMPILE,
; IMMEDIATE
/programs/develop/SPForth/src/compiler/spf_immed_lit.f
0,0 → 1,147
( Ñëîâà íåìåäëåííîãî âûïîëíåíèÿ, èñïîëüçóåìûå ïðè êîìïèëÿöèè
÷èñëîâûõ è ñòðî÷íûõ ëèòåðàëîâ â òåëî âûñîêîóðîâíåâîãî îïðåäåëåíèÿ.
ÎÑ-íåçàâèñèìûå îïðåäåëåíèÿ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
Ïðåîáðàçîâàíèå èç 16-ðàçðÿäíîãî â 32-ðàçðÿäíûé êîä - 1995-96ãã
Ðåâèçèÿ - ñåíòÿáðü 1999
Ìîäèôèöèðîâàííî Ìàêñèìîâûì Ì.Î.
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
ò ä {812}105-92-03
ò ð {812}552-47-64
)
 
: [LIT], DUP
[ 0x058D W, ' DUP , ] INLINE,
0x058D W, , ;
 
\ 0 [IF]
: ['] \ 94
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( "<spaces>name" -- )
\ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëîì. Íàéòè name.
\ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Íåîïðåäåëåííàÿ ñèòóàöèÿ âîçíèêàåò, åñëè name íå íàéäåíî.
\ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ,
\ Âðåìÿ âûïîëíåíèÿ: ( -- xt )
\ Ïîëîæèòü âûïîëíèìûé òîêåí èìåíè xt íà ñòåê. Âûïîëíèìûé òîêåí, âîçâðàùàåìûé
\ ñêîìïèëèðîâàííîé ôðàçîé "['] X" ÿâëÿåòñÿ òåì æå çíà÷åíèåì, ÷òî è âîçâðàùàåìîå
\ "' X" âíå ñîñòîÿíèÿ êîìïèëÿöèè.
?COMP ' [LIT],
; IMMEDIATE
\ [THEN]
 
: LITERAL \ 94 CORE
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( x -- )
\ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- x )
\ Ïîëîæèòü x íà ñòåê.
STATE @ IF LIT, THEN
; IMMEDIATE
 
: 2LITERAL \ 94 DOUBLE
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( x1 x2 -- )
\ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- x1 x2 )
\ Ïîëîæèòü ïàðó ÿ÷ååê x1 x2 íà ñòåê.
STATE @ IF DLIT, THEN
; IMMEDIATE
 
: SLITERAL \ 94 STRING
PSLITERAL ; IMMEDIATE
 
: PSLITERAL
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( c-addr1 u -- )
\ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- c-addr2 u )
\ Âîçâðàòèòü c-addr2 u, îïèñûâàþùèå ñòðîêó, ñîñòîÿùóþ èç ñèìâîëîâ, çàäàííûõ
\ c-addr1 u âî âðåìÿ êîìïèëÿöèè. Ïðîãðàììà íå ìîæåò ìåíÿòü âîçâðàùåííóþ
\ ñòðîêó.
 
STATE @ IF SLIT, \ ELSE 2DUP + 0 SWAP C!
THEN
;
 
 
: S" \ 94+FILE
\ Èíòåðïðåòàöèÿ: ( "ccc<quote>" -- c-addr u )
\ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Çàïèñàòü ïîëó÷åííóþ
\ ñòðîêó c-addr u âî âðåìåííûé áóôåð. Ìàêñèìàëüíàÿ äëèíà âðåìåííîãî
\ áóôåðà çàâèñèò îò ðåàëèçàöèè, íî íå ìîæåò áûòü ìåíüøå 80 ñèìâîëîâ.
\ Ñëåäóþùåå èñïîëüçîâàíèå S" ìîæåò ïåðåïèñàòü âðåìåííûé áóôåð.
\ Îáåñïå÷èâàåòñÿ êàê ìèíèìóì îäèí òàêîé áóôåð.
\ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
\ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü ñåìàíòèêó
\ âðåìåíè âûïîëíåíèÿ, îïèñàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- c-addr u )
\ Âåðíóòü c-addr è u, êîòîðûå îïèñûâàþò ñòðîêó, ñîñòîÿùóþ èç ñèìâîëîâ ccc.
[CHAR] " PARSE [COMPILE] SLITERAL
; IMMEDIATE
 
: C" \ 94 CORE EXT
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
\ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè) è äîáàâèòü
\ ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- c-addr )
\ Âîçâðàòèòü c-addr, ñòðîêó ñî ñ÷åò÷èêîì, ñîñòîÿùóþ èç ñèìâîëîâ ccc.
\ Ïðîãðàììà íå äîëæíà ìåíÿòü âîçâðàùåííóþ ñòðîêó.
 
[CHAR] " WORD [COMPILE] CLITERAL
 
; IMMEDIATE
 
: CLITERAL ( addr -- )
STATE @ IF CLIT, THEN
; IMMEDIATE
 
: ." \ 94
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
\ Âûäåëèòü ccc, îãðàíè÷åííîå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü ñåìàíòèêó âðåìåíè
\ âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- )
\ Âûâåñòè ccc íà ýêðàí.
?COMP
[COMPILE] S"
['] TYPE COMPILE,
; IMMEDIATE
 
: [CHAR] \ 94
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( "<spaces>name" -- )
\ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëàìè. Äîáàâèòü
\ ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( -- char )
\ Ïîëîæèòü char, çíà÷åíèå ïåðâîãî ñèìâîëà name, íà ñòåê.
?COMP
PARSE-WORD DROP C@ [COMPILE] LITERAL
; IMMEDIATE
 
 
: ABORT" \ 94
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
\ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü îïèñàííóþ
\ íèæå ñåìàíòèêó âðåìåíè âûïîëíåíèÿ â òåêóùåå îïðåäåëåíèå.
\ Âûïîëíåíèå: ( i*x x1 -- | i*x )
\ Óáðàòü x1 ñî ñòåêà. Åñëè ëþáîé áèò x1 íåíóëåâîé, âûâåñòè íà ýêðàí ccc è
\ âûïîëíèòü çàâèñÿùèå îò ðåàëèçàöèè äåéñòâèÿ, âêëþ÷àþùèå ABORT.
\ : ABORT" \ 94 EXCEPTION EXT
\ Ðàñøèðèòü ñåìàíòèêó CORE ABORT" ÷òîáû áûëî:
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
\ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü ñåìàíòèêó
\ âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
\ Âðåìÿ âûïîëíåíèÿ: ( i*x x1 -- | i*x ) ( R: j*x -- | j*x )
\ Óáðàòü x1 ñî ñòåêà. Åñëè ëþáîé áèò x1 íåíóëåâîé, âûïîëíèòü ôóíêöèþ
\ -2 THROW, âûâîäÿ ccc, åñëè íà ñòåêå èñêëþ÷åíèé íåò êàäðà èñêëþ÷åíèé.
?COMP
?COMP [COMPILE] C"
['] (ABORT") COMPILE,
 
; IMMEDIATE
 
/programs/develop/SPForth/src/compiler/spf_immed_loop.f
0,0 → 1,133
( ‘«®¢  ­¥¬¥¤«¥­­®£® ¢ë¯®«­¥­¨ï, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ª®¬¯¨«ï樨
横«®¢ ¢ ⥫¥ ¢ë᮪®ã஢­¥¢®£® ®¯à¥¤¥«¥­¨ï.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
 
HEX
 
 
: DO \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ Š®¬¯¨«ïæ¨ï: ( C: -- do-sys )
\ ®«®¦¨âì do-sys ­  á⥪ ã¯à ¢«¥­¨ï. „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï,
\ ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î. ‘¥¬ ­â¨ª  ­¥§ ¢¥à襭  ¤® à §à¥è¥­¨ï
\ ¯®âॡ¨â¥«¥¬ do-sys, â ª¨¬ ª ª LOOP.
\ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( n1|u1 n2|u2 -- ) ( R: -- loop-sys )
\ “áâ ­®¢¨âì ¯ à ¬¥âàë 横«  ­  ¨­¤¥ªá n2|u2 ¨ ¯à¥¤¥« n1|u1. ¥®¯à¥¤¥«¥­­ ï
\ á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n1|u1 ¨ n2|u2 ­¥ ®¤­®£® ⨯ . ‚á¥, ç⮠㦥
\ ­ å®¤¨«®áì ­  á⥪¥ ¢®§¢à â®¢, áâ ­®¢¨âáï ­¥¤®áâã¯­ë¬ ¤® â¥å ¯®à, ¯®ª  ­¥
\ ¡ã¤ãâ ã¡à ­ë ¯ à ¬¥âàë 横« .
?COMP
['] C-DO INLINE,
SetOP 0x68 C, DP @ 4 ALLOT
SetOP 0x52 C, \ PUSH EDX
SetOP 0x53 C, \ PUSH EBX
4 ALIGN-NOP
DP @ DUP TO :-SET
; IMMEDIATE
 
: ?DO \ 94 CORE EXT
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ Š®¬¯¨«ïæ¨ï: ( C: -- do-sys )
\ ®«®¦¨âì do-sys ­  á⥪ ã¯à ¢«¥­¨ï. „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï,
\ ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î. ‘¥¬ ­â¨ª  ­¥§ ¢¥à襭  ¤® à §à¥è¥­¨ï
\ ¯®âॡ¨â¥«¥¬ do-sys, â ª¨¬ ª ª LOOP.
\ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( n1|u1 n2|u2 -- ) ( R: -- | loop-sys )
\ …᫨ n1|u1 à ¢­® n2|u2, ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ á ¬¥áâ , ¤ ­­®£® ¯®âॡ¨â¥«¥¬
\ do-sys. ˆ­ ç¥ ãáâ ­®¢¨âì ¯ à ¬¥âàë 横«  ­  ¨­¤¥ªá n2|u2 ¨ ¯à¥¤¥« n1|u1
\ ¨ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áࠧ㠧  ?DO. ¥®¯à¥¤¥«¥­­ ï
\ á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n1|u1 ¨ n2|u2 ­¥ ®¤­®£® ⨯ . ‚á¥, ç⮠㦥
\ ­ å®¤¨«®áì ­  á⥪¥ ¢®§¢à â®¢, áâ ­®¢¨âáï ­¥¤®áâã¯­ë¬ ¤® â¥å ¯®à, ¯®ª  ­¥
\ ¡ã¤ãâ ã¡à ­ë ¯ à ¬¥âàë 横« .
?COMP
OP0 @ :-SET UMAX TO :-SET
['] NIP DUP INLINE, INLINE,
0xBB C, HERE 4 ALLOT
['] C-?DO INLINE,
DP @ DUP TO :-SET
; IMMEDIATE
 
: LOOP \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ( C: do-sys -- )
\ „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
\  §à¥è¨âì ¢á¥ ¯®ï¢«¥­¨ï LEAVE ¬¥¦¤ã ¯®§¨æ¨¥©, ¤ ­­®© do-sys ¨ á«¥¤ãî饩
\ ¯®§¨æ¨¥© ¯¥à¥¤ ç¨ ã¯à ¢«¥­¨ï ¤«ï ¢ë¯®«­¥­¨ï á«®¢ §  LOOP.
\ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( -- ) ( R: loop-sys1 -- | loop-sys2 )
\ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横«  ­¥¤®áâ㯭ë.
\ à¨¡ ¢¨âì ¥¤¨­¨æã ª ¨­¤¥ªáã 横« . …᫨ ¨­¤¥ªá 横«  áâ « à ¢­ë¬ ¯à¥¤¥«ã,
\ ã¡à âì ¯ à ¬¥âàë 横«  ¨ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áࠧ㠧  横«®¬. ˆ­ ç¥
\ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ á ­ ç «  横« .
?COMP
24 04FF W, C, \ inc dword [esp]
HERE 2+ - DUP SHORT? SetOP SetJP
IF
71 C, C, \ jno short
ELSE
4 - 0F C, 81 C, , \ jno near
THEN SetOP
0C24648D , \ lea esp, 0c [esp]
DP @ SWAP !
; IMMEDIATE
 
: +LOOP \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ( C: do-sys -- )
\ „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
\  §à¥è¨âì ¢á¥ ¯®ï¢«¥­¨ï LEAVE ¬¥¦¤ã ¯®§¨æ¨¥©, ¤ ­­®© do-sys ¨ á«¥¤ãî饩
\ ¯®§¨æ¨¥© ¯¥à¥¤ ç¨ ã¯à ¢«¥­¨ï ¤«ï ¢ë¯®«­¥­¨ï á«®¢ §  LOOP.
\ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( n -- ) ( R: loop-sys1 -- | loop-sys2 )
\ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横«  ­¥¤®áâ㯭ë.
\ à¨¡ ¢¨âì n ª ¨­¤¥ªáã 横« . …᫨ ¨­¤¥ªá 横«  ­¥ ¯¥à¥á¥ª £à ­¨æã ¬¥¦¤ã
\ ¯à¥¤¥«®¬ 横«  ¬¨­ãá ¥¤¨­¨æ  ¨ ¯à¥¤¥«®¬ 横« , ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ á
\ ­ ç «  横« . ˆ­ ç¥ ã¡à âì ¯ à ¬¥âàë 横«  ¨ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áà §ã
\ §  横«®¬.
?COMP
['] ADD[ESP],EAX INLINE,
['] DROP INLINE,
HERE 2+ - DUP SHORT? SetOP SetJP
IF
71 C, C, \ jno short
ELSE
4 - 0F C, 81 C, , \ jno near
THEN SetOP
0C24648D , \ lea esp, 0c [esp]
DP @ SWAP !
; IMMEDIATE
 
: I \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ ‚믮«­¥­¨¥: ( -- n|u ) ( R: loop-sys -- loop-sys )
\ n|u - ª®¯¨ï ⥪ã饣® (¢­ãâ७­¥£®) ¨­¤¥ªá  横« . ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï
\ ¢®§­¨ª ¥â, ¥á«¨ ¯ à¬¥âàë 横«  ­¥¤®áâ㯭ë.
?COMP ['] C-I INLINE,
; IMMEDIATE
 
: J \ 94
?COMP ['] C-J INLINE,
; IMMEDIATE
 
: LEAVE \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ ‚믮«­¥­¨¥: ( -- ) ( R: loop-sys -- )
\ “¡à âì ⥪ã騥 ¯ à ¬¥âàë 横« . ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨
\ ®­¨ ­¥¤®áâ㯭ë. à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áࠧ㠧  ᠬ묨 ¢­ãâ७­¨¬¨ DO ... LOOP
\ ¨«¨ DO ... +LOOP.
?COMP
SetOP 0824648D , \ lea esp, 08 [esp]
SetOP C3 C, \ ret
; IMMEDIATE
 
: UNLOOP \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ ‚믮«­¥­¨¥: ( -- ) ( R: loop-sys -- )
\ “¡à âì ¯ à ¬¥âàë 横«  ⥪ã饣® ã஢­ï. UNLOOP âॡã¥âáï ¤«ï ª ¦¤®£®
\ ã஢­ï ¢«®¦¥­¨ï 横«®¢ ¯¥à¥¤ ¢ë室®¬ ¨§ ®¯à¥¤¥«¥­¨ï ¯® EXIT.
\ ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横«  ­¥¤®áâ㯭ë.
?COMP
SetOP 0C24648D , \ lea esp, 0c [esp]
; IMMEDIATE
 
DECIMAL
/programs/develop/SPForth/src/compiler/spf_immed_transl.f
0,0 → 1,120
( ‘«®¢  ­¥¬¥¤«¥­­®£® ¢ë¯®«­¥­¨ï, ¨á¯®«ì§ã¥¬ë¥ ¢ ०¨¬¥ ª®¬¯¨«ï樨.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
Œ®¤¨ä¨æ¨à®¢ ­­® Œ ªá¨¬®¢ë¬ Œ.Ž.
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
â ¤ {812}105-92-03
â à {812}552-47-64
)
 
: TO \ 94 CORE EXT
\ ˆ­â¥à¯à¥â æ¨ï: ( x "<spaces>name" -- )
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë ¨ ¢ë¤¥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬.
\ ‡ ¯¨á âì x ¢ name. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ name ­¥
\ ®¯à¥¤¥«¥­® ç¥à¥§ VALUE.
\ Š®¬¯¨«ïæ¨ï: ( "<spaces>name" -- )
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë ¨ ¢ë¤¥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬.
\ „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
\ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ name ­¥ ®¯à¥¤¥«¥­® ç¥à¥§ VALUE.
\ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( x -- )
\ ‡ ¯¨á âì x ¢ name.
\ à¨¬¥ç ­¨¥: ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ POSTPONE ¨«¨ [COMPILE]
\ ¯à¨¬¥­ïîâáï ª TO.
'
>BODY CELL+ STATE @
IF COMPILE, ELSE EXECUTE THEN
; IMMEDIATE
 
: COMPILE,_M COMPILE, ;
 
: POSTPONE \ 94
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥ ®¯à¥¤¥«¥­ .
\ Š®¬¯¨«ïæ¨ï: ( "<spaces>name" -- )
\ à®¯ãáâ¨âì ¢¥¤ã騥 à §¤¥«¨â¥«¨. ‚뤥«¨âì ¨¬ï, ®£à ­¨ç¥­­®¥ ¯à®¡¥« ¬¨.
\  ©â¨ ¨¬ï. „®¡ ¢¨âì ᥬ ­â¨ªã ª®¬¯¨«ï樨 ¨¬¥­¨ ¢ ⥪ã饥 ®¯à¥¤¥«¥­¨¥.
?COMP
PARSE-WORD SFIND DUP
0= IF -321 THROW THEN
1 = IF COMPILE,
ELSE LIT, ['] COMPILE,_M COMPILE, THEN
; IMMEDIATE
 
: \ \ 94 CORE EXT
\ Š®¬¯¨«ïæ¨ï: ‚믮«­¨âì ᥬ ­â¨ªã ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥.
\ ‚믮«­¥­¨¥: ( "ccc<eol>" -- )
\ ‚뤥«¨âì ¨ ®â¡à®á¨âì ®áâ â®ª à §¡¨à ¥¬®© ®¡« áâ¨.
\ \ - á«®¢® ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï.
1 PARSE 2DROP
; IMMEDIATE
 
: .( \ 94 CORE EXT
\ Š®¬¯¨«ïæ¨ï: ‚믮«­¨âì ᥬ ­â¨ªã ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥.
\ ‚믮«­¥­¨¥: ( "ccc<paren>" -- )
\ ‚뤥«¨âì ¨ ¢ë¢¥á⨠­  ¤¨á¯«¥© ccc, ®£à ­¨ç¥­­ë¥ ¯à ¢®© ᪮¡ª®© ")".
\ .( - á«®¢® ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï.
[CHAR] ) PARSE TYPE
; IMMEDIATE
 
: ( ( "ccc<paren>" -- ) \ 94 FILE
\  áè¨à¨âì ᥬ ­â¨ªã CORE (, ¢ª«î稢:
\ Š®£¤  à §¡¨à ¥âáï ⥪áâ®¢ë© ä ©«, ¥á«¨ ª®­¥æ à §¡¨à ¥¬®© ®¡« á⨠¤®á⨣­ãâ
\ à ­ìè¥, 祬 ­ ©¤¥­  ¯à ¢ ï ᪮¡ª , á­®¢  § ¯®«­¨âì ¢å®¤­®© ¡ãä¥à á«¥¤ãî饩
\ áâப®© ¨§ ä ©« , ãáâ ­®¢¨âì >IN ¢ ­®«ì ¨ ¯à®¤®«¦ âì à §¡®à, ¯®¢â®àïï
\ íâ®â ¯à®æ¥áá ¤® â¥å ¯®à, ¯®ª  ­¥ ¡ã¤¥â ­ ©¤¥­  ¯à ¢ ï ᪮¡ª  ¨«¨ ­¥
\ ¡ã¤¥â ¤®á⨣­ãâ ª®­¥æ ä ©« .
BEGIN
[CHAR] ) DUP PARSE + C@ = 0=
WHILE
REFILL 0= IF EXIT THEN
REPEAT
; IMMEDIATE
 
: [COMPILE] \ 94 CORE EXT
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ Š®¬¯¨«ïæ¨ï: ( "<spaces>name" -- )
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë. ‚뤥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥« ¬¨.
\  ©â¨ name. …᫨ ¨¬ï ¨¬¥¥â ¨­ãî ᥬ ­â¨ªã ª®¬¯¨«ï樨, 祬 "¯®-㬮«ç ­¨î",
\ ¤®¡ ¢¨âì ¥¥ ¢ ⥪ã饥 ®¯à¥¤¥«¥­¨¥; ¨­ ç¥ ¤®¡ ¢¨âì ᥬ ­â¨ªã ¢ë¯®«­¥­¨ï name.
\ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ name ­¥ ­ ©¤¥­®.
?COMP
'
COMPILE,
; IMMEDIATE
 
: ; [;] ; IMMEDIATE
 
: [;] ( -- )
RET, [COMPILE] [ REVEAL
ClearJpBuff
0 TO LAST-NON
;
 
: EXIT
RET,
; IMMEDIATE
 
: \EOF ( -- )
\ ‡ ª ­ç¨¢ ¥â âà ­á«ïæ¨î ⥪ã饣® ¯®â®ª 
BEGIN REFILL 0= UNTIL
POSTPONE \
;
 
: FIELD ( offset size "new-name< >" -- offset+size )
: OVER
DUP IF DUP LIT, ['] + COMPILE,
THEN DROP
POSTPONE ;
+ ;
 
0 [IF]
: --
CREATE OVER , +
(DOES1) (DOES2) @ +
;
 
[ELSE]
: -- FIELD ;
[THEN]
/programs/develop/SPForth/src/compiler/spf_literal
0,0 → 1,80
( à¥®¡à §®¢ ­¨¥ ç¨á«®¢ëå «¨â¥à «®¢ ¯à¨ ¨­â¥à¯à¥â æ¨¨.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
: ?LITERAL1 ( T -> ... )
\ ¯à¥®¡à §®¢ âì áâப㠢 ç¨á«®
0 0 ROT COUNT
OVER C@ [CHAR] - = IF 1- SWAP 1+ SWAP TRUE ELSE FALSE THEN >R
>NUMBER ." N{" 2DUP TYPE ." }"
DUP 1 > IF -2001 THROW THEN \ ABORT" -?"
IF C@ [CHAR] . <> IF -2002 THROW THEN \ ABORT" -??"
R> IF DNEGATE THEN
[COMPILE] 2LITERAL
ELSE DROP D>S
R> IF NEGATE THEN
[COMPILE] LITERAL
THEN
;
: ?SLITERAL1 ( c-addr u -> ... )
\ ¯à¥®¡à §®¢ âì áâப㠢 ç¨á«®
0 0 2SWAP
OVER C@ [CHAR] - = IF 1- SWAP 1+ SWAP TRUE ELSE FALSE THEN >R
>NUMBER
DUP 1 > IF -2001 THROW THEN \ ABORT" -?"
IF C@ [CHAR] . <> IF -2002 THROW THEN \ ABORT" -??"
R> IF DNEGATE THEN
[COMPILE] 2LITERAL
ELSE DROP D>S
R> IF NEGATE THEN
[COMPILE] LITERAL
THEN
;
: HEX-LITERAL ( T -> ... )
BASE @ >R HEX
0 0 ROT COUNT 2- SWAP 2+ SWAP >NUMBER 2DROP D>S [COMPILE] LITERAL
R> BASE !
;
: HEX-SLITERAL ( T -> ... )
BASE @ >R HEX
0 0 2SWAP 2- SWAP 2+ SWAP >NUMBER 2DROP D>S [COMPILE] LITERAL
R> BASE !
;
 
: ?LITERAL2 ( c-addr -- ... )
( à áè¨à¥­­ë© ¢ à¨ ­â ?LITERAL1:
¥á«¨ áâப  - ­¥ ç¨á«®, â® ¯ëâ ¥¬áï âࠪ⮢ âì ¥ñ
ª ª ¨¬ï ä ©«  ¤«ï  ¢â®-INCLUDED)
DUP COUNT 2 MIN S" 0x" COMPARE 0=
IF HEX-LITERAL EXIT THEN
DUP >R ['] ?LITERAL1 CATCH
IF DROP R> COUNT
OVER C@ [CHAR] " = IF 2 - SWAP 1+ SWAP THEN ( ã¡à « ª ¢ë窨, ¥á«¨ ¥áâì)
2DUP + 0 SWAP C!
['] INCLUDED CATCH
DUP 2 = OVER 3 = OR ( ä ©« ­¥ ­ ©¤¥­ ¨«¨ ¯ãâì ­¥ ­ ©¤¥­ )
IF -2003 THROW \ ABORT" -???"
ELSE THROW THEN
ELSE RDROP
THEN
;
: ?SLITERAL2 ( c-addr u -- ... )
( à áè¨à¥­­ë© ¢ à¨ ­â ?SLITERAL1:
¥á«¨ áâப  - ­¥ ç¨á«®, â® ¯ëâ ¥¬áï âࠪ⮢ âì ¥ñ
ª ª ¨¬ï ä ©«  ¤«ï  ¢â®-INCLUDED)
2DUP 2 MIN S" 0x" COMPARE 0=
IF HEX-SLITERAL EXIT THEN
2DUP 2>R ['] ?SLITERAL1 CATCH
IF 2DROP 2R>
OVER C@ [CHAR] " = IF 2 - SWAP 1+ SWAP THEN ( ã¡à « ª ¢ë窨, ¥á«¨ ¥áâì)
2DUP + 0 SWAP C!
['] INCLUDED CATCH
DUP 2 = OVER 3 = OR ( ä ©« ­¥ ­ ©¤¥­ ¨«¨ ¯ãâì ­¥ ­ ©¤¥­ )
IF -2003 THROW \ ABORT" -???"
ELSE THROW THEN
ELSE 2R> 2DROP
THEN
;
/programs/develop/SPForth/src/compiler/spf_literal.f
0,0 → 1,64
( à¥®¡à §®¢ ­¨¥ ç¨á«®¢ëå «¨â¥à «®¢ ¯à¨ ¨­â¥à¯à¥â æ¨¨.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
: ?SLITERAL1 ( c-addr u -> ... )
\ ¯à¥®¡à §®¢ âì áâப㠢 ç¨á«®
0 0 2SWAP
OVER C@ [CHAR] - = IF 1- SWAP 1+ SWAP TRUE ELSE FALSE THEN >R
>NUMBER
DUP 1 > IF ." -?" -2001 THROW THEN \ ABORT" -?"
IF C@ [CHAR] . <> IF -2002 THROW THEN \ ABORT" -??"
R> IF DNEGATE THEN
[COMPILE] 2LITERAL
ELSE DROP D>S
R> IF NEGATE THEN
[COMPILE] LITERAL
THEN
;
: ?LITERAL1 ( T -> ... )
\ ¯à¥®¡à §®¢ âì áâப㠢 ç¨á«®
COUNT ?SLITERAL1
;
: HEX-SLITERAL ( addr u -> flag )
BASE @ >R HEX
0 0 2SWAP 2- SWAP 2+ SWAP >NUMBER
?DUP IF
1 = SWAP C@ [CHAR] L = AND 0= IF 2DROP FALSE R> BASE ! EXIT THEN
ELSE DROP THEN
D>S POSTPONE LITERAL TRUE
R> BASE !
;
 
: INCLUDED_S -2003 THROW
INCLUDED ;
 
: ?SLITERAL2 ( c-addr u -- ... )
( à áè¨à¥­­ë© ¢ à¨ ­â ?SLITERAL1:
¥á«¨ áâப  - ­¥ ç¨á«®, â® ¯ëâ ¥¬áï âࠪ⮢ âì ¥ñ
ª ª ¨¬ï ä ©«  ¤«ï  ¢â®-INCLUDED)
DUP 1 > IF OVER W@ 0x7830 ( 0x) =
IF 2DUP 2>R HEX-SLITERAL IF RDROP RDROP EXIT ELSE 2R> THEN THEN
THEN
2DUP 2>R ['] ?SLITERAL1 CATCH
IF 2DROP 2R>
OVER C@ [CHAR] " = OVER 2 > AND
IF 2 - SWAP 1+ SWAP THEN ( ã¡à « ª ¢ë窨, ¥á«¨ ¥áâì)
2DUP + 0 SWAP C!
['] INCLUDED_S CATCH
DUP 2 = OVER 3 = OR OVER 161 = OR ( ä ©« ­¥ ­ ©¤¥­ ¨«¨ ¯ãâì ­¥ ­ ©¤¥­,
¨«¨ ­¥à §à¥è¥­­®¥ ¨¬ï ä ©« )
IF -2003 THROW \ ABORT" -???"
ELSE THROW THEN
ELSE RDROP RDROP
THEN
;
: ?LITERAL2 ( c-addr -- ... )
( à áè¨à¥­­ë© ¢ à¨ ­â ?LITERAL1:
¥á«¨ áâப  - ­¥ ç¨á«®, â® ¯ëâ ¥¬áï âࠪ⮢ âì ¥ñ
ª ª ¨¬ï ä ©«  ¤«ï  ¢â®-INCLUDED)
COUNT ?SLITERAL2
;
/programs/develop/SPForth/src/compiler/spf_modules.f
0,0 → 1,37
( Working with forth modules
Copyright [C] 2000 D.Yakimov day@forth.org.ru
)
 
: MODULE: ( "name" -- old-current )
\ start a forth module
\ åÓÌÉ ÔÁËÏÊ ÍÏÄÕÌØ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, ÐÒÏÄÏÌÖÉÔØ ËÏÍÐÉÌÑÃÉÀ × ÎÅÇÏ
>IN @ ['] ' CATCH
IF >IN ! VOCABULARY GET-CURRENT
ALSO LATEST NAME> EXECUTE DEFINITIONS
ELSE
NIP GET-CURRENT SWAP ALSO EXECUTE DEFINITIONS
THEN
;
 
: EXPORT ( old-current -- old-current )
\ export some module definitions
DUP SET-CURRENT
;
 
: ;MODULE ( old-current -- )
\ finish the module
SET-CURRENT PREVIOUS
;
 
: {{ ( "name" -- )
\ ëÌÁÄÅÔ × ORDER wordlist, Ë-ÙÊ ÄÁÓÔ "name"
\ ÉÌÉ vocabulary ÅÓÌÉ "name" - vocabulary
DEPTH >R
ALSO ' EXECUTE
DEPTH R> <> IF \ wid on the stack?
CONTEXT ! THEN
; IMMEDIATE
 
: }}
PREVIOUS
; IMMEDIATE
/programs/develop/SPForth/src/compiler/spf_parser.f
0,0 → 1,128
(  àá¥à áâப¨ á ¨á室­ë¬ ⥪á⮬ ¯à®£à ¬¬ë ­  ”®àâ¥.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
‘¥­âï¡àì 1999: PARSE ¨ SKIP ¯à¥®¡à §®¢ ­ë ¨§ CODE
¢ ¢ë᮪®ã஢­¥¢ë¥ ®¯à¥¤¥«¥­¨ï. ¥à¥¬¥­­ë¥ ¯à¥®¡à §®¢ ­ë ¢ USER.
)
 
512 VALUE C/L \ ¬ ªá¨¬ «ì­ë© à §¬¥à áâப¨, ª®â®àãî ¬®¦­® ¢¢¥á⨠¢ TIB
 
: SOURCE ( -- c-addr u ) \ 94
\ c-addr -  ¤à¥á ¢å®¤­®£® ¡ãä¥à . u - ª®«¨ç¥á⢮ ᨬ¢®«®¢ ¢ ­¥¬.
TIB #TIB @
;
 
: SOURCE! ( c-addr u -- )
\ ãáâ ­®¢¨âì c-addr u ¢å®¤­ë¬ ¡ãä¥à®¬ (â®ç­¥¥, ®¡« áâìî à §¡®à  - PARSE-AREA)
#TIB ! TO TIB >IN 0! ;
 
: EndOfChunk ( -- flag )
>IN @ SOURCE NIP < 0= \ >IN ­¥ ¬¥­ìè¥, 祬 ¤«¨­  ç ­ª 
;
 
: CharAddr ( -- c-addr )
SOURCE DROP >IN @
\ CR ." CA=" DEPTH .SN
+
;
 
: PeekChar ( -- char )
CharAddr C@ \ ᨬ¢®« ¨§ ⥪ã饣® §­ ç¥­¨ï >IN
;
 
: IsDelimiter ( char -- flag )
BL 1+ <
;
 
: GetChar ( -- char flag )
EndOfChunk
IF 0 FALSE
ELSE PeekChar TRUE THEN
;
 
: OnDelimiter ( -- flag )
GetChar SWAP IsDelimiter AND
;
 
: SkipDelimiters ( -- ) \ ¯à®¯ãáâ¨âì ¯à®¡¥«ì­ë¥ ᨬ¢®«ë
BEGIN
OnDelimiter
WHILE
>IN 1+!
REPEAT >IN @ >IN_WORD ! ;
 
: OnNotDelimiter ( -- flag )
GetChar SWAP IsDelimiter 0= AND
;
 
: SkipWord ( -- ) \ ¯à®¯ãáâ¨âì ­¥¯à®¡¥«ì­ë¥ ᨬ¢®«ë
BEGIN
OnNotDelimiter
WHILE
>IN 1+!
REPEAT
;
: SkipUpTo ( char -- ) \ ¯à®¯ãáâ¨âì ¤® ᨬ¢®«  char
BEGIN
DUP GetChar \ ." SC=" DUP M.
>R <> R> AND
WHILE
>IN 1+!
REPEAT DROP
;
 
: ParseWord ( -- c-addr u )
CharAddr \ CR ." P=" DUP 9 TYPE
>IN @
\ CR ." XZ=" DEPTH .SN
SkipWord >IN @
\ CR ." X1=" DEPTH .SN
- NEGATE
\ CR ." X2=" DEPTH .SN
\ CR ." PZ=" 2DUP TYPE
;
CREATE UPPER_SCR 31 ALLOT
 
: UPC ( c -- c' )
DUP [CHAR] Z U>
IF 0xDF AND
THEN ;
 
: UPPER ( ADDR LEN -- )
0 ?DO COUNT UPC OVER 1- C! LOOP DROP ;
 
: UPPER_NW ( ADDR LEN -- ADDR' LEN )
UPPER_SCR PLACE
UPPER_SCR COUNT 2DUP UPPER ;
 
: PARSE-WORD ( "name" -- c-addr u )
\ http://www.complang.tuwien.ac.at/forth/ansforth/parse-word.html
\ íâ® á«®¢® ⥯¥àì ¡ã¤¥¬ ¨á¯®«ì§®¢ âì ¢ INTERPRET
\ - 㤮¡­¥¥: ­¥ ¨á¯®«ì§ã¥â WORD ¨, ᮮ⢥âá⢥­­®, ­¥ ¬ãá®à¨â ¢ HERE;
\ ¨ à §¤¥«¨â¥«ï¬¨ áç¨â ¥â ¢á¥ çâ® <=BL, ¢ ⮬ ç¨á«¥ TAB ¨ CRLF
SkipDelimiters ParseWord
>IN 1+! \ ¯à®¯ãá⨫¨ à §¤¥«¨â¥«ì §  á«®¢®¬
\ UPPER_V @ EXECUTE
;
 
: NextWord PARSE-WORD ;
: PARSE-NAME PARSE-WORD ;
 
: PARSE ( char "ccc<char>" -- c-addr u ) \ 94 CORE EXT
\ ‚뤥«¨âì ccc, ®£à ­¨ç¥­­®¥ ᨬ¢®«®¬ char.
\ c-addr -  ¤à¥á (¢­ãâਠ¢å®¤­®£® ¡ãä¥à ), ¨ u - ¤«¨­  ¢ë¤¥«¥­­®© áâப¨.
\ …᫨ à §¡¨à ¥¬ ï ®¡« áâì ¡ë«  ¯ãáâ , १ã«ìâ¨àãîé ï áâப  ¨¬¥¥â ­ã«¥¢ãî
\ ¤«¨­ã.
CharAddr >IN @
ROT SkipUpTo
>IN @ - NEGATE
>IN 1+!
;
 
: PSKIP ( char "ccc<char>" -- )
\ à®¯ãáâ¨âì à §¤¥«¨â¥«¨ char.
BEGIN
DUP GetChar >R = R> AND
WHILE
>IN 1+!
REPEAT DROP
;
/programs/develop/SPForth/src/compiler/spf_read_source.f
0,0 → 1,33
( —⥭¨¥ áâப¨ ¨á室­®£® ⥪áâ  ¨§ ¢å®¤­®£® ¯®â®ª : ª®­á®«¨ ¨«¨ ä ©« .
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
¥¢¨§¨ï: ‘¥­âï¡àì 1999
)
 
VECT <PRE>
 
: CONSOLE-HANDLES \ $$$$
;
 
: QUERY ( --- )
\ Read a line from the terminal into the terminal input buffer.
TIB 80 ACCEPT #TIB ! 0 >IN ! ;
 
: FREFILL ( h -- flag )
TIB C/L ROT READ-LINE THROW \ TAKEN-TIB
SWAP #TIB ! 0 >IN ! CURSTR 1+!
0 SOURCE + C!
;
 
 
: REFILL ( --- f)
\ Refill the current input source when it is exhausted. f is
\ true if it was successfully refilled.
 
SOURCE-ID -1 = IF
0 \ Not refillable for EVALUATE
ELSE SOURCE-ID
IF SOURCE-ID FREFILL
ELSE QUERY -1 \ Always successful from terminal.
THEN
THEN
;
/programs/develop/SPForth/src/compiler/spf_translate.f
0,0 → 1,222
( ’à ­á«ïæ¨ï ¨á室­ëå ⥪á⮢ ¯à®£à ¬¬.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
VECT OK.
VECT <MAIN>
VECT ?LITERAL
VECT ?SLITERAL
USER-VALUE SOURCE-ID-XT \ ¥á«¨ ­¥ à ¢¥­ ­ã«î, ⮠ᮤ¥à¦¨â § ¯®«­ïî饥
 
: DEPTH ( -- +n ) \ 94
\ +n - ç¨á«® ®¤¨­ à­ëå ï祥ª, ­ å®¤ïé¨åáï ­  á⥪¥ ¤ ­­ëå ¯¥à¥¤
\ ⥬ ª ª â㤠 ¡ë«® ¯®¬¥é¥­® +n.
SP@ S0 @ - NEGATE 4 U/
;
: ?STACK ( -> ) \ ¢ë¤ âì ®è¨¡ªã "¨áç¥à¯ ­¨¥ á⥪ ", ¥á«¨ ®­ ¡®«¥¥ 祬 ¯ãáâ
SP@ S0 @ SWAP U< IF S0 @ SP! -4 THROW THEN
;
: ?COMP ( -> )
STATE @ 0= IF -312 THROW THEN ( ’®«ìª® ¤«ï ०¨¬  ª®¬¯¨«ï樨 )
;
 
: WORD ( char "<chars>ccc<char>" -- c-addr ) \ 94
\ à®¯ãáâ¨âì ¢¥¤ã騥 à §¤¥«¨â¥«¨. ‚ë¡à âì ᨬ¢®«ë, ®£à ­¨ç¥­­ë¥
\ à §¤¥«¨â¥«¥¬ char.
\ ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¤«¨­  ¨§¢«¥ç¥­­®© áâப¨
\ ¡®«ìè¥ ¬ ªá¨¬ «ì­®© ¤«¨­ë áâப¨ á® áç¥â稪®¬.
\ c-addr -  ¤à¥á ¯¥à¥¬¥­­®© ®¡« áâ¨, ᮤ¥à¦ é¥© ¨§¢«¥ç¥­­®¥ á«®¢®
\ ¢ ¢¨¤¥ áâப¨ á® áç¥â稪®¬.
\ …᫨ à §¡¨à ¥¬ ï ®¡« áâì ¯ãáâ  ¨«¨ ᮤ¥à¦¨â ⮫쪮 à §¤¥«¨â¥«¨,
\ १ã«ìâ¨àãîé ï áâப  ¨¬¥¥â ­ã«¥¢ãî ¤«¨­ã.
\ ‚ ª®­¥æ áâப¨ ¯®¬¥é ¥âáï ¯à®¡¥«, ­¥ ¢ª«îç ¥¬ë© ¢ ¤«¨­ã áâப¨.
\ à®£à ¬¬  ¬®¦¥â ¨§¬¥­ïâì ᨬ¢®«ë ¢ áâப¥.
DUP PSKIP PARSE
DUP HERE C! HERE 1+ SWAP CMOVE
BL HERE COUNT + !
HERE
;
1 [IF]
: ' ( "<spaces>name" -- xt ) \ 94
\ à®¯ãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë. ‚뤥«¨âì name, ®£à ­¨ç¥­­®¥ ¯à®¡¥«®¬.  ©â¨ name
\ ¨ ¢¥à­ãâì xt, ¢ë¯®«­¨¬ë© ⮪¥­ ¤«ï name. ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â,
\ ¥á«¨ name ­¥ ­ ©¤¥­®.
\ ‚® ¢à¥¬ï ¨­â¥à¯à¥â æ¨¨ ' name EXECUTE à ¢­®á¨«ì­® name.
PARSE-WORD SFIND 0=
IF -321 THROW THEN ( -? )
;
 
[THEN]
 
: CHAR ( "<spaces>name" -- char ) \ 94
\ à®¯ãáâ¨âì ¢¥¤ã騥 à §¤¥«¨â¥«¨. ‚뤥«¨âì ¨¬ï, ®à£ ­¨ç¥­­®¥ ¯à®¡¥« ¬¨.
\ ®«®¦¨âì ª®¤ ¥£® ¯¥à¢®£® ᨬ¢®«  ­  á⥪.
PARSE-WORD DROP C@ ;
 
CREATE ILAST-WORD 0 , 0 ,
 
: INTERPRET_ ( -> ) \ ¨­â¥à¯à¥â¨à®¢ âì ¢å®¤­®© ¯®â®ª
SAVEERR? ON
BEGIN
PARSE-WORD DUP
WHILE 2DUP ILAST-WORD 2!
\ ." <" TYPE ." >"
SFIND ?DUP
IF
STATE @ =
IF COMPILE, ELSE EXECUTE THEN
ELSE
S" NOTFOUND" SFIND
IF EXECUTE
ELSE 2DROP ?SLITERAL THEN
\ ?SLITERAL
THEN
?STACK
REPEAT 2DROP
;
 
VARIABLE &INTERPRET
' INTERPRET_ &INTERPRET !
 
: INTERPRET &INTERPRET @ EXECUTE ;
 
\ : HALT ( ERRNUM -> ) \ ¢ë室 á ª®¤®¬ ®è¨¡ª¨
\ >R exit ;
 
: .SN ( n --)
\  á¯¥ç â âì n ¢¥àå­¨å í«¥¬¥­â®¢ á⥪ 
>R BEGIN
R@
WHILE
SP@ R@ 1- CELLS + @ DUP 0<
IF DUP U>D <# #S #> TYPE
." (" ABS 0 <# #S [CHAR] - HOLD #> TYPE ." ) " ELSE . THEN
R> 1- >R
REPEAT RDROP
;
 
: OK1
STATE @ 0=
IF ." Ok" DEPTH 70 UMIN
0 ?DO [CHAR] . EMIT LOOP CR
THEN
;
 
: EVAL-WORD ( a u -- )
\ ¨­â¥à¯à¥â¨à®¢ âì ( â࠭᫨஢ âì) á«®¢® á ¨¬¥­¥¬ a u
SFIND ?DUP IF
STATE @ = IF
COMPILE, ELSE
EXECUTE THEN
ELSE
-2003 THROW THEN
;
 
: [ \ 94 CORE
\ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
\ Š®¬¯¨«ïæ¨ï: ‚믮«­¨âì ᥬ ­â¨ªã ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥.
\ ‚믮«­¥­¨¥: ( -- )
\ “áâ ­®¢¨âì á®áâ®ï­¨¥ ¨­â¥à¯à¥â æ¨¨. [ á«®¢® ­¥¬¥¤«¥­­®£® ¢ë¯®«­¥­¨ï.
STATE 0!
; IMMEDIATE
 
: ] ( -- ) \ 94 CORE
\ “áâ ­®¢¨âì á®áâ®ï­¨¥ ª®¬¯¨«ï樨.
TRUE STATE !
;
 
: QUIT ( -- ) ( R: i*x ) \ CORE 94
\ ‘¡à®á¨âì á⥪ ¢®§¢à â®¢, § ¯¨á âì ­®«ì ¢ SOURCE-ID.
\ “áâ ­®¢¨âì áâ ­¤ àâ­ë© ¢å®¤­®© ¯®â®ª ¨ á®áâ®ï­¨¥ ¨­â¥à¯à¥â æ¨¨.
\ ¥ ¢ë¢®¤¨âì á®®¡é¥­¨©. ®¢â®àïâì á«¥¤ãî饥:
\ - à¨­ïâì áâப㠨§ ¢å®¤­®£® ¯®â®ª  ¢® ¢å®¤­®© ¡ãä¥à, ®¡­ã«¨âì >IN
\ ¨ ¨­â¥¯à¥â¨à®¢ âì.
\ - ‚뢥á⨠§ ¢¨áï饥 ®â ॠ«¨§ æ¨¨ á¨á⥬­®¥ ¯à¨£« è¥­¨¥, ¥á«¨
\ á¨á⥬  ­ å®¤¨âáï ¢ á®áâ®ï­¨¨ ¨­â¥à¯à¥â æ¨¨, ¢á¥ ¯à®æ¥ááë § ¢¥à襭ë,
\ ¨ ­¥â ­¥®¤­®§­ ç­ëå á¨âã æ¨©.
 
\ R0 @ RP! ( ­¥ ¤¥« ¥¬ í⮣®, çâ®¡ë ¯®§¢®«¨âì "['] QUIT CATCH" )
CONSOLE-HANDLES
0 TO SOURCE-ID
[COMPILE] [
<MAIN>
;
 
: MAIN1 ( -- )
BEGIN REFILL
WHILE INTERPRET OK.
REPEAT _BYE
;
' MAIN1 TO <MAIN>
 
: SAVE-SOURCE ( -- i*x i )
SOURCE-ID-XT SOURCE-ID >IN @ SOURCE CURSTR @ 6
;
 
: RESTORE-SOURCE ( i*x i -- )
6 <> IF ABORT THEN
CURSTR ! SOURCE! >IN ! TO SOURCE-ID TO SOURCE-ID-XT
;
 
: EVALUATE-WITH ( ( i*x c-addr u xt -- j*x )
\ ‘ç¨â ï c-addr u ¢å®¤­ë¬ ¯®â®ª®¬, ¢ëç¨á«¨âì ¥ñ ¨­â¥à¯à¥â â®à®¬ xt.
SAVE-SOURCE N>R
>R SOURCE! -1 TO SOURCE-ID
R> ( ['] INTERPRET) CATCH
NR> RESTORE-SOURCE
THROW
;
 
: EVALUATE ( i*x c-addr u -- j*x ) \ 94
\ ‘®åà ­ï¥â ⥪ã騥 ᯥæ¨ä¨ª æ¨¨ ¢å®¤­®£® ¯®â®ª .
\ ‡ ¯¨á뢠¥â -1 ¢ SOURCE-ID. „¥« ¥â áâபã, § ¤ ­­ãî c-addr u,
\ ¢å®¤­ë¬ ¯®â®ª®¬ ¨ ¢å®¤­ë¬ ¡ãä¥à®¬, ãáâ ­ ¢«¨¢ ¥â >IN ¢ 0
\ ¨ ¨­â¥à¯à¥â¨àã¥â. Š®£¤  áâப  à §®¡à ­  ¤® ª®­æ  - ¢®ááâ ­ ¢«¨¢ ¥â
\ ᯥæ¨ä¨ª æ¨¨ ¯à¥¤ë¤ã饣® ¢å®¤­®£® ¯®â®ª .
\ „à㣨¥ ¨§¬¥­¥­¨ï á⥪  ®¯à¥¤¥«ïîâáï ¢ë¯®«­ï¥¬ë¬¨ ¯® EVALUATE á«®¢ ¬¨.
['] INTERPRET EVALUATE-WITH
;
 
: FQUIT
BEGIN REFILL
WHILE INTERPRET
REPEAT ;
 
: INCLUDE-FILE ( i*x fileid -- j*x ) \ 94 FILE
>IN @ >R
SOURCE-ID >R TO SOURCE-ID
RP@ #TIB @ ALIGNED - RP!
TIB RP@ #TIB @ CMOVE
SOURCE 2>R
\ TCR ." IF"
['] FQUIT CATCH SAVEERR
\ ['] NOOP CATCH SAVEERR
 
2R> SOURCE!
RP@ TIB #TIB @ CMOVE
RP@ #TIB @ ALIGNED + RP!
R> TO SOURCE-ID
R> >IN ! THROW ;
 
: INCLUDED_ ( c-addr u ---- )
\ Open the file with name c-addr u and interpret all lines contained in it.
R/O OPEN-FILE THROW \ ABORT" Can't open include file"
DUP >R
['] INCLUDE-FILE CATCH
R> CLOSE-FILE DROP THROW
;
 
: REQUIRED ( waddr wu laddr lu -- )
2SWAP SFIND
IF DROP 2DROP
ELSE 2DROP INCLUDED_ THEN
;
: REQUIRE ( "word" "libpath" -- )
PARSE-NAME PARSE-NAME 2DUP + 0 SWAP C!
REQUIRED
;
 
: AUTOEXEC S" /sys/INIT.F" INCLUDED_ ;
/programs/develop/SPForth/src/compiler/spf_wordlist.f
0,0 → 1,188
( ‘®§¤ ­¨¥ á«®¢ àëå áâ â¥© ¨ á«®¢ à¥© WORDLIST.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
Œ®¤¨ä¨æ¨à®¢ ­­® Œ ªá¨¬®¢ë¬ Œ.Ž.
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
â ¤ {812}105-92-03
â à {812}552-47-64
)
HEX
1 CONSTANT &IMMEDIATE \ ª®­áâ ­â  ¤«ï ¢ëá¥ç¥­¨ï ä« ¦ª  IMMEDIATE
2 CONSTANT &VOC
 
\ ‚®§¢à â¨âì wid - ¨¤¥­â¨ä¨ª â®à ᯨ᪠ á«®¢, ¢ª«îç î饣® ¢á¥ áâ ­¤ àâ­ë¥
\ á«®¢ , ®¡¥á¯¥ç¨¢ ¥¬ë¥ ॠ«¨§ æ¨¥©. â®â ᯨ᮪ á«®¢ ¨§­ ç «ì­® ᯨ᮪
\ ª®¬¯¨«ï樨 ¨ ç áâì ­ ç «ì­®£® ¯®à浪  ¯®¨áª .
: >BODY ( xt -- a-addr ) \ 94
\ a-addr -  ¤à¥á ¯®«ï ¤ ­­ëå, ᮮ⢥âáâ¢ãî騩 xt.
\ ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ xt ­¥ ®â á«®¢ ,
\ ®¯à¥¤¥«¥­­®£® ç¥à¥§ CREATE.
( 1+ @ ¡ë«® ¢ ¢¥àᨨ 2.5 )
5 +
;
 
: SWORD, ( addr u wid -> ) \ ¤®¡ ¢«¥­¨¥ § £®«®¢ª  áâ âì¨ á ¨¬¥­¥¬,
\ § ¤ ­­ë¬ áâப®© addr u, ª ᯨáªã, § ¤ ­­®¬ã wid.
\ ”®à¬¨àã¥â ⮫쪮 ¯®«ï ¨¬¥­¨ ¨ á¢ï§¨ á
\ ®â¢¥¤¥­¨¥¬ ¯ ¬ï⨠¯® ALLOT.
HERE CELL+
DUP LAST !
SWAP DUP @ , !
S, 0 C,
;
 
: WORDLIST ( -- wid ) \ 94 SEARCH
\ ‘®§¤ ¥â ­®¢ë© ¯ãá⮩ ᯨ᮪ á«®¢, ¢®§¢à é ï ¥£® ¨¤¥­â¨ä¨ª â®à wid.
\ ®¢ë© ᯨ᮪ á«®¢ ¬®¦¥â ¡ëâì ¢®§¢à é¥­ ¨§ ¯à¥¤¢ à¨â¥«ì­® à á¯à¥¤¥«¥­­ëå
\ ᯨ᪮¢ á«®¢ ¨«¨ ¬®¦¥â ¤¨­ ¬¨ç¥áª¨ à á¯à¥¤¥«ïâìáï ¢ ¯à®áâà ­á⢥ ¤ ­­ëå.
\ ‘¨á⥬  ¤®«¦­  ¤®¯ã᪠âì ᮧ¤ ­¨¥ ª ª ¬¨­¨¬ã¬ 8 ­®¢ëå ᯨ᪮¢ á«®¢ ¢
\ ¤®¯®«­¥­¨¥ ª ¨¬¥î騬áï ¢ á¨á⥬¥.
HERE VOC-LIST @ , VOC-LIST !
HERE 0 , \ §¤¥áì ¡ã¤¥â 㪠§ â¥«ì ­  ¨¬ï ¯®á«¥¤­¥£® á«®¢  ᯨ᪠
0 , \ §¤¥áì ¡ã¤¥â 㪠§ â¥«ì ­  ¨¬ï ᯨ᪠ ¤«ï ¨¬¥­®¢ ­ëå
0 , \ wid á«®¢ àï-¯à¥¤ª 
0 , \ ª« áá á«®¢ àï = wid á«®¢ àï, ®¯à¥¤¥«ïî饣® ᢮©á⢠ ¤ ­­®£®
;
 
 
: CLASS! ( cls wid -- ) CELL+ CELL+ CELL+ ! ;
: CLASS@ ( wid -- cls ) CELL+ CELL+ CELL+ @ ;
: PAR! ( Pwid wid -- ) CELL+ CELL+ ! ;
: PAR@ ( wid -- Pwid ) CELL+ CELL+ @ ;
 
 
: ID. ( NFA[E] -> )
ZCOUNT TYPE
;
 
\ -9 -- flags
\ -8 -- cfa
\ -4 -- LFA
\ 0 -- NFA
 
Code NAME>L ;( NFA -> LFA )
LEA EAX, [EAX-4]
RET
EndCode
 
Code NAME>C ;( NFA -> 'CFA )
LEA EAX, [EAX-8]
RET
EndCode
 
Code NAME> ;( NFA -> CFA )
MOV EAX, [EAX-8]
RET
EndCode
 
Code NAME>F ;( NFA -> FFA )
LEA EAX, [EAX-9]
RET
EndCode
 
Code CDR ;( NFA1 -> NFA2 )
OR EAX, EAX
SIF 0<>
MOV EAX, [EAX-4]
STHEN
RET
EndCode
 
: ?IMMEDIATE ( NFA -> F )
NAME>F C@ &IMMEDIATE AND
;
 
: ?VOC ( NFA -> F )
NAME>F C@ &VOC AND
;
0 [IF]
: IMM ( -- ) \ 94
\ ‘¤¥« âì ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­¨¥ á«®¢®¬ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï.
\ ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­¨¥
\ ­¥ ¨¬¥¥â ¨¬¥­¨.
LAST @ NAME>F DUP C@ &IMMEDIATE OR SWAP ." I=" 2DUP H. H.
;
: IMMEDIATE ( -- ) \ 94
\ ‘¤¥« âì ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­¨¥ á«®¢®¬ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï.
\ ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­¨¥
\ ­¥ ¨¬¥¥â ¨¬¥­¨.
LAST @ NAME>F DUP C@ &IMMEDIATE OR SWAP C!
;
[THEN]
: VOC ( -- )
\ ®¬¥â¨âì ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­­®¥ á«®¢® ¯à¨§­ ª®¬ "á«®¢ àì".
LAST @ NAME>F DUP C@ &VOC OR SWAP C!
;
 
\ ==============================================
\ ®â« ¤ª  - ¯®¨áª á«®¢  ¯®  ¤à¥áã ¢ ¥£® ⥫¥
 
 
\ ==============================================
\ ®â« ¤ª  - ¯®¨áª á«®¢  ¯®  ¤à¥áã ¢ ¥£® ⥫¥
 
: N_UMAX ( nfa nfa1 -- nfa|nfa1 )
OVER DUP IF NAME> THEN
OVER DUP IF NAME> THEN U< IF NIP EXIT THEN DROP ;
 
: WL_NEAR_NFA ( addr wid - addr nfa | addr 0 )
@
BEGIN 2DUP DUP IF NAME> THEN U<
WHILE CDR
REPEAT
;
 
 
[IF]
 
: NEAR_NFA ( addr - nfa addr | 0 addr )
0 SWAP
VOC-LIST
BEGIN @ DUP
WHILE DUP >R CELL+ WL_NEAR_NFA SWAP >R N_UMAX R> R>
REPEAT DROP
;
 
[ELSE]
 
: WL_NEAR_NFA_N ( addr nfa - addr nfa | addr 0 )
BEGIN 2DUP DUP IF NAME> THEN U<
WHILE CDR
REPEAT
;
 
: WL_NEAR_NFA_M ( addr wid - nfa2 addr | 0 addr )
0 -ROT
CELL+ @
BEGIN DUP
WHILE WL_NEAR_NFA_N \ nfa addr nfa1
SWAP >R
DUP >R N_UMAX
R> DUP IF CDR THEN
R> SWAP
REPEAT DROP
;
 
: NEAR_NFA ( addr - nfa addr | 0 addr )
0 SWAP
VOC-LIST
BEGIN @ DUP
WHILE DUP >R WL_NEAR_NFA_M
>R N_UMAX R> R>
REPEAT DROP
;
 
[THEN]
 
: WordByAddr ( addr -- c-addr u )
\ ­ ©â¨ á«®¢®, ⥫㠪®â®à®£® ¯à¨­ ¤«¥¦¨â ¤ ­­ë©  ¤à¥á
DUP DP @ U> IF DROP S" <not in the image>" EXIT THEN
NEAR_NFA DROP DUP 0= IF DROP S" <not found>" EXIT THEN
COUNT
;
 
 
DECIMAL
/programs/develop/SPForth/src/compiler/spf_words.f
0,0 → 1,45
( ¥ç âì ᯨ᪠ á«®¢ á«®¢ àï - WORDS.
Ž‘-­¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥­¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
VARIABLE NNN
 
: ?CR-BREAK ( NFA -- NFA TRUE | FALSE )
DUP
IF DUP ZCOUNT NIP AT-XY? DROP + SCR_WIDTH-S >
IF CR
NNN @
IF -1 NNN +! TRUE
ELSE ." more?" CR 16 NNN !
KEY [CHAR] Q <> AND ?DUP 0<>
THEN
ELSE TRUE
THEN
THEN
;
 
: NLIST ( A -> )
@
CR W-CNT 0! 16 NNN !
BEGIN ?CR-BREAK
WHILE
W-CNT 1+!
DUP ID. \ 9 EMIT
SPACE AT-XY? >R 8 / 1+ 8 * R> AT-XY
CDR
REPEAT KEY? IF KEY DROP THEN
CR CR ." Words: " W-CNT @ U. CR
;
 
: WORDS ( -- ) \ 94 TOOLS
\ ‘¯¨á®ª ¨¬¥­ ®¯à¥¤¥«¥­¨© ¢ ¯¥à¢®¬ ᯨ᪥ á«®¢ ¯®à浪  ¯®¨áª . ”®à¬ â § ¢¨á¨â
\ ®â ॠ«¨§ æ¨¨.
\ WORDS ¬®¦¥â ¡ëâì ॠ«¨§®¢ ­ á ¨á¯®«ì§®¢ ­¨¥¬ á«®¢ ä®à¬ â­®£® ¯à¥®¡à §®¢ ­¨ï
\ ç¨á¥«. ‘®®â¢¥âá⢥­­®, ®­ ¬®¦¥â ¨á¯®àâ¨âì ¯¥à¥¬¥é ¥¬ãî ®¡« áâì,
\ ¨¤¥­â¨ä¨æ¨à㥬ãî #>.
CONTEXT @ NLIST
;
 
/programs/develop/SPForth/src/compiler
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/src/global.f
0,0 → 1,46
 
: TYPE TYPE ;
: (ABORT") (ABORT") ;
\ : COMPILE, COMPILE, ;
 
: CUR_POS ABORT ;
: B_CR ( -- ) \ 94
\ ¥à¥¢®¤ áâப¨.
10 EMIT
13 EMIT
;
 
: GETPR ABORT ;
 
: SPP_M ABORT ;
: TIBB_M ABORT ;
: NTIB_M ABORT ;
: NTIB ABORT ;
: draw_window ABORT ;
: CC_LINES ABORT ;
: ?KEY ABORT ;
: EMIT_N ABORT ;
 
: DR_CUR ABORT ;
: CL_CUR ABORT ;
 
: KEY_M ABORT ;
: _BYE ABORT ;
: ROWH ABORT ;
: ROWW ABORT ;
: draw_window ABORT ;
: MEMS ABORT ;
\ FORWORD
 
: READ ABORT ;
: CLIT, ABORT ;
: _PREVIOUS PREVIOUS ;
: _SHEADER SHEADER ;
: _: : ;
: [;] POSTPONE ; ;
 
: S, ABORT ;
: SWORD, ABORT ;
: PARSE-NAME PARSE-WORD ;
: PSLITERAL POSTPONE SLITERAL ;
/programs/develop/SPForth/src/gspf.f
0,0 → 1,231
CR .( SFF.F)
\ ' ANSI>OEM TO ANSI><OEM
\ ' OEM>ANSI TO ANSI><OEM
 
REQUIRE DUPENDCASE ~mak/case.f
 
CR .( DC=) ' DUPENDCASE .
 
VARIABLE START-LAB
VARIABLE FINISH-LAB
VARIABLE START-LIST
VARIABLE FINISH-LIST
VARIABLE START-LIST2
VARIABLE FINISH-LIST2
VARIABLE FINISH-LIST3
VARIABLE START-VAR
VARIABLE FINISH-VAR
VARIABLE START-ARRAY
VARIABLE FINISH-ARRAY
0 VALUE IMAGE-END
S" lib/ext/disasm2.f" INCLUDED
1000 CELLS ALLOCATE DROP DUP START-VAR ! FINISH-VAR !
1000 CELLS ALLOCATE DROP DUP START-LIST ! FINISH-LIST !
1000 CELLS ALLOCATE DROP DUP START-LIST2 ! FINISH-LIST2 !
1000 CELLS ALLOCATE DROP DUP START-LAB ! FINISH-LAB !
100 CELLS ALLOCATE DROP DUP START-ARRAY ! FINISH-ARRAY !
 
\ REQUIRE [IF] ~mak/CompIF.f
REQUIRE [IFNDEF] ~nn/lib/ifdef.f
\ REQUIRE (* ~af/lib/comments.f
 
: CC HERE DROP ; IMMEDIATE
 
: KDD KEY DROP ;
 
VARIABLE HSSSS
VARIABLE ZSSSS
0 VALUE ALITERAL-CODE
 
\ !!! REQUIRE Z" ~mak/~af/lib/c/zstr.f
 
[IFNDEF] PARSE-WORD : PARSE-WORD NextWord ;
[THEN]
 
[IFNDEF] PSKIP : PSKIP SKIP ;
[THEN]
\ : KEY MKEY ;: KEY? MKEY? ;
\ REQUIRE SEE lib/ext/disasm.f
\ REQUIRE SEE lib/ext/disasm1.f
: B, C, ; : B@ C@ ; : B! C! ; : /CHAR 1 ;
: PARSE-NAME NextWord ;
\ : UMIN 2DUP U< IF DROP EXIT THEN NIP ;
 
REQUIRE { ~ac\lib\locals.f
 
\ REQUIRE { lib\ext\locals.f
 
[IFDEF] z z : z d
[THEN]
 
[IFDEF] d z ; POSTPONE d d IMMEDIATE
[THEN]
 
WARNING 0! \ ÷òîáû íå áûëî ñîîáùåíèé isn't unique
 
S" lib/include/tools.f" INCLUDED
 
C" CELL-" FIND NIP 0=
[IF] : CELL- 1 CELLS - ;
[THEN]
C" U>" FIND NIP 0=
[IF] : U> SWAP U< ;
[THEN]
C" D-" FIND NIP 0=
[IF]
: D- ( D1 D2 -- FLAG )
DNEGATE D+ ;
[THEN]
C" D=" FIND NIP 0=
[IF]
: D= ( D1 D2 -- FLAG )
D- D0= ;
[THEN]
 
C" \S" FIND NIP 0=
[IF]
: \S \ comment to end of file
SOURCE-ID FILE-SIZE DROP
SOURCE-ID REPOSITION-FILE DROP
[COMPILE] \ ; IMMEDIATE
[THEN]
 
S" ~mak/utils_.f" INCLUDED
 
\ S" lib/ext/spf-asm.f" INCLUDED
\ ALSO ASSEMBLER ALSO ASM-HIDDEN
\ ' NOOP IS CODE-ALIGN
\ PREVIOUS PREVIOUS
 
S" ~mak/asm/ASM.FRT" INCLUDED
 
 
\ S" lib/include/tools.f" INCLUDED
 
 
C" LAST-HERE" FIND NIP 0= VALUE INLINEVAR
 
' DUP VALUE 'DUP
0 VALUE RESERVE
USER-HERE CONSTANT USER-HERE-SET
USER-HERE-SET TO RESERVE
MODULE: GSPF0
S" src/global.f" INCLUDED
;MODULE
 
S" src/global.f" INCLUDED
S" src/tc_spfopt.f" INCLUDED
 
' _CONSTANT-CODE TO CONSTANT-CODE
' _CREATE-CODE TO CREATE-CODE
' _CLITERAL-CODE TO CLITERAL-CODE
' _SLITERAL-CODE TO SLITERAL-CODE
 
\ : TOMM_SIZE TO MM_SIZE ;
 
DIS-OPT
\ VOCABULARY GSPF0
: ?HS
HERE CELL- @
HERE HSSSS @ + CELL- @ <>
IF CR
HERE CELL- @ H.
HERE HSSSS @ + CELL- @ H.
-1 ABORT" HSSSS "
THEN
;
: TT 0 IF THEN ;
 
\ : CODE ?HS CODE ;
 
\ ALSO GGSPF0
ALSO GSPF0 DEFINITIONS
 
: >R POSTPONE >R ; IMMEDIATE
: R> POSTPONE R> ; IMMEDIATE
CR
0x10 TOMM_SIZE
HERE DUP H.
HERE 0xF OR 1+ DP !
HERE DUP H. MM_SIZE H.
 
HERE ZSSSS ! 0 HSSSS !
0x11223344 , 0x55667788 , ?HS
S" src/gspf0.f" INCLUDED
CR MM_SIZE H.
 
PREVIOUS ( PREVIOUS ) DEFINITIONS
 
\ ALSO GSPF0
MM_SIZE H.
[IFDEF] S"_L" S" _LL" S"_L" PLACE [THEN]
 
\ S" src/global.f" INCLUDED
CR
0x10 TOMM_SIZE
HERE DUP H.
HERE 0xF OR 1+ DP !
HERE DUP H. MM_SIZE H.
ZSSSS @ HERE - HSSSS !
0x11223344 , 0x55667788 , ?HS
S" src/gspf0.f" INCLUDED
 
\ Òóò ìîæíî îïðåäåëèòü êàêèå òî ñâîè ñëîâà äëÿ ïðîáû.
\ ×òîáû íå áûëî îøèáîê, êàêîé òî ôàéë ñêðèïòà äîëæåí áûòü ïîäãðóæåí. Ïðèìåð íèæå.
\ HERE TO IMAGE-END
 
\ VARIABLE lm
\ VECT m
\ 0 CONSTANT m
\ : doTest 2000000 0 DO m @ 2 + I @ 4 + * I ! LOOP ;
\ ðàññêîìåíòèðîâàâ íèæå ýòó ñòðîêó è îòìå÷åííûå íèæå * ìîæíî ïîëó÷èòü âåñü êîä ó÷àñòâóþùèé
\ ïðè âûïîëíåíèè äàííîé íèæå ñòðîêè
\ : doTest 10 0 DO I . LOOP ;
 
\ Òóò çàãðóæàåì èíòåðåñóþøèé íàñ ñêðèïò.
 
\ ×èñëî çàãðóæàåìûõ ñêðèïòîâ íå îãðàíè÷åííî.
 
\ H-STDOUT VALUE File
\ HERE TO IMAGE-END
\ : File:
\ NextWord DUP >R
\ HEAP-COPY DUP R> R/W CREATE-FILE-SHARED THROW TO File FREE THROW
\ ;
 
\ File: Test.log \ Ýòî èìÿ ôàéëà êóäà âûâîäèì.
 
\ H-STDOUT >R File TO H-STDOUT DROP \ âêëþ÷åíèå âûâîäà
\ ïðîãðàììû ïîëüçîâàòåëÿ
 
\ S" example.f" INCLUDED
 
\ Ñëîâà êîòîðûå ìû õîòèì äèçàñåìáëèðîâàòü.
\ Åñëè â âàøåé ïðîãðàììå íóæíî èïîëüçîâàòü íåñêîëüêî ñëîâ-ïðîöåäóð, òî
\ ëó÷ùå äèçàñåìáëèðîâàòü âìåñòå. Òîãäà îíè áóäóò ññûëàòüñÿ íà îáùèé ðåâóðñ îïðåäåëåíèé.
\ Åñëè íóæíà âñÿ ïðîãðàììà, òî äèçàññåìáëèðóåì ãëàâíîå îïðåäåëåíèå.
\ * íèæå ýòó
\ ' doTest DISASM-LIST \ Ñëîââî " ' " Ïîëó÷àåò àäðåñ ñëåäóþøåãî çà íèì ñëîâà, ñëîâî DISASM-LIST ïîíÿòíî èç íàçâàíèÿ.
\ ' WildCMP-U1 DISASM-LIST
\ êîíåö
\ * à òàêæå ýòó
\ TYPE-ALL
 
\ File FLUSH-FILE THROW R> TO H-STDOUT \ âûêëþ÷åíèå âûâîäà
\ CR
\ : B I I I */ ;
\ ' B SEE2
\ SEE B
\ ' doTest DISASM-LIST
\ ' doTest SEE2
\ ' m SEE2
\ ' B DISASM-LIST \ Ñëîââî " ' " Ïîëó÷àåò àäðåñ ñëåäóþøåãî çà íèì ñëîâà, ñëîâî DISASM-LIST ïîíÿòíî èç íàçâàíèÿ.
\ êîíåö
 
\ CR TYPE-ALL
 
\ START-LIST @ FREE DROP
\ START-LIST2 @ FREE DROP
\ START-LAB @ FREE DROP
\ START-VAR @ FREE DROP
\ START-ARRAY @ FREE DROP
/programs/develop/SPForth/src/gspf0.f
0,0 → 1,112
\ TSET-OPT
0x10 TOMM_SIZE
HERE TO TSAVE_LIMIT
USER-HERE-SET TO RESERVE
USER-HERE-SET USER-OFFS !
\ DECIMAL
\ TRUE WARNING ! \ çâ®¡ë ¡ë«®
\ ==============================================================
\  ç «® ®¡à §  ”®àâ-á¨á⥬ë
\ S" src/USER.F" INCLUDED
\ S" src/spf_defkern.f" INCLUDED
CR .( S" src/spf_forthproc.f" INCLUDED)
 
S" src/spf_forthproc.f" INCLUDED
 
\ S" src/spf_floatkern.f" INCLUDED
 
S" src/spf_forthproc_hl.f" INCLUDED
 
 
S" src/kol/spf_kol_const.f" INCLUDED
 
\ ==============================================================
 
S" src/kol\spf_kol_sys.f" INCLUDED
 
\ ’à ­á«ïæ¨ï ¨á室­ëå ⥪á⮢.
\ Ž¡à ¡®âª  ®è¨¡®ª.
\ Ž¯à¥¤¥«ïî騥 á«®¢ .
\ —¨á«®¢ë¥ «¨â¥à «ë.
\ “¯à ¢«¥­¨¥ ª®¬¯¨«ï樥©.
\ Š®¬¯¨«ïæ¨ï ã¯à ¢«ïîé¨å áâàãªâãà.
 
S" src/compiler/spf_immed_lit.f" INCLUDED
S" src/compiler/spf_defwords.f" INCLUDED
 
S" src/compiler/spf_immed_loop.f" INCLUDED
 
S" src/compiler/spf_error.f" INCLUDED
TDIS-OPT
S" src/compiler/spf_translate.f" INCLUDED
S" src/compiler/spf_immed_transl.f" INCLUDED
S" src/compiler/spf_literal.f" INCLUDED
S" src/compiler/spf_immed_control.f" INCLUDED
 
\ ==============================================================
\ Š®¬¯¨«ïæ¨ï ç¨á¥« ¨ áâப ¢ á«®¢ àì.
\ ‘®§¤ ­¨¥ á«®¢ à­ëå áâ â¥©.
\ ®¨áª á«®¢ ¢ á«®¢ àïå.
\ ¥ç âì á«®¢ à¥©.
\ S" src/temps4_.f" INCLUDED
\ EOF
S" src/compiler/spf_wordlist.f" INCLUDED
S" src/compiler/spf_find.f" INCLUDED
S" src/compiler/spf_words.f" INCLUDED
S" src/compiler/spf_compile0.f" INCLUDED
S" ~mak/~af/lib/c/zstr.f" INCLUDED
' ALITERAL TO ALITERAL-CODE
 
\ ‘âàãªâãà¨à®¢ ­­ ï ®¡à ¡®âª  ¨áª«î祭¨© (á¬.â ª¦¥ init)
 
S" src/spf_except.f" INCLUDED
 
\ ==============================================================
\ ¥ç âì ç¨á¥«
 
S" src/spf_print.f" INCLUDED
S" src/kol\spf_kol_module.f" INCLUDED
 
\ ==============================================================
\ ” ©«®¢ë© ¨ ª®­á®«ì­ë© ¢¢®¤-¢ë¢®¤ (kol-§ ¢¨á¨¬ë¥)
 
S" src/kol/spf_kol_con_io.f" INCLUDED
S" src/spf_con_io.f" INCLUDED
S" src/kol/spf_kol_io.f" INCLUDED
\ ==============================================================
\ “¯à ¢«¥­¨¥ ¯ ¬ïâìî
 
S" src/kol/spf_kol_memory.f" INCLUDED
 
\ ==============================================================
\ Œ ªà®¯®¤áâ ­®¢é¨ª-®¯â¨¬¨§ â®à
TRUE TO INLINEVAR
CR .( S" src/macroopt.f" INCLUDED)
MM_SIZE DUP H.
0x10 TOMM_SIZE
S" src/macroopt.f" INCLUDED
DUP H. TOMM_SIZE
S" src/compiler/spf_compile.f" INCLUDED
 
\ ==============================================================
\  àá¥à ¨á室­®£® ⥪áâ  ä®àâ-¯à®£à ¬¬
S" src/compiler/spf_parser.f" INCLUDED
S" src/compiler/spf_read_source.f" INCLUDED
 
\ ==============================================================
\ ˆ­¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥­­ëå, startup
CR .( S" src/spf_init.f" INCLUDED)
S" src/spf_init.f" INCLUDED
 
\ ==============================================================
S" src/compiler/spf_modules.f" INCLUDED
S" src/MEFORTH.F" INCLUDED
S" src/spf_last.f" INCLUDED
\ S" src/tst.f" INCLUDED \EOF
 
\ EOF
 
CR .( =============================================================)
CR .( Done.
CR .( =============================================================)
MM_SIZE H.
/programs/develop/SPForth/src/macroopt.f
0,0 → 1,5061
\ Îïòèìèçèðóþùèé ìàêðîïîäñòàíîâøèê Ìàêñèìîâ Ì.Î.
\ http://wiki.forth.org.ru/optimizer
 
[UNDEFINED] C>S
[IF]
: C>S ( c -- n ) 0xFF AND [ 0x7F INVERT ] LITERAL XOR 0x80 + ;
[THEN]
 
BASE @ HEX
 
\ : REL! ( ADDR' ADDR -- )
\ TUCK - SWAP ! ;
 
: REL@ ( ADDR -- ADDR' )
DUP @ + ;
 
\ FALSE VALUE OPT?
TRUE VALUE OPT?
 
084 VALUE J_COD
 
: SET-OPT TRUE TO OPT? ;
 
: DIS-OPT FALSE TO OPT? ;
 
INLINEVAR
[IF]
0x20 VALUE MM_SIZE
 
0 VALUE OFF-EBP
 
0 VALUE OFF-EAX
 
0 VALUE :-SET
 
0 VALUE J-SET
 
0 VALUE LAST-HERE
 
0x44 CELLS DUP CONSTANT OpBuffSize
 
CREATE OP0 HERE >T DUP , 0 , SWAP ALLOT
 
DUP OpBuffSize + CELL- CONSTANT OPLast
 
CELL+ DUP CONSTANT OP1
CELL+ DUP CONSTANT OP2
CELL+ DUP CONSTANT OP3
CELL+ DUP CONSTANT OP4
CELL+ DUP CONSTANT OP5
CELL+ DUP CONSTANT OP6
CELL+ DUP CONSTANT OP7
CELL+ DUP CONSTANT OP8
 
DROP
 
: SetOP ( -- )
OP0 OP1 OpBuffSize CELL- CMOVE>
DP @ OP0 !
;
 
: ToOP0 ( OPn -- )
OP0 OpBuffSize CELL- CMOVE ;
 
0x11 CELLS DUP CONSTANT JpBuffSize
 
CREATE JP0 HERE DUP , OVER ALLOT
 
 
DUP ROT ERASE
 
CELL+ DUP CONSTANT JP1
 
 
CELL+ DUP CONSTANT JP2
 
 
CELL+ DUP CONSTANT JP3
 
 
CELL+ DUP CONSTANT JP4
 
DROP
 
[THEN]
 
: ClearJpBuff JP0 JpBuffSize ERASE ;
 
: J@ 1+ REL@ CELL+ ;
 
: SJ@ 1+ DUP C@ C>S + 1+ ;
 
: J_@
DUP C@ F0
AND 70 = IF SJ@ ELSE
DUP C@ EB = IF SJ@ ELSE
DUP C@ E9 = IF J@ ELSE
DUP W@ F0FF
AND 800F = IF 1+ J@ ELSE
HEX U. 1 ." J_@ ERR" ABORT
THEN THEN THEN THEN
;
 
: SetJP ( -- )
JP0 JpBuffSize + CELL- @ DUP
IF J_@
THEN
\ DP @ UMIN
J-SET UMAX TO J-SET
JP0 JP1 JpBuffSize CELL- CMOVE>
DP @ JP0 ! ;
 
\ : ToJP0 ( OPn -- )
\ JP0 JpBuffSize CELL- CMOVE
\ JP0 JpBuffSize + CELL- 0! ;
 
: ?SET DP @
DUP LAST-HERE <> IF DUP TO :-SET DUP TO J-SET THEN
DUP OP0 @ U< IF OP0 0! THEN
DUP OP1 @ U< IF OP1 0! THEN
DUP JP0 @ U< IF JP0 0! THEN
JP1 @ U< IF JP1 0! THEN
;
 
: SHORT? ( n -- -129 < n < 128 )
0x80 + 0x100 U<
;
 
M\ VECT DTST
 
\ \\\\\\\\\\
 
[DEFINED] [TTO] \ CR .( TTO=) DUP .
[IF]
 
GET-CURRENT
 
WORDLIST CONSTANT MACROOPT-WL
 
\ çàïèøåì àäðåñ èìåíè ñëîâàðÿ
' MACROOPT-WL EXECUTE CELL+ ( name_addr )
LAST @ SWAP !
 
ALSO ' MACROOPT-WL EXECUTE CONTEXT ! DEFINITIONS
TC-WL ALSO TC-IMM
 
[THEN]
 
\ \\\\\\\\\\\\
 
: EVEN-EAX OFF-EAX
IF M\ 1000 DTST
SetOP OFF-EAX DUP SHORT?
IF 0408D W, C,
ELSE 0808D W, ,
THEN \ LEA EAX, OFF-EBP [EAX]
0 TO OFF-EAX
M\ 1001 DTST
THEN
;
 
: EVEN-EBP OFF-EBP
IF SetOP OFF-EBP 06D8D W, C, \ LEA ebp, OFF-EBP [EBP]
0 TO OFF-EBP
THEN
;
 
: +>OFF-EBP ( C -- )
C>S OFF-EBP + TO OFF-EBP ;
 
: ADD|XOR|OR|AND= ( W -- FLAG )
CASE
DUP 4503 <> IF \ ADD EAX, X2 [EBP]
DUP 450B <> IF \ OR
DUP 4523 <> IF \ AND
DUP 4533 <> IF \ XOR
DROP FALSE EXIT
DUPENDCASE DROP TRUE ;
 
: DUP3B?[EBP] ( W -- W FLAG )
CASE
DUP 0E7C4 AND 04500 <> IF \ 010X.X101 00XX.X0XX
\ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP _L | E_X | X [EBP] , _L | E_X | X [EBP]
 
DUP E7FD AND 4589 <> IF \ 010X.X101 1000.10X1
\ MOV X [EBP], E(ABCD)X | E(ABCD)X , X [EBP]
\ DUP 5503 <> IF \ ADD EDX , 0 [EBP]
DUP 758B <> IF \ MOV ESI , X [EBP]
 
DUP EFFF AND 6DDB <> IF \ FLD | FSTP EXTENDED 0 [EBP]
 
DUP 45DB <> IF \ FILD DWORD FC [EBP]
DUP 65F7 <> IF \ MUL X [EBP]
DUP 6DF7 <> IF \ IMUL X [EBP]
DUP 04587 <> IF \ XCHG EAX , X [EBP]
FALSE EXIT
DUPENDCASE TRUE ;
 
: DUP3B? ( W -- W FLAG )
CASE
\ 11XX.X000 1000.0011
DUP C7FF AND C083 <> IF \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
DUP 0478B <> IF \ MOV EAX, X [EDI]
DUP 0488B <> IF \ MOV ECX, X [EAX]
DUP 0588B <> IF \ MOV EBX, X [EAX]
DUP 0508B <> IF \ MOV EDX, X [EAX]
DUP 0788B <> IF \ MOV EDI, X [EAX]
DUP 0708B <> IF \ MOV ESI, X [EAX]
 
 
DUP 0588D <> IF \ LEA EBX, X [EAX]
DUP 0508D <> IF \ LEA EDX, X [EAX]
DUP 05089 <> IF \ MOV X [EAX], EDX
DUP 05189 <> IF \ MOV X [ECX] , EDX
DUP 07589 <> IF \ MOV X [EAX], ESI
 
DUP 0F8C1 <> IF \ SAR EAX, # X
DUP 0E0C1 <> IF \ SHL EAX, # X
DUP 0E1C1 <> IF \ SHL ECX, # X
 
DUP 0E8C1 <> IF \ SHR EAX, # X
DUP 0408D <> IF \ LEA EAX , X [EAX]
DUP 0408B <> IF \ MOV EAX , X [EAX]
FALSE EXIT
DUPENDCASE TRUE ;
 
: DUP2B? ( W -- W FLAG )
CASE
DUP 0E4C5 AND 0C001 <> IF
\ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP E_X , E_X
 
\ DUP 01801 <> IF \ ADD [EAX], EBX
 
DUP 01001 <> IF \ ADD [EAX], EDX
DUP 0003 <> IF \ ADD EAX, [EAX]
DUP F633 <> IF \ XOR ESI, ESI
DUP 108B <> IF \ MOV EDX , [EAX]
DUP 0C0FF AND C085 <> IF \ TEST E__ , E__
 
\ 110X.X0XX 1000.10X1
DUP 0E4FC AND 0C088 <> IF \ MOV E(ABCD)X , E(ABCD)X | (ABCD)L , (ABCD)L
 
\ 00XX.X0XX 1000.100X
 
DUP 0C4FE AND 00088 <> IF \ MOV [E(ABCD)X] , E(ABCD)X | (ABCD)(HL)
DUP 0008B <> IF \ MOV EAX, [EAX]
DUP 028B <> IF \ MOV EAX, [EDX]
DUP 0C78B <> IF \ MOV EAX, EDI
DUP 0F88B <> IF \ MOV EDI, EAX
DUP 0F08B <> IF \ MOV ESI, EAX
DUP 0C88B <> IF \ MOV ECX , EAX
DUP 0D18B <> IF \ MOV EDX , ECX
DUP 0C68B <> IF \ MOV EAX, ESI
\ 111X.X0XX 1101.00XX
DUP 0E4FC AND 0E0D0 <> IF \ S(AH)(LR) (ABCD)L | E(ABCD)X, CL | 1
DUP 0C0DD <> IF \ FFREE ST
 
DUP F0FF AND C0D9 <> IF \ FLD ST(X) | FXCH ST(X)
\ 1100.XXXX.1101.1001
 
DUP FAFF AND E0D9 <> IF \ FCHS|FABS|FTST|FXAM
\ 1110.0X0X.1101.1001
DUP E8FF AND E8D9 <> IF \ FLD1 FLDL2T FLDL2E FLDPI FLDLG2 FLDLN2 FLDZ ???
\ 1110.1XXX.1101.1001
 
DUP F0FF AND F0D9 <> IF \ F2XM1 FYL2X FPTAN FPATAN
\ 1111.XXXX.1101.1001 \ FXTRACT FPREM1 FDECSTP FINCSTP
\ FPREM FYL2XP1 FSQRT FSINCOS
\ FRNDINT FSCALE FSIN FCOS
DUP E8FF AND 20DB <> IF \ FLD EXTENDED [E_X] | FST EXTENDED [E_X]
\ 001X.0XXX.1101.1011
 
DUP E8FF AND 00DD <> IF \ FLD DOUBLE [E_X] | FST DOUBLE [E_X]
\ 000X.0XXX.1101.1101
 
DUP F0FF AND C0DE <> IF \ FADDP ST(X) | FMULP ST(X)
DUP E0FF AND E0DE <> IF \ FSUBRP ST(X) | FSUBP ST(X)
\ 111X.XXXX.1101.1110 \ FDIVRP ST(X) | FDIVP ST(X)
 
DUP 00FF <> IF \ INC [EAX]
\ DUP 0C0FF <> IF \ INC EAX
\ DUP 0C3FF <> IF \ INC EBX
\ DUP 0C8FF <> IF \ DEC EAX
DUP 0D0F7 <> IF \ NOT EAX
DUP 0D1F7 <> IF \ NOT ECX
DUP 0D8F7 <> IF \ NEG EAX
DUP 0D9F7 <> IF \ NEG ECX
DUP 0DAF7 <> IF \ NEG EDX
DUP 0E9F7 <> IF \ IMUL ECX
DUP 0F1F7 <> IF \ DIV ECX
DUP 0F9F7 <> IF \ IDIV ECX
FALSE EXIT
DUPENDCASE TRUE ;
 
: DUP6B? ( W -- W FLAG )
CASE
\ X00X.X101 1000.10X1
DUP 67FD AND 0589 <> IF \ MOV X {[EBP]}, E(ACDB)X | E(ACDB)X , X {[EBP]}
 
DUP C3FF AND C081 <> IF \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
 
DUP 00501 <> IF \ ADD X , EAX
DUP 0503 <> IF \ ADD EAX, X
DUP 053B <> IF \ CMP EAX, X
DUP 873B <> IF \ CMP EAX, X [EDI]
DUP F281 <> IF \ XOR EDX , # 80000000
DUP 928D <> IF \ LEA EDX , [EDX+80000000H]
 
\ DUP 0589 <> IF \ MOV X , EAX
\ DUP 058B <> IF \ MOV EAX, X
DUP 808B <> IF \ MOV EAX, X [EAX]
DUP 808D <> IF \ LEA EAX, X [EAX]
DUP 8703 <> IF \ MOV EAX, X [EDI]
 
DUP 878B <> IF \ MOV EAX, X [EDI]
DUP 878D <> IF \ LEA EAX, X [EDI]
DUP 0C7 <> IF \ MOV [EAX], # X
DUP 0081 <> IF \ ADD [EAX], # X
DUP 05FF <> IF \ INC X
 
\ DUP FCFF AND C0C7 <> IF \ MOV EAX|EBX|ECX|EDX, # X
FALSE EXIT
DUPENDCASE TRUE ;
 
: DUP5B? ( C -- C FLAG )
 
 
DUP 0C7 AND 5 = \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
OVER 0FC AND 0B8 = OR \ MOV EAX|EBX|ECX|EDX, # X
OVER 0FD AND 0A1 = OR \ MOV EAX, X | X , EAX
;
 
: DUP7B? ( N -- N FLAG )
\ XX00.0101 0000.0100 1000.10X1
DUP 3FFFFD AND 050489 = \ MOV X [EAX*_] , EAX | MOV EAX , X [EAX*_]
\ XX00.0101 0000.0100 1000.1X01
OVER 3FFFFB AND 050489 = OR \ MOV X [EAX*_] , EAX | LEA EAX , X [EAX*_]
OVER 80B60F = OR \ MOVZX EAX, BYTE PTR [EAX]
OVER 45048D = OR \ LEA EAX, X [EAX*2]
 
;
 
0 VALUE TTTT
 
\ 0 VALUE ZZZZ \ VECT VVV
 
: ?ChEAX ( ADDR -- FALSE | TRUE )
CASE
DUP C@
DUP B8 <> IF \ MOV EAX, # X
DUP A1 <> IF \ MOV EAX, X
DROP
DUP W@
\ DUP ADD|XOR|OR|AND= 0= IF
DUP C033 <> IF \ XOR EAX, EAX
DUP C031 <> IF \ XOR EAX, EAX
DUP D889 <> IF \ MOV EAX, EBX
 
38FF AND
DUP 008B <> IF \ MOV EAX, ___
DUP 008D <> IF \ LEA EAX, ___
DROP
DUP @ FFFFFF AND
DUP 02048D <> IF \ LEA EAX, [EDX] [EAX]
 
2DROP TRUE EXIT
DUPENDCASE 2DROP FALSE ;
 
: ^?EAX= ( ADDR -- FALSE | TRUE )
\ FALSE
DUP ?ChEAX IF DROP TRUE EXIT THEN
DUP W@
DUP 00F9
AND 0089 <> IF 2DROP FALSE EXIT THEN
\ LEA MOV
CASE
FF00 AND
DUP 0100 AND
0100 <> IF \ MOV EAX,
 
DUP C200 <> IF \ MOV EAX, EDX
DUP D800 <> IF \ MOV EAX, EBX
DROP
DUP @ FFFF00 AND
 
DUP 240400 <> IF \ MOV EAX, [ESP]
DUP 244400 <> IF \ MOV EAX, X [ESP]
DUP 95048B <> IF \ 8B0495F0065A00 MOV EAX , 5A06F0 [EDX*4]
2DROP TRUE EXIT
DUPENDCASE 2DROP FALSE ;
 
\ DUP 8B00 = \ MOV EAX, [EAX]
 
: OP_SIZE ( OP - n )
DUP IF THEN DUP CELL- @ SWAP @ -
;
 
: OPexcise ( OPX -- )
DUP OP0 = IF @ DP ! OP1 ToOP0 EXIT THEN
>R
R@ CELL- @ R@ @ DP @ R@ CELL- @ - CMOVE
 
R@ OP_SIZE NEGATE
R@ OP0 DO DUP I +! CELL +LOOP
ALLOT
R@ CELL+ R@ OpBuffSize CELL- R> - OP0 + CMOVE
;
: ?OPlast ( OPX -- OPX flag )
DUP OP0 OpBuffSize + CELL- CELL- U> ;
 
: XX_STEP ( OPX -- OPX+CELL FALSE | { OPX | FALSE } TRUE )
\ Ïðîâåðêà íà íå èçìåíåíèå EAX
?OPlast
IF DROP FALSE TRUE EXIT THEN
DUP @
DUP :-SET U< IF 2DROP FALSE TRUE EXIT THEN
C@
CASE
DUP 3D <> IF \ CMP EAX, # X
DUP 3B <> IF \ CMP E_X , X
DUP A3 <> IF \ MOV X , EAX
DUP B9 <> IF \ MOV ECX , # X
DUP BA <> IF \ MOV EDX , # X
DUP BB <> IF \ MOV EBX , # X
DUP 50 <> IF \ PUSH EAX
DROP
DUP @ W@
DUP 04FF AND 04C7 <> IF \ MOV 4444 , # 5555
DUP 40FE AND 0088 <> IF \ MOV [EAX] , DL
DUP 4D89 <> IF \ MOV 4 [EBP] , ECX
DUP 558B <> IF \ MOV EDX , FC [EBP]
DUP 4C8B <> IF \ MOV ECX , FC [E__] [E__]
DUP 648D <> IF \ LEA ESP , 8 [ESP]
DUP 34FF AND 04FF <> IF \ INC 0 [ESP]
DUP C00B <> IF \ OR EAX, EAX
DUP D00B <> IF \ OR EDX, EAX
DUP D02B <> IF \ SUB EDX, EAX
DUP 0401 <> IF \ ADD [E_X]
DUP 06FD \ CMP X [EBP], # Z \ CMP 44444, # 55555
AND 0481 <> IF
DUP FFFD
AND 4589 =
IF OVER @ 2+ C@ OP0 @ 2+ C@ =
IF DROP TRUE
EXIT
THEN
458B = IF DROP FALSE TRUE EXIT THEN
CELL+ FALSE EXIT
THEN
2DROP
FALSE TRUE EXIT
DUPENDCASE DROP CELL+ FALSE ;
 
: ?EDX_[EBP] ( OPX - FLAG )
DUP @ @ FFFFFF AND
DUP 24048B = \ 8B0424 MOV EAX , [ESP]
IF 2DROP FALSE EXIT THEN
FFFF AND
 
DUP 458B XOR \ 8B4500 MOV EAX , 0 [EBP]
OVER 4589 XOR OR \ OPX N F MOV FC [EBP] , EAX
0= IF DROP
@ 2+ C@ OP0 @ 2+ C@ =
EXIT
THEN
NIP
DUP ADD|XOR|OR|AND=
IF DROP FALSE EXIT THEN
DUP E8C1 = \ C1E819 SHR EAX , 19
IF DROP FALSE EXIT THEN
DUP 418D = \ 8D41FF LEA EAX , FF [ECX]
IF DROP FALSE EXIT THEN
DUP 408D = \ 8D40FF LEA EAX , FF [EAX]
IF DROP FALSE EXIT THEN
DUP 878D = \ 8D873C100000 LEA EAX , 103C [EDI]
IF DROP FALSE EXIT THEN
DUP D0F7 = \ F7D0 NOT EAX
IF DROP FALSE EXIT THEN
DUP D8F7 = \ F7D8 NEG EAX
IF DROP FALSE EXIT THEN
DUP C123 = \ 23C1 AND EAX , ECX
IF DROP FALSE EXIT THEN
 
DUP C033 = \ XOR EAX , EAX
IF DROP FALSE EXIT THEN
 
DUP 808D = \ 8D8024475A00 LEA EAX , 5A4724 [EAX]
IF DROP FALSE EXIT THEN
 
DUP 088B = \ MOV ECX , [EAX]
IF DROP FALSE EXIT THEN
 
DUP C00B = \ 0BC0 OR EAX , EAX
IF DROP FALSE EXIT THEN
 
DUP 488D = \ 8D4820 LEA ECX , 20 [EAX]
IF DROP FALSE EXIT THEN
 
DUP E0D3 = \ D3E0 SHL EAX , CL
IF DROP FALSE EXIT THEN
 
FF AND
DUP A1 = \ A1047A5800 MOV EAX , 587A04
IF DROP FALSE EXIT THEN
DUP 58 = \ 58 POP EAX
IF DROP FALSE EXIT THEN
DUP B9 = \ B907000000 MOV ECX , # 7
IF DROP FALSE EXIT THEN
DROP TRUE
;
 
: MOV_EDX_[EBP] ( OPX - OPX' FALSE | FLAG TRUE )
?OPlast IF DROP FALSE TRUE EXIT THEN
DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN
DUP @ ?ChEAX 0= IF CELL+ FALSE EXIT THEN
DUP ?EDX_[EBP] 0= IF CELL+ FALSE EXIT THEN
DUP @ W@
 
DUP 448B = \ MOV EAX , 4 [EDX] [EAX*4]
IF DROP CELL+ FALSE EXIT THEN
 
DUP 1489 = \ MOV 59C2E4 [EAX*4] , EDX
IF DROP CELL+ FALSE EXIT THEN
DUP 8BCA = \ MOV ECX , EDX
IF DROP CELL+ FALSE EXIT THEN
DUP FFFD AND 5589 = \ OPX N F
IF DROP @ 2+ C@ OP0 @ 2+ C@ = TRUE EXIT
THEN
2DROP FALSE TRUE
;
 
: OPresize ( OPX n -- )
DUP >R
OVER OP0 ?DO DUP I +! CELL +LOOP
ALLOT
@ DUP R> + DUP DP @ - NEGATE MOVE
;
 
: OPinsert ( OPX n -- )
DUP >R
2DUP OPresize DROP
DUP
DUP CELL + OVER OP0 CC - OpBuffSize CELL- - NEGATE MOVE
R> SWAP +!
;
 
VARIABLE ?~EAX
VARIABLE SAVE-?~EAX
: ?~EAX{ ( FLAG -- )
?~EAX @ SAVE-?~EAX ! ?~EAX ! ;
 
: }?~EAX ( -- )
SAVE-?~EAX @ ?~EAX ! ;
 
 
: ?EAX>EBX ( OPX - OPX' FALSE | FALSE TRUE | OPX' TRUE TRUE )
\ TTTT 0= IF DROP FALSE TRUE EXIT THEN
\ ." $=" DUP @ @ U.
\ TTTT IF HEX DUP @ U. THEN
\ DROP FALSE TRUE EXIT
?OPlast IF DROP FALSE TRUE EXIT THEN
DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN
DUP @ W@
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
OVER 458B = OR \ OPX N F MOV EAX , FC [EBP]
IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ =
IF CELL- TRUE TRUE
ELSE DUP @ W@ 458B = IF ?~EAX 0! THEN
CELL+ FALSE
THEN EXIT
THEN
 
CASE
\ ." $=" DUP @ U.
DUP 083B <> \ CMP ECX , [EAX]
IF
DUP C83B <> \ CMP ECX , EAX
IF
DUP C13B <> \ CMP EAX , ECX
IF
DUP 508B <> \ MOV EDX , 4 [EAX]
IF
DUP 088B <> \ MOV ECX , [EAX]
IF
DUP 098B <> \ MOV ECX , [ECX]
IF
DUP C88B <> \ MOV ECX , EAX
IF
DUP 0889 <> \ MOV [EAX] , ECX
IF
DUP 1089 <> \ MOV [EAX] , EDX
IF
DUP 4889 <> \ MOV 4 [EAX] , ECX
IF
0 ?~EAX{
DUP 408D <> \ LEA EAX , 1 [EAX]
IF
DUP 808D <> \ LEA EAX , 1 [EAX]
IF
DUP 008B <> \ MOV EAX , [EAX]
IF
\ TTTT IF HEX ." M=" DUP U. THEN
 
DUP C18B <> \ MOV EAX , ECX
IF
TRUE ?~EAX !
DUP D8F7 <> \ NEG EAX
IF
}?~EAX
DROP
DUP @ @ FFFFFF AND
DUP 240C8B <> \ MOV ECX , [ESP]
IF
DUP 8D0489 <> \ MOV X [ECX*4] , EAX
IF
0 ?~EAX{
DUP 24048B <> \ MOV EAX , [ESP]
IF
TRUE ?~EAX !
DUP 24442B <> \ SUB EAX , 4 [ESP]
IF
}?~EAX
0xFFFF AND
OVER @ 2+ C@ OP0 @ 2+ C@
\ TTTT IF HEX ." N=" 2DUP U. U. THEN
=
IF 2DROP FALSE TRUE EXIT
THEN
DUP 4D8B <> \ MOV ECX , [EBP]
IF
DUP 5589 <> \ MOV [EBP] , EDX
IF
 
2DROP FALSE TRUE EXIT
DUPENDCASE DROP CELL+ FALSE ;
 
: EAX>EBX0 ( OPX - OPX' FLAG )
 
 
DUP OP0 = IF TRUE EXIT THEN
\ TTTT IF 1 EMIT DUP U. DUP @ U. THEN
DUP @ W@
 
DUP 508B = \ MOV EDX , [EAX+4]
IF DROP CELL- FALSE EXIT THEN
DUP 088B = \ MOV ECX , [EAX]
IF DROP CELL- FALSE EXIT THEN
DUP 098B = \ MOV ECX , [ECX]
IF DROP CELL- FALSE EXIT THEN
DUP 4D8B = \ MOV ECX , [EBP]
IF DROP CELL- FALSE EXIT THEN
DUP 5589 = \ MOV 0 [EBP] , EDX
IF DROP CELL- FALSE EXIT THEN
DUP C88B = \ MOV ECX , EAX
IF DROP CELL- FALSE EXIT THEN
DUP 0889 = \ MOV [EAX] , ECX
IF DROP CELL- FALSE EXIT THEN
DUP 1089 = \ MOV [EAX] , EDX
IF DROP CELL- FALSE EXIT THEN
DUP 4889 = \ MOV 4 [EAX] , ECX
IF DROP CELL- FALSE EXIT THEN
DUP 408D = \ LEA EAX , 1 [EAX]
IF DROP
58 OVER @ 1+ C! CELL- TRUE EXIT
THEN
 
DUP 808D = \ LEA EAX , 1 [EAX]
IF DROP
98 OVER @ 1+ C! CELL- TRUE EXIT
THEN
DUP 008B = \ MOV EAX , [EAX]
IF DROP
18 OVER @ 1+ C! CELL- TRUE EXIT
THEN
 
DUP C18B = \ MOV EAX , ECX
IF DROP
D9 OVER @ 1+ C! CELL- TRUE EXIT
THEN
 
DUP 458B = \ MOV EAX , [EBP+X]
IF DROP
5D OVER @ 1+ C! CELL- TRUE EXIT
THEN
 
DUP D8F7 = \ NEG EAX
IF DROP
DB OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DROP
DUP @ @ FFFFFF AND
 
DUP 8D0489 = \ MOV X [ECX*4] , EAX
IF DROP CELL- FALSE EXIT THEN
 
DUP 24048B = \ MOV EAX , [ESP]
IF DROP
1C OVER @ 1+ C! CELL- TRUE EXIT
THEN
DUP 240C8B = \ MOV ECX , [ESP]
IF DROP CELL- FALSE EXIT THEN
\ BASE @ >R HEX DUP U. R> BASE !
FF AND
DUP 3B = \ CMP
IF DROP CELL- FALSE EXIT THEN
HEX U. U. ." EAX>EBX0" ABORT
;
 
: EAX>EBX ( OPX - OPX' FLAG )
 
 
DUP OP0 = IF TRUE EXIT THEN
DUP @ W@ \ ." #=" DUP U.
 
DUP 508B = \ MOV EDX , [EAX+4]
IF DROP
53 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 083B = \ CMP ECX , [EAX]
IF DROP
0B OVER @ 1+ W! CELL- FALSE EXIT
THEN
 
DUP C83B = \ CMP ECX , EAX
IF DROP
CB OVER @ 1+ W! CELL- FALSE EXIT
THEN
 
DUP C13B = \ CMP EAX , ECX
IF DROP
D9 OVER @ 1+ W! CELL- FALSE EXIT
THEN
 
DUP 088B = \ MOV ECX , [EAX]
IF DROP
0B OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 458B = \ MOV EAX , [EBP+X]
IF DROP
5D OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 098B = \ MOV ECX , [ECX]
IF DROP CELL- FALSE EXIT THEN
 
DUP 4D8B = \ MOV ECX , [EBP]
IF DROP CELL- FALSE EXIT THEN
 
DUP 5589 = \ MOV 0 [EBP] , EDX
IF DROP CELL- FALSE EXIT THEN
 
DUP C88B = \ MOV ECX , EAX
IF DROP
CB OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 0889 = \ MOV [EAX] , ECX
IF DROP
0B OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 1089 = \ MOV [EAX] , EDX
IF DROP
13 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 4889 = \ MOV 4 [EAX] , ECX
IF DROP
4B OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
IF DROP
5D OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 408D = \ LEA EAX , 1 [EAX]
IF DROP
5B OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 808D = \ LEA EAX , X [EAX]
IF DROP
9B OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 008B = \ MOV EAX , [EAX]
IF DROP
1B OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP C18B = \ MOV EAX , ECX
IF DROP
D9 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
 
DUP D8F7 = \ NEG EAX
IF DROP
DB OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DROP
DUP @ @ FFFFFF AND
 
DUP 8D0489 = \ MOV X [ECX*4] , EAX
IF DROP
1C OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 24048B = \ MOV EAX , [ESP]
IF DROP
1C OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 240C8B = \ MOV ECX , [ESP]
IF DROP CELL- FALSE EXIT THEN
DUP 24442B = \ SUB EAX , [ESP+4]
IF DROP
5C OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
HEX U. U. ." EAX>EBX" ABORT
;
 
: ?EAX>ECX ( OPX - OPX' FALSE | FALSE TRUE | OPX' TRUE TRUE )
\ ZZZZ 0= IF DROP FALSE TRUE EXIT THEN
\ DROP FALSE TRUE EXIT
?OPlast IF DROP FALSE TRUE EXIT THEN
DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN
\ TTTT IF HEX DUP @ U. THEN
DUP @ W@
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
OVER 458B = OR \ OPX N F MOV EAX , FC [EBP]
IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ =
IF CELL- TRUE TRUE
ELSE DUP @ W@ 458B = IF ?~EAX 0! THEN
CELL+ FALSE
THEN EXIT
THEN
DUP 5589 = \ OPX N F MOV FC [EBP] , EDX
IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ =
IF DROP FALSE TRUE
ELSE CELL+ FALSE
THEN EXIT
THEN
 
CASE
0 ?~EAX{
 
\ 8B00 MOV EAX , [EAX]
\ 3B05E3745400 CMP EAX , 5474E3 ( :-SET+5 )
DUP 3AFF AND 028B <> \ MOV EAX , [EDX]
IF
DUP 008B <> \ MOV EAX , [EAX]
IF
DUP 408D <> \ LEA EAX , 1 [EAX]
IF
DUP 408B <> \ MOV EAX , 1 [EAX]
IF
DUP 428D <> \ LEA EAX , 1 [EDX]
IF
\ DUP 808D <> \ LEA EAX , X [EAX]
\ IF
DUP C28B <> \ MOV EAX , EDX
IF
TRUE ?~EAX !
DUP C00B <> \ OR EAX , EAX
IF
DUP C01B <> \ SBB EAX , EAX
IF
DUP F8D1 <> \ SAR EAX , 1
IF
DUP E8C1 <> \ SHR EAX , 1
IF
DUP D8F7 <> \ NEG EAX
IF
DUP D0F7 <> \ NOT EAX
IF
DUP D0F7 <> \ NOT EAX
IF
DUP 4503 <> \ ADD EAX , 0 [EBP]
IF
DUP 0523 <> \ AND EAX , 587744 ( D+5 )
IF
DUP E0C1 <> \ SHL EAX , 7
IF
DUP C223 <> \ AND EAX , EDX
IF
}?~EAX
DUP 508B <> \ MOV EDX , [EAX+4]
IF
DUP 053B <> \ CMP EAX , 5474E3 ( :-SET+5 )
IF
DUP 103B <> \ CMP EDX , [EAX]
IF
DUP 558B <> \ OPX N F MOV F8 [EBP] , EDX
IF
DUP 158B <> \ MOV EDX , 587A88
IF
DUP D08B <> \ MOV EDX , EAX
IF
DUP 0501 <> \ MOV ADD 555555 , EAX
IF
DUP 5089 <> \ MOV C [EAX] , EDX
IF
DUP 1089 <> \ MOV [EAX] , EDX
IF
 
DUP 80C6 <> \ MOV BYTE [EAX] , # X
IF
DUP 45C7 <> \ MOV FC [EBP] , # 1
IF
FF AND
DUP 50 <> \ PUSH EAX
IF
DUP A3 <> \ MOV 1000 , EAX
IF
0 ?~EAX{
DUP B8 <> \ MOV EAX , # 1000
IF
DUP A1 <> \ MOV EAX , 1000
IF
TRUE ?~EAX !
DUP 25 <> \ AND EAX , # X
IF
 
}?~EAX
DUP BA <> \ MOV EDX , # 1000
IF
DUP 3D <> \ CMP EAX , # 1000
IF
DROP
DUP @ @
0 ?~EAX{
DUP 0244B60F <> \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
IF
FFFFFF AND
DUP 85048D <> \ LEA EAX , 0 [EAX*4]
IF
DUP 85048B <> \ MOV EAX , X [EAX*4]
IF
DUP 80B60F <> \ MOVZX EAX , BYTE PTR X [EAX]
IF
DUP 40B70F <> \ MOVZX EAX , WORD PTR X [EAX]
IF
DUP 00B70F <> \ MOVZX EAX , WORD [EAX]
IF
DUP 82448B <> \ MOV EAX , 4 [EDX] [EAX*4]
IF
DUP 24048B <> \ MOV EAX , [ESP]
IF
DUP 24448B <> \ MOV EAX , [ESP+4]
IF
TRUE ?~EAX !
DUP 24442B <> \ SUB EAX , [ESP+4]
IF
}?~EAX
DUP 24043B <> \ CMP EAX , [ESP]
IF
DUP 24443B <> \ CMP EAX , 20 [ESP]
IF
DUP 24548B <> \ MOV EDX , C [ESP]
IF
2DROP FALSE TRUE EXIT
DUPENDCASE DROP CELL+ FALSE ;
 
: EAX>ECX0 ( OPX - OPX' FLAG )
 
DUP OP0 = IF TRUE EXIT THEN
DUP @ W@
DUP EFFF AND 4589 = \ OPX N F
IF DROP CELL- FALSE EXIT THEN
 
DUP 0501 = \ ADD [444444H] , EAX
IF DROP CELL- FALSE EXIT THEN
 
DUP 5589 = \ MOV X [EBP] , EDX
IF DROP CELL- FALSE EXIT THEN
DUP 38FF AND 008B = \ MOV EAX , ___
IF DROP
0800 OVER @ +! CELL- TRUE EXIT
THEN
DUP C28B = \ MOV EAX , EDX
IF DROP
CA OVER @ 1+ C! CELL- TRUE EXIT
THEN
DUP 808D = \ LEA EAX , 1 [EAX]
IF DROP
88 OVER @ 1+ C! CELL- TRUE EXIT
THEN
DUP 408D = \ LEA EAX , 1 [EAX]
IF DROP
48 OVER @ 1+ C! CELL- TRUE EXIT
THEN
 
DUP 408B = \ MOV EAX , 1 [EAX]
IF DROP
48 OVER @ 1+ C! CELL- TRUE EXIT
THEN
 
DUP FF AND 8B = \ MOV ~EAX , ___
IF DROP CELL- FALSE EXIT THEN
 
DUP 38FF AND 008D = \ LEA EAX , ___
IF DROP
0800 OVER @ +! CELL- TRUE EXIT
THEN
DUP 428D = \ LEA EAX , 1 [EDX]
IF DROP
0800 OVER @ +! CELL- TRUE EXIT
THEN
 
DUP C00B = \ OR EAX , EAX
IF DROP CELL- FALSE EXIT THEN
 
DUP 5089 = \ MOV C [EAX] , EDX
IF DROP CELL- FALSE EXIT THEN
 
DUP 1089 = \ MOV [EAX] , EDX
IF DROP CELL- FALSE EXIT THEN
DUP 80C6 = \ MOV BYTE [EAX] , # X
IF DROP CELL- FALSE EXIT THEN
 
DUP 45C7 = \ MOV FC [EBP] , # 1
IF DROP CELL- FALSE EXIT THEN
DROP
DUP @ @
DUP 0244B60F = \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
IF DROP
4C OVER @ 2+ C! CELL- TRUE EXIT
THEN
 
FFFFFF AND
 
DUP 80B60F = \ MOVZX EAX , BYTE PTR X [EAX]
IF DROP
88 OVER @ 2+ C! CELL- TRUE EXIT
THEN
 
DUP 40B70F = \ MOVZX EAX , WORD PTR x [EAX]
IF DROP
48 OVER @ 2+ C! CELL- TRUE EXIT
THEN
 
DUP 00B70F = \ MOVZX EAX , WORD PTR [EAX]
IF DROP
08 OVER @ 2+ C! CELL- TRUE EXIT
THEN
 
\ DUP 24442B = \ SUB EAX , [ESP+4]
\ IF DROP
\ 4C OVER @ 1+ C! CELL- TRUE EXIT
\ THEN
 
FF AND
DUP 50 = \ PUSH EAX
IF DROP CELL- FALSE EXIT THEN
DUP B8 = \ MOV EAX , # 1000
IF DROP
B9 OVER @ C! CELL- TRUE EXIT
THEN
DUP BA = \ MOV EDX , # 1000
IF DROP CELL- FALSE EXIT THEN
DUP 3D = \ CMP EAX , # 1000
IF DROP CELL- FALSE EXIT THEN
DUP 3B = \ CMP
IF DROP CELL- FALSE EXIT THEN
 
DUP A3 = \ MOV 1000 , EAX
IF DROP CELL- FALSE EXIT THEN
 
DUP A1 = \ MOV EAX , 1000
IF DROP DUP 1 OPresize
0D8B OVER @ W! CELL- TRUE EXIT
THEN
 
HEX U. DUP @ @ U. U. ." EAX>ECX0" ABORT
;
 
: EAX>ECX ( OPX - OPX' F | T )
 
DUP OP0 = IF TRUE EXIT THEN
DUP @ W@
\ 8B00 MOV EAX , [EAX]
\ 3B05E3745400 CMP EAX , 5474E3 ( :-SET+5 )
 
DUP 5589 = \ MOV X [EBP] , EDX
IF DROP CELL- FALSE EXIT THEN
 
DUP 3AFF AND 028B = \ MOV EAX , [EDX]
IF DROP
0800 OVER @ +! CELL- FALSE EXIT
THEN
DUP 458B = \ MOV EAX , [EBP+X]
IF DROP
4D OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 008B = \ MOV EAX , [EAX]
IF DROP
09 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP D08B = \ MOV EDX , EAX
IF DROP
D1 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP C28B = \ MOV EAX , EDX
IF DROP
CA OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP E0C1 = \ SHL EAX , 7
IF DROP
E1 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP C223 = \ AND EAX , EDX
IF DROP
CA OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 0501 = \ ADD [444444H] , EAX
IF DROP
0D01 OVER @ W! CELL- FALSE EXIT
THEN
 
DUP 508B = \ MOV EDX , [EAX+4]
IF DROP
51 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 053B = \ CMP EAX , 5474E3 ( :-SET+5 )
IF DROP
0D OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 103B = \ CMP EDX , [EAX]
IF DROP
11 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP C23B = \ CMP EAX , EDX
IF DROP
CA OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP C00B = \ OR EAX , EAX
IF DROP
C9 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP C01B = \ SBB EAX , EAX
IF DROP
C9 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP F8D1 = \ SAR EAX , 1
IF DROP
F9 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP E8C1 = \ SAR EAX , 1
IF DROP
E9 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
IF DROP
4D OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 5089 = \ MOV C [EAX] , EDX
IF DROP
51 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 1089 = \ MOV [EAX] , EDX
IF DROP
11 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 80C6 = \ MOV BYTE [EAX] , # X
IF DROP
81 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 408D = \ LEA EAX , 1 [EAX]
IF DROP
49 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 408B = \ MOV EAX , 1 [EAX]
IF DROP
49 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 428D = \ LEA EAX , 1 [EDX]
IF DROP
0800 OVER @ +! CELL- FALSE EXIT
THEN
 
DUP 808D = \ LEA EAX , 1 [EAX]
IF DROP
89 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP C28B = \ MOV EAX , EDX
IF DROP
CA OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP D8F7 = \ NEG EAX
IF DROP
D9 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP D0F7 = \ NOT EAX
IF DROP
D1 OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP D0F7 = \ NOT EAX
IF DROP
D1 OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 4503 = \ ADD EAX , 0 [EBP]
IF DROP
4D OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 0523 = \ AND EAX , 587744 ( D+5 )
IF DROP
0D OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 558B = \ OPX N F MOV F8 [EBP] , EDX
IF DROP CELL- FALSE EXIT THEN
DUP 158B = \ MOV EDX , 587A88
IF DROP CELL- FALSE EXIT THEN
DUP 45C7 = \ MOV FC [EBP] , # 1
IF DROP CELL- FALSE EXIT THEN
DROP
DUP @ @
DUP 0244B60F = \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
IF DROP
0A4C OVER @ 2+ W! CELL- TRUE EXIT
THEN
FFFFFF AND
DUP 85048D = \ LEA EAX , 0 [EAX*4]
IF DROP
8D0C OVER @ 1+ W! CELL- FALSE EXIT
THEN
 
DUP 85048B = \ MOV EAX , X [EAX*4]
IF DROP
8D0C OVER @ 1+ W! CELL- FALSE EXIT
THEN
DUP 80B60F = \ MOVZX EAX , BYTE PTR X [EAX]
IF DROP
89 OVER @ 2+ C! CELL- FALSE EXIT
THEN
 
DUP 40B70F = \ MOVZX EAX , WORD PTR x [EAX]
IF DROP
49 OVER @ 2+ C! CELL- FALSE EXIT
THEN
 
DUP 00B70F = \ MOVZX EAX , WORD PTR [EAX]
IF DROP
09 OVER @ 2+ C! CELL- FALSE EXIT
THEN
 
DUP 82448B = \ MOV EAX , 4 [EDX] [EAX*4]
IF DROP
8A4C OVER @ 1+ W! CELL- FALSE EXIT
THEN
DUP 24048B = \ MOV EAX , [ESP]
IF DROP
0C OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 24448B = \ MOV EAX , [ESP+4]
IF DROP
4C OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
DUP 24043B = \ CMP EAX , [ESP]
IF DROP
0C OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 24443B = \ CMP EAX , 20 [ESP]
IF DROP
4C OVER @ 1+ C! CELL- FALSE EXIT
THEN
DUP 24548B = \ MOV EDX , C [ESP]
IF DROP CELL- FALSE EXIT THEN
DUP 24442B = \ SUB EAX , [ESP+4]
IF DROP
4C OVER @ 1+ C! CELL- FALSE EXIT
THEN
 
FF AND
DUP 50 = \ PUSH EAX
IF DROP
51 OVER @ C! CELL- FALSE EXIT
THEN
DUP B8 = \ MOV EAX , # 1000
IF DROP
B9 OVER @ C! CELL- FALSE EXIT
THEN
DUP A3 = \ MOV 1000 , EAX
IF DROP DUP 1 OPresize
0D89 OVER @ W! CELL- FALSE EXIT
THEN
DUP A1 = \ MOV EAX , # 1000
IF DROP DUP 1 OPresize
0D8B OVER @ W! CELL- FALSE EXIT
THEN
DUP 25 = \ AND EAX , # X
IF DROP DUP 1 OPresize
E181 OVER @ W! CELL- FALSE EXIT
THEN
DUP BA = \ MOV EDX , # 1000
IF DROP CELL- FALSE EXIT THEN
DUP 3D = \ CMP EAX , # 1000
IF DROP DUP 1 OPresize
F981 OVER @ W! CELL- FALSE EXIT
THEN
U. DUP @ @ U. U. ." EAX>ECX" ABORT
;
 
: -EBPLIT ( n OPX -- n OPX' )
DUP @ :-SET U> 0= IF EXIT THEN
BEGIN
?OPlast IF EXIT THEN
DUP @ W@ 6D8D = IF EXIT THEN \ LEA EBP , X [EBP]
DUP @ C@ E8 = IF EXIT THEN \ CALL
DUP @ C@ E9 = IF EXIT THEN \ JMP
DUP @ C@ F0
AND 70 = IF EXIT THEN \ Jx
DUP @ C@ EB = IF EXIT THEN
DUP @ W@ F0FF
AND 800F = IF EXIT THEN
2DUP @ 2+ C@ = IF EXIT THEN
CELL+ DUP @ :-SET U> 0=
UNTIL ;
1 [IF]
: -EBPCLR ( FLAG OPX -- FLAG' )
DUP @ :-SET U< IF DROP EXIT THEN
OFF-EBP CELL- TO OFF-EBP
BEGIN
?OPlast IF DROP EXIT THEN
DUP @ W@ 6D8D = IF DROP EXIT THEN
DUP @ C@ E8 = IF DROP EXIT THEN \ CALL
DUP @ C@ E9 = IF DROP EXIT THEN \ JMP
DUP @ C@ F0
AND 70 = IF DROP EXIT THEN \ Jx
DUP @ C@ EB = IF DROP EXIT THEN
DUP @ W@ F0FF
AND 800F = IF DROP EXIT THEN
DUP @ @ FFFFFF AND 85448B = \ MOV EAX , FC [EBP] [EAX*4]
IF DROP EXIT THEN
 
\ DUP @ 2+ C@ DUP U. OFF-EBP FF AND DUP U. =
DUP @ 2+ C@ OFF-EBP FF AND =
IF DUP @ W@ E7FF AND 4589 = \ MOV X [EBP] , EAX|EDX|EBX|ECX
OVER @ W@ 45C7 = OR \ MOV F8 [EBP] , # 2710
IF M\ 20A DTST
\ ." ^" DUP @ U. :-SET U. \ OPexcise NIP TRUE SWAP CELL-
DUP OPexcise NIP TRUE SWAP CELL-
ELSE DROP EXIT
THEN
THEN
CELL+ DUP @ :-SET U<
UNTIL DROP ;
 
[ELSE]
: -EBPCLR ( FLAG OPX -- FLAG' )
OFF-EBP CELL- TO OFF-EBP
BEGIN
OFF-EBP SWAP -EBPLIT NIP
?OPlast IF DROP EXIT THEN
:-SET OVER @ U<
WHILE DUP @ 2+ C@ OFF-EBP FF AND =
IF DUP @ W@ E7FF AND 4589 = \ MOV X [EBP] , EAX|EDX|EBX|ECX
IF M\ 20A DTST
DUP OPexcise NIP TRUE SWAP \ CELL-
ELSE DROP EXIT
THEN
ELSE
DUP @ @ FFFFFF AND 85448B = \ MOV EAX , FC [EBP] [EAX*4]
IF DROP EXIT THEN
CELL+
?OPlast IF DROP EXIT THEN
DUP @ :-SET U< IF DROP EXIT THEN
THEN
REPEAT DROP
;
[THEN]
 
: T?EAX>ECX ( FALSE | OPX' TRUE -- ... )
IF CELL+ CELL+ FALSE
ELSE FALSE TRUE
THEN ;
 
: F?EAX>ECX ( FLAG -- ... )
IF \ TRUE TRUE
?~EAX @
IF DROP FALSE
ELSE TRUE
THEN TRUE
ELSE FALSE
THEN ;
: ECX:=EAX ( OPX -- OPX- )
DUP 2 OPinsert
C88B OVER CELL+ @ W! \ MOV ECX , EAX
\ CELL-
;
 
: EBX:=EAX ( OPX -- OPX- )
DUP 2 OPinsert
D88B OVER CELL+ @ W! \ MOV EBX , EAX
\ CELL-
;
 
TRUE VALUE ~BR-OPT
 
: ?EAX:=ECX ( -- )
?~EAX @
IF SetOP 8B C, C1 C, \ MOV EAX , ECX
THEN ;
: DO_EAX>ECX ( -- FLAG )
OP1
BEGIN ?EAX>ECX
DUP 0= \ TTTT AND
IF DROP CELL-
?OPlast IF DROP FALSE EXIT THEN
DUP @ :-SET U< IF DROP FALSE EXIT THEN
DUP @ W@ 4D89 = \ OPX N F MOV FC [EBP] , ECX
IF DUP @ 2+ C@
OP0 @ 2+ C@ =
IF M\ 410 DTST
DROP ?~EAX 0!
OP0 2 OPinsert
C18B OP1 @ W! \ MOV EAX , ECX
OP0 TRUE TRUE
ELSE DROP FALSE TRUE
THEN
ELSE CELL+ FALSE
THEN
THEN
UNTIL DUP >R
IF M\ 40E DTST
?~EAX @
IF ECX:=EAX
ELSE BEGIN EAX>ECX0 UNTIL
THEN BEGIN EAX>ECX UNTIL
DROP
OP1 ToOP0
-3 ALLOT
M\ 40F DTST
THEN R>
;
M\ VARIABLE VPPP : PPPP DUP VPPP @ <> IF 0 @ THEN ;
 
VECT FPOP
 
: ?EAX=RULES ( ADDR -- ADDR' FLAG )
 
BEGIN OP1 @ :-SET
\ TTTT IF ." T=" 2DUP HEX U. U. THEN
U< IF TRUE EXIT THEN
OP1 @ ?ChEAX 0=
~BR-OPT AND
\ OP1 @ W@ ADD|XOR|OR|AND= OR
WHILE M\ 0 DTST
OP1 OPexcise
M\ 1 DTST
REPEAT
OP1 @ @ FC458B58 = \ POP EAX MOV EAX , FC [EBP]
IF M\ F0 DTST
0424648D OP1 @ !
OP1 ToOP0
FALSE M\ F1 DTST
EXIT
THEN
M\ PPPP
 
OP2 @ :-SET U< 0= IF \ GOTO OP2>
OP2 @ C@ B8 = \ MOV EAX , # 44444
IF
OP1 @ @ FFFFFF AND 240401 = \ ADD [ESP] , EAX
IF M\ B0E DTST
OP2 @ 1+ @
240481 OP2 @ ! \ ADD [ESP] , #
OP2 @ 3 + !
2 OP1 +!
OP0 @ 2@ OP1 @ 2!
OP1 ToOP0
FALSE -1 ALLOT M\ B0F DTST
EXIT
THEN
M\ PPPP
OP1 @ W@ 00C7 = \ MOV [EAX] , # X
IF M\ C0E DTST
OP1 @ 2+ @
OP2 @ 1+ @
05C7 OP2 @ W! \ MOV 44444 , # X
OP2 @ 2+ ! OP2 @ 6 + !
5 OP1 +!
OP0 @ 2@ OP1 @ 2!
OP1 ToOP0
FALSE -1 ALLOT M\ C0F DTST
EXIT
THEN
THEN
M\ PPPP
 
OP2 @ ?ChEAX
OP1 @ W@ 5589 XOR \ 8955FC MOV FC [EBP] , EDX
OP1 @ W@ 1501 <> AND \ 011544444400 ADD 444444 , EDX
OP1 @ W@ 1589 <> AND OR \ 891544444400 MOV 444444 , EDX
\ EAX=
0= IF M\ C2 DTST
OP2 OPexcise
FALSE M\ C3 DTST
EXIT
THEN
THEN \ LAB: OP2>
 
OP0 @ W@ 458B = \ MOV EAX , X [EBP]
IF
OP1 \ ." $"
BEGIN XX_STEP
UNTIL
IF M\ 90E DTST
OP1 ToOP0 -3 ALLOT FALSE M\ 90F DTST
EXIT
THEN
DO_EAX>ECX IF FALSE EXIT THEN
TRUE ?~EAX !
OP1
BEGIN ?EAX>EBX
UNTIL
IF M\ 80E DTST
?~EAX @
IF EBX:=EAX
ELSE BEGIN EAX>EBX0 UNTIL
THEN BEGIN EAX>EBX UNTIL
DROP
OP1 ToOP0
FALSE
-3 ALLOT M\ 80F DTST
EXIT
THEN
 
:-SET OP2 @ U< IF \ GOTO OP2 MOV EAX , X [EBP]
 
 
OP2 @ W@ 5589 XOR \ 8955FC MOV FC [EBP] , EDX
OP1 @ W@ 889 XOR OR \ 8908 MOV [EAX] , ECX
\ MOV EAX , X [EBP]
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X2=X0
0= IF M\ 11E DTST
C28B OP0 @ W! \ MOV EAX , EDX
-1 ALLOT
FALSE M\ 11F DTST
EXIT
THEN
\ $ DUP >R
OP2 @ W@ 4589 XOR \ MOV X2 [EBP] , EAX
OP1 @ C@ 50 XOR OR \ PUSH EAX
\ OP0 @ W@ 458B XOR OR \ MOV EAX , X0 [EBP]
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= \ X2=X0
IF M\ 1E DTST
50 OP2 @ C!
OP2 ToOP0
-6 ALLOT
FALSE M\ 1F DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ C@ BA XOR OR \ MOV EDX , # 1000
OP1 @ W@ 1089 XOR OR \ MOV [EAX] , EDX
\ MOV EAX , FC [EBP]
0= IF M\ 52 DTST
OP2 1 OPresize
00C7 OP2 @ W! \ MOV [EAX] , # 1000
OP1 OPexcise
FALSE M\ 53 DTST
EXIT
THEN
 
:-SET OP4 @ U< IF \ GOTO OP4 MOV EAX , X [EBP]
 
DUP C@ 0C3 XOR
\ CR ." XX"
OP4 @ W@ 4D89 XOR OR \ 567F5A 894DF8 MOV F8 [EBP] , ECX
OP3 @ W@ 1089 XOR OR \ 567F5D 8910 MOV [EAX] , EDX
OP2 @ W@ 558B XOR OR \ 567F5F 8B55F8 MOV EDX , F8 [EBP]
OP1 @ W@ 5089 XOR OR \ 567F62 895004 MOV 4 [EAX] , EDX
\ OP0 @ W@ 458B XOR OR \ 567F65 8B45FC MOV EAX , FC [EBP]
OP4 @ 2+ C@ OP2 @ 2+ C@ XOR OR \ X0=X2 \ ÃÐÓÁÎ
0= IF M\ 232 DTST
OP2 OPexcise
4889 OP1 @ W! \ MOV [EAX+4] , ECX
FALSE M\ 233 DTST
EXIT
THEN
THEN \ L: OP4 MOV EAX , X [EBP]
THEN \ L: OP2 MOV EAX , X [EBP]
THEN
DUP C@ C3 XOR
OP0 @ C@ A1 XOR OR \ MOV EAX , X
0= IF OP1
BEGIN ?EAX>ECX
IF T?EAX>ECX
ELSE CELL- ?OPlast >R
DUP @ :-SET U< R> OR
IF DROP FALSE TRUE
ELSE DUP >R
R@ CELL- @ CELL- @
OP0 @ 1+ @ =
IF R@ @ C@ FD AND A1 = \ MOV { EAX , X } | { X ,EAX }
DUP
IF F?EAX>ECX
ELSE 2DROP FALSE TRUE
THEN
ELSE DROP FALSE TRUE
THEN RDROP
THEN
THEN
UNTIL
IF M\ F0E DTST
CELL- \ DROP TRUE EXIT
BEGIN EAX>ECX0 UNTIL
BEGIN EAX>ECX UNTIL
DROP \ ." #"
OP1 ToOP0
FALSE
-5 ALLOT M\ F0F DTST
EXIT
THEN
 
THEN
M\ PPPP
DUP C@ C3 XOR
OP0 @ C@ 58 XOR OR \ POP EAX
0= IF OP1 \ TTTT IF ." ?EAX>ECX" THEN
BEGIN ?EAX>ECX
IF T?EAX>ECX
ELSE CELL-
?OPlast
OVER @ :-SET U< OR
OVER @ @ FF00FF AND 24008B = OR \ 8B0424 MOV ___ , [ESP]
IF DROP FALSE TRUE
ELSE DUP @ C@ 50 XOR \ PUSH EAX , X
\ 0= F?EAX>ECX
0= IF TRUE TRUE
ELSE CELL+ FALSE
THEN
 
THEN
THEN
UNTIL
IF M\ CA DTST \ ." $"
DUP OPexcise
CELL- \ DROP TRUE EXIT
?~EAX @
IF ECX:=EAX
ELSE BEGIN EAX>ECX0 UNTIL
THEN BEGIN EAX>ECX UNTIL
DROP
OP1 ToOP0
FALSE
-1 ALLOT
\ ?EAX:=ECX
M\ CB DTST
EXIT
THEN
 
THEN
 
OP1 @ @ 24048B50 = \ 50 PUSH EAX
\ 8B0424 MOV EAX , [ESP]
IF M\ E2 DTST
OP0 OPexcise
FALSE M\ E3 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP1 @ W@ D08B XOR OR \ 8BD0 MOV EDX , EAX
OP0 @ @ FFFFFF AND 95048B XOR OR \ 8B0495F0065A00 MOV EAX , 5A06F0 [EDX*4]
0= IF M\ 13C DTST
OP1 OPexcise
85 OP0 @ 2+ C! \ MOV EAX , 5982D8 [EAX*4]
 
FALSE M\ 13D DTST
EXIT
THEN
 
OP1 @ 2+ @
OP0 @ 1+ @ XOR
OP1 @ W@ 589 XOR OR \ 890577770700 MOV 77777 , EAX
OP0 @ C@ A1 XOR OR \ A177770700 MOV EAX , 77777
0= IF M\ 150 DTST
OP0 OPexcise
FALSE M\ 151 DTST
EXIT
THEN
 
 
OP2 @ :-SET U< IF TRUE EXIT THEN M\ PPPP
 
OP1 @ C@ A3 = \ MOV ' VVVV >BODY , EAX
IF OP2 @ C@ B8 = \ MOV EAX, # X
IF M\ 20E DTST
OP2 @ 1+ @ OP1 @ 1+ @
OP2 @ 2+ ! OP1 @ 1+ !
05C7 OP2 @ W!
OP0 @ OP1 !
FALSE
OP1 ToOP0 M\ 20F DTST
EXIT
THEN
OP2 @ W@ C033 = \ XOR EAX , EAX
IF M\ 30E DTST
3 ALLOT
OP0 @ @ OP0 @ 3 + !
05C7 OP2 @ W!
OP1 @ 1+ @ OP1 @ !
OP1 @ CELL+ 0!
OP1 @ 08 + OP1 !
FALSE
OP1 ToOP0 M\ 30F DTST
EXIT
THEN
OP3 @ :-SET U< IF TRUE EXIT THEN M\ PPPP
OP3 @ 1+ @
OP1 @ 1+ @ XOR
OP3 @ C@ 0A1 XOR OR \ MOV EAX , XX \ MOV XX , EAX \ EAX=
0= IF
OP2 @ C@ 025 = \ AND EAX , # ZZ
IF
M\ 530 DTST
OP3 @ 1+ @
OP2 @ 1+ @
OP3 OPexcise
OP2 OPexcise
OP1 OPexcise
OP0 0A OPinsert
2581 OP1 @ ! OP1 @ 6 + ! OP1 @ 2+ !
FALSE M\ 531 DTST
EXIT
THEN
OP2 @ W@ 408D =
IF
OP2 @ 2+ C@ FF = \ LEA EAX , FF [EAX]
IF
M\ 632 DTST
OP3 01 OPresize
0DFF OP3 @ W!
OP2 OPexcise
OP1 OPexcise
FALSE M\ 633 DTST
EXIT
THEN
THEN
THEN TRUE EXIT
THEN
 
\ $ 4444 TO VVVV
 
OP2 @ C@ A1 XOR \ MOV EAX , 44444
OP1 @ C@ 3D XOR OR \ CMP EAX , # 55555
0= IF M\ 218 DTST
OP2 @ 1+ @ OP2 @ 2+ !
3D81 OP2 @ W! \ CMP 44444 , # 55555
OP0 @ OP1 !
OP1 ToOP0
FALSE
EXIT M\ 219 DTST
THEN
 
\ OP0 @ C@ 58 = \ POP EAX
\ IF
OP1 @ C@ 50 = \ PUSH EAX
IF
\ 444 >R
OP2 @ C@ B8 = \ MOV EAX , # 5
IF M\ 1A DTST
68 OP2 @ C!
OP0 @ 2@ OP1 @ 2!
OP1 ToOP0
FALSE -1 ALLOT M\ 1B DTST
EXIT
THEN
THEN
OP1 @ W@ 4589 = \ MOV X [EBP], EAX EAX=
IF
\ 444 555
OP2 @ C@ B8 = \ MOV EAX , 5
IF M\ 1C DTST
OP2 @ 1+ @
45C7 OP2 @ W!
OP1 @ 2+ C@ OP2 @ 2+ C!
OP2 @ 3 + !
2 OP1 +!
OP0 @ 2@ OP1 @ 2!
OP1 ToOP0
FALSE -1 ALLOT M\ 1D DTST
EXIT
THEN
THEN
\ THEN
M\ PPPP
OP2 @ C@ B8 XOR \ MOV EAX , # 789
OP1 @ W@ C88B XOR OR \ MOV ECX , EAX
\ EAX=
0= IF M\ 830 DTST
B9 OP2 @ C!
OP1 OPexcise
FALSE M\ 831 DTST
EXIT
THEN
 
OP2 @ W@ 878D XOR \ LEA EAX , 1448 [EDI]
OP1 @ W@ 00FF XOR OR \ INC [EAX]
\ EAX=
0= IF M\ 930 DTST
FF OP2 @ C!
OP1 OPexcise
FALSE M\ 931 DTST
EXIT
THEN
OP2 @ @ FFFFFF AND 8D048D XOR \ LEA EAX , X [ECX*4]
OP1 @ W@ 1089 XOR OR \ MOV [EAX] , EDX
\ EAX=
0= IF M\ 5E DTST
1489 OP2 @ W! \ MOV [44444H+ECX*4], EDX
OP1 OPexcise
FALSE M\ 5F DTST
EXIT
THEN
M\ PPPP
DUP C@ 0C3 XOR
OP2 @ W@ D08B XOR OR \ MOV EDX , EAX
OP1 @ @ FFFFFF AND 8D1489 XOR OR \ MOV X [ECX*4] , EDX
\ EAX=
0= IF M\ 60 DTST
OP2 OPexcise
0489 OP1 @ W! \ MOV [44444H+ECX*4], EAX
FALSE M\ 61 DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 5589 XOR OR \ MOV F8 [EBP] , EDX
OP1 @ W@ 4589 XOR OR \ MOV F4 [EBP] , EAX
OP0 @ W@ 458B XOR OR \ MOV EAX , F8 [EBP]
0= IF M\ 64 DTST
C28B OP0 @ W! \ MOV EAX , EDX
-1 ALLOT
FALSE M\ 65 DTST
EXIT
THEN
OP2 @ W@ C033 XOR \ 57DD80 33C0 XOR EAX , EAX
OP1 @ W@ 4589 XOR OR \ 57DD82 8945F8 MOV F8 [EBP] , EAX
\ EAX=
0= IF M\ 6C DTST
OP2 OPexcise
OP0 4 OPresize 4 OP0 +!
45C7 OP1 @ W! OP1 @ 3 + 0! \ MOV F8 [EBP] , # 0
FALSE M\ 6D DTST
EXIT
THEN
OP2 @ @ 45C7D08B XOR \ MOV EDX , EAX MOV F8 [EBP] , # X
OP0 @ W@ C28B XOR OR \ MOV EAX , EDX
0= IF M\ 6E DTST
OP0 OPexcise
FALSE M\ 6F DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ C@ BA XOR OR \ MOV EDX , # 0
OP1 @ W@ 1088 XOR OR \ MOV [EAX] , DL
\ EAX=
0= IF M\ 70 DTST
OP2 @ 1+ C@
OP2 OPexcise
OP1 1 OPresize
00C6 OP1 @ W! \ MOV BYTE PTR [EAX] , 44H
OP1 @ 2+ C!
FALSE M\ 71 DTST
EXIT
THEN
OP2 @ W@ 808D XOR \ LEA EAX , X [EAX]
OP1 @ W@ 00C6 XOR OR \ MOV [EAX] , # 0
\ EAX=
0= IF M\ 72 DTST
80C6 OP2 @ W!
OP1 @ 2+ C@ OP1 @ C!
1 OP1 +!
OP1 OPexcise
FALSE M\ 73 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ D18B XOR OR \ 596C15 8BD1 MOV EDX , ECX
OP1 @ W@ 1089 XOR OR \ 596C17 8910 MOV [EAX] , EDX
\ EAX=
0= IF M\ 72 DTST
OP2 OPexcise
0889 OP1 @ W!
FALSE M\ 73 DTST
EXIT
THEN
 
OP2 @ @ FFFFFF AND 24448B XOR \ MOV EAX , 30 [ESP]
OP1 @ W@ F7FF AND 44FF XOR OR \ FF4424 INC DEC 30 [ESP]
\ EAX=
0= IF M\ 8A DTST
OP2 OPexcise
FALSE M\ 8B DTST
EXIT
THEN
 
OP2 @ C@ B8 XOR \ MOV EAX , # 1
OP1 @ @ FFFFFF AND 21C8D XOR OR \ LEA EBX , [EDX] [EAX]
\ EAX=
0= IF M\ AA DTST
OP2 1 OPresize
9A8D OP2 @ W!
OP1 OPexcise
FALSE M\ AB DTST
EXIT
THEN
OP2 @ C@ BA XOR \ MOV EDX , # 7FFFFFEE
OP1 @ W@ 9A8D XOR OR \ LEA EBX , 1 [EDX]
\ EAX=
0= IF M\ AC DTST
OP1 @ 2+ @
OP1 OPexcise
OP0 5 OPinsert
BB OP1 @ C! \ MOV EBX , #
OP2 @ 1+ @ + OP1 @ 1+ !
FALSE M\ AD DTST
EXIT
THEN
 
OP2 @ W@ C28B XOR \ 8BC2 MOV EAX , EDX
OP1 @ @ C28BC00B XOR OR \ 0BC0 OR EAX , EAX
\ 8BC2 MOV EAX , EDX
0= IF M\ C4 DTST
OP2 OPexcise
C28BD20B OP1 @ ! \ OR EDX , EDX MOV EAX , EDX
FALSE M\ C5 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ D18B XOR OR \ 58270A 8BD1 MOV EDX , ECX
OP1 @ W@ 4589 XOR OR \ 58270C 8945F8 MOV F8 [EBP] , EAX
OP0 @ W@ C28B XOR OR \ 58270F 8BC2 MOV EAX , EDX
0= IF M\ D4 DTST
OP2 OPexcise
C18B OP0 @ W! \ MOV EAX , ECX
FALSE M\ D5 DTST
EXIT
THEN
 
DUP C@ C3 XOR
\ 8BD0 MOV EDX , EAX
OP2 @ @ 501D08B XOR \ 010544440400 ADD 44444 , EAX
OP2 @ @ 589D08B <> AND OR \ 890544440400 MOV 44444 , EAX
OP0 @ W@ 458B XOR OR \ 8B4500 MOV EAX , 0 [EBP]
0= IF M\ D4 DTST
OP2 OPexcise
FALSE M\ D5 DTST
EXIT
THEN
 
OP2 @ @ 1589D08B = \ 8BD0 MOV EDX , EAX
\ 891555550500 MOV 55555 , EDX
IF M\ E8 DTST
0589 OP1 @ W! \ MOV 5800E0 , EAX
FALSE M\ E9 DTST
EXIT
THEN
 
OP2 @ W@ 408D XOR \ 8D4020 LEA EAX , 20 [EAX]
OP1 @ @ 458BC88B XOR OR \ 8BC8 MOV ECX , EAX
\ 8B45F8 MOV EAX , F8 [EBP]
0= IF M\ F2 DTST
488D OP2 @ W! \ LEA ECX , 20 [EAX]
OP1 OPexcise
FALSE M\ F3 DTST
EXIT
THEN
 
OP2 @ ?ChEAX
OP2 @ ^?EAX= AND
OP1 @ C@ B9 XOR OR \ 587AC6 B919000000 MOV ECX , # 19
\ EAX=
0= IF M\ FE DTST
OP2 OPexcise
FALSE M\ FF DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 5589 XOR OR \ 8955E8 MOV E8 [EBP] , EDX
 
OP1 ?EDX_[EBP] OR
 
OP0 @ W@ 458B XOR OR \ 8B45E8 MOV EAX , E8 [EBP]
0= IF M\ BC DTST
C28B OP0 @ W! \ MOV EAX , EDX
-1 ALLOT
FALSE M\ BD DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ @ 9788D08B XOR OR \ 8BD0 MOV EDX , EAX
\ 88973C100000 MOV 103C [EDI] , DL
\ EAX=
0= IF M\ 112 DTST
OP2 OPexcise
8788 OP1 @ W! \ MOV 103C [EDI] , AL
FALSE M\ 113 DTST
EXIT
THEN
 
OP2 @ C@ 50 XOR \ 50 PUSH EAX
OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
OP0 @ W@ 48B XOR OR \ 8B0424 MOV EAX , [ESP]
0= IF M\ 164 DTST
OP0 OPexcise
FALSE M\ 165 DTST
EXIT
THEN
 
M\ PPPP
OP3 @ :-SET U< IF TRUE EXIT THEN
 
\ $ SWAP 4444
OP2 @ W@ C28B = \ MOV EAX , EDX
IF OP1 @ W@ 4589 = \ MOV X [EBP] , EAX
IF M\ 60E DTST
1000 OP1 @ +! \ MOV X [EBP] , EDX
FALSE OP2 OPexcise M\ 60F DTST
EXIT
THEN
THEN
 
OP3 @ @ 408DC48B XOR \ MOV EAX , ESP LEA EAX , 8 [EAX]
OP1 @ W@ E08B XOR OR \ MOV ESP , EAX
0= IF M\ 8A DTST
-1 OP2 +!
24648D00 OP2 @ 1- ! \ LEA ESP , 8 [ESP]
OP3 OPexcise
OP1 OPexcise
FALSE M\ 8B DTST
EXIT
THEN
 
OP3 @ W@ C88B = \ 581B54 8BC8 MOV ECX , EAX
IF
DUP C@ C3 XOR
\ OP3 @ W@ C88B XOR OR \ 587733 8BC8 MOV ECX , EAX
OP2 @ W@ 428D XOR OR \ 587735 8D4201 LEA EAX , 1 [EDX]
OP1 @ W@ 4589 XOR OR \ 587738 894500 MOV 0 [EBP] , EAX
OP0 @ W@ C18B XOR OR \ 58773B 8BC1 MOV EAX , ECX
0= IF M\ 142 DTST
OP3 OPexcise
OP0 OPexcise
528D OP1 @ W! \ LEA EDX , 1 [EDX]
5589 OP0 @ W! \ MOV 0 [EBP] , EDX
FALSE M\ 143 DTST
EXIT
THEN
OP5 @ J-SET U< 0= IF \ GOTO 5SET
OP5 @ W@ C18B XOR \ 581B4C 8BC1 MOV EAX , ECX
OP4 @ W@ 840F XOR OR \ 581B4E 0F8400000000 JE 581B54 ( zz+14 )
0= IF M\ B0 DTST
OP3 OPexcise
FALSE M\ B1 DTST
EXIT
THEN THEN \ 5SET:
THEN
 
DUP C@ 0C3 XOR
OP3 @ @ C103D8F7 XOR OR \ F7D8 NEG EAX
\ 03C1 ADD EAX , ECX
OP1 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
0= IF M\ CE DTST
OP3 OPexcise
C82B OP2 @ W! \ SUB ECX , EAX
4D89 OP1 @ W! \ MOV 0 [EBP] , ECX
FALSE M\ CF DTST
EXIT
THEN
 
OP3 @ @ C82BD08B XOR \ 8BD0 MOV EDX , EAX
\ 2BC8 SUB ECX , EAX
OP1 @ W@ 4D89 XOR OR \ 894D00 MOV 0 [EBP] , ECX
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
0= IF M\ D0 DTST
DUP C@ 0C3 =
IF OP3 OPexcise THEN
OP0 OPexcise
FALSE M\ D1 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP3 @ @ 418DD08B XOR OR \ 8BD0 MOV EDX , EAX
\ 8D41FF LEA EAX , FF [ECX]
OP1 @ W@ 4589 XOR OR \ 8945F8 MOV F8 [EBP] , EAX
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
0= IF M\ EA DTST
OP3 OPexcise
OP0 OPexcise
498D OP1 @ W! \ LEA ECX , FF [ECX]
4D89 OP0 @ W! \ MOV F8 [EBP] , ECX
FALSE M\ EB DTST
EXIT
THEN
 
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR
OP3 @ W@ 5589 XOR OR \ 8955E8 MOV E8 [EBP] , EDX
 
OP2 ?EDX_[EBP] OR
OP1 ?EDX_[EBP] OR
 
OP0 @ W@ 458B XOR OR \ 8B45E8 MOV EAX , E8 [EBP]
0= IF M\ BC DTST
C28B OP0 @ W! \ MOV EAX , EDX
-1 ALLOT
FALSE M\ BD DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ C@ BA XOR OR \ BA2C000000 MOV EDX , # 2C
OP1 @ @ 458B1001 XOR OR \ 0110 ADD [EAX] , EDX
\ 8B45FC MOV EAX , FC [EBP]
0= IF M\ 14C DTST
OP1 OPexcise
OP1 1 OPresize
0081 OP1 @ W! \ ADD [EAX] , # 2C
FALSE M\ 14D DTST
EXIT
THEN
OP2 @ C@ B8 XOR \ 57DDE3 B844440400 MOV EAX , # 44444
OP1 @ W@ 81 XOR OR \ 57DDE8 81002C000000 ADD [EAX] , # 2C
OP0 @ W@ 458B XOR OR \ 57DDEE 8B45FC MOV EAX , FC [EBP]
0= IF M\ 14E DTST
OP2 @ 1+ @ OP2 @ 2+ !
OP1 @ 2+ @ OP1 @ 1+ !
0581 OP2 @ W! \ ADD 44444 , # 2C
5 OP1 +!
OP1 OPexcise
FALSE M\ 14F DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 45C7 XOR OR \ MOV F8 [EBP] , # 3
OP1 @ C@ B9 XOR OR \ MOV ECX , # 4
OP0 @ W@ 458B XOR OR \ MOV EAX , F8 [EBP]
0= IF M\ 3E DTST
OP2 @ 3 + @ OP2 @ 1+ !
B8 OP2 @ C!
OP1 0 OPinsert -2 OP2 +!
OP2 OPexcise \ MOV EAX , # 3
4589 OP0 @ W! \ MOV F8 [EBP] , EAX
 
FALSE M\ 3F DTST
EXIT
THEN
 
 
OP3 @ :-SET U< IF TRUE EXIT THEN
 
OP3 @ C@ A1 XOR \ 57E2D7 A108E15700 MOV EAX , 57E108
OP2 @ W@ 4589 XOR OR \ 57E2DC 8945EC MOV EC [EBP] , EAX
OP1 @ W@ D08B XOR OR \ 57E2DF 8BD0 MOV EDX , EAX
\ EAX=
0= IF M\ 152 DTST
OP3 1 OPresize
158B OP3 @ W! \ MOV EDX , 57E108
5589 OP2 @ W! \ MOV EC [EBP] , EDX
OP1 OPexcise
FALSE M\ 153 DTST
EXIT
THEN
 
 
OP3 @ C@ 58 XOR \ POP EAX
OP2 @ @ FFFFFF AND FF408D XOR OR \ LEA EAX , FF [EAX]
OP1 @ C@ 50 XOR OR \ PUSH EAX
\ EAX=
0= IF M\ D30 DTST
\ OP2 1 OPresize
240CFF OP2 @ ! \ DEC DWORD PTR [ESP]
OP3 OPexcise
OP1 OPexcise
FALSE M\ D31 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP3 @ @ 458BD08B XOR OR \ 8BD0 MOV EDX , EAX MOV EAX , 0 [EBP]
OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
0= IF M\ 166 DTST
OP3 OPexcise
OP0 OPexcise
558B OP1 @ W! \ MOV EDX , 0 [EBP]
5589 OP0 @ W! \ MOV FC [EBP] , EAX
FALSE M\ 167 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP3 @ W@ D08B XOR OR \ 5822F8 8BD0 MOV EDX , EAX
OP2 @ W@ 458B XOR OR \ 5822FA 8B4508 MOV EAX , 8 [EBP]
OP1 @ W@ 1089 XOR OR \ 5822FD 8910 MOV [EAX] , EDX
OP0 @ W@ 458B XOR OR \ 5822FF 8B450C MOV EAX , C [EBP]
0= IF M\ 156 DTST
OP3 OPexcise
558B OP2 @ W! \ MOV EDX , 8 [EBP]
0289 OP1 @ W! \ MOV [EDX] , EAX
FALSE M\ 157 DTST
EXIT
THEN
 
 
 
OP4 @ :-SET U< IF TRUE EXIT THEN
OP5 @ :-SET U< IF TRUE EXIT THEN
 
OP5 @ C@ B8 XOR \ 596994 B812000000 MOV EAX , # 12
OP4 @ W@ 4589 XOR OR \ 596999 8945F4 MOV F4 [EBP] , EAX
OP3 @ W@ 4589 XOR OR \ 59699C 8945F0 MOV F0 [EBP] , EAX
OP2 @ C@ BA XOR OR \ 59699F BA00000080 MOV EDX , # 80000000
OP1 @ W@ D02B XOR OR \ 5969A4 2BD0 SUB EDX , EAX
\ EAX=
0= IF M\ A6 DTST
OP5 @ 1+ @ NEGATE OP2 @ 1+ +!
OP1 OPexcise
FALSE M\ A7 DTST
EXIT
THEN
 
TRUE
;
 
 
\ : SSSSSS ;
\ TRUE VALUE ?C-JMP
FALSE VALUE ?C-JMP
 
\ $ - óêàçûâàåò íà ôðàãìåíò èñõîäíîãî òåêñòà, îïòèìèçèðóåìûé
\ äàííûì ìåòîäîì
 
: OPT-RULES ( ADDR -- ADDR' FLAG )
 
BEGIN M\ -1 DTST
OP0 @ :-SET U< IF TRUE EXIT THEN
 
OP0 @ W@ 408D = \ LEA EAX, X [EAX]
WHILE M\ 2 DTST
OP0 @ 2+ C@ C>S OFF-EAX + TO OFF-EAX
OP1 ToOP0
-3 ALLOT M\ 3 DTST
REPEAT M\ DUP VPPP !
OP0 @ C@ 05 = ~BR-OPT AND \ ADD EAX, # X
IF M\ 4 DTST
OP0 @ 1+ @ OFF-EAX + TO OFF-EAX
OP1 ToOP0
FALSE -5 ALLOT M\ 5 DTST
EXIT
THEN
M\ PPPP
OP0 @ W@ 808D = \ LEA EAX, X [EAX]
IF M\ 6 DTST
OP0 @ 2+ @ OFF-EAX + TO OFF-EAX
OP1 ToOP0
-6 ALLOT FALSE M\ 7 DTST
EXIT
THEN
OFF-EAX
OP0 @ W@ C033 = AND \ XOR EAX , EAX
IF M\ 4A DTST
B8 OP0 @ C!
OFF-EAX OP0 @ 1+ !
0 TO OFF-EAX
3 ALLOT FALSE M\ 4B DTST
EXIT
THEN
M\ PPPP
OP0 @ @ 3FFFFF AND
05048D = \ LEA EAX, X [EAX*_]
IF
 
\ $ 4444 CELLS
 
OP1 @ :-SET U< 0=
IF
OP1 @ C@ B8 XOR \ MOV EAX, # X1
OP0 @ 3 + @ \ X=0
OR 0=
IF M\ 8 DTST
OP1 @ 1+ @ OP0 @ @ C00000 AND 16 RSHIFT
LSHIFT
OP1 @ 1+ !
OP1 ToOP0 \ FIX
FALSE -7 ALLOT M\ 9 DTST
EXIT
THEN
THEN
 
\ $ CELLS 4444 +
 
OFF-EAX OP0 @ 3 + +!
0 TO OFF-EAX
 
THEN
M\ PPPP
 
OP0 @ C@ B8 = \ MOV EAX, # X
IF OFF-EAX OP0 @ 1+ +!
0 TO OFF-EAX
OP0 @ 1+ @ 0= \ MOV EAX, # 0
IF M\ A DTST
C033 OP0 @ W! \ XOR EAX, EAX
-3 ALLOT
\ FALSE EXIT
M\ B DTST
THEN
OP1 @ :-SET U< IF TRUE EXIT THEN
DUP C@ 0C3 XOR
OP1 @ W@ 45C7 XOR OR 0= \ MOV F8 [EBP] , # 5
IF OP1 @ 2+ C@ C>S OFF-EBP U<
IF
M\ 10A DTST
OP1 OPexcise
\ FALSE EXIT
M\ 10B DTST
THEN
THEN
THEN
M\ PPPP
 
DUP C@ C3 =
IF OFF-EBP >R
5555 DP @ !
FALSE OP0 -EBPCLR OP0 -EBPCLR OP0 -EBPCLR OP0 -EBPCLR
IF M\ 20B DTST
R> TO OFF-EBP FALSE EXIT
THEN R> TO OFF-EBP
THEN
 
OFF-EAX
OP0 @ W@ C28B = \ MOV EAX , EDX
OP0 @ W@ C18B = OR AND \ MOV EAX , ECX
IF M\ D6 DTST
OFF-EAX DUP SHORT?
IF 0418D C18B - OP0 @ +! C,
ELSE 0828D C28B - OP0 @ +! ,
THEN \ LEA EAX, OFF-EBP [EDX]
0 TO OFF-EAX
FALSE M\ D7 DTST
EXIT
THEN
 
OP0 @ 2+ @ 5 XOR
OP0 @ W@ C069 XOR OR \ 59A095 69C005000000 IMUL EAX , EAX , # 5
0= IF M\ 8E DTST
80048D OP0 @ ! \ MOV EAX , [EAX*4+EAX]
-3 ALLOT
FALSE M\ 8F DTST
EXIT
THEN
 
OP0 @ W@ D28B = \ MOV EDX, EDX \ C-DO
IF OP0 OPexcise TRUE EXIT
THEN
 
OP0 @ @ 1004583 = \ 587890 83450001 ADD 0 [EBP] , # 1
IF M\ 146 DTST
45FF OP0 @ W! \ INC 0 [EBP]
-1 ALLOT
FALSE M\ 147 DTST
EXIT
THEN
 
M\ PPPP
OP1 @ :-SET U< IF TRUE EXIT THEN
?~EAX 0!
 
OP1 @ @ 00FFFFFD AND 244489 XOR \ MOV 8 [ESP] , EAX
OP0 @ @ FFFFFFFD AND
OP1 @ @ FFFFFFFD AND XOR OR \ MOV EAX , 8 [ESP]
0= IF M\ 1F0 DTST
OP1 ToOP0
-4 ALLOT
FALSE M\ 1F1 DTST
EXIT
THEN
 
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR
OP1 @ W@ 5089 XOR OR \ MOV C [EAX] , EDX
OP0 @ W@ 408B XOR OR \ MOV EAX , C [EAX]
0= IF M\ 2F0 DTST
C28B OP0 @ W! \ MOV EAX , EDX
-1 ALLOT
FALSE M\ 2F1 DTST
EXIT
THEN
M\ PPPP
OP1 @ @ 008B0889 = \ MOV [EAX] , ECX MOV EAX , [EAX]
IF M\ F0 DTST
C18B OP0 @ W!
FALSE M\ F1 DTST
EXIT
THEN
 
OP0 @ C@ 58 XOR \ POP EAX
OP0 @ ^?EAX= AND 0=
\ OP0 @ ^?EAX= 0=
IF ?EAX=RULES EXIT
THEN
 
OP1 @ @ 4503C033 = \ XOR EAX , EAX ADD EAX , F8 [EBP]
IF M\ 10C DTST
OP1 OPexcise
8B OP0 @ C! \ MOV EAX , F8 [EBP]
FALSE M\ 10D DTST
EXIT
THEN
M\ PPPP
OP1 @ @ 048DC033 = \ XOR EAX , EAX LEA EAX , 57B680 [EAX*4]
IF OP0 @ 2+ C@ 85 =
IF M\ 62 DTST
OP1 OPexcise
B8 OP0 @ C! \ MOV EAX , # 57B680
OP0 @ 3 + @ OP0 @ 1+ !
-2 ALLOT
FALSE M\ 63 DTST
EXIT
THEN
THEN
 
 
?C-JMP
IF OP0 @ C@ C3 XOR
OP1 @ C@ E8 XOR OR 0= \ CALL X RET
IF M\ 0C DTST
OP1 @ 1+!
OP1 ToOP0
FALSE -6 ALLOT
SetJP 5 ALLOT M\ 0D DTST
EXIT
THEN
THEN
 
\ TRUE EXIT
 
\ $ CELLS 444 + @
OP1 @ W@ 38FF AND 008D = \ LEA EAX , ____
IF OP0 @ W@ 008B = \ MOV EAX , [EAX]
IF
M\ 0E DTST
8B OP1 @ C!
OP1 ToOP0
FALSE -2 ALLOT M\ 0F DTST
EXIT
THEN
OP0 @ @ FFFEFF AND 00B60F = \ MOVZX EAX , BYTE|WORD PTR [EAX]
\ LEA EAX , ____
IF
M\ 10E DTST
OP0 @ W@ OP1 @ 2@ ( 2DUP U. U. ) OP1 @ 1+ ( 0 IF THEN ) 2!
OP1 @ W!
OP1 ToOP0
FALSE -2 ALLOT M\ 10F DTST
EXIT
THEN
THEN
OP0 @ W@ 4589 XOR \ MOV X [EBP], EAX
OP0 @ 2+ C@
OP1 @ 2+ C@ XOR OR 0= \ (FALG &( X1=X ))
IF
OP1 @ W@ 458B = \ MOV EAX, 1X [EBP] \ $ DROP DUP
IF M\ 10 DTST
OP1 ToOP0
FALSE -3 ALLOT M\ 11 DTST
EXIT
THEN
THEN
 
OP1 @ C@ B8 = \ MOV EAX, # X \ eax=
IF OP0 @ W@
DUP D8F7 = \ NEG EAX
IF DROP M\ 14 DTST
OP1 @ 1+ @ NEGATE OP1 @ 1+ ! \ MOV EAX, # -X
OP1 ToOP0
FALSE -2 ALLOT M\ 15 DTST
EXIT
THEN
DUP D0F7 = \ MOV EAX, # X NOT EAX
IF DROP M\ 16 DTST
OP1 @ 1+ @ INVERT OP1 @ 1+ ! \ MOV EAX, # ~X
OP1 ToOP0
FALSE -2 ALLOT M\ 17 DTST
EXIT
THEN
DUP 008B = \ MOV EAX, # X MOV EAX, [EAX]
IF DROP M\ 18 DTST
A1 OP1 @ C! \ MOV EAX, X
OP1 ToOP0
FALSE -2 ALLOT M\ 19 DTST
EXIT
THEN
DROP
OP0 @ @ FFFFFF AND 85448B = \ MOV EAX, # X MOV EAX , X1 [EBP] [EAX*4]
IF M\ 518 DTST
OP0 @ 3 + C@
OP1 @ 1+ @ CELLS +
458B OP1 @ W! \ MOV EAX , X [EBP]
OP1 @ 2+ C!
OP1 ToOP0
FALSE -6 ALLOT M\ 519 DTST
EXIT
THEN
THEN
 
OP1 @ W@ 5589 XOR \ MOV X1 [EBP] , EDX
OP0 @ W@ 4503 XOR OR \ ADD EAX , X0 [EBP]
OP1 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X1=X0
0= IF M\ 418 DTST
02048D OP0 @ ! \ lea EAX, [EAX+EDX]
FALSE M\ 419 DTST
EXIT
THEN
 
OP1 @ W@ 4D89 XOR \ MOV 4 [EBP] , ECX
OP0 @ W@ 558B XOR OR \ MOV EDX , 4 [EBP]
OP1 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X1=X0
0= IF M\ 418 DTST
D18B OP0 @ W! \ MOV EDX , ECX
-1 ALLOT
FALSE M\ 419 DTST
EXIT
THEN
M\ PPPP
OP1 @ W@ 408D XOR \ LEA EAX , Y [EAX]
OP0 @ @ 85048D FFFFFF AND XOR OR 0= \ LEA EAX , X [EAX*4]
IF M\ 30E DTST
OP1 @ 2+ C@ C>S CELLS OP0 @ 3 + +!
FALSE
OP1 OPexcise M\ 30F DTST
EXIT
THEN
 
OP1 @ @ FFFFFF AND 85048D XOR \ LEA EAX , X [EAX*4]
OP0 @ @ FFFFFF AND 02048D XOR OR \ MOV EAX , [EDX] [EAX]
OP1 @ 3 + @ 80 + FFFFFF00 AND OR 0=
IF M\ 50E DTST
8244 OP1 @ 1+ W!
OP1 ToOP0
FALSE
-6 ALLOT M\ 50F DTST
EXIT
THEN
 
OP0 @ W@ FFFD AND 5589 = \ MOV EDX , X [EBP]
IF OP1
BEGIN MOV_EDX_[EBP]
UNTIL
IF M\ A0E DTST
OP1 ToOP0
FALSE
-3 ALLOT M\ A0F DTST
EXIT
THEN
THEN
 
DUP C@ 0C3 XOR
OP1 @ W@ 4589 XOR OR \ 5695B0 8945FC MOV FC [EBP] , EAX
OP0 @ W@ 6DF7 XOR OR \ 5695B3 F76DFC IMUL FC [EBP]
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR OR
OP0 @ 2+ C@ C>S OFF-EBP > OR
0= IF M\ 32A DTST
E8F7 OP1 @ W!
OP1 ToOP0
FALSE -4 ALLOT M\ 32B DTST
EXIT
THEN
M\ PPPP
OP0 @ W@ E7FF AND 4589 = \ TTTT AND \ MOV X [EBP] , EAX|EDX|EBX|ECX
IF OFF-EBP >R OP0 @ 2+ C@ C>S CELL+ TO OFF-EBP
FALSE OP1 -EBPCLR
IF R> TO OFF-EBP FALSE EXIT THEN
R> TO OFF-EBP
THEN
 
OP1 @ W@ CA8B XOR \ 8BCA MOV ECX , EDX
OP0 @ @ FFFFFF AND 88048D XOR OR \ 8D0488 LEA EAX , [EAX] [ECX*4]
0= IF M\ 42A DTST
90048D OP0 @ !
FALSE M\ 42B DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ W@ CA8B XOR OR \ 8BCA MOV ECX , EDX
OP0 @ @ FFFFFF AND 90048D XOR OR \ 8D0488 LEA EAX , [EAX] [EDX*4]
0= IF M\ 62A DTST
OP1 OPexcise
FALSE M\ 62B DTST
EXIT
THEN
 
OP1 @ @ FFFFFF AND 8D0C8D XOR \ 8D0C8D00000000 LEA ECX , 0 [ECX*4]
OP1 @ 3 + @ XOR
OP0 @ @ FFFFFF AND 1048D XOR OR \ 8D0401 LEA EAX , [ECX] [EAX]
0= IF M\ 52A DTST
88048D OP1 @ !
OP1 ToOP0
FALSE -7 ALLOT M\ 52B DTST
EXIT
THEN
OP1 @ C@ B8 XOR \ MOV EAX , # 58DDE8
OP0 @ @ FFFFFF AND 90048D XOR OR \ LEA EAX , [EAX] [EDX*4]
0= IF M\ 4C DTST
OP1 @ 1+ @
OP1 OPexcise
95 OP0 @ 2+ C! ,
FALSE M\ 4D DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ @ 048DD9F7 XOR OR \ NEG ECX LEA EAX , [ECX] [EAX]
0= IF M\ 90 DTST
C12B OP1 @ W!
OP1 ToOP0
FALSE -3 ALLOT M\ 91 DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ @ FFFFFF AND 244C8B XOR OR \ MOV ECX , 20 [ESP]
OP0 @ W@ C12B XOR OR \ 59A13C 2BC1 SUB EAX , ECX
0= IF M\ 92 DTST
442B OP1 @ W! \ SUB EAX , 20 [ESP]
OP1 ToOP0
FALSE -2 ALLOT M\ 93 DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ W@ D8B XOR OR \ MOV ECX , 599825
OP0 @ W@ C12B XOR OR \ SUB EAX , ECX
0= IF M\ 92 DTST
052B OP1 @ W! \ SUB EAX , 599825
OP1 ToOP0
FALSE -2 ALLOT M\ 93 DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ C@ B8 XOR OR \ 59A227 B841000000 MOV EAX , # 1000
OP0 @ C@ A3 XOR OR \ 59A22C A375995900 MOV 599975 ( Char1Glob+5 ) , EAX
0= IF M\ 98 DTST
OP1 @ 1+ @ OP0 @ 1+ @
OP1 @ 2+ ! OP0 @ 1+ !
05C7 OP1 @ W! \ MOV 599975 , # 1000
OP1 ToOP0
FALSE M\ 99 DTST
EXIT
THEN
DUP C@ 0C3 XOR
OP1 @ C@ B8 XOR OR \ MOV EAX , # 2000
OP0 @ @ FFFFFF AND 244489 XOR OR \ MOV 1C [ESP] , EAX
0= IF M\ A8 DTST
OP1 @ 1+ @ ,
OP1 OPexcise
C7 OP0 @ C! \ MOV 1C [ESP] , # 2000
FALSE M\ A9 DTST
EXIT
THEN
 
OP1 @ C@ B8 XOR \ B8E0005800 MOV EAX , # 5800E0
OP0 @ W@ 1001 XOR OR \ 0110 ADD [EAX] , EDX
0= IF M\ E4 DTST
OP1 @ 1+ @
1501 OP0 @ W! , \ ADD 5800E0 , EDX
FALSE M\ E5 DTST
EXIT
THEN
OP1 @ C@ B8 XOR \ 580185 B855550500 MOV EAX , # 55555
OP0 @ W@ 1089 XOR OR \ 58018A 8910 MOV [EAX] , EDX
0= IF M\ EE DTST
OP1 @ 1+ @
1589 OP0 @ W! , \ MOV 5800E0 , EDX
FALSE M\ EF DTST
EXIT
THEN
 
OP1 @ @ 1501D08B = \ 8BD0 MOV EDX , EAX
\ 011560015800 ADD 580160 , EDX
IF M\ E6 DTST
0501 OP0 @ W! \ ADD 5800E0 , EAX
FALSE M\ E7 DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ @ 0A4CB60F XOR OR \ MOVZX ECX , BYTE PTR 2 [EDX] [ECX]
OP0 @ W@ C133 XOR OR \ XOR EAX , ECX
0= IF M\ A0 DTST
OP0 OPexcise
0A443200 OP0 @ !
OP0 @ 1+ @ OP0 @ ! \ XOR AL , BYTE PTR [EAX+EDX+44H]
-1 ALLOT
FALSE M\ A1 DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ @ FFFFFF AND 850C8D XOR OR \ LEA ECX , 58E188 ( rson+5 ) [EAX*4]
OP0 @ W@ 1189 XOR OR \ 596738 8911 MOV [ECX] , EDX
0= IF M\ A2 DTST
OP0 OPexcise
1489 OP0 @ W!
FALSE M\ A3 DTST
EXIT
THEN
 
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR
OP1 @ W@ 5589 XOR OR \ 8955F8 MOV F8 [EBP] , EDX
0= IF
OP0 @ W@ 450B = \ 0B45F8 OR EAX , F8 [EBP]
IF M\ B2 DTST
C20B OP0 @ W! \ OR EAX , EDX
-1 ALLOT
FALSE M\ B3 DTST
EXIT
THEN
OP0 @ W@ 453B = \ 3B45F8 CMP EAX , F8 [EBP] !!!
IF M\ BE DTST
C23B OP0 @ W! \ CMP EAX , EDX
-1 ALLOT
FALSE M\ BF DTST
EXIT
THEN
THEN
 
OP1 @ W@ C28B XOR \ 8BC2 MOV EAX , EDX
OP0 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
0= IF M\ C0 DTST
5589 OP0 @ W! \ 8955FC MOV FC [EBP] , EDX
FALSE M\ C1 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP1 @ W@ D08B XOR OR \ 8BD0 MOV EDX , EAX
OP0 @ W@ 45C7 XOR OR \ C7450001000000 MOV 0 [EBP] , # 1
0= IF M\ C6 DTST
OP1 OPexcise
FALSE M\ C7 DTST
EXIT
THEN
 
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR
OP1 @ W@ 4589 XOR OR \ 58251C 894500 MOV 0 [EBP] , EAX
OP0 @ W@ 45C7 XOR OR \ 58251F C7450001000000 MOV 0 [EBP] , # 1
0= IF M\ C6 DTST
OP1 OPexcise
FALSE M\ C7 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP1 @ @ 0501D08B XOR OR \ 8BD0 MOV EDX , EAX
\ 011510025800 ADD 580210 , EAX
0= IF M\ E8 DTST
OP1 OPexcise
FALSE M\ E9 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP1 @ C@ B9 XOR OR \ B94C025800 MOV ECX , # 58024C
OP0 @ W@ 1C7 XOR OR \ C70189ABCDEF MOV [ECX] , # EFCDAB89
0= IF M\ EC DTST
OP0 @ 2+ @ OP1 @ 1+ @
OP1 @ 2+ ! OP0 @ 1+ !
05C7 OP1 @ W! \ MOV 58024C , # EFCDAB89
OP1 ToOP0
-1 ALLOT
FALSE M\ ED DTST
EXIT
THEN
 
OP1 @ C@ B8 XOR \ 587294 B801000000 MOV EAX , # 1
OP0 @ W@ C88B XOR OR \ 587299 8BC8 MOV ECX , EAX
0= IF M\ F6 DTST
OP1 @ 1+ @
OP0 @ 1+ !
B9 OP0 @ C! \ MOV ECX , # 1
3 ALLOT
FALSE M\ F7 DTST
EXIT
THEN
 
OP1 @ C@ B9 XOR \ B901000000 MOV ECX , # 1
OP0 @ W@ D9F7 XOR OR \ F7D9 NEG ECX
0= IF M\ F8 DTST
OP1 @ 1+ @ NEGATE
OP1 @ 1+ !
OP1 ToOP0
-2 ALLOT
FALSE M\ F9 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP1 @ C@ B9 XOR OR \ B919000000 MOV ECX , # 19
OP0 @ W@ F7FF AND E0D3 XOR OR \ D3E8 SHR|SHL EAX , CL
0= IF M\ 100 DTST
OP1 @ 1+ @
OP1 OPexcise
C1 OP0 @ C! C,
FALSE M\ 101 DTST
EXIT
THEN
 
OP1 @ C@ B8 XOR \ B801000000 MOV EAX , # 1
OP0 @ @ FFFFFF AND 85048B XOR OR \ 8B04851CDE5700 MOV EAX , 57DE1C [EAX*4]
0= IF M\ 148 DTST
A1 OP1 @ C! \ MOV EAX , 1
OP0 @ 3 + @
OP1 @ 1+ @ CELLS + OP1 @ 1+ !
OP0 OPexcise
FALSE M\ 149 DTST
EXIT
THEN
 
OP1 @ W@ C033 XOR \ 33C0 XOR EAX , EAX
OP0 @ @ FFFFFF AND 85048B XOR OR \ 8B04851CDE5700 MOV EAX , 57DE1C [EAX*4]
0= IF M\ 348 DTST
2 OP0 +!
A1 OP0 @ C! \ MOV EAX , 57DE1C
OP1 OPexcise
FALSE M\ 349 DTST
EXIT
THEN
 
OP1 @ C@ B8 XOR \ B803000000 MOV EAX , # 3
OP0 @ W@ F7FF AND E0C1 XOR OR \ C1E804 SH[R|L] EAX , 4
0= IF M\ 48 DTST
OP1 @ 1+ @
OP0 @ 2+ C@ OP0 @ W@ 0x800 AND IF RSHIFT ELSE LSHIFT THEN
OP1 @ 1+ !
OP0 OPexcise
FALSE M\ 49 DTST
EXIT
THEN
DUP C@ C3 XOR
OP1 @ W@ CA8B XOR OR \ 582148 8BCA MOV ECX , EDX
OP0 @ W@ C12B XOR OR \ 58214A 2BC1 SUB EAX , ECX
0= IF M\ 180 DTST
C22B OP1 @ W! \ SUB EAX , ECX
OP0 OPexcise
FALSE M\ 181 DTST
EXIT
THEN
 
M\ PPPP
OP2 @ :-SET
\ TTTT IF ." T=" 2DUP HEX U. U. THEN
U< IF TRUE EXIT THEN
 
\ $ - DUP
OP2 @ W@ D8F7 XOR
OP1 @ W@ 4501 XOR OR 0=
IF M\ 118 DTST
OP2 OPexcise
29 OP1 @ C!
FALSE
EXIT M\ 119 DTST
THEN
 
\ $ - -
OP2 @ @ 4503D8F7 XOR \ NEG EAX ADD EAX, X [EBP]
OP0 @ W@ D8F7 XOR OR 0= \ NEG EAX
IF M\ 20 DTST
OP1 @ @ 452B OR OP2 @ ! \ SUB EAX, X [EBP]
OP2 ToOP0
-4 ALLOT
FALSE M\ 21 DTST
EXIT
THEN
M\ PPPP
OP0 @ W@ ADD|XOR|OR|AND= \ $ 4444 OR
IF
OP2 @ W@ 4589 XOR \ MOV X1 [EBP], EAX
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR 0=
IF
OP1 @ W@
DUP 0878B = \ MOV EAX, X [EDI]
IF DROP M\ 22 DTST
OP0 @ C@ 8700 + OP2 @ W!
OP1 @ 2+ @ OP2 @ 2+ !
OP2 ToOP0
FALSE -6 ALLOT M\ 23 DTST
EXIT
THEN
\ MOV X1 [EBP], EAX
DUP 0458B = \ MOV EAX , X [EBP]
\ ADD|XOR|OR|AND=
IF DROP M\ 122 DTST
OP0 @ C@ 4500 + OP1 @ W!
OP1 ToOP0
FALSE -3 ALLOT M\ 123 DTST
EXIT
THEN
FF AND
\ MOV X1 [EBP], EAX
DUP 0B8 = \ MOV EAX, # X
\ ADD|XOR|OR|AND=
IF DROP M\ 24 DTST
OP0 @ C@ 2+ OP1 @ C!
OP1 ToOP0
FALSE -3 ALLOT M\ 25 DTST
EXIT
THEN
 
\ MOV X1 [EBP], EAX
DUP 0A1 = \ MOV EAX, X
\ ADD|XOR|OR|AND=
IF DROP M\ 26 DTST
OP0 @ C@ 500 +
OP1 @ 1+ @ OP1 @ 2+ !
OP1 @ W!
OP1 ToOP0
FALSE -2 ALLOT M\ 27 DTST
EXIT
THEN
DROP
THEN
OP2 @ W@ 45C7 XOR \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR
OP1 @ C@ B8 XOR OR 0= \ MOV EAX , # 4
\ ADD|XOR|OR|AND=
IF M\ 124 DTST
OP2 @ 3 + @ OP1 @ 1+ @
C300 OP0 @ 2+ ! OP0 @ EXECUTE
OP1 @ 1+ ! DROP
OP1 ToOP0
FALSE -3 ALLOT M\ 125 DTST
EXIT
THEN
OP1 @ W@ 4D89 XOR \ MOV F4 [EBP] , ECX
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR OR 0= \ ADD|XOR|OR|AND=
IF M\ 12 DTST
C1 OP0 @ 1+ C! \ XOR EAX , ECX
FALSE -1 ALLOT M\ 13 DTST
EXIT
THEN
 
\ ADD|XOR|OR|AND=
OP0 @ 2+ C@ OP1 -EBPLIT NIP
DUP @ W@ 45C7 = \ MOV F8 [EBP] , # 2710
OVER @ 2+ C@ OP0 @ 2+ C@ = AND
IF OP0 @ W@ 4503 = \ ADD EAX , F8 [EBP]
IF M\ 46 DTST
@ 3 + @ OFF-EAX + TO OFF-EAX
OP1 ToOP0
FALSE -3 ALLOT M\ 47 DTST
EXIT
THEN
THEN
DROP
 
OP0 @ 2+ C@
OP1 @ 2+ C@ XOR
OP1 @ W@ 45C7 XOR OR \ 599B95 C745F401000000 MOV F4 [EBP] , # 1
\ ADD|XOR|OR|AND=
0= IF M\ 8C DTST
OP0 @ C@ 2+ OP0 @ C!
2 ALLOT
OP1 @ 3 + @ OP0 @ 1+ !
FALSE M\ 8D DTST
EXIT
THEN
 
THEN
M\ PPPP
 
\ OP0 @ W@ 4D8B =
OP0 @ W@ 558B = \ MOV EDX , X [EBP]
IF \ OP-1 MOV EAX , FC [EBP]
OP0 @ 2+ C@ OP1 -EBPLIT NIP
DUP @ W@ 45C7 = \ MOV F8 [EBP] , # 2710
OVER @ 2+ C@ OP0 @ 2+ C@ = AND
IF M\ 50 DTST
-2 ALLOT
BA OP0 @ C!
@ 3 + @ ,
FALSE M\ 51 DTST
EXIT
THEN
DROP
THEN
 
OP0 @ W@ 4539 = \ CMP X [EBP] , EAX
IF
OP1 @ W@ 5589 XOR \ MOV X [EBP] , EDX
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR OR 0= \
IF M\ 128 DTST
D03B OP0 @ W!
FALSE -1 ALLOT M\ 129 DTST
EXIT
THEN
 
OP1 @ C@ 0B8 XOR \ MOV EAX, # X
OP2 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR 0=
IF M\ 28 DTST
3D OP2 @ C!
OP1 @ 1+ @ OP2 @ 1+ !
OP2 ToOP0
FALSE -6 ALLOT M\ 29 DTST
EXIT
THEN
\ $ 4444 @ U<
OP1 @ C@ 0A1 XOR \ MOV EAX, # X
OP2 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR 0=
IF M\ 2A DTST
053B OP2 @ W!
OP1 @ 1+ @ OP2 @ 2+ !
OP2 ToOP0
FALSE -5 ALLOT M\ 2B DTST
EXIT
THEN
 
THEN
DUP W@ 458B XOR \ MOV EAX , FC [EBP]
OP0 @ W@ 1089 XOR OR \ MOV [EAX] , EDX
OP1 @ W@ 558B XOR OR 0= \ MOV EDX , X [EBP] \ !?
IF \ OP-1 MOV EAX , FC [EBP]
OP2 @ W@ 408D = \ LEA EAX , 4 [EAX] \ $ CELL+ !
IF M\ 430 DTST
OP2 @ 2+ C@
OP2 OPexcise
5089 OP0 @ W! C,
FALSE M\ 431 DTST
EXIT
THEN
 
OP3 @ :-SET U< IF TRUE EXIT THEN
\ $ 44444 !
OP3 @ 2+ C@
OP1 @ 2+ C@ =
IF OP3 @ W@ 4589 = \ MOV X [EBP] , EAX
IF OP2 @ C@ B8 = \ MOV EAX, X
IF M\ 30 DTST
A3 OP3 @ C!
OP2 @ 1+ @ OP3 @ 1+ !
OP3 ToOP0
FALSE -8 ALLOT M\ 31 DTST
EXIT
THEN
OP2 @ W@ 878D = \ LEA EAX, X [EDI]
IF M\ 230 DTST \ ???
OP3 OPexcise
8789 OP2 @ W! \ MOV X [EDI] , EAX
OP2 ToOP0
FALSE -5 ALLOT M\ 231 DTST
EXIT
THEN
THEN
OP3 @ W@ 45C7 = \ MOV X [EBP] , # 44444
IF OP2 @ C@ B8 = \ TTTT AND \ MOV EAX, X
IF M\ 130 DTST
-4000 OP3 @ +!
OP3 @ 3 + @ OP2 @ 1+ @ OP3 @ 2+ !
OP3 @ 6 + !
 
OP3 ToOP0
FALSE -7 ALLOT M\ 131 DTST
EXIT
THEN
 
OP2 @ W@ 878D = \ LEA EAX, X [EDI]
IF M\ 330 DTST \ ???
87C7 OP3 @ W!
OP3 @ 3 + @ OP2 @ 2+ @ OP3 @ 2+ !
OP3 @ 6 + !
 
OP3 ToOP0
FALSE -8 ALLOT M\ 331 DTST
EXIT
THEN
THEN
THEN
THEN
 
M\ PPPP
OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX
OP1 @ @ FFFFFF AND 85048D XOR OR \ LEA EAX , Y [EAX*X] ãðóáî
OP0 @ W@ 4503 XOR OR
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= \ X2=X0
IF M\ 318 DTST
048D OP0 @ W! 2 OP0 @ 2+ C!
FALSE
EXIT M\ 319 DTST
THEN
 
OP2 @ W@ 04D89 XOR \ MOV X [EBP] , ECX
OP1 @ ?ChEAX \ MOV EAX , ____
OP1 @ W@ 5589 <> AND OR \ MOV FC [EBP] , EDX
OP0 @ W@ 558B XOR OR \ MOV EDX , X [EBP]
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0=
IF M\ 630 DTST
D1 OP0 @ 1+ C!
FALSE -1 ALLOT M\ 631 DTST
EXIT
THEN
OP1 @ @ 008BC28B = \ MOV EAX , EDX MOV EAX , [EAX]
IF M\ 730 DTST
028B OP1 @ W!
OP1 ToOP0
FALSE -2 ALLOT M\ 731 DTST
EXIT
THEN
 
DUP C@ C3 =
IF
OP1 @ W@ D18B XOR \ MOV EDX , ECX
OP0 @ W@ 1089 XOR OR 0= \ MOV [EAX] , EDX
IF M\ 30E DTST
0889 OP1 @ W!
OP1 ToOP0
FALSE
-2 ALLOT M\ 40F DTST
EXIT
THEN
THEN
M\ PPPP
 
DUP C@ 0C3 XOR
OP1 @ C@ B8 XOR OR \ MOV EAX , # 400
OP0 @ W@ 6DF7 XOR OR \ IMUL F8 [EBP]
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
0= IF
OP2 @ W@ 45C7 = \ MOV F8 [EBP] , # C8
IF M\ E30 DTST
OP2 @ 3 + @
OP1 @ 1+ @ * OP1 @ 1+ !
OP1 ToOP0
FALSE -3 ALLOT M\ E31 DTST
EXIT
THEN
 
OP2 @ W@ 4589 = \ MOV F8 [EBP] , EAX
IF M\ D0E DTST
OP1 @ 1+ @
OP1 OPexcise
-3 ALLOT
69 C, C0 C, , \ IMUL EAX,EAX,44444H
FALSE M\ D0F DTST
EXIT
THEN
THEN
 
DUP C@ 0C3 XOR
OP1 @ C@ A1 XOR OR \ MOV EAX , 569598 ( X+5 )
OP0 @ W@ 6DF7 XOR OR \ IMUL FC [EBP]
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
\ OP0 @ 2+ C@ C>S OFF-EBP > OR
0= IF
OP2 @ W@ 4589 = \ MOV FC [EBP] , EAX
IF M\ 12A DTST
2DF7 OP2 @ W!
OP1 @ 1+ @ OP2 @ 2+ !
OP2 ToOP0
FALSE -5 ALLOT M\ 12B DTST
EXIT
THEN
 
OP2 @ W@ 45C7 = \ MOV F8 [EBP] , # 123
IF M\ 22A DTST
B8 OP2 @ C!
OP2 @ 3 + @ OP2 @ 1+ !
-2 OP1 +!
2DF7 OP1 @ W!
OP1 @ 3 + @ OP1 @ 2+ !
OP1 ToOP0
FALSE -4 ALLOT M\ 22B DTST
EXIT
THEN
THEN
 
OP2 @ W@ 4589 XOR \ MOV FC [EBP] , EAX
OP1 @ @ 4503008B XOR OR \ MOV EAX , [EAX] ADD EAX , FC [EBP]
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
0= IF M\ 830 DTST
03 OP1 @ C!
OP1 ToOP0
FALSE -3 ALLOT M\ 831 DTST
EXIT
THEN
M\ PPPP
 
DUP C@ 0C3 XOR
OP2 @ W@ 558B XOR OR \ MOV EDX , 0 [EBP]
OP1 @ W@ CA8B XOR OR \ MOV ECX , EDX
OP0 @ C@ 51 XOR OR \ PUSH ECX
0= IF M\ A30 DTST
75FF OP2 @ W!
OP2 ToOP0
FALSE -3 ALLOT M\ A31 DTST
EXIT
THEN
 
OP2 @ W@ 4589 XOR \ MOV 0 [EBP] , EAX
OP1 @ @ FFBFFF AND 24048B XOR OR \ MOV EAX , [ESP(+4)]
OP0 @ W@ 4503 XOR OR \ ADD EAX , 0 [EBP]
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
0= IF M\ B30 DTST
03 OP1 @ C!
OP1 ToOP0
FALSE -3 ALLOT M\ C31 DTST
EXIT
THEN
OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX
OP1 @ ?ChEAX OR \ MOV EAX , [EAX]
OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP]
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
0= IF M\ C30 DTST
OP1 ToOP0
FALSE -3 ALLOT M\ C31 DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 4589 XOR OR \ 579DE0 8945FC MOV FC [EBP] , EAX
OP1 @ C@ 25 XOR OR \ 579DE3 2555555555 AND EAX , # 55555555
OP0 @ W@ 558B XOR OR \ 579DE8 8B55FC MOV EDX , FC [EBP]
0= IF M\ C32 DTST
OP2 OPexcise
OP1 02 OPinsert
D08B OP2 @ W! \ MOV EDX , EAX
OP1 ToOP0
FALSE -3 ALLOT M\ C33 DTST
EXIT
THEN
 
M\ PPPP
OP0 @ W@ ADD|XOR|OR|AND=
IF
TRUE ?~EAX !
OP1
BEGIN ?EAX>ECX
UNTIL
\ DUP IF ?~EAX @ IF 2DROP FALSE THEN
\ THEN
IF M\ AE DTST
?~EAX @
IF ECX:=EAX
ELSE BEGIN EAX>ECX0 UNTIL
THEN BEGIN EAX>ECX UNTIL
DROP
OP0 @ W@ 4503 = \ TTTT AND \ ADD EAX , X [EBP]
IF 01048D OP0 @ ! ELSE \ LEA EAX, [EAX+ECX]
0C1 OP0 @ 1+ C! -1 ALLOT \ OR EAX,ECX
THEN FALSE M\ AF DTST
EXIT
THEN M\ PPPP
 
TRUE ?~EAX !
OP1 \ TTTT IF ." ?EAX>EBX" THEN
BEGIN ?EAX>EBX \ TTTT IF ." F=" DUP . THEN
UNTIL
\ DUP IF ?~EAX @ IF 2DROP FALSE THEN
\ THEN
IF M\ AE DTST
?~EAX @ \ ." {#}"
IF EBX:=EAX
ELSE BEGIN EAX>EBX0 UNTIL
THEN BEGIN EAX>EBX UNTIL
DROP
OP0 @ W@ 4503 = \ TTTT AND \ ADD EAX , X [EBP]
IF 03048D OP0 @ ! ELSE \ LEA EAX, [EAX+EBX]
OP0 @ W@ 4539 = \ CMP F8 [EBP] , EAX
IF C33B OP0 @ W! -1 ALLOT ELSE \ CMP EAX , EBX
OP0 @ W@ 453B = \ CMP EAX , F8 [EBP]
IF D83B OP0 @ W! -1 ALLOT ELSE \ CMP EBX , EAX
0C3 OP0 @ 1+ C! -1 ALLOT \ OR EAX,EBX
THEN THEN THEN FALSE M\ AF DTST
EXIT
THEN M\ PPPP
 
 
OP1 @ @ 4503D8F7 = \ NEG EAX \ ADD EAX , 4 [EBP]
IF OP2 @ W@ 458B = \ MOV EAX , X [EBP]
IF M\ D0E DTST
OP1 OPexcise
OP1 @ 2+ C@ OP0 @ 2+ C@
OP1 @ 2+ C! OP0 @ 2+ C!
2B OP0 @ C!
FALSE M\ D0F DTST
EXIT
THEN
OP2 @ C@ A1 = \ MOV EAX , X
IF M\ D0E DTST
OP2 @ 1+ @
OP2 OPexcise
OP1 OPexcise
8B OP0 @ C!
SetOP 2B C, 5 C, ,
FALSE M\ D0F DTST
EXIT
THEN
THEN
THEN
M\ PPPP
 
OP2 @ W@ FFFD AND 4589 XOR \ MOV F8 [EBP] , EAX
OP1 @ W@ FFFD AND 4589 XOR OR \ MOV EAX , F8 [EBP]
OP2 @ 2+ C@
OP1 @ 2+ C@ XOR OR
0= IF M\ E30 DTST
OP1 OPexcise
FALSE M\ E31 DTST
EXIT
THEN
 
OP2 @ @ 458BC28B = \ MOV EAX , EDX MOV EAX , 0 [EBP]
IF M\ 44 DTST
OP2 OPexcise
FALSE M\ 45 DTST
EXIT
THEN
DUP C@ 0C3 XOR
OP1 @ C@ B9 - FE AND OR \ MOV EDX , # 1000 MOV ECX , # 1000
OP0 @ W@ 1189 XOR OR \ MOV [ECX] , EDX
0= IF M\ 54 DTST
OP1 @ C@ BA =
IF 01C7 \ MOV [ECX] , # 1000
ELSE 1589 \ MOV 1000 , [EDX]
THEN
OP1 1 OPresize
OP1 @ W!
OP0 OPexcise
FALSE M\ 55 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP1 @ C@ B9 XOR OR \ MOV ECX , # 1000
OP0 @ W@ 4D89 XOR OR \ MOV X [EBP] , ECX
0= IF M\ 58 DTST
OP1 @ 1+ @
OP1 OPexcise
45C7 OP0 @ W! , \ MOV FC [EBP] , # 1000
FALSE M\ 59 DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP1 @ @ FFFFFF AND 8D0C8D XOR OR \ LEA ECX , 5898B8 ( rson+5 ) [ECX*4]
OP0 @ W@ 01C7 XOR OR \ MOV [ECX] , # 1000
0= IF M\ 56 DTST
04C7 OP1 @ W! \ MOV X [ECX*4] , # 1000
OP0 @ 2+ @
OP0 OPexcise ,
FALSE M\ 57 DTST
EXIT
EXIT
THEN
DUP C@ 0C3 XOR
OP1 @ W@ C18B XOR OR \ MOV EAX , ECX
OP0 @ @ FFFFFF AND 85048D XOR OR \ LEA EAX , X [EAX*4]
0= IF M\ 5A DTST
OP1 OPexcise
8D OP0 @ 2+ C! \ LEA EAX , X [ECX*4]
FALSE M\ 5B DTST
EXIT
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 4589 XOR OR \ MOV F8 [EBP] , EAX
OP1 @ @ FFFFFF AND 8D048D XOR \ LEA EAX , X [ECX*4]
OP1 @ C@ B8 <> AND OR \ B801000000 MOV EAX , # 1
OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP]
0= IF M\ 5C DTST
OP1 2 OPinsert
D08B OP2 @ W! \ MOV EDX , EAX
OP0 OPexcise
FALSE M\ 5D DTST
EXIT
EXIT
THEN
 
OP0 @ 2+ C@
OP2 @ 2+ C@ XOR
OP2 @ W@ 4589 XOR OR \ MOV F8 [EBP] , EAX
OP1 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 18 [ESP]
OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP]
0= IF M\ 9C DTST
OP1 2 OPinsert
D08B OP2 @ W! \ MOV EDX , EAX
OP0 OPexcise
FALSE M\ 9D DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP2 @ @ D9F7CA8B XOR OR \ MOV ECX , EDX NEG ECX
OP0 @ 1- @ 01048DD9 XOR OR \ LEA EAX , [ECX] [EAX]
0= IF M\ 66 DTST
OP2 OPexcise
02048DDA OP1 @ 1+ ! \ NEG EDX lea EAX, [EAX+EDX]
FALSE M\ 67 DTST
EXIT
THEN
 
OP2 @ @ 45C7D08B XOR \ MOV EDX , EAX MOV F8 [EBP] , # X
OP0 @ C@ BA XOR OR \ MOV EDX , # 0
0= IF M\ 6A DTST
OP2 OPexcise
FALSE M\ 6B DTST
EXIT
THEN
 
DUP C@ 0C3 XOR
OP2 @ C@ BA XOR OR \ MOV EDX , # 4
OP1 @ W@ 5501 XOR OR \ ADD 0 [EBP] , EDX
OP0 @ W@ 4513 XOR OR \ ADC EAX , FC [EBP]
0= IF M\ 82 DTST
OP0 4 OPresize 4 OP0 +!
OP2 @ 1+ @ OP2 OPexcise
OP1 @ 3 + ! 4581 OP1 @ W! \ ADD 0 [EBP] , # 4
FALSE M\ 83 DTST
EXIT
THEN
 
OP2 @ 3 + C@
OP0 @ 3 + C@ XOR
OP2 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 30 [ESP]
OP0 @ @ FFFFFF AND 244489 XOR OR \ MOV 30 [ESP] , EAX
0= IF OP1 @ @ 8901408D = \ 8D4001 LEA EAX , 1 [EAX]
IF M\ 88 DTST
OP1 OPexcise
FF OP0 @ C!
FALSE M\ 89 DTST
EXIT
THEN
OP1 @ @ 89FF408D = \ 8D4001 LEA EAX , -1 [EAX]
IF M\ 94 DTST
OP1 OPexcise
4CFF OP0 @ W!
FALSE M\ 95 DTST
EXIT
THEN
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 408D XOR OR \ LEA EAX , 1 [EAX]
OP1 @ @ FFFFFF AND 244403 XOR OR \ ADD EAX , 8 [ESP]
OP0 @ @ FFFFFF AND B60F XOR OR \ MOVZX EAX , BYTE PTR [EAX]
0= IF M\ 9E DTST
OP2 @ 2+ C@ OP2 OPexcise
548B OP1 @ W! \ MOV EDX , 8 [ESP]
-3 ALLOT
0244B60F , C, \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
FALSE M\ 9F DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 5589 XOR OR \ 8955F8 MOV F8 [EBP] , EDX
 
OP1 @ W@ D8F7 XOR \ F7D8 NEG EAX
OP1 @ W@ D0F7 <> AND \ F7D0 NOT EAX
OP1 @ C@ 58 <> AND \ 58 POP EAX
OP1 @ W@ C123 <> AND OR \ 23C1 AND EAX , ECX
 
OP0 @ W@ ADD|XOR|OR|AND= 0=
OP0 @ W@ 458B <> AND OR
\ OP0 @ W@ 4503 XOR OR \ 0345F8 ADD EAX , F8 [EBP]
0= IF M\ 1B6 DTST
C2 OP0 @ 1+ C! \ ADD EAX , EDX
-1 ALLOT
FALSE M\ 1B7 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 4D8B XOR OR \ 8B4D00 MOV ECX , 0 [EBP]
OP1 @ @ 4D89C82B XOR OR \ 2BC8 SUB ECX , EAX
\ 894D00 MOV 0 [EBP] , ECX
0= IF M\ B6 DTST
 
4529 OP2 @ W! \ SUB 0 [EBP] , EAX
OP2 ToOP0
-5 ALLOT
FALSE M\ B7 DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 458B XOR OR \ 58266F 8B4500 MOV EAX , 0 [EBP]
OP1 @ W@ 558B XOR OR \ 582672 8B5504 MOV EDX , 4 [EBP]
OP0 @ W@ 4589 XOR OR \ 582675 894500 MOV 0 [EBP] , EAX
0= IF M\ D2 DTST
OP0 OPexcise
FALSE M\ D3 DTST
EXIT
THEN
 
 
OP2 @ W@ 458B XOR \ 8B4500 MOV EAX , 0 [EBP]
OP1 @ W@ 5589 XOR OR \ 895500 MOV 0 [EBP] , EDX
OP0 @ W@ C88B XOR OR \ 8BC8 MOV ECX , EAX
0= IF M\ F4 DTST
4D8B OP2 @ W! \ MOV ECX , 0 [EBP]
C18B OP0 @ W! \ MOV EAX , ECX
FALSE M\ F5 DTST
EXIT
THEN
 
OP2 @ C@ B8 XOR \ B801000000 MOV EAX , # 1
OP2 @ 1+ @ SHORT? 0= OR
OP1 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
OP0 @ W@ 48D XOR OR \ 8D0402 LEA EAX , [EDX] [EAX]
0= IF M\ FC DTST
OP2 @ 1+ @
OP2 OPexcise
428D OP0 @ W! \ LEA EAX , 1 [EDX]
OP0 @ 2+ C!
FALSE M\ FD DTST
EXIT
THEN
 
OP2 @ W@ 558B XOR \ 5876BB 8B5500 MOV EDX , 0 [EBP]
OP1 @ W@ 428D XOR OR \ 5876BE 8D4201 LEA EAX , 1 [EDX]
OP0 @ W@ 4589 XOR OR \ 5876C1 894500 MOV 0 [EBP] , EAX
0= IF M\ FC DTST
OP1 @ 2+ C@
OP1 OPexcise
4583 OP0 @ W! C, \ ADD EAX , 1 [EDX]
FALSE M\ FD DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 4589 XOR OR \ 8945EC MOV EC [EBP] , EAX
 
OP1 ?EDX_[EBP] OR
 
OP0 @ W@ 558B XOR OR \ 8B55EC MOV EDX , EC [EBP]
0= IF M\ 104 DTST
OP0 OPexcise
OP0 02 OPinsert
D08B OP1 @ W! \ MOV EDX , EAX
FALSE M\ 105 DTST
EXIT
THEN
 
OP2 @ W@ D08B XOR \ 5A5408 8BD0 MOV EDX , EAX
 
OP1 @ @ FFFFFF AND 95048D XOR \ 8D0495D8825900 LEA EAX , 5982D8 [EDX*4]
OP1 @ @ FFFFFF AND 95048B <> AND OR \ 8B0495D8825900 MOV EAX , 5982D8 [EDX*4]
 
OP0 @ W@ 558B XOR OR \ 5A5411 8B55F8 MOV EDX , F8 [EBP]
0= IF M\ 138 DTST
OP2 OPexcise
85 OP1 @ 2+ C! \ LEA EAX , 5982D8 [EAX*4]
FALSE M\ 139 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ @ E1C1CA8B XOR OR \ 8BCA MOV ECX , EDX
\ C1E107 SHL ECX , 7
OP0 @ W@ C10B XOR OR \ 0BC1 OR EAX , ECX
0= IF M\ 108 DTST
OP2 OPexcise
E2C1 OP1 @ W! \ SHL EDX , 7
C20B OP0 @ W! \ OR EAX , EDX
FALSE M\ 109 DTST
EXIT
THEN
 
OP2 @ @ 878DD08B XOR \ 8BD0 MOV EDX , EAX
\ 8D873C100000 LEA EAX , 103C [EDI]
OP0 @ W@ 1088 XOR OR \ 8810 MOV [EAX] , DL
0= IF M\ 110 DTST
OP1 @ 2+ @
9788 OP1 @ W! \ MOV 103C [EDI] , DL
878D OP0 @ W! \ LEA EAX , 103C [EDI]
,
FALSE M\ 111 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ @ 5589D98B XOR OR \ 58809A 8BD9 MOV EBX , ECX
\ 58809C 8955EC MOV EC [EBP] , EDX
OP0 @ W@ C323 XOR OR \ 58809F 23C3 AND EAX , EBX
0= IF M\ 116 DTST
OP2 OPexcise
C123 OP0 @ W! \ AND EAX , ECX
FALSE M\ 117 DTST
EXIT
THEN
 
 
DUP C@ C3 XOR
OP2 @ W@ 4D8B XOR OR \ 8B4DF0 MOV ECX , F0 [EBP]
OP1 @ @ 23F05589 XOR OR \ 8955F0 MOV F0 [EBP] , EDX
\ 23C1 AND EAX , ECX
0= IF M\ 11E DTST
OP0 OPexcise
4523 OP1 @ W! \ AND EAX , F0 [EBP]
FALSE M\ 11D DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 558B XOR OR \ 5881D2 8B55EC MOV EDX , EC [EBP]
OP1 @ @ BF04523 XOR OR \ 5881D5 2345F0 AND EAX , F0 [EBP]
OP0 @ W@ C20B XOR OR \ 5881D8 0BC2 OR EAX , EDX
0= IF M\ 120 DTST
OP2 @ 2+ C@
OP2 OPexcise
450B OP0 @ W! \ OR EAX , EC [EBP]
C,
FALSE M\ 11D DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP1 @ 2+ C@ XOR
OP2 @ W@ 5589 XOR OR \ 8955F0 MOV F0 [EBP] , EDX
OP1 @ W@ 4523 XOR OR \ 2345F0 AND EAX , F0 [EBP]
0= IF M\ 126 DTST
OP1 OPexcise
OP0 2 OPinsert
C223 OP1 @ W! \ AND EAX , EDX
FALSE M\ 127 DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP1 @ 2+ C@ XOR
OP2 @ W@ 4D89 XOR OR \ 894DFC MOV FC [EBP] , ECX
OP1 @ W@ 4523 XOR OR \ 2345FC AND EAX , FC [EBP]
0= IF M\ 13E DTST
OP1 OPexcise
OP0 2 OPinsert
C123 OP1 @ W! \ AND EAX , ECX
FALSE M\ 13F DTST
EXIT
THEN
 
 
DUP C@ C3 XOR
OP2 @ 2+ C@ C>S OFF-EBP U< 0= OR
OP2 @ W@ 558B XOR OR \ 58838C 8955F8 MOV EDX , F4 [EBP]
OP1 @ @ C20BC123 XOR OR \ 58838F 23C1 AND EAX , ECX
\ 588391 0BC2 OR EAX , EDX
0= IF M\ 12C DTST
OP2 @ 2+ C@
OP2 OPexcise
450B OP0 @ W! \ OR EAX , F8 [EBP]
C,
FALSE M\ 12D DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ @ C123CA8B XOR OR \ 8BCA MOV ECX , EDX
\ 23C1 AND EAX , ECX
OP0 @ W@ 450B XOR OR \ 0B45F4 OR EAX , F4 [EBP]
0= IF M\ 1F2 DTST
OP2 OPexcise
C223 OP1 @ W! \ AND EAX , EDX
FALSE M\ 1F3 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 4D8B XOR OR \ 5884C1 8B4DF8 MOV ECX , F8 [EBP]
OP1 @ @ C10BCA23 XOR OR \ 5884C4 23CA AND ECX , EDX
OP0 @ W@ C10B XOR OR \ 5884C6 0BC1 OR EAX , ECX
0= IF M\ 1F4 DTST
OP1 OPexcise
5523 OP1 @ W! \ AND EDX , F8 [EBP]
C20B OP0 @ W! \ OR EAX , EDX
FALSE M\ 1F5 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 558B XOR OR \ 587860 8B5500 MOV EDX , 0 [EBP]
OP1 @ W@ 528D XOR OR \ 587863 8D5201 LEA EDX , 1 [EDX]
OP0 @ W@ 5589 XOR OR \ 587866 895500 MOV 0 [EBP] , EDX
0= IF M\ 144 DTST
OP1 @ 2+ C@
OP2 OPexcise
OP1 OPexcise
4583 OP0 @ W! \ ADD 0 [EBP] , # 1
C,
FALSE M\ 145 DTST
EXIT
THEN
 
DUP C@ C3 XOR
\ OP2 @ W@ 5589 XOR OR \ 8B5500 EDX , MOV 0 [EBP]
OP2 @ W@ 558B XOR OR \ 8B5500 EDX , MOV 0 [EBP]
OP1 @ W@ E0D3 XOR OR \ D3E0 SHL EAX , CL
\ OP1 ?EDX_[EBP] OR \ D3E0 SHL EAX , CL
OP0 @ W@ C20B XOR OR \ 0BC2 OR EAX , EDX
0= IF M\ 14A DTST
OP2 @ 2+ C@
OP2 OPexcise
45 OP0 @ 1+ C! \ OR EAX , 0 [EBP]
C,
FALSE M\ 14B DTST
EXIT
THEN
 
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
OP1 @ W@ 458B XOR OR \ 8B4500 MOV EAX , 0 [EBP]
OP0 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP]
0= IF M\ 162 DTST
OP1 ToOP0 -3 ALLOT
OP0 2 OPinsert
D08B OP1 @ W!
FALSE M\ 163 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 4D8B XOR OR \ 582055 8B4D04 MOV ECX , 4 [EBP]
OP1 @ W@ 5589 XOR OR \ 582058 895504 MOV 4 [EBP] , EDX
OP0 @ @ FFFFFF AND 1048D XOR OR \ 58205B 8D0401 LEA EAX , [ECX] [EAX]
0= IF M\ 168 DTST
4503 OP2 @ W! \ ADD EAX , 4 [EBP]
OP0 OPexcise
FALSE M\ 169 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ W@ 558B XOR OR \ 582202 8B5500 MOV EDX , 0 [EBP]
OP1 @ W@ 4503 XOR OR \ 582205 034504 ADD EAX , 4 [EBP]
OP0 @ W@ C22B XOR OR \ 582208 2BC2 SUB EAX , EDX
0= IF M\ 170 DTST
OP2 @ 2+ C@
OP2 OPexcise
452B OP0 @ W! C, \ SUB EAX , 0 [EBP]
FALSE M\ 171 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ 2+ C@
OP1 @ 2+ C@ = OR
OP2 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
OP0 @ @ FFFFFF AND 2048D XOR OR \ 8D0402 LEA EAX , [EDX] [EAX]
0= IF M\ 158 DTST
OP2 @ 2+ C@
OP2 OPexcise
4503 OP0 @ W! \ ADD EAX , 0 [EBP]
OP0 @ 2+ C!
FALSE M\ 159 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
OP2 @ 2+ C@
OP1 @ 2+ C@ = OR
OP2 @ W@ 4589 XOR OR \ 571DD0 8945FC MOV FC [EBP] , EAX
OP1 @ W@ 4503 XOR OR \ 571DD3 034500 ADD EAX , 0 [EBP]
OP0 @ W@ 6DF7 XOR OR \ 571DD6 F76DFC IMUL FC [EBP]
0= IF M\ 160 DTST
OP2 OPexcise
OP1 2 OPinsert
C88B OP2 @ W! \ MOV ECX , EAX
E9F7 OP0 @ W! \ IMUL ECX
FALSE -1 ALLOT M\ 161 DTST
EXIT
THEN
DUP C@ C3 XOR
OP2 @ 2+ C@
OP0 @ 2+ C@ XOR OR
 
OP2 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
OP1 @ W@ AF0F XOR OR \ 0FAFC2 IMUL EAX , EDX
OP0 @ W@ 4503 XOR OR \ 034500 ADD EAX , 0 [EBP]
 
0= IF M\ 248 DTST
OP2 OPexcise
OP1 2 OPinsert
C88B OP2 @ W! \ MOV ECX , EAX
C103 OP0 @ W! \ ADD EAX , ECX
 
FALSE -1 ALLOT M\ 141 DTST
EXIT
THEN
 
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR
OP2 @ W@ C28B XOR OR \ 571EED 8BC2 MOV EAX , EDX
OP1 @ W@ 5589 XOR OR \ 571EEF 8955FC MOV FC [EBP] , EDX
OP0 @ W@ 6DF7 XOR OR \ 571EF2 F76DFC IMUL FC [EBP]
0= IF M\ 182 DTST
EAF7 OP0 @ W! \ IMUL EDX
FALSE -1 ALLOT M\ 183 DTST
EXIT
THEN
 
( !!!!!!!!!!
DUP C@ C3 XOR
OP1 @ @ EAF7C28B XOR OR \ 8BC2 MOV EAX , EDX
\ F7EA IMUL EDX
0= IF M\ 184 DTST
OP1 OPexcise
C2AF0F OP0 @ ! \ IMUL EAX , EDX
FALSE 1 ALLOT M\ 185 DTST
EXIT
THEN
)
 
 
OP3 @ :-SET U< IF TRUE EXIT THEN
M\ PPPP
 
OP3 @ @ D08BC28B = \ MOV EAX , EDX MOV EDX , EAX
IF M\ 42 DTST
OP2 OPexcise
FALSE M\ 43 DTST
EXIT
THEN
 
OP1 @ W@ 453B = \ CMP EAX , X [EBP]
IF OP0 @ @ FFFCFF AND C09C0F = \ SETLE AL
IF
\ $ 4444 <
OP2 @ C@ 0B8 XOR \ MOV EAX, # X
OP3 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX
OP3 @ 2+ C@
OP1 @ 2+ C@ XOR OR 0=
IF M\ 2C DTST
3D OP3 @ C!
OP2 @ 1+ @ OP3 @ 1+ !
2 OP2 +!
OP0 @ @ 300 XOR OP2 @ ! \ SETGE AL
OP2 ToOP0
FALSE -6 ALLOT M\ 2D DTST
EXIT
THEN
\ $ 4444 @ <
OP2 @ C@ 0A1 XOR \ MOV EAX, # X
OP3 @ 2+ C@
OP1 @ 2+ C@ XOR OR 0=
IF
OP3 @ W@ 4589 = \ MOV X1 [EBP], EAX
IF M\ 2E DTST
053B OP3 @ W!
OP2 @ 1+ @ OP3 @ 2+ !
3 OP2 +!
OP0 @ @ 300 XOR OP2 @ ! \ SETGE AL
OP2 ToOP0
FALSE -5 ALLOT M\ 2F DTST
EXIT
THEN
 
OP3 @ W@ 45C7 = \
IF M\ 12E DTST
3D81 OP3 @ W!
OP3 @ 3 + @
OP2 @ 1+ @ OP3 @ 2+ ! OP3 @ 6 + !
3 OP2 +!
OP0 @ @ OP2 @ !
OP2 ToOP0
FALSE -5 ALLOT M\ 12F DTST
EXIT
THEN
 
THEN
THEN
THEN
DUP @ 458B1089 XOR \ MOV [EAX], EDX MOV EAX , X [EBP]
OVER 5 + @ C3086D8D XOR OR \ LEA EBP, 8 [EBP] RET
OP0 @ W@ D18B XOR OR 0= \ MOV EDX , ECX
IF M\ 51E DTST
0889 OP0 @ W! \ MOV [EAX] , ECX
2+ FALSE M\ 51F DTST
EXIT
THEN
M\ PPPP
 
OP3 @ W@ 4589 XOR \ 8945FC MOV FC [EBP] , EAX
OP2 @ C@ B8 XOR OR \ B8189D5700 MOV EAX , # 579D18
OP1 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP]
OP0 @ @ FFFFFF AND 90048D XOR OR \ 8D0490 LEA EAX , [EAX] [EDX*4]
OP3 @ 2+ C@ OP1 @ 2+ C@ XOR OR \ X0=X2
0= IF M\ 840 DTST
OP2 @ 1+ @ 85048D OP2 @ !
OP2 @ 3 + !
OP2 ToOP0
FALSE -4 ALLOT M\ 841 DTST
EXIT
THEN
 
OP3 @ W@ 558B XOR \ MOV EDX , FC [EBP]
OP2 @ W@ 4589 XOR OR \ MOV FC [EBP] , EAX
OP1 @ W@ C28B XOR OR \ MOV EAX , EDX
OP0 @ W@ 558B XOR OR \ MOV EDX , FC [EBP]
OP3 @ 2+ C@ OP2 @ 2+ C@ XOR OR
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR
0= IF M\ F30 DTST
OP3 OPexcise
OP2 OPexcise
D08B OP1 @ W! \ MOV EDX , EAX
458B OP0 @ W! \ MOV EAX , FC [EBP]
DO_EAX>ECX DROP
SetOP 89 C, 55 C, OP0 @ 2+ C@ C, \ MOV FC [EBP] , EDX
FALSE M\ F31 DTST
EXIT
THEN
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR
OP3 @ W@ 4589 XOR OR \ 57BF16 8945FC MOV FC [EBP] , EAX
OP2 @ W@ C033 XOR OR \ 57BF19 33C0 XOR EAX , EAX
OP1 @ W@ 4581 XOR OR \ 57BF1B 814500BA040000 ADD 0 [EBP] , # 4BA
OP0 @ W@ 4513 XOR OR \ 57BF22 1345FC ADC EAX , FC [EBP]
0= IF M\ 84 DTST
OP2 OPexcise
D083 OP0 @ ! \ ADC EAX , # 0
FALSE M\ 85 DTST
EXIT
THEN
 
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR
OP3 @ W@ 4589 XOR OR \ 59690C 8945F0 MOV F0 [EBP] , EAX
OP2 @ C@ B8 XOR OR \ 59690F B801000000 MOV EAX , # 1
OP1 @ C@ BA XOR OR \ 596914 BA00000080 MOV EDX , # 80000000
OP0 @ W@ 552B XOR OR \ 596919 2B55F0 SUB EDX , F0 [EBP]
0= IF M\ A4 DTST
OP2 @ 1+ @
OP2 OPexcise
D02B OP0 @ ! \ SUB EDX , EAX
-1 ALLOT
SetOP B8 C, ,
FALSE M\ A5 DTST
EXIT
THEN
 
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR
OP3 @ W@ 4589 XOR OR \ 8945F8 MOV F8 [EBP] , EAX
OP2 ?EDX_[EBP] OR
OP1 ?EDX_[EBP] OR
OP0 @ W@ 558B XOR OR \ 8B55F8 MOV EDX , F8 [EBP]
0= IF M\ EC DTST
OP2 2 OPinsert
D08B OP3 @ W! \ MOV EDX , EAX
OP0 OPexcise
FALSE M\ ED DTST
EXIT
THEN
 
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR
OP3 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
OP2 @ C@ B8 XOR OR \ B801000000 MOV EAX , # 1
OP1 @ C@ B9 XOR OR \ B9FFFFFFFF MOV ECX , # FFFFFFFF
OP0 @ W@ 4D03 XOR OR \ 034DFC ADD ECX , FC [EBP]
0= IF M\ FA DTST
OP2 @ 1+ @
OP2 OPexcise
C803 OP0 @ W! \ ADD ECX , EAX
-1 ALLOT
SetOP B8 C, ,
FALSE M\ FB DTST
EXIT
THEN
 
OP3 @ C@ A1 XOR \ 587C37 A1D8795800 MOV EAX , 5879D8 ( C+5 )
OP2 @ W@ D08B XOR OR \ 587C3C 8BD0 MOV EDX , EAX
OP1 @ C@ A1 XOR OR \ 587C3E A1E4795800 MOV EAX , 5879E4 ( D+5 )
OP0 @ W@ 4589 XOR OR \ 587C43 8945EC MOV EC [EBP] , EAX
0= IF M\ 114 DTST
OP2 OPexcise
OP2 1 OPresize
158B OP2 @ W!
FALSE M\ 115 DTST
EXIT
THEN
 
OP3 @ 2+ C@
OP1 @ 2+ C@ XOR
OP1 @ 2+ C@
OP0 @ 2+ C@ XOR OR
OP3 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
OP2 @ W@ 428D XOR OR \ 8D4201 LEA EAX , 1 [EDX]
OP1 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
OP0 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
0= IF M\ 140 DTST
OP3 OPexcise
OP2 2 OPinsert
C88B OP3 @ W! \ MOV ECX , EAX
OP1 OPexcise
OP0 2 OPinsert
D18B OP1 @ W! \ MOV EAX , ECX
FALSE M\ 141 DTST
EXIT
THEN
 
 
 
OP4 @ :-SET U< IF TRUE EXIT THEN
 
\ $ 10 LSHIFT
OP4 @ W@ 4589 XOR \ MOV X0 [EBP] , EAX
OP3 @ C@ B8 XOR OR \ MOV EAX, # 10
OP2 @ @ 458BC88B XOR OR \ MOV ECX, EAX \ !? MOV EAX, X2 [EBP]
OP0 @ W@ F7FF AND E0D3 XOR OR \ SHL|SHR EAX , CL
OP4 @ 2+ C@ OP1 @ 2+ C@ XOR OR \ X0=X2
0=
IF M\ 32 DTST
OP0 @ W@ 0012 - OP4 @ W!
OP3 @ 1+ @ OP4 @ 2+ C!
OP4 ToOP0
FALSE -C ALLOT M\ 33 DTST
EXIT
THEN
 
OP1 @ @ FFFFFF AND 82448D XOR \ LEA EAX , 0 [EDX] [EAX*4]
OP0 @ W@ 0889 XOR OR \ MOV [EAX] , ECX
0=
IF M\ 132 DTST
4C89 OP1 @ W!
OP1 ToOP0
FALSE -2 ALLOT M\ 133 DTST
EXIT
THEN
 
 
OP4 @ 2+ C@
OP3 @ 2+ C@ XOR
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR OR
OP4 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
OP3 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
OP2 @ @ C203D8F7 XOR OR \ F7D8 NEG EAX
\ 03C2 ADD EAX , EDX
OP0 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
0= IF M\ C8 DTST
4D OP4 @ 1+ C! \ MOV ECX , 0 [EBP]
\ MOV 0 [EBP] , EAX
D08B OP2 @ W! \ MOV EDX , EAX
C103D8F7 OP1 @ ! \ NEG EAX
\ ADD EAX , ECX
FALSE -1 ALLOT M\ C9 DTST
EXIT
THEN
 
OP4 @ W@ 5589 XOR \ 895500 MOV 0 [EBP] , EDX
OP3 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP]
OP2 @ W@ 4D8B XOR OR \ 8B4D00 MOV ECX , 0 [EBP]
0= IF M\ C8 DTST
OP3 2 OPinsert
CA8B OP4 @ W! \ MOV ECX , EDX
OP2 OPexcise
FALSE M\ C9 DTST
EXIT
THEN
 
DUP C@ C3 XOR
OP3 @ 2+ C@
OP0 @ 2+ C@ XOR OR
OP3 @ W@ 4589 XOR OR \ 571FEA 894500 MOV 0 [EBP] , EAX
OP2 @ W@ C28B XOR OR \ 571FED 8BC2 MOV EAX , EDX
OP1 @ W@ EAF7 XOR OR \ 571FEF F7EA IMUL EDX
OP0 @ W@ 4503 XOR OR \ 571FF1 034500 ADD EAX , 0 [EBP]
0= IF M\ 1C8 DTST
 
OP2 OPexcise
OP1 OPexcise
 
OP0 3 OPinsert
AF0F OP1 @ W!
D2 OP1 @ 2+ C! \ IMUL EDX , EDX
 
C203 OP0 @ W! \ ADD EAX , EDX
FALSE
-1 ALLOT
M\ 1C9 DTST
EXIT
THEN
 
 
OP5 @ :-SET U< IF TRUE EXIT THEN
 
M\ PPPP
 
TRUE
;
 
: -EVEN-EBP
OP0 @ :-SET U< IF EXIT THEN
OP0 @ W@ 06D8D = \ LEA ebp, OFF-EBP [EBP]
IF OP0 @ 2+ C@ +>OFF-EBP
OP1 ToOP0
-3 ALLOT EXIT
THEN ;
 
 
: OPT_ ( -- )
BEGIN
\ M\ -D DTST
OPT-RULES UNTIL
\ M\ -F DTST
EVEN-EAX ;
 
: DO_OPT ( ADDR -- ADDR' )
OPT? IF OPT_ THEN ;
 
: INLINE? ( CFA -- CFA FLAG )
DUP BEGIN
2DUP
MM_SIZE - U> 0= IF DROP FALSE EXIT THEN
DUP C@ \ CFA CFA+OFF N'
DUP 0C3 = IF 2DROP TRUE EXIT THEN \ RET
DUP5B? M_WL DROP 5 + REPEAT
\ 0100.X0XX
DUP 0F4
AND 40 = M_WL DROP 1+ REPEAT \ INC|DEC E(ACDB)X
 
DUP 099 = M_WL DROP 1+ REPEAT \ CDQ
\ 1110.11XX
OS\ DUP FC
OS\ AND EC = M_WL DROP 1+ REPEAT \ IN|OUT EAX AL, DX | DX, EAX EL
OS\ DUP CD = M_WL DROP 2+ REPEAT \ INTX
DROP
DUP W@ \ CFA CFA+OFF N'
 
DUP3B?[EBP] M_WL DROP 3 + REPEAT
DUP3B? M_WL DROP 3 + REPEAT
DUP 06D8D = M_WL DROP 3 + REPEAT \ LEA EBP, OFF-EBP [EBP]
DUP 0C583 = M_WL DROP 3 + REPEAT \ ADD EBP, # OFF-EBP
DUP 0ED83 = M_WL DROP 3 + REPEAT \ SUB EBP, # X
DUP2B? M_WL DROP 2+ REPEAT
DUP 0EC87 = M_WL DROP 2+ REPEAT \ XCHG EBP , ESP
 
DUP C58B = M_WL DROP 2+ REPEAT \ MOV EAX, EBP
 
\ DUP 0E3FF = M_WL DROP 2+ REPEAT \ JMP EBX
DUP6B? M_WL DROP 6 + REPEAT
DUP 45C7 = M_WL DROP 7 + REPEAT \ MOV X [EBP] , # X
DUP 05C7 = M_WL DROP A + REPEAT \ MOV X , # Y
DUP 0581 = M_WL DROP A + REPEAT \ ADD X , # Y
 
DROP
DUP @
DUP 0424448B = M_WL DROP 4 + REPEAT
DUP 0424448D = M_WL DROP 4 + REPEAT
DUP 8BE08B5B =
IF OVER 3 + 2@ \ 1 TO TTTT
E3FF046D 8D00458B D= \ RP!
IF 2DROP TRUE EXIT THEN
THEN
FFFFFF AND
DUP C09D0F = M_WL DROP 3 + REPEAT \ SETGE AL
DUP C09E0F = M_WL DROP 3 + REPEAT \ SETLE AL
DUP 90048D = M_WL DROP 3 + REPEAT \ LEA EAX , [EAX] [EDX*4]
DUP 02048D = M_WL DROP 3 + REPEAT \ LEA EAX, [EDX] [EAX]
DUP 40B70F = M_WL DROP 4 + REPEAT \ MOVZX EAX , WORD PTR FE [EAX]
 
 
\ CMPXCHG [EAX] , AL| EAX
\ LSS EAX , [EAX]
\ BTR [EAX] , EAX
\ LFS EAX , [EAX]
\ LGS EAX , [EAX]
\ MOVZX EAX , BYTE|WORD PTR [EAX]
\ 0000.0000 1011.1XXX 0000.1111
DUP FFF8FF
AND 00B00F = M_WL DROP 3 + REPEAT \ MOVZX EAX, WORD PTR [EAX]
 
DUP 20488B = M_WL DROP 3 + REPEAT \ MOV ECX , [EAX+20H]
DUP 20488D = M_WL DROP 3 + REPEAT \ LEA ECX , [EAX+20H]
 
DUP 85448B = M_WL DROP 4 + REPEAT \ MOV EAX, X [EBP] [EAX*4]
DUP 02048D = M_WL DROP 4 + REPEAT \ LEA EAX , [EDX] [EAX]
\ XX00.0101 0000.0100 1000.1XX1
DUP7B? WHILE DROP 7 + REPEAT
2DROP FALSE
;
 
: MACRO? INLINE? ;
 
\ ÌÀÊÐÎÏÎÄÑÒÀÍÎÂÙÈÊ
 
: +EBP DUP C@ C>S OFF-EBP + C, 1+ ;
 
: 1_,_STEP SetOP DROP DUP C@ C, 1+ ;
 
: 2_,_STEP SetOP DROP DUP W@ W, 2+ ;
 
: 3_,_STEP 2_,_STEP DUP C@ C, 1+ ;
 
: 4_,_STEP_ DUP @ , CELL+ ;
 
: 4_,_STEP SetOP DROP 4_,_STEP_ ;
 
: 5_,_STEP 1_,_STEP 4_,_STEP_ ;
 
: 6_,_STEP 2_,_STEP 4_,_STEP_ ;
 
: 7_,_STEP 3_,_STEP 4_,_STEP_ ;
 
: A_,_STEP 2_,_STEP 4_,_STEP_ 4_,_STEP_ ;
 
: 0A_,_STEP DUP DUP @ + DP @ - , CELL+ ;
 
: 1A_,_STEP 1_,_STEP 0A_,_STEP ;
 
: 2A_,_STEP 2_,_STEP 0A_,_STEP ;
 
: _INLINE, ( CFA -- )
\ ." ^" DUP H.
BEGIN
DO_OPT
 
DUP @ \ CFA N'
DUP 8BE08B5B = DUP
IF DROP OVER 3 + 2@ E3FF046D 8D00458B D= \ RP!
THEN M_WL DROP SetOP
8B C, E0 C, \ MOV ESP, EAX
DROP 'DROP
REPEAT
FF AND \ CFA N'
DUP 0C3 = IF 2DROP EXIT THEN \ RET
 
DUP5B? M_WL 5_,_STEP REPEAT \ ADD EAX, # X
 
\ 010X.XXXX
DUP E0 AND 40 = M_WL 1_,_STEP REPEAT \ INC|DEC|PUSH|POP E_X
 
\ FS: GS: D16: A16: INSB INSD OUTSB OUTSD
\ 0110.X1XX
DUP F4 AND 64 = M_WL 1_,_STEP REPEAT
 
DUP 099 = M_WL 1_,_STEP REPEAT \ CDQ
 
OS\ DUP FC
OS\ AND EC = M_WL 1_,_STEP REPEAT \ IN|OUT EAX AL, DX | DX, EAX EL
OS\ DUP CD = M_WL 2_,_STEP REPEAT \ INTX
 
\ DUP 0BB = M_WL 5_,_STEP REPEAT \ MOV EBX, # X
\ JO JNO JB JAE JE JNE JBE JA JS JNS JP JNP JL JGE JLE JG
\ 0111.XXXX
DUP F0 AND 70 = M_WL 2_,_STEP REPEAT
 
DUP 0E8 = M_WL 1A_,_STEP REPEAT \ CALL
DUP 0E9 = M_WL 1A_,_STEP REPEAT \ JMP
DROP
DUP W@
DUP3B?[EBP] M_WL 2_,_STEP +EBP REPEAT
DUP3B? M_WL 3_,_STEP REPEAT
DUP2B? M_WL 2_,_STEP REPEAT
DUP 0C48B = M_WL 2_,_STEP REPEAT \ MOV EAX , ESP
DUP C58B = M_WL EVEN-EBP 2_,_STEP REPEAT \ MOV EAX, EBP
DUP 0EC87 = M_WL EVEN-EBP 2_,_STEP REPEAT \ XCHG EBP , ESP
 
DUP 06D8D = M_WL DROP DUP 2 + C@ +>OFF-EBP
3 + REPEAT \ LEA EBP, OFF-EBP [EBP]
 
DUP 0C583 = M_WL DROP DUP 2 + C@ +>OFF-EBP
3 + REPEAT \ ADD EBP, # OFF-EBP
 
DUP 0ED83 = M_WL DROP DUP 2 + C@ C>S NEGATE +>OFF-EBP
3 + REPEAT \ SUB EBP, # OFF-EBP
 
DUP 0C483 = M_WL 3_,_STEP REPEAT \ ADD ESP, # X
DUP6B? M_WL 6_,_STEP REPEAT \ MOV EAX, # X
DUP 0E3FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ JMP EBX
\ DUP 0D3FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ CALL EBX
 
\ DUP 0E2FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ JMP EDX
DUP 0D2FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ CALL EDX
DUP 810F = M_WL 2A_,_STEP REPEAT \ JO [ESP]
DUP 45C7 = M_WL 2_,_STEP +EBP 4_,_STEP_ REPEAT \ MOV X [EBP] , # X
DUP 05C7 = M_WL A_,_STEP REPEAT \ MOV X , # Y
DUP 0581 = M_WL A_,_STEP REPEAT \ ADD X , # Y
 
DROP
DUP @
DUP 0424448B = M_WL DROP SetOP \ MOV EAX, 4 [ESP]
8B C, 04 C, 24 C, \ MOV EAX, [ESP]
4 +
REPEAT
 
DUP 0424448D = M_WL DROP SetOP \ LEA EAX, 4 [ESP]
8B C, C4 C, \ MOV EAX, ESP
4 +
REPEAT
 
FFFFFF AND
 
DUP C09D0F = M_WL 3_,_STEP REPEAT \ SETGE AL
DUP C09E0F = M_WL 3_,_STEP REPEAT \ SETLE AL
DUP 90048D = M_WL 3_,_STEP REPEAT \ LEA EAX , [EAX] [EDX*4]
DUP 02048D = M_WL 3_,_STEP REPEAT \ LEA EAX, [EDX] [EAX]
DUP 40B70F = M_WL 4_,_STEP REPEAT \ MOVZX EAX , WORD PTR FE [EAX]
 
DUP 240401 = M_WL 3_,_STEP REPEAT \ ADD [ESP] , EAX
 
\ CMPXCHG [EAX] , AL| EAX
\ LSS EAX , [EAX]
\ BTR [EAX] , EAX
\ LFS EAX , [EAX]
\ LGS EAX , [EAX]
\ MOVZX EAX , BYTE|WORD PTR [EAX]
\ 0000.0000 1011.1XXX 0000.1111
DUP FFF8FF
AND 00B00F = M_WL 3_,_STEP REPEAT
DUP 244403 = M_WL 4_,_STEP REPEAT \ ADD EAX, X [ESP]
DUP 24442B = M_WL 4_,_STEP REPEAT \ SUB EAX, X [ESP]
DUP 24448B = M_WL 4_,_STEP REPEAT \ MOV EAX, X [ESP]
DUP 85448B = M_WL 3_,_STEP +EBP REPEAT \ MOV EAX, X [EBP] [EAX*4]
DUP 24048B = M_WL 3_,_STEP REPEAT \ MOV EAX, 0 [ESP]
DUP 20488B = M_WL 3_,_STEP REPEAT \ MOV ECX , [EAX+20H]
DUP 20488D = M_WL 3_,_STEP REPEAT \ LEA ECX , [EAX+20H]
DUP 021C8D = M_WL 3_,_STEP REPEAT \ LEA EBX, [EDX] [EAX]
DUP 85048D = M_WL 7_,_STEP REPEAT \ LEA EAX, X [EAX*4]
DUP 2404FF = M_WL 3_,_STEP REPEAT \ INC [ESP]
DUP 18B60F = M_WL 3_,_STEP REPEAT \ MOVZX EBX, BYTE PTR [EAX]
 
DUP7B? WHILE 7_,_STEP REPEAT
HEX U. ." @COD, ERROR" ABORT
;
 
 
: XC_J
J_COD FE AND 4 = IF EXIT THEN
J_COD DUP 0x8 AND
IF 3
ELSE 5
THEN XOR TO J_COD ;
 
[DEFINED] [TTO]
[IF]
PREVIOUS PREVIOUS SET-CURRENT
[THEN]
 
: OPT_CLOSE
EVEN-EBP DP @ TO LAST-HERE ;
 
: OPT_INIT ?SET -EVEN-EBP ;
 
: INLINE, ( CFA -- ) OPT_INIT _INLINE, OPT_CLOSE ;
 
: MACRO, INLINE, ;
 
 
: ?BR-OPT-RULES ( cfa -- cfa' flag )
\ ZZZZ IF ." z=" OP1 @ @ U. THEN
OP0 @ :-SET U< IF TRUE EXIT THEN
M\ -3 DTST
 
OP0 @ C@ 05 = \ ADD EAX, # X
IF M\ 404 DTST
OP0 @ 1+ @ OFF-EAX + TO OFF-EAX
OP1 ToOP0
FALSE -5 ALLOT M\ 405 DTST
EXIT
THEN
 
DUP 'DROP XOR
OFF-EAX OR
OP0 @ W@ 4589 XOR OR 0= \ MOV X [EBP] , EAX
IF M\ 436 DTST
DP @ TO LAST-HERE INLINE,
M\ 437 DTST
['] NOOP FALSE EXIT
THEN
 
DUP 'DROP =
OFF-EAX 0=
OP0 @ C@ A1 = AND AND \ MOV EAX , 44444
IF M\ 434 DTST
0 W,
OP0 @ 1+ @ OP0 @ 2+ !
3D83 OP0 @ W! \ CMP 44444, # 0
FALSE M\ 435 DTST
EXIT
THEN
 
OFF-EAX 0=
OP0 @ @ FFFFFF AND 24048B = AND \ MOV EAX , [ESP]
IF M\ 534 DTST
1 ALLOT
243C83 OP0 @ ! \ CMP DWORD PTR [ESP], 0
FALSE M\ 535 DTST
EXIT
THEN
 
DUP 'DROP XOR
OP0 @ W@ 458B XOR OR 0= \ MOV EAX , 0 [EBP]
IF M\ 334 DTST
7D83 OP0 @ W! \ CMP X [EBP], # Z
FALSE 0 C, M\ 335 DTST
EXIT
THEN
DUP 'DROP XOR
OP0 @ W@ C20B XOR OR \ 0BC2 OR EAX , EDX
0= IF M\ B4 DTST
D00B OP0 @ W! \ OR EDX , EAX
FALSE M\ B5 DTST
EXIT
THEN
 
OP0 @ W@ 408D = \ LEA EAX, X [EAX]
IF M\ 234 DTST
C083 OP0 @ W! \ ADD EAX, # X
FALSE M\ 235 DTST
EXIT
THEN
OP0 @ W@ 808D = \ LEA EAX, X [EAX]
IF M\ 34 DTST
05 OP0 @ C!
OP0 @ 2+ @ OP0 @ 1+ ! \ ADD EAX, # X
TRUE -1 ALLOT M\ 35 DTST
EXIT
THEN
 
DUP 'DROP XOR
OP0 @ @ FFFFFF AND 1FF8C1 XOR OR 0= \ SAR EAX , 1F
IF M\ 13A DTST
OP1 ToOP0
8D J_COD 1 AND XOR TO J_COD
FALSE -3 ALLOT M\ 13B DTST
EXIT
THEN
DUP 'DROP XOR
OP0 @ C@ 35 XOR OR 0= \ XOR EAX, # X
IF M\ 134 DTST
3D OP0 @ C! \ CMP EAX, # X
FALSE M\ 135 DTST
EXIT
THEN
 
DUP 'DROP XOR
OP0 @ @ FFFFFF AND 240433 XOR OR 0= \ XOR EAX , [ESP]
IF M\ 134 DTST
3B OP0 @ C! \ CMP EAX , [ESP]
FALSE M\ 135 DTST
EXIT
THEN
 
OP0 @ W@ 4539 XOR \ CMP X [EBP] , EAX
0= IF M\ 76 DTST
3B OP0 @ C! \ CMP EAX, X [EBP]
XC_J
FALSE M\ 77 DTST
EXIT
THEN
 
OP1 @ :-SET U< IF TRUE EXIT THEN
\ $ 0<> IF
DUP 'DROP XOR
OP1 @ @ C01BD8F7 XOR OR 0= \ NEG EAX \ SBB EAX, EAX
IF M\ 36 DTST
OP2 ToOP0
\ 084 TO J_COD
FALSE -4 ALLOT M\ 37 DTST
EXIT
THEN
 
 
\ $ 0= IF
DUP 'DROP XOR
OP1 @ @ 1B01E883 XOR OR \ SUB EAX , # 1
OP0 @ W@ C01B XOR OR 0= \ SBB EAX , EAX
IF M\ 38 DTST
\ OP2 @ W@ U.
OP2 ToOP0
J_COD 1 XOR TO J_COD
FALSE -5 ALLOT M\ 39 DTST
EXIT
THEN
 
 
\ $ U< IF
DUP 'DROP XOR
OP1 @ C@ 3D <>
OP1 @ C@ 3B <> AND
\ OP1 @ W@ 053B <> AND
\ OP1 @ W@ D03B <> AND \ CMP EDX , EAX
OP1 @ @ FFFD AND
4539 <> AND \ CMP X [EBP] , EAX
OP0 @ W@ C01B XOR OR OR 0= \ SBB EAX , EAX
IF M\ 3A DTST
OP1 ToOP0
83 J_COD 1 AND XOR TO J_COD
FALSE -2 ALLOT M\ 3B DTST
EXIT
THEN
 
OP1 @ @ FFFFFF AND 240C8B XOR \ MOV ECX , [ESP]
OP0 @ W@ C13B XOR OR 0= \ CMP EAX , ECX
IF M\ 33A DTST
043B OP1 @ W!
OP1 ToOP0
FALSE -2 ALLOT M\ 33B DTST
EXIT
THEN
 
OP1 @ @ FFFFFF AND 240C8B XOR \ MOV ECX , [ESP]
OP0 @ W@ C133 XOR OR 0= \ XOR EAX , ECX
IF M\ 33A DTST
0433 OP1 @ W! \ XOR ECX , [ESP]
OP1 ToOP0
FALSE -2 ALLOT M\ 33B DTST
EXIT
THEN
 
OP1 @ @ C13BCA8B = \ MOV ECX , EDX CMP EAX , ECX
IF M\ 33A DTST
C23B OP1 @ W! \ CMP EAX , EDX
OP1 ToOP0
FALSE -2 ALLOT M\ 33B DTST
EXIT
THEN
 
OP1 @ W@ 558B XOR \ MOV EDX , 0 [EBP]
OP0 @ W@ C23B XOR OR 0= \ CMP EAX , EDX
IF M\ 43A DTST
453B OP1 @ W! \ CMP EAX , 0 [EBP]
OP1 ToOP0
FALSE -2 ALLOT M\ 43B DTST
EXIT
THEN
 
 
DUP 'DROP XOR
OP1 @ @ C83B008B XOR OR \ MOV EAX , [EAX] CMP ECX , EAX
0= IF M\ 43A DTST
083B OP1 @ W! \ CMP ECX , [EAX]
OP1 ToOP0
FALSE -2 ALLOT M\ 43B DTST
EXIT
THEN
 
DUP 'DROP XOR
OP1 @ @ D03B008B XOR OR \ MOV EAX , [EAX] CMP EDX , EAX
0= IF M\ 43A DTST
103B OP1 @ W! \ CMP EDX , [EAX]
OP1 ToOP0
FALSE -2 ALLOT M\ 43B DTST
EXIT
THEN
DUP 'DROP XOR
OP1 @ @ C13B008B XOR OR \ MOV EAX , [EAX] CMP EAX , ECX
0= IF M\ 80 DTST
083B OP1 @ W! \ CMP ECX , [EAX]
XC_J
OP1 ToOP0
FALSE -2 ALLOT M\ 81 DTST
EXIT
THEN
 
OP1 @ C@ B9 XOR \ MOV ECX , # 3
OP0 @ W@ C133 XOR OR \ XOR EAX , ECX
0= IF M\ 40 DTST
3D OP1 @ C! \ CMP EAX , # 1
OP1 ToOP0
FALSE -2 ALLOT M\ 41 DTST
EXIT
THEN
\ ZZZZ IF ." Z=" OP1 @ @ U. OP1 @ W@ U. OP0 @ W@ U. THEN
OP1 @ W@ 558B XOR \ MOV EDX , 0 [EBP]
OP0 @ W@ C23B XOR OR \ CMP EAX , EDX
0= IF M\ 68 DTST
453B OP1 @ C! \ CMP EAX , 0 [EBP]
OP1 ToOP0
FALSE -2 ALLOT M\ 69 DTST
EXIT
THEN
OP1 @ C@ B9 XOR \ 57B523 B901000000 MOV ECX , # 1
OP0 @ W@ C83B XOR OR \ 57B528 3BC8 CMP ECX , EAX
0= IF M\ 74 DTST
3D OP1 @ C! \ CMP EAX , # 1
XC_J
OP1 ToOP0
FALSE -2 ALLOT M\ 75 DTST
EXIT
THEN
 
OP1 @ @ C23B008B = \ MOV EAX , [EAX] CMP EAX , EDX
IF M\ 78 DTST
103B OP1 @ W! \ CMP EDX , [EAX]
XC_J
OP1 ToOP0 -2 ALLOT
FALSE M\ 79 DTST
EXIT
THEN
 
DUP 'DROP XOR
OP1 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 10 [ESP]
OP0 @ C@ 3D XOR OR \ 597707 3D02000000 CMP EAX , # 2
0= IF M\ 7A DTST
7C81 OP1 @ W! \ CMP 10 [ESP] , # 2
OP0 @ 1+ @ OP0 @ !
OP1 ToOP0 -1 ALLOT
FALSE M\ 7B DTST
EXIT
THEN
 
OP1 @ @ FFFFFF AND 244C8B XOR \ MOV ECX , 20 [ESP]
OP0 @ W@ C83B XOR OR \ CMP ECX , EAX
0= IF M\ 7C DTST
443B OP1 @ W! \ CMP EAX , 20 [ESP]
OP0 @ 1+ @ OP0 @ !
XC_J
OP1 ToOP0 -2 ALLOT
FALSE M\ 7D DTST
EXIT
THEN
 
OP1 @ W@ 0D8B XOR \ MOV ECX , 44444
OP0 @ W@ C83B XOR OR \ CMP ECX , EAX
0= IF M\ 7C DTST
053B OP1 @ W! \ CMP EAX , 44444
OP0 @ 1+ @ OP0 @ !
XC_J
OP1 ToOP0 -2 ALLOT
FALSE M\ 7D DTST
EXIT
THEN
 
DUP 'DROP XOR
OP1 @ @ FFFFFF AND 85048B XOR OR \ MOV EAX , X [EAX*4]
OP0 @ C@ 3D XOR OR \ 5960F8 3500100000 CMP EAX , # 1000
0= IF M\ 86 DTST
3C81 OP1 @ W! \ CMP X [EAX*4] , # 1000
OP0 @ 1+ @ OP0 @ !
OP1 ToOP0 -1 ALLOT
FALSE M\ 87 DTST
EXIT
THEN
 
DUP 'DROP XOR
OP1 @ C@ A1 XOR OR \ 5978EF A135755900 MOV EAX , 597535
OP0 @ C@ 3D XOR OR \ 5978F4 3D41000000 CMP EAX , # 1000
0= IF M\ 96 DTST
OP1 @ 1+ @ OP1 @ 2+ !
3D81 OP1 @ W! \ CMP 597535 , # 1000
OP1 ToOP0
FALSE M\ 97 DTST
EXIT
THEN
 
DUP 'DROP XOR
OP1 @ W@ D8F7 XOR OR \ 581E16 F7D8 NEG EAX
OP0 @ W@ C203 XOR OR \ 581E18 03C2 ADD EAX , EDX
0= IF M\ B8 DTST
D02B OP1 @ W! \ SUB EDX , EAX
OP1 ToOP0 -2 ALLOT
FALSE M\ B9 DTST
EXIT
THEN
 
OP1 @ @ C90BCA8B XOR \ 8BCA MOV ECX , EDX
\ 0BC9 OR ECX , ECX
0= IF M\ BA DTST
D20B OP1 @ W! \ OR EDX , EDX
OP1 ToOP0 -2 ALLOT
FALSE M\ BB DTST
EXIT
THEN
 
OP1 @ @ 3DFF408D XOR
OP0 @ 1+ @ OR \ LEA EAX , FF [EAX] CMP EAX , # 0
0= IF M\ 1BA DTST
48 OP1 @ C! \ DEC EAX
OP1 ToOP0 -7 ALLOT
FALSE M\ 1BB DTST
EXIT
THEN
 
OP2 @ :-SET U< IF TRUE EXIT THEN
 
OP2 @ W@ 4589 XOR \ MOV F8 [EBP] , EAX
OP1 @ @ 453BC033 XOR OR \ XOR EAX , EAX CMP EAX , F8 [EBP]
OP0 @ 2+ C@
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
0= IF M\ 4E DTST
3D OP1 @ C! OP1 @ 1+ 0! \ CMP EAX , # 0
XC_J
OP1 ToOP0
FALSE M\ 4F DTST
EXIT
THEN
 
OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX
OP1 @ @ 453B008B XOR OR \ MOV EAX , [EAX] CMP EAX , F8 [EBP]
OP0 @ 2+ C@
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
\ OP0 @ 2+ C@ C>S OFF-EBP > OR !!!!
0= IF M\ 23A DTST
C23B OP0 @ W! \ CMP EAX , EDX
FALSE -1 ALLOT M\ 23B DTST
EXIT
THEN
 
OP2 @ W@ 4D89 XOR \ MOV F8 [EBP] , ECX
OP1 @ @ 453B008B XOR OR \ MOV EAX , [EAX] CMP EAX , F8 [EBP]
OP0 @ 2+ C@
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
0= IF M\ 7E DTST
C13B OP0 @ W! \ CMP EAX , ECX
FALSE -1 ALLOT M\ 7F DTST
EXIT
THEN
 
 
OP1 @ W@ 8B XOR \ MOV EAX , [EAX]
OP0 @ W@ 4539 XOR OR \ CMP F8 [EBP] , EAX
OP0 @ 2+ C@
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
\ OP0 @ 2+ C@ C>S OFF-EBP > OR
0= IF
OP2 @ W@ 4D89 = \ MOV F8 [EBP] , ECX
IF M\ 23A DTST
C83B OP0 @ W! \ CMP ECX , EAX
FALSE -1 ALLOT M\ 23B DTST
EXIT
THEN
OP2 @ W@ 5589 = \ MOV F8 [EBP] , EDX
\ MOV EAX , [EAX] CMP F8 [EBP] , EAX
IF M\ 33A DTST
D03B OP0 @ W! \ CMP EDX , EAX
FALSE -1 ALLOT M\ 33B DTST
EXIT
THEN
THEN
 
 
OP3 @ :-SET U< IF TRUE EXIT THEN
 
\ $ < IF
DUP 'DROP XOR
OP2 @ @ FFFFFCFF AND 83C09C0F XOR OR
OP1 @ @ 4801E083 XOR OR 0=
\ 0F9DC0 SETGE AL
\ 83E001 AND EAX , # 1
\ 48 DEC EAX
IF M\ 3C DTST
OP2 @ 1+ C@ 10 - J_COD 1 AND XOR TO J_COD
OP3 ToOP0
FALSE -7 ALLOT M\ 3D DTST
EXIT
THEN
 
\ 5 OVER = IF
OP0 @ W@ 4533 = \ XOR EAX , F8 [EBP]
IF
DUP 'DROP XOR
OP3 @ W@ 4589 XOR OR \ MOV FC [EBP] , EAX
OP2 @ W@ 45C7 XOR OR \ MOV F8 [EBP] , # 5
OP1 @ W@ 458B XOR OR \ MOV EAX , FC [EBP]
OP3 @ 2+ C@ OP1 @ 2+ C@ XOR OR
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0=
IF M\ 234 DTST
3D OP2 @ C!
OP2 @ 3 + @ OP2 @ 1+ !
OP2 ToOP0
TRUE -8 ALLOT M\ 235 DTST
EXIT
THEN
THEN
 
TRUE ;
 
: BR-EVEN-EAX OFF-EAX
IF M\ 1002 DTST
SetOP
5 C, OFF-EAX ,
0 TO OFF-EAX
M\ 1003 DTST
THEN
;
 
 
: ?BR-OPT
BEGIN BEGIN M\ -9 DTST
?BR-OPT-RULES
UNTIL M\ -7 DTST
['] NOOP OPT-RULES NIP
UNTIL BR-EVEN-EAX
M\ -5 DTST
\ ZZZZ IF ." B=" DUP U. THEN
OP0 @ :-SET U<
IF SetOP 0xC00B W, \ OR EAX, EAX
EXIT
THEN
OP0 @ C@
\ 00XX.X101
DUP C7 AND 05 <> \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
\ OVER 3D <> AND \ ~ CMP EAX, # X
OVER 40 <> AND \ DEC EAX
OVER 48 <> AND \ INC EAX
OVER 3B <> AND \ CMP
OVER 0B <> AND \ OR
 
NIP
OP0 @ W@
DUP 4000 OR ADD|XOR|OR|AND= INVERT
OVER C01B <> AND \ SBB EAX, EAX
OVER D02B <> AND \ SUB EDX, EAX
OVER 4539 <> AND \ CMP X [EBP], EAX
\ OVER 103B <> AND \ CMP EDX , [EAX]
\ OVER 453B <> AND \ CMP EAX , X [EBP]
\ OVER 053B <> AND \ CMP EAX , X
OVER C083 <> AND \ ADD EAX , # X
OVER C203 <> AND \ ADD EAX , EDX
OVER C133 <> AND \ XOR EAX , ECX
OVER F8C1 <> AND \ SAR EAX , X
OVER 7D83 <> AND \ CMP X [EBP], # Z
OVER 3D81 <> AND \ CMP 44444, # 55555
OVER 3C81 <> AND \ CMP X [EAX*4] , # 55555
OVER 7C81 <> AND \ CMP X [ESP] , # X
OVER 3D83 <> AND \ CMP 44444, # 0
OVER 3C83 <> AND \ CMP [ESP], # 0
\ OVER C20B <> AND \ OR EAX , EDX
NIP
OP0 @ @ FFFFFF AND 240433 XOR \ XOR EAX , [ESP]
AND
AND
IF SetOP 0xC00B W, \ OR EAX, EAX
THEN
\ DP @ TO :-SET
;
 
: ??BR-OPT
OPT? IF OPT_INIT
?BR-OPT
M\ -B DTST
OPT_CLOSE
THEN ;
: ???BR-OPT
OPT? 0= IF C00B W, \ OR EAX, EAX
THEN
FALSE TO ~BR-OPT 'DROP ??BR-OPT INLINE,
TRUE TO ~BR-OPT
OPT?
IF OPT_INIT
OP0 @ W@ C00B = DUP >R IF OP0 OPexcise THEN
['] NOOP ?BR-OPT DROP
\ SetOP 0xC00B W, \ OR EAX, EAX
OP0 @ W@ C00B = R> 0= AND IF OP0 OPexcise THEN
OPT_CLOSE
THEN
;
 
: OPT ( -- ) ['] NOOP DO_OPT DROP ;
 
: FORLIT, ( N -- )
'DUP _INLINE, SetOP 0B8 C, , OPT ;
 
: CON>LIT ( CFA -- CFA TRUE | FALSE )
OPT? 0= IF TRUE EXIT THEN ?SET
MM_SIZE 0= IF TRUE EXIT THEN
DUP C@ 0E8 <> IF TRUE EXIT THEN
 
DUP 1+ REL@ CELL+
DUP CREATE-CODE =
IF DROP OPT_INIT 5 + [>T] FORLIT, FALSE OPT_CLOSE EXIT
THEN
 
DUP USER-CODE =
IF DROP OPT_INIT 'DUP _INLINE,
SetOP 878D W, 5 + @ , OPT FALSE OPT_CLOSE EXIT
THEN
 
DUP USER-VALUE-CODE =
IF DROP OPT_INIT 'DUP _INLINE,
SetOP 878B W, 5 + @ , OPT FALSE OPT_CLOSE EXIT
THEN
 
DUP CONSTANT-CODE =
IF DROP OPT_INIT 5 + DUP 5 + REL@
TOVALUE-CODE CELL- =
IF 'DUP _INLINE, SetOP 0A1 C, [>T] , OPT
ELSE @ FORLIT,
THEN FALSE OPT_CLOSE EXIT
THEN
DUP 1+ REL@ CELL+ DOES-CODE =
IF 5 + \ CFA
SWAP 5 + OPT_INIT FORLIT,
TRUE OPT_CLOSE EXIT
THEN
DUP TOUSER-VALUE-CODE =
IF DROP OPT_INIT
SetOP 8789 W, CELL- @ , OPT
'DROP _INLINE,
FALSE OPT_CLOSE EXIT
THEN
TOVALUE-CODE =
IF OPT_INIT
SetOP A3 C, CELL- [>T] , OPT
'DROP _INLINE,
FALSE OPT_CLOSE EXIT
THEN
TRUE
;
 
: J?_STEP ( ADR OPX -- ADR OPX+4 FALSE | OPX TRUE TRUE | ADR FALSE TRUE )
 
 
OVER J-SET U> 0= IF DROP FALSE TRUE EXIT THEN
OVER DP @ = IF NIP TRUE TRUE EXIT THEN
DUP @ @ FFFFF0FF AND 800F = IF DROP FALSE TRUE EXIT THEN
DUP @ @ 000000E9 = IF DROP FALSE TRUE EXIT THEN
DUP CELL+ OP0 OpBuffSize + U>
IF DROP FALSE TRUE EXIT THEN
2DUP @ = IF NIP CELL+ TRUE TRUE EXIT THEN
CELL+ FALSE
;
 
: J_+!
DUP C@ F0
AND 70 = IF 1+ ELSE
DUP C@ EB = IF 1+ ELSE
DUP C@ E9 = IF 1+ ELSE
DUP W@ F0FF
AND 800F = IF 2+ ELSE
." J_+! ERR" ABORT
THEN THEN THEN THEN +!
;
 
: J_MOVE ( OPX n -- )
OVER OP0 <>
IF
OVER CELL- @
2DUP - NEGATE
OVER DP @ - NEGATE ( U. U. U. ABORT ) CMOVE
OVER OP0
?DO DUP NEGATE I +!
I @ C@ E8 = IF DUP I @ 1+ +! THEN
CELL
+LOOP
THEN
OVER @
JP0 JpBuffSize + JP0
?DO I @
IF DUP I @ U<
IF
OVER NEGATE I +!
DUP I @ J_@ U>
IF OVER I @ J_+!
THEN
ELSE
DUP I @ <>
IF
DUP I @ J_@ U<
IF OVER NEGATE I @ J_+!
THEN
THEN
THEN
THEN CELL
+LOOP DROP
\ THEN
 
NIP NEGATE DUP ALLOT :-SET + TO :-SET EXIT
;
 
TRUE VALUE J_OPT?
 
 
\ FALSE VALUE J_OPT?
 
: RESOLVE_OPT ( ADR -- )
 
OPT? 0= IF DROP EXIT THEN
J_OPT? 0= IF DROP EXIT THEN
 
DUP CELL- JP0 JpBuffSize + CELL- @ U<
IF DUP CELL- REL@ CELL+ J-SET UMAX TO J-SET THEN
 
\ ." J_S" \ BASE @ HEX J-SET U. DP @ U. BASE !
DP @ OVER - 7E > IF ( ." S" ) DROP EXIT THEN
DP @ LAST-HERE <> IF ( ." L" ) ?SET DROP EXIT THEN
OPT? 0= IF DROP EXIT THEN
CELL+ OP0
BEGIN J?_STEP
UNTIL
IF DUP @
DUP C@ E9 =
IF EB SWAP C! 3
ELSE
DUP 1+ W@ 10 - \ 400 +
SWAP W! 4
THEN
\ OVER CELL- @ REST
J_MOVE DP @ TO LAST-HERE EXIT
THEN \ OPX
DROP
 
;
\ 0 TO J_OPT?
 
BASE !
 
 
/programs/develop/SPForth/src/spf_con_io.f
0,0 → 1,41
( Š®­á®«ì­ë© ¢¢®¤-¢ë¢®¤.
Ž‘-­¥§ ¢¨á¨¬ë¥ á«®¢  [®â­®á¨â¥«ì­®...].
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
32 VALUE BL ( -- char ) \ 94
\ char - §­ ç¥­¨¥ ᨬ¢®«  "¯à®¡¥«".
 
: SPACE ( -- ) \ 94
\ ‚뢥á⨠­  íªà ­ ®¤¨­ ¯à®¡¥«.
BL EMIT
;
 
: SPACES ( n -- ) \ 94
\ …᫨ n>0 - ¢ë¢¥á⨠­  ¤¨á¯«¥© n ¯à®¡¥«®¢.
BEGIN
DUP
WHILE
BL EMIT 1-
REPEAT DROP
;
 
VARIABLE PENDING-CHAR \ ª« ¢¨ âãà  ®¤­  -> ¯¥à¥¬¥­­ ï £«®¡ «ì­ ï, ­¥ USER
 
VECT DO-KEY?
 
' NOOP TO DO-KEY?
 
: KEY?
EVENT-CASE DO-KEY?
&KEY @ 0<> ;
 
\ : KEY?
\ 0 ;
 
VECT KEY
 
 
' _KEY TO KEY
 
/programs/develop/SPForth/src/spf_defkern.f
0,0 → 1,114
( à®æ¥¤ãàë ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¤«ï CONSTANT, VARIABLE, etc.
Ž‘-­¥§ ¢¨á¨¬ë¥ á«®¢ .
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
Œ®¤¨ä¨æ¨à®¢ ­­® Œ ªá¨¬®¢ë¬ Œ.Ž.
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
â ¤ {812}105-92-03
â à {812}552-47-64
)
 
Code _CREATE-CODE
SUB EBP, 4
MOV [EBP] , EAX
POP EAX
RET
EndCode
 
Code _CONSTANT-CODE
SUB EBP , 4
MOV [EBP] , EAX
POP EAX
MOV EAX, [EAX]
RET
EndCode
 
Code _USER-CODE
SUB EBP, 4
MOV [EBP], EAX
POP EAX
MOV EAX, [EAX]
ADD EAX, EDI
RET
EndCode
 
Code USER+ ;( offs -- addr )
ADD EAX, EDI
RET
EndCode
 
Code _USER-VALUE-CODE
SUB EBP , 4
MOV [EBP] , EAX
POP EAX
MOV EAX, [EAX]
ADD EAX, EDI
MOV EAX, [EAX]
RET
EndCode
 
 
Code _USER-VECT-CODE
POP EBX
MOV EBX, [EBX]
LEA EBX, [EDI+EBX]
MOV EBX, [EBX]
JMP EBX
RET
EndCode
 
Code _VECT-CODE
POP EBX
JMP [EBX]
EndCode
 
Code _TOVALUE-CODE
POP EBX
SUB EBX, 9
MOV [EBX] , EAX
MOV EAX, [EBP]
ADD EBP, 4
RET
EndCode
 
Code _TOUSER-VALUE-CODE
POP EBX
SUB EBX, 9
MOV EBX, [EBX] ; ᬥ饭¨¥ user-¯¥à¥¬¥­­®©
ADD EBX, EDI
MOV [EBX] , EAX
MOV EAX, [EBP]
ADD EBP, 4
RET
EndCode
 
 
Code _SLITERAL-CODE
SUB EBP, 8
MOV [EBP+4], EAX
POP EBX
MOVZX EAX, BYTE PTR [EBX]
INC EBX
MOV [EBP], EBX
ADD EBX, EAX
; INC EBX
JMP EBX
EndCode
 
Code _CLITERAL-CODE
SUB EBP, 4
MOV [EBP] , EAX
POP EAX
MOVZX EBX, BYTE PTR [EAX]
LEA EBX, [EAX+EBX+1]
JMP EBX
EndCode
 
\EOF
' _CLITERAL-CODE VALUE CLITERAL-CODE
' _CREATE-CODE VALUE CREATE-CODE
' _USER-CODE VALUE USER-CODE
' _CONSTANT-CODE VALUE CONSTANT-CODE
' _TOVALUE-CODE VALUE TOVALUE-CODE
/programs/develop/SPForth/src/spf_except.f
0,0 → 1,83
( óÔÒÕËÔÕÒÉÒÏ×ÁÎÎÁÑ ÏÂÒÁÂÏÔËÁ ÉÓËÌÀÞÅÎÉÊ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ 16-ÒÁÚÒÑÄÎÏÇÏ × 32-ÒÁÚÒÑÄÎÙÊ ËÏÄ - 1995-96ÇÇ
òÅ×ÉÚÉÑ - ÓÅÎÔÑÂÒØ 1999
)
 
' NOOP ->VECT FATAL-HANDLER
\ ÅÓÌÉ × ÒÅÚÕÌØÔÁÔÅ ÓÂÏÅ× ÐÏ×ÒÅÄÉÌÏÓØ ÉÓÈÏÄÎÏÅ ÚÎÁÞÅÎÉÅ HANDLER,
\ ÕÓÔÁÎÏ×ÌÅÎÎÏÅ ÐÒÉ ×ÈÏÄÅ × ÐÏÔÏË/ÚÁÄÁÞÕ ÉÌÉ ÐÏÚÄÎÅÅ,
\ ÔÏ ×ÙÐÏÌÎÉÔÓÑ ÜÔÏÔ ÏÂÒÁÂÏÔÞÉË FATAL-HANDLER
 
: (THROW)
\ áÎÁÌÏÇ THROW ÎÏ × ÓÌÕÞÁÅ 0 ÐÏÓÌÅÄÎÉÊ ÎÅ ÕÂÉÒÁÅÔÓÑ ÓÏ ÓÔÅËÁ
\ äÌÑ ÏÐÔÉÍÉÚÁÔÏÒÁ.
DUP
IF
DUP 109 = IF DROP EXIT THEN \ broken pipe - ÏÂÙÞÎÏ ÎÅ ÏÛÉÂËÁ, Á ËÏÎÅà ×ÈÏÄÎÏÇÏ ÐÏÔÏËÁ × CGI
HANDLER @
DUP
IF RP!
R> HANDLER !
R> SWAP >R
SP! DROP R>
ELSE DROP FATAL-HANDLER THEN
THEN
;
 
: THROW
\ åÓÌÉ ÌÀÂÙÅ ÂÉÔÙ n ÎÅÎÕÌÅ×ÙÅ, ×ÚÑÔØ ×ÅÒÈÎÉÊ ËÁÄÒ ÉÓËÌÀÞÅÎÉÊ ÓÏ ÓÔÅËÁ
\ ÉÓËÌÀÞÅÎÉÊ, ×ËÌÀÞÁÑ ×ÓÅ ÎÁ ÓÔÅËÅ ×ÏÚ×ÒÁÔÏ× ÎÁÄ ÜÔÉÍ ËÁÄÒÏÍ. úÁÔÅÍ
\ ×ÏÓÓÔÁÎÏ×ÉÔØ ÓÐÅÃÉÆÉËÁÃÉÉ ×ÈÏÄÎÏÇÏ ÐÏÔÏËÁ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÐÅÒÅÄ
\ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ CATCH, É ÕÓÔÁÎÏ×ÉÔØ ÇÌÕÂÉÎÙ ×ÓÅÈ ÓÔÅËÏ×, ÏÐÒÅÄÅÌÅÎÎÙÈ
\ × ÜÔÏÍ óÔÁÎÄÁÒÔÅ, × ÔÏ ÓÏÓÔÏÑÎÉÅ, ËÏÔÏÒÏÅ ÂÙÌÏ ÓÏÈÒÁÎÅÎÏ × ËÁÄÒÅ
\ ÉÓËÌÀÞÅÎÉÊ (i - ÜÔÏ ÔÏ ÖÅ ÞÉÓÌÏ, ÞÔÏ É i ×Ï ×ÈÏÄÎÙÈ ÁÒÇÕÍÅÎÔÁÈ
\ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ CATCH), ÐÏÌÏÖÉÔØ n ÎÁ ×ÅÒÛÉÎÕ ÓÔÅËÁ ÄÁÎÎÙÈ É ÐÅÒÅÄÁÔØ
\ ÕÐÒÁ×ÌÅÎÉÅ × ÔÏÞËÕ ÓÒÁÚÕ ÐÏÓÌÅ CATCH, ËÏÔÏÒÏÅ ÐÏÌÏÖÉÌÏ ÜÔÏÔ ËÁÄÒ
\ ÉÓËÌÀÞÅÎÉÊ.
\ åÓÌÉ ×ÅÒÛÉÎÁ ÓÔÅËÁ ÎÅ ÎÏÌØ, É ÎÁ ÓÔÅËÅ ÉÓËÌÀÞÅÎÉÊ ÅÓÔØ ËÁÄÒ
\ ÉÓËÌÀÞÅÎÉÊ, ÔÏ ÐÏ×ÅÄÅÎÉÅ ÓÌÅÄÕÀÝÅÅ:
\ åÓÌÉ n=-1, ×ÙÐÏÌÎÉÔØ ÆÕÎËÃÉÀ ABORT (×ÅÒÓÉÀ ABORT ÉÚ ÓÌÏ× CORE),
\ ÎÅ ×Ù×ÏÄÑ ÓÏÏÂÝÅÎÉÊ.
\ åÓÌÉ n=-2, ×ÙÐÏÌÎÉÔØ ÆÕÎËÃÉÀ ABORT" (×ÅÒÓÉÀ ABORT" ÉÚ ÓÌÏ× CORE),
\ ×Ù×ÏÄÑ ÓÉÍ×ÏÌÙ ccc, ÁÓÓÏÃÉÉÒÏ×ÁÎÎÙÅ Ó ABORT", ÇÅÎÅÒÉÒÕÀÝÉÍ THROW.
\ éÎÁÞÅ ÓÉÓÔÅÍÁ ÍÏÖÅÔ ×Ù×ÅÓÔÉ ÎÁ ÄÉÓÐÌÅÊ ÚÁ×ÉÓÑÝÅÅ ÏÔ ÒÅÁÌÉÚÁÃÉÉ
\ ÓÏÏÂÝÅÎÉÅ Ï ÕÓÌÏ×ÉÉ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍ THROW Ó ËÏÄÏÍ n. úÁÔÅÍ
\ ÓÉÓÔÅÍÁ ×ÙÐÏÌÎÉÔ ÆÕÎËÃÉÀ ABORT (×ÅÒÓÉÀ ABORT ÉÚ CORE).
?DUP
IF HANDLER @
?DUP
IF RP!
R> HANDLER !
R> SWAP >R
SP! DROP R>
ELSE FATAL-HANDLER THEN
THEN
;
 
VECT <SET-EXC-HANDLER> \ ÕÓÔÁÎÏ×ÉÔØ ÏÂÒÁÂÏÔÞÉË ÁÐÐÁÒÁÔÎÙÈ ÉÓËÌÀÞÅÎÉÊ
 
: CATCH ( i*x xt -- j*x 0 | i*x n ) \ 94 EXCEPTION
\ ðÏÌÏÖÉÔØ ÎÁ ÓÔÅË ÉÓËÌÀÞÅÎÉÊ ËÁÄÒ ÐÅÒÅÈ×ÁÔÁ ÉÓËÌÀÞÉÔÅÌØÎÙÈ ÓÉÔÕÁÃÉÊ
\ É ×ÙÐÏÌÎÉÔØ ÔÏËÅÎ xt (ËÁË ÐÏ EXECUTE) ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÞÔÏÂÙ ÕÐÒÁ×ÌÅÎÉÅ
\ ÍÏÇÌÏ ÂÙÔØ ÐÅÒÅÄÁÎÏ × ÔÏÞËÕ ÓÒÁÚÕ ÐÏÓÌÅ CATCH, ÅÓÌÉ ×Ï ×ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ
\ xt ×ÙÐÏÌÎÑÅÔÓÑ THROW.
\ åÓÌÉ ×ÙÐÏÌÎÅÎÉÅ xt ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÏÒÍÁÌØÎÏ (Ô.Å. ËÁÄÒ ÉÓËÌÀÞÅÎÉÊ,
\ ÐÏÌÏÖÅÎÎÙÊ ÎÁ ÓÔÅË ÓÌÏ×ÏÍ CATCH ÎÅ ÂÙÌ ×ÚÑÔ ×ÙÐÏÌÎÅÎÉÅÍ THROW),
\ ×ÚÑÔØ ËÁÄÒ ÉÓËÌÀÞÅÎÉÊ É ×ÅÒÎÕÔØ ÎÏÌØ ÎÁ ×ÅÒÛÉÎÕ ÓÔÅËÁ ÄÁÎÎÙÈ,
\ ÏÓÔÁÌØÎÙÅ ÜÌÅÍÅÎÔÙ ÓÔÅËÁ ×ÏÚ×ÒÁÝÁÀÔÓÑ xt EXECUTE. éÎÁÞÅ ÏÓÔÁÔÏË
\ ÓÅÍÁÎÔÉËÉ ×ÙÐÏÌÎÅÎÉÑ ÄÁÅÔÓÑ THROW.
\ <SET-EXC-HANDLER>
SP@ >R HANDLER @ >R
RP@ HANDLER !
EXECUTE
R> HANDLER !
RDROP
0
;
: ABORT \ 94 EXCEPTION EXT
\ òÁÓÛÉÒÉÔØ ÓÅÍÁÔÉËÕ CORE ABORT ÞÔÏÂÙ ÂÙÌÏ:
( i*x -- ) ( R: j*x -- )
\ ÷ÙÐÏÌÎÉÔØ ÆÕÎËÃÉÀ -1 THROW
-1 THROW
;
/programs/develop/SPForth/src/spf_forthproc.f
0,0 → 1,1384
( Žá­®¢­ë¥ ­¨§ª®ã஢­¥¢ë¥ á«®¢  "ä®àâ-¯à®æ¥áá®à "
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
( ¥ «¨§ æ¨ï ¤«ï ¯®¤¯à®£à ¬¬­®£® è¨â®£® ª®¤ .
ESP - 㪠§ â¥«ì á⥪  ¢®§¢à â®¢
EBP - 㪠§ â¥«ì á⥪  ¤ ­­ëå
EDI - á®åà ­ï¥¬ë© à¥£¨áâà [㪠§ â¥«ì ¤ ­­ëå ¯®â®ª  ¢ SPF]
)
 
HEX
 
\ ================================================================
\ ‘⥪®¢ë¥ ¬ ­¨¯ã«ï樨
 
?HS
 
Code DUP ;( x -- x x ) \ 94
; à®¤ã¡«¨à®¢ âì x.
LEA EBP, [EBP-4]
mov [ebp],eax
RET
EndCode
 
 
\ ' DUP TO 'DUP_V
 
Code ?DUP ;( x -- 0 | x x ) \ 94
; à®¤ã¡«¨à®¢ âì x, ¥á«¨ ­¥ ­®«ì.
OR EAX, EAX
JNZ { ' DUP }
RET
EndCode
 
Code 2DUP ;( x1 x2 -- x1 x2 x1 x2 ) \ 94
; à®¤ã¡«¨à®¢ âì ¯ àã ï祥ª x1 x2.
MOV EDX, [EBP]
MOV [EBP-4], EAX
MOV [EBP-8], EDX
LEA EBP, [EBP-8]
RET
EndCode
 
Code DROP ;( x -- ) \ 94
; “¡à âì x á® á⥪ .
mov eax,[ebp]
LEA EBP, [EBP+4]
RET
EndCode
 
\ ' DROP TO 'DROP_V
 
Code MAX ;( n1 n2 -- n3 ) \ 94
; n3 - ¡®«ì襥 ¨§ n1 ¨ n2.
CMP EAX, [EBP]
JL { ' DROP }
LEA EBP, [EBP+4]
RET
EndCode
 
Code MIN ;( n1 n2 -- n3 ) \ 94
; n3 - ¬¥­ì襥 ¨§ n1 ¨ n2.
CMP EAX, [EBP]
JG { ' DROP }
LEA EBP, [EBP+4]
RET
EndCode
 
Code UMAX ;( u1 u2 -- n3 ) \ RETurn the lesser of unsigned u1 and
; unsigned u2
CMP EAX, [EBP]
JB { ' DROP }
LEA EBP, [EBP+4]
RET
EndCode
 
Code UMIN ;( u1 u2 -- n3 ) \ RETurn the lesser of unsigned u1 and
; unsigned u2
CMP EAX, [EBP]
JA { ' DROP }
LEA EBP, [EBP+4]
RET
EndCode
 
Code 2DROP ;( x1 x2 -- ) \ 94
; “¡à âì á® á⥪  ¯ àã ï祥ª x1 x2.
MOV EAX , [EBP+4]
ADD EBP , 8
RET
EndCode
 
Code SWAP ;( x1 x2 -- x2 x1 ) \ 94
; ¯®¬¥­ïâì ¬¥áâ ¬¨ ¤¢  ¢¥àå­¨å í«¥¬¥­â  á⥪ 
; XCHG EAX { EBP }
MOV EDX, [EBP]
MOV [EBP], EAX
MOV EAX, EDX
RET
EndCode
 
Code 2SWAP ;( x1 x2 x3 x4 -- x3 x4 x1 x2 ) \ 94
; ®¬¥­ïâì ¬¥áâ ¬¨ ¤¢¥ ¢¥àå­¨¥ ¯ àë ï祥ª.
MOV ECX, [EBP]
MOV EBX, [EBP+4]
MOV EDX, [EBP+8]
MOV [EBP+8], ECX
MOV [EBP+4], EAX
MOV [EBP], EDX
MOV EAX, EBX
RET
EndCode
 
Code OVER ;( x1 x2 -- x1 x2 x1 ) \ 94
; ®«®¦¨âì ª®¯¨î x1 ­  ¢¥à設ã á⥪ .
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, [EBP+4]
RET
EndCode
 
Code 2OVER ;( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 ) \ 94
; Š®¯¨à®¢ âì ¯ àã ï祥ª x1 x2 ­  ¢¥à設ã á⥪ .
MOV EDX, [EBP+8]
MOV [EBP-4], EAX
MOV [EBP-8], EDX
MOV EAX, [EBP+4]
LEA EBP, [EBP-8]
RET
EndCode
 
Code NIP ;( x1 x2 -- x2 ) \ 94 CORE EXT
; “¡à âì ¯¥à¢ë© í«¥¬¥­â ¯®¤ ¢¥à設®© á⥪ .
ADD EBP, 4
RET
EndCode
 
Code ROT ;( x1 x2 x3 -- x2 x3 x1 ) \ 94
; à®ªàãâ¨âì âਠ¢¥àå­¨å í«¥¬¥­â  á⥪ .
; XCHG EAX [EBP]
; XCHG EAX 4 [EBP]
MOV EDX, [EBP]
MOV [EBP], EAX
MOV EAX, [EBP+4]
MOV [EBP+4], EDX
RET
EndCode
 
 
Code -ROT ;( x1 x2 x3 -- x3 x1 x2 ) ; !!!!!
; Ž¡à â­®¥ ROT
MOV EDX, [EBP+4]
MOV [EBP+4], EAX
MOV EAX, [EBP]
MOV [EBP], EDX
RET
EndCode
 
Code PICK ;( ... +n -- ... w ) \ Copy the nth stack item to tos.
MOV EAX, [EBP + EAX*4 ]
RET
EndCode
 
Code ROLL ;( xu xu-1 ... x0 u -- xu-1 ... x0 xu ) \ 94 CORE EXT
; “¡à âì u. ®¢¥à­ãâì u+1 í«¥¬¥­â ­  ¢¥à設¥ á⥪ .
; ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯¥à¥¤ ¢ë¯®«­¥­¨¥¬ ROLL
; ­  á⥪¥ ¬¥­ìè¥ ç¥¬ u+2 í«¥¬¥­â®¢.
OR EAX, EAX
JZ SHORT LL1
MOV ECX, EAX
LEA EAX, [EAX*4]
MOV EDX, EBP
ADD EDX, EAX
MOV EBX, [EDX]
LL2: LEA EDX, [EDX-4]
MOV EAX, [EDX]
MOV [EDX+4], EAX
DEC ECX
JNZ SHORT LL2
MOV EAX, EBX
JMP SHORT LL3
LL1: MOV EAX, [EBP]
LL3: LEA EBP, [EBP+4]
RET
EndCode
 
Code TUCK ;( x1 x2 -- x2 x1 x2 ) \ 94
LEA EBP, [EBP-4]
MOV EDX, [EBP+4]
MOV [EBP], EDX
MOV [EBP+4], EAX
RET
EndCode
 
\ ================================================================
\ ‘⥪ ¢®§¢à â®¢
 
Code 2>R ; 94 CORE EXT
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
; ‚믮«­¥­¨¥: ;( x1 x2 -- ) ;( R: -- x1 x2 )
; ¥à¥­¥á⨠¯ àã ï祥ª x1 x2 ­  á⥪ ¢®§¢à â®¢. ‘¥¬ ­â¨ç¥áª¨
; íª¢¨¢ «¥­â­® SWAP >R >R.
POP EBX
PUSH DWORD PTR [EBP]
PUSH EAX
LEA EBP, [EBP+8]
MOV EAX, [EBP-4]
JMP EBX
EndCode
 
Code 2R> ; 94 CORE EXT
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
; ‚믮«­¥­¨¥: ;( -- x1 x2 ) ;( R: x1 x2 -- )
; ¥à¥­¥á⨠¯ àã ï祥ª x1 x2 á® á⥪  ¢®§¢à â®¢. ‘¥¬ ­â¨ç¥áª¨
; íª¢¨¢ «¥­â­® R> R> SWAP. \ !!!!
LEA EBP, [EBP-8]
POP EBX
MOV [EBP+4], EAX
POP EAX
POP DWORD PTR [EBP]
PUSH EBX
RET
EndCode
 
Code R@ ; 94
; ˆá¯®«­¥­¨¥: ;( -- x ) ;( R: x -- x )
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ¢ ०¨¬¥ ¨­â¥à¯à¥â æ¨¨ ­¥®¯à¥¤¥«¥­ .
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, [ESP + 4 ]
RET
EndCode
 
Code 2R@ ; 94 CORE EXT
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
; ‚믮«­¥­¨¥: ;( -- x1 x2 ) ;( R: x1 x2 -- x1 x2 )
; Š®¯¨à®¢ âì ¯ àã ï祥ª x1 x2 á® á⥪  ¢®§¢à â®¢. ‘¥¬ ­â¨ç¥áª¨
; íª¢¨¢ «¥­â­® R> R> 2DUP >R >R SWAP.
LEA EBP, [EBP-8]
MOV [EBP+4], EAX
MOV EAX, [ESP + { 2 CELLS } ]
MOV DWORD PTR [EBP], EAX
MOV EAX, [ESP + 4 ]
RET
EndCode
 
\ ================================================================
\ Ž¯¥à æ¨¨ á ¯ ¬ïâìî
 
Code @ ;( a-addr -- x ) \ 94
; x - §­ ç¥­¨¥ ¯®  ¤à¥áã a-addr.
MOV EAX, [EAX ]
RET
EndCode
 
Code ! ;( x a-addr -- ) \ 94
; ‡ ¯¨á âì x ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
MOV DWORD PTR [EAX ], EDX
MOV EAX , [EBP+4]
ADD EBP , 8
RET
EndCode
 
Code C@ ;( c-addr -- char ) \ 94
; ®«ãç¨âì ᨬ¢®« ¯®  ¤à¥áã c-addr. ¥§­ ç é¨¥ áâ à訥 ¡¨âë ï祩ª¨ ­ã«¥¢ë¥.
MOVZX EAX, BYTE PTR [EAX ]
RET
EndCode
 
Code C! ;( char c-addr -- ) \ 94
; ‡ ¯¨á âì char ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
MOV BYTE PTR [EAX ], DL
MOV EAX , [EBP+4]
ADD EBP , 8
RET
EndCode
 
Code W@ ;( c-addr -- word )
; ®«ãç¨âì word ¯®  ¤à¥áã c-addr. ¥§­ ç é¨¥ áâ à訥 ¡¨âë ï祩ª¨ ­ã«¥¢ë¥.
MOVZX EAX, WORD PTR [EAX ]
RET
EndCode
 
Code W! ;( word c-addr -- )
; ‡ ¯¨á âì word ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
MOV WORD PTR [EAX ], DX
MOV EAX , [EBP+4]
ADD EBP , 8
RET
EndCode
 
Code 2@ ;( a-addr -- x1 x2 ) \ 94
; ®«ãç¨âì ¯ àã ï祥ª x1 x2, § ¯¨á ­­ãî ¯®  ¤à¥áã a-addr.
; x2 ¯®  ¤à¥áã a-addr, x1 ¢ á«¥¤ãî饩 ï祩ª¥.
;  ¢­®á¨«ì­® DUP CELL+ @ SWAP @
MOV EDX, [EAX + 4 ]
LEA EBP, [EBP-4]
MOV DWORD PTR [EBP], EDX
MOV EAX, DWORD PTR [EAX ]
RET
EndCode
 
Code 2! ;( x1 x2 a-addr -- ) \ 94
; ‡ ¯¨á âì ¯ àã ï祥ª x1 x2 ¯®  ¤à¥áã a-addr,
; x2 ¯®  ¤à¥áã a-addr, x1 ¢ á«¥¤ãîéãî ï祩ªã.
;  ¢­®á¨«ì­® SWAP OVER ! CELL+ !
MOV EDX, [EBP]
MOV [EAX], EDX
MOV EDX, [EBP+4]
MOV [EAX+4], EDX
LEA EBP, [EBP+0CH]
MOV EAX, [EBP-4]
RET
EndCode
 
Code D@ ;( a-addr -- x1 x2 )
; 2@ SWAP
MOV EDX, [EAX]
LEA EBP, [EBP-4]
MOV DWORD PTR [EBP], EDX
MOV EAX, DWORD PTR [EAX+4]
RET
EndCode
 
Code D! ;( x1 x2 a-addr -- )
; >R SWAP R> 2!
MOV EDX, [EBP]
MOV [EAX+4], EDX
MOV EDX, [EBP+4]
MOV [EAX], EDX
LEA EBP, [EBP+0CH]
MOV EAX, [EBP-4]
RET
EndCode
 
 
Code EBX@ ;( -- EBX )
LEA EBP, [EBP-4]
mov [ebp],eax
MOV EAX,EBX
RET
EndCode
 
\ ================================================================
\ ‚ëç¨á«¥­¨ï
 
Code 1+ ;( n1|u1 -- n2|u2 ) \ 94
; à¨¡ ¢¨âì 1 ª n1|u1 ¨ ¯®«ãç¨âì á㬬ã u2|n2.
LEA EAX, [EAX+1]
RET
EndCode
 
Code 1- ;( n1|u1 -- n2|u2 ) \ 94
; ‚ëç¥áâì 1 ¨§ n1|u1 ¨ ¯®«ãç¨âì à §­®áâì n2|u2.
LEA EAX, [EAX-1]
RET
EndCode
 
Code 2+ ;( W -> W+2 )
LEA EAX, [EAX+2]
RET
EndCode
 
Code 2- ;( W -> W-2 )
LEA EAX, [EAX-2]
RET
EndCode
 
Code 2* ;( x1 -- x2 ) \ 94
; x2 - १ã«ìâ â ᤢ¨£  x1 ­  ®¤¨­ ¡¨â ¢«¥¢®, á § ¯®«­¥­¨¥¬
; ­ ¨¬¥­¥¥ §­ ç¨¬®£® ¡¨â  ­ã«¥¬.
; SHL EAX
; LEA EAX, [EAX+EAX]
LEA EAX, [EAX*2]
RET
EndCode
 
Code CELL+ ;( a-addr1 -- a-addr2 ) \ 94
; ‚ëç¥áâì à §¬¥à ï祩ª¨ ª a-addr1 ¨ ¯®«ãç¨âì a-addr2.
LEA EAX, [EAX+4]
RET
EndCode
 
Code CELL- ;( a-addr1 -- a-addr2 ) \ 94
; ‚ëç¥áâì à §¬¥à ï祩ª¨ ª a-addr1 ¨ ¯®«ãç¨âì a-addr2.
LEA EAX, [EAX-4]
RET
EndCode
 
Code CELLS ;( n1 -- n2 ) \ 94
; n2 - à §¬¥à n1 ï祥ª.
LEA EAX, DWORD PTR [EAX *4 ]
RET
EndCode
 
 
Code + ;( n1|u1 n2|u2 -- n3|u3 ) \ 94
; ‘«®¦¨âì n1|u1 ¨ n2|u2 ¨ ¯®«ãç¨âì á㬬ã n3|u3.
ADD EAX, DWORD PTR [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code D+ ;( d1|ud1 d2|ud2 -- d3|ud3 ) \ 94 DOUBLE
; ‘«®¦¨âì d1|ud1 ¨ d2|ud2 ¨ ¤ âì á㬬ã d3|ud3.
MOV EDX, DWORD PTR [EBP]
ADD DWORD PTR [EBP + { 2 CELLS } ], EDX
ADC EAX, DWORD PTR [EBP +4 ]
LEA EBP, [EBP+8]
RET
EndCode
 
Code D- ;( d1 d2 -- d3 ) \ 94 DOUBLE
; perform a double subtract (64bit)
MOV EDX, DWORD PTR [EBP]
SUB DWORD PTR [EBP + { 2 CELLS } ], EDX
SBB [EBP+4], EAX
MOV EAX, DWORD PTR [EBP +4 ]
LEA EBP, [EBP+8]
RET
EndCode
Code - ;( n1|u1 n2|u2 -- n3|u3 ) \ 94
; ‚ëç¥áâì n2|u2 ¨§ n1|u1 ¨ ¯®«ãç¨âì à §­®áâì n3|u3.
NEG EAX
ADD EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code 1+! ;( A -> )
INC DWORD PTR [EAX ]
MOV EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code 0! ;( A -> )
MOV DWORD PTR [EAX ], 0
MOV EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code COUNT ;( c-addr1 -- c-addr2 u ) \ 94
; ®«ãç¨âì áâபã ᨬ¢®«®¢ ¨§ áâப¨ á® áç¥â稪®¬ c-addr1.
; c-addr2 -  ¤à¥á ¯¥à¢®£® ᨬ¢®«  §  c-addr1.
; u - ᮤ¥à¦¨¬®¥ ¡ ©â  c-addr1, ïî饥áï ¤«¨­®© áâப¨ ᨬ¢®«®¢,
; ­ ç¨­ î饩áï á  ¤à¥á  c-addr2.
LEA EBP, [EBP-4]
LEA EDX, DWORD PTR [EAX +1 ]
MOV DWORD PTR [EBP], EDX
MOVZX EAX, BYTE PTR [EAX ]
RET
EndCode
 
Code * ;( n1|u1 n2|u2 -- n3|u3 ) \ 94
; ¥à¥¬­®¦¨âì n1|u1 ¨ n2|u2 ¨ ¯®«ãç¨âì ¯à®¨§¢¥¤¥­¨¥ n3|u3.
IMUL DWORD PTR [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code AND ;( x1 x2 -- x3 ) \ 94
; x3 - ¯®¡¨â®¢®¥ "ˆ" x1 ¨ x2.
AND EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code OR ;( x1 x2 -- x3 ) \ 94
; x3 - ¯®¡¨â®¢®¥ "ˆ‹ˆ" x1 ¨ x2.
OR EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code XOR ;( x1 x2 -- x3 ) \ 94
; x3 - ¯®¡¨â®¢®¥ "¨áª«îç î饥 ˆ‹ˆ" x1 ¨ x2.
XOR EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code INVERT ;( x1 -- x2 ) \ 94
; ˆ­¢¥àâ¨à®¢ âì ¢á¥ ¡¨âë x1 ¨ ¯®«ãç¨âì «®£¨ç¥áªãî ¨­¢¥àá¨î x2.
NOT EAX
RET
EndCode
 
Code NEGATE ;( n1 -- n2 ) \ 94
; n2 -  à¨ä¬¥â¨ç¥áª ï ¨­¢¥àá¨ï n1.
NEG EAX
RET
EndCode
 
Code ABS ;( n -- u ) \ 94
; u -  ¡á®«îâ­ ï ¢¥«¨ç¨­  n.
TEST EAX, EAX
JS { ' NEGATE }
RET
EndCode
 
Code DNEGATE ;( d1 -- d2 ) \ 94 DOUBLE
; d2 १ã«ìâ â ¢ëç¨â ­¨ï d1 ¨§ ­ã«ï.
MOV EDX, [EBP]
NEG EAX
NEG EDX
SBB EAX, 0
MOV DWORD PTR [EBP], EDX
RET
EndCode
 
Code NOOP ;( -> )
RET
EndCode
 
Code S>D ;( n -- d ) \ 94
; à¥®¡à §®¢ âì ç¨á«® n ¢ ¤¢®©­®¥ ç¨á«® d á ⥬ ¦¥ ç¨á«®¢ë¬ §­ ç¥­¨¥¬.
LEA EBP, [EBP-4]
MOV [EBP], EAX
CDQ
MOV EAX, EDX
RET
EndCode
 
Code D>S ;( d -- n ) \ 94 DOUBLE
; n - íª¢¨¢ «¥­â d.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ d ­ å®¤¨âáï ¢­¥ ¤¨ ¯ §®­ 
; §­ ª®¢ëå ®¤¨­ à­ëå ç¨á¥«.
MOV EAX, [EBP]
ADD EBP, 4
RET
EndCode
 
Code U>D ;( U -> D ) \ à áè¨à¨âì ç¨á«® ¤® ¤¢®©­®© â®ç­®á⨠­ã«¥¬
LEA EBP, [EBP-4]
MOV [EBP], EAX
XOR EAX, EAX
RET
EndCode
 
Code C>S ;( c -- n ) \ à áè¨à¨âì CHAR
MOVSX EAX, AL
RET
EndCode
 
Code UM* ;( u1 u2 -- ud ) \ 94
; ud - ¯à®¨§¢¥¤¥­¨¥ u1 ¨ u2. ‚ᥠ§­ ç¥­¨ï ¨  à¨ä¬¥â¨ª  ¡¥§§­ ª®¢ë¥.
MUL DWORD PTR [EBP]
MOV [EBP], EAX
MOV EAX, EDX
RET
EndCode
 
Code / ;( n1 n2 -- n3 ) \ 94
; „¥«¨âì n1 ­  n2, ¯®«ãç¨âì ç áâ­®¥ n3.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n2 à ¢¥­ ­ã«î.
; …᫨ n1 ¨ n2 à §«¨ç îâáï ¯® §­ ªã - ¢®§¢à é ¥¬ë© १ã«ìâ â § ¢¨á¨â ®â
; ॠ«¨§ æ¨¨.
MOV ECX, EAX
MOV EAX, [EBP]
CDQ
IDIV ECX
LEA EBP, [EBP+4]
RET
EndCode
 
Code U/ ;( W1, W2 -> W3 ) \ ¡¥§§­ ª®¢®¥ ¤¥«¥­¨¥ W1 ­  W2
MOV ECX, EAX
MOV EAX, [EBP]
XOR EDX, EDX
LEA EBP, [EBP+4]
DIV ECX
RET
EndCode
 
Code +! ;( n|u a-addr -- ) \ 94 \ !!!!!
; à¨¡ ¢¨âì n|u ª ®¤¨­ à­®¬ã ç¨á«ã ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
ADD DWORD PTR [EAX ], EDX
MOV EAX, [EBP+4]
LEA EBP, [EBP+8]
RET
EndCode
 
Code MOD ;( n1 n2 -- n3 ) \ 94
; „¥«¨âì n1 ­  n2, ¯®«ãç¨âì ®áâ â®ª n3.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n2 à ¢¥­ ­ã«î.
; …᫨ n1 ¨ n2 à §«¨ç îâáï ¯® §­ ªã - ¢®§¢à é ¥¬ë© १ã«ìâ â § ¢¨á¨â ®â
; ॠ«¨§ æ¨¨.
MOV ECX, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
CDQ
IDIV ECX
MOV EAX, EDX
RET
EndCode
 
Code /MOD ;( n1 n2 -- n3 n4 ) \ 94
; „¥«¨âì n1 ­  n2, ¤ âì ®áâ â®ª n3 ¨ ç áâ­®¥ n4.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n2 ­ã«ì.
MOV ECX, EAX
MOV EAX, [EBP]
CDQ
IDIV ECX
MOV [EBP], EDX
RET
EndCode
 
Code UMOD ;( W1, W2 -> W3 ) \ ®áâ â®ª ®â ¤¥«¥­¨ï W1 ­  W2
MOV ECX, EAX
XOR EDX, EDX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
DIV ECX
MOV EAX, EDX
RET
EndCode
 
Code UM/MOD ;( ud u1 -- u2 u3 ) \ 94
; „¥«¨âì ud ­  u1, ¯®«ãç¨âì ç áâ­®¥ u3 ¨ ®áâ â®ª u2.
; ‚ᥠ§­ ç¥­¨ï ¨  à¨ä¬¥â¨ª  ¡¥§§­ ª®¢ë¥.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ u1 ­®«ì ¨«¨ ç áâ­®¥
; ­ å®¤¨âáï ¢­¥ ¤¨ ¯ §®­  ®¤¨­ à­ëå ¡¥§§­ ª®¢ëå ç¨á¥«.
MOV ECX, EAX
MOV EDX, [EBP]
MOV EAX, [EBP+4]
DIV ECX
LEA EBP, [EBP+4]
MOV [EBP], EDX
 
RET
EndCode
 
Code 2/ ;( x1 -- x2 ) \ 94
; x2 - १ã«ìâ â ᤢ¨£  x1 ­  ®¤¨­ ¡¨â ¢¯à ¢® ¡¥§ ¨§¬¥­¥­¨ï áâ à襣® ¡¨â .
SAR EAX,1
RET
EndCode
 
Code */MOD ;( n1 n2 n3 -- n4 n5 ) \ 94
; “¬­®¦¨âì n1 ­  n2, ¯®«ãç¨âì ¯à®¬¥¦ãâ®ç­ë© ¤¢®©­®© १ã«ìâ â d.
;  §¤¥«¨âì d ­  n3, ¯®«ãç¨âì ®áâ â®ª n4 ¨ ç áâ­®¥ n5.
MOV EBX, EAX
MOV EAX, [EBP]
MOV ECX, [EBP+4]
IMUL ECX
IDIV EBX
MOV [EBP+4], EDX
LEA EBP, [EBP+4]
RET
EndCode
 
Code M* ;( n1 n2 -- d ) \ 94
; d - §­ ª®¢ë© १ã«ìâ â 㬭®¦¥­¨ï n1 ­  n2.
IMUL DWORD PTR [EBP]
MOV [EBP], EAX
MOV EAX, EDX
RET
EndCode
 
Code LSHIFT ;( x1 u -- x2 ) ; 94
; ‘¤¢¨­ãâì x1 ­  u ¡¨â ¢«¥¢®. ®¬¥áâ¨âì ­ã«¨ ¢ ­ ¨¬¥­¥¥ §­ ç¨¬ë¥ ¡¨âë,
; ®á¢®¡®¦¤ ¥¬ë¥ ¯à¨ ᤢ¨£¥.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ u ¡®«ìè¥ ¨«¨ à ¢­®
; ç¨á«ã ¡¨â ¢ ï祩ª¥.
MOV ECX, EAX
MOV EAX, [EBP]
SHL EAX, CL
LEA EBP, [EBP+4]
RET
EndCode
 
Code RSHIFT ;( x1 u -- x2 ) \ 94
; ‘¤¢¨­ãâì x1 ­  u ¡¨â ¢¯à ¢®. ®¬¥áâ¨âì ­ã«¨ ¢ ­ ¨¡®«¥¥ §­ ç¨¬ë¥ ¡¨âë,
; ®á¢®¡®¦¤ ¥¬ë¥ ¯à¨ ᤢ¨£¥.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ u ¡®«ìè¥ ¨«¨ à ¢­®
; ç¨á«ã ¡¨â ¢ ï祩ª¥.
MOV ECX, EAX
MOV EAX, [EBP]
SHR EAX, CL
LEA EBP, [EBP+4]
RET
EndCode
 
Code SM/REM ;( d1 n1 -- n2 n3 ) \ 94
;  §¤¥«¨âì d1 ­  n1, ¯®«ãç¨âì ᨬ¬¥âà¨ç­®¥ ç áâ­®¥ n3 ¨ ®áâ â®ª n2.
; ‚室­ë¥ ¨ ¢ë室­ë¥  à£ã¬¥­âë §­ ª®¢ë¥.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n1 ­®«ì, ¨«¨ ç áâ­®¥ ¢­¥
; ¤¨ ¯ §®­  ®¤¨­ à­ëå §­ ª®¢ëå ç¨á¥«.
MOV EBX, EAX
MOV EDX, [EBP]
MOV EAX, [EBP+4]
IDIV EBX
LEA EBP, [EBP+4]
MOV [EBP], EDX
RET
EndCode
 
Code FM/MOD ;( d1 n1 -- n2 n3 ) \ 94
; Ðàçäåëèòü d1 íà n1, ïîëó÷èòü ÷àñòíîå n3 è îñòàòîê n2.
; Âõîäíûå è âûõîäíûå àðãóìåíòû çíàêîâûå.
; Íåîäíîçíà÷íàÿ ñèòóàöèÿ âîçíèêàåò, åñëè n1 íîëü, èëè ÷àñòíîå âíå
; äèàïàçîíà îäèíàðíûõ çíàêîâûõ ÷èñåë.
MOV ECX, EAX
MOV EDX, [EBP]
MOV EBX, EDX
MOV EAX, [EBP+4]
IDIV ECX
TEST EDX, EDX ; Îñòàòîê-òî åñòü?
JZ SHORT @@1
XOR EBX, ECX ; À àðãóìåíòû ðàçíîãî çíàêà?
JNS SHORT @@1
DEC EAX
ADD EDX, ECX
@@1: LEA EBP, [EBP+4]
MOV [EBP], EDX
RET
EndCode
 
\ ================================================================
\ ‘à ¢­¥­¨ï
 
Code = ;( x1 x2 -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x1 ¯®¡¨â­® à ¢¥­ x2.
XOR EAX, [EBP]
SUB EAX, 1
SBB EAX, EAX
LEA EBP, [EBP+4]
RET
EndCode
 
Code <> ;( x1 x2 -- flag ) \ 94 CORE EXT
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x1 ­¥ à ¢¥­ x2.
XOR EAX, [EBP]
NEG EAX
SBB EAX, EAX
LEA EBP, [EBP+4]
RET
EndCode
 
Code < ;( n1 n2 -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  n1 ¬¥­ìè¥ n2.
CMP [EBP], EAX
SETGE AL
AND EAX, 01
DEC EAX
LEA EBP, [EBP+4]
RET
EndCode
 
Code > ;( n1 n2 -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  n1 ¡®«ìè¥ n2.
CMP EAX, [EBP]
SETGE AL
AND EAX, 01
DEC EAX
LEA EBP, [EBP+4]
RET
EndCode
 
Code WITHIN ;( n1 low high -- f1 ) \ f1=true if ((n1 >= low) & (n1 < high))
MOV EBX, [EBP+4]
SUB EAX, [EBP]
SUB EBX, [EBP]
SUB EBX, EAX
SBB EAX, EAX
ADD EBP, 8
RET
EndCode
 
Code D< ;( d1 d2 -- flag ) \ DOUBLE
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  d1 ¬¥­ìè¥ d2.
MOV EBX, [EBP]
CMP DWORD PTR [EBP +8 ], EBX
SBB DWORD PTR [EBP +4 ], EAX
MOV EAX, 0
SIF <
DEC EAX
STHEN
ADD EBP, 0CH
RET
EndCode
 
Code D> ;( d1 d2 -- flag ) \ DOUBLE
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  d1 ¡®«ìè¥ d2.
MOV EBX, [EBP]
CMP EBX, [EBP+8]
SBB EAX, [EBP+4]
SAR EAX, 1FH
ADD EBP, 0CH
RET
EndCode
 
Code U< ;( u1 u2 -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  u1 ¬¥­ìè¥ u2.
CMP [EBP], EAX
SBB EAX, EAX
ADD EBP, 04
RET
EndCode
 
Code U> ;( u1 u2 -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  u1 ¡®«ìè¥ u2.
CMP EAX, [EBP]
SBB EAX, EAX
ADD EBP, 04
RET
EndCode
 
Code 0< ;( n -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  n ¬¥­ìè¥ ­ã«ï.
SAR EAX, 1F
RET
EndCode
 
Code 0= ;( x -- flag ) \ 94
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x à ¢­® ­ã«î.
SUB EAX, 1
SBB EAX, EAX
RET
EndCode
 
Code 0<> ;( x -- flag ) \ 94 CORE EXT
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x ­¥ à ¢­® ­ã«î.
NEG EAX
SBB EAX, EAX
RET
EndCode
 
Code D0= ;( xd -- flag ) \ 94 DOUBLE
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  xd à ¢¥­ ­ã«î.
OR EAX, [EBP]
SUB EAX, 1
SBB EAX, EAX
LEA EBP, [EBP+4]
RET
EndCode
 
Code D= ;( xd1 xd2 -- flag ) \ 94 DOUBLE
; flag is true if and only if xd1 is bit-for-bit the same as xd2
MOV EDX,[EBP]
XOR EAX,[EBP+4]
XOR EDX,[EBP+8]
OR EAX,EDX
SUB EAX,1
SBB EAX,EAX
LEA EBP,[EBP+0CH]
RET
EndCode
 
Code D2* ;( xd1 -- xd2 ) \ 94 DOUBLE
; xd2 is the result of shifting xd1 one bit toward the most-significant
; bit, filling the vacated least-significant bit with zero
SHL DWORD PTR [EBP], 1
RCL EAX, 1
RET
EndCode
 
Code D2/ ;( xd1 -- xd2 ) \ 94 DOUBLE
; xd2 is the result of shifting xd1 one bit toward the least-significant bit,
; leaving the most-significant bit unchanged
SAR EAX, 1
RCR DWORD PTR [EBP], 1
RET
EndCode
 
\ ================================================================
\ ‘âப¨
 
Code -TRAILING ;( c-addr u1 -- c-addr u2 ) \ 94 STRING
; …᫨ u1 ¡®«ìè¥ ­ã«ï, u2 à ¢­® u1, 㬥­ì襭­®¬ã ­  ª®«¨ç¥á⢮ ¯à®¡¥«®¢ ¢ ª®­æ¥
; ᨬ¢®«ì­®© áâப¨, § ¤ ­­®© c-addr ¨ u1. …᫨ u1 ­®«ì ¨«¨ ¢áï áâப  á®á⮨â
; ¨§ ¯à®¡¥«®¢, u2 ­®«ì.
PUSH EDI
MOV ECX, EAX
SIF C0<>
MOV EDI, DWORD PTR [EBP]
ADD EDI, ECX
DEC EDI
MOV AL, 20H
STD
REPZ SCASB
SIF 0<>
INC ECX
STHEN
CLD
MOV EAX, ECX
STHEN
POP EDI
RET
EndCode
 
Code COMPARE ;( c-addr1 u1 c-addr2 u2 -- n ) \ 94 STRING !!!!!
; ‘à ¢­¨âì áâபã, § ¤ ­­ãî c-addr1 u1, á® áâப®©, § ¤ ­­®© c-addr2 u2.
; ‘âப¨ áà ¢­¨¢ îâáï, ­ ç¨­ ï á § ¤ ­­ëå  ¤à¥á®¢, ᨬ¢®« §  ᨬ¢®«®¬, ¤® ¤«¨­ë
; ­ ¨¡®«¥¥ ª®à®âª®© ¨§ áâப ¨«¨ ¤® ­ å®¦¤¥­¨ï à §«¨ç¨©. …᫨ ¤¢¥ áâப¨
; ¨¤¥­â¨ç­ë, n ­®«ì. …᫨ ¤¢¥ áâப¨ ¨¤¥­â¨ç­ë ¤® ¤«¨­ë ­ ¨¡®«¥¥ ª®à®âª®© ¨§
; áâப, â® n ¬¨­ãá ¥¤¨­¨æ  (-1), ¥á«¨ u1 ¬¥­ìè¥ u2, ¨­ ç¥ ¥¤¨­¨æ  (1).
; …᫨ ¤¢¥ áâப¨ ­¥ ¨¤¥­â¨ç­ë ¤® ¤«¨­ë ­ ¨¡®«¥¥ ª®à®âª®© ¨§ áâப, â® n ¬¨­ãá
; ¥¤¨­¨æ  (-1), ¥á«¨ ¯¥à¢ë© ­¥á®¢¯ ¤ î騩 ᨬ¢®« áâப¨, § ¤ ­­®© c-addr1 u1
; ¨¬¥¥â ¬¥­ì襥 ç¨á«®¢®¥ §­ ç¥­¨¥, 祬 ᮮ⢥âáâ¢ãî騩 ᨬ¢®« ¢ áâப¥,
; § ¤ ­­®© c-addr2 u2, ¨ ¥¤¨­¨æ  ¢ ¯à®â¨¢­®¬ á«ãç ¥.
PUSH EDI
MOV ECX, EAX
SUB EAX, EAX
CMP ECX, [EBP +4 ]
SIF 0<>
SIF U<
INC EAX
SELSE
DEC EAX
MOV ECX, [EBP +4 ]
STHEN
STHEN
MOV ESI, [EBP + { 2 CELLS } ]
MOV EDI, [EBP]
REPE CMPSB
SIF 0<>
SIF U>=
MOV EAX, 1
SELSE
MOV EAX, -1
STHEN
STHEN
LEA EBP, [EBP + { 3 CELLS } ]
POP EDI
RET
EndCode
 
Code SEARCH ;( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) \ 94 STRING
; à®¨§¢¥á⨠¯®¨áª ¢ áâப¥, § ¤ ­­®© c-addr1 u1, áâப¨, § ¤ ­­®© c-addr2 u2.
; …᫨ ä« £ "¨á⨭ ", ᮢ¯ ¤¥­¨¥ ­ ©¤¥­® ¯®  ¤à¥áã c-addr3 á ®á⠢訬¨áï u3
; ᨬ¢®« ¬¨. …᫨ ä« £ "«®¦ì", ᮢ¯ ¤¥­¨ï ­¥ ­ ©¤¥­®, ¨ c-addr3 ¥áâì c-addr1,
; ¨ u3 ¥áâì u1. \ !!!!!
LEA EBP, [EBP-4]
MOV [EBP], EAX
PUSH EDI
CLD
MOV EBX, DWORD PTR [EBP]
OR EBX, EBX
SIF 0<>
MOV EDX, DWORD PTR [EBP + { 2 CELLS } ]
MOV EDI, DWORD PTR [EBP + { 3 CELLS } ]
ADD EDX, EDI
SBEGIN
MOV ESI, DWORD PTR [EBP +4 ]
LODSB
MOV ECX, EDX
SUB ECX, EDI
JECXZ LLD
REPNZ
SCASB
JNE SHORT LLD ; ¢® ¢á¥© áâப¥ ­¥â ¯¥à¢®£® ᨬ¢®«  ¨áª®¬®© áâப¨
CMP EBX, 1
JZ SHORT LLC ; ¨áª®¬ ï áâப  ¨¬¥«  ¤«¨­ã 1 ¨ ­ ©¤¥­ 
MOV ECX, EBX
DEC ECX
MOV EAX, EDX
SUB EAX, EDI
CMP EAX, ECX
JC SHORT LLD ; ®áâ â®ª áâப¨ ª®à®ç¥ ¨áª®¬®© áâப¨
PUSH EDI
REPZ CMPSB
POP EDI
SUNTIL 0=
LLC: DEC EDI ; ­ è«¨ ¯®«­®¥ ᮢ¯ ¤¥­¨¥
SUB EDX, EDI
MOV DWORD PTR [EBP + { 3 CELLS } ], EDI
MOV DWORD PTR [EBP + { 2 CELLS } ], EDX
STHEN
MOV EAX, -1
JMP SHORT LLA
LLD: XOR EAX, EAX
LLA: LEA EBP, [EBP+4]
MOV [EBP], EAX
POP EDI
MOV EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code CMOVE ;( c-addr1 c-addr2 u -- ) \ 94 STRING
; …᫨ u ¡®«ìè¥ ­ã«ï, ª®¯¨à®¢ âì u ¯®á«¥¤®¢ â¥«ì­ëå ᨬ¢®«®¢ ¨§ ¯à®áâà ­á⢠
; ¤ ­­ëå ­ ç¨­ ï á  ¤à¥á  c-addr1 ¢ c-addr2, ᨬ¢®« §  ᨬ¢®«®¬, ­ ç¨­ ï á
; ¬« ¤è¨å  ¤à¥á®¢ ª áâ à訬.
MOV EDX, EDI
MOV ECX, EAX
MOV EDI, DWORD PTR [EBP]
MOV ESI, DWORD PTR [EBP +4 ]
CLD
REPZ MOVSB
LEA EBP, [EBP+0CH]
MOV EAX, [EBP-4]
MOV EDI, EDX
RET
EndCode
 
: QCMOVE CMOVE ;
 
Code CMOVE> ;( c-addr1 c-addr2 u -- ) \ 94 STRING
; …᫨ u ¡®«ìè¥ ­ã«ï, ª®¯¨à®¢ âì u ¯®á«¥¤®¢ â¥«ì­ëå ᨬ¢®«®¢ ¨§ ¯à®áâà ­á⢠
; ¤ ­­ëå ­ ç¨­ ï á  ¤à¥á  c-addr1 ¢ c-addr2, ᨬ¢®« §  ᨬ¢®«®¬, ­ ç¨­ ï á®
; áâ àè¨å  ¤à¥á®¢ ª ¬« ¤è¨¬.
 
MOV EDX, EDI
MOV ECX, EAX
MOV EDI, [EBP]
MOV ESI, [EBP+4]
STD
ADD EDI, ECX
DEC EDI
ADD ESI, ECX
DEC ESI
REP MOVSB
MOV EDI, EDX
LEA EBP, [EBP+0CH]
MOV EAX, [EBP-4]
RET
EndCode
 
Code FILL ;( c-addr u char -- ) \ 94 \ !!!!!
; …᫨ u ¡®«ìè¥ ­ã«ï, § á« âì char ¢ u ¡ ©â®¢ ¯®  ¤à¥áã c-addr.
MOV EDX, EDI
MOV ECX, [EBP]
MOV EDI, [EBP+4]
CLD
REP STOSB
MOV EDI, EDX
LEA EBP, [EBP+0CH]
MOV EAX, [EBP-4]
RET
EndCode
 
Code ZCOUNT ;( c-addr -- c-addr u )
LEA EBP, [EBP-4]
MOV [EBP], EAX
XOR EBX, EBX
SBEGIN
MOV BL, BYTE PTR [EAX ]
INC EAX
OR BL, BL
SUNTIL 0=
DEC EAX
SUB EAX, [EBP]
RET
EndCode
 
\ ================================================================
\ “ª § â¥«¨ á⥪®¢
 
Code SP! ;( A -> )
LEA EBP, [EAX+4]
MOV EAX, [EBP-4]
RET
EndCode
 
Code RP! ;( A -> )
POP EBX
MOV ESP, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP EBX
EndCode
 
Code SP@ ;( -> A )
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, EBP
RET
EndCode
 
Code RP@ ;( -- RP )
LEA EBP, [EBP-4]
MOV [EBP], EAX
LEA EAX, [ESP + 4 ]
RET
EndCode
 
 
\ ================================================================
\ ¥£¨áâà ¯®â®ª  (§ ¤ ç¨ ¢­ãâਠä®àâ )
 
Code TlsIndex! ;( x -- ) \ 㪠§ â¥«ì «®ª «ì­®£® ¯ã«  ¯®â®ª 
MOV EDI, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code TlsIndex@ ;( -- x )
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, EDI
RET
EndCode
 
\ ================================================================
\ –¨ª«ë
 
Code C-J
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, DWORD PTR [ESP + { 3 CELLS } ]
SUB EAX, DWORD PTR [ESP + { 4 CELLS } ]
RET
EndCode
 
( inline'ë ¤«ï ª®¬¯¨«ï樨 横«®¢ )
 
Code C-DO
LEA EBP, [EBP+8]
MOV EDX, 80000000H
SUB EDX, [EBP-8]
LEA EBX, [EAX+EDX]
MOV EAX, [EBP-4]
MOV EDX, EDX ; FOR OPT
; PUSH EDX
; PUSH EBX
RET
EndCode
 
Code C-?DO
CMP EAX, [EBP-8]
SIF 0=
MOV EAX, [EBP-4]
JMP EBX
STHEN
PUSH EBX
MOV EBX , 80000000
SUB EBX, [EBP-8]
PUSH EBX ; 80000000h-to
ADD EBX, EAX
PUSH EBX ; 80000000H-to+from
MOV EAX, [EBP-4]
RET
EndCode
 
Code ADD[ESP],EAX
ADD [ESP] , EAX
RET
EndCode
 
Code C-I
LEA EBP, [EBP-4]
MOV [EBP], EAX
MOV EAX, DWORD PTR [ESP]
SUB EAX, [ESP+4]
RET
EndCode
 
Code C->R
PUSH EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
RET
EndCode
 
Code C-R>
LEA EBP, [EBP-4]
MOV [EBP], EAX
POP EAX
RET
EndCode
 
Code C-RDROP
ADD ESP, 4
RET
EndCode
 
Code C-2RDROP
ADD ESP, 8
RET
EndCode
 
Code C-3RDROP
ADD ESP, 0CH
RET
EndCode
 
TRUE [IF]
Code C-EXECUTE ;( i*x xt -- j*x ) \ 94
; “¡à âì xt á® á⥪  ¨ ¢ë¯®«­¨âì § ¤ ­­ãî ¨¬ ᥬ ­â¨ªã.
; „à㣨¥ ¨§¬¥­¥­¨ï ­  á⥪¥ ®¯à¥¤¥«ïîâáï á«®¢®¬, ª®â®à®¥ ¢ë¯®«­ï¥âáï.
MOV EDX, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
CALL EDX
RET
EndCode
[THEN]
 
Code EXECUTE ;( i*x xt -- j*x ) \ 94
; “¡à âì xt á® á⥪  ¨ ¢ë¯®«­¨âì § ¤ ­­ãî ¨¬ ᥬ ­â¨ªã.
; „à㣨¥ ¨§¬¥­¥­¨ï ­  á⥪¥ ®¯à¥¤¥«ïîâáï á«®¢®¬, ª®â®à®¥ ¢ë¯®«­ï¥âáï.
MOV EBX, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP EBX
EndCode
 
Code @EXECUTE ;( i*x xt -- j*x )
MOV EBX, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP [EBX]
EndCode
 
\ ================================================================
\ ®¤¤¥à¦ª  LOCALS
 
Code DRMOVE ;( x1 ... xn n*4 -- )
; ¯¥à¥­¥á⨠n ç¨á¥« á® á⥪  ¤ ­­ëå ­  á⥪ ¢®§¢à â®¢
POP EDX ;  ¤à¥á ¢®§¢à â 
MOV ESI, EAX
LL1:
PUSH DWORD PTR [EBP+ESI-4]
SUB ESI, 4
JNZ SHORT LL1
ADD EBP, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP EDX
EndCode
 
Code NR> ;( R: x1 ... xn n -- D: x1 ... xn n )
; ¥à¥­¥á⨠n ç¨á¥« á® á⥪  ¢®§¢à â®¢ ­  á⥪ ¤ ­­ëå
; …᫨ n=0 ¢®§¢à â¨âì 0
POP EDX ;  ¤à¥á ¢®§¢à â 
LEA EBP, [EBP-4]
MOV [EBP], EAX
POP EAX
OR EAX, EAX
JNZ @@2
JMP EDX
 
@@2: LEA EAX, [EAX*4]
MOV ESI, EAX
@@1:
MOV EBX, EBP
SUB EBX, ESI
POP DWORD PTR [EBX]
SUB ESI, 4
JNZ SHORT @@1
SUB EBP, EAX
SAR EAX, 2
JMP EDX
EndCode
 
Code N>R ;( D: x1 ... xn n -- R: x1 ... xn n )
; ¯¥à¥­¥á⨠n ç¨á¥« á® á⥪  ¤ ­­ëå ­  á⥪ ¢®§¢à â®¢
LEA EBP, [EBP-4]
MOV [EBP], EAX
LEA EAX, [EAX*4+4]
 
POP EDX ;  ¤à¥á ¢®§¢à â 
MOV ESI, EAX
@@1:
PUSH DWORD PTR [EBP+ESI-4]
SUB ESI, 4
JNZ SHORT @@1
ADD EBP, EAX
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP EDX
EndCode
 
Code NRCOPY ;( D: i*x i -- D: i*x i R: i*x i )
; ᪮¯¨à®¢ âì n ç¨á¥« á® á⥪  ¤ ­­ëå ­  á⥪ ¢®§¢à â®¢
MOV ECX, EAX
LEA ECX, [ECX*4]
 
POP EDX ;  ¤à¥á ¢®§¢à â 
JECXZ @@2
MOV ESI, ECX
@@1:
PUSH DWORD PTR [ESI+EBP-4]
SUB ESI, 4
JNZ SHORT @@1
@@2:
PUSH EAX
JMP EDX
EndCode
 
Code RP+@ ;( offs -- x )
; ¢§ïâì ç¨á«® ᮠᬥ饭¨¥¬ offs ¡ ©â ®â ¢¥à設ë á⥪  ¢®§¢à â®¢ (0 RP+@ == RP@)
MOV EAX, [EAX+ESP+4]
RET
EndCode
Code RP+ ;( offs -- addr )
; ¢§ïâì  ¤à¥á ᮠᬥ饭¨¥¬ offs ¡ ©â ®â ¢¥à設ë á⥪  ¢®§¢à â®¢
LEA EAX, [EAX+ESP+4]
RET
EndCode
 
Code RP+! ;( x offs -- )
; § ¯¨á âì ç¨á«® x ¯® ᬥ饭¨î offs ¡ ©â ®â ¢¥à設ë á⥪  ¢®§¢à â®¢
MOV EBX, [EBP]
MOV [EAX+ESP+4], EBX
LEA EBP, [EBP+8]
MOV EAX, [EBP-4]
RET
EndCode
 
Code RALLOT ;( n -- addr )
; § à¥§¥à¢¨à®¢ âì n ï祥ª ­  á⥪¥ ¢®§¢à â®¢,
; ᤥ« ¥¬ á ¨­¨æ¨ «¨§ æ¨¥© (  â® ¥á«¨ ¡®«ìè¥ 8Š ¢ë¤¥«¨¬, exception ¬®¦¥â)
POP EDX
MOV ECX, EAX
XOR EAX, EAX
@@1: PUSH EAX
DEC ECX
JNZ SHORT @@1
MOV EAX, ESP
JMP EDX
EndCode
 
Code (RALLOT) ;( n -- )
; § à¥§¥à¢¨à®¢ âì n ï祥ª ­  á⥪¥ ¢®§¢à â®¢
POP EDX
MOV ECX, EAX
XOR EAX, EAX
@@1: PUSH EAX
DEC ECX
JNZ SHORT @@1
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP EDX
EndCode
 
Code RFREE ;( n -- )
; ¢¥à­ãâì n ï祥ª á⥪  ¢®§¢à â®¢
POP EDX
LEA ESP, [ESP+EAX*4]
MOV EAX, [EBP]
LEA EBP, [EBP+4]
JMP EDX
EndCode
 
Code (LocalsExit) ;( -- )
; ¢¥à­ãâì ¯ ¬ïâì ¢ á⥪ ¢®¢à â®¢, ç¨á«® ¡ ©â «¥¦¨â ­  á⥪¥
POP EBX
ADD ESP, EBX
RET
EndCode
 
Code TIMER@ ;( -- tlo thi ) \ ’®«ìª® ¤«ï Intel Pentium ¨ ¢ëè¥!!!
; ‚®§¢à â¨âì §­ ç¥­¨¥ â ©¬¥à  ¯à®æ¥áá®à  ª ª ud
MOV [EBP-4], EAX
RDTSC
MOV [EBP-8], EDX
LEA EBP, [EBP-8]
XCHG EAX, [EBP]
RET
EndCode
 
\ „«ï ®áâ «ì­ëå ¯à®æ¥áá®à®¢ à áª®¬¬¥­â¨àã©â¥:
\ : TIMER@ 0 GetTickCount ;
 
Code TRAP-CODE ;( D: j*x u R: i*x i -- i*x u )
; ‚ᯮ¬®£ â¥«ì­®¥ á«®¢® ¤«ï ¢®ááâ ­®¢«¥­¨ï §­ ç¥­¨©, á®åà ­¥­­ëå
; ¯¥à¥¤ CATCH ­  á⥪¥ ¢®§¢à â®¢
POP EDX
POP ESI
OR ESI, ESI
JZ @@2
LEA ESI, [ESI*4]
MOV ECX, ESI
@@1: MOV EBX, [ESI+ESP-4]
MOV [ESI+EBP-4], EBX
SUB ESI, 4
JNZ SHORT @@1
ADD ESP, ECX
@@2: JMP EDX
EndCode
 
DECIMAL
/programs/develop/SPForth/src/spf_forthproc.f_L
0,0 → 1,4076
ZZ=D0 ( Žá­®¢­ë¥ ­¨§ª®ã஢­¥¢ë¥ á«®¢  "ä®àâ-¯à®æ¥áá®à "
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
( ¥ «¨§ æ¨ï ¤«ï ¯®¤¯à®£à ¬¬­®£® è¨â®£® ª®¤ .
ESP - 㪠§ â¥«ì á⥪  ¢®§¢à â®¢
EBP - 㪠§ â¥«ì á⥪  ¤ ­­ëå
EDI - á®åà ­ï¥¬ë© à¥£¨áâà [㪠§ â¥«ì ¤ ­­ëå ¯®â®ª  ¢ SPF]
)
 
HEX
 
\ ================================================================
\ ‘⥪®¢ë¥ ¬ ­¨¯ã«ï樨
 
?HS
 
Code DUP ;( x -- x x ) \ 94
 
59CB58 70 CB 59 00 00 03 44 55 50 E1 32 58 00 00 00 00 pËY...DUPá2X....
59CB68 00 00 00 00 00 00 00 00 ........
 
; à®¤ã¡«¨à®¢ âì x.
LEA EBP, [EBP-4]
 
59CB70 8D 6D FC mü
 
mov [ebp],eax
 
59CB73 89 45 00 ‰E.
 
RET
 
59CB76 C3 Ã
 
EndCode
 
 
\ ' DUP TO 'DUP_V
 
Code ?DUP ;( x -- 0 | x x ) \ 94
 
59CB77 90 CB 59 00 00 04 3F 44 55 50 5D CB 59 00 00 00 ËY...?DUP]ËY...
59CB87 00 00 00 00 00 00 00 00 00 .........
 
; à®¤ã¡«¨à®¢ âì x, ¥á«¨ ­¥ ­®«ì.
OR EAX, EAX
 
59CB90 0B C0 .À
 
JNZ { ' DUP }
 
59CB92 75 DC uÜ
 
RET
 
59CB94 C3 Ã
 
EndCode
 
Code 2DUP ;( x1 x2 -- x1 x2 x1 x2 ) \ 94
 
59CB95 B0 CB 59 00 00 04 32 44 55 50 7C CB 59 00 00 00 °ËY...2DUP|ËY...
59CBA5 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; à®¤ã¡«¨à®¢ âì ¯ àã ï祥ª x1 x2.
MOV EDX, [EBP]
 
59CBB0 8B 55 00 ‹U.
 
MOV [EBP-4], EAX
 
59CBB3 89 45 FC ‰Eü
 
MOV [EBP-8], EDX
 
59CBB6 89 55 F8 ‰Uø
 
LEA EBP, [EBP-8]
 
59CBB9 8D 6D F8 mø
 
RET
 
59CBBC C3 Ã
 
EndCode
 
Code DROP ;( x -- ) \ 94
 
59CBBD D0 CB 59 00 00 04 44 52 4F 50 9A CB 59 00 00 00 ÐËY...DROPšËY...
59CBCD 00 00 00 ...
 
; “¡à âì x á® á⥪ .
mov eax,[ebp]
 
59CBD0 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59CBD3 8D 6D 04 m.
 
RET
 
59CBD6 C3 Ã
 
EndCode
 
\ ' DROP TO 'DROP_V
 
Code MAX ;( n1 n2 -- n3 ) \ 94
 
59CBD7 F0 CB 59 00 00 03 4D 41 58 C2 CB 59 00 00 00 00 ðËY...MAXÂËY....
59CBE7 00 00 00 00 00 00 00 00 00 .........
 
; n3 - ¡®«ì襥 ¨§ n1 ¨ n2.
CMP EAX, [EBP]
 
59CBF0 3B 45 00 ;E.
 
JL { ' DROP }
 
59CBF3 7C DB |Û
 
LEA EBP, [EBP+4]
 
59CBF5 8D 6D 04 m.
 
RET
 
59CBF8 C3 Ã
 
EndCode
 
Code MIN ;( n1 n2 -- n3 ) \ 94
 
59CBF9 10 CC 59 00 00 03 4D 49 4E DC CB 59 00 00 00 00 .ÌY...MINÜËY....
59CC09 00 00 00 00 00 00 00 .......
 
; n3 - ¬¥­ì襥 ¨§ n1 ¨ n2.
CMP EAX, [EBP]
 
59CC10 3B 45 00 ;E.
 
JG { ' DROP }
 
59CC13 7F BB »
 
LEA EBP, [EBP+4]
 
59CC15 8D 6D 04 m.
 
RET
 
59CC18 C3 Ã
 
EndCode
 
Code UMAX ;( u1 u2 -- n3 ) \ RETurn the lesser of unsigned u1 and
 
59CC19 30 CC 59 00 00 04 55 4D 41 58 FE CB 59 00 00 00 0ÌY...UMAXþËY...
59CC29 00 00 00 00 00 00 00 .......
 
; unsigned u2
CMP EAX, [EBP]
 
59CC30 3B 45 00 ;E.
 
JB { ' DROP }
 
59CC33 72 9B r›
 
LEA EBP, [EBP+4]
 
59CC35 8D 6D 04 m.
 
RET
 
59CC38 C3 Ã
 
EndCode
 
Code UMIN ;( u1 u2 -- n3 ) \ RETurn the lesser of unsigned u1 and
 
59CC39 50 CC 59 00 00 04 55 4D 49 4E 1E CC 59 00 00 00 PÌY...UMIN.ÌY...
59CC49 00 00 00 00 00 00 00 .......
 
; unsigned u2
CMP EAX, [EBP]
 
59CC50 3B 45 00 ;E.
 
JA { ' DROP }
 
59CC53 0F 87 77 FF FF FF .‡wÿÿÿ
 
LEA EBP, [EBP+4]
 
59CC59 8D 6D 04 m.
 
RET
 
59CC5C C3 Ã
 
EndCode
 
Code 2DROP ;( x1 x2 -- ) \ 94
 
59CC5D 70 CC 59 00 00 05 32 44 52 4F 50 3E CC 59 00 00 pÌY...2DROP>ÌY..
59CC6D 00 00 00 ...
 
; “¡à âì á® á⥪  ¯ àã ï祥ª x1 x2.
MOV EAX , [EBP+4]
 
59CC70 8B 45 04 ‹E.
 
ADD EBP , 8
 
59CC73 83 C5 08 ā.
 
RET
 
59CC76 C3 Ã
 
EndCode
 
Code SWAP ;( x1 x2 -- x2 x1 ) \ 94
 
59CC77 90 CC 59 00 00 04 53 57 41 50 62 CC 59 00 00 00 ÌY...SWAPbÌY...
59CC87 00 00 00 00 00 00 00 00 00 .........
 
; ¯®¬¥­ïâì ¬¥áâ ¬¨ ¤¢  ¢¥àå­¨å í«¥¬¥­â  á⥪ 
; XCHG EAX { EBP }
MOV EDX, [EBP]
 
59CC90 8B 55 00 ‹U.
 
MOV [EBP], EAX
 
59CC93 89 45 00 ‰E.
 
MOV EAX, EDX
 
59CC96 8B C2 ‹Â
 
RET
 
59CC98 C3 Ã
 
EndCode
 
Code 2SWAP ;( x1 x2 x3 x4 -- x3 x4 x1 x2 ) \ 94
 
59CC99 B0 CC 59 00 00 05 32 53 57 41 50 7C CC 59 00 00 °ÌY...2SWAP|ÌY..
59CCA9 00 00 00 00 00 00 00 .......
 
; ®¬¥­ïâì ¬¥áâ ¬¨ ¤¢¥ ¢¥àå­¨¥ ¯ àë ï祥ª.
MOV ECX, [EBP]
 
59CCB0 8B 4D 00 ‹M.
 
MOV EBX, [EBP+4]
 
59CCB3 8B 5D 04 ‹].
 
MOV EDX, [EBP+8]
 
59CCB6 8B 55 08 ‹U.
 
MOV [EBP+8], ECX
 
59CCB9 89 4D 08 ‰M.
 
MOV [EBP+4], EAX
 
59CCBC 89 45 04 ‰E.
 
MOV [EBP], EDX
 
59CCBF 89 55 00 ‰U.
 
MOV EAX, EBX
 
59CCC2 8B C3 ‹Ã
 
RET
 
59CCC4 C3 Ã
 
EndCode
 
Code OVER ;( x1 x2 -- x1 x2 x1 ) \ 94
 
59CCC5 E0 CC 59 00 00 04 4F 56 45 52 9E CC 59 00 00 00 àÌY...OVERžÌY...
59CCD5 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; ®«®¦¨âì ª®¯¨î x1 ­  ¢¥à設ã á⥪ .
LEA EBP, [EBP-4]
 
59CCE0 8D 6D FC mü
 
MOV [EBP], EAX
 
59CCE3 89 45 00 ‰E.
 
MOV EAX, [EBP+4]
 
59CCE6 8B 45 04 ‹E.
 
RET
 
59CCE9 C3 Ã
 
EndCode
 
Code 2OVER ;( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 ) \ 94
 
59CCEA 00 CD 59 00 00 05 32 4F 56 45 52 CA CC 59 00 00 .ÍY...2OVERÊÌY..
59CCFA 00 00 00 00 00 00 ......
 
; Š®¯¨à®¢ âì ¯ àã ï祥ª x1 x2 ­  ¢¥à設ã á⥪ .
MOV EDX, [EBP+8]
 
59CD00 8B 55 08 ‹U.
 
MOV [EBP-4], EAX
 
59CD03 89 45 FC ‰Eü
 
MOV [EBP-8], EDX
 
59CD06 89 55 F8 ‰Uø
 
MOV EAX, [EBP+4]
 
59CD09 8B 45 04 ‹E.
 
LEA EBP, [EBP-8]
 
59CD0C 8D 6D F8 mø
 
RET
 
59CD0F C3 Ã
 
EndCode
 
Code NIP ;( x1 x2 -- x2 ) \ 94 CORE EXT
 
59CD10 20 CD 59 00 00 03 4E 49 50 EF CC 59 00 00 00 00 ÍY...NIPïÌY....
 
; “¡à âì ¯¥à¢ë© í«¥¬¥­â ¯®¤ ¢¥à設®© á⥪ .
ADD EBP, 4
 
59CD20 83 C5 04 ā.
 
RET
 
59CD23 C3 Ã
 
EndCode
 
Code ROT ;( x1 x2 x3 -- x2 x3 x1 ) \ 94
 
59CD24 40 CD 59 00 00 03 52 4F 54 15 CD 59 00 00 00 00 @ÍY...ROT.ÍY....
59CD34 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
; à®ªàãâ¨âì âਠ¢¥àå­¨å í«¥¬¥­â  á⥪ .
; XCHG EAX [EBP]
; XCHG EAX 4 [EBP]
MOV EDX, [EBP]
 
59CD40 8B 55 00 ‹U.
 
MOV [EBP], EAX
 
59CD43 89 45 00 ‰E.
 
MOV EAX, [EBP+4]
 
59CD46 8B 45 04 ‹E.
 
MOV [EBP+4], EDX
 
59CD49 89 55 04 ‰U.
 
RET
 
59CD4C C3 Ã
 
EndCode
 
 
Code -ROT ;( x1 x2 x3 -- x3 x1 x2 ) ; !!!!!
 
59CD4D 60 CD 59 00 00 04 2D 52 4F 54 29 CD 59 00 00 00 `ÍY...-ROT)ÍY...
59CD5D 00 00 00 ...
 
; Ž¡à â­®¥ ROT
MOV EDX, [EBP+4]
 
59CD60 8B 55 04 ‹U.
 
MOV [EBP+4], EAX
 
59CD63 89 45 04 ‰E.
 
MOV EAX, [EBP]
 
59CD66 8B 45 00 ‹E.
 
MOV [EBP], EDX
 
59CD69 89 55 00 ‰U.
 
RET
 
59CD6C C3 Ã
 
EndCode
 
Code PICK ;( ... +n -- ... w ) \ Copy the nth stack item to tos.
 
59CD6D 80 CD 59 00 00 04 50 49 43 4B 52 CD 59 00 00 00 €ÍY...PICKRÍY...
59CD7D 00 00 00 ...
 
MOV EAX, [EBP + EAX*4 ]
 
59CD80 8B 44 85 00 ‹D….
 
RET
 
59CD84 C3 Ã
 
EndCode
 
Code ROLL ;( xu xu-1 ... x0 u -- xu-1 ... x0 xu ) \ 94 CORE EXT
 
59CD85 A0 CD 59 00 00 04 52 4F 4C 4C 72 CD 59 00 00 00  ÍY...ROLLrÍY...
59CD95 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; “¡à âì u. ®¢¥à­ãâì u+1 í«¥¬¥­â ­  ¢¥à設¥ á⥪ .
; ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯¥à¥¤ ¢ë¯®«­¥­¨¥¬ ROLL
; ­  á⥪¥ ¬¥­ìè¥ ç¥¬ u+2 í«¥¬¥­â®¢.
OR EAX, EAX
 
59CDA0 0B C0 .À
 
JZ SHORT LL1
 
59CDA2 74 1E t.
 
MOV ECX, EAX
 
59CDA4 8B C8 ‹È
 
LEA EAX, [EAX*4]
 
59CDA6 8D 04 85 00 00 00 00 .…....
 
MOV EDX, EBP
 
59CDAD 8B D5 ‹Õ
 
ADD EDX, EAX
 
59CDAF 03 D0 .Ð
 
MOV EBX, [EDX]
 
59CDB1 8B 1A ‹.
 
LL2: LEA EDX, [EDX-4]
 
59CDB3 8D 52 FC Rü
 
MOV EAX, [EDX]
 
59CDB6 8B 02 ‹.
 
MOV [EDX+4], EAX
 
59CDB8 89 42 04 ‰B.
 
DEC ECX
 
59CDBB 49 I
 
JNZ SHORT LL2
 
59CDBC 75 F5 uõ
 
MOV EAX, EBX
 
59CDBE 8B C3 ‹Ã
 
JMP SHORT LL3
 
59CDC0 EB 03 ë.
 
LL1: MOV EAX, [EBP]
 
59CDC2 8B 45 00 ‹E.
 
LL3: LEA EBP, [EBP+4]
 
59CDC5 8D 6D 04 m.
 
RET
 
59CDC8 C3 Ã
 
EndCode
 
Code TUCK ;( x1 x2 -- x2 x1 x2 ) \ 94
 
59CDC9 E0 CD 59 00 00 04 54 55 43 4B 8A CD 59 00 00 00 àÍY...TUCKŠÍY...
59CDD9 00 00 00 00 00 00 00 .......
 
LEA EBP, [EBP-4]
 
59CDE0 8D 6D FC mü
 
MOV EDX, [EBP+4]
 
59CDE3 8B 55 04 ‹U.
 
MOV [EBP], EDX
 
59CDE6 89 55 00 ‰U.
 
MOV [EBP+4], EAX
 
59CDE9 89 45 04 ‰E.
 
RET
 
59CDEC C3 Ã
 
EndCode
 
\ ================================================================
\ ‘⥪ ¢®§¢à â®¢
 
Code 2>R ; 94 CORE EXT
 
59CDED 00 CE 59 00 00 03 32 3E 52 CE CD 59 00 00 00 00 .ÎY...2>RÎÍY....
59CDFD 00 00 00 ...
 
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
; ‚믮«­¥­¨¥: ;( x1 x2 -- ) ;( R: -- x1 x2 )
; ¥à¥­¥á⨠¯ àã ï祥ª x1 x2 ­  á⥪ ¢®§¢à â®¢. ‘¥¬ ­â¨ç¥áª¨
; íª¢¨¢ «¥­â­® SWAP >R >R.
POP EBX
 
59CE00 5B [
 
PUSH DWORD PTR [EBP]
 
59CE01 FF 75 00 ÿu.
 
PUSH EAX
 
59CE04 50 P
 
LEA EBP, [EBP+8]
 
59CE05 8D 6D 08 m.
 
MOV EAX, [EBP-4]
 
59CE08 8B 45 FC ‹Eü
 
JMP EBX
 
59CE0B FF E3 ÿã
 
EndCode
 
Code 2R> ; 94 CORE EXT
 
59CE0D 20 CE 59 00 00 03 32 52 3E F2 CD 59 00 00 00 00 ÎY...2R>òÍY....
59CE1D 00 00 00 ...
 
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
; ‚믮«­¥­¨¥: ;( -- x1 x2 ) ;( R: x1 x2 -- )
; ¥à¥­¥á⨠¯ àã ï祥ª x1 x2 á® á⥪  ¢®§¢à â®¢. ‘¥¬ ­â¨ç¥áª¨
; íª¢¨¢ «¥­â­® R> R> SWAP. \ !!!!
LEA EBP, [EBP-8]
 
59CE20 8D 6D F8 mø
 
POP EBX
 
59CE23 5B [
 
MOV [EBP+4], EAX
 
59CE24 89 45 04 ‰E.
 
POP EAX
 
59CE27 58 X
 
POP DWORD PTR [EBP]
 
59CE28 8F 45 00 E.
 
PUSH EBX
 
59CE2B 53 S
 
RET
 
59CE2C C3 Ã
 
EndCode
 
Code R@ ; 94
 
59CE2D 40 CE 59 00 00 02 52 40 12 CE 59 00 00 00 00 00 @ÎY...R@.ÎY.....
59CE3D 00 00 00 ...
 
; ˆá¯®«­¥­¨¥: ;( -- x ) ;( R: x -- x )
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ¢ ०¨¬¥ ¨­â¥à¯à¥â æ¨¨ ­¥®¯à¥¤¥«¥­ .
LEA EBP, [EBP-4]
 
59CE40 8D 6D FC mü
 
MOV [EBP], EAX
 
59CE43 89 45 00 ‰E.
 
MOV EAX, [ESP + 4 ]
 
59CE46 8B 44 24 04 ‹D$.
 
RET
 
59CE4A C3 Ã
 
EndCode
 
Code 2R@ ; 94 CORE EXT
 
59CE4B 60 CE 59 00 00 03 32 52 40 32 CE 59 00 00 00 00 `ÎY...2R@2ÎY....
59CE5B 00 00 00 00 00 .....
 
; ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
; ‚믮«­¥­¨¥: ;( -- x1 x2 ) ;( R: x1 x2 -- x1 x2 )
; Š®¯¨à®¢ âì ¯ àã ï祥ª x1 x2 á® á⥪  ¢®§¢à â®¢. ‘¥¬ ­â¨ç¥áª¨
; íª¢¨¢ «¥­â­® R> R> 2DUP >R >R SWAP.
LEA EBP, [EBP-8]
 
59CE60 8D 6D F8 mø
 
MOV [EBP+4], EAX
 
59CE63 89 45 04 ‰E.
 
MOV EAX, [ESP + { 2 CELLS } ]
 
59CE66 8B 44 24 08 ‹D$.
 
MOV DWORD PTR [EBP], EAX
 
59CE6A 89 45 00 ‰E.
 
MOV EAX, [ESP + 4 ]
 
59CE6D 8B 44 24 04 ‹D$.
 
RET
 
59CE71 C3 Ã
 
EndCode
 
\ ================================================================
\ Ž¯¥à æ¨¨ á ¯ ¬ïâìî
 
Code @ ;( a-addr -- x ) \ 94
 
59CE72 80 CE 59 00 00 01 40 50 CE 59 00 00 00 00 €ÎY...@PÎY....
 
; x - §­ ç¥­¨¥ ¯®  ¤à¥áã a-addr.
MOV EAX, [EAX ]
 
59CE80 8B 00 ‹.
 
RET
 
59CE82 C3 Ã
 
EndCode
 
Code ! ;( x a-addr -- ) \ 94
 
59CE83 90 CE 59 00 00 01 21 77 CE 59 00 00 00 ÎY...!wÎY...
 
; ‡ ¯¨á âì x ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
 
59CE90 8B 55 00 ‹U.
 
MOV DWORD PTR [EAX ], EDX
 
59CE93 89 10 ‰.
 
MOV EAX , [EBP+4]
 
59CE95 8B 45 04 ‹E.
 
ADD EBP , 8
 
59CE98 83 C5 08 ā.
 
RET
 
59CE9B C3 Ã
 
EndCode
 
Code C@ ;( c-addr -- char ) \ 94
 
59CE9C B0 CE 59 00 00 02 43 40 88 CE 59 00 00 00 00 00 °ÎY...C@ˆÎY.....
59CEAC 00 00 00 00 ....
 
; ®«ãç¨âì ᨬ¢®« ¯®  ¤à¥áã c-addr. ¥§­ ç é¨¥ áâ à訥 ¡¨âë ï祩ª¨ ­ã«¥¢ë¥.
MOVZX EAX, BYTE PTR [EAX ]
 
59CEB0 0F B6 00 .¶.
 
RET
 
59CEB3 C3 Ã
 
EndCode
 
Code C! ;( char c-addr -- ) \ 94
 
59CEB4 C0 CE 59 00 00 02 43 21 A1 CE 59 00 ÀÎY...C!¡ÎY.
 
; ‡ ¯¨á âì char ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
 
59CEC0 8B 55 00 ‹U.
 
MOV BYTE PTR [EAX ], DL
 
59CEC3 88 10 ˆ.
 
MOV EAX , [EBP+4]
 
59CEC5 8B 45 04 ‹E.
 
ADD EBP , 8
 
59CEC8 83 C5 08 ā.
 
RET
 
59CECB C3 Ã
 
EndCode
 
Code W@ ;( c-addr -- word )
 
59CECC E0 CE 59 00 00 02 57 40 B9 CE 59 00 00 00 00 00 àÎY...W@¹ÎY.....
59CEDC 00 00 00 00 ....
 
; ®«ãç¨âì word ¯®  ¤à¥áã c-addr. ¥§­ ç é¨¥ áâ à訥 ¡¨âë ï祩ª¨ ­ã«¥¢ë¥.
MOVZX EAX, WORD PTR [EAX ]
 
59CEE0 0F B7 00 .·.
 
RET
 
59CEE3 C3 Ã
 
EndCode
 
Code W! ;( word c-addr -- )
 
59CEE4 F0 CE 59 00 00 02 57 21 D1 CE 59 00 ðÎY...W!ÑÎY.
 
; ‡ ¯¨á âì word ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
 
59CEF0 8B 55 00 ‹U.
 
MOV WORD PTR [EAX ], DX
 
59CEF3 66 89 10 f‰.
 
MOV EAX , [EBP+4]
 
59CEF6 8B 45 04 ‹E.
 
ADD EBP , 8
 
59CEF9 83 C5 08 ā.
 
RET
 
59CEFC C3 Ã
 
EndCode
 
Code 2@ ;( a-addr -- x1 x2 ) \ 94
 
59CEFD 10 CF 59 00 00 02 32 40 E9 CE 59 00 00 00 00 00 .ÏY...2@éÎY.....
59CF0D 00 00 00 ...
 
; ®«ãç¨âì ¯ àã ï祥ª x1 x2, § ¯¨á ­­ãî ¯®  ¤à¥áã a-addr.
; x2 ¯®  ¤à¥áã a-addr, x1 ¢ á«¥¤ãî饩 ï祩ª¥.
;  ¢­®á¨«ì­® DUP CELL+ @ SWAP @
MOV EDX, [EAX + 4 ]
 
59CF10 8B 50 04 ‹P.
 
LEA EBP, [EBP-4]
 
59CF13 8D 6D FC mü
 
MOV DWORD PTR [EBP], EDX
 
59CF16 89 55 00 ‰U.
 
MOV EAX, DWORD PTR [EAX ]
 
59CF19 8B 00 ‹.
 
RET
 
59CF1B C3 Ã
 
EndCode
 
Code 2! ;( x1 x2 a-addr -- ) \ 94
 
59CF1C 30 CF 59 00 00 02 32 21 02 CF 59 00 00 00 00 00 0ÏY...2!.ÏY.....
59CF2C 00 00 00 00 ....
 
; ‡ ¯¨á âì ¯ àã ï祥ª x1 x2 ¯®  ¤à¥áã a-addr,
; x2 ¯®  ¤à¥áã a-addr, x1 ¢ á«¥¤ãîéãî ï祩ªã.
;  ¢­®á¨«ì­® SWAP OVER ! CELL+ !
MOV EDX, [EBP]
 
59CF30 8B 55 00 ‹U.
 
MOV [EAX], EDX
 
59CF33 89 10 ‰.
 
MOV EDX, [EBP+4]
 
59CF35 8B 55 04 ‹U.
 
MOV [EAX+4], EDX
 
59CF38 89 50 04 ‰P.
 
LEA EBP, [EBP+0CH]
 
59CF3B 8D 6D 0C m.
 
MOV EAX, [EBP-4]
 
59CF3E 8B 45 FC ‹Eü
 
RET
 
59CF41 C3 Ã
 
EndCode
 
Code D@ ;( a-addr -- x1 x2 )
 
59CF42 50 CF 59 00 00 02 44 40 21 CF 59 00 00 00 PÏY...D@!ÏY...
 
; 2@ SWAP
MOV EDX, [EAX]
 
59CF50 8B 10 ‹.
 
LEA EBP, [EBP-4]
 
59CF52 8D 6D FC mü
 
MOV DWORD PTR [EBP], EDX
 
59CF55 89 55 00 ‰U.
 
MOV EAX, DWORD PTR [EAX+4]
 
59CF58 8B 40 04 ‹@.
 
RET
 
59CF5B C3 Ã
 
EndCode
 
Code D! ;( x1 x2 a-addr -- )
 
59CF5C 70 CF 59 00 00 02 44 21 47 CF 59 00 00 00 00 00 pÏY...D!GÏY.....
59CF6C 00 00 00 00 ....
 
; >R SWAP R> 2!
MOV EDX, [EBP]
 
59CF70 8B 55 00 ‹U.
 
MOV [EAX+4], EDX
 
59CF73 89 50 04 ‰P.
 
MOV EDX, [EBP+4]
 
59CF76 8B 55 04 ‹U.
 
MOV [EAX], EDX
 
59CF79 89 10 ‰.
 
LEA EBP, [EBP+0CH]
 
59CF7B 8D 6D 0C m.
 
MOV EAX, [EBP-4]
 
59CF7E 8B 45 FC ‹Eü
 
RET
 
59CF81 C3 Ã
 
EndCode
 
 
Code EBX@ ;( -- EBX )
 
59CF82 90 CF 59 00 00 04 45 42 58 40 61 CF 59 00 ÏY...EBX@aÏY.
 
LEA EBP, [EBP-4]
 
59CF90 8D 6D FC mü
 
mov [ebp],eax
 
59CF93 89 45 00 ‰E.
 
MOV EAX,EBX
 
59CF96 8B C3 ‹Ã
 
RET
 
59CF98 C3 Ã
 
EndCode
 
\ ================================================================
\ ‚ëç¨á«¥­¨ï
 
Code 1+ ;( n1|u1 -- n2|u2 ) \ 94
 
59CF99 B0 CF 59 00 00 02 31 2B 87 CF 59 00 00 00 00 00 °ÏY...1+‡ÏY.....
59CFA9 00 00 00 00 00 00 00 .......
 
; à¨¡ ¢¨âì 1 ª n1|u1 ¨ ¯®«ãç¨âì á㬬ã u2|n2.
LEA EAX, [EAX+1]
 
59CFB0 8D 40 01 @.
 
RET
 
59CFB3 C3 Ã
 
EndCode
 
Code 1- ;( n1|u1 -- n2|u2 ) \ 94
 
59CFB4 C0 CF 59 00 00 02 31 2D 9E CF 59 00 ÀÏY...1-žÏY.
 
; ‚ëç¥áâì 1 ¨§ n1|u1 ¨ ¯®«ãç¨âì à §­®áâì n2|u2.
LEA EAX, [EAX-1]
 
59CFC0 8D 40 FF @ÿ
 
RET
 
59CFC3 C3 Ã
 
EndCode
 
Code 2+ ;( W -> W+2 )
 
59CFC4 D0 CF 59 00 00 02 32 2B B9 CF 59 00 ÐÏY...2+¹ÏY.
 
LEA EAX, [EAX+2]
 
59CFD0 8D 40 02 @.
 
RET
 
59CFD3 C3 Ã
 
EndCode
 
Code 2- ;( W -> W-2 )
 
59CFD4 E0 CF 59 00 00 02 32 2D C9 CF 59 00 àÏY...2-ÉÏY.
 
LEA EAX, [EAX-2]
 
59CFE0 8D 40 FE @þ
 
RET
 
59CFE3 C3 Ã
 
EndCode
 
Code 2* ;( x1 -- x2 ) \ 94
 
59CFE4 F0 CF 59 00 00 02 32 2A D9 CF 59 00 ðÏY...2*ÙÏY.
 
; x2 - १ã«ìâ â ᤢ¨£  x1 ­  ®¤¨­ ¡¨â ¢«¥¢®, á § ¯®«­¥­¨¥¬
; ­ ¨¬¥­¥¥ §­ ç¨¬®£® ¡¨â  ­ã«¥¬.
; SHL EAX
; LEA EAX, [EAX+EAX]
LEA EAX, [EAX*2]
 
59CFF0 8D 04 45 00 00 00 00 .E....
 
RET
 
59CFF7 C3 Ã
 
EndCode
 
Code CELL+ ;( a-addr1 -- a-addr2 ) \ 94
 
59CFF8 10 D0 59 00 00 05 43 45 4C 4C 2B E9 CF 59 00 00 .ÐY...CELL+éÏY..
59D008 00 00 00 00 00 00 00 00 ........
 
; ‚ëç¥áâì à §¬¥à ï祩ª¨ ª a-addr1 ¨ ¯®«ãç¨âì a-addr2.
LEA EAX, [EAX+4]
 
59D010 8D 40 04 @.
 
RET
 
59D013 C3 Ã
 
EndCode
 
Code CELL- ;( a-addr1 -- a-addr2 ) \ 94
 
59D014 30 D0 59 00 00 05 43 45 4C 4C 2D FD CF 59 00 00 0ÐY...CELL-ýÏY..
59D024 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
; ‚ëç¥áâì à §¬¥à ï祩ª¨ ª a-addr1 ¨ ¯®«ãç¨âì a-addr2.
LEA EAX, [EAX-4]
 
59D030 8D 40 FC @ü
 
RET
 
59D033 C3 Ã
 
EndCode
 
Code CELLS ;( n1 -- n2 ) \ 94
 
59D034 50 D0 59 00 00 05 43 45 4C 4C 53 19 D0 59 00 00 PÐY...CELLS.ÐY..
59D044 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
; n2 - à §¬¥à n1 ï祥ª.
LEA EAX, DWORD PTR [EAX *4 ]
 
59D050 8D 04 85 00 00 00 00 .…....
 
RET
 
59D057 C3 Ã
 
EndCode
 
 
Code + ;( n1|u1 n2|u2 -- n3|u3 ) \ 94
 
59D058 70 D0 59 00 00 01 2B 39 D0 59 00 00 00 00 00 00 pÐY...+9ÐY......
59D068 00 00 00 00 00 00 00 00 ........
 
; ‘«®¦¨âì n1|u1 ¨ n2|u2 ¨ ¯®«ãç¨âì á㬬ã n3|u3.
ADD EAX, DWORD PTR [EBP]
 
59D070 03 45 00 .E.
 
LEA EBP, [EBP+4]
 
59D073 8D 6D 04 m.
 
RET
 
59D076 C3 Ã
 
EndCode
 
Code D+ ;( d1|ud1 d2|ud2 -- d3|ud3 ) \ 94 DOUBLE
 
59D077 90 D0 59 00 00 02 44 2B 5D D0 59 00 00 00 00 00 ÐY...D+]ÐY.....
59D087 00 00 00 00 00 00 00 00 00 .........
 
; ‘«®¦¨âì d1|ud1 ¨ d2|ud2 ¨ ¤ âì á㬬ã d3|ud3.
MOV EDX, DWORD PTR [EBP]
 
59D090 8B 55 00 ‹U.
 
ADD DWORD PTR [EBP + { 2 CELLS } ], EDX
 
59D093 01 55 08 .U.
 
ADC EAX, DWORD PTR [EBP +4 ]
 
59D096 13 45 04 .E.
 
LEA EBP, [EBP+8]
 
59D099 8D 6D 08 m.
 
RET
 
59D09C C3 Ã
 
EndCode
 
Code D- ;( d1 d2 -- d3 ) \ 94 DOUBLE
 
59D09D B0 D0 59 00 00 02 44 2D 7C D0 59 00 00 00 00 00 °ÐY...D-|ÐY.....
59D0AD 00 00 00 ...
 
; perform a double subtract (64bit)
MOV EDX, DWORD PTR [EBP]
 
59D0B0 8B 55 00 ‹U.
 
SUB DWORD PTR [EBP + { 2 CELLS } ], EDX
 
59D0B3 29 55 08 )U.
 
SBB [EBP+4], EAX
 
59D0B6 19 45 04 .E.
 
MOV EAX, DWORD PTR [EBP +4 ]
 
59D0B9 8B 45 04 ‹E.
 
LEA EBP, [EBP+8]
 
59D0BC 8D 6D 08 m.
 
RET
 
59D0BF C3 Ã
 
EndCode
Code - ;( n1|u1 n2|u2 -- n3|u3 ) \ 94
 
59D0C0 D0 D0 59 00 00 01 2D A2 D0 59 00 00 00 00 00 00 ÐÐY...-¢ÐY......
 
; ‚ëç¥áâì n2|u2 ¨§ n1|u1 ¨ ¯®«ãç¨âì à §­®áâì n3|u3.
NEG EAX
 
59D0D0 F7 D8 ֯
 
ADD EAX, [EBP]
 
59D0D2 03 45 00 .E.
 
LEA EBP, [EBP+4]
 
59D0D5 8D 6D 04 m.
 
RET
 
59D0D8 C3 Ã
 
EndCode
 
Code 1+! ;( A -> )
 
59D0D9 F0 D0 59 00 00 03 31 2B 21 C5 D0 59 00 00 00 00 ðÐY...1+!ÅÐY....
59D0E9 00 00 00 00 00 00 00 .......
 
INC DWORD PTR [EAX ]
 
59D0F0 FF 00 ÿ.
 
MOV EAX, [EBP]
 
59D0F2 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D0F5 8D 6D 04 m.
 
RET
 
59D0F8 C3 Ã
 
EndCode
 
Code 0! ;( A -> )
 
59D0F9 10 D1 59 00 00 02 30 21 DE D0 59 00 00 00 00 00 .ÑY...0!ÞÐY.....
59D109 00 00 00 00 00 00 00 .......
 
MOV DWORD PTR [EAX ], 0
 
59D110 C7 00 00 00 00 00 Ç.....
 
MOV EAX, [EBP]
 
59D116 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D119 8D 6D 04 m.
 
RET
 
59D11C C3 Ã
 
EndCode
 
Code COUNT ;( c-addr1 -- c-addr2 u ) \ 94
 
59D11D 30 D1 59 00 00 05 43 4F 55 4E 54 FE D0 59 00 00 0ÑY...COUNTþÐY..
59D12D 00 00 00 ...
 
; ®«ãç¨âì áâபã ᨬ¢®«®¢ ¨§ áâப¨ á® áç¥â稪®¬ c-addr1.
; c-addr2 -  ¤à¥á ¯¥à¢®£® ᨬ¢®«  §  c-addr1.
; u - ᮤ¥à¦¨¬®¥ ¡ ©â  c-addr1, ïî饥áï ¤«¨­®© áâப¨ ᨬ¢®«®¢,
; ­ ç¨­ î饩áï á  ¤à¥á  c-addr2.
LEA EBP, [EBP-4]
 
59D130 8D 6D FC mü
 
LEA EDX, DWORD PTR [EAX +1 ]
 
59D133 8D 50 01 P.
 
MOV DWORD PTR [EBP], EDX
 
59D136 89 55 00 ‰U.
 
MOVZX EAX, BYTE PTR [EAX ]
 
59D139 0F B6 00 .¶.
 
RET
 
59D13C C3 Ã
 
EndCode
 
Code * ;( n1|u1 n2|u2 -- n3|u3 ) \ 94
 
59D13D 50 D1 59 00 00 01 2A 22 D1 59 00 00 00 00 00 00 PÑY...*"ÑY......
59D14D 00 00 00 ...
 
; ¥à¥¬­®¦¨âì n1|u1 ¨ n2|u2 ¨ ¯®«ãç¨âì ¯à®¨§¢¥¤¥­¨¥ n3|u3.
IMUL DWORD PTR [EBP]
 
59D150 F7 6D 00 ÷m.
 
LEA EBP, [EBP+4]
 
59D153 8D 6D 04 m.
 
RET
 
59D156 C3 Ã
 
EndCode
 
Code AND ;( x1 x2 -- x3 ) \ 94
 
59D157 70 D1 59 00 00 03 41 4E 44 42 D1 59 00 00 00 00 pÑY...ANDBÑY....
59D167 00 00 00 00 00 00 00 00 00 .........
 
; x3 - ¯®¡¨â®¢®¥ "ˆ" x1 ¨ x2.
AND EAX, [EBP]
 
59D170 23 45 00 #E.
 
LEA EBP, [EBP+4]
 
59D173 8D 6D 04 m.
 
RET
 
59D176 C3 Ã
 
EndCode
 
Code OR ;( x1 x2 -- x3 ) \ 94
 
59D177 90 D1 59 00 00 02 4F 52 5C D1 59 00 00 00 00 00 ÑY...OR\ÑY.....
59D187 00 00 00 00 00 00 00 00 00 .........
 
; x3 - ¯®¡¨â®¢®¥ "ˆ‹ˆ" x1 ¨ x2.
OR EAX, [EBP]
 
59D190 0B 45 00 .E.
 
LEA EBP, [EBP+4]
 
59D193 8D 6D 04 m.
 
RET
 
59D196 C3 Ã
 
EndCode
 
Code XOR ;( x1 x2 -- x3 ) \ 94
 
59D197 B0 D1 59 00 00 03 58 4F 52 7C D1 59 00 00 00 00 °ÑY...XOR|ÑY....
59D1A7 00 00 00 00 00 00 00 00 00 .........
 
; x3 - ¯®¡¨â®¢®¥ "¨áª«îç î饥 ˆ‹ˆ" x1 ¨ x2.
XOR EAX, [EBP]
 
59D1B0 33 45 00 3E.
 
LEA EBP, [EBP+4]
 
59D1B3 8D 6D 04 m.
 
RET
 
59D1B6 C3 Ã
 
EndCode
 
Code INVERT ;( x1 -- x2 ) \ 94
 
59D1B7 D0 D1 59 00 00 06 49 4E 56 45 52 54 9C D1 59 00 ÐÑY...INVERTœÑY.
59D1C7 00 00 00 00 00 00 00 00 00 .........
 
; ˆ­¢¥àâ¨à®¢ âì ¢á¥ ¡¨âë x1 ¨ ¯®«ãç¨âì «®£¨ç¥áªãî ¨­¢¥àá¨î x2.
NOT EAX
 
59D1D0 F7 D0 ÷Ð
 
RET
 
59D1D2 C3 Ã
 
EndCode
 
Code NEGATE ;( n1 -- n2 ) \ 94
 
59D1D3 F0 D1 59 00 00 06 4E 45 47 41 54 45 BC D1 59 00 ðÑY...NEGATE¼ÑY.
59D1E3 00 00 00 00 00 00 00 00 00 00 00 00 00 .............
 
; n2 -  à¨ä¬¥â¨ç¥áª ï ¨­¢¥àá¨ï n1.
NEG EAX
 
59D1F0 F7 D8 ֯
 
RET
 
59D1F2 C3 Ã
 
EndCode
 
Code ABS ;( n -- u ) \ 94
 
59D1F3 00 D2 59 00 00 03 41 42 53 D8 D1 59 00 .ÒY...ABSØÑY.
 
; u -  ¡á®«îâ­ ï ¢¥«¨ç¨­  n.
TEST EAX, EAX
 
59D200 85 C0 …À
 
JS { ' NEGATE }
 
59D202 78 EC xì
 
RET
 
59D204 C3 Ã
 
EndCode
 
Code DNEGATE ;( d1 -- d2 ) \ 94 DOUBLE
 
59D205 20 D2 59 00 00 07 44 4E 45 47 41 54 45 F8 D1 59 ÒY...DNEGATEøÑY
59D215 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; d2 १ã«ìâ â ¢ëç¨â ­¨ï d1 ¨§ ­ã«ï.
MOV EDX, [EBP]
 
59D220 8B 55 00 ‹U.
 
NEG EAX
 
59D223 F7 D8 ֯
 
NEG EDX
 
59D225 F7 DA ÷Ú
 
SBB EAX, 0
 
59D227 83 D8 00 į.
 
MOV DWORD PTR [EBP], EDX
 
59D22A 89 55 00 ‰U.
 
RET
 
59D22D C3 Ã
 
EndCode
 
Code NOOP ;( -> )
 
59D22E 40 D2 59 00 00 04 4E 4F 4F 50 0A D2 59 00 00 00 @ÒY...NOOP.ÒY...
59D23E 00 00 ..
 
RET
 
59D240 C3 Ã
 
EndCode
 
Code S>D ;( n -- d ) \ 94
 
59D241 50 D2 59 00 00 03 53 3E 44 33 D2 59 00 00 00 PÒY...S>D3ÒY...
 
; à¥®¡à §®¢ âì ç¨á«® n ¢ ¤¢®©­®¥ ç¨á«® d á ⥬ ¦¥ ç¨á«®¢ë¬ §­ ç¥­¨¥¬.
LEA EBP, [EBP-4]
 
59D250 8D 6D FC mü
 
MOV [EBP], EAX
 
59D253 89 45 00 ‰E.
 
CDQ
 
59D256 99 ™
 
MOV EAX, EDX
 
59D257 8B C2 ‹Â
 
RET
 
59D259 C3 Ã
 
EndCode
 
Code D>S ;( d -- n ) \ 94 DOUBLE
 
59D25A 70 D2 59 00 00 03 44 3E 53 46 D2 59 00 00 00 00 pÒY...D>SFÒY....
59D26A 00 00 00 00 00 00 ......
 
; n - íª¢¨¢ «¥­â d.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ d ­ å®¤¨âáï ¢­¥ ¤¨ ¯ §®­ 
; §­ ª®¢ëå ®¤¨­ à­ëå ç¨á¥«.
MOV EAX, [EBP]
 
59D270 8B 45 00 ‹E.
 
ADD EBP, 4
 
59D273 83 C5 04 ā.
 
RET
 
59D276 C3 Ã
 
EndCode
 
Code U>D ;( U -> D ) \ à áè¨à¨âì ç¨á«® ¤® ¤¢®©­®© â®ç­®á⨠­ã«¥¬
 
59D277 90 D2 59 00 00 03 55 3E 44 5F D2 59 00 00 00 00 ÒY...U>D_ÒY....
59D287 00 00 00 00 00 00 00 00 00 .........
 
LEA EBP, [EBP-4]
 
59D290 8D 6D FC mü
 
MOV [EBP], EAX
 
59D293 89 45 00 ‰E.
 
XOR EAX, EAX
 
59D296 33 C0 3À
 
RET
 
59D298 C3 Ã
 
EndCode
 
Code C>S ;( c -- n ) \ à áè¨à¨âì CHAR
 
59D299 B0 D2 59 00 00 03 43 3E 53 7C D2 59 00 00 00 00 °ÒY...C>S|ÒY....
59D2A9 00 00 00 00 00 00 00 .......
 
MOVSX EAX, AL
 
59D2B0 0F BE C0 .¾À
 
RET
 
59D2B3 C3 Ã
 
EndCode
 
Code UM* ;( u1 u2 -- ud ) \ 94
 
59D2B4 D0 D2 59 00 00 03 55 4D 2A 9E D2 59 00 00 00 00 ÐÒY...UM*žÒY....
59D2C4 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
; ud - ¯à®¨§¢¥¤¥­¨¥ u1 ¨ u2. ‚ᥠ§­ ç¥­¨ï ¨  à¨ä¬¥â¨ª  ¡¥§§­ ª®¢ë¥.
MUL DWORD PTR [EBP]
 
59D2D0 F7 65 00 ÷e.
 
MOV [EBP], EAX
 
59D2D3 89 45 00 ‰E.
 
MOV EAX, EDX
 
59D2D6 8B C2 ‹Â
 
RET
 
59D2D8 C3 Ã
 
EndCode
 
Code / ;( n1 n2 -- n3 ) \ 94
 
59D2D9 F0 D2 59 00 00 01 2F B9 D2 59 00 00 00 00 00 00 ðÒY.../¹ÒY......
59D2E9 00 00 00 00 00 00 00 .......
 
; „¥«¨âì n1 ­  n2, ¯®«ãç¨âì ç áâ­®¥ n3.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n2 à ¢¥­ ­ã«î.
; …᫨ n1 ¨ n2 à §«¨ç îâáï ¯® §­ ªã - ¢®§¢à é ¥¬ë© १ã«ìâ â § ¢¨á¨â ®â
; ॠ«¨§ æ¨¨.
MOV ECX, EAX
 
59D2F0 8B C8 ‹È
 
MOV EAX, [EBP]
 
59D2F2 8B 45 00 ‹E.
 
CDQ
 
59D2F5 99 ™
 
IDIV ECX
 
59D2F6 F7 F9 ÷ù
 
LEA EBP, [EBP+4]
 
59D2F8 8D 6D 04 m.
 
RET
 
59D2FB C3 Ã
 
EndCode
 
Code U/ ;( W1, W2 -> W3 ) \ ¡¥§§­ ª®¢®¥ ¤¥«¥­¨¥ W1 ­  W2
 
59D2FC 10 D3 59 00 00 02 55 2F DE D2 59 00 00 00 00 00 .ÓY...U/ÞÒY.....
59D30C 00 00 00 00 ....
 
MOV ECX, EAX
 
59D310 8B C8 ‹È
 
MOV EAX, [EBP]
 
59D312 8B 45 00 ‹E.
 
XOR EDX, EDX
 
59D315 33 D2 3Ò
 
LEA EBP, [EBP+4]
 
59D317 8D 6D 04 m.
 
DIV ECX
 
59D31A F7 F1 ֖
 
RET
 
59D31C C3 Ã
 
EndCode
 
Code +! ;( n|u a-addr -- ) \ 94 \ !!!!!
 
59D31D 30 D3 59 00 00 02 2B 21 01 D3 59 00 00 00 00 00 0ÓY...+!.ÓY.....
59D32D 00 00 00 ...
 
; à¨¡ ¢¨âì n|u ª ®¤¨­ à­®¬ã ç¨á«ã ¯®  ¤à¥áã a-addr.
MOV EDX, [EBP]
 
59D330 8B 55 00 ‹U.
 
ADD DWORD PTR [EAX ], EDX
 
59D333 01 10 ..
 
MOV EAX, [EBP+4]
 
59D335 8B 45 04 ‹E.
 
LEA EBP, [EBP+8]
 
59D338 8D 6D 08 m.
 
RET
 
59D33B C3 Ã
 
EndCode
 
Code MOD ;( n1 n2 -- n3 ) \ 94
 
59D33C 50 D3 59 00 00 03 4D 4F 44 22 D3 59 00 00 00 00 PÓY...MOD"ÓY....
59D34C 00 00 00 00 ....
 
; „¥«¨âì n1 ­  n2, ¯®«ãç¨âì ®áâ â®ª n3.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n2 à ¢¥­ ­ã«î.
; …᫨ n1 ¨ n2 à §«¨ç îâáï ¯® §­ ªã - ¢®§¢à é ¥¬ë© १ã«ìâ â § ¢¨á¨â ®â
; ॠ«¨§ æ¨¨.
MOV ECX, EAX
 
59D350 8B C8 ‹È
 
MOV EAX, [EBP]
 
59D352 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D355 8D 6D 04 m.
 
CDQ
 
59D358 99 ™
 
IDIV ECX
 
59D359 F7 F9 ÷ù
 
MOV EAX, EDX
 
59D35B 8B C2 ‹Â
 
RET
 
59D35D C3 Ã
 
EndCode
 
Code /MOD ;( n1 n2 -- n3 n4 ) \ 94
 
59D35E 70 D3 59 00 00 04 2F 4D 4F 44 41 D3 59 00 00 00 pÓY.../MODAÓY...
59D36E 00 00 ..
 
; „¥«¨âì n1 ­  n2, ¤ âì ®áâ â®ª n3 ¨ ç áâ­®¥ n4.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n2 ­ã«ì.
MOV ECX, EAX
 
59D370 8B C8 ‹È
 
MOV EAX, [EBP]
 
59D372 8B 45 00 ‹E.
 
CDQ
 
59D375 99 ™
 
IDIV ECX
 
59D376 F7 F9 ÷ù
 
MOV [EBP], EDX
 
59D378 89 55 00 ‰U.
 
RET
 
59D37B C3 Ã
 
EndCode
 
Code UMOD ;( W1, W2 -> W3 ) \ ®áâ â®ª ®â ¤¥«¥­¨ï W1 ­  W2
 
59D37C 90 D3 59 00 00 04 55 4D 4F 44 63 D3 59 00 00 00 ÓY...UMODcÓY...
59D38C 00 00 00 00 ....
 
MOV ECX, EAX
 
59D390 8B C8 ‹È
 
XOR EDX, EDX
 
59D392 33 D2 3Ò
 
MOV EAX, [EBP]
 
59D394 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D397 8D 6D 04 m.
 
DIV ECX
 
59D39A F7 F1 ֖
 
MOV EAX, EDX
 
59D39C 8B C2 ‹Â
 
RET
 
59D39E C3 Ã
 
EndCode
 
Code UM/MOD ;( ud u1 -- u2 u3 ) \ 94
 
59D39F B0 D3 59 00 00 06 55 4D 2F 4D 4F 44 81 D3 59 00 °ÓY...UM/MODÓY.
59D3AF 00 .
 
; „¥«¨âì ud ­  u1, ¯®«ãç¨âì ç áâ­®¥ u3 ¨ ®áâ â®ª u2.
; ‚ᥠ§­ ç¥­¨ï ¨  à¨ä¬¥â¨ª  ¡¥§§­ ª®¢ë¥.
; ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ u1 ­®«ì ¨«¨ ç áâ­®¥
; ­ å®¤¨âáï ¢­¥ ¤¨ ¯ §®­  ®¤¨­ à­ëå ¡¥§§­ ª®¢ëå ç¨á¥«.
MOV ECX, EAX
 
59D3B0 8B C8 ‹È
 
MOV EDX, [EBP]
 
59D3B2 8B 55 00 ‹U.
 
MOV EAX, [EBP+4]
 
59D3B5 8B 45 04 ‹E.
 
DIV ECX
 
59D3B8 F7 F1 ֖
 
LEA EBP, [EBP+4]
 
59D3BA 8D 6D 04 m.
 
MOV [EBP], EDX
 
59D3BD 89 55 00 ‰U.
 
 
RET
 
59D3C0 C3 Ã
 
EndCode
 
Code 2/ ;( x1 -- x2 ) \ 94
 
59D3C1 D0 D3 59 00 00 02 32 2F A4 D3 59 00 00 00 00 ÐÓY...2/¤ÓY....
 
; x2 - १ã«ìâ â ᤢ¨£  x1 ­  ®¤¨­ ¡¨â ¢¯à ¢® ¡¥§ ¨§¬¥­¥­¨ï áâ à襣® ¡¨â .
SAR EAX,1
 
59D3D0 D1 F8 Ñø
 
RET
 
59D3D2 C3 Ã
 
EndCode
 
Code */MOD ;( n1 n2 n3 -- n4 n5 ) \ 94
 
59D3D3 F0 D3 59 00 00 05 2A 2F 4D 4F 44 C6 D3 59 00 00 ðÓY...*/MODÆÓY..
59D3E3 00 00 00 00 00 00 00 00 00 00 00 00 00 .............
 
; “¬­®¦¨âì n1 ­  n2, ¯®«ãç¨âì ¯à®¬¥¦ãâ®ç­ë© ¤¢®©­®© १ã«ìâ â d.
;  §¤¥«¨âì d ­  n3, ¯®«ãç¨âì ®áâ â®ª n4 ¨ ç áâ­®¥ n5.
MOV EBX, EAX
 
59D3F0 8B D8 ‹Ø
 
MOV EAX, [EBP]
 
59D3F2 8B 45 00 ‹E.
 
MOV ECX, [EBP+4]
 
59D3F5 8B 4D 04 ‹M.
 
IMUL ECX
 
59D3F8 F7 E9 ֎
 
IDIV EBX
 
59D3FA F7 FB ÷û
 
MOV [EBP+4], EDX
 
59D3FC 89 55 04 ‰U.
 
LEA EBP, [EBP+4]
 
59D3FF 8D 6D 04 m.
 
RET
 
59D402 C3 Ã
 
EndCode
 
Code M* ;( n1 n2 -- d ) \ 94
 
59D403 10 D4 59 00 00 02 4D 2A D8 D3 59 00 00 .ÔY...M*ØÓY..
 
; d - §­ ª®¢ë© १ã«ìâ â 㬭®¦¥­¨ï n1 ­  n2.
IMUL DWORD PTR [EBP]
 
59D410 F7 6D 00 ÷m.
 
MOV [EBP], EAX
 
59D413 89 45 00 ‰E.
 
MOV EAX, EDX
 
59D416 8B C2 ‹Â
 
RET
 
59D418 C3 Ã
 
EndCode
 
Code LSHIFT ;( x1 u -- x2 ) ; 94
 
59D419 30 D4 59 00 00 06 4C 53 48 49 46 54 08 D4 59 00 0ÔY...LSHIFT.ÔY.
59D429 00 00 00 00 00 00 00 .......
 
; ‘¤¢¨­ãâì x1 ­  u ¡¨â ¢«¥¢®. ®¬¥áâ¨âì ­ã«¨ ¢ ­ ¨¬¥­¥¥ §­ ç¨¬ë¥ ¡¨âë,
; ®á¢®¡®¦¤ ¥¬ë¥ ¯à¨ ᤢ¨£¥.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ u ¡®«ìè¥ ¨«¨ à ¢­®
; ç¨á«ã ¡¨â ¢ ï祩ª¥.
MOV ECX, EAX
 
59D430 8B C8 ‹È
 
MOV EAX, [EBP]
 
59D432 8B 45 00 ‹E.
 
SHL EAX, CL
 
59D435 D3 E0 Óà
 
LEA EBP, [EBP+4]
 
59D437 8D 6D 04 m.
 
RET
 
59D43A C3 Ã
 
EndCode
 
Code RSHIFT ;( x1 u -- x2 ) \ 94
 
59D43B 50 D4 59 00 00 06 52 53 48 49 46 54 1E D4 59 00 PÔY...RSHIFT.ÔY.
59D44B 00 00 00 00 00 .....
 
; ‘¤¢¨­ãâì x1 ­  u ¡¨â ¢¯à ¢®. ®¬¥áâ¨âì ­ã«¨ ¢ ­ ¨¡®«¥¥ §­ ç¨¬ë¥ ¡¨âë,
; ®á¢®¡®¦¤ ¥¬ë¥ ¯à¨ ᤢ¨£¥.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ u ¡®«ìè¥ ¨«¨ à ¢­®
; ç¨á«ã ¡¨â ¢ ï祩ª¥.
MOV ECX, EAX
 
59D450 8B C8 ‹È
 
MOV EAX, [EBP]
 
59D452 8B 45 00 ‹E.
 
SHR EAX, CL
 
59D455 D3 E8 Óè
 
LEA EBP, [EBP+4]
 
59D457 8D 6D 04 m.
 
RET
 
59D45A C3 Ã
 
EndCode
 
Code SM/REM ;( d1 n1 -- n2 n3 ) \ 94
 
59D45B 70 D4 59 00 00 06 53 4D 2F 52 45 4D 40 D4 59 00 pÔY...SM/REM@ÔY.
59D46B 00 00 00 00 00 .....
 
;  §¤¥«¨âì d1 ­  n1, ¯®«ãç¨âì ᨬ¬¥âà¨ç­®¥ ç áâ­®¥ n3 ¨ ®áâ â®ª n2.
; ‚室­ë¥ ¨ ¢ë室­ë¥  à£ã¬¥­âë §­ ª®¢ë¥.
; ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n1 ­®«ì, ¨«¨ ç áâ­®¥ ¢­¥
; ¤¨ ¯ §®­  ®¤¨­ à­ëå §­ ª®¢ëå ç¨á¥«.
MOV EBX, EAX
 
59D470 8B D8 ‹Ø
 
MOV EDX, [EBP]
 
59D472 8B 55 00 ‹U.
 
MOV EAX, [EBP+4]
 
59D475 8B 45 04 ‹E.
 
IDIV EBX
 
59D478 F7 FB ÷û
 
LEA EBP, [EBP+4]
 
59D47A 8D 6D 04 m.
 
MOV [EBP], EDX
 
59D47D 89 55 00 ‰U.
 
RET
 
59D480 C3 Ã
 
EndCode
 
Code FM/MOD ;( d1 n1 -- n2 n3 ) \ 94
 
59D481 A0 D4 59 00 00 06 46 4D 2F 4D 4F 44 60 D4 59 00  ÔY...FM/MOD`ÔY.
59D491 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
 
; Ðàçäåëèòü d1 íà n1, ïîëó÷èòü ÷àñòíîå n3 è îñòàòîê n2.
; Âõîäíûå è âûõîäíûå àðãóìåíòû çíàêîâûå.
; Íåîäíîçíà÷íàÿ ñèòóàöèÿ âîçíèêàåò, åñëè n1 íîëü, èëè ÷àñòíîå âíå
; äèàïàçîíà îäèíàðíûõ çíàêîâûõ ÷èñåë.
MOV ECX, EAX
 
59D4A0 8B C8 ‹È
 
MOV EDX, [EBP]
 
59D4A2 8B 55 00 ‹U.
 
MOV EBX, EDX
 
59D4A5 8B DA ‹Ú
 
MOV EAX, [EBP+4]
 
59D4A7 8B 45 04 ‹E.
 
IDIV ECX
 
59D4AA F7 F9 ÷ù
 
TEST EDX, EDX ; Îñòàòîê-òî åñòü?
 
59D4AC 85 D2 …Ò
 
JZ SHORT @@1
 
59D4AE 74 07 t.
 
XOR EBX, ECX ; À àðãóìåíòû ðàçíîãî çíàêà?
 
59D4B0 33 D9 3Ù
 
JNS SHORT @@1
 
59D4B2 79 03 y.
 
DEC EAX
 
59D4B4 48 H
 
ADD EDX, ECX
 
59D4B5 03 D1 .Ñ
 
@@1: LEA EBP, [EBP+4]
 
59D4B7 8D 6D 04 m.
 
MOV [EBP], EDX
 
59D4BA 89 55 00 ‰U.
 
RET
 
59D4BD C3 Ã
 
EndCode
 
\ ================================================================
\ ‘à ¢­¥­¨ï
 
Code = ;( x1 x2 -- flag ) \ 94
 
59D4BE D0 D4 59 00 00 01 3D 86 D4 59 00 00 00 00 00 00 ÐÔY...=†ÔY......
59D4CE 00 00 ..
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x1 ¯®¡¨â­® à ¢¥­ x2.
XOR EAX, [EBP]
 
59D4D0 33 45 00 3E.
 
SUB EAX, 1
 
59D4D3 83 E8 01 ď.
 
SBB EAX, EAX
 
59D4D6 1B C0 .À
 
LEA EBP, [EBP+4]
 
59D4D8 8D 6D 04 m.
 
RET
 
59D4DB C3 Ã
 
EndCode
 
Code <> ;( x1 x2 -- flag ) \ 94 CORE EXT
 
59D4DC F0 D4 59 00 00 02 3C 3E C3 D4 59 00 00 00 00 00 ðÔY...<>ÃÔY.....
59D4EC 00 00 00 00 ....
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x1 ­¥ à ¢¥­ x2.
XOR EAX, [EBP]
 
59D4F0 33 45 00 3E.
 
NEG EAX
 
59D4F3 F7 D8 ֯
 
SBB EAX, EAX
 
59D4F5 1B C0 .À
 
LEA EBP, [EBP+4]
 
59D4F7 8D 6D 04 m.
 
RET
 
59D4FA C3 Ã
 
EndCode
 
Code < ;( n1 n2 -- flag ) \ 94
 
59D4FB 10 D5 59 00 00 01 3C E1 D4 59 00 00 00 00 00 00 .ÕY...<áÔY......
59D50B 00 00 00 00 00 .....
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  n1 ¬¥­ìè¥ n2.
CMP [EBP], EAX
 
59D510 39 45 00 9E.
 
SETGE AL
 
59D513 0F 9D C0 .À
 
AND EAX, 01
 
59D516 83 E0 01 Ĉ.
 
DEC EAX
 
59D519 48 H
 
LEA EBP, [EBP+4]
 
59D51A 8D 6D 04 m.
 
RET
 
59D51D C3 Ã
 
EndCode
 
Code > ;( n1 n2 -- flag ) \ 94
 
59D51E 30 D5 59 00 00 01 3E 00 D5 59 00 00 00 00 00 00 0ÕY...>.ÕY......
59D52E 00 00 ..
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  n1 ¡®«ìè¥ n2.
CMP EAX, [EBP]
 
59D530 3B 45 00 ;E.
 
SETGE AL
 
59D533 0F 9D C0 .À
 
AND EAX, 01
 
59D536 83 E0 01 Ĉ.
 
DEC EAX
 
59D539 48 H
 
LEA EBP, [EBP+4]
 
59D53A 8D 6D 04 m.
 
RET
 
59D53D C3 Ã
 
EndCode
 
Code WITHIN ;( n1 low high -- f1 ) \ f1=true if ((n1 >= low) & (n1 < high))
 
59D53E 50 D5 59 00 00 06 57 49 54 48 49 4E 23 D5 59 00 PÕY...WITHIN#ÕY.
59D54E 00 00 ..
 
MOV EBX, [EBP+4]
 
59D550 8B 5D 04 ‹].
 
SUB EAX, [EBP]
 
59D553 2B 45 00 +E.
 
SUB EBX, [EBP]
 
59D556 2B 5D 00 +].
 
SUB EBX, EAX
 
59D559 2B D8 +Ø
 
SBB EAX, EAX
 
59D55B 1B C0 .À
 
ADD EBP, 8
 
59D55D 83 C5 08 ā.
 
RET
 
59D560 C3 Ã
 
EndCode
 
Code D< ;( d1 d2 -- flag ) \ DOUBLE
 
59D561 70 D5 59 00 00 02 44 3C 43 D5 59 00 00 00 00 pÕY...D<CÕY....
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  d1 ¬¥­ìè¥ d2.
MOV EBX, [EBP]
 
59D570 8B 5D 00 ‹].
 
CMP DWORD PTR [EBP +8 ], EBX
 
59D573 39 5D 08 9].
 
SBB DWORD PTR [EBP +4 ], EAX
 
59D576 19 45 04 .E.
 
MOV EAX, 0
 
59D579 B8 00 00 00 00 ¸....
 
SIF <
 
59D57E 7D 01 }.
 
DEC EAX
 
59D580 48 H
 
STHEN
ADD EBP, 0CH
 
59D581 83 C5 0C ā.
 
RET
 
59D584 C3 Ã
 
EndCode
 
Code D> ;( d1 d2 -- flag ) \ DOUBLE
 
59D585 A0 D5 59 00 00 02 44 3E 66 D5 59 00 00 00 00 00  ÕY...D>fÕY.....
59D595 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  d1 ¡®«ìè¥ d2.
MOV EBX, [EBP]
 
59D5A0 8B 5D 00 ‹].
 
CMP EBX, [EBP+8]
 
59D5A3 3B 5D 08 ;].
 
SBB EAX, [EBP+4]
 
59D5A6 1B 45 04 .E.
 
SAR EAX, 1FH
 
59D5A9 C1 F8 1F Áø.
 
ADD EBP, 0CH
 
59D5AC 83 C5 0C ā.
 
RET
 
59D5AF C3 Ã
 
EndCode
 
Code U< ;( u1 u2 -- flag ) \ 94
 
59D5B0 C0 D5 59 00 00 02 55 3C 8A D5 59 00 00 00 00 00 ÀÕY...U<ŠÕY.....
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  u1 ¬¥­ìè¥ u2.
CMP [EBP], EAX
 
59D5C0 39 45 00 9E.
 
SBB EAX, EAX
 
59D5C3 1B C0 .À
 
ADD EBP, 04
 
59D5C5 83 C5 04 ā.
 
RET
 
59D5C8 C3 Ã
 
EndCode
 
Code U> ;( u1 u2 -- flag ) \ 94
 
59D5C9 E0 D5 59 00 00 02 55 3E B5 D5 59 00 00 00 00 00 àÕY...U>µÕY.....
59D5D9 00 00 00 00 00 00 00 .......
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  u1 ¡®«ìè¥ u2.
CMP EAX, [EBP]
 
59D5E0 3B 45 00 ;E.
 
SBB EAX, EAX
 
59D5E3 1B C0 .À
 
ADD EBP, 04
 
59D5E5 83 C5 04 ā.
 
RET
 
59D5E8 C3 Ã
 
EndCode
 
Code 0< ;( n -- flag ) \ 94
 
59D5E9 00 D6 59 00 00 02 30 3C CE D5 59 00 00 00 00 00 .ÖY...0<ÎÕY.....
59D5F9 00 00 00 00 00 00 00 .......
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  n ¬¥­ìè¥ ­ã«ï.
SAR EAX, 1F
 
59D600 C1 F8 1F Áø.
 
RET
 
59D603 C3 Ã
 
EndCode
 
Code 0= ;( x -- flag ) \ 94
 
59D604 10 D6 59 00 00 02 30 3D EE D5 59 00 .ÖY...0=îÕY.
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x à ¢­® ­ã«î.
SUB EAX, 1
 
59D610 83 E8 01 ď.
 
SBB EAX, EAX
 
59D613 1B C0 .À
 
RET
 
59D615 C3 Ã
 
EndCode
 
Code 0<> ;( x -- flag ) \ 94 CORE EXT
 
59D616 30 D6 59 00 00 03 30 3C 3E 09 D6 59 00 00 00 00 0ÖY...0<>.ÖY....
59D626 00 00 00 00 00 00 00 00 00 00 ..........
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  x ­¥ à ¢­® ­ã«î.
NEG EAX
 
59D630 F7 D8 ֯
 
SBB EAX, EAX
 
59D632 1B C0 .À
 
RET
 
59D634 C3 Ã
 
EndCode
 
Code D0= ;( xd -- flag ) \ 94 DOUBLE
 
59D635 50 D6 59 00 00 03 44 30 3D 1B D6 59 00 00 00 00 PÖY...D0=.ÖY....
59D645 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; flag "¨á⨭ " ⮣¤  ¨ ⮫쪮 ⮣¤ , ª®£¤  xd à ¢¥­ ­ã«î.
OR EAX, [EBP]
 
59D650 0B 45 00 .E.
 
SUB EAX, 1
 
59D653 83 E8 01 ď.
 
SBB EAX, EAX
 
59D656 1B C0 .À
 
LEA EBP, [EBP+4]
 
59D658 8D 6D 04 m.
 
RET
 
59D65B C3 Ã
 
EndCode
 
Code D= ;( xd1 xd2 -- flag ) \ 94 DOUBLE
 
59D65C 70 D6 59 00 00 02 44 3D 3A D6 59 00 00 00 00 00 pÖY...D=:ÖY.....
59D66C 00 00 00 00 ....
 
; flag is true if and only if xd1 is bit-for-bit the same as xd2
MOV EDX,[EBP]
 
59D670 8B 55 00 ‹U.
 
XOR EAX,[EBP+4]
 
59D673 33 45 04 3E.
 
XOR EDX,[EBP+8]
 
59D676 33 55 08 3U.
 
OR EAX,EDX
 
59D679 0B C2 .Â
 
SUB EAX,1
 
59D67B 83 E8 01 ď.
 
SBB EAX,EAX
 
59D67E 1B C0 .À
 
LEA EBP,[EBP+0CH]
 
59D680 8D 6D 0C m.
 
RET
 
59D683 C3 Ã
 
EndCode
 
Code D2* ;( xd1 -- xd2 ) \ 94 DOUBLE
 
59D684 A0 D6 59 00 00 03 44 32 2A 61 D6 59 00 00 00 00  ÖY...D2*aÖY....
59D694 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
; xd2 is the result of shifting xd1 one bit toward the most-significant
; bit, filling the vacated least-significant bit with zero
SHL DWORD PTR [EBP], 1
 
59D6A0 D1 65 00 Ñe.
 
RCL EAX, 1
 
59D6A3 D1 D0 ÑÐ
 
RET
 
59D6A5 C3 Ã
 
EndCode
 
Code D2/ ;( xd1 -- xd2 ) \ 94 DOUBLE
 
59D6A6 C0 D6 59 00 00 03 44 32 2F 89 D6 59 00 00 00 00 ÀÖY...D2/‰ÖY....
59D6B6 00 00 00 00 00 00 00 00 00 00 ..........
 
; xd2 is the result of shifting xd1 one bit toward the least-significant bit,
; leaving the most-significant bit unchanged
SAR EAX, 1
 
59D6C0 D1 F8 Ñø
 
RCR DWORD PTR [EBP], 1
 
59D6C2 D1 5D 00 Ñ].
 
RET
 
59D6C5 C3 Ã
 
EndCode
 
\ ================================================================
\ ‘âப¨
 
Code -TRAILING ;( c-addr u1 -- c-addr u2 ) \ 94 STRING
 
59D6C6 E0 D6 59 00 00 09 2D 54 52 41 49 4C 49 4E 47 AB àÖY...-TRAILING«
59D6D6 D6 59 00 00 00 00 00 00 00 00 ÖY........
 
; …᫨ u1 ¡®«ìè¥ ­ã«ï, u2 à ¢­® u1, 㬥­ì襭­®¬ã ­  ª®«¨ç¥á⢮ ¯à®¡¥«®¢ ¢ ª®­æ¥
; ᨬ¢®«ì­®© áâப¨, § ¤ ­­®© c-addr ¨ u1. …᫨ u1 ­®«ì ¨«¨ ¢áï áâப  á®á⮨â
; ¨§ ¯à®¡¥«®¢, u2 ­®«ì.
PUSH EDI
 
59D6E0 57 W
 
MOV ECX, EAX
 
59D6E1 8B C8 ‹È
 
SIF C0<>
 
59D6E3 E3 11 ã.
 
MOV EDI, DWORD PTR [EBP]
 
59D6E5 8B 7D 00 ‹}.
 
ADD EDI, ECX
 
59D6E8 03 F9 .ù
 
DEC EDI
 
59D6EA 4F O
 
MOV AL, 20H
 
59D6EB B0 20 °
 
STD
 
59D6ED FD ý
 
REPZ SCASB
 
59D6EE F3 AE ó®
 
SIF 0<>
 
59D6F0 74 01 t.
 
INC ECX
 
59D6F2 41 A
 
STHEN
CLD
 
59D6F3 FC ü
 
MOV EAX, ECX
 
59D6F4 8B C1 ‹Á
 
STHEN
POP EDI
 
59D6F6 5F _
 
RET
 
59D6F7 C3 Ã
 
EndCode
 
Code COMPARE ;( c-addr1 u1 c-addr2 u2 -- n ) \ 94 STRING !!!!!
 
59D6F8 10 D7 59 00 00 07 43 4F 4D 50 41 52 45 CB D6 59 .×Y...COMPAREËÖY
59D708 00 00 00 00 00 00 00 00 ........
 
; ‘à ¢­¨âì áâபã, § ¤ ­­ãî c-addr1 u1, á® áâப®©, § ¤ ­­®© c-addr2 u2.
; ‘âப¨ áà ¢­¨¢ îâáï, ­ ç¨­ ï á § ¤ ­­ëå  ¤à¥á®¢, ᨬ¢®« §  ᨬ¢®«®¬, ¤® ¤«¨­ë
; ­ ¨¡®«¥¥ ª®à®âª®© ¨§ áâப ¨«¨ ¤® ­ å®¦¤¥­¨ï à §«¨ç¨©. …᫨ ¤¢¥ áâப¨
; ¨¤¥­â¨ç­ë, n ­®«ì. …᫨ ¤¢¥ áâப¨ ¨¤¥­â¨ç­ë ¤® ¤«¨­ë ­ ¨¡®«¥¥ ª®à®âª®© ¨§
; áâப, â® n ¬¨­ãá ¥¤¨­¨æ  (-1), ¥á«¨ u1 ¬¥­ìè¥ u2, ¨­ ç¥ ¥¤¨­¨æ  (1).
; …᫨ ¤¢¥ áâப¨ ­¥ ¨¤¥­â¨ç­ë ¤® ¤«¨­ë ­ ¨¡®«¥¥ ª®à®âª®© ¨§ áâப, â® n ¬¨­ãá
; ¥¤¨­¨æ  (-1), ¥á«¨ ¯¥à¢ë© ­¥á®¢¯ ¤ î騩 ᨬ¢®« áâப¨, § ¤ ­­®© c-addr1 u1
; ¨¬¥¥â ¬¥­ì襥 ç¨á«®¢®¥ §­ ç¥­¨¥, 祬 ᮮ⢥âáâ¢ãî騩 ᨬ¢®« ¢ áâப¥,
; § ¤ ­­®© c-addr2 u2, ¨ ¥¤¨­¨æ  ¢ ¯à®â¨¢­®¬ á«ãç ¥.
PUSH EDI
 
59D710 57 W
 
MOV ECX, EAX
 
59D711 8B C8 ‹È
 
SUB EAX, EAX
 
59D713 2B C0 +À
 
CMP ECX, [EBP +4 ]
 
59D715 3B 4D 04 ;M.
 
SIF 0<>
 
59D718 74 09 t.
 
SIF U<
 
59D71A 73 03 s.
 
INC EAX
 
59D71C 40 @
 
SELSE
 
59D71D EB 04 ë.
 
DEC EAX
 
59D71F 48 H
 
MOV ECX, [EBP +4 ]
 
59D720 8B 4D 04 ‹M.
 
STHEN
STHEN
MOV ESI, [EBP + { 2 CELLS } ]
 
59D723 8B 75 08 ‹u.
 
MOV EDI, [EBP]
 
59D726 8B 7D 00 ‹}.
 
REPE CMPSB
 
59D729 F3 A6 ó¦
 
SIF 0<>
 
59D72B 74 0E t.
 
SIF U>=
 
59D72D 72 07 r.
 
MOV EAX, 1
 
59D72F B8 01 00 00 00 ¸....
 
SELSE
 
59D734 EB 05 ë.
 
MOV EAX, -1
 
59D736 B8 FF FF FF FF ¸ÿÿÿÿ
 
STHEN
STHEN
LEA EBP, [EBP + { 3 CELLS } ]
 
59D73B 8D 6D 0C m.
 
POP EDI
 
59D73E 5F _
 
RET
 
59D73F C3 Ã
 
EndCode
 
Code SEARCH ;( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) \ 94 STRING
 
59D740 50 D7 59 00 00 06 53 45 41 52 43 48 FD D6 59 00 P×Y...SEARCHýÖY.
 
; à®¨§¢¥á⨠¯®¨áª ¢ áâப¥, § ¤ ­­®© c-addr1 u1, áâப¨, § ¤ ­­®© c-addr2 u2.
; …᫨ ä« £ "¨á⨭ ", ᮢ¯ ¤¥­¨¥ ­ ©¤¥­® ¯®  ¤à¥áã c-addr3 á ®á⠢訬¨áï u3
; ᨬ¢®« ¬¨. …᫨ ä« £ "«®¦ì", ᮢ¯ ¤¥­¨ï ­¥ ­ ©¤¥­®, ¨ c-addr3 ¥áâì c-addr1,
; ¨ u3 ¥áâì u1. \ !!!!!
LEA EBP, [EBP-4]
 
59D750 8D 6D FC mü
 
MOV [EBP], EAX
 
59D753 89 45 00 ‰E.
 
PUSH EDI
 
59D756 57 W
 
CLD
 
59D757 FC ü
 
MOV EBX, DWORD PTR [EBP]
 
59D758 8B 5D 00 ‹].
 
OR EBX, EBX
 
59D75B 0B DB .Û
 
SIF 0<>
 
59D75D 74 35 t5
 
MOV EDX, DWORD PTR [EBP + { 2 CELLS } ]
 
59D75F 8B 55 08 ‹U.
 
MOV EDI, DWORD PTR [EBP + { 3 CELLS } ]
 
59D762 8B 7D 0C ‹}.
 
ADD EDX, EDI
 
59D765 03 D7 .×
 
SBEGIN
MOV ESI, DWORD PTR [EBP +4 ]
 
59D767 8B 75 04 ‹u.
 
LODSB
 
59D76A AC ¬
 
MOV ECX, EDX
 
59D76B 8B CA ‹Ê
 
SUB ECX, EDI
 
59D76D 2B CF +Ï
 
JECXZ LLD
 
59D76F E3 2A ã*
 
REPNZ
 
59D771 F2 ò
 
SCASB
 
59D772 AE ®
 
JNE SHORT LLD ; ¢® ¢á¥© áâப¥ ­¥â ¯¥à¢®£® ᨬ¢®«  ¨áª®¬®© áâப¨
 
59D773 75 26 u&
 
CMP EBX, 1
 
59D775 83 FB 01 ƒû.
 
JZ SHORT LLC ; ¨áª®¬ ï áâப  ¨¬¥«  ¤«¨­ã 1 ¨ ­ ©¤¥­ 
 
59D778 74 11 t.
 
MOV ECX, EBX
 
59D77A 8B CB ‹Ë
 
DEC ECX
 
59D77C 49 I
 
MOV EAX, EDX
 
59D77D 8B C2 ‹Â
 
SUB EAX, EDI
 
59D77F 2B C7 +Ç
 
CMP EAX, ECX
 
59D781 3B C1 ;Á
 
JC SHORT LLD ; ®áâ â®ª áâப¨ ª®à®ç¥ ¨áª®¬®© áâப¨
 
59D783 72 16 r.
 
PUSH EDI
 
59D785 57 W
 
REPZ CMPSB
 
59D786 F3 A6 ó¦
 
POP EDI
 
59D788 5F _
 
SUNTIL 0=
 
59D789 75 DC uÜ
 
LLC: DEC EDI ; ­ è«¨ ¯®«­®¥ ᮢ¯ ¤¥­¨¥
 
59D78B 4F O
 
SUB EDX, EDI
 
59D78C 2B D7 +×
 
MOV DWORD PTR [EBP + { 3 CELLS } ], EDI
 
59D78E 89 7D 0C ‰}.
 
MOV DWORD PTR [EBP + { 2 CELLS } ], EDX
 
59D791 89 55 08 ‰U.
 
STHEN
MOV EAX, -1
 
59D794 B8 FF FF FF FF ¸ÿÿÿÿ
 
JMP SHORT LLA
 
59D799 EB 02 ë.
 
LLD: XOR EAX, EAX
 
59D79B 33 C0 3À
 
LLA: LEA EBP, [EBP+4]
 
59D79D 8D 6D 04 m.
 
MOV [EBP], EAX
 
59D7A0 89 45 00 ‰E.
 
POP EDI
 
59D7A3 5F _
 
MOV EAX, [EBP]
 
59D7A4 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D7A7 8D 6D 04 m.
 
RET
 
59D7AA C3 Ã
 
EndCode
 
Code CMOVE ;( c-addr1 c-addr2 u -- ) \ 94 STRING
 
59D7AB C0 D7 59 00 00 05 43 4D 4F 56 45 45 D7 59 00 00 À×Y...CMOVEE×Y..
59D7BB 00 00 00 00 00 .....
 
; …᫨ u ¡®«ìè¥ ­ã«ï, ª®¯¨à®¢ âì u ¯®á«¥¤®¢ â¥«ì­ëå ᨬ¢®«®¢ ¨§ ¯à®áâà ­á⢠
; ¤ ­­ëå ­ ç¨­ ï á  ¤à¥á  c-addr1 ¢ c-addr2, ᨬ¢®« §  ᨬ¢®«®¬, ­ ç¨­ ï á
; ¬« ¤è¨å  ¤à¥á®¢ ª áâ à訬.
MOV EDX, EDI
 
59D7C0 8B D7 ‹×
 
MOV ECX, EAX
 
59D7C2 8B C8 ‹È
 
MOV EDI, DWORD PTR [EBP]
 
59D7C4 8B 7D 00 ‹}.
 
MOV ESI, DWORD PTR [EBP +4 ]
 
59D7C7 8B 75 04 ‹u.
 
CLD
 
59D7CA FC ü
 
REPZ MOVSB
 
59D7CB F3 A4 ó¤
 
LEA EBP, [EBP+0CH]
 
59D7CD 8D 6D 0C m.
 
MOV EAX, [EBP-4]
 
59D7D0 8B 45 FC ‹Eü
 
MOV EDI, EDX
 
59D7D3 8B FA ‹ú
 
RET
 
59D7D5 C3 Ã
 
EndCode
 
: QCMOVE CMOVE ;
 
59D7D6 F0 D7 59 00 00 06 51 43 4D 4F 56 45 B0 D7 59 00 ð×Y...QCMOVE°×Y.
59D7E6 00 00 00 00 00 00 00 00 00 00 ..........
 
CALL @@CMOVE
RET
 
Code CMOVE> ;( c-addr1 c-addr2 u -- ) \ 94 STRING
 
59D7F6 10 D8 59 00 00 06 43 4D 4F 56 45 3E DB D7 59 00 .ØY...CMOVE>Û×Y.
59D806 00 00 00 00 00 00 00 00 00 00 ..........
 
; …᫨ u ¡®«ìè¥ ­ã«ï, ª®¯¨à®¢ âì u ¯®á«¥¤®¢ â¥«ì­ëå ᨬ¢®«®¢ ¨§ ¯à®áâà ­á⢠
; ¤ ­­ëå ­ ç¨­ ï á  ¤à¥á  c-addr1 ¢ c-addr2, ᨬ¢®« §  ᨬ¢®«®¬, ­ ç¨­ ï á®
; áâ àè¨å  ¤à¥á®¢ ª ¬« ¤è¨¬.
 
MOV EDX, EDI
 
59D810 8B D7 ‹×
 
MOV ECX, EAX
 
59D812 8B C8 ‹È
 
MOV EDI, [EBP]
 
59D814 8B 7D 00 ‹}.
 
MOV ESI, [EBP+4]
 
59D817 8B 75 04 ‹u.
 
STD
 
59D81A FD ý
 
ADD EDI, ECX
 
59D81B 03 F9 .ù
 
DEC EDI
 
59D81D 4F O
 
ADD ESI, ECX
 
59D81E 03 F1 .ñ
 
DEC ESI
 
59D820 4E N
 
REP MOVSB
 
59D821 F3 A4 ó¤
 
MOV EDI, EDX
 
59D823 8B FA ‹ú
 
LEA EBP, [EBP+0CH]
 
59D825 8D 6D 0C m.
 
MOV EAX, [EBP-4]
 
59D828 8B 45 FC ‹Eü
 
RET
 
59D82B C3 Ã
 
EndCode
 
Code FILL ;( c-addr u char -- ) \ 94 \ !!!!!
 
59D82C 40 D8 59 00 00 04 46 49 4C 4C FB D7 59 00 00 00 @ØY...FILLû×Y...
59D83C 00 00 00 00 ....
 
; …᫨ u ¡®«ìè¥ ­ã«ï, § á« âì char ¢ u ¡ ©â®¢ ¯®  ¤à¥áã c-addr.
MOV EDX, EDI
 
59D840 8B D7 ‹×
 
MOV ECX, [EBP]
 
59D842 8B 4D 00 ‹M.
 
MOV EDI, [EBP+4]
 
59D845 8B 7D 04 ‹}.
 
CLD
 
59D848 FC ü
 
REP STOSB
 
59D849 F3 AA óª
 
MOV EDI, EDX
 
59D84B 8B FA ‹ú
 
LEA EBP, [EBP+0CH]
 
59D84D 8D 6D 0C m.
 
MOV EAX, [EBP-4]
 
59D850 8B 45 FC ‹Eü
 
RET
 
59D853 C3 Ã
 
EndCode
 
Code ZCOUNT ;( c-addr -- c-addr u )
 
59D854 70 D8 59 00 00 06 5A 43 4F 55 4E 54 31 D8 59 00 pØY...ZCOUNT1ØY.
59D864 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
LEA EBP, [EBP-4]
 
59D870 8D 6D FC mü
 
MOV [EBP], EAX
 
59D873 89 45 00 ‰E.
 
XOR EBX, EBX
 
59D876 33 DB 3Û
 
SBEGIN
MOV BL, BYTE PTR [EAX ]
 
59D878 8A 18 Š.
 
INC EAX
 
59D87A 40 @
 
OR BL, BL
 
59D87B 0A DB .Û
 
SUNTIL 0=
 
59D87D 75 F9 uù
 
DEC EAX
 
59D87F 48 H
 
SUB EAX, [EBP]
 
59D880 2B 45 00 +E.
 
RET
 
59D883 C3 Ã
 
EndCode
 
\ ================================================================
\ “ª § â¥«¨ á⥪®¢
 
Code SP! ;( A -> )
 
59D884 A0 D8 59 00 00 03 53 50 21 59 D8 59 00 00 00 00  ØY...SP!YØY....
59D894 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
LEA EBP, [EAX+4]
 
59D8A0 8D 68 04 h.
 
MOV EAX, [EBP-4]
 
59D8A3 8B 45 FC ‹Eü
 
RET
 
59D8A6 C3 Ã
 
EndCode
 
Code RP! ;( A -> )
 
59D8A7 C0 D8 59 00 00 03 52 50 21 89 D8 59 00 00 00 00 ÀØY...RP!‰ØY....
59D8B7 00 00 00 00 00 00 00 00 00 .........
 
POP EBX
 
59D8C0 5B [
 
MOV ESP, EAX
 
59D8C1 8B E0 ‹à
 
MOV EAX, [EBP]
 
59D8C3 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D8C6 8D 6D 04 m.
 
JMP EBX
 
59D8C9 FF E3 ÿã
 
EndCode
 
Code SP@ ;( -> A )
 
59D8CB E0 D8 59 00 00 03 53 50 40 AC D8 59 00 00 00 00 àØY...SP@¬ØY....
59D8DB 00 00 00 00 00 .....
 
LEA EBP, [EBP-4]
 
59D8E0 8D 6D FC mü
 
MOV [EBP], EAX
 
59D8E3 89 45 00 ‰E.
 
MOV EAX, EBP
 
59D8E6 8B C5 ‹Å
 
RET
 
59D8E8 C3 Ã
 
EndCode
 
Code RP@ ;( -- RP )
 
59D8E9 00 D9 59 00 00 03 52 50 40 D0 D8 59 00 00 00 00 .ÙY...RP@ÐØY....
59D8F9 00 00 00 00 00 00 00 .......
 
LEA EBP, [EBP-4]
 
59D900 8D 6D FC mü
 
MOV [EBP], EAX
 
59D903 89 45 00 ‰E.
 
LEA EAX, [ESP + 4 ]
 
59D906 8D 44 24 04 D$.
 
RET
 
59D90A C3 Ã
 
EndCode
 
 
\ ================================================================
\ ¥£¨áâà ¯®â®ª  (§ ¤ ç¨ ¢­ãâਠä®àâ )
 
Code TlsIndex! ;( x -- ) \ 㪠§ â¥«ì «®ª «ì­®£® ¯ã«  ¯®â®ª 
 
59D90B 20 D9 59 00 00 09 54 6C 73 49 6E 64 65 78 21 EE ÙY...TlsIndex!î
59D91B D8 59 00 00 00 ØY...
 
MOV EDI, EAX
 
59D920 8B F8 ‹ø
 
MOV EAX, [EBP]
 
59D922 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59D925 8D 6D 04 m.
 
RET
 
59D928 C3 Ã
 
EndCode
 
Code TlsIndex@ ;( -- x )
 
59D929 40 D9 59 00 00 09 54 6C 73 49 6E 64 65 78 40 10 @ÙY...TlsIndex@.
59D939 D9 59 00 00 00 00 00 ÙY.....
 
LEA EBP, [EBP-4]
 
59D940 8D 6D FC mü
 
MOV [EBP], EAX
 
59D943 89 45 00 ‰E.
 
MOV EAX, EDI
 
59D946 8B C7 ‹Ç
 
RET
 
59D948 C3 Ã
 
EndCode
 
\ ================================================================
\ –¨ª«ë
 
Code C-J
 
59D949 60 D9 59 00 00 03 43 2D 4A 2E D9 59 00 00 00 00 `ÙY...C-J.ÙY....
59D959 00 00 00 00 00 00 00 .......
 
LEA EBP, [EBP-4]
 
59D960 8D 6D FC mü
 
MOV [EBP], EAX
 
59D963 89 45 00 ‰E.
 
MOV EAX, DWORD PTR [ESP + { 3 CELLS } ]
 
59D966 8B 44 24 0C ‹D$.
 
SUB EAX, DWORD PTR [ESP + { 4 CELLS } ]
 
59D96A 2B 44 24 10 +D$.
 
RET
 
59D96E C3 Ã
 
EndCode
 
( inline'ë ¤«ï ª®¬¯¨«ï樨 横«®¢ )
 
Code C-DO
 
59D96F 80 D9 59 00 00 04 43 2D 44 4F 4E D9 59 00 00 00 €ÙY...C-DONÙY...
59D97F 00 .
 
LEA EBP, [EBP+8]
 
59D980 8D 6D 08 m.
 
MOV EDX, 80000000H
 
59D983 BA 00 00 00 80 º...€
 
SUB EDX, [EBP-8]
 
59D988 2B 55 F8 +Uø
 
LEA EBX, [EAX+EDX]
 
59D98B 8D 1C 02 ..
 
MOV EAX, [EBP-4]
 
59D98E 8B 45 FC ‹Eü
 
MOV EDX, EDX ; FOR OPT
 
59D991 8B D2 ‹Ò
 
; PUSH EDX
; PUSH EBX
RET
 
59D993 C3 Ã
 
EndCode
 
Code C-?DO
 
59D994 B0 D9 59 00 00 05 43 2D 3F 44 4F 74 D9 59 00 00 °ÙY...C-?DOtÙY..
59D9A4 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
CMP EAX, [EBP-8]
 
59D9B0 3B 45 F8 ;Eø
 
SIF 0=
 
59D9B3 75 05 u.
 
MOV EAX, [EBP-4]
 
59D9B5 8B 45 FC ‹Eü
 
JMP EBX
 
59D9B8 FF E3 ÿã
 
STHEN
PUSH EBX
 
59D9BA 53 S
 
MOV EBX , 80000000
 
59D9BB BB 00 00 00 80 »...€
 
SUB EBX, [EBP-8]
 
59D9C0 2B 5D F8 +]ø
 
PUSH EBX ; 80000000h-to
 
59D9C3 53 S
 
ADD EBX, EAX
 
59D9C4 03 D8 .Ø
 
PUSH EBX ; 80000000H-to+from
 
59D9C6 53 S
 
MOV EAX, [EBP-4]
 
59D9C7 8B 45 FC ‹Eü
 
RET
 
59D9CA C3 Ã
 
EndCode
 
Code ADD[ESP],EAX
 
59D9CB F0 D9 59 00 00 0C 41 44 44 5B 45 53 50 5D 2C 45 ðÙY...ADD[ESP],E
59D9DB 41 58 99 D9 59 00 00 00 00 00 00 00 00 00 00 00 AX™ÙY...........
59D9EB 00 00 00 00 00 .....
 
ADD [ESP] , EAX
 
59D9F0 01 04 24 ..$
 
RET
 
59D9F3 C3 Ã
 
EndCode
 
Code C-I
 
59D9F4 10 DA 59 00 00 03 43 2D 49 D0 D9 59 00 00 00 00 .ÚY...C-IÐÙY....
59DA04 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
LEA EBP, [EBP-4]
 
59DA10 8D 6D FC mü
 
MOV [EBP], EAX
 
59DA13 89 45 00 ‰E.
 
MOV EAX, DWORD PTR [ESP]
 
59DA16 8B 04 24 ‹.$
 
SUB EAX, [ESP+4]
 
59DA19 2B 44 24 04 +D$.
 
RET
 
59DA1D C3 Ã
 
EndCode
 
Code C->R
 
59DA1E 30 DA 59 00 00 04 43 2D 3E 52 F9 D9 59 00 00 00 0ÚY...C->RùÙY...
59DA2E 00 00 ..
 
PUSH EAX
 
59DA30 50 P
 
MOV EAX, [EBP]
 
59DA31 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DA34 8D 6D 04 m.
 
RET
 
59DA37 C3 Ã
 
EndCode
 
Code C-R>
 
59DA38 50 DA 59 00 00 04 43 2D 52 3E 23 DA 59 00 00 00 PÚY...C-R>#ÚY...
59DA48 00 00 00 00 00 00 00 00 ........
 
LEA EBP, [EBP-4]
 
59DA50 8D 6D FC mü
 
MOV [EBP], EAX
 
59DA53 89 45 00 ‰E.
 
POP EAX
 
59DA56 58 X
 
RET
 
59DA57 C3 Ã
 
EndCode
 
Code C-RDROP
 
59DA58 70 DA 59 00 00 07 43 2D 52 44 52 4F 50 3D DA 59 pÚY...C-RDROP=ÚY
59DA68 00 00 00 00 00 00 00 00 ........
 
ADD ESP, 4
 
59DA70 83 C4 04 Ā.
 
RET
 
59DA73 C3 Ã
 
EndCode
 
Code C-2RDROP
 
59DA74 90 DA 59 00 00 08 43 2D 32 52 44 52 4F 50 5D DA ÚY...C-2RDROP]Ú
59DA84 59 00 00 00 00 00 00 00 00 00 00 00 Y...........
 
ADD ESP, 8
 
59DA90 83 C4 08 Ā.
 
RET
 
59DA93 C3 Ã
 
EndCode
 
Code C-3RDROP
 
59DA94 B0 DA 59 00 00 08 43 2D 33 52 44 52 4F 50 79 DA °ÚY...C-3RDROPyÚ
59DAA4 59 00 00 00 00 00 00 00 00 00 00 00 Y...........
 
ADD ESP, 0CH
 
59DAB0 83 C4 0C Ā.
 
RET
 
59DAB3 C3 Ã
 
EndCode
 
TRUE [IF]
Code C-EXECUTE ;( i*x xt -- j*x ) \ 94
 
59DAB4 D0 DA 59 00 00 09 43 2D 45 58 45 43 55 54 45 99 ÐÚY...C-EXECUTE™
59DAC4 DA 59 00 00 00 00 00 00 00 00 00 00 ÚY..........
 
; “¡à âì xt á® á⥪  ¨ ¢ë¯®«­¨âì § ¤ ­­ãî ¨¬ ᥬ ­â¨ªã.
; „à㣨¥ ¨§¬¥­¥­¨ï ­  á⥪¥ ®¯à¥¤¥«ïîâáï á«®¢®¬, ª®â®à®¥ ¢ë¯®«­ï¥âáï.
MOV EDX, EAX
 
59DAD0 8B D0 ‹Ð
 
MOV EAX, [EBP]
 
59DAD2 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DAD5 8D 6D 04 m.
 
CALL EDX
 
59DAD8 FF D2 ÿÒ
 
RET
 
59DADA C3 Ã
 
EndCode
[THEN]
 
Code EXECUTE ;( i*x xt -- j*x ) \ 94
 
59DADB F0 DA 59 00 00 07 45 58 45 43 55 54 45 B9 DA 59 ðÚY...EXECUTE¹ÚY
59DAEB 00 00 00 00 00 .....
 
; “¡à âì xt á® á⥪  ¨ ¢ë¯®«­¨âì § ¤ ­­ãî ¨¬ ᥬ ­â¨ªã.
; „à㣨¥ ¨§¬¥­¥­¨ï ­  á⥪¥ ®¯à¥¤¥«ïîâáï á«®¢®¬, ª®â®à®¥ ¢ë¯®«­ï¥âáï.
MOV EBX, EAX
 
59DAF0 8B D8 ‹Ø
 
MOV EAX, [EBP]
 
59DAF2 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DAF5 8D 6D 04 m.
 
JMP EBX
 
59DAF8 FF E3 ÿã
 
EndCode
 
Code @EXECUTE ;( i*x xt -- j*x )
 
59DAFA 10 DB 59 00 00 08 40 45 58 45 43 55 54 45 E0 DA .ÛY...@EXECUTEàÚ
59DB0A 59 00 00 00 00 00 Y.....
 
MOV EBX, EAX
 
59DB10 8B D8 ‹Ø
 
MOV EAX, [EBP]
 
59DB12 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DB15 8D 6D 04 m.
 
JMP [EBX]
 
59DB18 FF 23 ÿ#
 
EndCode
 
\ ================================================================
\ ®¤¤¥à¦ª  LOCALS
 
Code DRMOVE ;( x1 ... xn n*4 -- )
 
59DB1A 30 DB 59 00 00 06 44 52 4D 4F 56 45 FF DA 59 00 0ÛY...DRMOVEÿÚY.
59DB2A 00 00 00 00 00 00 ......
 
; ¯¥à¥­¥á⨠n ç¨á¥« á® á⥪  ¤ ­­ëå ­  á⥪ ¢®§¢à â®¢
POP EDX ;  ¤à¥á ¢®§¢à â 
 
59DB30 5A Z
 
MOV ESI, EAX
 
59DB31 8B F0 ‹ð
 
@@1:
PUSH DWORD PTR [EBP+ESI-4]
 
59DB33 FF 74 2E FC ÿt.ü
 
SUB ESI, 4
 
59DB37 83 EE 04 Ĕ.
 
JNZ SHORT @@1
 
59DB3A 75 F7 u÷
 
ADD EBP, EAX
 
59DB3C 03 E8 .è
 
MOV EAX, [EBP]
 
59DB3E 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DB41 8D 6D 04 m.
 
JMP EDX
 
59DB44 FF E2 ÿâ
 
EndCode
 
Code NR> ;( R: x1 ... xn n -- D: x1 ... xn n )
 
59DB46 60 DB 59 00 00 03 4E 52 3E 1F DB 59 00 00 00 00 `ÛY...NR>.ÛY....
59DB56 00 00 00 00 00 00 00 00 00 00 ..........
 
; ¥à¥­¥á⨠n ç¨á¥« á® á⥪  ¢®§¢à â®¢ ­  á⥪ ¤ ­­ëå
; …᫨ n=0 ¢®§¢à â¨âì 0
POP EDX ;  ¤à¥á ¢®§¢à â 
 
59DB60 5A Z
 
LEA EBP, [EBP-4]
 
59DB61 8D 6D FC mü
 
MOV [EBP], EAX
 
59DB64 89 45 00 ‰E.
 
POP EAX
 
59DB67 58 X
 
OR EAX, EAX
 
59DB68 0B C0 .À
 
JNZ @@2
 
59DB6A 0F 85 02 00 00 00 .…....
 
JMP EDX
 
59DB70 FF E2 ÿâ
 
 
@@2: LEA EAX, [EAX*4]
 
59DB72 8D 04 85 00 00 00 00 .…....
 
MOV ESI, EAX
 
59DB79 8B F0 ‹ð
 
@@1:
MOV EBX, EBP
 
59DB7B 8B DD ‹Ý
 
SUB EBX, ESI
 
59DB7D 2B DE +Þ
 
POP DWORD PTR [EBX]
 
59DB7F 8F 03 .
 
SUB ESI, 4
 
59DB81 83 EE 04 Ĕ.
 
JNZ SHORT @@1
 
59DB84 75 F5 uõ
 
SUB EBP, EAX
 
59DB86 2B E8 +è
 
SAR EAX, 2
 
59DB88 C1 F8 02 Áø.
 
JMP EDX
 
59DB8B FF E2 ÿâ
 
EndCode
 
Code N>R ;( D: x1 ... xn n -- R: x1 ... xn n )
 
59DB8D A0 DB 59 00 00 03 4E 3E 52 4B DB 59 00 00 00 00  ÛY...N>RKÛY....
59DB9D 00 00 00 ...
 
; ¯¥à¥­¥á⨠n ç¨á¥« á® á⥪  ¤ ­­ëå ­  á⥪ ¢®§¢à â®¢
LEA EBP, [EBP-4]
 
59DBA0 8D 6D FC mü
 
MOV [EBP], EAX
 
59DBA3 89 45 00 ‰E.
 
LEA EAX, [EAX*4+4]
 
59DBA6 8D 04 85 04 00 00 00 .…....
 
 
POP EDX ;  ¤à¥á ¢®§¢à â 
 
59DBAD 5A Z
 
MOV ESI, EAX
 
59DBAE 8B F0 ‹ð
 
@@1:
PUSH DWORD PTR [EBP+ESI-4]
 
59DBB0 FF 74 2E FC ÿt.ü
 
SUB ESI, 4
 
59DBB4 83 EE 04 Ĕ.
 
JNZ SHORT @@1
 
59DBB7 75 F7 u÷
 
ADD EBP, EAX
 
59DBB9 03 E8 .è
 
MOV EAX, [EBP]
 
59DBBB 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DBBE 8D 6D 04 m.
 
JMP EDX
 
59DBC1 FF E2 ÿâ
 
EndCode
 
Code NRCOPY ;( D: i*x i -- D: i*x i R: i*x i )
 
59DBC3 E0 DB 59 00 00 06 4E 52 43 4F 50 59 92 DB 59 00 àÛY...NRCOPY’ÛY.
59DBD3 00 00 00 00 00 00 00 00 00 00 00 00 00 .............
 
; ᪮¯¨à®¢ âì n ç¨á¥« á® á⥪  ¤ ­­ëå ­  á⥪ ¢®§¢à â®¢
MOV ECX, EAX
 
59DBE0 8B C8 ‹È
 
LEA ECX, [ECX*4]
 
59DBE2 8D 0C 8D 00 00 00 00 .....
 
 
POP EDX ;  ¤à¥á ¢®§¢à â 
 
59DBE9 5A Z
 
JECXZ @@2
 
59DBEA E3 0B ã.
 
MOV ESI, ECX
 
59DBEC 8B F1 ‹ñ
 
@@1:
PUSH DWORD PTR [ESI+EBP-4]
 
59DBEE FF 74 35 FC ÿt5ü
 
SUB ESI, 4
 
59DBF2 83 EE 04 Ĕ.
 
JNZ SHORT @@1
 
59DBF5 75 F7 u÷
 
@@2:
PUSH EAX
 
59DBF7 50 P
 
JMP EDX
 
59DBF8 FF E2 ÿâ
 
EndCode
 
Code RP+@ ;( offs -- x )
 
59DBFA 10 DC 59 00 00 04 52 50 2B 40 C8 DB 59 00 00 00 .ÜY...RP+@ÈÛY...
59DC0A 00 00 00 00 00 00 ......
 
; ¢§ïâì ç¨á«® ᮠᬥ饭¨¥¬ offs ¡ ©â ®â ¢¥à設ë á⥪  ¢®§¢à â®¢ (0 RP+@ == RP@)
MOV EAX, [EAX+ESP+4]
 
59DC10 8B 44 04 04 ‹D..
 
RET
 
59DC14 C3 Ã
 
EndCode
Code RP+ ;( offs -- addr )
 
59DC15 30 DC 59 00 00 03 52 50 2B FF DB 59 00 00 00 00 0ÜY...RP+ÿÛY....
59DC25 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; ¢§ïâì  ¤à¥á ᮠᬥ饭¨¥¬ offs ¡ ©â ®â ¢¥à設ë á⥪  ¢®§¢à â®¢
LEA EAX, [EAX+ESP+4]
 
59DC30 8D 44 04 04 D..
 
RET
 
59DC34 C3 Ã
 
EndCode
 
Code RP+! ;( x offs -- )
 
59DC35 50 DC 59 00 00 04 52 50 2B 21 1A DC 59 00 00 00 PÜY...RP+!.ÜY...
59DC45 00 00 00 00 00 00 00 00 00 00 00 ...........
 
; § ¯¨á âì ç¨á«® x ¯® ᬥ饭¨î offs ¡ ©â ®â ¢¥à設ë á⥪  ¢®§¢à â®¢
MOV EBX, [EBP]
 
59DC50 8B 5D 00 ‹].
 
MOV [EAX+ESP+4], EBX
 
59DC53 89 5C 04 04 ‰\..
 
LEA EBP, [EBP+8]
 
59DC57 8D 6D 08 m.
 
MOV EAX, [EBP-4]
 
59DC5A 8B 45 FC ‹Eü
 
RET
 
59DC5D C3 Ã
 
EndCode
 
Code RALLOT ;( n -- addr )
 
59DC5E 70 DC 59 00 00 06 52 41 4C 4C 4F 54 3A DC 59 00 pÜY...RALLOT:ÜY.
59DC6E 00 00 ..
 
; § à¥§¥à¢¨à®¢ âì n ï祥ª ­  á⥪¥ ¢®§¢à â®¢,
; ᤥ« ¥¬ á ¨­¨æ¨ «¨§ æ¨¥© (  â® ¥á«¨ ¡®«ìè¥ 8Š ¢ë¤¥«¨¬, exception ¬®¦¥â)
POP EDX
 
59DC70 5A Z
 
MOV ECX, EAX
 
59DC71 8B C8 ‹È
 
XOR EAX, EAX
 
59DC73 33 C0 3À
 
@@1: PUSH EAX
 
59DC75 50 P
 
DEC ECX
 
59DC76 49 I
 
JNZ SHORT @@1
 
59DC77 75 FC uü
 
MOV EAX, ESP
 
59DC79 8B C4 ‹Ä
 
JMP EDX
 
59DC7B FF E2 ÿâ
 
EndCode
 
Code (RALLOT) ;( n -- )
 
59DC7D 90 DC 59 00 00 08 28 52 41 4C 4C 4F 54 29 63 DC ÜY...(RALLOT)cÜ
59DC8D 59 00 00 Y..
 
; § à¥§¥à¢¨à®¢ âì n ï祥ª ­  á⥪¥ ¢®§¢à â®¢
POP EDX
 
59DC90 5A Z
 
MOV ECX, EAX
 
59DC91 8B C8 ‹È
 
XOR EAX, EAX
 
59DC93 33 C0 3À
 
@@1: PUSH EAX
 
59DC95 50 P
 
DEC ECX
 
59DC96 49 I
 
JNZ SHORT @@1
 
59DC97 75 FC uü
 
MOV EAX, [EBP]
 
59DC99 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DC9C 8D 6D 04 m.
 
JMP EDX
 
59DC9F FF E2 ÿâ
 
EndCode
 
Code RFREE ;( n -- )
 
59DCA1 B0 DC 59 00 00 05 52 46 52 45 45 82 DC 59 00 °ÜY...RFREE‚ÜY.
 
; ¢¥à­ãâì n ï祥ª á⥪  ¢®§¢à â®¢
POP EDX
 
59DCB0 5A Z
 
LEA ESP, [ESP+EAX*4]
 
59DCB1 8D 24 84 $„
 
MOV EAX, [EBP]
 
59DCB4 8B 45 00 ‹E.
 
LEA EBP, [EBP+4]
 
59DCB7 8D 6D 04 m.
 
JMP EDX
 
59DCBA FF E2 ÿâ
 
EndCode
 
Code (LocalsExit) ;( -- )
 
59DCBC E0 DC 59 00 00 0C 28 4C 6F 63 61 6C 73 45 78 69 àÜY...(LocalsExi
59DCCC 74 29 A6 DC 59 00 00 00 00 00 00 00 00 00 00 00 t)¦ÜY...........
59DCDC 00 00 00 00 ....
 
; ¢¥à­ãâì ¯ ¬ïâì ¢ á⥪ ¢®¢à â®¢, ç¨á«® ¡ ©â «¥¦¨â ­  á⥪¥
POP EBX
 
59DCE0 5B [
 
ADD ESP, EBX
 
59DCE1 03 E3 .ã
 
RET
 
59DCE3 C3 Ã
 
EndCode
 
Code TIMER@ ;( -- tlo thi ) \ ’®«ìª® ¤«ï Intel Pentium ¨ ¢ëè¥!!!
 
59DCE4 00 DD 59 00 00 06 54 49 4D 45 52 40 C1 DC 59 00 .ÝY...TIMER@ÁÜY.
59DCF4 00 00 00 00 00 00 00 00 00 00 00 00 ............
 
; ‚®§¢à â¨âì §­ ç¥­¨¥ â ©¬¥à  ¯à®æ¥áá®à  ª ª ud
MOV [EBP-4], EAX
 
59DD00 89 45 FC ‰Eü
 
RDTSC
 
59DD03 0F 31 .1
 
MOV [EBP-8], EDX
 
59DD05 89 55 F8 ‰Uø
 
LEA EBP, [EBP-8]
 
59DD08 8D 6D F8 mø
 
XCHG EAX, [EBP]
 
59DD0B 87 45 00 ‡E.
 
RET
 
59DD0E C3 Ã
 
EndCode
 
\ „«ï ®áâ «ì­ëå ¯à®æ¥áá®à®¢ à áª®¬¬¥­â¨àã©â¥:
\ : TIMER@ 0 GetTickCount ;
 
Code TRAP-CODE ;( D: j*x u R: i*x i -- i*x u )
 
59DD0F 30 DD 59 00 00 09 54 52 41 50 2D 43 4F 44 45 E9 0ÝY...TRAP-CODEé
59DD1F DC 59 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ÜY..............
59DD2F 00 .
 
; ‚ᯮ¬®£ â¥«ì­®¥ á«®¢® ¤«ï ¢®ááâ ­®¢«¥­¨ï §­ ç¥­¨©, á®åà ­¥­­ëå
; ¯¥à¥¤ CATCH ­  á⥪¥ ¢®§¢à â®¢
POP EDX
 
59DD30 5A Z
 
POP ESI
 
59DD31 5E ^
 
OR ESI, ESI
 
59DD32 0B F6 .ö
 
JZ @@2
 
59DD34 0F 84 18 00 00 00 .„....
 
LEA ESI, [ESI*4]
 
59DD3A 8D 34 B5 00 00 00 00 4µ....
 
MOV ECX, ESI
 
59DD41 8B CE ‹Î
 
@@1: MOV EBX, [ESI+ESP-4]
 
59DD43 8B 5C 34 FC ‹\4ü
 
MOV [ESI+EBP-4], EBX
 
59DD47 89 5C 35 FC ‰\5ü
 
SUB ESI, 4
 
59DD4B 83 EE 04 Ĕ.
 
JNZ SHORT @@1
 
59DD4E 75 F3 uó
 
ADD ESP, ECX
 
59DD50 03 E1 .á
 
@@2: JMP EDX
 
59DD52 FF E2 ÿâ
 
EndCode
 
DECIMAL
ZZ=D0
/programs/develop/SPForth/src/spf_forthproc_hl.f
0,0 → 1,104
( Žá⠢訥áï á«®¢  "ä®àâ-¯à®æ¥áá®à " ¢ ¢¨¤¥ ¢ë᮪®ã஢­¥¢ëå ®¯à¥¤¥«¥­¨©.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
à¥®¡à §®¢ ­¨¥ ¨§ 16-à §à來®£® ¢ 32-à §àï¤­ë© ª®¤ - 1995-96££
¥¢¨§¨ï - ᥭâï¡àì 1999
)
 
0 CONSTANT FALSE ( -- false ) \ 94 CORE EXT
\ ‚¥à­ãâì ä« £ "«®¦ì".
 
-1 CONSTANT TRUE ( -- true ) \ 94 CORE EXT
\ ‚¥à­ãâì ä« £ "¨á⨭ ", ï祩ªã á® ¢á¥¬¨ ãáâ ­®¢«¥­­ë¬¨ ¡¨â ¬¨.
 
4 CONSTANT CELL
 
: */ ( n1 n2 n3 -- n4 ) \ 94
\ “¬­®¦¨âì n1 ­  n2, ¯®«ãç¨âì ¯à®¬¥¦ãâ®ç­ë© ¤¢®©­®© १ã«ìâ â d.
\  §¤¥«¨âì d ­  n3, ¯®«ãç¨âì ç áâ­®¥ n4.
*/MOD NIP
;
 
: CHAR+ ( c-addr1 -- c-addr2 ) \ 94
\ à¨¡ ¢¨âì à §¬¥à ᨬ¢®«  ª c-addr1 ¨ ¯®«ãç¨âì c-addr2.
1+
;
: CHARS ( n1 -- n2 ) \ 94
\ n2 - à §¬¥à n1 ᨬ¢®«®¢.
; IMMEDIATE
 
: MOVE ( addr1 addr2 u -- ) \ 94
\ …᫨ u ¡®«ìè¥ ­ã«ï, ª®¯¨à®¢ âì ᮤ¥à¦¨¬®¥ u ¡ ©â ¨§ addr1 ¢ addr2.
\ ®á«¥ MOVE ¢ u ¡ ©â å ¯®  ¤à¥áã addr2 ᮤ¥à¦¨âáï ¢ â®ç­®á⨠⮠¦¥,
\ çâ® ¡ë«® ¢ u ¡ ©â å ¯®  ¤à¥áã addr1 ¤® ª®¯¨à®¢ ­¨ï.
>R 2DUP SWAP R@ + U< \ ­ §­ ç¥­¨¥ ¯®¯ ¤ ¥â ¢ ¤¨ ¯ §®­ ¨áâ®ç­¨ª  ¨«¨ «¥¢¥¥
IF 2DUP U< \ ˆ … «¥¢¥¥
IF R> CMOVE> ELSE R> CMOVE THEN
ELSE R> CMOVE THEN ;
 
: ERASE ( addr u -- ) \ 94 CORE EXT
\ …᫨ u ¡®«ìè¥ ­ã«ï, ®ç¨áâ¨âì ¢á¥ ¡¨âë ª ¦¤®£® ¨§ u ¡ ©â ¯ ¬ïâ¨,
\ ­ ç¨­ ï á  ¤à¥á  addr.
0 FILL ;
 
: BLANK ( addr len -- ) \ fill addr for len with spaces (blanks)
BL FILL ;
 
: DABS ( d -- ud ) \ 94 DOUBLE
\ ud  ¡á®«îâ­ ï ¢¥«¨ç¨­  d.
DUP 0< IF DNEGATE THEN
;
 
255 CONSTANT MAXCOUNTED \ maximum length of contents of a counted string
 
\ : 0X BASE @ HEX >R BL WORD ?LITERAL
\ R> BASE ! ; IMMEDIATE
: "CLIP" ( a1 n1 -- a1 n1' ) \ clip a string to between 0 and MAXCOUNTED
MAXCOUNTED AND ;
 
: PLACE ( addr len dest -- )
SWAP "CLIP" SWAP
2DUP C! CHAR+ SWAP CHARS MOVE ;
 
: +PLACE ( addr len dest -- ) \ append string addr,len to counted
\ string dest
>R "CLIP" MAXCOUNTED R@ C@ - MIN R>
\ clip total to MAXCOUNTED string
2DUP 2>R
 
COUNT CHARS + SWAP MOVE
2R> +! ;
 
: C+PLACE ( c1 a1 -- ) \ append char c1 to the counted string at a1
DUP 1+! COUNT + 1- C! ;
 
: STR>R ( addr u -- addr1 u)
\ ®«®¦¨âì áâபã addr u ­  á⥪ ¢®§¢à â®¢
\ ‚®§¢à â¨âì addr1  ¤à¥á ­®¢®© áâப¨
;
 
0 VALUE DOES-CODE
 
: $! ( addr len dest -- )
PLACE ;
 
: ASCII-Z ( addr len buff -- buff-z ) \ make an ascii string
DUP >R $! R> COUNT OVER + 0 SWAP C! ;
 
: 0MAX 0 MAX ;
 
: ASCIIZ> ZCOUNT ;
 
: R> ['] C-R> INLINE, ; IMMEDIATE
: >R ['] C->R INLINE, ; IMMEDIATE
 
: 2CONSTANT ( d --- )
\ Create a new definition that has the following runtime behavior.
\ Runtime: ( --- d) push the constant double number on the stack.
CREATE HERE 2! 8 ALLOT DOES> 2@ ;
 
: U/MOD 0 SWAP UM/MOD ;
 
: 2NIP 2SWAP 2DROP ;
 
: ON TRUE SWAP ! ;
: OFF ( a--) 0! ;
/programs/develop/SPForth/src/spf_init.f
0,0 → 1,48
( Èíèöèàëèçàöèÿ USER-ïåðåìåííûõ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
Ñåíòÿáðü 1999
)
 
VARIABLE MAINX
 
VECT <FLOAT-INIT>
 
: TITLE
." SP-FOPTH ANS FORTH 94 for fasm" CR
." A.Cherezov http://www.forth.org.ru/" CR
." M.Maksimov http://forth.spb.su:8888/ http://www.chat.ru/~mak" CR
." PAGE - Clearing of a screen" CR
." WORDS - list of forth-words" CR
." BYE - KolibriOS continuance" CR
;
 
: ERR-EXIT ( xt -- )
CATCH
?DUP IF _BYE THEN
;
 
: HH.
0x10000000 U/MOD DIGIT> EMIT
0x1000000 U/MOD DIGIT> EMIT
0x100000 U/MOD DIGIT> EMIT
0x10000 U/MOD DIGIT> EMIT
0x1000 U/MOD DIGIT> EMIT
0x100 U/MOD DIGIT> EMIT
0x10 U/MOD DIGIT> EMIT DIGIT> EMIT ;
 
: INIT
 
CURFILE 0!
[ TDIS-OPT ]
1 ALIGN-BYTES !
OP0 0! JP0 JpBuffSize ERASE
0 LIT, 0x20 TO MM_SIZE SET-OPT
 
TITLE
['] AUTOEXEC CATCH ?DUP IF
ERROR_DO THEN
BEGIN
['] QUIT CATCH ( 横« ¯à¨¥¬  ⥪áâ )
ERROR_DO
AGAIN
;
/programs/develop/SPForth/src/spf_last.f
0,0 → 1,76
DECIMAL
 
\ ' DUP VALUE 'DUP_V
\ ' DROP VALUE 'DROP_V
 
USER HLD \ ¯¥à¥¬¥­­ ï - ¯®§¨æ¨ï ¯®á«¥¤­¥© «¨â¥àë, ¯¥à¥­¥á¥­­®© ¢ PAD
 
0 VALUE H-STDIN \ åí­¤« ä ©«  - áâ ­¤ àâ­®£® ¢¢®¤ 
1 VALUE H-STDOUT \ åí­¤« ä ©«  - áâ ­¤ àâ­®£® ¢ë¢®¤ 
1 VALUE H-STDERR \ åí­¤« ä ©«  - áâ ­¤ àâ­®£® ¢ë¢®¤  ®è¨¡®ª
 
USER ALIGN-BYTES
 
: ALIGNED ( addr -- a-addr ) \ 94
\ a-addr - ¯¥à¢ë© ¢ë஢­¥­­ë©  ¤à¥á, ¡®«ì訩 ¨«¨ à ¢­ë© addr.
ALIGN-BYTES @ DUP 0= IF 1+ DUP ALIGN-BYTES ! THEN
2DUP
MOD DUP IF - + ELSE 2DROP THEN
;
 
: ALIGN ( -- ) \ 94
\ …᫨ 㪠§ â¥«ì ¯à®áâà ­á⢠ ¤ ­­ëå ­¥ ¢ë஢­¥­ -
\ ¢ë஢­ïâì ¥£®.
DP @ ALIGNED DP @ - ALLOT
;
 
: ALIGN-NOP ( n -- )
\ ¢ë஢­ïâì HERE ­  n ¨ § ¯®«­¨âì NOP
HERE DUP ROT 2DUP
MOD DUP IF - + ELSE 2DROP THEN
OVER - DUP ALLOT 0x90 FILL
;
 
: IMMEDIATE ( -- ) \ 94
\ ‘¤¥« âì ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­¨¥ á«®¢®¬ ­¥¬¥¤«¥­­®£® ¨á¯®«­¥­¨ï.
\ ˆáª«îç¨â¥«ì­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯®á«¥¤­¥¥ ®¯à¥¤¥«¥­¨¥
\ ­¥ ¨¬¥¥â ¨¬¥­¨.
LAST @ NAME>F DUP C@ &IMMEDIATE OR SWAP C!
;
 
 
: :NONAME ( C: -- colon-sys ) ( S: -- xt ) \ 94 CORE EXT
\ ‘®§¤ âì ¢ë¯®«­¨¬ë© ⮪¥­ xt, ãáâ ­®¢¨âì á®áâ®ï­¨¥ ª®¬¯¨«ï樨 ¨
\ ­ ç âì ⥪ã饥 ®¯à¥¤¥«¥­¨¥, ¯à®¨§¢¥¤ï colon-sys. „®¡ ¢¨âì ᥬ ­â¨ªã
\ ¨­¨æ¨ «¨§ æ¨¨ ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
\ ‘¥¬ ­â¨ª  ¢ë¯®«­¥­¨ï xt ¡ã¤¥â § ¤ ­  á«®¢ ¬¨, ᪮¬¯¨«¨à®¢ ­­ë¬¨
\ ¢ ⥫® ®¯à¥¤¥«¥­¨ï. â® ®¯à¥¤¥«¥­¨¥ ¬®¦¥â ¡ëâì ¯®§¦¥ ¢ë¯®«­¥­® ¯®
\ xt EXECUTE.
\ …᫨ ã¯à ¢«ïî騩 á⥪ ॠ«¨§®¢ ­ á ¨¬¯®«ì§®¢ ­¨¥¬ á⥪  ¤ ­­ëå,
\ colon-sys ¡ã¤¥â ¢¥àå­¨¬ í«¥¬¥­â®¬ ­  á⥪¥ ¤ ­­ëå.
\ ˆ­¨æ¨ «¨§ æ¨ï: ( i*x -- i*x ) ( R: -- nest-sys )
\ ‘®åà ­¨âì § ¢¨áïéãî ®â ॠ«¨§ æ¨¨ ¨­ä®à¬ æ¨î nest-sys ® ¢ë§®¢¥
\ ®¯à¥¤¥«¥­¨ï. «¥¬¥­âë á⥪  i*x ¯à¥¤áâ ¢«ïîâ  à£ã¬¥­âë xt.
\ xt ‚믮«­¥­¨¥: ( i*x -- j*x )
\ ‚믮«­¨âì ®¯à¥¤¥«¥­¨¥, § ¤ ­­®¥ xt. «¥¬¥­âë á⥪  i*x ¨ j*x
\ ¯à¥¤áâ ¢«ïîâ  à£ã¬¥­âë ¨ १ã«ìâ âë xt ᮮ⢥âá⢥­­®.
HERE ]
HERE TO :-SET ;
 
: INCLUDED INCLUDED_ ;
' NOOP TO <PRE>
' FIND1 TO FIND
' ?LITERAL2 TO ?LITERAL
' ?SLITERAL2 TO ?SLITERAL
' OK1 TO OK.
' (ABORT1") TO (ABORT")
 
VECT TYPE ' _TYPE TO TYPE
VECT EMIT ' _EMIT TO EMIT
 
 
: H. BASE @ SWAP HEX U. BASE ! ;
 
: TST S" /rd/1/autoload.f" INCLUDED_ ;
: TST1 S" WORDS" EVALUATE ;
 
/programs/develop/SPForth/src/spf_print.f
0,0 → 1,168
( Ñëîâà ôîðìàòíîé ïå÷àòè ÷èñåë.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
Ïðåîáðàçîâàíèå èç 16-ðàçðÿäíîãî â 32-ðàçðÿäíûé êîä - 1995-96ãã
Ðåâèçèÿ - ñåíòÿáðü 1999 [ïåðåõîä íà USER-ïåðåìåííûå è
çàìåíà CODE-ñëîâ âûñîêîóðîâíåâûìè îïðåäåëåíèÿìè]
)
 
4096 DUP CONSTANT NUMERIC-OUTPUT-LENGTH
USER-CREATE SYSTEM-PAD
USER-ALLOT \ Îáëàñòü ôîðìàòíîãî ïðåîáðàçîâàíèÿ - îáÿçàòåëüíî ïåðåä PAD
 
: HEX ( -- ) \ 94 CORE EXT
\ Óñòàíîâèòü ñîäåðæèìîå BASE ðàâíûì øåñòíàäöàòè.
16 BASE !
;
 
: DECIMAL ( -- ) \ 94
\ Óñòàíîâèòü îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ ðàâíûì äåñÿòè.
10 BASE !
;
 
: HOLD ( char -- ) \ 94
\ Äîáàâèòü char ê íà÷àëó ôîðìàòíîé ÷èñëîâîé ñòðîêè.
\ Èñêëþ÷èòåëüíàÿ ñèòóàöèÿ âîçíèêàåò, åñëè èñïîëüçîâàòü HOLD
\ âíå <# è #>, îãðàíè÷èâàþùèâàþùèõ ïðåîáðàçîâàíèå ÷èñåë.
HLD @ 1- DUP HLD ! C!
;
 
: HOLDS ( addr u -- ) \ from eserv src
TUCK + SWAP 0 ?DO DUP I - 1- C@ HOLD LOOP DROP
;
 
: <# ( -- ) \ 94
\ Íà÷àòü ôîðìàòíîå ïðåîáðàçîâàíèå ÷èñåë.
PAD 1- HLD !
0 PAD 1- C!
;
 
: DIGIT> ( c -- c1 )
DUP 10 < 0= IF 7 + THEN 48 + ;
 
: # ( ud1 -- ud2 ) \ 94
\ Äåëåíèåì ud1 íà çíà÷åíèå BASE âûäåëèòü îäíó öèôðó ñ êîíöà è
\ äîáàâèòü åå â áóôåð ôîðìàòíîãî ïðåîáðàçîâàíèÿ ÷èñåë,
\ îñòàâèâ ÷àñòíîå ud2.
\ Èñêëþ÷èòåëüíàÿ ñèòóàöèÿ âîçíèêàåò, åñëè èñïîëüçîâàòü #
\ âíå <# è #>, îãðàíè÷èâàþùèâàþùèõ ïðåîáðàçîâàíèå ÷èñåë.
0 BASE @ UM/MOD >R BASE @ UM/MOD R>
ROT DIGIT> HOLD
;
 
: #S ( ud1 -- ud2 ) \ 94
\ Âûäåëÿòü öèôðû D1 ïî ñëîâó # äî ïîëó÷åíèÿ íóëÿ.
\ ud2 - íîëü.
\ Èñêëþ÷èòåëüíàÿ ñèòóàöèÿ âîçíèêàåò, åñëè èñïîëüçîâàòü #S
\ âíå <# è #>, îãðàíè÷èâàþùèâàþùèõ ïðåîáðàçîâàíèå ÷èñåë.
BEGIN
# 2DUP D0=
UNTIL
;
 
: #> ( xd -- c-addr u ) \ 94
\ Óáðàòü xd. Ñäåëàòü áóôåð ôîðìàòíîãî ïðåîáðàçîâàíèÿ äîñòóïíûì â âèäå
\ ñòðîêè ñèìâîëîâ, çàäàííîé c-addr è u.
\ Ïðîãðàììà ìîæåò ìåíÿòü ñèìâîëû â ýòîé ñòðîêå.
2DROP HLD @ PAD OVER - 1-
;
 
: SIGN ( n -- ) \ 94
\ Åñëè n îòðèöàòåëüíî, äîáàâèòü â ñòðîêó ôîðìàòíîãî ïðåîáðàçîâàíèÿ
\ ÷èñåë ìèíóñ.
\ Èñêëþ÷èòåëüíàÿ ñèòóàöèÿ âîçíèêàåò, åñëè èñïîëüçîâàòü SIGN
\ âíå <# è #>, îãðàíè÷èâàþùèâàþùèõ ïðåîáðàçîâàíèå ÷èñåë.
0< IF [CHAR] - HOLD THEN
;
 
: (D.) ( d -- addr len ) DUP >R DABS <# #S R> SIGN #> ;
 
: D. ( d -- ) (D.) TYPE SPACE ;
 
: . ( n -- ) S>D D. ;
 
: D.R ( d w -- ) >R (D.) R> OVER - 0MAX SPACES TYPE ;
 
: .R ( n w -- ) >R S>D R> D.R ;
 
: U.R ( u w -- ) 0 SWAP D.R ;
 
: U. ( u -- ) \ 94
\ Íàïå÷àòàòü u â ñâîáîäíîì ôîðìàòå.
U>D D.
;
 
: .0
>R 0 <# #S #> R> OVER - 0 MAX DUP
IF 0 DO [CHAR] 0 EMIT LOOP
ELSE DROP THEN TYPE
;
 
: >PRT
DUP BL U< IF DROP [CHAR] . THEN
;
 
: PTYPE
0 DO DUP C@ >PRT EMIT 1+ LOOP DROP
;
 
: DUMP ( addr u -- ) \ 94 TOOLS
DUP 0= IF 2DROP EXIT THEN
BASE @ >R HEX
15 + 16 U/ 0 DO
CR DUP 4 .0 SPACE
SPACE DUP 16 0
DO I 4 MOD 0= IF SPACE THEN
DUP C@ 2 .0 SPACE 1+
LOOP SWAP 16 PTYPE
LOOP DROP R> BASE !
;
 
: (.") ( T -> )
COUNT TYPE
;
\ ' (.") TO (.")-CODE
 
: DIGIT ( C, N1 ->> N2, TF / FF )
\ N2 - çíà÷åíèå ëèòåðû C êàê
\ öèôðû â ñèñòåìå ñ÷èñëåíèÿ ïî îñíîâàíèþ N1
>R
[CHAR] 0 - 10 OVER U<
IF
DUP [CHAR] A [CHAR] 0 - < IF RDROP DROP 0 EXIT THEN
DUP [CHAR] a [CHAR] 0 - 1- > IF [CHAR] a [CHAR] A - - THEN
[CHAR] A [CHAR] 0 - 10 - -
THEN R> OVER U> DUP 0= IF NIP THEN ;
 
: >NUMBER ( ud1 c-addr1 u1 -- ud2 c-addr2 u2 ) \ 94
\ ud2 - ðåçóëüòàò ïðåîáðàçîâàíèÿ ñèìâîëîâ ñòðîêè, çàäàííîé c-addr1 u1,
\ â öèôðû, èñïîëüçóÿ ÷èñëî â BASE, è äîáàâëåíèåì êàæäîé ê ud1 ïîñëå
\ óìíîæåíèÿ ud1 íà ÷èñëî â BASE. Ïðåîáðàçîâàíèå ïðîäîëæàåòñÿ ñëåâà
\ íàïðàâî äî ïåðâîãî íåïðåîáðàçóåìîãî ñèìâîëà, âêëþ÷àÿ ñèìâîëû "+" è "-",
\ èëè äî ïîëíîãî ïðåîáðàçîâàíèÿ ñòðîêè.
\ c-addr2 - àäðåñ ïåðâîãî íåïðåîáðàçóìîãî ñèìâîëà èëè ïåðâîãî ñèìâîëà
\ çà êîíöîì ñòðîêè, åñëè ñòðîêà áûëà ïîëíîñòüþ ïðåîáðàçîâàíà.
\ u2 - ÷èñëî íåïðåîáðàçîâàííûõ ñèìâîëîâ â ñòðîêå.
\ Íåîäíîçíà÷íàÿ ñèòóàöèÿ âîçíèêàåò, åñëè ud2 ïåðåïîëíÿåòñÿ âî âðåìÿ
\ ïðåîáðàçîâàíèÿ.
BEGIN
DUP
WHILE
>R
DUP >R
C@ BASE @ DIGIT 0= \ ud n flag
IF R> R> EXIT THEN \ ud n ( ud = udh udl )
SWAP BASE @ UM* DROP \ udl n udh*base
ROT BASE @ UM* D+ \ (n udh*base)+(udl*baseD)
R> 1+ R> 1-
REPEAT
;
 
: SCREEN-LENGTH ( addr n -- n1 ) \ ýêðàííàÿ-äëèíà
\ äàòü äëèíó ñòðîêè ïðè âûâîäå (ïðè ïå÷àòè)
\ - ÷èñëî çíàêîìåñò, êîòîðîå ñòðîêà çàéìåò íà ýêðàíå.
\ addr n - ñòðîêà. n1 ÷èñëî çíàêîìåñò íà ýêðàí.
0 -ROT OVER + SWAP ?DO
I C@ 9 = IF 3 RSHIFT 1+ 3 LSHIFT
ELSE 1+ THEN
LOOP
;
/programs/develop/SPForth/src/tc_spfopt.f
0,0 → 1,93
REQUIRE INCLUDED_L ~mak/listing3.f
 
0 VALUE TOUSER-VALUE-CODE
0 VALUE ---CODE
 
0 VALUE DO-OFF
0 VALUE ?DO-OFF
 
0 VALUE OFF-LOOP
0 VALUE OFF-+LOOP
 
0 VALUE 'DUP_V
0 VALUE 'DROP_V
 
' DUP TO 'DUP_V
' DROP TO 'DROP_V
 
: 'DUP 'DUP_V ;
: 'DROP 'DROP_V ;
 
: M\ POSTPONE \ ; IMMEDIATE
: OS\ ( POSTPONE \) ; IMMEDIATE
 
: [>T] ; IMMEDIATE
: >T ; IMMEDIATE
 
TRUE VALUE J_OPT?
: TT ;
S" src/macroopt.f" INCLUDED
 
: TSET-OPT SET-OPT ;
: TDIS-OPT DIS-OPT ;
: TOMM_SIZE TO MM_SIZE ;
 
REQUIRE GTYPE ~mak/djgpp/gdis.f
 
TRUE TO ?C-JMP
\ 0 TO ?C-JMP
 
: TC-COMPILE, \ 94 CORE EXT
\ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
\ Âûïîëíåíèå: ( xt -- )
\ Äîáàâèòü ñåìàíòèêó âûïîëíåíèÿ îïðåäåëåíèÿ, ïðåäñòàâëåíîãî xt, ê
\ ñåìàíòèêå âûïîëíåíèÿ òåêóùåãî îïðåäåëåíèÿ.
CON>LIT
IF INLINE?
IF INLINE,
ELSE _COMPILE,
THEN
THEN
;
 
: _DABS ( d -- ud ) \ 94 DOUBLE
\ ud àáñîëþòíàÿ âåëè÷èíà d.
DUP 0< IF DNEGATE THEN
;
 
0xE9 ' COMPILE, C!
' TC-COMPILE, ' COMPILE, - 5 - ' COMPILE, 1+ !
 
 
: DABS ( d -- ud ) \ 94 DOUBLE
\ ud àáñîëþòíàÿ âåëè÷èíà d.
DUP 0< IF DNEGATE THEN
;
 
0 VALUE TSAVE_LIMIT
 
: TSAVE ( ADDR LEN -- )
H-STDOUT >R R/W CREATE-FILE THROW TO H-STDOUT
UNIX-LINES
CR ." MUSEROFFS EQU " USER-HERE RESERVE - 2 MAX .
CR
HERE >R
CONTEXT @ @
BEGIN
CR ." AHEADER "
DUP 1- C@ . ." ,"
DUP COUNT ATYPE ." ,"
DUP COUNT GTYPE
CR
R> OVER NAME> GDIS
DUP NAME>C >R
CDR
DUP TSAVE_LIMIT U<
UNTIL DROP RDROP CR
H-STDOUT CLOSE-FILE THROW R> TO H-STDOUT
;
 
: RN> CHAR SWAP WordByAddr DROP C! ;
 
' CR CONSTANT '_CR
 
/programs/develop/SPForth/src
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/SPForth/.
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property