FASM - checking for "rolled up" window
git-svn-id: svn://kolibrios.org@2059 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8e1566eec3
commit
9934173476
@ -1,8 +1,6 @@
|
||||
@fasm.exe -m 16384 ..\..\..\develop\libraries\box_lib\trunk\box_lib.asm box_lib.obj
|
||||
@kpack box_lib.obj
|
||||
@erase lang.inc
|
||||
@echo lang fix en >lang.inc
|
||||
@fasm fasm.asm fasm
|
||||
@fasm -m 16384 fasm.asm fasm
|
||||
@erase lang.inc
|
||||
@kpack fasm
|
||||
@pause
|
@ -1,8 +1,6 @@
|
||||
@fasm.exe -m 16384 ..\..\..\develop\libraries\box_lib\trunk\box_lib.asm box_lib.obj
|
||||
@kpack box_lib.obj
|
||||
@erase lang.inc
|
||||
@echo lang fix ru >lang.inc
|
||||
@fasm fasm.asm fasm
|
||||
@fasm -m 16384 fasm.asm fasm
|
||||
@erase lang.inc
|
||||
@kpack fasm
|
||||
@pause
|
@ -4,6 +4,7 @@
|
||||
;; Copyright (c) 1999-2006, Tomasz Grysztar ;;
|
||||
;; All rights reserved. ;;
|
||||
;; ;;
|
||||
;; KolibriOS port by KolibriOS Team ;;
|
||||
;; Menuet port by VT ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -19,18 +20,17 @@ APP_MEMORY = 0x00800000
|
||||
;; Menuet header
|
||||
|
||||
appname equ "flat assembler "
|
||||
|
||||
use32
|
||||
|
||||
org 0x0
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; program start
|
||||
dd program_end ; program image size
|
||||
dd stacktop ; required amount of memory
|
||||
dd stacktop ; stack
|
||||
dd params,cur_dir_path ; parameters,icon
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; program start
|
||||
dd program_end ; program image size
|
||||
dd stacktop ; required amount of memory
|
||||
dd stacktop ; stack
|
||||
dd params,cur_dir_path ; parameters,icon
|
||||
;---------------------------------------------------------------------
|
||||
include 'lang.inc'
|
||||
include '../../../macros.inc'
|
||||
purge add,sub ; macros.inc does incorrect substitution
|
||||
@ -40,10 +40,8 @@ include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../../develop/libraries/box_lib/load_lib.mac'
|
||||
@use_library
|
||||
|
||||
|
||||
|
||||
center fix true
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
START: ; Start of execution
|
||||
mov edi, fileinfos
|
||||
mov ecx, (fileinfos_end-fileinfos)/4
|
||||
@ -55,364 +53,360 @@ START: ; Start of execution
|
||||
pop ebx
|
||||
mcall
|
||||
|
||||
cmp [params],0
|
||||
jz start_1
|
||||
|
||||
mov ecx,10
|
||||
mov eax,' '
|
||||
mov edi,infile
|
||||
push ecx
|
||||
cld
|
||||
rep stosd
|
||||
mov ecx,[esp]
|
||||
mov edi,outfile
|
||||
rep stosd
|
||||
pop ecx
|
||||
mov edi,path
|
||||
rep stosd
|
||||
|
||||
mov esi,params
|
||||
; DEBUGF "params: %s\n",esi
|
||||
mov edi,infile
|
||||
call mov_param_str
|
||||
; mov edi,infile
|
||||
; DEBUGF " input: %s\n",edi
|
||||
mov edi,outfile
|
||||
call mov_param_str
|
||||
; mov edi,outfile
|
||||
; DEBUGF "output: %s\n",edi
|
||||
mov edi,path
|
||||
call mov_param_str
|
||||
; mov edi,path
|
||||
; DEBUGF " path: %s\n",edi
|
||||
dec esi
|
||||
cmp [esi], dword ',run'
|
||||
jne @f
|
||||
mov [_run_outfile],1
|
||||
@@:
|
||||
|
||||
mov [_mode],CONSOLE_MODE
|
||||
jmp start
|
||||
|
||||
cmp [params],0
|
||||
jz start_1
|
||||
|
||||
mov ecx,10
|
||||
mov eax,' '
|
||||
mov edi,infile
|
||||
push ecx
|
||||
cld
|
||||
rep stosd
|
||||
mov ecx,[esp]
|
||||
mov edi,outfile
|
||||
rep stosd
|
||||
pop ecx
|
||||
mov edi,path
|
||||
rep stosd
|
||||
|
||||
mov esi,params
|
||||
; DEBUGF "params: %s\n",esi
|
||||
mov edi,infile
|
||||
call mov_param_str
|
||||
; mov edi,infile
|
||||
; DEBUGF " input: %s\n",edi
|
||||
mov edi,outfile
|
||||
call mov_param_str
|
||||
; mov edi,outfile
|
||||
; DEBUGF "output: %s\n",edi
|
||||
mov edi,path
|
||||
call mov_param_str
|
||||
; mov edi,path
|
||||
; DEBUGF " path: %s\n",edi
|
||||
dec esi
|
||||
cmp [esi], dword ',run'
|
||||
jne @f
|
||||
mov [_run_outfile],1
|
||||
@@:
|
||||
mov [_mode],CONSOLE_MODE
|
||||
jmp start
|
||||
;---------------------------------------------------------------------
|
||||
start_1:
|
||||
;sys_
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
cmp eax,-1
|
||||
jne @f
|
||||
mcall -1 ;exit if not open box_lib.obj
|
||||
@@:
|
||||
mcall 40,0x27 ;¬ ᪠á¨á⥬ëå ᮡë⨩
|
||||
|
||||
get_sys_colors 1,0
|
||||
edit_boxes_set_sys_color edit1,editboxes_end,sc
|
||||
check_boxes_set_sys_color ch1_dbg,ch1_dbg+ch_struc_size,sc
|
||||
|
||||
; OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call dword [OpenDialog_Init]
|
||||
|
||||
cmp eax,-1
|
||||
jne @f
|
||||
mcall -1 ;exit if not open box_lib.obj
|
||||
@@:
|
||||
mcall 40,0x27 ;¬ ᪠á¨á⥬ëå ᮡë⨩
|
||||
;---------------------------------------------------------------------
|
||||
get_sys_colors 1,0
|
||||
edit_boxes_set_sys_color edit1,editboxes_end,sc
|
||||
check_boxes_set_sys_color ch1_dbg,ch1_dbg+ch_struc_size,sc
|
||||
;---------------------------------------------------------------------
|
||||
; OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call dword [OpenDialog_Init]
|
||||
;---------------------------------------------------------------------
|
||||
red: ; Redraw
|
||||
call draw_window
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
push 10 ; Wait here for event
|
||||
pop eax
|
||||
mcall
|
||||
cmp al,6
|
||||
je call_mouse
|
||||
dec eax
|
||||
je red ; Redraw request
|
||||
dec eax
|
||||
jne button ; Button in buffer
|
||||
|
||||
push 10 ; Wait here for event
|
||||
pop eax
|
||||
mcall
|
||||
cmp al,6
|
||||
je call_mouse
|
||||
dec eax
|
||||
je red ; Redraw request
|
||||
dec eax
|
||||
jne button ; Button in buffer
|
||||
key: ; Key
|
||||
mov al,2 ; Read it and ignore
|
||||
mcall
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_key]
|
||||
push dword edit2
|
||||
call [edit_box_key]
|
||||
push dword edit3
|
||||
call [edit_box_key]
|
||||
|
||||
jmp still
|
||||
|
||||
mov al,2 ; Read it and ignore
|
||||
mcall
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_key]
|
||||
push dword edit2
|
||||
call [edit_box_key]
|
||||
push dword edit3
|
||||
call [edit_box_key]
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
call_mouse:
|
||||
call mouse
|
||||
jmp still
|
||||
|
||||
call mouse
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button: ; Button in Window
|
||||
|
||||
mov al,17
|
||||
mcall
|
||||
|
||||
cmp ah,1
|
||||
jne noclose
|
||||
or eax,-1
|
||||
mcall
|
||||
|
||||
mov al,17
|
||||
mcall
|
||||
|
||||
cmp ah,1
|
||||
jne noclose
|
||||
or eax,-1
|
||||
mcall
|
||||
;---------------------------------------------------------------------
|
||||
noclose:
|
||||
cmp ah,5 ;press button for OpenDialog
|
||||
jne @f
|
||||
call fun_opn_dlg
|
||||
@@:
|
||||
cmp ah,2 ; Start compiling
|
||||
je start
|
||||
cmp ah,3 ; Start compiled file
|
||||
jnz norunout
|
||||
|
||||
mov edx,outfile
|
||||
call make_fullpaths
|
||||
mcall 70,file_info_start
|
||||
; xor ecx,ecx
|
||||
jmp still
|
||||
norunout:
|
||||
cmp ah,4
|
||||
jnz norundebug
|
||||
|
||||
mov edx,outfile
|
||||
call make_fullpaths
|
||||
mcall 70,file_info_debug
|
||||
jmp still
|
||||
|
||||
norundebug:
|
||||
|
||||
jmp still
|
||||
|
||||
|
||||
cmp ah,5 ;press button for OpenDialog
|
||||
jne @f
|
||||
call fun_opn_dlg
|
||||
@@:
|
||||
cmp ah,2 ; Start compiling
|
||||
je start
|
||||
cmp ah,3 ; Start compiled file
|
||||
jnz norunout
|
||||
|
||||
mov edx,outfile
|
||||
call make_fullpaths
|
||||
mcall 70,file_info_start
|
||||
; xor ecx,ecx
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
norunout:
|
||||
cmp ah,4
|
||||
jnz norundebug
|
||||
|
||||
mov edx,outfile
|
||||
call make_fullpaths
|
||||
mcall 70,file_info_debug
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
norundebug:
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
push dword edit1
|
||||
call [edit_box_mouse]
|
||||
push dword edit2
|
||||
call [edit_box_mouse]
|
||||
push dword edit3
|
||||
call [edit_box_mouse]
|
||||
push dword ch1_dbg
|
||||
call [check_box_mouse]
|
||||
ret
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_mouse]
|
||||
push dword edit2
|
||||
call [edit_box_mouse]
|
||||
push dword edit3
|
||||
call [edit_box_mouse]
|
||||
push dword ch1_dbg
|
||||
call [check_box_mouse]
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
draw_window:
|
||||
pusha
|
||||
pusha
|
||||
mcall 12,1 ; Start of draw
|
||||
;get_sys_colors 1,0
|
||||
xor eax,eax
|
||||
mov ebx,100*65536+280
|
||||
mov ecx,90*65536+260
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mov edi,title ; Draw Window Label Text
|
||||
mcall
|
||||
|
||||
mcall 12,1 ; Start of draw
|
||||
mcall 9,PROCESSINFO,-1
|
||||
|
||||
;get_sys_colors 1,0
|
||||
mov eax,[PROCESSINFO+70] ;status of window
|
||||
test eax,100b
|
||||
jne .end
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,100*65536+280
|
||||
mov ecx,90*65536+260
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mov edi,title ; Draw Window Label Text
|
||||
mcall
|
||||
cmp dword[pinfo.box.width],230 ; ïðîâåðÿåì øèðèíó îêíà
|
||||
jge @f
|
||||
mov dword[pinfo.box.width],230 ; åñëè îêíî î÷åíü óçêîå, óâåëè÷èâàåì øèðèíó äëÿ èçáåæàíèÿ ãëþêîâ
|
||||
@@:
|
||||
mpack ecx,1,1
|
||||
mov ebx,[pinfo.box.width]
|
||||
sub ebx,10
|
||||
mov eax,8
|
||||
mov edx,0x4000000B
|
||||
mpack ebx,[pinfo.box.width],MAGIC1
|
||||
msub ebx,MAGIC1+10+1,0
|
||||
mpack ecx,0, (14*3+16)/3-1
|
||||
madd ecx,1,0
|
||||
mcall ,,,0x00000002,[sc.work_button]
|
||||
madd ecx, (14*3+16)/3+1,0
|
||||
mcall ,,,0x00000003
|
||||
madd ecx, (14*3+16)/3+1,0
|
||||
mcall ,,,4
|
||||
;button for OpenDialog [..]
|
||||
mov ebx, 5*65536+47
|
||||
mov ecx, 33*65536+14
|
||||
mcall ,,,5
|
||||
|
||||
mcall 9,PROCESSINFO,-1
|
||||
mpack ebx,6,0 ; Draw Window Text
|
||||
add ebx,1+ 14/2-3
|
||||
mov ecx,[sc.work_text]
|
||||
mov edx,text
|
||||
mov esi,text.line_size
|
||||
mov eax,4
|
||||
mcall ;InFile
|
||||
|
||||
cmp dword[pinfo.box.width],230 ; ïðîâåðÿåì øèðèíó îêíà
|
||||
jge @f
|
||||
mov dword[pinfo.box.width],230 ; åñëè îêíî î÷åíü óçêîå, óâåëè÷èâàåì øèðèíó äëÿ èçáåæàíèÿ ãëþêîâ
|
||||
@@:
|
||||
add ebx, 16 ;14
|
||||
add edx,text.line_size
|
||||
mcall ;OutFile
|
||||
|
||||
mpack ecx,1,1
|
||||
mov ebx,[pinfo.box.width]
|
||||
sub ebx,10
|
||||
mov ecx,[sc.work_button_text]
|
||||
add ebx, 16 ;14
|
||||
add edx,text.line_size
|
||||
mcall ;Path
|
||||
|
||||
mov eax,8
|
||||
mov edx,0x4000000B
|
||||
mpack ebx,[pinfo.box.width],MAGIC1
|
||||
msub ebx,MAGIC1+10+1,0
|
||||
mpack ecx,0, (14*3+16)/3-1
|
||||
madd ecx,1,0
|
||||
mcall ,,,0x00000002,[sc.work_button]
|
||||
madd ecx, (14*3+16)/3+1,0
|
||||
mcall ,,,0x00000003
|
||||
madd ecx, (14*3+16)/3+1,0
|
||||
mcall ,,,4
|
||||
|
||||
;button for OpenDialog [..]
|
||||
mov ebx, 5*65536+47
|
||||
mov ecx, 33*65536+14
|
||||
mcall ,,,5
|
||||
|
||||
mpack ebx,6,0 ; Draw Window Text
|
||||
add ebx,1+ 14/2-3
|
||||
mov ecx,[sc.work_text]
|
||||
mov edx,text
|
||||
mov esi,text.line_size
|
||||
mov eax,4
|
||||
|
||||
mcall ;InFile
|
||||
add ebx, 16 ;14
|
||||
add edx,text.line_size
|
||||
mcall ;OutFile
|
||||
mov ecx,[sc.work_button_text]
|
||||
add ebx, 16 ;14
|
||||
add edx,text.line_size
|
||||
mcall ;Path
|
||||
|
||||
mov ebx,[pinfo.box.width]
|
||||
sub ebx,MAGIC1+10+1-9
|
||||
shl ebx,16
|
||||
add ebx,1+( (14*3+16)/3-1)/2-3
|
||||
mcall ,,[sc.work_button_text],s_compile,7
|
||||
add ebx,(14*3+16)/3+1
|
||||
mcall ,,,s_run
|
||||
add ebx,(14*3+16)/3+1
|
||||
mcall ,,,s_debug
|
||||
|
||||
mpack ebx,MAGIC1+6,0
|
||||
add ebx,1+ 14/2-3+ 14*0
|
||||
mov esi,[pinfo.box.width]
|
||||
sub esi,MAGIC1*2+5*2+6+3
|
||||
mov eax,esi
|
||||
mov cl,6
|
||||
div cl
|
||||
cmp al,MAX_PATH
|
||||
jbe @f
|
||||
mov al,MAX_PATH
|
||||
@@: movzx esi,al
|
||||
|
||||
call draw_messages
|
||||
|
||||
mov eax,dword[pinfo.box.width]
|
||||
sub eax,127
|
||||
mov dword[edit1.width],eax ; óñòàíàâëèâàåì øèðèíó òåêñòîâûõ ïîëåé
|
||||
mov dword[edit2.width],eax
|
||||
mov dword[edit3.width],eax
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_draw]
|
||||
push dword edit2
|
||||
call [edit_box_draw]
|
||||
push dword edit3
|
||||
call [edit_box_draw]
|
||||
push dword ch1_dbg
|
||||
call [check_box_draw]
|
||||
|
||||
mcall 12,2 ; End of Draw
|
||||
|
||||
popa
|
||||
ret
|
||||
mov ebx,[pinfo.box.width]
|
||||
sub ebx,MAGIC1+10+1-9
|
||||
shl ebx,16
|
||||
add ebx,1+( (14*3+16)/3-1)/2-3
|
||||
mcall ,,[sc.work_button_text],s_compile,7
|
||||
add ebx,(14*3+16)/3+1
|
||||
mcall ,,,s_run
|
||||
add ebx,(14*3+16)/3+1
|
||||
mcall ,,,s_debug
|
||||
|
||||
mpack ebx,MAGIC1+6,0
|
||||
add ebx,1+ 14/2-3+ 14*0
|
||||
mov esi,[pinfo.box.width]
|
||||
sub esi,MAGIC1*2+5*2+6+3
|
||||
mov eax,esi
|
||||
mov cl,6
|
||||
div cl
|
||||
cmp al,MAX_PATH
|
||||
jbe @f
|
||||
mov al,MAX_PATH
|
||||
@@:
|
||||
movzx esi,al
|
||||
|
||||
call draw_messages
|
||||
|
||||
mov eax,dword[pinfo.box.width]
|
||||
sub eax,127
|
||||
mov dword[edit1.width],eax ; óñòàíàâëèâàåì øèðèíó òåêñòîâûõ ïîëåé
|
||||
mov dword[edit2.width],eax
|
||||
mov dword[edit3.width],eax
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_draw]
|
||||
push dword edit2
|
||||
call [edit_box_draw]
|
||||
push dword edit3
|
||||
call [edit_box_draw]
|
||||
push dword ch1_dbg
|
||||
call [check_box_draw]
|
||||
.end:
|
||||
mcall 12,2 ; End of Draw
|
||||
popa
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
bottom_right dd ?
|
||||
|
||||
align 4
|
||||
fun_opn_dlg: ;äãªæ¨ï ¤«ï ¢ë§®¢ OpenFile ¤¨ «®£
|
||||
pushad
|
||||
copy_path open_dialog_name,communication_area_default_path,library_path,0
|
||||
mov [OpenDialog_data.type],0
|
||||
mov [OpenDialog_data.type],0
|
||||
|
||||
xor al,al
|
||||
mov edi,dword[edit3.text]
|
||||
mov ecx,dword[edit3.max]
|
||||
xor al,al
|
||||
mov edi,dword[edit3.text]
|
||||
mov ecx,dword[edit3.max]
|
||||
cld
|
||||
repne scasb
|
||||
cmp byte[edi-2],'/'
|
||||
jne @f
|
||||
mov byte[edi-2],0 ;¥á«¨ ¢ ª®æ¥ ¯ã⨠¥áâì á«¥è, â® ¯ãâì 㪮à 稢 ¥¬ 1 ᨬ¢®«
|
||||
@@:
|
||||
repne scasb
|
||||
cmp byte[edi-2],'/'
|
||||
jne @f
|
||||
mov byte[edi-2],0 ;¥á«¨ ¢ ª®æ¥ ¯ã⨠¥áâì á«¥è, â® ¯ãâì 㪮à 稢 ¥¬ 1 ᨬ¢®«
|
||||
@@:
|
||||
push dword OpenDialog_data
|
||||
call dword [OpenDialog_Start]
|
||||
cmp [OpenDialog_data.status],2
|
||||
je @f
|
||||
|
||||
push dword OpenDialog_data
|
||||
call dword [OpenDialog_Start]
|
||||
cmp [OpenDialog_data.status],2
|
||||
je @f
|
||||
xor al,al
|
||||
mov edi,dword[edit3.text]
|
||||
mov ebx,edi ;copy text pointer
|
||||
mov ecx,dword[edit3.max]
|
||||
cld
|
||||
repne scasb
|
||||
cmp byte[edi-2],'/'
|
||||
jne .no_slash
|
||||
dec edi ;¥á«¨ ¢ ª®æ¥ ¯ã⨠¥áâì á«¥è, â® ¯ãâì 㪮à 稢 ¥¬ 1 ᨬ¢®«
|
||||
.no_slash:
|
||||
mov byte[edi-1],'/' ;áâ ¢¨¬ ¢ ª®æ¥ ¯ã⨠᫥è
|
||||
mov byte[edi],0 ;®â१ ¥¬ ¨¬ï ©¤¥®£® ä ©«
|
||||
sub edi,ebx ;edi = strlen(edit3.text)
|
||||
mov [edit3.size],edi
|
||||
mov [edit3.pos],edi
|
||||
xor al,al
|
||||
mov edi,dword[edit3.text]
|
||||
mov ebx,edi ;copy text pointer
|
||||
mov ecx,dword[edit3.max]
|
||||
cld
|
||||
repne scasb
|
||||
cmp byte[edi-2],'/'
|
||||
jne .no_slash
|
||||
|
||||
dec edi ;¥á«¨ ¢ ª®æ¥ ¯ã⨠¥áâì á«¥è, â® ¯ãâì 㪮à 稢 ¥¬ 1 ᨬ¢®«
|
||||
.no_slash:
|
||||
mov byte[edi-1],'/' ;áâ ¢¨¬ ¢ ª®æ¥ ¯ã⨠᫥è
|
||||
mov byte[edi],0 ;®â१ ¥¬ ¨¬ï ©¤¥®£® ä ©«
|
||||
sub edi,ebx ;edi = strlen(edit3.text)
|
||||
mov [edit3.size],edi
|
||||
mov [edit3.pos],edi
|
||||
|
||||
push dword [OpenDialog_data.filename_area]
|
||||
push dword edit1
|
||||
call dword [edit_box_set_text]
|
||||
push dword [OpenDialog_data.filename_area]
|
||||
push dword edit1
|
||||
call dword [edit_box_set_text]
|
||||
|
||||
push dword [OpenDialog_data.filename_area]
|
||||
push dword edit2
|
||||
call dword [edit_box_set_text]
|
||||
push dword [OpenDialog_data.filename_area]
|
||||
push dword edit2
|
||||
call dword [edit_box_set_text]
|
||||
|
||||
mov esi,[edit2.text]
|
||||
xor eax,eax
|
||||
cld
|
||||
.cycle:
|
||||
lodsb
|
||||
test eax,eax
|
||||
jnz .cycle
|
||||
sub esi,4
|
||||
cmp esi,[edit2.text]
|
||||
jle .short_fn
|
||||
mov byte[esi],0
|
||||
sub dword [edit2.size],4
|
||||
sub dword [edit2.pos],4
|
||||
.short_fn:
|
||||
mov esi,[edit2.text]
|
||||
xor eax,eax
|
||||
cld
|
||||
.cycle:
|
||||
lodsb
|
||||
test eax,eax
|
||||
jnz .cycle
|
||||
|
||||
push dword edit1
|
||||
call dword [edit_box_draw]
|
||||
push dword edit2
|
||||
call dword [edit_box_draw]
|
||||
push dword edit3
|
||||
call dword [edit_box_draw]
|
||||
@@:
|
||||
sub esi,4
|
||||
cmp esi,[edit2.text]
|
||||
jle .short_fn
|
||||
|
||||
mov byte[esi],0
|
||||
sub dword [edit2.size],4
|
||||
sub dword [edit2.pos],4
|
||||
|
||||
.short_fn:
|
||||
push dword edit1
|
||||
call dword [edit_box_draw]
|
||||
push dword edit2
|
||||
call dword [edit_box_draw]
|
||||
push dword edit3
|
||||
call dword [edit_box_draw]
|
||||
@@:
|
||||
popad
|
||||
ret
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
draw_messages:
|
||||
mov eax,13 ; clear work area
|
||||
mpack ebx,7-2,[pinfo.box.width]
|
||||
sub ebx,5*2+7*2-1-2*2
|
||||
mpack ecx,0,[pinfo.box.height]
|
||||
madd ecx, 14*3+16+1+7+1,-( 14*3+16+1+7*2+25)
|
||||
mov word[bottom_right+2],bx
|
||||
mov word[bottom_right],cx
|
||||
msub [bottom_right],7,11
|
||||
add [bottom_right],7 shl 16 + 53
|
||||
mov edx,[sc.work]
|
||||
mcall
|
||||
mov eax,13 ; clear work area
|
||||
mpack ebx,7-2,[pinfo.box.width]
|
||||
sub ebx,5*2+7*2-1-2*2
|
||||
mpack ecx,0,[pinfo.box.height]
|
||||
madd ecx, 14*3+16+1+7+1,-( 14*3+16+1+7*2+25)
|
||||
mov word[bottom_right+2],bx
|
||||
mov word[bottom_right],cx
|
||||
msub [bottom_right],7,11
|
||||
add [bottom_right],7 shl 16 + 53
|
||||
mov edx,[sc.work]
|
||||
mcall
|
||||
_cy = 0
|
||||
_sy = 2
|
||||
_cx = 4
|
||||
_sx = 6
|
||||
push ebx ecx
|
||||
mpack ebx,4,5
|
||||
add bx,[esp+_cx]
|
||||
mov ecx,[esp+_sy-2]
|
||||
mov cx,[esp+_sy]
|
||||
msub ecx,1,1
|
||||
mcall 38,,,[sc.work_graph]
|
||||
mov si,[esp+_cy]
|
||||
add cx,si
|
||||
shl esi,16
|
||||
add ecx,esi
|
||||
madd ecx,1,1
|
||||
mcall
|
||||
mpack ebx,4,4
|
||||
mov esi,[esp+_sy-2]
|
||||
mov si,cx
|
||||
mov ecx,esi
|
||||
mcall
|
||||
mov si,[esp+_cx]
|
||||
add bx,si
|
||||
shl esi,16
|
||||
add ebx,esi
|
||||
madd ebx,1,1
|
||||
mcall
|
||||
pop ecx ebx
|
||||
ret
|
||||
|
||||
|
||||
push ebx ecx
|
||||
mpack ebx,4,5
|
||||
add bx,[esp+_cx]
|
||||
mov ecx,[esp+_sy-2]
|
||||
mov cx,[esp+_sy]
|
||||
msub ecx,1,1
|
||||
mcall 38,,,[sc.work_graph]
|
||||
mov si,[esp+_cy]
|
||||
add cx,si
|
||||
shl esi,16
|
||||
add ecx,esi
|
||||
madd ecx,1,1
|
||||
mcall
|
||||
mpack ebx,4,4
|
||||
mov esi,[esp+_sy-2]
|
||||
mov si,cx
|
||||
mov ecx,esi
|
||||
mcall
|
||||
mov si,[esp+_cx]
|
||||
add bx,si
|
||||
shl esi,16
|
||||
add ebx,esi
|
||||
madd ebx,1,1
|
||||
mcall
|
||||
pop ecx ebx
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; DATA
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
if lang eq ru
|
||||
text:
|
||||
db ' ‚å” ©«:'
|
||||
@ -461,40 +455,39 @@ end if
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
lib1_name db 'proc_lib.obj',0
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
import_box_lib:
|
||||
edit_box_draw dd aEdit_box_draw
|
||||
edit_box_key dd aEdit_box_key
|
||||
edit_box_mouse dd aEdit_box_mouse
|
||||
edit_box_set_text dd aEdit_box_set_text
|
||||
;version_ed dd aVersion_ed
|
||||
edit_box_draw dd aEdit_box_draw
|
||||
edit_box_key dd aEdit_box_key
|
||||
edit_box_mouse dd aEdit_box_mouse
|
||||
edit_box_set_text dd aEdit_box_set_text
|
||||
;version_ed dd aVersion_ed
|
||||
|
||||
check_box_draw dd aCheck_box_draw
|
||||
check_box_mouse dd aCheck_box_mouse
|
||||
;version_ch dd aVersion_ch
|
||||
check_box_draw dd aCheck_box_draw
|
||||
check_box_mouse dd aCheck_box_mouse
|
||||
;version_ch dd aVersion_ch
|
||||
|
||||
dd 0,0
|
||||
dd 0,0
|
||||
|
||||
aEdit_box_draw db 'edit_box',0
|
||||
aEdit_box_key db 'edit_box_key',0
|
||||
aEdit_box_mouse db 'edit_box_mouse',0
|
||||
aEdit_box_set_text db 'edit_box_set_text',0
|
||||
;aVersion_ed db 'version_ed',0
|
||||
|
||||
aCheck_box_draw db 'check_box_draw',0
|
||||
aCheck_box_mouse db 'check_box_mouse',0
|
||||
;aVersion_ch db 'version_ch',0
|
||||
aEdit_box_draw db 'edit_box',0
|
||||
aEdit_box_key db 'edit_box_key',0
|
||||
aEdit_box_mouse db 'edit_box_mouse',0
|
||||
aEdit_box_set_text db 'edit_box_set_text',0
|
||||
;aVersion_ed db 'version_ed',0
|
||||
|
||||
aCheck_box_draw db 'check_box_draw',0
|
||||
aCheck_box_mouse db 'check_box_mouse',0
|
||||
;aVersion_ch db 'version_ch',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
import_proc_lib:
|
||||
OpenDialog_Init dd aOpenDialog_Init
|
||||
OpenDialog_Start dd aOpenDialog_Start
|
||||
dd 0,0
|
||||
aOpenDialog_Init db 'OpenDialog_init',0
|
||||
aOpenDialog_Start db 'OpenDialog_start',0
|
||||
|
||||
OpenDialog_Init dd aOpenDialog_Init
|
||||
OpenDialog_Start dd aOpenDialog_Start
|
||||
dd 0,0
|
||||
aOpenDialog_Init db 'OpenDialog_init',0
|
||||
aOpenDialog_Start db 'OpenDialog_start',0
|
||||
;---------------------------------------------------------------------
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs lib0_name, cur_dir_path, library_path, system_dir0, err_message_found_lib0, head_f_l, import_box_lib, err_message_import0, head_f_i
|
||||
@ -506,7 +499,6 @@ edit2 edit_box 153, 56, 17, 0xffffff, 0xff, 0x80ff, 0, 0x8000,(path-outfile-1),
|
||||
edit3 edit_box 153, 56, 33, 0xffffff, 0xff, 0x80ff, 0, 0x8000,(path_end-path-1), path, mouse_dd, 0, 6,6
|
||||
editboxes_end:
|
||||
ch1_dbg check_box 5, 49, 6, 12, 0xffffff, 0x80ff, 0, s_dbgdescr,(s_dbgdescr_end-s_dbgdescr)
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
OpenDialog_data:
|
||||
@ -544,9 +536,9 @@ dd Filter.end - Filter
|
||||
db 'ASM',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
mouse_dd dd 0 ;íóæíî äëÿ Shift-à â editbox
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
infile db 'example.asm'
|
||||
times MAX_PATH-$+infile db 0
|
||||
outfile db 'example'
|
||||
@ -555,97 +547,92 @@ path db '/rd/1//' ;OpenDialog
|
||||
times MAX_PATH-$+path db 0
|
||||
path_end:
|
||||
lf db 13,10,0
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
mov_param_str:
|
||||
cld
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
cmp al,','
|
||||
je @f
|
||||
stosb
|
||||
test al,al
|
||||
jnz @b
|
||||
lodsb
|
||||
cmp al,','
|
||||
je @f
|
||||
stosb
|
||||
test al,al
|
||||
jnz @b
|
||||
@@:
|
||||
xor al,al
|
||||
stosb
|
||||
ret
|
||||
|
||||
|
||||
|
||||
xor al,al
|
||||
stosb
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
start:
|
||||
cmp [_mode],NORMAL_MODE
|
||||
jne @f
|
||||
call draw_messages
|
||||
mov [textxy],7 shl 16 + 70
|
||||
cmp [_mode],NORMAL_MODE
|
||||
jne @f
|
||||
call draw_messages
|
||||
mov [textxy],7 shl 16 + 70
|
||||
@@:
|
||||
mov esi,_logo
|
||||
call display_string
|
||||
mov esi,_logo
|
||||
call display_string
|
||||
|
||||
;
|
||||
; Fasm native code
|
||||
;
|
||||
|
||||
mov [input_file],infile
|
||||
mov [output_file],outfile
|
||||
|
||||
call init_memory
|
||||
|
||||
call make_timestamp
|
||||
mov [start_time],eax
|
||||
|
||||
call preprocessor
|
||||
call parser
|
||||
call assembler
|
||||
bt dword[ch1_dbg.flags],1 ;cmp [bGenerateDebugInfo], 0
|
||||
jae @f ;jz @f
|
||||
call symbol_dump
|
||||
;---------------------------------------------------------------------
|
||||
; Fasm native code
|
||||
;---------------------------------------------------------------------
|
||||
mov [input_file],infile
|
||||
mov [output_file],outfile
|
||||
|
||||
call init_memory
|
||||
|
||||
call make_timestamp
|
||||
mov [start_time],eax
|
||||
|
||||
call preprocessor
|
||||
call parser
|
||||
call assembler
|
||||
bt dword[ch1_dbg.flags],1 ;cmp [bGenerateDebugInfo], 0
|
||||
jae @f ;jz @f
|
||||
call symbol_dump
|
||||
@@:
|
||||
call formatter
|
||||
|
||||
call display_user_messages
|
||||
movzx eax,[current_pass]
|
||||
inc eax
|
||||
call display_number
|
||||
mov esi,_passes_suffix
|
||||
call display_string
|
||||
call make_timestamp
|
||||
sub eax,[start_time]
|
||||
xor edx,edx
|
||||
mov ebx,100
|
||||
div ebx
|
||||
or eax,eax
|
||||
jz display_bytes_count
|
||||
xor edx,edx
|
||||
mov ebx,10
|
||||
div ebx
|
||||
push edx
|
||||
call display_number
|
||||
mov dl,'.'
|
||||
call display_character
|
||||
pop eax
|
||||
call display_number
|
||||
mov esi,_seconds_suffix
|
||||
call display_string
|
||||
display_bytes_count:
|
||||
mov eax,[written_size]
|
||||
call display_number
|
||||
mov esi,_bytes_suffix
|
||||
call display_string
|
||||
xor al,al
|
||||
|
||||
cmp [_run_outfile],0
|
||||
je @f
|
||||
mov edx,outfile
|
||||
call make_fullpaths
|
||||
mov eax,70
|
||||
mov ebx,file_info_start
|
||||
xor ecx,ecx
|
||||
mcall
|
||||
call formatter
|
||||
|
||||
call display_user_messages
|
||||
movzx eax,[current_pass]
|
||||
inc eax
|
||||
call display_number
|
||||
mov esi,_passes_suffix
|
||||
call display_string
|
||||
call make_timestamp
|
||||
sub eax,[start_time]
|
||||
xor edx,edx
|
||||
mov ebx,100
|
||||
div ebx
|
||||
or eax,eax
|
||||
jz display_bytes_count
|
||||
xor edx,edx
|
||||
mov ebx,10
|
||||
div ebx
|
||||
push edx
|
||||
call display_number
|
||||
mov dl,'.'
|
||||
call display_character
|
||||
pop eax
|
||||
call display_number
|
||||
mov esi,_seconds_suffix
|
||||
call display_string
|
||||
display_bytes_count:
|
||||
mov eax,[written_size]
|
||||
call display_number
|
||||
mov esi,_bytes_suffix
|
||||
call display_string
|
||||
xor al,al
|
||||
|
||||
cmp [_run_outfile],0
|
||||
je @f
|
||||
mov edx,outfile
|
||||
call make_fullpaths
|
||||
mov eax,70
|
||||
mov ebx,file_info_start
|
||||
xor ecx,ecx
|
||||
mcall
|
||||
@@:
|
||||
jmp exit_program
|
||||
|
||||
|
||||
jmp exit_program
|
||||
;---------------------------------------------------------------------
|
||||
include 'system.inc'
|
||||
include 'version.inc'
|
||||
include 'errors.inc'
|
||||
@ -658,7 +645,7 @@ include 'x86_64.inc'
|
||||
include 'tables.inc'
|
||||
include 'symbdump.inc'
|
||||
include 'messages.inc'
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
title db appname,VERSION_STRING,0
|
||||
|
||||
_logo db 'flat assembler version ',VERSION_STRING,13,10,0
|
||||
|
Loading…
Reference in New Issue
Block a user