/programs/fs/kfar/trunk/kfar_arc/archiver_deflate.txt |
---|
1,4 → 1,7 |
archiver.obj ýêñïîðòèðóåò äâå ôóíêöèè äëÿ ðàñïàêîâêè deflate-äàííûõ. |
À òàêæå ôóíêöèè: deflateInit, deflateInit2, deflateReset, deflate, |
deflateEnd äëÿ óïàêîâêè deflate-äàííûõ, ñäåëàííûå íà îñíîâå ñâîáîäíî |
ðàñïðîñòðàíÿåìîé áèáëèîòåêè zlib. |
Ïåðâàÿ: deflate_unpack |
Îáúÿâëåíèå â ñòèëå Ñè: void* __stdcall deflate_unpack(const void* data, unsigned* pLength); |
64,3 → 67,17 |
mov [ecx], length |
mov eax, buffer |
ret 8 |
Àëãîðèòì äëÿ óïàêîâêè äàííûõ: |
1) Âûçîâ ôóíêöèè deflateInit èëè deflateInit2. |
2) Ðàçáèåíèå âõîäíîãî ïîòîêà äàííûõ íà ïîðöèè ïî 64 Êá. |
Äëÿ êàæäîãî áëîêà â 64 Êá â öèêëå äîëæåí äåëàòüñÿ âûçîâ ôóíêöèè deflate. |
Çà îäèí âûçîâ ôóíêöèè deflate ñæàòûõ äàííûõ îáðàçóåòñÿ íå áîëåå 16 Êá. |
Ò. å. åñëè ñæèìàåìûõ äàííûõ ìåíåå 16 Êá, òî èõ ìîæíî óïàêîâàòü çà îäèí âûçîâ deflate. |
Åñëè ñæèìàåìûõ äàííûõ ìåíåå 64 Êá, òî èõ ìîæíî óïàêîâàòü îðãàíèçîâàâ îäèí öèêë ñ âûçîâîì deflate. |
Åñëè ñæèìàåìûõ äàííûõ áîëåå 64 Êá, òî èõ ìîæíî óïàêîâàòü îðãàíèçîâàâ äâîéíîé öèêë ñ âûçîâîì deflate. |
3) Âûçîâ ôóíêöèè deflateEnd äëÿ î÷èñòêè ïàìÿòè. |
Çàìå÷àíèÿ: |
Áîëüøèå óðîâíè ñæàòèÿ ïîêà ÷òî íå ïîääåðæèâàþòñÿ. |
Ôóíêöèÿ deflate íå êîðåêòíî ðàáîòàåò ñ ïàðàìåòðîì Z_NO_FLUSH. |
(Ïîêà ïðîáëåìà íå óñòðàíåíà ðåêîìåíäóåòñÿ âñåãäà ñòàâèòü Z_FINISH) |
/programs/fs/kfar/trunk/kfar_arc/kfar_arc.asm |
---|
3,7 → 3,7 |
; target platform: KolibriOS |
; compiler: FASM 1.67.14 |
; version: 0.17 |
; last update: 2009-09-03 (Sep 03, 2009) |
; last update: 2016-11-04 (Nov 04, 2016) |
; minimal KFar version: 0.43 |
; minimal kernel: no limit |
; |
32,6 → 32,7 |
include '7zaes.inc' ; AES cryptor for *.7z |
include 'zip.inc' ; *.zip |
include 'deflate.inc' ; Deflate[64] decoder for *.7z and *.zip |
include '../zlib/zlib.asm' ; deflate coder |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;; Interface for KFar ;;;;;;;;;;;;;; |
1242,9 → 1243,9 |
mov ecx, 10000h |
jmp [eax+streamInfo.fillBuf] |
@@: |
push 68 |
push SF_SYS_MISC |
pop eax |
push 20 |
push SSF_MEM_REALLOC |
pop ebx |
int 0x40 |
test eax, eax |
1280,9 → 1281,9 |
jnz @f |
inc ecx |
@@: |
push 68 |
push SF_SYS_MISC |
pop eax |
push 20 |
push SSF_MEM_REALLOC |
pop ebx |
int 0x40 |
test eax, eax |
1297,9 → 1298,9 |
and ecx, 3 |
rep movsb |
push eax |
push 68 |
push SF_SYS_MISC |
pop eax |
push 13 |
push SSF_MEM_FREE |
pop ebx |
lea ecx, [ebp-streamInfo.size-8] |
int 40h |
1306,9 → 1307,9 |
pop eax |
jmp .ret |
.nomem: |
push 68 |
push SF_SYS_MISC |
pop eax |
push 13 |
push SSF_MEM_FREE |
pop ebx |
test edx, edx |
jz @f |
1342,9 → 1343,9 |
ret |
mypgalloc: |
push 68 |
push SF_SYS_MISC |
pop eax |
push 12 |
push SSF_MEM_ALLOC |
pop ebx |
int 0x40 |
ret |
1371,6 → 1372,13 |
dd aClose, myclose |
dd aDeflateUnpack, deflate_unpack |
dd aDeflateUnpack2,deflate_unpack2 |
dd adeflateInit, deflateInit |
dd adeflateInit2, deflateInit2 |
dd adeflateReset, deflateReset |
dd adeflate, deflate |
dd adeflateEnd, deflateEnd |
dd azError, zError |
dd acalc_crc32, calc_crc32 |
dd 0 |
; exported names |
1389,6 → 1397,13 |
aClose db 'close',0 |
aDeflateUnpack db 'deflate_unpack',0 |
aDeflateUnpack2 db 'deflate_unpack2',0 |
adeflateInit db 'deflateInit',0 |
adeflateInit2 db 'deflateInit2',0 |
adeflateReset db 'deflateReset',0 |
adeflate db 'deflate',0 |
adeflateEnd db 'deflateEnd',0 |
azError db 'zError',0 |
acalc_crc32 db 'calc_crc32',0 |
; common strings |
if lang eq ru |
1512,6 → 1527,8 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;; Uninitialized data ;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
purge data ;used in 'macros.inc' |
purge section ;used in 'macros.inc' |
section '.udata' data readable writable align 16 |
kfar_info dd ? |
/programs/fs/kfar/trunk/zlib/build.bat |
---|
1,5 → 1,3 |
@fasm.exe -m 32768 zlib.asm zlib.obj |
@kpack zlib.obj |
@fasm.exe -m 32768 example1.asm example1.kex |
@kpack example1.kex |
pause |
/programs/fs/kfar/trunk/zlib/crc32.asm |
---|
23,8 → 23,8 |
align 4 |
crc_table_empty dd 1 |
align 4 |
crc_table rd TBLS*256 |
;align 4 |
;crc_table rd TBLS*256 |
; Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: |
; x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. |
/programs/fs/kfar/trunk/zlib/example1.asm |
---|
245,12 → 245,6 |
align 4 |
import_archiver: |
deflate_unpack dd sz_deflate_unpack |
dd 0,0 |
sz_deflate_unpack db 'deflate_unpack',0 |
align 4 |
import_zlib: |
; dd sz_lib_init |
deflateInit dd sz_deflateInit |
deflateInit2 dd sz_deflateInit2 |
deflateReset dd sz_deflateReset |
257,10 → 251,8 |
deflate dd sz_deflate |
deflateEnd dd sz_deflateEnd |
calc_crc32 dd sz_calc_crc32 |
dd 0,0 |
; sz_lib_init db 'lib_init',0 |
sz_deflate_unpack db 'deflate_unpack',0 |
sz_deflateInit db 'deflateInit',0 |
sz_deflateInit2 db 'deflateInit2',0 |
sz_deflateReset db 'deflateReset',0 |
272,21 → 264,14 |
system_dir_0 db '/sys/lib/' |
lib_name_0 db 'archiver.obj',0 |
system_dir_1 db '/sys/lib/' |
lib_name_1 db 'zlib.obj',0 |
err_message_found_lib0 db 'Sorry I cannot load library archiver.obj',0 |
err_message_found_lib1 db 'Sorry I cannot load library zlib.obj',0 |
head_f_i: |
head_f_l db 'System error',0 |
err_message_import0 db 'Error on load import library archiver.obj',0 |
err_message_import1 db 'Error on load import library zlib.obj',0 |
l_libs_start: |
lib0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\ |
err_message_found_lib0, head_f_l, import_archiver,err_message_import0, head_f_i |
lib1 l_libs lib_name_1, cur_dir_path, library_path, system_dir_1,\ |
err_message_found_lib1, head_f_l, import_zlib, err_message_import1, head_f_i |
load_lib_end: |
;--------------------------------------------------------------------- |
/programs/fs/kfar/trunk/zlib/zlib.asm |
---|
1,8 → 1,4 |
format MS COFF |
public EXPORTS |
section '.flat' code readable align 16 |
include '../../../../proc32.inc' |
include '../../../../macros.inc' |
include '../../../../KOSfuncs.inc' |
44,7 → 40,7 |
include 'zlib.inc' |
include 'deflate.inc' |
include 'zutil.asm' |
include '../kfar_arc/crc.inc' |
;include '../kfar_arc/crc.inc' |
include 'crc32.asm' |
include 'adler32.asm' |
include 'trees.asm' |
170,25 → 166,3 |
@@: |
ret |
; export table |
align 4 |
EXPORTS: |
dd adeflateInit, deflateInit |
dd adeflateInit2, deflateInit2 |
dd adeflateReset, deflateReset |
dd adeflate, deflate |
dd adeflateEnd, deflateEnd |
dd adeflateCopy, deflateCopy |
dd azError, zError |
dd acalc_crc32, calc_crc32 |
dd 0 |
; exported names |
adeflateInit db 'deflateInit',0 |
adeflateInit2 db 'deflateInit2',0 |
adeflateReset db 'deflateReset',0 |
adeflate db 'deflate',0 |
adeflateEnd db 'deflateEnd',0 |
adeflateCopy db 'deflateCopy',0 |
azError db 'zError',0 |
acalc_crc32 db 'calc_crc32',0 |
/programs/fs/kfar/trunk/zlib/zlib.inc |
---|
226,30 → 226,15 |
; unsigned char *next; |
; z_off64_t pos; |
;}; |
;int gzgetc_ OF((gzFile file)); /* backward compatibility */ |
;if Z_PREFIX_SET |
if Z_PREFIX_SET eq 1 |
;# undef z_gzgetc |
;# define z_gzgetc(g) \ |
; ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) |
;#else |
else |
;# define gzgetc(g) \ |
; ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) |
end if |
; provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or |
; change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if |
; both are true, the application gets the *64 functions, and the regular |
; functions are changed to 64 bits) -- in case these are set on systems |
; without large file support, _LFS64_LARGEFILE must also be true |
end if |
; undocumented functions |
;const char * zError OF((int)); |
;int inflateSyncPoint OF((z_streamp)); |
;const z_crc_t FAR * get_crc_table OF((void)); |
;int inflateUndermine OF((z_streamp, int)); |
;int inflateResetKeep OF((z_streamp)); |
;#if defined(_WIN32) && !defined(Z_SOLO) |
;gzFile gzopen_w OF((const wchar_t *path, |
; const char *mode)); |
;end if |