forked from KolibriOS/kolibrios
Proc_Lib.obj - library for common procedures
While only OpenDialog calls git-svn-id: svn://kolibrios.org@1509 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
090643ac3f
commit
1deef2d452
10
programs/develop/libraries/proc_lib/trunk/build.sh
Normal file
10
programs/develop/libraries/proc_lib/trunk/build.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# This script does for Linux the same as build.bat for DOS,
|
||||||
|
# it compiles the current KolibriOS applications
|
||||||
|
|
||||||
|
mkdir bin
|
||||||
|
fasm -m 16384 proc_lib.asm ./bin/proc_lib.obj
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
|
259
programs/develop/libraries/proc_lib/trunk/opendial.mac
Normal file
259
programs/develop/libraries/proc_lib/trunk/opendial.mac
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
;*****************************************************************************
|
||||||
|
; Macro for use Open Dialog - for Kolibri OS
|
||||||
|
; Copyright (c) 2009 2010, Marat Zakiyanov aka Mario79, aka Mario
|
||||||
|
; All rights reserved.
|
||||||
|
;
|
||||||
|
; Redistribution and use in source and binary forms, with or without
|
||||||
|
; modification, are permitted provided that the following conditions are met:
|
||||||
|
; * Redistributions of source code must retain the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer.
|
||||||
|
; * Redistributions in binary form must reproduce the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer in the
|
||||||
|
; documentation and/or other materials provided with the distribution.
|
||||||
|
; * Neither the name of the <organization> nor the
|
||||||
|
; names of its contributors may be used to endorse or promote products
|
||||||
|
; derived from this software without specific prior written permission.
|
||||||
|
;
|
||||||
|
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
|
||||||
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||||
|
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
;*****************************************************************************
|
||||||
|
;*****************************************************************************
|
||||||
|
macro OpenDialog_exit
|
||||||
|
{
|
||||||
|
popa
|
||||||
|
ret 4
|
||||||
|
}
|
||||||
|
;*****************************************************************************
|
||||||
|
macro use_OpenDialog
|
||||||
|
{
|
||||||
|
OpenDialog:
|
||||||
|
od_type equ dword [ebp] ; 0-Open, 1-Save, 2-Dir
|
||||||
|
od_procinfo equ dword [ebp+4] ; Process info area for function 9
|
||||||
|
od_com_area_name equ dword [ebp+8] ; Name for shared area
|
||||||
|
od_com_area equ dword [ebp+12] ; Adress of shared area
|
||||||
|
od_opendir_pach equ dword [ebp+16] ; Temp area the directory for show
|
||||||
|
od_dir_default_pach equ dword [ebp+20] ; Default path of directory,
|
||||||
|
od_start_path equ dword [ebp+24] ; Location path to OpenDialog
|
||||||
|
od_draw_window equ dword [ebp+28] ; Adress of procedure - draw_window
|
||||||
|
od_status equ dword [ebp+32] ; 0-Cancel, 1-Get path OK, 2-Use alternatives
|
||||||
|
od_openfile_pach equ dword [ebp+36] ; Getting path to file
|
||||||
|
od_filename_area equ dword [ebp+40] ; Adress of file name area
|
||||||
|
od_filter_area equ dword [ebp+44] ; Adress of filter area
|
||||||
|
;*****************************************************************************
|
||||||
|
.init:
|
||||||
|
pusha
|
||||||
|
mov ebp,dword [esp+36]
|
||||||
|
mcall 9,od_procinfo,-1
|
||||||
|
mov ebx,[ebx+30]
|
||||||
|
mov edi,od_com_area_name
|
||||||
|
add edi,7
|
||||||
|
std
|
||||||
|
mov ecx,4
|
||||||
|
@@:
|
||||||
|
mov al,bl
|
||||||
|
and al,1111b
|
||||||
|
add al,0x30
|
||||||
|
stosb
|
||||||
|
mov al,bl
|
||||||
|
shr al,4
|
||||||
|
and al,1111b
|
||||||
|
add al,0x30
|
||||||
|
stosb
|
||||||
|
shr ebx,8
|
||||||
|
dec ecx
|
||||||
|
jnz @r
|
||||||
|
cld
|
||||||
|
|
||||||
|
mcall 68,22,od_com_area_name,8192,0x09
|
||||||
|
mov od_com_area,eax
|
||||||
|
|
||||||
|
mov esi,od_openfile_pach
|
||||||
|
mov edi,od_opendir_pach
|
||||||
|
call .copy_dir_path
|
||||||
|
|
||||||
|
OpenDialog_exit
|
||||||
|
;*****************************************************************************
|
||||||
|
;*****************************************************************************
|
||||||
|
.start:
|
||||||
|
pusha
|
||||||
|
mov ebp,dword [esp+36]
|
||||||
|
mov eax,od_com_area
|
||||||
|
test eax,eax
|
||||||
|
jz .1
|
||||||
|
mov ebx,od_type
|
||||||
|
mov [eax+2],bx
|
||||||
|
|
||||||
|
mov [eax],word 2 ; folder for open
|
||||||
|
mov edi,eax
|
||||||
|
add edi,4
|
||||||
|
|
||||||
|
mov esi,od_opendir_pach
|
||||||
|
xor eax,eax
|
||||||
|
mov al,[esi]
|
||||||
|
test eax,eax
|
||||||
|
jnz @f
|
||||||
|
mov esi,od_dir_default_pach ;communication_area_default_pach
|
||||||
|
@@:
|
||||||
|
call .copy
|
||||||
|
;----------------------------------------------
|
||||||
|
; copy file name to shared area
|
||||||
|
cmp od_type,dword 2
|
||||||
|
je .4
|
||||||
|
mov edi,od_com_area
|
||||||
|
add edi,4096-256
|
||||||
|
|
||||||
|
mov esi,od_filename_area
|
||||||
|
test esi,esi
|
||||||
|
jnz @f
|
||||||
|
xor eax,eax
|
||||||
|
mov [edi],eax
|
||||||
|
jmp .4
|
||||||
|
@@:
|
||||||
|
call .copy
|
||||||
|
.4:
|
||||||
|
;----------------------------------------------
|
||||||
|
cmp od_type,dword 2
|
||||||
|
je @f
|
||||||
|
call .get_filter_data
|
||||||
|
@@:
|
||||||
|
;----------------------------------------------
|
||||||
|
mov eax,od_com_area_name
|
||||||
|
mov [start_open_dialog.parameter],eax
|
||||||
|
|
||||||
|
mov eax,od_start_path
|
||||||
|
mov [start_open_dialog.name],eax
|
||||||
|
|
||||||
|
mcall 70,dword start_open_dialog
|
||||||
|
shr eax,31
|
||||||
|
test eax,eax
|
||||||
|
jnz .1
|
||||||
|
.still:
|
||||||
|
mcall 23,50
|
||||||
|
cmp eax,1
|
||||||
|
jne @f
|
||||||
|
pusha
|
||||||
|
call od_draw_window
|
||||||
|
popa
|
||||||
|
@@:
|
||||||
|
mov eax,od_com_area
|
||||||
|
movzx ebx,word [eax]
|
||||||
|
test ebx,ebx
|
||||||
|
jz .still
|
||||||
|
cmp ebx,3
|
||||||
|
je .2
|
||||||
|
cmp ebx,1
|
||||||
|
jne .still
|
||||||
|
|
||||||
|
mov esi,od_com_area
|
||||||
|
add esi,4
|
||||||
|
mov edi,od_openfile_pach
|
||||||
|
call .copy
|
||||||
|
mov od_status,1
|
||||||
|
mov esi,od_openfile_pach
|
||||||
|
mov edi,od_opendir_pach
|
||||||
|
call .copy_dir_path
|
||||||
|
;----------------------------------------------
|
||||||
|
; copy file name from shared area
|
||||||
|
cmp od_type,dword 2
|
||||||
|
je @f
|
||||||
|
mov esi,od_com_area
|
||||||
|
add esi,4096-256
|
||||||
|
mov edi,od_filename_area
|
||||||
|
test edi,edi
|
||||||
|
jz @f
|
||||||
|
call .copy
|
||||||
|
@@:
|
||||||
|
;----------------------------------------------
|
||||||
|
jmp .3
|
||||||
|
.2:
|
||||||
|
mov od_status,0
|
||||||
|
jmp .3
|
||||||
|
.1:
|
||||||
|
mov od_status,2
|
||||||
|
.3:
|
||||||
|
OpenDialog_exit
|
||||||
|
;----------------------------------------------
|
||||||
|
.get_filter_data:
|
||||||
|
mov edi,od_com_area
|
||||||
|
test edi,edi
|
||||||
|
jnz @f
|
||||||
|
; add esp,4
|
||||||
|
; jmp still
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
add edi,4096+4
|
||||||
|
mov esi,od_filter_area
|
||||||
|
mov ecx,[esi]
|
||||||
|
test ecx,ecx
|
||||||
|
jnz @f
|
||||||
|
mov edi,od_com_area
|
||||||
|
mov [edi+4096],dword 0
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
inc ecx
|
||||||
|
cld
|
||||||
|
rep movsb
|
||||||
|
mov edi,od_com_area
|
||||||
|
mov [edi+4096],dword 1
|
||||||
|
ret
|
||||||
|
;----------------------------------------------
|
||||||
|
.copy:
|
||||||
|
xor eax,eax
|
||||||
|
cld
|
||||||
|
@@:
|
||||||
|
lodsb
|
||||||
|
stosb
|
||||||
|
test eax,eax
|
||||||
|
jnz @b
|
||||||
|
ret
|
||||||
|
;----------------------------------------------
|
||||||
|
.copy_dir_path:
|
||||||
|
xor eax,eax
|
||||||
|
cmp [esi],al
|
||||||
|
jne @f
|
||||||
|
mov [edi],al
|
||||||
|
mov [ebx],al
|
||||||
|
xor ebx,ebx
|
||||||
|
inc ebx
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cld
|
||||||
|
lodsb
|
||||||
|
stosb
|
||||||
|
test eax,eax
|
||||||
|
jnz @b
|
||||||
|
cmp od_type,dword 2
|
||||||
|
jne @f
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
mov esi,edi
|
||||||
|
dec esi
|
||||||
|
@@:
|
||||||
|
std
|
||||||
|
lodsb
|
||||||
|
cmp al,'/'
|
||||||
|
jnz @b
|
||||||
|
|
||||||
|
mov [esi+1],byte 0
|
||||||
|
cld
|
||||||
|
ret
|
||||||
|
;----------------------------------------------
|
||||||
|
align 4
|
||||||
|
start_open_dialog:
|
||||||
|
.subfunction dd 7
|
||||||
|
.flags dd 0
|
||||||
|
.parameter dd 0 ;od_com_area_name
|
||||||
|
.reserved1 dd 0
|
||||||
|
.reserved2 dd 0
|
||||||
|
db 0
|
||||||
|
.name: dd 0 ;od_start_path
|
||||||
|
}
|
||||||
|
;*****************************************************************************
|
50
programs/develop/libraries/proc_lib/trunk/proc_lib.asm
Normal file
50
programs/develop/libraries/proc_lib/trunk/proc_lib.asm
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
;*****************************************************************************
|
||||||
|
; Proc_Lib - library for common procedures
|
||||||
|
;
|
||||||
|
; Authors:
|
||||||
|
; Marat Zakiyanov aka Mario79, aka Mario
|
||||||
|
;*****************************************************************************
|
||||||
|
|
||||||
|
format MS COFF
|
||||||
|
|
||||||
|
public EXPORTS
|
||||||
|
|
||||||
|
section '.flat' code readable align 16
|
||||||
|
include '../../../../macros.inc'
|
||||||
|
;include '../../../../proc32.inc'
|
||||||
|
include 'opendial.mac'
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
; Open Dialog
|
||||||
|
;--------------------------------------------------
|
||||||
|
align 16
|
||||||
|
use_OpenDialog
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
align 16
|
||||||
|
lib_init:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
align 16
|
||||||
|
EXPORTS:
|
||||||
|
|
||||||
|
|
||||||
|
dd sz_init, lib_init
|
||||||
|
dd sz_version, 0x00000001
|
||||||
|
|
||||||
|
dd sz_OpenDialog_init, OpenDialog.init
|
||||||
|
dd sz_OpenDialog_start, OpenDialog.start
|
||||||
|
dd szVersion_OpenDialog, 0x00010001
|
||||||
|
|
||||||
|
dd 0,0
|
||||||
|
|
||||||
|
|
||||||
|
sz_init db 'lib_init',0
|
||||||
|
sz_version db 'version',0
|
||||||
|
|
||||||
|
sz_OpenDialog_init db 'OpenDialog_init',0
|
||||||
|
sz_OpenDialog_start db 'OpenDialog_start',0
|
||||||
|
szVersion_OpenDialog db 'Version_OpenDialog',0
|
4
programs/develop/libraries/proc_lib/trunk/run.bat
Normal file
4
programs/develop/libraries/proc_lib/trunk/run.bat
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
if not exist bin mkdir bin
|
||||||
|
@fasm.exe -m 16384 proc_lib.asm bin\proc_lib.obj
|
||||||
|
@kpack bin\proc_lib.obj
|
||||||
|
pause
|
Loading…
Reference in New Issue
Block a user