develop/libraries: Post-SVN tidy (#436)
- Move source code from `trunk` into root directory for each library. - Update build files and ASM include paths. Add SPDX license header where appropriate. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards #75, point 3) Reviewed-on: KolibriOS/kolibrios#436 Reviewed-by: Burer <burer@kolibrios.org> Reviewed-by: Ivan B <1+dunkaist@noreply.localhost> Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com> Co-authored-by: Andrew <dent.ace@gmail.com> Co-committed-by: Andrew <dent.ace@gmail.com>
This commit is contained in:
1 parent
a0e4bce98a
commit
e05b57a95e
82 files changed
+8137
-8062
No files matched your search
+2
-2
@@ -509,7 +509,7 @@ tup.append_table(img_files, {
|
||||
{"GAMES/C4", VAR_PROGS .. "/games/c4/c4"},
|
||||
{"LIB/ARCHIVER.OBJ", VAR_PROGS .. "/fs/kfar/kfar_arc/kfar_arc.obj"},
|
||||
{"LIB/BOX_LIB.OBJ", VAR_PROGS .. "/develop/libraries/box_lib/box_lib.obj"},
|
||||
{"LIB/BUF2D.OBJ", VAR_PROGS .. "/develop/libraries/buf2d/trunk/buf2d.obj"},
|
||||
{"LIB/BUF2D.OBJ", VAR_PROGS .. "/develop/libraries/buf2d/buf2d.obj"},
|
||||
{"LIB/CONSOLE.OBJ", VAR_PROGS .. "/develop/libraries/console_coff/console.obj"},
|
||||
{"LIB/CNV_PNG.OBJ", VAR_PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
|
||||
{"LIB/DLL.OBJ", VAR_PROGS .. "/develop/libraries/dll/dll.obj"},
|
||||
@@ -521,7 +521,7 @@ tup.append_table(img_files, {
|
||||
{"LIB/LIBIO.OBJ", VAR_PROGS .. "/develop/libraries/libs-dev/libio/libio.obj"},
|
||||
{"LIB/MSGBOX.OBJ", VAR_PROGS .. "/develop/libraries/msgbox/msgbox.obj"},
|
||||
{"LIB/NETWORK.OBJ", VAR_PROGS .. "/develop/libraries/network/network.obj"},
|
||||
{"LIB/PROC_LIB.OBJ", VAR_PROGS .. "/develop/libraries/proc_lib/trunk/proc_lib.obj"},
|
||||
{"LIB/PROC_LIB.OBJ", VAR_PROGS .. "/develop/libraries/proc_lib/proc_lib.obj"},
|
||||
{"LIB/RASTERWORKS.OBJ", VAR_PROGS .. "/develop/libraries/fontRasterWorks_unicode/RasterWorks.obj"},
|
||||
{"LIB/SORT.OBJ", VAR_PROGS .. "/develop/libraries/sorter/sort.obj"},
|
||||
{"LIB/TINYGL.OBJ", VAR_PROGS .. "/develop/libraries/TinyGL/asm_fork/tinygl.obj"},
|
||||
|
||||
@@ -1,49 +1,47 @@
|
||||
Siemargl port comments
|
||||
|
||||
Used github branch https://github.com/TinyCC/tinycc
|
||||
It have a vesion 0.9.26 with heads up to 0.9.27 - see ChangeLog
|
||||
|
||||
Kolibri version specifics
|
||||
errata/changelog - moved to trunk/readme.txt
|
||||
|
||||
-added TCC_TARGET_MEOS as needed
|
||||
-leading_underscore by default is 0 (can use -f[no-]leading-underscore),
|
||||
otherwise (error) underscoring all symbols, not only cdecl
|
||||
-added message in tccmeos.c about missed symbols when linking KOS executable
|
||||
-start.o added automatically, when -nostdlib not used
|
||||
-to use standard ktcc lib must add -lck at commandline
|
||||
-default search paths are ./include ./lib from executable (under KOS need to
|
||||
use -Bpath_to_ktcc and put start.o in current dir)
|
||||
-when config.h is ready, compiler can be easy builded as [kos32-]gcc tcc.c libtcc.c
|
||||
see also makefile.kos32
|
||||
-impossible using with mingw-gcc compiled lib, incompatible library format:
|
||||
.o is PE-format from gcc but ELF from tcc, may be linux-gcc does it ok
|
||||
-__fastcall incompatible with other compilers. now stack freed by caller.
|
||||
must fix i386-gen.c@490,572 (fixed in other branch https://github.com/mirror/tinycc)
|
||||
|
||||
|
||||
-using __attribute__((packed)) see test82. need naming struct twice as in kos32sys1.h
|
||||
-using __attribute__ ((alias xxx)) restricted only for non "static inline" functions
|
||||
-erroneous or "non TCC" member using in nested structs or unions can lead to compiler internal error
|
||||
-bench timing coarse (0s or 1s), no usec in newlib gettimeofday. OK
|
||||
|
||||
Tests status:
|
||||
asmtest +
|
||||
abitest not tested (embedding compiler)
|
||||
libtcctest not tested (embedding compiler)
|
||||
boundtest ----- alloca removed from tcc libtcc.c:945 (really not worked)
|
||||
tcctest most test ok, some problems with long double
|
||||
vla_test.c +
|
||||
|
||||
pp/* + (minor comment error in 13.s)
|
||||
|
||||
tests2/* : see below
|
||||
|
||||
// errata
|
||||
skippin' tests
|
||||
test76 fail dollars in identifiers
|
||||
test34 fail (array assignment not supported)
|
||||
test73 fail compile (no stdint.h), printfloat, ARM specific
|
||||
test46 no stdin - removed funtionality read from console, but file ops works
|
||||
|
||||
|
||||
Siemargl port comments
|
||||
|
||||
Used github branch https://github.com/TinyCC/tinycc
|
||||
It have a vesion 0.9.26 with heads up to 0.9.27 - see ChangeLog
|
||||
|
||||
Kolibri version specifics
|
||||
errata/changelog - moved to readme
|
||||
|
||||
-added TCC_TARGET_MEOS as needed
|
||||
-leading_underscore by default is 0 (can use -f[no-]leading-underscore),
|
||||
otherwise (error) underscoring all symbols, not only cdecl
|
||||
-added message in tccmeos.c about missed symbols when linking KOS executable
|
||||
-start.o added automatically, when -nostdlib not used
|
||||
-to use standard ktcc lib must add -lck at commandline
|
||||
-default search paths are ./include ./lib from executable (under KOS need to
|
||||
use -Bpath_to_ktcc and put start.o in current dir)
|
||||
-when config.h is ready, compiler can be easy builded as [kos32-]gcc tcc.c libtcc.c
|
||||
see also makefile.kos32
|
||||
-impossible using with mingw-gcc compiled lib, incompatible library format:
|
||||
.o is PE-format from gcc but ELF from tcc, may be linux-gcc does it ok
|
||||
-__fastcall incompatible with other compilers. now stack freed by caller.
|
||||
must fix i386-gen.c@490,572 (fixed in other branch https://github.com/mirror/tinycc)
|
||||
|
||||
|
||||
-using __attribute__((packed)) see test82. need naming struct twice as in kos32sys1.h
|
||||
-using __attribute__ ((alias xxx)) restricted only for non "static inline" functions
|
||||
-erroneous or "non TCC" member using in nested structs or unions can lead to compiler internal error
|
||||
-bench timing coarse (0s or 1s), no usec in newlib gettimeofday. OK
|
||||
|
||||
Tests status:
|
||||
asmtest +
|
||||
abitest not tested (embedding compiler)
|
||||
libtcctest not tested (embedding compiler)
|
||||
boundtest ----- alloca removed from tcc libtcc.c:945 (really not worked)
|
||||
tcctest most test ok, some problems with long double
|
||||
vla_test.c +
|
||||
|
||||
pp/* + (minor comment error in 13.s)
|
||||
|
||||
tests2/* : see below
|
||||
|
||||
// errata
|
||||
skippin' tests
|
||||
test76 fail dollars in identifiers
|
||||
test34 fail (array assignment not supported)
|
||||
test73 fail compile (no stdint.h), printfloat, ARM specific
|
||||
test46 no stdin - removed funtionality read from console, but file ops works
|
||||
File renamed without changes.
File renamed without changes.
+3203
-3197
File diff suppressed because it is too large.
Load diff
File renamed without changes.
File renamed without changes.
+2
-2
@@ -1,10 +1,10 @@
|
||||
if not exist bin mkdir bin
|
||||
|
||||
if not exist bin\font8x9.bmp @copy ..\..\..\..\..\fs\kfar\font8x9.bmp bin\font8x9.bmp
|
||||
if not exist bin\font8x9.bmp @copy ..\..\..\..\fs\kfar\font8x9.bmp bin\font8x9.bmp
|
||||
@copy foto.jpg bin\foto.jpg
|
||||
@copy img0.png bin\img0.png
|
||||
@copy img1.png bin\img1.png
|
||||
if not exist bin\vaz2106.vox @copy ..\..\..\..\..\media\voxel_editor\trunk\vaz2106.vox bin\vaz2106.vox
|
||||
if not exist bin\vaz2106.vox @copy ..\..\..\..\media\voxel_editor\vaz2106.vox bin\vaz2106.vox
|
||||
|
||||
@fasm.exe -m 16384 e0_dr_lines.asm bin\e0_dr_lines.kex
|
||||
@fasm.exe -m 16384 e1_scaling.asm bin\e1_scaling.kex
|
||||
+145
-139
@@ -1,139 +1,145 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_line], buf_0, 110, 20, 125, 90, 0xffff00 ;рисуем линию
|
||||
stdcall [buf2d_line], buf_0, 60, 120, 110, 20, 0xd000 ;рисуем линию
|
||||
stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff
|
||||
stdcall [buf2d_circle], buf_0, 125, 90, 30, 0xffffff ;рисуем окружность
|
||||
stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000 ;рисуем окружность
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
;mov edx,0x32000000
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+330,(30 shl 16)+275,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
dd 160 ;+8 w
|
||||
dd 128 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
i_end: ;конец кода
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_line], buf_0, 110, 20, 125, 90, 0xffff00 ;рисуем линию
|
||||
stdcall [buf2d_line], buf_0, 60, 120, 110, 20, 0xd000 ;рисуем линию
|
||||
stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff
|
||||
stdcall [buf2d_circle], buf_0, 125, 90, 30, 0xffffff ;рисуем окружность
|
||||
stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000 ;рисуем окружность
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
;mov edx,0x32000000
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+330,(30 shl 16)+275,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
dd 160 ;+8 w
|
||||
dd 128 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
i_end: ;конец кода
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
mem:
|
||||
+175
-169
@@ -1,169 +1,175 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../dll.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_line], buf_0, 110, 20, 125, 90, 0xffff00 ;рисуем линию
|
||||
stdcall [buf2d_line], buf_0, 60, 120, 110, 20, 0xd000 ;рисуем линию
|
||||
stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff
|
||||
stdcall [buf2d_circle], buf_0, 125, 90, 30, 0xffffff ;рисуем окружность
|
||||
stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000 ;рисуем окружность
|
||||
|
||||
stdcall [buf2d_img_hdiv2], buf_0 ;сжимаем изображение в буфере по высоте в 2 раза
|
||||
stdcall [buf2d_img_wdiv2], buf_0 ;сжимаем изображение в буфере по ширине в 2 раза
|
||||
stdcall [buf2d_create_f_img], buf_1,[buf_0] ;создаем маленький буфер buf_1, на основе сжатого изображения из buf_0
|
||||
|
||||
;если бы использовалась функция buf2d_create, тогда биты изображения
|
||||
;пришлось бы копировать следущими строками:
|
||||
;movzx ecx,word[buf_1.size_x]
|
||||
;movzx eax,word[buf_1.size_y]
|
||||
;imul ecx,eax
|
||||
;imul ecx,3 ;ecx - колличество байт в маленьком буфере
|
||||
;stdcall mem_copy, dword[buf_0],dword[buf_1],ecx
|
||||
|
||||
stdcall [buf2d_clear], buf_0,0xffffff
|
||||
stdcall [buf2d_bit_blt], buf_0, 15,10, buf_1
|
||||
stdcall [buf2d_bit_blt], buf_0, 110,65, buf_1
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_1
|
||||
;stdcall [buf2d_bit_blt_alpha], buf_0, 1,1, buf_1,0xff8080 ;рисуем контуры изображения на фотографии
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изм. положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
;mov edx,0x32000000
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+330,(30 shl 16)+275,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
dd 160 ;+8 w
|
||||
dd 128 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 10 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
.size_x: dd 80 ;+8 w
|
||||
.size_y: dd 64 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
i_end: ;конец кода
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../dll.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_line], buf_0, 110, 20, 125, 90, 0xffff00 ;рисуем линию
|
||||
stdcall [buf2d_line], buf_0, 60, 120, 110, 20, 0xd000 ;рисуем линию
|
||||
stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff
|
||||
stdcall [buf2d_circle], buf_0, 125, 90, 30, 0xffffff ;рисуем окружность
|
||||
stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000 ;рисуем окружность
|
||||
|
||||
stdcall [buf2d_img_hdiv2], buf_0 ;сжимаем изображение в буфере по высоте в 2 раза
|
||||
stdcall [buf2d_img_wdiv2], buf_0 ;сжимаем изображение в буфере по ширине в 2 раза
|
||||
stdcall [buf2d_create_f_img], buf_1,[buf_0] ;создаем маленький буфер buf_1, на основе сжатого изображения из buf_0
|
||||
|
||||
;если бы использовалась функция buf2d_create, тогда биты изображения
|
||||
;пришлось бы копировать следущими строками:
|
||||
;movzx ecx,word[buf_1.size_x]
|
||||
;movzx eax,word[buf_1.size_y]
|
||||
;imul ecx,eax
|
||||
;imul ecx,3 ;ecx - колличество байт в маленьком буфере
|
||||
;stdcall mem_copy, dword[buf_0],dword[buf_1],ecx
|
||||
|
||||
stdcall [buf2d_clear], buf_0,0xffffff
|
||||
stdcall [buf2d_bit_blt], buf_0, 15,10, buf_1
|
||||
stdcall [buf2d_bit_blt], buf_0, 110,65, buf_1
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_1
|
||||
;stdcall [buf2d_bit_blt_alpha], buf_0, 1,1, buf_1,0xff8080 ;рисуем контуры изображения на фотографии
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изм. положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
;mov edx,0x32000000
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+330,(30 shl 16)+275,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
dd 160 ;+8 w
|
||||
dd 128 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 10 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
.size_x: dd 80 ;+8 w
|
||||
.size_y: dd 64 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
i_end: ;конец кода
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
mem:
|
||||
+314
-308
@@ -1,308 +1,314 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
IMAGE_FILE0_SIZE equ 640*480*3 ;размер файла с изображением 640 x 480
|
||||
IMAGE_FILE1_SIZE equ 200*186*3 ;размер файла с изображением 200 x 100
|
||||
fn_foto db 'foto.jpg',0
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
;проверка на сколько удачно загузилась наша либа
|
||||
mov ebp,lib0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
mov ebp,lib1
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
|
||||
mcall 40,0x27
|
||||
mcall 48,3,sc,sizeof.system_colors ;получаем системные цвета
|
||||
|
||||
load_image_file fn_foto, image_data_foto,IMAGE_FILE0_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_0,[image_data_foto] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_foto] ;освобождаем память
|
||||
|
||||
load_image_file 'img0.png',image_data_gray,IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_gray] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_gray] ;освобождаем память
|
||||
|
||||
load_image_file 'img1.png',image_data_rgb, IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_2,[image_data_rgb] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_rgb] ;освобождаем память
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8бит
|
||||
stdcall [buf2d_conv_24_to_32],buf_2,buf_1 ;делаем буфер rgba 32бит
|
||||
|
||||
stdcall [buf2d_bit_blt], buf_0, 10,170, buf_2 ;рисуем изображение на фотографии
|
||||
stdcall [buf2d_bit_blt_transp], buf_0, 210,270, buf_2 ;рисуем прозрачное изображение на фотографии
|
||||
stdcall [buf2d_bit_blt_alpha], buf_0, 410,170, buf_1,0xff8080 ;рисуем контуры изображения на фотографии
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still: ;главный цикл
|
||||
mcall 10
|
||||
|
||||
cmp al,0x1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x2
|
||||
jz key
|
||||
cmp al,0x3
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall 2
|
||||
;...
|
||||
pop ebx eax
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall 0,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall 12,2
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
system_dir0 db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
name_libimg db 'libimg.obj',0
|
||||
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib
|
||||
lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
|
||||
load_lib_end:
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall 17 ;получить код нажатой кнопки
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_2 ;удаляем буфер
|
||||
mcall -1 ;выход из программы
|
||||
|
||||
image_data dd 0 ;память для преобразования картинки функциями libimg
|
||||
image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit
|
||||
image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb
|
||||
image_data_foto dd 0
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
caption db 'Draw images 13.09.11',0 ;подпись окна
|
||||
sc system_colors ;системные цвета
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 640 ;+8 w
|
||||
dd 480 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 25 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_2:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 235 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
import_libimg:
|
||||
dd alib_init1
|
||||
img_is_img dd aimg_is_img
|
||||
img_info dd aimg_info
|
||||
img_from_file dd aimg_from_file
|
||||
img_to_file dd aimg_to_file
|
||||
img_from_rgb dd aimg_from_rgb
|
||||
img_to_rgb dd aimg_to_rgb
|
||||
img_to_rgb2 dd aimg_to_rgb2
|
||||
img_decode dd aimg_decode
|
||||
img_encode dd aimg_encode
|
||||
img_create dd aimg_create
|
||||
img_destroy dd aimg_destroy
|
||||
img_destroy_layer dd aimg_destroy_layer
|
||||
img_count dd aimg_count
|
||||
img_lock_bits dd aimg_lock_bits
|
||||
img_unlock_bits dd aimg_unlock_bits
|
||||
img_flip dd aimg_flip
|
||||
img_flip_layer dd aimg_flip_layer
|
||||
img_rotate dd aimg_rotate
|
||||
img_rotate_layer dd aimg_rotate_layer
|
||||
img_draw dd aimg_draw
|
||||
|
||||
dd 0,0
|
||||
alib_init1 db 'lib_init',0
|
||||
aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
|
||||
aimg_info db 'img_info',0
|
||||
aimg_from_file db 'img_from_file',0
|
||||
aimg_to_file db 'img_to_file',0
|
||||
aimg_from_rgb db 'img_from_rgb',0
|
||||
aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB
|
||||
aimg_to_rgb2 db 'img_to_rgb2',0
|
||||
aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных
|
||||
aimg_encode db 'img_encode',0
|
||||
aimg_create db 'img_create',0
|
||||
aimg_destroy db 'img_destroy',0
|
||||
aimg_destroy_layer db 'img_destroy_layer',0
|
||||
aimg_count db 'img_count',0
|
||||
aimg_lock_bits db 'img_lock_bits',0
|
||||
aimg_unlock_bits db 'img_unlock_bits',0
|
||||
aimg_flip db 'img_flip',0
|
||||
aimg_flip_layer db 'img_flip_layer',0
|
||||
aimg_rotate db 'img_rotate',0
|
||||
aimg_rotate_layer db 'img_rotate_layer',0
|
||||
aimg_draw db 'img_draw',0
|
||||
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
i_end:
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
IMAGE_FILE0_SIZE equ 640*480*3 ;размер файла с изображением 640 x 480
|
||||
IMAGE_FILE1_SIZE equ 200*186*3 ;размер файла с изображением 200 x 100
|
||||
fn_foto db 'foto.jpg',0
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
;проверка на сколько удачно загузилась наша либа
|
||||
mov ebp,lib0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
mov ebp,lib1
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
|
||||
mcall 40,0x27
|
||||
mcall 48,3,sc,sizeof.system_colors ;получаем системные цвета
|
||||
|
||||
load_image_file fn_foto, image_data_foto,IMAGE_FILE0_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_0,[image_data_foto] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_foto] ;освобождаем память
|
||||
|
||||
load_image_file 'img0.png',image_data_gray,IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_gray] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_gray] ;освобождаем память
|
||||
|
||||
load_image_file 'img1.png',image_data_rgb, IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_2,[image_data_rgb] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_rgb] ;освобождаем память
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8бит
|
||||
stdcall [buf2d_conv_24_to_32],buf_2,buf_1 ;делаем буфер rgba 32бит
|
||||
|
||||
stdcall [buf2d_bit_blt], buf_0, 10,170, buf_2 ;рисуем изображение на фотографии
|
||||
stdcall [buf2d_bit_blt_transp], buf_0, 210,270, buf_2 ;рисуем прозрачное изображение на фотографии
|
||||
stdcall [buf2d_bit_blt_alpha], buf_0, 410,170, buf_1,0xff8080 ;рисуем контуры изображения на фотографии
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still: ;главный цикл
|
||||
mcall 10
|
||||
|
||||
cmp al,0x1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x2
|
||||
jz key
|
||||
cmp al,0x3
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall 2
|
||||
;...
|
||||
pop ebx eax
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall 0,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall 12,2
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
system_dir0 db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
name_libimg db 'libimg.obj',0
|
||||
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib
|
||||
lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
|
||||
load_lib_end:
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall 17 ;получить код нажатой кнопки
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_2 ;удаляем буфер
|
||||
mcall -1 ;выход из программы
|
||||
|
||||
image_data dd 0 ;память для преобразования картинки функциями libimg
|
||||
image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit
|
||||
image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb
|
||||
image_data_foto dd 0
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
caption db 'Draw images 13.09.11',0 ;подпись окна
|
||||
sc system_colors ;системные цвета
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 640 ;+8 w
|
||||
dd 480 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 25 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_2:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 235 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
import_libimg:
|
||||
dd alib_init1
|
||||
img_is_img dd aimg_is_img
|
||||
img_info dd aimg_info
|
||||
img_from_file dd aimg_from_file
|
||||
img_to_file dd aimg_to_file
|
||||
img_from_rgb dd aimg_from_rgb
|
||||
img_to_rgb dd aimg_to_rgb
|
||||
img_to_rgb2 dd aimg_to_rgb2
|
||||
img_decode dd aimg_decode
|
||||
img_encode dd aimg_encode
|
||||
img_create dd aimg_create
|
||||
img_destroy dd aimg_destroy
|
||||
img_destroy_layer dd aimg_destroy_layer
|
||||
img_count dd aimg_count
|
||||
img_lock_bits dd aimg_lock_bits
|
||||
img_unlock_bits dd aimg_unlock_bits
|
||||
img_flip dd aimg_flip
|
||||
img_flip_layer dd aimg_flip_layer
|
||||
img_rotate dd aimg_rotate
|
||||
img_rotate_layer dd aimg_rotate_layer
|
||||
img_draw dd aimg_draw
|
||||
|
||||
dd 0,0
|
||||
alib_init1 db 'lib_init',0
|
||||
aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
|
||||
aimg_info db 'img_info',0
|
||||
aimg_from_file db 'img_from_file',0
|
||||
aimg_to_file db 'img_to_file',0
|
||||
aimg_from_rgb db 'img_from_rgb',0
|
||||
aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB
|
||||
aimg_to_rgb2 db 'img_to_rgb2',0
|
||||
aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных
|
||||
aimg_encode db 'img_encode',0
|
||||
aimg_create db 'img_create',0
|
||||
aimg_destroy db 'img_destroy',0
|
||||
aimg_destroy_layer db 'img_destroy_layer',0
|
||||
aimg_count db 'img_count',0
|
||||
aimg_lock_bits db 'img_lock_bits',0
|
||||
aimg_unlock_bits db 'img_unlock_bits',0
|
||||
aimg_flip db 'img_flip',0
|
||||
aimg_flip_layer db 'img_flip_layer',0
|
||||
aimg_rotate db 'img_rotate',0
|
||||
aimg_rotate_layer db 'img_rotate_layer',0
|
||||
aimg_draw db 'img_draw',0
|
||||
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
i_end:
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
mem:
|
||||
+314
-308
@@ -1,308 +1,314 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
IMAGE_FILE1_SIZE equ 128*144*3 ;размер файла с изображением 128 x 144
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
;проверка на сколько удачно загузилась наша либа
|
||||
mov ebp,lib0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
mov ebp,lib1
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
|
||||
mcall 40,0x27
|
||||
mcall 48,3,sc,sizeof.system_colors ;получаем системные цвета
|
||||
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
|
||||
load_image_file 'font8x9.bmp', image_data_foto,IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_foto] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_foto] ;освобождаем память
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
|
||||
stdcall [buf2d_bit_blt_alpha], buf_0, 70,10, buf_1,0x20d020 ;рисуем исходную текстовую матрицу 16*16
|
||||
stdcall [buf2d_convert_text_matrix], buf_1
|
||||
stdcall [buf2d_bit_blt_alpha], buf_0, 10,10, buf_1,0xff8080 ;рисуем преобразованную текстовую матрицу 1*256
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,some_text,70,170,0x4040ff ;рисуем строку с текстом
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still: ;главный цикл
|
||||
mcall 10
|
||||
|
||||
cmp al,0x1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x2
|
||||
jz key
|
||||
cmp al,0x3
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall 2
|
||||
;...
|
||||
pop ebx eax
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall 0,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall 12,2
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
system_dir0 db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
name_libimg db 'libimg.obj',0
|
||||
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib
|
||||
lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
|
||||
load_lib_end:
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall 17 ;получить код нажатой кнопки
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
mcall -1 ;выход из программы
|
||||
|
||||
image_data dd 0 ;память для преобразования картинки функциями libimg
|
||||
image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit
|
||||
image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb
|
||||
image_data_foto dd 0
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
caption db 'Draw text 13.09.11',0 ;подпись окна
|
||||
sc system_colors ;системные цвета
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 640 ;+8 w
|
||||
dd 480 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 25 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 128 ;+8 w
|
||||
dd 144 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
some_text db 'Пример вывода теста в буфер, возможен вывод:',13,13
|
||||
db ' * в несколько строк',13
|
||||
db ' * можно задавать цвет текста',13,13
|
||||
db 'Сегодня 13 сентября 2011.',0
|
||||
|
||||
align 4
|
||||
import_libimg:
|
||||
dd alib_init1
|
||||
img_is_img dd aimg_is_img
|
||||
img_info dd aimg_info
|
||||
img_from_file dd aimg_from_file
|
||||
img_to_file dd aimg_to_file
|
||||
img_from_rgb dd aimg_from_rgb
|
||||
img_to_rgb dd aimg_to_rgb
|
||||
img_to_rgb2 dd aimg_to_rgb2
|
||||
img_decode dd aimg_decode
|
||||
img_encode dd aimg_encode
|
||||
img_create dd aimg_create
|
||||
img_destroy dd aimg_destroy
|
||||
img_destroy_layer dd aimg_destroy_layer
|
||||
img_count dd aimg_count
|
||||
img_lock_bits dd aimg_lock_bits
|
||||
img_unlock_bits dd aimg_unlock_bits
|
||||
img_flip dd aimg_flip
|
||||
img_flip_layer dd aimg_flip_layer
|
||||
img_rotate dd aimg_rotate
|
||||
img_rotate_layer dd aimg_rotate_layer
|
||||
img_draw dd aimg_draw
|
||||
|
||||
dd 0,0
|
||||
alib_init1 db 'lib_init',0
|
||||
aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
|
||||
aimg_info db 'img_info',0
|
||||
aimg_from_file db 'img_from_file',0
|
||||
aimg_to_file db 'img_to_file',0
|
||||
aimg_from_rgb db 'img_from_rgb',0
|
||||
aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB
|
||||
aimg_to_rgb2 db 'img_to_rgb2',0
|
||||
aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных
|
||||
aimg_encode db 'img_encode',0
|
||||
aimg_create db 'img_create',0
|
||||
aimg_destroy db 'img_destroy',0
|
||||
aimg_destroy_layer db 'img_destroy_layer',0
|
||||
aimg_count db 'img_count',0
|
||||
aimg_lock_bits db 'img_lock_bits',0
|
||||
aimg_unlock_bits db 'img_unlock_bits',0
|
||||
aimg_flip db 'img_flip',0
|
||||
aimg_flip_layer db 'img_flip_layer',0
|
||||
aimg_rotate db 'img_rotate',0
|
||||
aimg_rotate_layer db 'img_rotate_layer',0
|
||||
aimg_draw db 'img_draw',0
|
||||
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_resize dd sz_buf2d_resize
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_rect_by_size dd sz_buf2d_rect_by_size
|
||||
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
buf2d_crop_color dd sz_buf2d_crop_color
|
||||
buf2d_offset_h dd sz_buf2d_offset_h
|
||||
buf2d_flood_fill dd sz_buf2d_flood_fill
|
||||
buf2d_set_pixel dd sz_buf2d_set_pixel
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_resize db 'buf2d_resize',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
|
||||
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
sz_buf2d_crop_color db 'buf2d_crop_color',0
|
||||
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||
|
||||
i_end:
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
IMAGE_FILE1_SIZE equ 128*144*3 ;размер файла с изображением 128 x 144
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
;проверка на сколько удачно загузилась наша либа
|
||||
mov ebp,lib0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
mov ebp,lib1
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
@@:
|
||||
|
||||
mcall 40,0x27
|
||||
mcall 48,3,sc,sizeof.system_colors ;получаем системные цвета
|
||||
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
|
||||
load_image_file 'font8x9.bmp', image_data_foto,IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_foto] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_foto] ;освобождаем память
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
|
||||
stdcall [buf2d_bit_blt_alpha], buf_0, 70,10, buf_1,0x20d020 ;рисуем исходную текстовую матрицу 16*16
|
||||
stdcall [buf2d_convert_text_matrix], buf_1
|
||||
stdcall [buf2d_bit_blt_alpha], buf_0, 10,10, buf_1,0xff8080 ;рисуем преобразованную текстовую матрицу 1*256
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,some_text,70,170,0x4040ff ;рисуем строку с текстом
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still: ;главный цикл
|
||||
mcall 10
|
||||
|
||||
cmp al,0x1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x2
|
||||
jz key
|
||||
cmp al,0x3
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall 2
|
||||
;...
|
||||
pop ebx eax
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall 0,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall 12,2
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
system_dir0 db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
name_libimg db 'libimg.obj',0
|
||||
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib
|
||||
lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
|
||||
load_lib_end:
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall 17 ;получить код нажатой кнопки
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
mcall -1 ;выход из программы
|
||||
|
||||
image_data dd 0 ;память для преобразования картинки функциями libimg
|
||||
image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit
|
||||
image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb
|
||||
image_data_foto dd 0
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
caption db 'Draw text 13.09.11',0 ;подпись окна
|
||||
sc system_colors ;системные цвета
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 640 ;+8 w
|
||||
dd 480 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 25 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 128 ;+8 w
|
||||
dd 144 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
some_text db 'Пример вывода теста в буфер, возможен вывод:',13,13
|
||||
db ' * в несколько строк',13
|
||||
db ' * можно задавать цвет текста',13,13
|
||||
db 'Сегодня 13 сентября 2011.',0
|
||||
|
||||
align 4
|
||||
import_libimg:
|
||||
dd alib_init1
|
||||
img_is_img dd aimg_is_img
|
||||
img_info dd aimg_info
|
||||
img_from_file dd aimg_from_file
|
||||
img_to_file dd aimg_to_file
|
||||
img_from_rgb dd aimg_from_rgb
|
||||
img_to_rgb dd aimg_to_rgb
|
||||
img_to_rgb2 dd aimg_to_rgb2
|
||||
img_decode dd aimg_decode
|
||||
img_encode dd aimg_encode
|
||||
img_create dd aimg_create
|
||||
img_destroy dd aimg_destroy
|
||||
img_destroy_layer dd aimg_destroy_layer
|
||||
img_count dd aimg_count
|
||||
img_lock_bits dd aimg_lock_bits
|
||||
img_unlock_bits dd aimg_unlock_bits
|
||||
img_flip dd aimg_flip
|
||||
img_flip_layer dd aimg_flip_layer
|
||||
img_rotate dd aimg_rotate
|
||||
img_rotate_layer dd aimg_rotate_layer
|
||||
img_draw dd aimg_draw
|
||||
|
||||
dd 0,0
|
||||
alib_init1 db 'lib_init',0
|
||||
aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
|
||||
aimg_info db 'img_info',0
|
||||
aimg_from_file db 'img_from_file',0
|
||||
aimg_to_file db 'img_to_file',0
|
||||
aimg_from_rgb db 'img_from_rgb',0
|
||||
aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB
|
||||
aimg_to_rgb2 db 'img_to_rgb2',0
|
||||
aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных
|
||||
aimg_encode db 'img_encode',0
|
||||
aimg_create db 'img_create',0
|
||||
aimg_destroy db 'img_destroy',0
|
||||
aimg_destroy_layer db 'img_destroy_layer',0
|
||||
aimg_count db 'img_count',0
|
||||
aimg_lock_bits db 'img_lock_bits',0
|
||||
aimg_unlock_bits db 'img_unlock_bits',0
|
||||
aimg_flip db 'img_flip',0
|
||||
aimg_flip_layer db 'img_flip_layer',0
|
||||
aimg_rotate db 'img_rotate',0
|
||||
aimg_rotate_layer db 'img_rotate_layer',0
|
||||
aimg_draw db 'img_draw',0
|
||||
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_resize dd sz_buf2d_resize
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_rect_by_size dd sz_buf2d_rect_by_size
|
||||
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
buf2d_crop_color dd sz_buf2d_crop_color
|
||||
buf2d_offset_h dd sz_buf2d_offset_h
|
||||
buf2d_flood_fill dd sz_buf2d_flood_fill
|
||||
buf2d_set_pixel dd sz_buf2d_set_pixel
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_resize db 'buf2d_resize',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
|
||||
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
sz_buf2d_crop_color db 'buf2d_crop_color',0
|
||||
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||
|
||||
i_end:
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
mem:
|
||||
+183
-178
@@ -1,178 +1,183 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
buf2d_l equ word[edi+4] ;юЄёЄєя ёыхтр
|
||||
buf2d_t equ word[edi+6] ;юЄёЄєя ётхЁїє
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS,sc,sizeof.system_colors ;яюыєўрхь ёшёЄхьэ√х ЎтхЄр
|
||||
stdcall [buf2d_create], buf_0 ;ёючфрхь сєЇхЁ
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;шчь. яюыюцхэшх юъэр
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
cmp al,6
|
||||
jz mouse
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+500,(30 shl 16)+370,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
; cmp ah,27 ;Esc
|
||||
; je button.exit
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;єфры хь сєЇхЁ
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
;юсЁрсрЄ√трхь юъэю ЁхфръЄюЁр
|
||||
mcall SF_MOUSE_GET, SSF_BUTTON ;get mouse buttons
|
||||
cmp al,1
|
||||
jne @f
|
||||
mcall SF_MOUSE_GET, SSF_WINDOW_POSITION ;get mouse coords
|
||||
mov ebx,eax
|
||||
shr ebx,16 ;т eax ъююЁфшэрЄр ьш°ш яю юёш 'x'
|
||||
and eax,0xffff ;т eax ъююЁфшэрЄр ьш°ш яю юёш 'y'
|
||||
mov edi,buf_0
|
||||
sub ax,buf2d_t ;ёфтшурхь ъююЁфшэрЄ√ єўшЄ√тр ёьх∙хэшх сєЇхЁр
|
||||
sub bx,buf2d_l
|
||||
|
||||
;Ёшёютрэшх яЁш эрцрЄшш
|
||||
;stdcall [buf2d_circle], edi, ebx, eax, 20, 0xff0000 ;Ёшёєхь юъЁєцэюёЄ№
|
||||
;stdcall [buf2d_flood_fill], edi, ebx, eax, 0, 0xff,0xff0000 ;чрыштър ЎтхЄюь
|
||||
sub eax,5
|
||||
sub ebx,5
|
||||
stdcall [buf2d_filled_rect_by_size], edi, ebx,eax, 10,10, 0xff0000 ;Ёшёєхь яЁ ьюєуюы№эшъ
|
||||
stdcall [buf2d_draw], edi ;юсэюты хь ¤ъЁрэ
|
||||
@@:
|
||||
jmp still
|
||||
|
||||
caption db 'Press left mouse button',0
|
||||
sc system_colors ;ёшёЄхьэ√х ЎтхЄр
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_resize dd sz_buf2d_resize
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_rect_by_size dd sz_buf2d_rect_by_size
|
||||
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
buf2d_crop_color dd sz_buf2d_crop_color
|
||||
buf2d_offset_h dd sz_buf2d_offset_h
|
||||
buf2d_flood_fill dd sz_buf2d_flood_fill
|
||||
buf2d_set_pixel dd sz_buf2d_set_pixel
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_resize db 'buf2d_resize',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
|
||||
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
sz_buf2d_crop_color db 'buf2d_crop_color',0
|
||||
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;єърчрЄхы№ эр сєЇхЁ шчюсЁрцхэш
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 480 ;+8 w
|
||||
dd 320 ;+12 h
|
||||
.color: dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
i_end: ;ъюэхЎ ъюфр
|
||||
rb 2*4096
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page Windows 1251 - Cyrillic
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
buf2d_l equ word[edi+4] ;юЄёЄєя ёыхтр
|
||||
buf2d_t equ word[edi+6] ;юЄёЄєя ётхЁїє
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS,sc,sizeof.system_colors ;яюыєўрхь ёшёЄхьэ√х ЎтхЄр
|
||||
stdcall [buf2d_create], buf_0 ;ёючфрхь сєЇхЁ
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;шчь. яюыюцхэшх юъэр
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
cmp al,6
|
||||
jz mouse
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+500,(30 shl 16)+370,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
; cmp ah,27 ;Esc
|
||||
; je button.exit
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;єфры хь сєЇхЁ
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
;юсЁрсрЄ√трхь юъэю ЁхфръЄюЁр
|
||||
mcall SF_MOUSE_GET, SSF_BUTTON ;get mouse buttons
|
||||
cmp al,1
|
||||
jne @f
|
||||
mcall SF_MOUSE_GET, SSF_WINDOW_POSITION ;get mouse coords
|
||||
mov ebx,eax
|
||||
shr ebx,16 ;т eax ъююЁфшэрЄр ьш°ш яю юёш 'x'
|
||||
and eax,0xffff ;т eax ъююЁфшэрЄр ьш°ш яю юёш 'y'
|
||||
mov edi,buf_0
|
||||
sub ax,buf2d_t ;ёфтшурхь ъююЁфшэрЄ√ єўшЄ√тр ёьх∙хэшх сєЇхЁр
|
||||
sub bx,buf2d_l
|
||||
|
||||
;Ёшёютрэшх яЁш эрцрЄшш
|
||||
;stdcall [buf2d_circle], edi, ebx, eax, 20, 0xff0000 ;Ёшёєхь юъЁєцэюёЄ№
|
||||
;stdcall [buf2d_flood_fill], edi, ebx, eax, 0, 0xff,0xff0000 ;чрыштър ЎтхЄюь
|
||||
sub eax,5
|
||||
sub ebx,5
|
||||
stdcall [buf2d_filled_rect_by_size], edi, ebx,eax, 10,10, 0xff0000 ;Ёшёєхь яЁ ьюєуюы№эшъ
|
||||
stdcall [buf2d_draw], edi ;юсэюты хь ¤ъЁрэ
|
||||
@@:
|
||||
jmp still
|
||||
|
||||
caption db 'Press left mouse button',0
|
||||
sc system_colors ;ёшёЄхьэ√х ЎтхЄр
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_resize dd sz_buf2d_resize
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_rect_by_size dd sz_buf2d_rect_by_size
|
||||
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
buf2d_crop_color dd sz_buf2d_crop_color
|
||||
buf2d_offset_h dd sz_buf2d_offset_h
|
||||
buf2d_flood_fill dd sz_buf2d_flood_fill
|
||||
buf2d_set_pixel dd sz_buf2d_set_pixel
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_resize db 'buf2d_resize',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
|
||||
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
sz_buf2d_crop_color db 'buf2d_crop_color',0
|
||||
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;єърчрЄхы№ эр сєЇхЁ шчюсЁрцхэш
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 480 ;+8 w
|
||||
dd 320 ;+12 h
|
||||
.color: dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
i_end: ;ъюэхЎ ъюфр
|
||||
rb 2*4096
|
||||
stacktop:
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
mem:
|
||||
+187
-182
@@ -1,182 +1,187 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
buf2d_l equ word[edi+4] ;отступ слева
|
||||
buf2d_t equ word[edi+6] ;отступ сверху
|
||||
buf2d_w equ dword[edi+8]
|
||||
buf2d_h equ dword[edi+12]
|
||||
buf2d_color equ dword[edi+16] ;цвет фона буфера
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK,0xC0000027
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
;рисуем первоначальный кадр
|
||||
stdcall [buf2d_filled_rect_by_size], buf_0, 100-50,70-25, 100,50, 0xffffff ;рисуем прямоугольник
|
||||
stdcall [buf2d_line], buf_0, 10,10, 100,75, 0xff0000 ;рисуем простую линию
|
||||
stdcall [buf2d_line_sm], buf_0, 100,75, 190,140, 0xff0000 ;рисуем сглаженную линию
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
cmp al,6
|
||||
jz mouse
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
;mov edx,0x32000000
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
;обрабатываем окно редактора
|
||||
mcall SF_MOUSE_GET,SSF_BUTTON
|
||||
cmp al,1
|
||||
jne @f
|
||||
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
|
||||
mov ebx,eax
|
||||
shr ebx,16 ;в eax координата миши по оси 'x'
|
||||
and eax,0xffff ;в eax координата миши по оси 'y'
|
||||
mov edi,buf_0
|
||||
sub ax,buf2d_t ;сдвигаем координаты учитывая смещение буфера
|
||||
cmp eax,buf2d_h
|
||||
jge @f
|
||||
sub bx,buf2d_l
|
||||
cmp ebx,buf2d_w
|
||||
jge @f
|
||||
|
||||
;рисование при нажатии
|
||||
stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран от предыдущих рисований
|
||||
stdcall [buf2d_filled_rect_by_size], edi, 100-50,70-25, 100,50, 0xffffff ;рисуем прямоугольник
|
||||
|
||||
stdcall [buf2d_line], edi, 10,10, ebx,eax, 0xff0000 ;рисуем простую линию
|
||||
stdcall [buf2d_line_sm], edi, 190,140, ebx,eax, 0xff0000 ;рисуем сглаженную линию
|
||||
stdcall [buf2d_draw], edi ;обновляем экран
|
||||
@@:
|
||||
jmp still
|
||||
|
||||
caption db 'Press left mouse button, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_line_sm dd sz_buf2d_line_sm
|
||||
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_line_sm db 'buf2d_line_sm',0
|
||||
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 150 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
align 16
|
||||
i_end: ;конец кода
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path:
|
||||
rb 4096
|
||||
library_path:
|
||||
rb 4096
|
||||
mem:
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01'
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
buf2d_l equ word[edi+4] ;отступ слева
|
||||
buf2d_t equ word[edi+6] ;отступ сверху
|
||||
buf2d_w equ dword[edi+8]
|
||||
buf2d_h equ dword[edi+12]
|
||||
buf2d_color equ dword[edi+16] ;цвет фона буфера
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library lib0_name, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK,0xC0000027
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
;рисуем первоначальный кадр
|
||||
stdcall [buf2d_filled_rect_by_size], buf_0, 100-50,70-25, 100,50, 0xffffff ;рисуем прямоугольник
|
||||
stdcall [buf2d_line], buf_0, 10,10, 100,75, 0xff0000 ;рисуем простую линию
|
||||
stdcall [buf2d_line_sm], buf_0, 100,75, 190,140, 0xff0000 ;рисуем сглаженную линию
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
cmp al,6
|
||||
jz mouse
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
;mov edx,0x32000000
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
;обрабатываем окно редактора
|
||||
mcall SF_MOUSE_GET,SSF_BUTTON
|
||||
cmp al,1
|
||||
jne @f
|
||||
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
|
||||
mov ebx,eax
|
||||
shr ebx,16 ;в eax координата миши по оси 'x'
|
||||
and eax,0xffff ;в eax координата миши по оси 'y'
|
||||
mov edi,buf_0
|
||||
sub ax,buf2d_t ;сдвигаем координаты учитывая смещение буфера
|
||||
cmp eax,buf2d_h
|
||||
jge @f
|
||||
sub bx,buf2d_l
|
||||
cmp ebx,buf2d_w
|
||||
jge @f
|
||||
|
||||
;рисование при нажатии
|
||||
stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран от предыдущих рисований
|
||||
stdcall [buf2d_filled_rect_by_size], edi, 100-50,70-25, 100,50, 0xffffff ;рисуем прямоугольник
|
||||
|
||||
stdcall [buf2d_line], edi, 10,10, ebx,eax, 0xff0000 ;рисуем простую линию
|
||||
stdcall [buf2d_line_sm], edi, 190,140, ebx,eax, 0xff0000 ;рисуем сглаженную линию
|
||||
stdcall [buf2d_draw], edi ;обновляем экран
|
||||
@@:
|
||||
jmp still
|
||||
|
||||
caption db 'Press left mouse button, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_line dd sz_buf2d_line
|
||||
buf2d_line_sm dd sz_buf2d_line_sm
|
||||
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
|
||||
buf2d_circle dd sz_buf2d_circle
|
||||
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
||||
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
||||
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
||||
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
||||
buf2d_bit_blt dd sz_buf2d_bit_blt
|
||||
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
||||
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
||||
buf2d_curve_bezier dd sz_buf2d_curve_bezier
|
||||
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
||||
buf2d_draw_text dd sz_buf2d_draw_text
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_line db 'buf2d_line',0
|
||||
sz_buf2d_line_sm db 'buf2d_line_sm',0
|
||||
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
|
||||
sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
|
||||
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
||||
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
||||
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
||||
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
||||
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
||||
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
||||
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
||||
sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
|
||||
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
||||
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 10 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 150 ;+12 h
|
||||
dd 0x80 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
lib0_name db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
align 16
|
||||
i_end: ;конец кода
|
||||
rb 1024
|
||||
stacktop:
|
||||
cur_dir_path:
|
||||
rb 4096
|
||||
library_path:
|
||||
rb 4096
|
||||
mem:
|
||||
+224
-219
@@ -1,219 +1,224 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
max_open_file_size equ 64*1024 ;64 Kb
|
||||
|
||||
align 4
|
||||
open_file_vox dd 0 ;указатель на область для открытия файлов
|
||||
run_file_70 FileInfoBlock
|
||||
f_name db 'vaz2106.vox',0
|
||||
|
||||
vox_offs_tree_table equ 4
|
||||
|
||||
;поворот объекта на 90 градусов
|
||||
;x0y0 - x1y0
|
||||
;x1y0 - x1y1
|
||||
;x0y1 - x0y0
|
||||
;x1y1 - x0y1
|
||||
align 4
|
||||
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword
|
||||
mov ebx,[v_obj]
|
||||
add ebx,vox_offs_tree_table
|
||||
mov ecx,2
|
||||
cld
|
||||
@@:
|
||||
mov eax,dword[ebx]
|
||||
mov byte[ebx+1],al
|
||||
mov byte[ebx+3],ah
|
||||
shr eax,16
|
||||
mov byte[ebx],al
|
||||
mov byte[ebx+2],ah
|
||||
add ebx,4
|
||||
loop @b
|
||||
ret
|
||||
endp
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library name_buf2d, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_create], buf_z
|
||||
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov dword[open_file_vox],eax
|
||||
|
||||
copy_path f_name,[32],file_name,0
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov dword[run_file_70.Count], max_open_file_size
|
||||
m2m [run_file_70.Buffer], [open_file_vox]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем воксельный объект
|
||||
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,0, 7
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,0, 7
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,128, 7
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,128, 7
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+295,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_z
|
||||
stdcall mem.Free,[open_file_vox]
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
|
||||
;воксельные функции:
|
||||
;buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
|
||||
;buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
|
||||
buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
|
||||
;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
|
||||
;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
||||
;buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
||||
;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
||||
;buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
||||
;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
||||
;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
|
||||
;воксельные функции:
|
||||
;sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||
;sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
|
||||
sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
|
||||
;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
|
||||
;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
||||
;sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
||||
;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
||||
;sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
||||
;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
||||
;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 256 ;+8 w
|
||||
dd 256 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_z:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 256 ;+8 w
|
||||
dd 256 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 32 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
align 16
|
||||
i_end: ;конец кода
|
||||
file_name:
|
||||
rb 4096
|
||||
cur_dir_path:
|
||||
rb 4096
|
||||
library_path:
|
||||
rb 4096
|
||||
rb 1024
|
||||
stacktop:
|
||||
mem:
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
max_open_file_size equ 64*1024 ;64 Kb
|
||||
|
||||
align 4
|
||||
open_file_vox dd 0 ;указатель на область для открытия файлов
|
||||
run_file_70 FileInfoBlock
|
||||
f_name db 'vaz2106.vox',0
|
||||
|
||||
vox_offs_tree_table equ 4
|
||||
|
||||
;поворот объекта на 90 градусов
|
||||
;x0y0 - x1y0
|
||||
;x1y0 - x1y1
|
||||
;x0y1 - x0y0
|
||||
;x1y1 - x0y1
|
||||
align 4
|
||||
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword
|
||||
mov ebx,[v_obj]
|
||||
add ebx,vox_offs_tree_table
|
||||
mov ecx,2
|
||||
cld
|
||||
@@:
|
||||
mov eax,dword[ebx]
|
||||
mov byte[ebx+1],al
|
||||
mov byte[ebx+3],ah
|
||||
shr eax,16
|
||||
mov byte[ebx],al
|
||||
mov byte[ebx+2],ah
|
||||
add ebx,4
|
||||
loop @b
|
||||
ret
|
||||
endp
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library name_buf2d, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_create], buf_z
|
||||
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov dword[open_file_vox],eax
|
||||
|
||||
copy_path f_name,[32],file_name,0
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov dword[run_file_70.Count], max_open_file_size
|
||||
m2m [run_file_70.Buffer], [open_file_vox]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем воксельный объект
|
||||
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,0, 7
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,0, 7
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,128, 7
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,128, 7
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+295,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_z
|
||||
stdcall mem.Free,[open_file_vox]
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
|
||||
;воксельные функции:
|
||||
;buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
|
||||
;buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
|
||||
buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
|
||||
;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
|
||||
;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
||||
;buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
||||
;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
||||
;buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
||||
;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
||||
;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
|
||||
;воксельные функции:
|
||||
;sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||
;sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
|
||||
sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
|
||||
;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
|
||||
;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
||||
;sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
||||
;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
||||
;sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
||||
;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
||||
;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 256 ;+8 w
|
||||
dd 256 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_z:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 20 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 256 ;+8 w
|
||||
dd 256 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 32 ;+20 bit in pixel
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
align 16
|
||||
i_end: ;конец кода
|
||||
file_name:
|
||||
rb 4096
|
||||
cur_dir_path:
|
||||
rb 4096
|
||||
library_path:
|
||||
rb 4096
|
||||
rb 1024
|
||||
stacktop:
|
||||
mem:
|
||||
+244
-240
@@ -1,240 +1,244 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
max_open_file_size equ 64*1024 ;64 Kb
|
||||
|
||||
align 4
|
||||
open_file_vox dd 0 ;указатель на область для открытия файлов
|
||||
run_file_70 FileInfoBlock
|
||||
f_name db 'vaz2106.vox',0
|
||||
|
||||
BUF_STRUCT_SIZE equ 21
|
||||
vox_offs_tree_table equ 4
|
||||
|
||||
;поворот объекта на 90 градусов
|
||||
;x0y0 - x1y0
|
||||
;x1y0 - x1y1
|
||||
;x0y1 - x0y0
|
||||
;x1y1 - x0y1
|
||||
align 4
|
||||
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword
|
||||
mov ebx,[v_obj]
|
||||
add ebx,vox_offs_tree_table
|
||||
mov ecx,2
|
||||
cld
|
||||
@@:
|
||||
mov eax,dword[ebx]
|
||||
mov byte[ebx+1],al
|
||||
mov byte[ebx+3],ah
|
||||
shr eax,16
|
||||
mov byte[ebx],al
|
||||
mov byte[ebx+2],ah
|
||||
add ebx,4
|
||||
loop @b
|
||||
ret
|
||||
endp
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library name_buf2d, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_create], buf_z
|
||||
stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z ;создаем воксельную кисть
|
||||
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov [open_file_vox],eax
|
||||
|
||||
copy_path f_name,[32],file_name,0
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov dword[run_file_70.Count], max_open_file_size
|
||||
m2m [run_file_70.Buffer], [open_file_vox]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем воксельный объект
|
||||
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox,\
|
||||
[open_file_vox], 0,0, 0, 6 ;рисуем воксельный объект
|
||||
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_z, buf_vox,\
|
||||
0,0, 0, 6, 3 ;рисуем тени
|
||||
|
||||
stdcall vox_obj_rot_z, [open_file_vox] ;поворачиваем
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 0,0, 0, 5
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 100,0, 0, 5
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 200,0, 0, 5
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+410,(30 shl 16)+480,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_z
|
||||
stdcall [buf2d_vox_brush_delete],buf_vox
|
||||
stdcall mem.Free,[open_file_vox]
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
|
||||
;воксельные функции:
|
||||
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
|
||||
buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
|
||||
;buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
|
||||
;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
|
||||
;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
||||
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
||||
;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
||||
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
||||
;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
||||
;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
|
||||
;воксельные функции:
|
||||
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
|
||||
;sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
|
||||
;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
|
||||
;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
||||
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
||||
;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
||||
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
||||
;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
||||
;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
|
||||
|
||||
align 4
|
||||
buf_0: ;буфер основного изображения
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 3 ;+6 top
|
||||
dd 6*64 ;+8 w
|
||||
dd 7*64 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_z: ;буфер глубины
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 0 ;+4 left
|
||||
dw 0 ;+6 top
|
||||
dd 6*64 ;+8 w
|
||||
dd 7*64 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 32 ;+20 bit in pixel
|
||||
|
||||
;данные для создания минимального единичного вокселя
|
||||
align 4
|
||||
vox_6_7_z:
|
||||
dd 0,0,1,1,0,0,\
|
||||
0,2,2,2,2,0,\
|
||||
2,2,2,2,2,2,\
|
||||
2,3,2,2,3,2,\
|
||||
2,3,3,3,3,2,\
|
||||
0,3,3,3,3,0,\
|
||||
0,0,3,3,0,0
|
||||
|
||||
align 4
|
||||
buf_vox:
|
||||
db 6,7,4,3 ;w,h,h_osn,n
|
||||
rb BUF_STRUCT_SIZE*(2+1)
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
align 16
|
||||
i_end: ;конец кода
|
||||
file_name rb 4096
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
rb 1024
|
||||
stacktop:
|
||||
mem:
|
||||
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
max_open_file_size equ 64*1024 ;64 Kb
|
||||
|
||||
align 4
|
||||
open_file_vox dd 0 ;указатель на область для открытия файлов
|
||||
run_file_70 FileInfoBlock
|
||||
f_name db 'vaz2106.vox',0
|
||||
|
||||
BUF_STRUCT_SIZE equ 21
|
||||
vox_offs_tree_table equ 4
|
||||
|
||||
;поворот объекта на 90 градусов
|
||||
;x0y0 - x1y0
|
||||
;x1y0 - x1y1
|
||||
;x0y1 - x0y0
|
||||
;x1y1 - x0y1
|
||||
align 4
|
||||
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword
|
||||
mov ebx,[v_obj]
|
||||
add ebx,vox_offs_tree_table
|
||||
mov ecx,2
|
||||
cld
|
||||
@@:
|
||||
mov eax,dword[ebx]
|
||||
mov byte[ebx+1],al
|
||||
mov byte[ebx+3],ah
|
||||
shr eax,16
|
||||
mov byte[ebx],al
|
||||
mov byte[ebx+2],ah
|
||||
add ebx,4
|
||||
loop @b
|
||||
ret
|
||||
endp
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_library name_buf2d, library_path, system_path, import_buf2d_lib
|
||||
cmp eax,-1
|
||||
jz button.exit
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, 0x27
|
||||
stdcall [buf2d_create], buf_0 ;создаем буфер
|
||||
stdcall [buf2d_create], buf_z
|
||||
stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z ;создаем воксельную кисть
|
||||
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov [open_file_vox],eax
|
||||
|
||||
copy_path f_name,[32],file_name,0
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov dword[run_file_70.Count], max_open_file_size
|
||||
m2m [run_file_70.Buffer], [open_file_vox]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем воксельный объект
|
||||
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox,\
|
||||
[open_file_vox], 0,0, 0, 6 ;рисуем воксельный объект
|
||||
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_z, buf_vox,\
|
||||
0,0, 0, 6, 3 ;рисуем тени
|
||||
|
||||
stdcall vox_obj_rot_z, [open_file_vox] ;поворачиваем
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 0,0, 0, 5
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 100,0, 0, 5
|
||||
stdcall vox_obj_rot_z, [open_file_vox]
|
||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 200,0, 0, 5
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW, (50 shl 16)+410,(30 shl 16)+480,,,caption
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
cmp ah,27 ;Esc
|
||||
je button.exit
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_z
|
||||
stdcall [buf2d_vox_brush_delete],buf_vox
|
||||
stdcall mem.Free,[open_file_vox]
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
caption db 'Test buf2d library, [Esc] - exit',0
|
||||
|
||||
;--------------------------------------------------
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
|
||||
;воксельные функции:
|
||||
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
|
||||
buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
|
||||
;buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
|
||||
;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
|
||||
;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
||||
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
||||
;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
||||
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
||||
;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
||||
;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
||||
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
|
||||
;воксельные функции:
|
||||
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
|
||||
;sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
|
||||
;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
|
||||
;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
||||
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
||||
;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
||||
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
||||
;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
||||
;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
|
||||
|
||||
align 4
|
||||
buf_0: ;буфер основного изображения
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 3 ;+6 top
|
||||
dd 6*64 ;+8 w
|
||||
dd 7*64 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_z: ;буфер глубины
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 0 ;+4 left
|
||||
dw 0 ;+6 top
|
||||
dd 6*64 ;+8 w
|
||||
dd 7*64 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 32 ;+20 bit in pixel
|
||||
|
||||
;данные для создания минимального единичного вокселя
|
||||
align 4
|
||||
vox_6_7_z:
|
||||
dd 0,0,1,1,0,0,\
|
||||
0,2,2,2,2,0,\
|
||||
2,2,2,2,2,2,\
|
||||
2,3,2,2,3,2,\
|
||||
2,3,3,3,3,2,\
|
||||
0,3,3,3,3,0,\
|
||||
0,0,3,3,0,0
|
||||
|
||||
align 4
|
||||
buf_vox:
|
||||
db 6,7,4,3 ;w,h,h_osn,n
|
||||
rb BUF_STRUCT_SIZE*(2+1)
|
||||
|
||||
;--------------------------------------------------
|
||||
system_path db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
;--------------------------------------------------
|
||||
|
||||
align 16
|
||||
i_end: ;конец кода
|
||||
file_name rb 4096
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
rb 1024
|
||||
stacktop:
|
||||
mem:
|
||||
+293
-287
@@ -1,287 +1,293 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1,start,i_end,mem,stacktop,0,sys_path
|
||||
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
include '../../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
IMAGE_FILE1_SIZE equ 200*186*3 ;размер файла с изображением 200 x 100
|
||||
|
||||
BUF_STRUCT_SIZE equ 21
|
||||
buf2d_data equ dword[edi] ;данные буфера изображения
|
||||
buf2d_w equ dword[edi+8] ;ширина буфера
|
||||
buf2d_h equ dword[edi+12] ;высота буфера
|
||||
buf2d_l equ word[edi+4]
|
||||
buf2d_t equ word[edi+6] ;отступ сверху
|
||||
buf2d_size_lt equ dword[edi+4] ;отступ слева и справа для буфера
|
||||
buf2d_color equ dword[edi+16] ;цвет фона буфера
|
||||
buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения
|
||||
vox_offs_tree_table equ 4
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0
|
||||
else
|
||||
copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
;проверка на сколько удачно загузилась наша либа
|
||||
mov ebp,lib0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
mov ebp,lib1
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors ;получаем системные цвета
|
||||
|
||||
load_image_file 'img1.png',image_data_rgb, IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_0,[image_data_rgb] ;создаем буфер
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_rgb] ;создаем буфер
|
||||
stdcall [buf2d_create_f_img], buf_2,[image_data_rgb] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_rgb] ;освобождаем память
|
||||
|
||||
stdcall [buf2d_filter_dither], buf_1,2
|
||||
stdcall [buf2d_filter_dither], buf_2,3
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still: ;главный цикл
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall SF_GET_KEY
|
||||
;...
|
||||
pop ebx eax
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
stdcall [buf2d_draw], buf_1
|
||||
stdcall [buf2d_draw], buf_2
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
system_dir0 db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
name_libimg db 'libimg.obj',0
|
||||
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib
|
||||
lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
|
||||
load_lib_end:
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_2 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
image_data dd 0 ;память для преобразования картинки функциями libimg
|
||||
image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit
|
||||
image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb
|
||||
image_data_foto dd 0
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
caption db 'Draw images 28.11.20',0 ;подпись окна
|
||||
sc system_colors ;системные цвета
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 200 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_2:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 210 ;+4 left
|
||||
dw 200 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
import_libimg:
|
||||
dd alib_init1
|
||||
img_is_img dd aimg_is_img
|
||||
img_info dd aimg_info
|
||||
img_from_file dd aimg_from_file
|
||||
img_to_file dd aimg_to_file
|
||||
img_from_rgb dd aimg_from_rgb
|
||||
img_to_rgb dd aimg_to_rgb
|
||||
img_to_rgb2 dd aimg_to_rgb2
|
||||
img_decode dd aimg_decode
|
||||
img_encode dd aimg_encode
|
||||
img_create dd aimg_create
|
||||
img_destroy dd aimg_destroy
|
||||
img_destroy_layer dd aimg_destroy_layer
|
||||
img_count dd aimg_count
|
||||
img_lock_bits dd aimg_lock_bits
|
||||
img_unlock_bits dd aimg_unlock_bits
|
||||
img_flip dd aimg_flip
|
||||
img_flip_layer dd aimg_flip_layer
|
||||
img_rotate dd aimg_rotate
|
||||
img_rotate_layer dd aimg_rotate_layer
|
||||
img_draw dd aimg_draw
|
||||
|
||||
dd 0,0
|
||||
alib_init1 db 'lib_init',0
|
||||
aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
|
||||
aimg_info db 'img_info',0
|
||||
aimg_from_file db 'img_from_file',0
|
||||
aimg_to_file db 'img_to_file',0
|
||||
aimg_from_rgb db 'img_from_rgb',0
|
||||
aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB
|
||||
aimg_to_rgb2 db 'img_to_rgb2',0
|
||||
aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных
|
||||
aimg_encode db 'img_encode',0
|
||||
aimg_create db 'img_create',0
|
||||
aimg_destroy db 'img_destroy',0
|
||||
aimg_destroy_layer db 'img_destroy_layer',0
|
||||
aimg_count db 'img_count',0
|
||||
aimg_lock_bits db 'img_lock_bits',0
|
||||
aimg_unlock_bits db 'img_unlock_bits',0
|
||||
aimg_flip db 'img_flip',0
|
||||
aimg_flip_layer db 'img_flip_layer',0
|
||||
aimg_rotate db 'img_rotate',0
|
||||
aimg_rotate_layer db 'img_rotate_layer',0
|
||||
aimg_draw db 'img_draw',0
|
||||
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_filter_dither dd sz_buf2d_filter_dither
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_filter_dither db 'buf2d_filter_dither',0
|
||||
|
||||
align 16
|
||||
i_end:
|
||||
sys_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
rb 1024
|
||||
stacktop:
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1,start,i_end,mem,stacktop,0,sys_path
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
IMAGE_FILE1_SIZE equ 200*186*3 ;размер файла с изображением 200 x 100
|
||||
|
||||
BUF_STRUCT_SIZE equ 21
|
||||
buf2d_data equ dword[edi] ;данные буфера изображения
|
||||
buf2d_w equ dword[edi+8] ;ширина буфера
|
||||
buf2d_h equ dword[edi+12] ;высота буфера
|
||||
buf2d_l equ word[edi+4]
|
||||
buf2d_t equ word[edi+6] ;отступ сверху
|
||||
buf2d_size_lt equ dword[edi+4] ;отступ слева и справа для буфера
|
||||
buf2d_color equ dword[edi+16] ;цвет фона буфера
|
||||
buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения
|
||||
vox_offs_tree_table equ 4
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0
|
||||
else
|
||||
copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-я функция работа с файлами
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,load_lib_end
|
||||
|
||||
;проверка на сколько удачно загузилась наша либа
|
||||
mov ebp,lib0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
mov ebp,lib1
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors ;получаем системные цвета
|
||||
|
||||
load_image_file 'img1.png',image_data_rgb, IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_0,[image_data_rgb] ;создаем буфер
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_rgb] ;создаем буфер
|
||||
stdcall [buf2d_create_f_img], buf_2,[image_data_rgb] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_rgb] ;освобождаем память
|
||||
|
||||
stdcall [buf2d_filter_dither], buf_1,2
|
||||
stdcall [buf2d_filter_dither], buf_2,3
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still: ;главный цикл
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp al,1 ;изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,2
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall SF_GET_KEY
|
||||
;...
|
||||
pop ebx eax
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
mov edx,[sc.work]
|
||||
or edx,0x33000000
|
||||
mcall SF_CREATE_WINDOW,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна
|
||||
|
||||
stdcall [buf2d_draw], buf_0
|
||||
stdcall [buf2d_draw], buf_1
|
||||
stdcall [buf2d_draw], buf_2
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
system_dir0 db '/sys/lib/'
|
||||
name_buf2d db 'buf2d.obj',0
|
||||
|
||||
system_dir1 db '/sys/lib/'
|
||||
name_libimg db 'libimg.obj',0
|
||||
|
||||
;library structures
|
||||
l_libs_start:
|
||||
lib0 l_libs name_buf2d, file_name, system_dir0, import_buf2d_lib
|
||||
lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
|
||||
load_lib_end:
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
stdcall [buf2d_delete],buf_2 ;удаляем буфер
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
image_data dd 0 ;память для преобразования картинки функциями libimg
|
||||
image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit
|
||||
image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb
|
||||
image_data_foto dd 0
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
caption db 'Draw images 28.11.20',0 ;подпись окна
|
||||
sc system_colors ;системные цвета
|
||||
|
||||
align 4
|
||||
buf_0:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 5 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0xffffff ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 200 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_2:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 210 ;+4 left
|
||||
dw 200 ;+6 top
|
||||
dd 200 ;+8 w
|
||||
dd 186 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
import_libimg:
|
||||
dd alib_init1
|
||||
img_is_img dd aimg_is_img
|
||||
img_info dd aimg_info
|
||||
img_from_file dd aimg_from_file
|
||||
img_to_file dd aimg_to_file
|
||||
img_from_rgb dd aimg_from_rgb
|
||||
img_to_rgb dd aimg_to_rgb
|
||||
img_to_rgb2 dd aimg_to_rgb2
|
||||
img_decode dd aimg_decode
|
||||
img_encode dd aimg_encode
|
||||
img_create dd aimg_create
|
||||
img_destroy dd aimg_destroy
|
||||
img_destroy_layer dd aimg_destroy_layer
|
||||
img_count dd aimg_count
|
||||
img_lock_bits dd aimg_lock_bits
|
||||
img_unlock_bits dd aimg_unlock_bits
|
||||
img_flip dd aimg_flip
|
||||
img_flip_layer dd aimg_flip_layer
|
||||
img_rotate dd aimg_rotate
|
||||
img_rotate_layer dd aimg_rotate_layer
|
||||
img_draw dd aimg_draw
|
||||
|
||||
dd 0,0
|
||||
alib_init1 db 'lib_init',0
|
||||
aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
|
||||
aimg_info db 'img_info',0
|
||||
aimg_from_file db 'img_from_file',0
|
||||
aimg_to_file db 'img_to_file',0
|
||||
aimg_from_rgb db 'img_from_rgb',0
|
||||
aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB
|
||||
aimg_to_rgb2 db 'img_to_rgb2',0
|
||||
aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных
|
||||
aimg_encode db 'img_encode',0
|
||||
aimg_create db 'img_create',0
|
||||
aimg_destroy db 'img_destroy',0
|
||||
aimg_destroy_layer db 'img_destroy_layer',0
|
||||
aimg_count db 'img_count',0
|
||||
aimg_lock_bits db 'img_lock_bits',0
|
||||
aimg_unlock_bits db 'img_unlock_bits',0
|
||||
aimg_flip db 'img_flip',0
|
||||
aimg_flip_layer db 'img_flip_layer',0
|
||||
aimg_rotate db 'img_rotate',0
|
||||
aimg_rotate_layer db 'img_rotate_layer',0
|
||||
aimg_draw db 'img_draw',0
|
||||
|
||||
align 4
|
||||
import_buf2d_lib:
|
||||
dd sz_lib_init
|
||||
buf2d_create dd sz_buf2d_create
|
||||
buf2d_create_f_img dd sz_buf2d_create_f_img
|
||||
buf2d_clear dd sz_buf2d_clear
|
||||
buf2d_draw dd sz_buf2d_draw
|
||||
buf2d_delete dd sz_buf2d_delete
|
||||
buf2d_filter_dither dd sz_buf2d_filter_dither
|
||||
dd 0,0
|
||||
sz_lib_init db 'lib_init',0
|
||||
sz_buf2d_create db 'buf2d_create',0
|
||||
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
||||
sz_buf2d_clear db 'buf2d_clear',0
|
||||
sz_buf2d_draw db 'buf2d_draw',0
|
||||
sz_buf2d_delete db 'buf2d_delete',0
|
||||
sz_buf2d_filter_dither db 'buf2d_filter_dither',0
|
||||
|
||||
align 16
|
||||
i_end:
|
||||
sys_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
rb 1024
|
||||
stacktop:
|
||||
mem:
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+466
-460
@@ -1,460 +1,466 @@
|
||||
;
|
||||
; сшсышюЄхър фы °шЇЁютрэш яю рыуюЁшЄьє DES
|
||||
;
|
||||
|
||||
format MS COFF
|
||||
public EXPORTS
|
||||
section '.flat' code readable align 16
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
|
||||
;description:
|
||||
; ЇєэъЎш °шЇЁютрэш Їрщыют
|
||||
;input:
|
||||
; key - тїюфэющ ъы■ў 64 сшЄ
|
||||
; mem_keys - ярь Є№ фы ЇюЁьшЁютрэш ъы■ўхщ (ЁрчьхЁ 120 срщЄ)
|
||||
; block - єърчрЄхы№ эр яхЁт√щ °шЇЁєхь√щ 8 срщЄэ√щ сыюъ
|
||||
; b_count - ўшёыю сыюъют фы °шЇЁютрэш
|
||||
align 4
|
||||
proc des_encryption, key:dword, mem_keys:dword, block:dword, b_count:dword
|
||||
locals
|
||||
n dd ? ;яхЁхьхээр Ўшъыр
|
||||
endl
|
||||
pushad
|
||||
stdcall encryption_key, [key],[mem_keys]
|
||||
|
||||
;эрўры№эр яхЁхёЄрэютър ip
|
||||
mov ecx,[b_count]
|
||||
cmp ecx,1
|
||||
jl .end_funct
|
||||
mov edi,[block]
|
||||
cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
mov ecx,[b_count]
|
||||
mov esi,[block]
|
||||
;cld
|
||||
.cycle_3:
|
||||
mov dword[n],0
|
||||
.funct_f:
|
||||
mov edi,[mem_keys]
|
||||
add edi,112
|
||||
;яхЁхёЄрты хь сыюъ R0(32) яю ьрЄЁшЎх e
|
||||
stdcall fun_convert_bits, esi, edi, oper_e, 48
|
||||
|
||||
;edi - R0~e (48 сшЄ)
|
||||
;esi - L0R0 (64 сшЄр)
|
||||
stdcall fun_r0xorki_si, edi,[mem_keys],[n]
|
||||
|
||||
;edi - (R0~e xor ki)~Si (32 сшЄр)
|
||||
;яхЁхёЄрэютър p
|
||||
mov eax,edi
|
||||
add eax,4
|
||||
stdcall fun_convert_bits, edi, eax, oper_p, 32
|
||||
|
||||
;яш°хь R0 т L0, ш (L0 xor (R0~e xor ki)~Si) т R0
|
||||
mov edx,dword[esi+4]
|
||||
mov ebx,dword[esi]
|
||||
xor edx,dword[eax]
|
||||
mov dword[esi],edx
|
||||
mov dword[esi+4],ebx
|
||||
|
||||
inc dword[n]
|
||||
cmp dword[n],16
|
||||
jl .funct_f
|
||||
|
||||
add esi,8 ;яхЁхїюф эр ёыхфє■∙шщ 64 сшЄэ√щ °шЇЁєхь√щ сыюъ
|
||||
loop .cycle_3
|
||||
|
||||
;ъюэхўэр яхЁхёЄрэютър ip_inv
|
||||
mov ecx,[b_count]
|
||||
mov edi,[block]
|
||||
;cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
.end_funct:
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ЇєэъЎш Ёрё°шЇЁютрэш Їрщыют
|
||||
;input:
|
||||
; key - тїюфэющ ъы■ў 64 сшЄ
|
||||
; mem_keys - ярь Є№ фы ЇюЁьшЁютрэш ъы■ўхщ (ЁрчьхЁ 120 срщЄ)
|
||||
; block - єърчрЄхы№ эр яхЁт√щ Ёрё°шЇЁют√трхь√щ 8 срщЄэ√щ сыюъ
|
||||
; b_count - ўшёыю сыюъют фы Ёрё°шЇЁютрэш
|
||||
align 4
|
||||
proc des_decryption, key:dword, mem_keys:dword, block:dword, b_count:dword
|
||||
locals
|
||||
n dd ? ;яхЁхьхээр Ўшъыр
|
||||
endl
|
||||
pushad
|
||||
stdcall encryption_key, [key],[mem_keys]
|
||||
|
||||
;эрўры№эр яхЁхёЄрэютър ip
|
||||
mov ecx,[b_count]
|
||||
cmp ecx,1
|
||||
jl .end_funct
|
||||
mov edi,[block]
|
||||
cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
mov ecx,[b_count]
|
||||
mov esi,[block]
|
||||
;cld
|
||||
.cycle_3:
|
||||
mov dword[n],16
|
||||
.funct_f:
|
||||
dec dword[n]
|
||||
mov edi,[mem_keys]
|
||||
add edi,112
|
||||
;яхЁхёЄрты хь сыюъ L0(32) яю ьрЄЁшЎх e
|
||||
add esi,4
|
||||
stdcall fun_convert_bits, esi, edi, oper_e, 48
|
||||
sub esi,4
|
||||
|
||||
;edi - L0~e (48 сшЄ)
|
||||
;esi - L0R0 (64 сшЄр)
|
||||
stdcall fun_r0xorki_si, edi,[mem_keys],[n]
|
||||
|
||||
;edi - (L0~e xor ki)~Si (32 сшЄр)
|
||||
;яхЁхёЄрэютър p
|
||||
mov eax,edi
|
||||
add eax,4
|
||||
stdcall fun_convert_bits, edi, eax, oper_p, 32
|
||||
|
||||
;яш°хь L0 т R0, ш (R0 xor (L0~e xor ki)~Si) т L0
|
||||
mov edx,dword[esi]
|
||||
mov ebx,dword[esi+4]
|
||||
xor edx,dword[eax]
|
||||
mov dword[esi+4],edx
|
||||
mov dword[esi],ebx
|
||||
|
||||
cmp dword[n],0
|
||||
jg .funct_f
|
||||
|
||||
add esi,8 ;яхЁхїюф эр ёыхфє■∙шщ 64 сшЄэ√щ °шЇЁєхь√щ сыюъ
|
||||
loop .cycle_3
|
||||
|
||||
;ъюэхўэр яхЁхёЄрэютър ip_inv
|
||||
mov ecx,[b_count]
|
||||
mov edi,[block]
|
||||
;cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
.end_funct:
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; яхЁхёЄрэютър сшЄют яю єър∙рээющ ьрЄЁшЎх
|
||||
;input:
|
||||
; m_inp - ярь Є№ ё шёїюфэ√ьш фрээ√ьш
|
||||
; m_out - ярь Є№ фы яЁхюсЁрчютрээ√ї фрээ√ї
|
||||
; c_tbl - ЄрсышЎр фы яхЁхёЄрэютъш
|
||||
; tbl_s - ЁрчьхЁ ЄрсышЎ√ фы яхЁхёЄрэютъш
|
||||
align 4
|
||||
proc fun_convert_bits, m_inp:dword, m_out:dword, c_tbl:dword, tbl_s:dword
|
||||
pushad
|
||||
mov esi,[m_inp]
|
||||
mov edi,[m_out]
|
||||
mov eax,[c_tbl]
|
||||
mov ecx,[tbl_s]
|
||||
xor edx,edx
|
||||
mov dword[edi],edx
|
||||
cmp ecx,32
|
||||
jle @f
|
||||
mov dword[edi+4],edx
|
||||
@@:
|
||||
inc edx
|
||||
|
||||
cld
|
||||
.cycle_0:
|
||||
movzx ebx,byte[eax]
|
||||
btr ebx,5
|
||||
jc .tbl_h
|
||||
|
||||
bt dword[esi],ebx
|
||||
jnc @f
|
||||
or dword[edi],edx
|
||||
@@:
|
||||
jmp @f
|
||||
.tbl_h:
|
||||
bt dword[esi+4],ebx
|
||||
jnc @f
|
||||
or dword[edi],edx
|
||||
@@:
|
||||
|
||||
rol edx,1
|
||||
jnc @f
|
||||
add edi,4
|
||||
@@:
|
||||
inc eax
|
||||
loop .cycle_0
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ёыюцхэшх R0(48) xor Ki(48) ш 8 яЁхюсЁрчютрэшщ яю Si
|
||||
;intput:
|
||||
; data_r0 - R0 (48 сшЄ)
|
||||
; data_key - єърчрЄхы№ эр ьрёёшт ъы■ўхщ (яю 48 сшЄ)
|
||||
; n - эюьхЁ ъы■ўр т ьрёёштх
|
||||
;output:
|
||||
; data_r0 - (R0 xor Ki)~Si (32 сшЄр)
|
||||
align 4
|
||||
proc fun_r0xorki_si, data_r0:dword, data_key:dword, n:dword
|
||||
pushad
|
||||
mov edi,[data_r0]
|
||||
mov eax,[n]
|
||||
imul eax,7 ;56 сшЄ - ЁрёёЄю эшх ьхцфє ъы■ўрьш (ёрьш ъы■ўш 48 сшЄ)
|
||||
add eax,[data_key]
|
||||
|
||||
mov ebx,dword[eax]
|
||||
xor dword[edi],ebx
|
||||
mov ebx,dword[eax+4] ;mov bx,word[eax+4]
|
||||
xor dword[edi+4],ebx ;xor word[edi+4],bx
|
||||
|
||||
;edi - єърчрЄхы№ эр чэрўхэшх R0 xor Ki
|
||||
mov eax,dword[edi]
|
||||
mov ebx,dword[edi+4]
|
||||
;bx:eax - 48 сшЄ чэрўхэшх R0 xor Ki
|
||||
lea esi,[oper_s] ;т√сшЁрхь ЄрсышЎє S0
|
||||
mov ecx,8
|
||||
.cycle_0:
|
||||
mov dl,al
|
||||
and edx,31
|
||||
shr dl,1
|
||||
jnc @f
|
||||
bts edx,4
|
||||
@@:
|
||||
bt eax,5
|
||||
jnc @f
|
||||
bts edx,5
|
||||
@@:
|
||||
add edx,esi
|
||||
mov dl,byte[edx] ;dl - 4 сшЄэюх чэрўхэшх яюыєўхээюх шч Si
|
||||
|
||||
bt ecx,0
|
||||
jc @f
|
||||
;1) ecx - ўхЄэ√щ
|
||||
mov byte[edi],dl
|
||||
jmp .next
|
||||
@@:
|
||||
;2) ecx - эх ўхЄэ√щ
|
||||
shl dl,4
|
||||
or byte[edi],dl
|
||||
inc edi
|
||||
.next:
|
||||
|
||||
shr eax,6
|
||||
ror ebx,6
|
||||
mov edx,ebx
|
||||
and edx,0xfc000000
|
||||
or eax,edx
|
||||
;шыш 6 Ёрч: shr ebx,1 rcr eax,1
|
||||
add esi,64 ;яхЁхїюфшь эр ёыхфє■∙є■ ЄрсышЎє Si
|
||||
loop .cycle_0
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; яЁюЎхфєЁр ЇюЁьшЁютрэш ъы■ўхщ фы °шЇЁютрэш
|
||||
;intput:
|
||||
; key - тїюфэющ ъы■ў 64 сшЄ
|
||||
; key_b - 16 яЁхюсЁрчютрээ√ї ъы■ўхщ яю 48 сшЄ
|
||||
; ЁрчьхЁ ярь Єш key_b фюыцхэ с√Є№ эх ьхэ№°х 120 срщЄ
|
||||
align 4
|
||||
proc encryption_key, key:dword, key_b:dword
|
||||
pushad
|
||||
mov esi,[key]
|
||||
mov edi,[key_b]
|
||||
|
||||
;яхЁхёЄрты хь тїюфэющ ъы■ў яю ьрЄЁшЎх
|
||||
stdcall fun_convert_bits, esi, edi, oper_b, 56
|
||||
|
||||
;т ebx эрїюфшь C0
|
||||
mov ebx,dword[edi]
|
||||
and ebx,0xfffffff
|
||||
;т edx эрїюфшь D0
|
||||
mov edx,dword[edi+3]
|
||||
shr edx,4
|
||||
|
||||
;эрїюфшь 16 яюфъы■ўхщ, фышээющ яю 56 сшЄ
|
||||
;;;mov edi,[key_b]
|
||||
lea esi,[oper_r]
|
||||
.cycle_1:
|
||||
mov cl,byte[esi]
|
||||
cmp cl,0
|
||||
je .cycle_end
|
||||
shl ebx,cl
|
||||
btr ebx,28
|
||||
jnc @f
|
||||
or ebx,1
|
||||
@@:
|
||||
btr ebx,29
|
||||
jnc @f
|
||||
or ebx,2
|
||||
@@:
|
||||
shl edx,cl
|
||||
btr edx,28
|
||||
jnc @f
|
||||
or edx,1
|
||||
@@:
|
||||
btr edx,29
|
||||
jnc @f
|
||||
or edx,2
|
||||
@@:
|
||||
|
||||
mov dword[edi+3],0
|
||||
mov dword[edi],ebx
|
||||
shl edx,4
|
||||
or dword[edi+3],edx
|
||||
add edi,7
|
||||
shr edx,4
|
||||
inc esi
|
||||
|
||||
jmp .cycle_1
|
||||
.cycle_end:
|
||||
|
||||
;ёцрЄшх ъы■ўхщ ё 56 фю 48 сшЄ
|
||||
mov edi,[key_b]
|
||||
mov esi,edi
|
||||
add esi,112 ;112 - рфЁхё чр яЁхфхырьш 16*7
|
||||
|
||||
mov ecx,16
|
||||
cld
|
||||
@@:
|
||||
stdcall fun_convert_bits, edi, esi, oper_c, 48
|
||||
movsd
|
||||
movsw
|
||||
mov byte[edi],0 ;юсЁхчрхь 7-щ срщЄ
|
||||
inc edi
|
||||
sub esi,6
|
||||
loop @b
|
||||
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
oper_ip db 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,\
|
||||
61,53,45,37,29,21,13, 5,63,55,47,39,31,23,15, 7,\
|
||||
56,48,40,32,24,16, 8, 0,58,50,42,34,26,18,10, 2,\
|
||||
60,52,44,36,28,20,12, 4,62,54,46,38,30,22,14, 6
|
||||
|
||||
align 4
|
||||
oper_ip_inv db 39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,\
|
||||
37, 5,45,13,53,21,61,29,36, 4,44,12,52,20,60,28,\
|
||||
35, 3,43,11,51,19,59,27,34, 2,42,10,50,18,58,26,\
|
||||
33, 1,41, 9,49,17,57,25,32, 0,40, 8,48,16,56,24
|
||||
|
||||
align 4
|
||||
oper_e db 31,0,1,2,3,4,\
|
||||
3, 4, 5, 6, 7, 8,\
|
||||
7, 8, 9,10,11,12,\
|
||||
11,12,13,14,15,16,\
|
||||
15,16,17,18,19,20,\
|
||||
19,20,21,22,23,24,\
|
||||
23,24,25,26,27,28,\
|
||||
27,28,29,30,31, 0
|
||||
|
||||
align 4
|
||||
oper_b db 56,48,40,32,24,16,8,\
|
||||
0,57,49,41,33,25,17,\
|
||||
9, 1,58,50,42,34,26,\
|
||||
18,10, 2,59,51,43,35,\
|
||||
62,54,46,38,30,22,14,\
|
||||
6,61,53,45,37,29,21,\
|
||||
13, 5,60,52,44,36,28,\
|
||||
20,12, 4,27,19,11, 3
|
||||
|
||||
oper_r db 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,0
|
||||
|
||||
align 4
|
||||
oper_c db 13,16,10,23,0,4,\
|
||||
2,27,14, 5,20, 9,\
|
||||
22,18,11, 3,25, 7,\
|
||||
15, 6,26,19,12, 1,\
|
||||
40,51,30,36,46,54,\
|
||||
29,39,50,44,32,47,\
|
||||
43,48,38,55,33,52,\
|
||||
45,41,49,35,28,31
|
||||
|
||||
align 4
|
||||
oper_s db 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,\
|
||||
0,15, 7, 4,14, 2,13,1,10,6,12,11,9,5,3,8,\
|
||||
4, 1,14, 8,13, 6,2,11,15,12,9,7,3,10,5,0,\
|
||||
15,12, 8, 2, 4, 9,1,7,5,11,3,14,10,0,6,13,\
|
||||
15, 1, 8,14, 6,11,3,4,9,7,2,13,12,0,5,10,\
|
||||
3,13, 4, 7,15, 2,8,14,12,0,1,10,6,9,11,5,\
|
||||
0,14, 7,11,10, 4,13,1,5,8,12,6,9,3,2,15,\
|
||||
13, 8,10, 1, 3,15,4,2,11,6,7,12,0,5,14,9,\
|
||||
10, 0, 9,14, 6, 3,15,5,1,13,12,7,11,4,2,8,\
|
||||
13, 7, 0, 9, 3, 4,6,10,2,8,5,14,12,11,15,1,\
|
||||
13, 6, 4, 9, 8,15,3,0,11,1,2,12,5,10,14,7,\
|
||||
1,10,13, 0, 6, 9,8,7,4,15,14,3,11,5,2,12,\
|
||||
7,13,14, 3, 0, 6,9,10,1,2,8,5,11,12,4,15,\
|
||||
13, 8,11, 5, 6,15,0,3,4,7,2,12,1,10,14,9,\
|
||||
10, 6, 9, 0,12,11,7,13,15,1,3,14,5,2,8,4,\
|
||||
3,15, 0, 6,10, 1,13,8,9,4,5,11,12,7,2,14,\
|
||||
2,12, 4, 1, 7,10,11,6,8,5,3,15,13,0,14,9,\
|
||||
14,11, 2,12, 4, 7,13,1,5,0,15,10,3,9,8,6,\
|
||||
4, 2, 1,11,10,13,7,8,15,9,12,5,6,3,0,14,\
|
||||
11, 8,12, 7, 1,14,2,13,6,15,0,9,10,4,5,3,\
|
||||
12, 1,10,15, 9, 2,6,8,0,13,3,4,14,7,5,11,\
|
||||
10,15, 4, 2, 7,12,9,5,6,1,13,14,0,11,3,8,\
|
||||
9,14,15, 5, 2, 8,12,3,7,0,4,10,1,13,11,6,\
|
||||
4, 3, 2,12, 9, 5,15,10,11,14,1,7,6,0,8,13,\
|
||||
4,11, 2,14,15, 0,8,13,3,12,9,7,5,10,6,1,\
|
||||
13, 0,11, 7, 4, 9,1,10,14,3,5,12,2,15,8,6,\
|
||||
1, 4,11,13,12, 3,7,14,10,15,6,8,0,5,9,2,\
|
||||
6,11,13, 8, 1, 4,10,7,9,5,0,15,14,2,3,12,\
|
||||
13, 2, 8, 4, 6,15,11,1,10,9,3,14,5,0,12,7,\
|
||||
1,15,13, 8,10, 3,7,4,12,5,6,11,0,14,9,2,\
|
||||
7,11, 4, 1, 9,12,14,2,0,6,10,13,15,3,5,8,\
|
||||
2, 1,14, 7, 4,10,8,13,15,12,9,0,3,5,6,11
|
||||
|
||||
align 4
|
||||
oper_p db 15,6,19,20,28,11,27,16,\
|
||||
0,14,22,25, 4,17,30, 9,\
|
||||
1, 7,23,13,31,26, 2, 8,\
|
||||
18,12,29, 5,21,10, 3,24
|
||||
|
||||
|
||||
align 16
|
||||
EXPORTS:
|
||||
dd sz_des_encryption, des_encryption
|
||||
dd sz_des_decryption, des_decryption
|
||||
dd 0,0
|
||||
sz_des_encryption db 'des_encryption',0
|
||||
sz_des_decryption db 'des_decryption',0
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page Windows 1251 - Cyrillic
|
||||
|
||||
|
||||
;
|
||||
; сшсышюЄхър фы °шЇЁютрэш яю рыуюЁшЄьє DES
|
||||
;
|
||||
|
||||
format MS COFF
|
||||
public EXPORTS
|
||||
section '.flat' code readable align 16
|
||||
|
||||
include '../../../macros.inc'
|
||||
include '../../../proc32.inc'
|
||||
|
||||
;description:
|
||||
; ЇєэъЎш °шЇЁютрэш Їрщыют
|
||||
;input:
|
||||
; key - тїюфэющ ъы■ў 64 сшЄ
|
||||
; mem_keys - ярь Є№ фы ЇюЁьшЁютрэш ъы■ўхщ (ЁрчьхЁ 120 срщЄ)
|
||||
; block - єърчрЄхы№ эр яхЁт√щ °шЇЁєхь√щ 8 срщЄэ√щ сыюъ
|
||||
; b_count - ўшёыю сыюъют фы °шЇЁютрэш
|
||||
align 4
|
||||
proc des_encryption, key:dword, mem_keys:dword, block:dword, b_count:dword
|
||||
locals
|
||||
n dd ? ;яхЁхьхээр Ўшъыр
|
||||
endl
|
||||
pushad
|
||||
stdcall encryption_key, [key],[mem_keys]
|
||||
|
||||
;эрўры№эр яхЁхёЄрэютър ip
|
||||
mov ecx,[b_count]
|
||||
cmp ecx,1
|
||||
jl .end_funct
|
||||
mov edi,[block]
|
||||
cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
mov ecx,[b_count]
|
||||
mov esi,[block]
|
||||
;cld
|
||||
.cycle_3:
|
||||
mov dword[n],0
|
||||
.funct_f:
|
||||
mov edi,[mem_keys]
|
||||
add edi,112
|
||||
;яхЁхёЄрты хь сыюъ R0(32) яю ьрЄЁшЎх e
|
||||
stdcall fun_convert_bits, esi, edi, oper_e, 48
|
||||
|
||||
;edi - R0~e (48 сшЄ)
|
||||
;esi - L0R0 (64 сшЄр)
|
||||
stdcall fun_r0xorki_si, edi,[mem_keys],[n]
|
||||
|
||||
;edi - (R0~e xor ki)~Si (32 сшЄр)
|
||||
;яхЁхёЄрэютър p
|
||||
mov eax,edi
|
||||
add eax,4
|
||||
stdcall fun_convert_bits, edi, eax, oper_p, 32
|
||||
|
||||
;яш°хь R0 т L0, ш (L0 xor (R0~e xor ki)~Si) т R0
|
||||
mov edx,dword[esi+4]
|
||||
mov ebx,dword[esi]
|
||||
xor edx,dword[eax]
|
||||
mov dword[esi],edx
|
||||
mov dword[esi+4],ebx
|
||||
|
||||
inc dword[n]
|
||||
cmp dword[n],16
|
||||
jl .funct_f
|
||||
|
||||
add esi,8 ;яхЁхїюф эр ёыхфє■∙шщ 64 сшЄэ√щ °шЇЁєхь√щ сыюъ
|
||||
loop .cycle_3
|
||||
|
||||
;ъюэхўэр яхЁхёЄрэютър ip_inv
|
||||
mov ecx,[b_count]
|
||||
mov edi,[block]
|
||||
;cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
.end_funct:
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ЇєэъЎш Ёрё°шЇЁютрэш Їрщыют
|
||||
;input:
|
||||
; key - тїюфэющ ъы■ў 64 сшЄ
|
||||
; mem_keys - ярь Є№ фы ЇюЁьшЁютрэш ъы■ўхщ (ЁрчьхЁ 120 срщЄ)
|
||||
; block - єърчрЄхы№ эр яхЁт√щ Ёрё°шЇЁют√трхь√щ 8 срщЄэ√щ сыюъ
|
||||
; b_count - ўшёыю сыюъют фы Ёрё°шЇЁютрэш
|
||||
align 4
|
||||
proc des_decryption, key:dword, mem_keys:dword, block:dword, b_count:dword
|
||||
locals
|
||||
n dd ? ;яхЁхьхээр Ўшъыр
|
||||
endl
|
||||
pushad
|
||||
stdcall encryption_key, [key],[mem_keys]
|
||||
|
||||
;эрўры№эр яхЁхёЄрэютър ip
|
||||
mov ecx,[b_count]
|
||||
cmp ecx,1
|
||||
jl .end_funct
|
||||
mov edi,[block]
|
||||
cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
mov ecx,[b_count]
|
||||
mov esi,[block]
|
||||
;cld
|
||||
.cycle_3:
|
||||
mov dword[n],16
|
||||
.funct_f:
|
||||
dec dword[n]
|
||||
mov edi,[mem_keys]
|
||||
add edi,112
|
||||
;яхЁхёЄрты хь сыюъ L0(32) яю ьрЄЁшЎх e
|
||||
add esi,4
|
||||
stdcall fun_convert_bits, esi, edi, oper_e, 48
|
||||
sub esi,4
|
||||
|
||||
;edi - L0~e (48 сшЄ)
|
||||
;esi - L0R0 (64 сшЄр)
|
||||
stdcall fun_r0xorki_si, edi,[mem_keys],[n]
|
||||
|
||||
;edi - (L0~e xor ki)~Si (32 сшЄр)
|
||||
;яхЁхёЄрэютър p
|
||||
mov eax,edi
|
||||
add eax,4
|
||||
stdcall fun_convert_bits, edi, eax, oper_p, 32
|
||||
|
||||
;яш°хь L0 т R0, ш (R0 xor (L0~e xor ki)~Si) т L0
|
||||
mov edx,dword[esi]
|
||||
mov ebx,dword[esi+4]
|
||||
xor edx,dword[eax]
|
||||
mov dword[esi+4],edx
|
||||
mov dword[esi],ebx
|
||||
|
||||
cmp dword[n],0
|
||||
jg .funct_f
|
||||
|
||||
add esi,8 ;яхЁхїюф эр ёыхфє■∙шщ 64 сшЄэ√щ °шЇЁєхь√щ сыюъ
|
||||
loop .cycle_3
|
||||
|
||||
;ъюэхўэр яхЁхёЄрэютър ip_inv
|
||||
mov ecx,[b_count]
|
||||
mov edi,[block]
|
||||
;cld
|
||||
@@:
|
||||
mov esi,[mem_keys]
|
||||
add esi,112
|
||||
stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64
|
||||
movsd
|
||||
movsd
|
||||
loop @b
|
||||
|
||||
.end_funct:
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; яхЁхёЄрэютър сшЄют яю єър∙рээющ ьрЄЁшЎх
|
||||
;input:
|
||||
; m_inp - ярь Є№ ё шёїюфэ√ьш фрээ√ьш
|
||||
; m_out - ярь Є№ фы яЁхюсЁрчютрээ√ї фрээ√ї
|
||||
; c_tbl - ЄрсышЎр фы яхЁхёЄрэютъш
|
||||
; tbl_s - ЁрчьхЁ ЄрсышЎ√ фы яхЁхёЄрэютъш
|
||||
align 4
|
||||
proc fun_convert_bits, m_inp:dword, m_out:dword, c_tbl:dword, tbl_s:dword
|
||||
pushad
|
||||
mov esi,[m_inp]
|
||||
mov edi,[m_out]
|
||||
mov eax,[c_tbl]
|
||||
mov ecx,[tbl_s]
|
||||
xor edx,edx
|
||||
mov dword[edi],edx
|
||||
cmp ecx,32
|
||||
jle @f
|
||||
mov dword[edi+4],edx
|
||||
@@:
|
||||
inc edx
|
||||
|
||||
cld
|
||||
.cycle_0:
|
||||
movzx ebx,byte[eax]
|
||||
btr ebx,5
|
||||
jc .tbl_h
|
||||
|
||||
bt dword[esi],ebx
|
||||
jnc @f
|
||||
or dword[edi],edx
|
||||
@@:
|
||||
jmp @f
|
||||
.tbl_h:
|
||||
bt dword[esi+4],ebx
|
||||
jnc @f
|
||||
or dword[edi],edx
|
||||
@@:
|
||||
|
||||
rol edx,1
|
||||
jnc @f
|
||||
add edi,4
|
||||
@@:
|
||||
inc eax
|
||||
loop .cycle_0
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ёыюцхэшх R0(48) xor Ki(48) ш 8 яЁхюсЁрчютрэшщ яю Si
|
||||
;intput:
|
||||
; data_r0 - R0 (48 сшЄ)
|
||||
; data_key - єърчрЄхы№ эр ьрёёшт ъы■ўхщ (яю 48 сшЄ)
|
||||
; n - эюьхЁ ъы■ўр т ьрёёштх
|
||||
;output:
|
||||
; data_r0 - (R0 xor Ki)~Si (32 сшЄр)
|
||||
align 4
|
||||
proc fun_r0xorki_si, data_r0:dword, data_key:dword, n:dword
|
||||
pushad
|
||||
mov edi,[data_r0]
|
||||
mov eax,[n]
|
||||
imul eax,7 ;56 сшЄ - ЁрёёЄю эшх ьхцфє ъы■ўрьш (ёрьш ъы■ўш 48 сшЄ)
|
||||
add eax,[data_key]
|
||||
|
||||
mov ebx,dword[eax]
|
||||
xor dword[edi],ebx
|
||||
mov ebx,dword[eax+4] ;mov bx,word[eax+4]
|
||||
xor dword[edi+4],ebx ;xor word[edi+4],bx
|
||||
|
||||
;edi - єърчрЄхы№ эр чэрўхэшх R0 xor Ki
|
||||
mov eax,dword[edi]
|
||||
mov ebx,dword[edi+4]
|
||||
;bx:eax - 48 сшЄ чэрўхэшх R0 xor Ki
|
||||
lea esi,[oper_s] ;т√сшЁрхь ЄрсышЎє S0
|
||||
mov ecx,8
|
||||
.cycle_0:
|
||||
mov dl,al
|
||||
and edx,31
|
||||
shr dl,1
|
||||
jnc @f
|
||||
bts edx,4
|
||||
@@:
|
||||
bt eax,5
|
||||
jnc @f
|
||||
bts edx,5
|
||||
@@:
|
||||
add edx,esi
|
||||
mov dl,byte[edx] ;dl - 4 сшЄэюх чэрўхэшх яюыєўхээюх шч Si
|
||||
|
||||
bt ecx,0
|
||||
jc @f
|
||||
;1) ecx - ўхЄэ√щ
|
||||
mov byte[edi],dl
|
||||
jmp .next
|
||||
@@:
|
||||
;2) ecx - эх ўхЄэ√щ
|
||||
shl dl,4
|
||||
or byte[edi],dl
|
||||
inc edi
|
||||
.next:
|
||||
|
||||
shr eax,6
|
||||
ror ebx,6
|
||||
mov edx,ebx
|
||||
and edx,0xfc000000
|
||||
or eax,edx
|
||||
;шыш 6 Ёрч: shr ebx,1 rcr eax,1
|
||||
add esi,64 ;яхЁхїюфшь эр ёыхфє■∙є■ ЄрсышЎє Si
|
||||
loop .cycle_0
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; яЁюЎхфєЁр ЇюЁьшЁютрэш ъы■ўхщ фы °шЇЁютрэш
|
||||
;intput:
|
||||
; key - тїюфэющ ъы■ў 64 сшЄ
|
||||
; key_b - 16 яЁхюсЁрчютрээ√ї ъы■ўхщ яю 48 сшЄ
|
||||
; ЁрчьхЁ ярь Єш key_b фюыцхэ с√Є№ эх ьхэ№°х 120 срщЄ
|
||||
align 4
|
||||
proc encryption_key, key:dword, key_b:dword
|
||||
pushad
|
||||
mov esi,[key]
|
||||
mov edi,[key_b]
|
||||
|
||||
;яхЁхёЄрты хь тїюфэющ ъы■ў яю ьрЄЁшЎх
|
||||
stdcall fun_convert_bits, esi, edi, oper_b, 56
|
||||
|
||||
;т ebx эрїюфшь C0
|
||||
mov ebx,dword[edi]
|
||||
and ebx,0xfffffff
|
||||
;т edx эрїюфшь D0
|
||||
mov edx,dword[edi+3]
|
||||
shr edx,4
|
||||
|
||||
;эрїюфшь 16 яюфъы■ўхщ, фышээющ яю 56 сшЄ
|
||||
;;;mov edi,[key_b]
|
||||
lea esi,[oper_r]
|
||||
.cycle_1:
|
||||
mov cl,byte[esi]
|
||||
cmp cl,0
|
||||
je .cycle_end
|
||||
shl ebx,cl
|
||||
btr ebx,28
|
||||
jnc @f
|
||||
or ebx,1
|
||||
@@:
|
||||
btr ebx,29
|
||||
jnc @f
|
||||
or ebx,2
|
||||
@@:
|
||||
shl edx,cl
|
||||
btr edx,28
|
||||
jnc @f
|
||||
or edx,1
|
||||
@@:
|
||||
btr edx,29
|
||||
jnc @f
|
||||
or edx,2
|
||||
@@:
|
||||
|
||||
mov dword[edi+3],0
|
||||
mov dword[edi],ebx
|
||||
shl edx,4
|
||||
or dword[edi+3],edx
|
||||
add edi,7
|
||||
shr edx,4
|
||||
inc esi
|
||||
|
||||
jmp .cycle_1
|
||||
.cycle_end:
|
||||
|
||||
;ёцрЄшх ъы■ўхщ ё 56 фю 48 сшЄ
|
||||
mov edi,[key_b]
|
||||
mov esi,edi
|
||||
add esi,112 ;112 - рфЁхё чр яЁхфхырьш 16*7
|
||||
|
||||
mov ecx,16
|
||||
cld
|
||||
@@:
|
||||
stdcall fun_convert_bits, edi, esi, oper_c, 48
|
||||
movsd
|
||||
movsw
|
||||
mov byte[edi],0 ;юсЁхчрхь 7-щ срщЄ
|
||||
inc edi
|
||||
sub esi,6
|
||||
loop @b
|
||||
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
oper_ip db 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,\
|
||||
61,53,45,37,29,21,13, 5,63,55,47,39,31,23,15, 7,\
|
||||
56,48,40,32,24,16, 8, 0,58,50,42,34,26,18,10, 2,\
|
||||
60,52,44,36,28,20,12, 4,62,54,46,38,30,22,14, 6
|
||||
|
||||
align 4
|
||||
oper_ip_inv db 39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,\
|
||||
37, 5,45,13,53,21,61,29,36, 4,44,12,52,20,60,28,\
|
||||
35, 3,43,11,51,19,59,27,34, 2,42,10,50,18,58,26,\
|
||||
33, 1,41, 9,49,17,57,25,32, 0,40, 8,48,16,56,24
|
||||
|
||||
align 4
|
||||
oper_e db 31,0,1,2,3,4,\
|
||||
3, 4, 5, 6, 7, 8,\
|
||||
7, 8, 9,10,11,12,\
|
||||
11,12,13,14,15,16,\
|
||||
15,16,17,18,19,20,\
|
||||
19,20,21,22,23,24,\
|
||||
23,24,25,26,27,28,\
|
||||
27,28,29,30,31, 0
|
||||
|
||||
align 4
|
||||
oper_b db 56,48,40,32,24,16,8,\
|
||||
0,57,49,41,33,25,17,\
|
||||
9, 1,58,50,42,34,26,\
|
||||
18,10, 2,59,51,43,35,\
|
||||
62,54,46,38,30,22,14,\
|
||||
6,61,53,45,37,29,21,\
|
||||
13, 5,60,52,44,36,28,\
|
||||
20,12, 4,27,19,11, 3
|
||||
|
||||
oper_r db 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,0
|
||||
|
||||
align 4
|
||||
oper_c db 13,16,10,23,0,4,\
|
||||
2,27,14, 5,20, 9,\
|
||||
22,18,11, 3,25, 7,\
|
||||
15, 6,26,19,12, 1,\
|
||||
40,51,30,36,46,54,\
|
||||
29,39,50,44,32,47,\
|
||||
43,48,38,55,33,52,\
|
||||
45,41,49,35,28,31
|
||||
|
||||
align 4
|
||||
oper_s db 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,\
|
||||
0,15, 7, 4,14, 2,13,1,10,6,12,11,9,5,3,8,\
|
||||
4, 1,14, 8,13, 6,2,11,15,12,9,7,3,10,5,0,\
|
||||
15,12, 8, 2, 4, 9,1,7,5,11,3,14,10,0,6,13,\
|
||||
15, 1, 8,14, 6,11,3,4,9,7,2,13,12,0,5,10,\
|
||||
3,13, 4, 7,15, 2,8,14,12,0,1,10,6,9,11,5,\
|
||||
0,14, 7,11,10, 4,13,1,5,8,12,6,9,3,2,15,\
|
||||
13, 8,10, 1, 3,15,4,2,11,6,7,12,0,5,14,9,\
|
||||
10, 0, 9,14, 6, 3,15,5,1,13,12,7,11,4,2,8,\
|
||||
13, 7, 0, 9, 3, 4,6,10,2,8,5,14,12,11,15,1,\
|
||||
13, 6, 4, 9, 8,15,3,0,11,1,2,12,5,10,14,7,\
|
||||
1,10,13, 0, 6, 9,8,7,4,15,14,3,11,5,2,12,\
|
||||
7,13,14, 3, 0, 6,9,10,1,2,8,5,11,12,4,15,\
|
||||
13, 8,11, 5, 6,15,0,3,4,7,2,12,1,10,14,9,\
|
||||
10, 6, 9, 0,12,11,7,13,15,1,3,14,5,2,8,4,\
|
||||
3,15, 0, 6,10, 1,13,8,9,4,5,11,12,7,2,14,\
|
||||
2,12, 4, 1, 7,10,11,6,8,5,3,15,13,0,14,9,\
|
||||
14,11, 2,12, 4, 7,13,1,5,0,15,10,3,9,8,6,\
|
||||
4, 2, 1,11,10,13,7,8,15,9,12,5,6,3,0,14,\
|
||||
11, 8,12, 7, 1,14,2,13,6,15,0,9,10,4,5,3,\
|
||||
12, 1,10,15, 9, 2,6,8,0,13,3,4,14,7,5,11,\
|
||||
10,15, 4, 2, 7,12,9,5,6,1,13,14,0,11,3,8,\
|
||||
9,14,15, 5, 2, 8,12,3,7,0,4,10,1,13,11,6,\
|
||||
4, 3, 2,12, 9, 5,15,10,11,14,1,7,6,0,8,13,\
|
||||
4,11, 2,14,15, 0,8,13,3,12,9,7,5,10,6,1,\
|
||||
13, 0,11, 7, 4, 9,1,10,14,3,5,12,2,15,8,6,\
|
||||
1, 4,11,13,12, 3,7,14,10,15,6,8,0,5,9,2,\
|
||||
6,11,13, 8, 1, 4,10,7,9,5,0,15,14,2,3,12,\
|
||||
13, 2, 8, 4, 6,15,11,1,10,9,3,14,5,0,12,7,\
|
||||
1,15,13, 8,10, 3,7,4,12,5,6,11,0,14,9,2,\
|
||||
7,11, 4, 1, 9,12,14,2,0,6,10,13,15,3,5,8,\
|
||||
2, 1,14, 7, 4,10,8,13,15,12,9,0,3,5,6,11
|
||||
|
||||
align 4
|
||||
oper_p db 15,6,19,20,28,11,27,16,\
|
||||
0,14,22,25, 4,17,30, 9,\
|
||||
1, 7,23,13,31,26, 2, 8,\
|
||||
18,12,29, 5,21,10, 3,24
|
||||
|
||||
|
||||
align 16
|
||||
EXPORTS:
|
||||
dd sz_des_encryption, des_encryption
|
||||
dd sz_des_decryption, des_decryption
|
||||
dd 0,0
|
||||
sz_des_encryption db 'des_encryption',0
|
||||
sz_des_decryption db 'des_decryption',0
|
||||
@@ -3,6 +3,6 @@ if not exist bin mkdir bin
|
||||
@kpack bin\crypt_files.kex
|
||||
if not exist bin\toolbar.png @copy toolbar.png bin\toolbar.png
|
||||
if not exist bin\font8x9.bmp @copy ..\..\..\..\fs\kfar\font8x9.bmp bin\font8x9.bmp
|
||||
@fasm.exe -m 16384 ..\trunk\crypt_des.asm bin\crypt_des.obj
|
||||
@fasm.exe -m 16384 ..\crypt_des.asm bin\crypt_des.obj
|
||||
@kpack bin\crypt_des.obj
|
||||
pause
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -3,6 +3,6 @@ if not exist bin mkdir bin
|
||||
@kpack bin\viev_exif.kex
|
||||
if not exist bin\toolbar.png @copy toolbar.png bin\toolbar.png
|
||||
if not exist bin\font8x9.bmp @copy ..\..\..\..\fs\kfar\font8x9.bmp bin\font8x9.bmp
|
||||
@fasm.exe -m 16384 ..\trunk\exif.asm bin\exif.obj
|
||||
@fasm.exe -m 16384 ..\exif.asm bin\exif.obj
|
||||
@kpack bin\exif.obj
|
||||
pause
|
||||
+1742
-1737
File diff suppressed because it is too large.
Load diff
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+4
-4
@@ -42,10 +42,10 @@ use32 ;
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0 ; указатель на строку с параметрами.
|
||||
dd way_of_ini
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../box_lib/box_lib.mac'
|
||||
include '../../../macros.inc'
|
||||
include '../../../KOSfuncs.inc'
|
||||
include '../../../load_lib.mac'
|
||||
include '../box_lib/box_lib.mac'
|
||||
@use_library ;use load lib macros
|
||||
start:
|
||||
;universal load library/librarys
|
||||
+447
-441
@@ -1,441 +1,447 @@
|
||||
; Copyright (c) 2009, <Lrz>
|
||||
; 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 Alexey Teplov nickname <Lrz> ''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.
|
||||
;*****************************************************************************
|
||||
|
||||
;;;;;;;;;;;;;;;;;;
|
||||
|
||||
format MS COFF
|
||||
|
||||
public EXPORTS
|
||||
|
||||
section '.flat' code readable align 16
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Get info about
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
include '../../../../macros.inc'
|
||||
align 4
|
||||
initialization_font:
|
||||
; esp+0 = dd back
|
||||
; чряюыэ хь ьрёёшт - ёЄЁєъЄє фы яюыєўхэш ъюы-тр Їрщыют
|
||||
|
||||
pushad
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov [number_function],eax
|
||||
;structure is completed
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;IF ERROR FT then exit
|
||||
test eax,eax
|
||||
jnz .exit
|
||||
;IF ERROR folder is not found then exit
|
||||
test ebx,ebx
|
||||
mov eax,ebx
|
||||
jnz .exit
|
||||
|
||||
;Get quantity files
|
||||
mov eax,[buffer_32.quantity_files]
|
||||
imul eax,304
|
||||
add eax,32 ; ??
|
||||
push eax ;save eax т eax ЁрчьхЁ эєцэющ эрь ярь Єш т срщЄрї
|
||||
;init memory
|
||||
mov eax,68
|
||||
mov ebx,11
|
||||
mcall
|
||||
test eax,eax
|
||||
jz .exit
|
||||
inc ebx ;т√фхышЄ№ сыюъ т ecx срщЄ
|
||||
|
||||
pop ecx
|
||||
mov eax,68
|
||||
mcall
|
||||
mov dword [fulder_array_point],eax ;save point for memory's fulder
|
||||
;т eax єърчрЄхы№ эр сыюъ
|
||||
mov [buffer_read_d],eax ;point to new array
|
||||
mov eax,[buffer_32.quantity_files]
|
||||
mov [read_block],eax
|
||||
;get in buffer info of files and sub dir current dir
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;яюыєўшыш шэЇюЁьрЎш■ ю Їрщырї.
|
||||
mov ebp, dword [buffer_read_d] ;point to structure
|
||||
mov ecx, dword [ebp+4] ;ъюы-тю сыюъют ┴─┬╩
|
||||
mov dword [save_ecx],ecx
|
||||
add ebp, 32 ;ёьх∙рхьё фю ┴─┬╩
|
||||
mov dword [save_ebp],ebp
|
||||
cld ;єёЄрэютър Їырур эряЁртыхэш
|
||||
align 4
|
||||
.start_loop:
|
||||
push ecx
|
||||
lea edi,[ebp+0x28] ;т edi єърчрЄхы№ эр эрўрыю шьхэш.
|
||||
xor eax,eax
|
||||
mov ecx,263
|
||||
repne scasb ;эрщфхь ъюэхЎ ёЄЁюъш
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
sub edi,5 ;.ksf,0
|
||||
lea esi,[name_font]
|
||||
mov eax,dword[edi]
|
||||
or eax,0x20202000 ; ёфхырхь Ёрё°шЁхэшх ёЄЁюўэ√ьш сєътрьш.
|
||||
cmp eax,dword[esi]
|
||||
jnz @f
|
||||
|
||||
;;;;;;;; єЁр ¤Єю эр° Їрщы Є.х. эр° °ЁшЇЄ ь√ эр°ыш эєцэ√щ Їрщышъ ))
|
||||
;ЄхяхЁ№ эєцэю Єюўэю єсхфшЄ№ё ўЄю ¤Єю эр° ш Єюы№ъю эр° Їрщышъ
|
||||
;чруЁєчшь чруюыютюъ Їрщыр ш єчэрхь хую ЁрчьхЁ уышЇр.
|
||||
|
||||
call alloc_mem ; т√фхышь ючє ётюшї яхЁхьхээ√ї
|
||||
; ёхщўрё эрь эєцэю ёЇюЁьшЁютрЄ№ шь Їрщыр ё яюыэ√ь яєЄхь
|
||||
mov eax,dword [alloc_memory_point]
|
||||
lea edi,dword [eax+4]
|
||||
lea esi,[name_fulder]
|
||||
mov ecx,name_fuld_end
|
||||
rep movsb ;яхЁхэюёшь яєЄ№
|
||||
mov al,'/'
|
||||
stosb
|
||||
lea esi,[ebp+0x28] ;т esi єърчрЄхы№ эр эрўрыю шьхэш.
|
||||
align 4
|
||||
.loop_b:
|
||||
lodsb
|
||||
stosb
|
||||
test al,al
|
||||
jnz .loop_b
|
||||
|
||||
; mov edi,name_of_file ; [ebp+0x28] ;т edi єърчрЄхы№ эр эрўрыю шьхэш.
|
||||
;get in buffer info above own file
|
||||
xor eax,eax
|
||||
mov dword [number_function],eax
|
||||
mov dword [index_start_block],eax ;яючшЎш т Їрщых фы ўЄхэш фрээ√ї
|
||||
mov dword [flags_],eax ;ёЄрЁ°р яючшЎш фы ўЄхэш фрээ√ї
|
||||
mov dword [read_block],8 ;ёъюы№ъю срщЄ ўшЄрЄ№ эрь эєцэю 8 срщЄ
|
||||
mov dword [buffer_read_d],file_buffer ; єърчрЄхы№ эр сєЇхЁ ъєфр сєфєЄ чряшёрэ√ фрээ√х
|
||||
|
||||
mov eax,dword [alloc_memory_point]
|
||||
lea edi,dword [eax+4]
|
||||
mov dword [offset_to_string],edi
|
||||
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;;;;;;;;;;;;;;;; яЁютхЁшь ЇюЁьрЄ чруюыютър
|
||||
mov eax,ebx
|
||||
mov eax,dword [file_buffer]
|
||||
mov ebx,dword [type_fnt]
|
||||
cmp eax,ebx
|
||||
jnz @f
|
||||
|
||||
;;;;;;; юЄышўэю ёхщўрё яЁютхЁшыш ўЄю чруюыютюъ шьхээю ЄюЄ ъюЄюЁ√щ эрь эєцхэ
|
||||
; ёхщўрё эєцэю яхЁхЁрёяЁхфхышЄ№ сыюъш Є.х. яю ьхЁх эрїюцфхэш сєфхь яхЁхэюёшЄ№ сыюъш
|
||||
; т эрўрыю сєЇхЁр
|
||||
|
||||
mov dword [save_point_nt],ebp
|
||||
pop ecx
|
||||
xor eax,eax
|
||||
jmp .exit
|
||||
|
||||
align 4
|
||||
@@: pop ecx
|
||||
add ebp,304
|
||||
dec ecx
|
||||
jnz .start_loop
|
||||
; loop .start_loop
|
||||
or eax,-1
|
||||
;;;;;;;; яЁю°ышё№ - тёх шэЄхЁхёє∙■∙шх °ЁшЇЄ√ яхЁхьхёЄшыш т эрўрыю сыюър.
|
||||
|
||||
align 4
|
||||
.exit: mov dword [esp+28],eax
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
align 4
|
||||
get_font:
|
||||
; яюшёъ т ьрёёштх °ЁшЇЄр яЁш ёютярфхэшш єcыютшщ чруЁєчър °ЁшЇЄр
|
||||
; esp+4 = dd width font shl 16 +hight font
|
||||
; esp+0 = dd back
|
||||
;pop eax
|
||||
; pop dword [font_x_y]
|
||||
;push eax
|
||||
pushad
|
||||
mov eax,dword [esp+32+4]
|
||||
mov dword [font_x_y],eax
|
||||
xor eax,eax
|
||||
mov dword [number_function],eax
|
||||
mov dword [index_start_block],eax ;яючшЎш т Їрщых фы ўЄхэш фрээ√ї
|
||||
mov dword [flags_],eax ;ёЄрЁ°р яючшЎш фы ўЄхэш фрээ√ї
|
||||
mov dword [read_block],8 ;ёъюы№ъю срщЄ ўшЄрЄ№ эрь эєцэю 8 срщЄ
|
||||
mov dword [buffer_read_d],file_buffer ; єърчрЄхы№ эр сєЇхЁ ъєфр сєфєЄ чряшёрэ√ фрээ√х
|
||||
|
||||
mov eax,dword [alloc_memory_point]
|
||||
lea edi,dword [eax+4]
|
||||
mov dword [offset_to_string],edi
|
||||
|
||||
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;;;;;;;;;;;;;;;; яЁютхЁшь ЇюЁьрЄ чруюыютър
|
||||
mov eax,ebx
|
||||
mov eax,dword [file_buffer]
|
||||
mov ebx,dword [type_fnt]
|
||||
cmp eax,ebx
|
||||
|
||||
mov ecx,dword [file_buffer.font_size]
|
||||
mov edx,dword [font_x_y]
|
||||
cmp ecx,edx
|
||||
|
||||
mov ecx, 4096;dword [ebp+32] ;ЁрчьхЁ Їрщыр фю 4294967296 срщЄ Є.х. 4 ├с
|
||||
|
||||
mov dword [read_block],ecx
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mcall
|
||||
|
||||
mov dword [font_array_point],eax ;save point to array
|
||||
mov dword [buffer_read_d],eax
|
||||
|
||||
;load font
|
||||
mov ebx,dword struct_f_info
|
||||
mov eax,70
|
||||
mcall
|
||||
test eax,eax
|
||||
jnz .exit
|
||||
|
||||
lea eax,[buffer_read_d]
|
||||
mov eax,dword [eax]
|
||||
mov ebx,dword [eax+8]
|
||||
add eax,ebx
|
||||
; add eax,dword [eax+8]
|
||||
; add eax,dword [buffer_read_d]
|
||||
mov dword [font_array_data],eax
|
||||
xor eax,eax
|
||||
jmp .ok
|
||||
|
||||
;here error file system
|
||||
align 4
|
||||
.exit:
|
||||
or eax,-1
|
||||
align 4
|
||||
.ok: mov dword [esp+28],eax ;тхЁэхь ю°шсъє
|
||||
popad
|
||||
ret 4
|
||||
|
||||
|
||||
; яюшёъ т√тюф ёЄюЁюўъш яю ёшьтюы№эю ёЇюЁшЁютрээюую °ЁшЇЄюь ЄхъёЄр
|
||||
; esp+12= dd x shl 16 + y x- ъююЁфшэрЄр яю ╒, y - ъююЁфшэрЄр яю Y
|
||||
; esp+8 = dd point to color of background and font
|
||||
; esp+4 = dd point to ASCIIZ
|
||||
; esp+0 = dd back
|
||||
align 4
|
||||
font_draw_on_string:
|
||||
pushad
|
||||
|
||||
mov esi,dword [esp+4+32] ;ASCIIZ
|
||||
mov edx,dword [esp+12+32] ; x shl 16 +y
|
||||
mov ecx,dword [font_x_y] ;ЁрчьхЁ уышЇр x shl 16 +y
|
||||
mov edi,dword [esp+8+32] ;єърчрЄхы№ эр ярышЄЁє шч ЎтхЄр ш Їюэр
|
||||
xor ebp,ebp ;ёь 65 ЇєэъЎш■ ))
|
||||
cld
|
||||
align 4
|
||||
@@: ;pushad
|
||||
xor eax,eax
|
||||
lodsb
|
||||
test al,al
|
||||
jz .return
|
||||
shl eax,4 ;єьэюцрхь эр 16 Є.ъ. ¤Єю т√ёюЄр уышЇр
|
||||
|
||||
mov ebx,dword [font_array_data] ; ЄєЄ Ёрёяюыюур■Єё уышЇ√ ёшьтюыют
|
||||
add ebx,eax
|
||||
push esi
|
||||
mov esi,1
|
||||
mov eax,65
|
||||
mcall
|
||||
pop esi
|
||||
add edx,8 shl 16 ;ёыхфє■∙шщ ёшьтюы °шЁшэр ёшьтюыр = 8 Єюўърь
|
||||
jmp @b
|
||||
|
||||
align 4
|
||||
.return:
|
||||
popad
|
||||
ret 12
|
||||
|
||||
|
||||
align 4
|
||||
; esp+4 = dd point to color of background and font
|
||||
show_all_glif:
|
||||
pushad
|
||||
|
||||
mov edx,10 shl 16+20 ;dword [esp+12+32] ; x shl 16 +y
|
||||
mov ecx,128 shl 16 +256;dword [font_x_y] ;ЁрчьхЁ уышЇр x shl 16 +y
|
||||
mov edi,dword [esp+4+32] ;єърчрЄхы№ эр ярышЄЁє шч ЎтхЄр ш Їюэр
|
||||
xor ebp,ebp ;ёь 65 ЇєэъЎш■ ))
|
||||
|
||||
align 4
|
||||
@@:
|
||||
mov ebx,dword [font_array_data] ; ЄєЄ Ёрёяюыюур■Єё уышЇ√ ёшьтюыют
|
||||
mov esi,1
|
||||
mov eax,65
|
||||
mcall
|
||||
popad
|
||||
ret 4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
free_fulder_info:
|
||||
;юётюсюфшЄ№ ярь Є№ т√фхыхэє■ фы яюыєўхэш сыюъют ┴─┬╩
|
||||
pushad
|
||||
mov ecx, dword [fulder_array_point]
|
||||
mov eax,68
|
||||
mov ebx,13
|
||||
mcall
|
||||
test eax,eax
|
||||
; jnz @f
|
||||
mov dword [esp+28],eax ;тхЁэхь ю°шсъє
|
||||
;align 4
|
||||
;@@:
|
||||
popad
|
||||
ret
|
||||
align 4
|
||||
free_font:
|
||||
;юётюсюфшЄ№ ярь Є№ т√фхыхэє■ фы яюыєўхэш сыюъют ┴─┬╩
|
||||
pushad
|
||||
mov ecx, dword [font_array_point]
|
||||
mov eax,68
|
||||
mov ebx,13
|
||||
mcall
|
||||
test eax,eax
|
||||
; jnz @f
|
||||
mov dword [esp+28],eax ;тхЁэхь ю°шсъє
|
||||
;align 4
|
||||
;@@:
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
; alloc mem get 4 Kb for own data
|
||||
alloc_mem:
|
||||
pushad
|
||||
mov eax, dword [alloc_memory_point]
|
||||
test eax,eax
|
||||
jnz .mem_allocating
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mov ecx,4096
|
||||
mcall
|
||||
mov dword [alloc_memory_point],eax ; яЁш яхЁтюь тїюцфхэшш т√фхы хь 4 ъс ╬╟╙ ш ёюїЁрэ хь єърчрЄхы№
|
||||
mov dword [eax],-1
|
||||
popad
|
||||
ret
|
||||
align 4
|
||||
.mem_allocating:
|
||||
mov ebp, dword [eax]
|
||||
mov eax,ebp
|
||||
cmp eax, -1
|
||||
jnz .mem_allocating
|
||||
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mov ecx,4096
|
||||
mcall
|
||||
mov dword [ebp],eax ; яЁш яхЁтюь тїюцфхэшш т√фхы хь 4 ъс ╬╟╙ ш ёюїЁрэ хь єърчрЄхы№
|
||||
mov dword [ebp],-1
|
||||
popad
|
||||
ret
|
||||
|
||||
align 16
|
||||
EXPORTS:
|
||||
|
||||
dd sz_initialization_font, initialization_font
|
||||
dd sz_get_font, get_font
|
||||
dd sz_free_fulder_info, free_fulder_info
|
||||
dd sz_free_font, free_font
|
||||
dd sz_font_draw_on_string, font_draw_on_string
|
||||
dd sz_show_all_glif, show_all_glif
|
||||
; dd szVersion_ch, 0x00000001
|
||||
; dd sz_option_box_draw, option_box_draw
|
||||
; dd sz_option_box_mouse, option_box_mouse
|
||||
dd szVersion_fn, 0x00000001
|
||||
dd 0,0
|
||||
|
||||
sz_initialization_font db 'initialization_font',0
|
||||
sz_get_font db 'get_font',0
|
||||
sz_free_fulder_info db 'free_fulder_info',0
|
||||
sz_free_font db 'free_font',0
|
||||
sz_font_draw_on_string db 'font_draw_on_string',0
|
||||
sz_show_all_glif db 'show_all_glif',0
|
||||
;sz_check_box_mouse db 'check_box_mouse',0
|
||||
;szVersion_ch db 'version_ch',0
|
||||
;sz_option_box_draw db 'option_box_draw',0
|
||||
;sz_option_box_mouse db 'option_box_mouse',0
|
||||
szVersion_fn db 'version_fn',0
|
||||
|
||||
;;;;;;;;;;;
|
||||
;;Data
|
||||
;;;;;;;;;;;
|
||||
align 4
|
||||
;buffer_font file 'font_8x16.fon' ;°ЁшЇЄ ъюЄюЁ√ь сєфхь т√тюфшЄ№ raw ЇюЁьрЄ 1bpp
|
||||
save_ecx dd 0x0
|
||||
;buffer_font file 'font01.ksf' ;°ЁшЇЄ ъюЄюЁ√ь сєфхь т√тюфшЄ№ raw ЇюЁьрЄ 1bpp
|
||||
alloc_memory_point dd 0x0 ; point to mem block in RAM 4096-4
|
||||
;ёЄЁєъЄєЁр Єрър т эрўрых т√фхыхэюую сыюър Ёрчьх∙рхЄё єърчрЄхы№ эр фЁєующ т√фхыыэ√щ сыюъ т 4096-4, хёыш ¤Єю сыюъ яюёыхфэшщ, Єю dd -1
|
||||
font_x_y dd 0x0
|
||||
fulder_array_point dd 0x0
|
||||
font_array_point dd 0x0
|
||||
font_array_data dd 0x0 ; Ёхры№э√х фрээ√х Є.х. ьрЄЁшЎр °ЁшЇЄр
|
||||
save_ebp dd 0x0
|
||||
save_point_nt dd 0x0
|
||||
name_fulder db '/sys/FONTS',0
|
||||
name_fuld_end= ($-name_fulder) -1
|
||||
name_font db '.ksf',0
|
||||
type_fnt db 'kf01'
|
||||
|
||||
|
||||
|
||||
align 16
|
||||
struct_f_info:
|
||||
number_function dd 0x0
|
||||
index_start_block dd 0x0
|
||||
flags_ dd 0x0
|
||||
read_block dd 0x0
|
||||
buffer_read_d dd buffer_32
|
||||
free_byte db 0x0
|
||||
offset_to_string dd name_fulder
|
||||
|
||||
align 16
|
||||
file_buffer:
|
||||
.type_fnt dd 0x0
|
||||
.font_size dd 0x0
|
||||
|
||||
align 16
|
||||
buffer_32:
|
||||
.head dd ?
|
||||
.quantity_block dd ?
|
||||
.quantity_files dd ?
|
||||
rb 20
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page Windows 1251 - Cyrillic
|
||||
|
||||
|
||||
; Copyright (c) 2009, <Lrz>
|
||||
; 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 Alexey Teplov nickname <Lrz> ''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.
|
||||
;*****************************************************************************
|
||||
|
||||
;;;;;;;;;;;;;;;;;;
|
||||
|
||||
format MS COFF
|
||||
|
||||
public EXPORTS
|
||||
|
||||
section '.flat' code readable align 16
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Get info about
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
include '../../../macros.inc'
|
||||
align 4
|
||||
initialization_font:
|
||||
; esp+0 = dd back
|
||||
; чряюыэ хь ьрёёшт - ёЄЁєъЄє фы яюыєўхэш ъюы-тр Їрщыют
|
||||
|
||||
pushad
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov [number_function],eax
|
||||
;structure is completed
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;IF ERROR FT then exit
|
||||
test eax,eax
|
||||
jnz .exit
|
||||
;IF ERROR folder is not found then exit
|
||||
test ebx,ebx
|
||||
mov eax,ebx
|
||||
jnz .exit
|
||||
|
||||
;Get quantity files
|
||||
mov eax,[buffer_32.quantity_files]
|
||||
imul eax,304
|
||||
add eax,32 ; ??
|
||||
push eax ;save eax т eax ЁрчьхЁ эєцэющ эрь ярь Єш т срщЄрї
|
||||
;init memory
|
||||
mov eax,68
|
||||
mov ebx,11
|
||||
mcall
|
||||
test eax,eax
|
||||
jz .exit
|
||||
inc ebx ;т√фхышЄ№ сыюъ т ecx срщЄ
|
||||
|
||||
pop ecx
|
||||
mov eax,68
|
||||
mcall
|
||||
mov dword [fulder_array_point],eax ;save point for memory's fulder
|
||||
;т eax єърчрЄхы№ эр сыюъ
|
||||
mov [buffer_read_d],eax ;point to new array
|
||||
mov eax,[buffer_32.quantity_files]
|
||||
mov [read_block],eax
|
||||
;get in buffer info of files and sub dir current dir
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;яюыєўшыш шэЇюЁьрЎш■ ю Їрщырї.
|
||||
mov ebp, dword [buffer_read_d] ;point to structure
|
||||
mov ecx, dword [ebp+4] ;ъюы-тю сыюъют ┴─┬╩
|
||||
mov dword [save_ecx],ecx
|
||||
add ebp, 32 ;ёьх∙рхьё фю ┴─┬╩
|
||||
mov dword [save_ebp],ebp
|
||||
cld ;єёЄрэютър Їырур эряЁртыхэш
|
||||
align 4
|
||||
.start_loop:
|
||||
push ecx
|
||||
lea edi,[ebp+0x28] ;т edi єърчрЄхы№ эр эрўрыю шьхэш.
|
||||
xor eax,eax
|
||||
mov ecx,263
|
||||
repne scasb ;эрщфхь ъюэхЎ ёЄЁюъш
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
sub edi,5 ;.ksf,0
|
||||
lea esi,[name_font]
|
||||
mov eax,dword[edi]
|
||||
or eax,0x20202000 ; ёфхырхь Ёрё°шЁхэшх ёЄЁюўэ√ьш сєътрьш.
|
||||
cmp eax,dword[esi]
|
||||
jnz @f
|
||||
|
||||
;;;;;;;; єЁр ¤Єю эр° Їрщы Є.х. эр° °ЁшЇЄ ь√ эр°ыш эєцэ√щ Їрщышъ ))
|
||||
;ЄхяхЁ№ эєцэю Єюўэю єсхфшЄ№ё ўЄю ¤Єю эр° ш Єюы№ъю эр° Їрщышъ
|
||||
;чруЁєчшь чруюыютюъ Їрщыр ш єчэрхь хую ЁрчьхЁ уышЇр.
|
||||
|
||||
call alloc_mem ; т√фхышь ючє ётюшї яхЁхьхээ√ї
|
||||
; ёхщўрё эрь эєцэю ёЇюЁьшЁютрЄ№ шь Їрщыр ё яюыэ√ь яєЄхь
|
||||
mov eax,dword [alloc_memory_point]
|
||||
lea edi,dword [eax+4]
|
||||
lea esi,[name_fulder]
|
||||
mov ecx,name_fuld_end
|
||||
rep movsb ;яхЁхэюёшь яєЄ№
|
||||
mov al,'/'
|
||||
stosb
|
||||
lea esi,[ebp+0x28] ;т esi єърчрЄхы№ эр эрўрыю шьхэш.
|
||||
align 4
|
||||
.loop_b:
|
||||
lodsb
|
||||
stosb
|
||||
test al,al
|
||||
jnz .loop_b
|
||||
|
||||
; mov edi,name_of_file ; [ebp+0x28] ;т edi єърчрЄхы№ эр эрўрыю шьхэш.
|
||||
;get in buffer info above own file
|
||||
xor eax,eax
|
||||
mov dword [number_function],eax
|
||||
mov dword [index_start_block],eax ;яючшЎш т Їрщых фы ўЄхэш фрээ√ї
|
||||
mov dword [flags_],eax ;ёЄрЁ°р яючшЎш фы ўЄхэш фрээ√ї
|
||||
mov dword [read_block],8 ;ёъюы№ъю срщЄ ўшЄрЄ№ эрь эєцэю 8 срщЄ
|
||||
mov dword [buffer_read_d],file_buffer ; єърчрЄхы№ эр сєЇхЁ ъєфр сєфєЄ чряшёрэ√ фрээ√х
|
||||
|
||||
mov eax,dword [alloc_memory_point]
|
||||
lea edi,dword [eax+4]
|
||||
mov dword [offset_to_string],edi
|
||||
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;;;;;;;;;;;;;;;; яЁютхЁшь ЇюЁьрЄ чруюыютър
|
||||
mov eax,ebx
|
||||
mov eax,dword [file_buffer]
|
||||
mov ebx,dword [type_fnt]
|
||||
cmp eax,ebx
|
||||
jnz @f
|
||||
|
||||
;;;;;;; юЄышўэю ёхщўрё яЁютхЁшыш ўЄю чруюыютюъ шьхээю ЄюЄ ъюЄюЁ√щ эрь эєцхэ
|
||||
; ёхщўрё эєцэю яхЁхЁрёяЁхфхышЄ№ сыюъш Є.х. яю ьхЁх эрїюцфхэш сєфхь яхЁхэюёшЄ№ сыюъш
|
||||
; т эрўрыю сєЇхЁр
|
||||
|
||||
mov dword [save_point_nt],ebp
|
||||
pop ecx
|
||||
xor eax,eax
|
||||
jmp .exit
|
||||
|
||||
align 4
|
||||
@@: pop ecx
|
||||
add ebp,304
|
||||
dec ecx
|
||||
jnz .start_loop
|
||||
; loop .start_loop
|
||||
or eax,-1
|
||||
;;;;;;;; яЁю°ышё№ - тёх шэЄхЁхёє∙■∙шх °ЁшЇЄ√ яхЁхьхёЄшыш т эрўрыю сыюър.
|
||||
|
||||
align 4
|
||||
.exit: mov dword [esp+28],eax
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
align 4
|
||||
get_font:
|
||||
; яюшёъ т ьрёёштх °ЁшЇЄр яЁш ёютярфхэшш єcыютшщ чруЁєчър °ЁшЇЄр
|
||||
; esp+4 = dd width font shl 16 +hight font
|
||||
; esp+0 = dd back
|
||||
;pop eax
|
||||
; pop dword [font_x_y]
|
||||
;push eax
|
||||
pushad
|
||||
mov eax,dword [esp+32+4]
|
||||
mov dword [font_x_y],eax
|
||||
xor eax,eax
|
||||
mov dword [number_function],eax
|
||||
mov dword [index_start_block],eax ;яючшЎш т Їрщых фы ўЄхэш фрээ√ї
|
||||
mov dword [flags_],eax ;ёЄрЁ°р яючшЎш фы ўЄхэш фрээ√ї
|
||||
mov dword [read_block],8 ;ёъюы№ъю срщЄ ўшЄрЄ№ эрь эєцэю 8 срщЄ
|
||||
mov dword [buffer_read_d],file_buffer ; єърчрЄхы№ эр сєЇхЁ ъєфр сєфєЄ чряшёрэ√ фрээ√х
|
||||
|
||||
mov eax,dword [alloc_memory_point]
|
||||
lea edi,dword [eax+4]
|
||||
mov dword [offset_to_string],edi
|
||||
|
||||
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
;;;;;;;;;;;;;;;; яЁютхЁшь ЇюЁьрЄ чруюыютър
|
||||
mov eax,ebx
|
||||
mov eax,dword [file_buffer]
|
||||
mov ebx,dword [type_fnt]
|
||||
cmp eax,ebx
|
||||
|
||||
mov ecx,dword [file_buffer.font_size]
|
||||
mov edx,dword [font_x_y]
|
||||
cmp ecx,edx
|
||||
|
||||
mov ecx, 4096;dword [ebp+32] ;ЁрчьхЁ Їрщыр фю 4294967296 срщЄ Є.х. 4 ├с
|
||||
|
||||
mov dword [read_block],ecx
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mcall
|
||||
|
||||
mov dword [font_array_point],eax ;save point to array
|
||||
mov dword [buffer_read_d],eax
|
||||
|
||||
;load font
|
||||
mov ebx,dword struct_f_info
|
||||
mov eax,70
|
||||
mcall
|
||||
test eax,eax
|
||||
jnz .exit
|
||||
|
||||
lea eax,[buffer_read_d]
|
||||
mov eax,dword [eax]
|
||||
mov ebx,dword [eax+8]
|
||||
add eax,ebx
|
||||
; add eax,dword [eax+8]
|
||||
; add eax,dword [buffer_read_d]
|
||||
mov dword [font_array_data],eax
|
||||
xor eax,eax
|
||||
jmp .ok
|
||||
|
||||
;here error file system
|
||||
align 4
|
||||
.exit:
|
||||
or eax,-1
|
||||
align 4
|
||||
.ok: mov dword [esp+28],eax ;тхЁэхь ю°шсъє
|
||||
popad
|
||||
ret 4
|
||||
|
||||
|
||||
; яюшёъ т√тюф ёЄюЁюўъш яю ёшьтюы№эю ёЇюЁшЁютрээюую °ЁшЇЄюь ЄхъёЄр
|
||||
; esp+12= dd x shl 16 + y x- ъююЁфшэрЄр яю ╒, y - ъююЁфшэрЄр яю Y
|
||||
; esp+8 = dd point to color of background and font
|
||||
; esp+4 = dd point to ASCIIZ
|
||||
; esp+0 = dd back
|
||||
align 4
|
||||
font_draw_on_string:
|
||||
pushad
|
||||
|
||||
mov esi,dword [esp+4+32] ;ASCIIZ
|
||||
mov edx,dword [esp+12+32] ; x shl 16 +y
|
||||
mov ecx,dword [font_x_y] ;ЁрчьхЁ уышЇр x shl 16 +y
|
||||
mov edi,dword [esp+8+32] ;єърчрЄхы№ эр ярышЄЁє шч ЎтхЄр ш Їюэр
|
||||
xor ebp,ebp ;ёь 65 ЇєэъЎш■ ))
|
||||
cld
|
||||
align 4
|
||||
@@: ;pushad
|
||||
xor eax,eax
|
||||
lodsb
|
||||
test al,al
|
||||
jz .return
|
||||
shl eax,4 ;єьэюцрхь эр 16 Є.ъ. ¤Єю т√ёюЄр уышЇр
|
||||
|
||||
mov ebx,dword [font_array_data] ; ЄєЄ Ёрёяюыюур■Єё уышЇ√ ёшьтюыют
|
||||
add ebx,eax
|
||||
push esi
|
||||
mov esi,1
|
||||
mov eax,65
|
||||
mcall
|
||||
pop esi
|
||||
add edx,8 shl 16 ;ёыхфє■∙шщ ёшьтюы °шЁшэр ёшьтюыр = 8 Єюўърь
|
||||
jmp @b
|
||||
|
||||
align 4
|
||||
.return:
|
||||
popad
|
||||
ret 12
|
||||
|
||||
|
||||
align 4
|
||||
; esp+4 = dd point to color of background and font
|
||||
show_all_glif:
|
||||
pushad
|
||||
|
||||
mov edx,10 shl 16+20 ;dword [esp+12+32] ; x shl 16 +y
|
||||
mov ecx,128 shl 16 +256;dword [font_x_y] ;ЁрчьхЁ уышЇр x shl 16 +y
|
||||
mov edi,dword [esp+4+32] ;єърчрЄхы№ эр ярышЄЁє шч ЎтхЄр ш Їюэр
|
||||
xor ebp,ebp ;ёь 65 ЇєэъЎш■ ))
|
||||
|
||||
align 4
|
||||
@@:
|
||||
mov ebx,dword [font_array_data] ; ЄєЄ Ёрёяюыюур■Єё уышЇ√ ёшьтюыют
|
||||
mov esi,1
|
||||
mov eax,65
|
||||
mcall
|
||||
popad
|
||||
ret 4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
free_fulder_info:
|
||||
;юётюсюфшЄ№ ярь Є№ т√фхыхэє■ фы яюыєўхэш сыюъют ┴─┬╩
|
||||
pushad
|
||||
mov ecx, dword [fulder_array_point]
|
||||
mov eax,68
|
||||
mov ebx,13
|
||||
mcall
|
||||
test eax,eax
|
||||
; jnz @f
|
||||
mov dword [esp+28],eax ;тхЁэхь ю°шсъє
|
||||
;align 4
|
||||
;@@:
|
||||
popad
|
||||
ret
|
||||
align 4
|
||||
free_font:
|
||||
;юётюсюфшЄ№ ярь Є№ т√фхыхэє■ фы яюыєўхэш сыюъют ┴─┬╩
|
||||
pushad
|
||||
mov ecx, dword [font_array_point]
|
||||
mov eax,68
|
||||
mov ebx,13
|
||||
mcall
|
||||
test eax,eax
|
||||
; jnz @f
|
||||
mov dword [esp+28],eax ;тхЁэхь ю°шсъє
|
||||
;align 4
|
||||
;@@:
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
; alloc mem get 4 Kb for own data
|
||||
alloc_mem:
|
||||
pushad
|
||||
mov eax, dword [alloc_memory_point]
|
||||
test eax,eax
|
||||
jnz .mem_allocating
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mov ecx,4096
|
||||
mcall
|
||||
mov dword [alloc_memory_point],eax ; яЁш яхЁтюь тїюцфхэшш т√фхы хь 4 ъс ╬╟╙ ш ёюїЁрэ хь єърчрЄхы№
|
||||
mov dword [eax],-1
|
||||
popad
|
||||
ret
|
||||
align 4
|
||||
.mem_allocating:
|
||||
mov ebp, dword [eax]
|
||||
mov eax,ebp
|
||||
cmp eax, -1
|
||||
jnz .mem_allocating
|
||||
|
||||
mov eax,68
|
||||
mov ebx,12
|
||||
mov ecx,4096
|
||||
mcall
|
||||
mov dword [ebp],eax ; яЁш яхЁтюь тїюцфхэшш т√фхы хь 4 ъс ╬╟╙ ш ёюїЁрэ хь єърчрЄхы№
|
||||
mov dword [ebp],-1
|
||||
popad
|
||||
ret
|
||||
|
||||
align 16
|
||||
EXPORTS:
|
||||
|
||||
dd sz_initialization_font, initialization_font
|
||||
dd sz_get_font, get_font
|
||||
dd sz_free_fulder_info, free_fulder_info
|
||||
dd sz_free_font, free_font
|
||||
dd sz_font_draw_on_string, font_draw_on_string
|
||||
dd sz_show_all_glif, show_all_glif
|
||||
; dd szVersion_ch, 0x00000001
|
||||
; dd sz_option_box_draw, option_box_draw
|
||||
; dd sz_option_box_mouse, option_box_mouse
|
||||
dd szVersion_fn, 0x00000001
|
||||
dd 0,0
|
||||
|
||||
sz_initialization_font db 'initialization_font',0
|
||||
sz_get_font db 'get_font',0
|
||||
sz_free_fulder_info db 'free_fulder_info',0
|
||||
sz_free_font db 'free_font',0
|
||||
sz_font_draw_on_string db 'font_draw_on_string',0
|
||||
sz_show_all_glif db 'show_all_glif',0
|
||||
;sz_check_box_mouse db 'check_box_mouse',0
|
||||
;szVersion_ch db 'version_ch',0
|
||||
;sz_option_box_draw db 'option_box_draw',0
|
||||
;sz_option_box_mouse db 'option_box_mouse',0
|
||||
szVersion_fn db 'version_fn',0
|
||||
|
||||
;;;;;;;;;;;
|
||||
;;Data
|
||||
;;;;;;;;;;;
|
||||
align 4
|
||||
;buffer_font file 'font_8x16.fon' ;°ЁшЇЄ ъюЄюЁ√ь сєфхь т√тюфшЄ№ raw ЇюЁьрЄ 1bpp
|
||||
save_ecx dd 0x0
|
||||
;buffer_font file 'font01.ksf' ;°ЁшЇЄ ъюЄюЁ√ь сєфхь т√тюфшЄ№ raw ЇюЁьрЄ 1bpp
|
||||
alloc_memory_point dd 0x0 ; point to mem block in RAM 4096-4
|
||||
;ёЄЁєъЄєЁр Єрър т эрўрых т√фхыхэюую сыюър Ёрчьх∙рхЄё єърчрЄхы№ эр фЁєующ т√фхыыэ√щ сыюъ т 4096-4, хёыш ¤Єю сыюъ яюёыхфэшщ, Єю dd -1
|
||||
font_x_y dd 0x0
|
||||
fulder_array_point dd 0x0
|
||||
font_array_point dd 0x0
|
||||
font_array_data dd 0x0 ; Ёхры№э√х фрээ√х Є.х. ьрЄЁшЎр °ЁшЇЄр
|
||||
save_ebp dd 0x0
|
||||
save_point_nt dd 0x0
|
||||
name_fulder db '/sys/FONTS',0
|
||||
name_fuld_end= ($-name_fulder) -1
|
||||
name_font db '.ksf',0
|
||||
type_fnt db 'kf01'
|
||||
|
||||
|
||||
|
||||
align 16
|
||||
struct_f_info:
|
||||
number_function dd 0x0
|
||||
index_start_block dd 0x0
|
||||
flags_ dd 0x0
|
||||
read_block dd 0x0
|
||||
buffer_read_d dd buffer_32
|
||||
free_byte db 0x0
|
||||
offset_to_string dd name_fulder
|
||||
|
||||
align 16
|
||||
file_buffer:
|
||||
.type_fnt dd 0x0
|
||||
.font_size dd 0x0
|
||||
|
||||
align 16
|
||||
buffer_32:
|
||||
.head dd ?
|
||||
.quantity_block dd ?
|
||||
.quantity_files dd ?
|
||||
rb 20
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -22,7 +22,7 @@
|
||||
;; References: ;;
|
||||
;; 1. GIF LITE v3.0 (2004-2007) ;;
|
||||
;; by Willow and Diamond ;;
|
||||
;; svn://kolibrios.org/programs/media/gifview/trunk/gif_lite.inc ;;
|
||||
;; /programs/other/outdated/gifview/gif_lite.inc ;;
|
||||
;; 2. "GIF File Format Summary" ;;
|
||||
;; from "Encyclopedia of Graphics File Formats" by O'Reilly ;;
|
||||
;; http://www.fileformat.info/format/gif/ ;;
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+74
-71
@@ -1,71 +1,74 @@
|
||||
;*****************************************************************************
|
||||
; 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 '../../../../KOSfuncs.inc'
|
||||
include 'opendial.mac'
|
||||
include 'colrdial.mac'
|
||||
;include 'debug.inc'
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------
|
||||
; Open Dialog
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_OpenDialog
|
||||
|
||||
;--------------------------------------------------
|
||||
; Color Dialog
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_ColorDialog
|
||||
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
lib_init:
|
||||
xor eax, eax
|
||||
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 sz_OpenDialog_set_file_name, OpenDialog.set_file_name
|
||||
dd sz_OpenDialog_set_file_ext, OpenDialog.set_file_ext
|
||||
dd szVersion_OpenDialog, 0x00010001
|
||||
|
||||
dd sz_ColorDialog_init, ColorDialog.init
|
||||
dd sz_ColorDialog_start, ColorDialog.start
|
||||
dd szVersion_ColorDialog, 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
|
||||
sz_OpenDialog_set_file_name db 'OpenDialog_set_file_name',0
|
||||
sz_OpenDialog_set_file_ext db 'OpenDialog_set_file_ext',0
|
||||
szVersion_OpenDialog db 'Version_OpenDialog',0
|
||||
|
||||
sz_ColorDialog_init db 'ColorDialog_init',0
|
||||
sz_ColorDialog_start db 'ColorDialog_start',0
|
||||
szVersion_ColorDialog db 'Version_ColorDialog',0
|
||||
;-----------------------------------------------------------------------------
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;*****************************************************************************
|
||||
; 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 '../../../KOSfuncs.inc'
|
||||
include 'opendial.mac'
|
||||
include 'colrdial.mac'
|
||||
;include 'debug.inc'
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------
|
||||
; Open Dialog
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_OpenDialog
|
||||
|
||||
;--------------------------------------------------
|
||||
; Color Dialog
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
use_ColorDialog
|
||||
|
||||
;--------------------------------------------------
|
||||
align 16
|
||||
lib_init:
|
||||
xor eax, eax
|
||||
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 sz_OpenDialog_set_file_name, OpenDialog.set_file_name
|
||||
dd sz_OpenDialog_set_file_ext, OpenDialog.set_file_ext
|
||||
dd szVersion_OpenDialog, 0x00010001
|
||||
|
||||
dd sz_ColorDialog_init, ColorDialog.init
|
||||
dd sz_ColorDialog_start, ColorDialog.start
|
||||
dd szVersion_ColorDialog, 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
|
||||
sz_OpenDialog_set_file_name db 'OpenDialog_set_file_name',0
|
||||
sz_OpenDialog_set_file_ext db 'OpenDialog_set_file_ext',0
|
||||
szVersion_OpenDialog db 'Version_OpenDialog',0
|
||||
|
||||
sz_ColorDialog_init db 'ColorDialog_init',0
|
||||
sz_ColorDialog_start db 'ColorDialog_start',0
|
||||
szVersion_ColorDialog db 'Version_ColorDialog',0
|
||||
;-----------------------------------------------------------------------------
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+66
-64
@@ -1,64 +1,66 @@
|
||||
;-----------------------------------------------------------------------------+
|
||||
; Library "utils" (c) Sergei Steshin (Akyltist) |
|
||||
;-----------------------------------------------------------------------------+
|
||||
; Charset:DOS-866 Font:Courier New Size:9pt |
|
||||
; compiler: FASM 1.69.31 |
|
||||
; version: 0.1.0 |
|
||||
; last update: 31/03/2014 |
|
||||
; e-mail: dr.steshin@gmail.com |
|
||||
; license: BSD |
|
||||
;-----------------------------------------------------------------------------+
|
||||
|
||||
format MS COFF
|
||||
|
||||
public EXPORTS
|
||||
|
||||
section '.flat' code readable writable align 16
|
||||
|
||||
include '../../../../proc32.inc'
|
||||
include '_ftoa.inc'
|
||||
include '_atof.inc'
|
||||
include '_rand.inc'
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; float to ascii string |
|
||||
;-----------------------------------------------------------------------------+
|
||||
ftoa: ;
|
||||
mov ebx, dword [esp+4] ; out string
|
||||
mov eax, dword [esp+8] ; in value
|
||||
stdcall FloatToString,eax,ebx ;
|
||||
ret 8 ;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; ascii string to float |
|
||||
;-----------------------------------------------------------------------------+
|
||||
atof: ;
|
||||
mov ebx, dword [esp+4] ; out <- value
|
||||
mov eax, dword [esp+8] ; in -> string
|
||||
stdcall string2float,eax,ebx ;
|
||||
ret 8 ;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; returns a random integer in the range [ 0...99999 ] |
|
||||
;-----------------------------------------------------------------------------+
|
||||
random: ;
|
||||
call _random ; out <- eax random
|
||||
ret ;
|
||||
|
||||
;=============================================================================;
|
||||
align 16
|
||||
EXPORTS:
|
||||
dd szFtoa , ftoa
|
||||
dd szAtof , atof
|
||||
dd szRandom , random
|
||||
dd 0 , 0
|
||||
|
||||
szFtoa db 'ftoa' ,0
|
||||
szAtof db 'atof' ,0
|
||||
szRandom db 'random' ,0
|
||||
|
||||
section '.data' data readable writable align 16
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; Library "utils" (c) Sergei Steshin (Akyltist) |
|
||||
;-----------------------------------------------------------------------------+
|
||||
; Charset:DOS-866 Font:Courier New Size:9pt |
|
||||
; compiler: FASM 1.69.31 |
|
||||
; version: 0.1.0 |
|
||||
; last update: 31/03/2014 |
|
||||
; e-mail: dr.steshin@gmail.com |
|
||||
; license: BSD |
|
||||
;-----------------------------------------------------------------------------+
|
||||
|
||||
format MS COFF
|
||||
|
||||
public EXPORTS
|
||||
|
||||
section '.flat' code readable writable align 16
|
||||
|
||||
include '../../../proc32.inc'
|
||||
include '_ftoa.inc'
|
||||
include '_atof.inc'
|
||||
include '_rand.inc'
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; float to ascii string |
|
||||
;-----------------------------------------------------------------------------+
|
||||
ftoa: ;
|
||||
mov ebx, dword [esp+4] ; out string
|
||||
mov eax, dword [esp+8] ; in value
|
||||
stdcall FloatToString,eax,ebx ;
|
||||
ret 8 ;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; ascii string to float |
|
||||
;-----------------------------------------------------------------------------+
|
||||
atof: ;
|
||||
mov ebx, dword [esp+4] ; out <- value
|
||||
mov eax, dword [esp+8] ; in -> string
|
||||
stdcall string2float,eax,ebx ;
|
||||
ret 8 ;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------+
|
||||
; returns a random integer in the range [ 0...99999 ] |
|
||||
;-----------------------------------------------------------------------------+
|
||||
random: ;
|
||||
call _random ; out <- eax random
|
||||
ret ;
|
||||
|
||||
;=============================================================================;
|
||||
align 16
|
||||
EXPORTS:
|
||||
dd szFtoa , ftoa
|
||||
dd szAtof , atof
|
||||
dd szRandom , random
|
||||
dd 0 , 0
|
||||
|
||||
szFtoa db 'ftoa' ,0
|
||||
szAtof db 'atof' ,0
|
||||
szRandom db 'random' ,0
|
||||
|
||||
section '.data' data readable writable align 16
|
||||
File renamed without changes.
File renamed without changes.
@@ -1,6 +1,6 @@
|
||||
ROOT=../../develop/libraries/framework/trunk
|
||||
ROOT=../../develop/libraries/framework
|
||||
|
||||
include ../../develop/libraries/framework/trunk/config.mk
|
||||
include ../../develop/libraries/framework/config.mk
|
||||
|
||||
# Note that kobra_st.o MUST be first and kobra.o last.
|
||||
OBJECTS=kobra_st.o $(ROOT)/stdlib/heap.o $(ROOT)/stdlib/malloc.o $(ROOT)/stdlib/stdlib.o $(ROOT)/kolibri/kolibri.o $(ROOT)/libIPC/ipc.o kobra.o
|
||||
|
||||
Reference in new issue
Block a user