From 7d86aa96d17640e3051357bf550e52a54e070b5c Mon Sep 17 00:00:00 2001 From: GerdtR Date: Fri, 14 Jun 2013 20:52:48 +0000 Subject: [PATCH] Has Deleted not need file git-svn-id: svn://kolibrios.org@3661 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/fasm/trunk/FASM.ASM | 738 --------------------------- 1 file changed, 738 deletions(-) delete mode 100644 programs/develop/fasm/trunk/FASM.ASM diff --git a/programs/develop/fasm/trunk/FASM.ASM b/programs/develop/fasm/trunk/FASM.ASM deleted file mode 100644 index 45596fdedd..0000000000 --- a/programs/develop/fasm/trunk/FASM.ASM +++ /dev/null @@ -1,738 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ;; -;; flat assembler source ;; -;; Copyright (c) 1999-2012, Tomasz Grysztar ;; -;; All rights reserved. ;; -;; ;; -;; KolibriOS port by KolibriOS Team ;; -;; Menuet port by VT ;; -;; ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -NORMAL_MODE = 8 -CONSOLE_MODE = 32 - -MAGIC1 = 6*(text.line_size-1)+14 -MAX_PATH = 100 - -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 -;--------------------------------------------------------------------- -include 'lang.inc' -include '../../../macros.inc' -purge add,sub ; macros.inc does incorrect substitution -include 'fasm.inc' - -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 - or eax, -1 - rep stosd - push 68 - pop eax - push 11 - pop ebx - mcall - - cmp [params],0 - jz start_1 - ;---------GerdtR - or ecx,-1 - mov esi,params - cmp byte[esi],' ' - jne @f - mov edi,esi - mov al,' ' - repe scasb - mov esi,edi - dec esi - @@: - - mov edi,dbgWord - @@: lodsb - scasb - jne NoOutDebugInfo - cmp byte[edi],0 - jnz @b - - cmp byte[esi],' ' - jne NoOutDebugInfo - - mov edi,esi - mov al,' ' - repe scasb - mov esi,edi - dec esi - - mov edi,params - @@: lodsb - stosb - test al,al - jnz @b - - ; mov [bGenerateDebugInfo], 1 - or dword[ch1_dbg.flags],10b - - -NoOutDebugInfo: - ;---------/GerdtR - 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 ;маска системных событий -;--------------------------------------------------------------------- -init_checkboxes2 ch1_dbg,ch1_dbg+ch_struc_size -;--------------------------------------------------------------------- -; OpenDialog initialisation - push dword OpenDialog_data - call dword [OpenDialog_Init] -;--------------------------------------------------------------------- -red: ; Redraw - call draw_window - -still: - mcall 10 ; Wait here for event - cmp al,6 - je call_mouse - dec eax - je red ; Redraw request - dec eax - jne button ; Button in buffer -key: ; Key - mcall 2 ; Read it and ignore - - 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 -;--------------------------------------------------------------------- -button: ; Button in Window - mcall 17 - 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 -;--------------------------------------------------------------------- -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 -;--------------------------------------------------------------------- -draw_window: - pusha - mcall 12,1 ; Start of draw - - get_sys_colors 1,0 - edit_boxes_set_sys_color edit1,editboxes_end,sc - check_boxes_set_sys_color2 ch1_dbg,ch1_dbg+ch_struc_size,sc - - mov edx,[sc.work] - or edx,0x33000000 - xor eax,eax - xor esi,esi - mcall ,<100,280>,<90,260>,,,title ; Draw Window Label Text - - mcall 9,PROCESSINFO,-1 - - mov eax,[PROCESSINFO+70] ;status of window - test eax,100b - jne .end - - 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 - - mpack ebx,6,0 ; Draw Window Text - add ebx,1+ 14/2-3 - mcall 4,,[sc.work_text],text,text.line_size ;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] -.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 - - 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 символ -@@: - 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 - - 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] - - mov esi,[edit2.text] - xor eax,eax - cld -.cycle: - lodsb - test eax,eax - jnz .cycle - - sub esi,5 - 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: - 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 - mcall 13,,,[sc.work] ; clear work area -_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 -;--------------------------------------------------------------------- -; DATA -;--------------------------------------------------------------------- -if lang eq ru -text: - db ' ВхФайл:' -.line_size = $-text - db 'ВыхФайл:' - db ' Путь:' - ;db 'x' - - s_compile db 'Компил.' - s_run db ' Пуск ' - s_debug db 'Отладка' - s_dbgdescr db 'Создавать отладочную информацию',0 - - - err_message_found_lib0 db 'Не найдена библиотека box_lib.obj',0 ;строка, которая будет в сформированном окне, если библиотека не будет найдена - err_message_import0 db 'Ошибка при импорте библиотеки box_lib.obj',0 - err_message_found_lib1 db 'Не найдена библиотека proc_lib.obj',0 - err_message_import1 db 'Ошибка при импорте библиотеки proc_lib.obj',0 - head_f_i: - head_f_l db 'Системная ошибка',0 ;заголовок окна, при возникновении ошибки -else -text: - db ' InFile:' -.line_size = $-text - db 'OutFile:' - db ' Path:' - ;db 'x' - - s_compile db 'COMPILE' - s_run db ' RUN ' - s_debug db ' DEBUG ' - s_dbgdescr db 'Generate debug information',0 - - - err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0 - err_message_import0 db 'Error on load import library box_lib.obj',0 - err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',0 - err_message_import1 db 'Error on load import library proc_lib.obj',0 - - head_f_i: - head_f_l db 'System error',0 ;заголовок окна, при возникновении ошибки -end if - - system_dir0 db '/sys/lib/' - lib0_name db 'box_lib.obj',0 - - 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 - -init_checkbox dd aInit_checkbox -check_box_draw dd aCheck_box_draw -check_box_mouse dd aCheck_box_mouse -;version_ch dd aVersion_ch - - 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 - -aInit_checkbox db 'init_checkbox2',0 -aCheck_box_draw db 'check_box_draw2',0 -aCheck_box_mouse db 'check_box_mouse2',0 -;aVersion_ch db 'version_ch2',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 -;--------------------------------------------------------------------- -;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 - lib1 l_libs lib1_name, cur_dir_path, library_path, system_dir1, err_message_found_lib1, head_f_l, import_proc_lib,err_message_import1, head_f_i -load_lib_end: - -edit1 edit_box 153, 56, 1, 0xffffff, 0xff, 0x80ff, 0, 0x8000, (outfile-infile-1), infile, mouse_dd, 0, 11,11 -edit2 edit_box 153, 56, 17, 0xffffff, 0xff, 0x80ff, 0, 0x8000,(path-outfile-1), outfile, mouse_dd, 0, 7,7 -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_box2 (5 shl 16)+12, (49 shl 16)+12, 6, 0xffffff, 0x80ff, 0, s_dbgdescr,ch_flag_bottom -;--------------------------------------------------------------------- -align 4 -OpenDialog_data: -.type dd 0 -.procinfo dd pinfo ;+4 -.com_area_name dd communication_area_name ;+8 -.com_area dd 0 ;+12 -.opendir_path dd path ;+16 -.dir_default_path dd default_dir ;+20 -.start_path dd library_path ;+24 путь к диалогу открытия файлов -.draw_window dd draw_window ;+28 -.status dd 0 ;+32 -.openfile_path dd path ;+36 путь к открываемому файлу -.filename_area dd filename_area ;+40 -.filter_area dd Filter -.x: -.x_size dw 420 ;+48 ; Window X size -.x_start dw 10 ;+50 ; Window X position -.y: -.y_size dw 320 ;+52 ; Window y size -.y_start dw 10 ;+54 ; Window Y position - -default_dir db '/rd/1',0 ;директория по умолчанию - -communication_area_name: - db 'FFFFFFFF_open_dialog',0 -open_dialog_name: - db 'opendial',0 -communication_area_default_path: - db '/rd/1/File managers/',0 - -Filter: -dd Filter.end - Filter -.1: -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' - times MAX_PATH-$+outfile db 0 -path db '/rd/1//' ;OpenDialog при запуске убирает последний слеш, но диалог может использоваться не всегда, потому слеша 2 - times MAX_PATH-$+path db 0 -path_end: -lf db 13,10,0 -;--------------------------------------------------------------------- -mov_param_str: - cld -@@: - lodsb - cmp al,',' - je @f - stosb - test al,al - jnz @b -@@: - xor al,al - stosb - ret -;--------------------------------------------------------------------- -start: - cmp [_mode],NORMAL_MODE - jne @f - call draw_messages - mov [textxy],7 shl 16 + 70 -@@: - 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 -@@: - 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 - xor ecx,ecx - mcall 70,file_info_start -@@: - jmp exit_program -;--------------------------------------------------------------------- -include 'system.inc' -include 'version.inc' -include 'errors.inc' -include 'symbdump.inc' -include 'preproce.inc' -include 'parser.inc' -include 'exprpars.inc' -include 'assemble.inc' -include 'exprcalc.inc' -include 'formats.inc' -include 'x86_64.inc' -include 'avx.inc' -include 'tables.inc' -include 'messages.inc' -;--------------------------------------------------------------------- -title db appname,VERSION_STRING,0 - -_logo db 'flat assembler version ',VERSION_STRING,13,10,0 - -_passes_suffix db ' passes, ',0 -_seconds_suffix db ' seconds, ',0 -_bytes_suffix db ' bytes.',13,10,0 - -_include db 'INCLUDE',0 - -_counter db 4,'0000' - -_mode dd NORMAL_MODE -_run_outfile dd 0 - -;bGenerateDebugInfo db 0 - -dbgWord db '-d',0 - -sub_table: -times $41 db $00 -times $1A db $20 -times $25 db $00 -times $10 db $20 -times $30 db $00 -times $10 db $50 -times $04 db $00,$01 -times $08 db $00 - -;include_debug_strings -program_end: -; params db 0 ; 'TINYPAD.ASM,TINYPAD,/HD/1/TPAD4/', -params rb 4096 -cur_dir_path rb 4096 -library_path rb 4096 -filename_area rb 256 - -align 4 - -include 'variable.inc' - -program_base dd ? -buffer_address dd ? -memory_setting dd ? -start_time dd ? -memblock dd ? - -predefinitions rb 1000h - -dbgfilename rb MAX_PATH+4 - -sc system_colors -max_handles = 8 -fileinfos rb (4+20+MAX_PATH)*max_handles -fileinfos_end: -pinfo process_information - -align 1000h -rb 1000h -stacktop: