From 993417347679137e841e492e8785840db26c08ef Mon Sep 17 00:00:00 2001 From: "Marat Zakiyanov (Mario79)" Date: Thu, 18 Aug 2011 15:20:00 +0000 Subject: [PATCH] FASM - checking for "rolled up" window git-svn-id: svn://kolibrios.org@2059 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/fasm/trunk/build_en.bat | 4 +- programs/develop/fasm/trunk/build_ru.bat | 4 +- programs/develop/fasm/trunk/fasm.asm | 875 +++++++++++------------ 3 files changed, 433 insertions(+), 450 deletions(-) diff --git a/programs/develop/fasm/trunk/build_en.bat b/programs/develop/fasm/trunk/build_en.bat index 10da3858eb..bd25c805c9 100644 --- a/programs/develop/fasm/trunk/build_en.bat +++ b/programs/develop/fasm/trunk/build_en.bat @@ -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 \ No newline at end of file diff --git a/programs/develop/fasm/trunk/build_ru.bat b/programs/develop/fasm/trunk/build_ru.bat index 2a550bf646..4e9e630e19 100644 --- a/programs/develop/fasm/trunk/build_ru.bat +++ b/programs/develop/fasm/trunk/build_ru.bat @@ -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 \ No newline at end of file diff --git a/programs/develop/fasm/trunk/fasm.asm b/programs/develop/fasm/trunk/fasm.asm index 7cae1f64de..176d21e430 100644 --- a/programs/develop/fasm/trunk/fasm.asm +++ b/programs/develop/fasm/trunk/fasm.asm @@ -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