Rev 1439 | Rev 1581 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1439 | Rev 1510 | ||
---|---|---|---|
Line 52... | Line 52... | ||
52 | 52 | ||
53 | include 'lang.inc' |
53 | include 'lang.inc' |
54 | include '../../../macros.inc' |
54 | include '../../../macros.inc' |
55 | include '../../libraries/box_lib/trunk/box_lib.mac' |
55 | include '../../libraries/box_lib/trunk/box_lib.mac' |
56 | include '../../libraries/box_lib/load_lib.mac' |
- | |
Line 57... | Line 56... | ||
57 | include '../../libraries/box_lib/asm/trunk/opendial.mac' |
56 | include '../../libraries/box_lib/load_lib.mac' |
58 | - | ||
Line 59... | Line 57... | ||
59 | @use_library |
57 | |
Line 60... | Line 58... | ||
60 | use_OpenDialog |
58 | @use_library |
61 | 59 | ||
Line 92... | Line 90... | ||
92 | name rd 1 |
90 | name rd 1 |
93 | ends |
91 | ends |
Line 94... | Line 92... | ||
94 | 92 | ||
95 | START: |
93 | START: |
- | 94 | mcall 68,11 |
|
- | 95 | ||
- | 96 | load_libraries l_libs_start,end_l_libs |
|
96 | mcall 68,11 |
97 | |
97 | ;OpenDialog initialisation |
98 | ;OpenDialog initialisation |
- | 99 | push dword OpenDialog_data |
|
Line 98... | Line 100... | ||
98 | init_OpenDialog OpenDialog_data |
100 | call [OpenDialog_Init] |
99 | 101 | ||
100 | mov edi,filename_area |
102 | mov edi,filename_area |
101 | mov esi,start_temp_file_name |
103 | mov esi,start_temp_file_name |
Line 105... | Line 107... | ||
105 | lodsb |
107 | lodsb |
106 | stosb |
108 | stosb |
107 | test eax,eax |
109 | test eax,eax |
108 | jnz @b |
110 | jnz @b |
Line 109... | Line -... | ||
109 | - | ||
110 | load_library boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\ |
- | |
111 | err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i |
- | |
112 | 111 | ||
Line 113... | Line 112... | ||
113 | mcall 40,0x27 |
112 | mcall 40,0x27 |
114 | 113 | ||
115 | mcall 68,12,32*1024 ;áâà ¨çë© ¡ãä¥à |
114 | mcall 68,12,32*1024 ;áâà ¨çë© ¡ãä¥à |
Line 1656... | Line 1655... | ||
1656 | 1655 | ||
1657 | .threat_stack: times 16 dd 0 |
1656 | .threat_stack: times 16 dd 0 |
Line 1658... | Line 1657... | ||
1658 | ;------------------------------------------------- |
1657 | ;------------------------------------------------- |
1659 | - | ||
1660 | open_file: |
- | |
1661 | mov dword [ed_box_data],1 |
- | |
1662 | mov dword [ed_box_data+4],edit1 |
- | |
1663 | call draw_ed_box ;à¨á㥬 editbox |
- | |
1664 | ;à §¬¥à ä ©« ? |
1658 | |
1665 | .0: |
1659 | open_file: |
1666 | mov [func_70.func_n],5 |
1660 | mov [func_70.func_n],5 |
1667 | mov [func_70.param1],0 |
1661 | mov [func_70.param1],0 |
1668 | mov [func_70.param2],0 |
1662 | mov [func_70.param2],0 |
Line 1758... | Line 1752... | ||
1758 | 1752 | ||
1759 | jmp redraw_all |
1753 | jmp redraw_all |
1760 | ;------------------------------------------------------------------------------- |
1754 | ;------------------------------------------------------------------------------- |
1761 | open_dialog_save: |
1755 | open_dialog_save: |
- | 1756 | mov [OpenDialog_data.type],1 ; Save |
|
1762 | mov [OpenDialog_data.type],1 ; Save |
1757 | |
- | 1758 | push dword OpenDialog_data |
|
- | 1759 | call [OpenDialog_Start] |
|
1763 | start_OpenDialog OpenDialog_data |
1760 | |
1764 | cmp [OpenDialog_data.status],2 ; OpenDialog does not start |
1761 | ; cmp [OpenDialog_data.status],2 ; OpenDialog does not start |
1765 | ; je .sysxtree ; some kind of alternative, instead OpenDialog |
1762 | ;; je .sysxtree ; some kind of alternative, instead OpenDialog |
1766 | je save_file |
1763 | ; je save_file |
1767 | cmp [OpenDialog_data.status],1 |
1764 | cmp [OpenDialog_data.status],1 |
1768 | jne still |
1765 | jne still |
1769 | mov esi,fname_buf |
1766 | mov esi,fname_buf |
1770 | mov edi,file_name |
1767 | mov edi,file_name |
Line 1777... | Line 1774... | ||
1777 | @@: |
1774 | @@: |
1778 | mov byte [edi],0 |
1775 | mov byte [edi],0 |
1779 | sub esi,path |
1776 | sub esi,path |
1780 | mov [edit1.size],esi |
1777 | mov [edit1.size],esi |
1781 | mov [edit1.pos],esi |
1778 | mov [edit1.pos],esi |
1782 | jmp save_file.1 |
1779 | ; jmp save_file |
1783 | ;------------------------------------------------------------------------------- |
1780 | ;------------------------------------------------------------------------------- |
1784 | save_file: ;á®åà 塞 ä ©« |
1781 | save_file: ;á®åà 塞 ä ©« |
1785 | mov dword [ed_box_data],1 |
- | |
1786 | mov dword [ed_box_data+4],edit1 |
- | |
1787 | call draw_ed_box |
- | |
1788 | .1: |
- | |
1789 | mov [func_70.func_n],2 |
1782 | mov [func_70.func_n],2 |
1790 | mov [func_70.param1],0 |
1783 | mov [func_70.param1],0 |
1791 | mov [func_70.param2],0 |
1784 | mov [func_70.param2],0 |
1792 | push [file_size] |
1785 | push [file_size] |
1793 | pop [func_70.param3] |
1786 | pop [func_70.param3] |
Line 2757... | Line 2750... | ||
2757 | jmp red |
2750 | jmp red |
Line 2758... | Line 2751... | ||
2758 | 2751 | ||
2759 | ;--------------------------------------------------------------------- |
2752 | ;--------------------------------------------------------------------- |
2760 | open_dialog: |
2753 | open_dialog: |
- | 2754 | mov [OpenDialog_data.type],0 ; Open |
|
2761 | mov [OpenDialog_data.type],0 ; Open |
2755 | |
- | 2756 | push dword OpenDialog_data |
|
- | 2757 | call [OpenDialog_Start] |
|
2762 | start_OpenDialog OpenDialog_data |
2758 | |
2763 | cmp [OpenDialog_data.status],2 ; OpenDialog does not start |
2759 | ; cmp [OpenDialog_data.status],2 ; OpenDialog does not start |
2764 | je .sysxtree ; some kind of alternative, instead OpenDialog |
2760 | ; je .sysxtree ; some kind of alternative, instead OpenDialog |
2765 | cmp [OpenDialog_data.status],1 |
2761 | cmp [OpenDialog_data.status],1 |
2766 | jne still |
2762 | jne still |
2767 | mov esi,fname_buf |
- | |
2768 | jmp .load |
- | |
2769 | .sysxtree: |
- | |
2770 | call opendialog |
- | |
2771 | jc still |
- | |
2772 | mov esi,path |
2763 | mov esi,fname_buf |
2773 | .load: |
2764 | .load: |
2774 | mov edi,file_name |
2765 | mov edi,file_name |
2775 | cld |
2766 | cld |
2776 | @@: |
2767 | @@: |
Line 2781... | Line 2772... | ||
2781 | @@: |
2772 | @@: |
2782 | mov byte [edi],0 |
2773 | mov byte [edi],0 |
2783 | sub esi,path |
2774 | sub esi,path |
2784 | mov [edit1.size],esi |
2775 | mov [edit1.size],esi |
2785 | mov [edit1.pos],esi |
2776 | mov [edit1.pos],esi |
2786 | jmp open_file.0 |
- | |
2787 | ;--------------------------------------------------------------------- |
- | |
2788 | ;################################## |
- | |
2789 | opendialog: |
- | |
2790 | ; |
- | |
2791 | ; STEP 1 Run SYSXTREE with parametrs MYPID 4 bytes in dec, |
- | |
2792 | ; 1 byte space, 1 byte type of dialog (O - Open ,S - Save) |
- | |
2793 | ; |
- | |
2794 | mov edi,path |
- | |
2795 | xor eax,eax |
- | |
2796 | mov ecx,(1024+16)/4 |
- | |
2797 | rep stosd |
- | |
2798 | - | ||
2799 | mov [dlg_pid_get],0 |
- | |
2800 | - | ||
2801 | ; Get my PID in dec format 4 bytes |
- | |
2802 | mov eax,9 |
- | |
2803 | mov ebx,procinfo |
- | |
2804 | or ecx,-1 |
- | |
2805 | mcall |
- | |
2806 | - | ||
2807 | ; convert eax bin to param dec |
- | |
2808 | mov eax,dword [procinfo+30] ;offset of myPID |
- | |
2809 | mov edi,param+4-1 ;offset to 4 bytes |
- | |
2810 | mov ecx,4 |
- | |
2811 | mov ebx,10 |
- | |
2812 | .new_d: |
- | |
2813 | xor edx,edx |
- | |
2814 | div ebx |
- | |
2815 | add dl,'0' |
- | |
2816 | mov [edi],dl |
- | |
2817 | dec edi |
- | |
2818 | loop .new_d |
- | |
2819 | - | ||
2820 | ; wirite 1 byte space to param |
- | |
2821 | mov [param+4],byte 32 ;Space for next parametr |
- | |
2822 | ; and 1 byte type of dialog to param |
- | |
2823 | mov [param+5],byte 'O' ;Get Open dialog (Use 'S' for Save dialog) |
- | |
2824 | - | ||
2825 | ; |
- | |
2826 | ; STEP2 prepare IPC area for get messages |
- | |
2827 | ; |
- | |
2828 | - | ||
2829 | ; prepare IPC area |
- | |
2830 | mov [path],dword 0 |
- | |
2831 | mov [path+4],dword 8 |
- | |
2832 | - | ||
2833 | ; define IPC memory |
- | |
2834 | mov eax,60 |
- | |
2835 | mov ebx,1 ; define IPC |
- | |
2836 | mov ecx,path ; offset of area |
- | |
2837 | mov edx,1024+16 ; size |
- | |
2838 | mcall |
- | |
2839 | - | ||
2840 | ; change wanted events list 7-bit IPC event |
- | |
2841 | mov eax,40 |
- | |
2842 | mov ebx,01000111b |
- | |
2843 | ; cmp [image],0 |
- | |
2844 | ; jnz @f |
- | |
2845 | ; mov bl,01000110b |
- | |
2846 | ;@@: |
- | |
2847 | mcall |
- | |
2848 | - | ||
2849 | ; |
- | |
2850 | ; STEP 3 run SYSTEM XTREE with parameters |
- | |
2851 | ; |
- | |
2852 | mov eax,70 |
- | |
2853 | mov ebx,run_fileinfo |
- | |
2854 | mcall |
- | |
2855 | bt eax,31 |
- | |
2856 | jnc @f |
- | |
2857 | mcall 40,0x27 |
- | |
2858 | add esp,4 |
- | |
2859 | jmp open_file |
2777 | jmp open_file |
2860 | @@: |
- | |
2861 | mov [get_loops],0 |
- | |
2862 | .getmesloop: |
- | |
2863 | mov eax,23 |
- | |
2864 | mov ebx,50 ;0.5 sec |
- | |
2865 | mcall |
- | |
2866 | dec eax |
- | |
2867 | jz .mred |
- | |
2868 | dec eax |
- | |
2869 | jz .mkey |
- | |
2870 | dec eax |
- | |
2871 | jz .mbutton |
- | |
2872 | cmp al, 7-3 |
- | |
2873 | jz .mgetmes |
- | |
2874 | ; Get number of procces |
- | |
2875 | mov ebx,procinfo |
- | |
2876 | mov ecx,-1 |
- | |
2877 | mov eax,9 |
- | |
2878 | mcall |
- | |
2879 | mov ebp,eax |
- | |
2880 | - | ||
2881 | .loox: |
- | |
2882 | mov eax,9 |
- | |
2883 | mov ebx,procinfo |
- | |
2884 | mov ecx,ebp |
- | |
2885 | mcall |
- | |
2886 | mov eax,[DLGPID] |
- | |
2887 | cmp [procinfo+30],eax ;IF Dialog find |
- | |
2888 | je .dlg_is_work ;jmp to dlg_is_work |
- | |
2889 | dec ebp |
- | |
2890 | jnz .loox |
- | |
2891 | - | ||
2892 | jmp .erroff |
- | |
2893 | - | ||
2894 | .dlg_is_work: |
- | |
2895 | cmp [procinfo+50],word 9 ;If slot state 9 - dialog is terminated |
2778 | ;--------------------------------------------------------------------- |
2896 | je .erroff ;TESTODP2 terminated too |
- | |
2897 | - | ||
2898 | cmp [dlg_pid_get],dword 1 |
- | |
2899 | je .getmesloop |
- | |
2900 | inc [get_loops] |
- | |
2901 | cmp [get_loops],4 ;2 sec if DLG_PID not get TESTOP2 terminated |
- | |
2902 | jae .erroff |
- | |
2903 | jmp .getmesloop |
- | |
2904 | - | ||
2905 | .mred: |
- | |
2906 | ; cmp [image], 0 |
- | |
2907 | ; jz .getmesloop |
- | |
2908 | ; call redraw_all |
- | |
2909 | call draw_window_1 |
- | |
2910 | jmp .getmesloop |
- | |
2911 | .mkey: |
- | |
2912 | mov eax,2 |
- | |
2913 | mcall ; read (eax=2) |
- | |
2914 | jmp .getmesloop |
- | |
2915 | .mbutton: |
- | |
2916 | mov eax,17 ; get id |
- | |
2917 | mcall |
- | |
2918 | cmp ah,1 ; button id=1 ? |
- | |
2919 | jne .getmesloop |
- | |
2920 | mov eax,-1 ; close this program |
- | |
2921 | mcall |
- | |
2922 | .mgetmes: |
- | |
2923 | - | ||
2924 | ; If dlg_pid_get then second message get jmp to still |
- | |
2925 | cmp [dlg_pid_get],dword 1 |
- | |
2926 | je .ready |
- | |
2927 | - | ||
2928 | ; First message is number of PID SYSXTREE dialog |
- | |
2929 | - | ||
2930 | ; convert PID dec to PID bin |
- | |
2931 | movzx eax,byte [path+16] |
- | |
2932 | sub eax,48 |
- | |
2933 | imul eax,10 |
- | |
2934 | movzx ebx,byte [path+16+1] |
- | |
2935 | add eax,ebx |
- | |
2936 | sub eax,48 |
- | |
2937 | imul eax,10 |
- | |
2938 | movzx ebx,byte [path+16+2] |
- | |
2939 | add eax,ebx |
- | |
2940 | sub eax,48 |
- | |
2941 | imul eax,10 |
- | |
2942 | movzx ebx,byte [path+16+3] |
- | |
2943 | add eax,ebx |
- | |
2944 | sub eax,48 |
- | |
2945 | mov [DLGPID],eax |
- | |
2946 | - | ||
2947 | ; Claear and prepare IPC area for next message |
- | |
2948 | mov [path],dword 0 |
- | |
2949 | mov [path+4],dword 8 |
- | |
2950 | mov [path+8],dword 0 |
- | |
2951 | mov [path+12],dword 0 |
- | |
2952 | mov [path+16],dword 0 |
- | |
2953 | - | ||
2954 | ; Set dlg_pid_get for get next message |
- | |
2955 | mov [dlg_pid_get],dword 1 |
- | |
2956 | ; cmp [image],0 |
- | |
2957 | ; jz .getmesloop |
- | |
2958 | ; call redraw_all |
- | |
2959 | call draw_window_1 |
- | |
2960 | jmp .getmesloop |
- | |
2961 | - | ||
2962 | .ready: |
- | |
2963 | ; |
- | |
2964 | ; The second message get |
- | |
2965 | ; Second message is 100 bytes path to SAVE/OPEN file |
- | |
2966 | ; shl path string on 16 bytes |
- | |
2967 | ; |
- | |
2968 | mov esi,path+16 |
- | |
2969 | mov edi,path |
- | |
2970 | mov ecx,1024/4 |
- | |
2971 | rep movsd |
- | |
2972 | mov [edi],byte 0 |
- | |
2973 | - | ||
2974 | .openoff: |
- | |
2975 | mcall 40,0x27 |
- | |
2976 | clc |
- | |
2977 | ret |
- | |
2978 | - | ||
2979 | .erroff: |
- | |
2980 | mcall 40,0x27 |
- | |
2981 | stc |
- | |
2982 | ret |
- | |
2983 | ;################################## |
- | |
Line 2984... | Line 2779... | ||
2984 | 2779 | ||
Line 2985... | Line 2780... | ||
2985 | ; DATA AREA |
2780 | ; DATA AREA |
2986 | 2781 | ||
2987 | 2782 | ||
2988 | ;--------------------------------------------------------- |
2783 | ;--------------------------------------------------------- |
2989 | ;----------------------- DATA AREA------------------------ |
2784 | ;----------------------- DATA AREA------------------------ |
- | 2785 | ;--------------------------------------------------------- |
|
- | 2786 | align 4 |
|
- | 2787 | ProcLib_import: |
|
- | 2788 | OpenDialog_Init dd aOpenDialog_Init |
|
- | 2789 | OpenDialog_Start dd aOpenDialog_Start |
|
- | 2790 | ;OpenDialog__Version dd aOpenDialog_Version |
|
- | 2791 | dd 0 |
|
- | 2792 | dd 0 |
|
- | 2793 | aOpenDialog_Init db 'OpenDialog_init',0 |
|
- | 2794 | aOpenDialog_Start db 'OpenDialog_start',0 |
|
- | 2795 | ;aOpenDialog_Version db 'Version_OpenDialog',0 |
|
2990 | ;--------------------------------------------------------- |
2796 | ;--------------------------------------------------------------------- |
2991 | align 4 |
2797 | align 4 |
2992 | myimport: |
2798 | Box_lib_import: |
2993 | edit_box_draw dd aEdit_box_draw |
2799 | edit_box_draw dd aEdit_box_draw |
Line 3278... | Line 3084... | ||
3278 | .e11: |
3084 | .e11: |
3279 | .21 db 'ASCII' |
3085 | .21 db 'ASCII' |
3280 | .e21: |
3086 | .e21: |
Line 3281... | Line 3087... | ||
3281 | 3087 | ||
3282 | 3088 | ||
Line 3283... | Line 3089... | ||
3283 | system_path db '/sys/lib/' |
3089 | system_dir_Boxlib db '/sys/lib/box_lib.obj',0 |
3284 | boxlib_name db 'box_lib.obj',0 |
3090 | system_dir_ProcLib db '/sys/lib/proc_lib.obj',0 |
3285 | 3091 | ||
- | 3092 | head_f_i: |
|
- | 3093 | head_f_l db 'error',0 |
|
3286 | head_f_i: |
3094 | err_message_found_lib1 db 'box_lib.obj - Not found!',0 |
- | 3095 | err_message_found_lib2 db 'proc_lib.obj - Not found!',0 |
|
Line 3287... | Line 3096... | ||
3287 | head_f_l db 'error',0 |
3096 | |
Line 3288... | Line 3097... | ||
3288 | err_message_found_lib db 'box_lib.obj was not found',0 |
3097 | err_message_import1 db 'box_lib.obj - Wrong import!',0 |
3289 | err_message_import db 'box_lib.obj was not imported',0 |
3098 | err_message_import2 db 'proc_lib.obj - Wrong import!',0 |
Line 3407... | Line 3216... | ||
3407 | ;########################## |
3216 | ;########################## |
Line 3408... | Line 3217... | ||
3408 | 3217 | ||
3409 | 3218 | ||
- | 3219 | title db _title |
|
- | 3220 | ;--------------------------------------------------------------------- |
|
- | 3221 | l_libs_start: |
|
- | 3222 | ; load_library boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\ |
|
- | 3223 | ; err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i |
|
- | 3224 | ||
- | 3225 | library01 l_libs system_dir_Boxlib+9, cur_dir_path, buf_cmd_lin, system_dir_Boxlib, \ |
|
- | 3226 | err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i |
|
- | 3227 | ||
- | 3228 | library02 l_libs system_dir_ProcLib+9, cur_dir_path, buf_cmd_lin, system_dir_ProcLib, \ |
|
- | 3229 | err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i |
|
- | 3230 | ||
3410 | title db _title |
3231 | end_l_libs: |
3411 | ;--------------------------------------------------------------------- |
3232 | ;--------------------------------------------------------------------- |
3412 | OpenDialog_data: |
3233 | OpenDialog_data: |
3413 | .type dd 0 |
3234 | .type dd 0 |
3414 | .procinfo dd procinfo ;+4 |
3235 | .procinfo dd procinfo ;+4 |