diff --git a/programs/other/outdated/archer/trunk/@RCHER.ASM b/programs/other/outdated/archer/@RCHER.ASM similarity index 94% rename from programs/other/outdated/archer/trunk/@RCHER.ASM rename to programs/other/outdated/archer/@RCHER.ASM index d5708e1e8..b040a41b4 100644 --- a/programs/other/outdated/archer/trunk/@RCHER.ASM +++ b/programs/other/outdated/archer/@RCHER.ASM @@ -1,481 +1,482 @@ -; @RCHER - Deflate unpacker v2.0 beta -; -; Written in pure assembler by Ivushkin Andrey aka Willow -; -; Created: May 6, 2005 -; -; Last changed: August 26, 2006 -; -; Compile with FASM - -SYS equ meos -OUTBUF equ 4*1024*1024 -png_imag = output+OUTBUF -PARAM_PTR = os_work;png_image -MEMINIT=next_code;output -DUMPFILE equ '/hd0/1/out.txt' - -SHOW_RBLOCK equ 0;1 -SHOW_PNG_SEC equ 0;1 -SHOW_METH equ 0;1 -FILE_NUM equ 15;8 -MEMORY equ 0x800000 - -BITS equ 16 -BUFSIZE equ 32 -BUFPTR equ area - -PASSW_LEN equ 32 -NO_STOPS equ 1 -SHOW_CHARS equ 0 -BSIZE equ 512 -INBUF equ BUFSIZE*BSIZE*2 -IGNORE_DIRS equ 0 - -MOVE_SLINE_LEV equ 8 - -DECRYPT_MODE equ 100b -PNG_MODE equ 10b -TAR_MODE equ 1000b -STAY_MODE equ 10000b -IPC_MODE equ 100000b -RAW_MODE equ 1000000b -THREAD_YES equ 10000000b -LIST_MODE equ 100000000b -MEM_MODE equ 1000000000b -FIND_MODE equ 10000000000b - -if SYS eq win -format PE console -entry start -;match =win,SYS -;{ -; include 'D:\Ivushkin\projects\fasmw\INCLUDE\win32a.inc' -;} -else -use32 - - org 0x0 - - db 'MENUET01' - dd 0x01 - dd start - dd I_END - dd MEMINIT - dd main_stack_top;MEMORY-2048 -if PARAM_PTR eq param - dd 0 -else - dd PARAM_PTR -end if - dd 0x0 - -if PARAM_PTR eq param - param db 'N' - db '000015' - db '/hd/1/zip/gz/fasm-1~1.tgz',0 -end if -;match =meos,SYS -;{ - include "..\..\..\macros.inc" -; purge mov - include "..\..\..\debug.inc" - include 'dump.inc' -;} -end if - -include 'lang.inc' -language equ lang - -if SYS eq win -section '.text' code readable executable writeable -end if - -include "arcmacro.inc" -include "parser.inc" -include "deflate.inc" -include "sys.inc" - -FileNum dd FILE_NUM -;FNAME equ '/hd/1/zip/pngsuite/s01n3p01.png' - -start: -if SYS eq win - invoke GetStdHandle, STD_OUTPUT_HANDLE - mov [cons],eax - invoke GetStdHandle, STD_INPUT_HANDLE - mov [cons_in],eax - Msg 0 - Msg 1 -else - Msg 0 - Msg 1 - mcall 40,1000101b -; jmp again - CmdLine - cmdl: - test [Flags],LIST_MODE - jz red - -; Dump [lpath],[lpath_len],os_work -; ud2 - red: - call draw_window - mcall 12,2 - - still: - mcall 10 - cmp eax,1 - je red - cmp eax,2 - jne .nokey - mcall 2 - cmp ah,9 - jz quit - jmp still - .nokey: - cmp eax,3 - jne still - mcall 17 - cmp ah,1 - jne still - mcall 23,30 - cmp eax,3 - jne .noquit - call KillViewer - mcall -1 - .noquit: - mcall 17 - mcall 64,1,MEMINIT - QueryFile - mov [FileNum],FILE_NUM - test eax,eax - jnz still -end if -again: -; Dump Flags,4,os_work - mov [fat_],fat - Newline - xor eax,eax -; and [Flags],STAY_MODE - and [_CRC32_],eax - and [IDATsize],eax - mov [Adler32],1 - call OpenFile - test ebx,ebx - jnz .sizeok2 - .sizebad2: - Msg 14 - jmp quit - .sizeok2: - call KillViewer - xor eax,eax - mov ecx,(child_stack-fat)/4 - mov edi,fat - rep stosd - mov [filesize],ebx - test [Flags],RAW_MODE - jz .norawm - mov eax,[arc_base] - xor ebx,ebx - call FileSeek - jmp .sizeok - .norawm: - call SfxParse - - call ZipParse - cmp edx,52 - je .notzip - mov ecx,[FileNum] - call ZipFindN - cmp edx,4 - je quit - test [Flags],DECRYPT_MODE - jz .nopass - call ZipDecrypt - push esi - mov ecx,31 - ._: - mov al,[esi] - push eax - call decrypt_byte - xor al,byte[esp] - add esp,4 - call UKeys - mov [esi],al - inc esi - loop ._ - pop esi - ud2 - .nopass: - cmp [unp_size],0 - jne .sizeok - .sizebadq: - Msg 13 - jmp quit - .notzip: - call GzipParse - test edx,edx - jne .notgzip - jmp .sizeok - .notgzip: - call PngParse - test edx,edx - jz .sizeok1 - cmp edx,21 - je .sizebad - test [Flags],RAW_MODE - jne .sizeok - Msg 40 - jmp exit - .sizebad: - Msg 17 - jmp exit - .sizeok1: - if ~ SYS eq win - end if - Msg 39 ; unpacking PNG - mov ecx,[unp_size] - add ecx,output - mov [png_],ecx - mov eax,[PNG_info.Width] - imul eax,[PNG_info.Height] - lea eax,[eax+eax*2] - add ecx,eax -; dps 'Mem=' -; dpd ecx - mcall 64,1 - test eax,eax - jz .ok - Msg 41 - jmp exit - .ok: - mov edi,[outp] - call Deflate.blkbegin - jmp .defl_end - .sizeok: - mov ecx,[unp_size] - dpd ecx - add ecx,output -; mov [png_],ecx - mcall 64,1 - test eax,eax - jz .ok2 - Msg 41 - jmp exit - .ok2: - call Deflate ; <=========== - .defl_end: - test [bits],7 - jnz .esi_ok - dec esi - .esi_ok: - push dword[esi] ; <- Adler !!! - mov esi,output - sub edi,esi - mov ecx,edi - mov [outfile.size],ecx - test [Flags],RAW_MODE - jnz .skipAdler - test [Flags],PNG_MODE - jnz .skipCRC - push esi ecx - call UCRC - Msg 11 - mov eax,[_CRC32_] - mov edx,36 - cmp eax,[CRC_check] - je .crcok - dec edx - .crcok: - Msg edx - if SYS eq win - else - dph eax - end if - pop ecx esi - jmp .skipAdler - .skipCRC: -; dps 'Out=' -; dpd ecx - call UAdler - Msg 10 - mov eax,[Adler32] - bswap eax ; <- calculated Adler !!! - mov edx,36 - cmp eax,[esp] - je .adlok - dec edx - .adlok: - Msg edx - if SYS eq win - else - dph eax - end if - .skipAdler: - pop eax - Newline - .nomoreIDAT: - mov ebx,output -if SYS eq win - Msg 37 - invoke CloseHandle, [hnd] - - invoke CreateFile,dumpfile,GENERIC_WRITE, FILE_SHARE_WRITE, NULL, \ - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL - mov [hnd],eax - invoke WriteFile, eax,ebx,[outfile.size],cparam1,NULL - invoke CloseHandle, [hnd] -else - test [Flags],PNG_MODE - jnz .nosave - test [Flags],LIST_MODE - jnz quit - - test [Flags],TAR_MODE - jnz .nomsg - Msg 37 - .nomsg: - mov [outfile.out],ebx - mcall 70,outfile -; dps 'Before Quit1' -; ud2 - test [Flags],TAR_MODE - jz exit.pad -; call StartPad - .nosave: -end if - test [Flags],PNG_MODE - jz NoPng - xor eax,eax - mov edi,filters - mov ecx,6 - rep stosd - mov edi,[png_] - mov esi,output -;// - mov [outp],edi -;// - call PngFilter - call FiltStats - mov [outfile.size],edi - mov ebx,[outp];png_image -if SYS eq win - exit: - Msg 12 - invoke CreateFile,outfile,GENERIC_WRITE, FILE_SHARE_WRITE, NULL, \ - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL - mov [hnd],eax - invoke WriteFile, eax,ebx,[outfile.size],cparam1,NULL - invoke CloseHandle, [hnd] - call RunViewer - and [arc_base],0 - and [Flags],STAY_MODE -; dps 'Before Quit2' - quit: - QueryFile - test eax,eax - jnz again - invoke ExitProcess,0 -else - exit: - mov [outfile.out],ebx - test [Flags],TAR_MODE - jz .notar - Msg 37 - test [Flags],LIST_MODE - jne quit - mcall 70,outfile - .pad: - call StartPad - .notar: - Msg 12 - call RunViewer - and [arc_base],0 - and [Flags],STAY_MODE -quit: - test [Flags],STAY_MODE - jnz red - mcall -1 -end if - -NoPng: - test [Flags],TAR_MODE - if SYS eq win - jz quit - else - jz still - end if -; Dump output,255,os_work -; ud2 -; mov ecx,dumpf_len -; mov esi,dumpfile -; mov edi,filename -; rep movsb -; call OpenFile -; test ebx,ebx -; jz again.sizebadq - call TarParse - mov ecx,[FileNum] - call TarFindN -; dpd [outfile.size] - cmp [outfile.size],0 - jz again.sizebadq - mov ebx,esi - jmp exit - -if ~ SYS eq win -draw_window: - mcall 12,1 - mov ebx,15 - mov ecx,ebx - mov edx,0x0e26830 - mov edi,edx - mcall 0,,,,0x1f2a870 - mcall 8,,,1+1 shl 30 - mcall 4,<6,5>,0x10d0d0d0,msgs+5,1 - mcall ,<5,5>,0x10202020 - ret -end if - -include 'data.inc' - -if SYS eq win -section '.idata' import data readable writeable - - library kernel,'KERNEL32.DLL',\ - comdlg,'COMDLG32.DLL',\ - user,'USER32.DLL' - - import kernel,\ - CreateFile,'CreateFileA',\ - GetFileSize,'GetFileSize',\ - ReadFile,'ReadFile',\ - WriteFile,'WriteFile',\ - SetFilePointer,'SetFilePointer',\ - CloseHandle,'CloseHandle',\ - GetStdHandle,'GetStdHandle',\ - WriteConsole,'WriteConsoleA',\ - ReadConsole,'ReadConsoleA',\ - CreateProcess,'CreateProcessA',\ - WritePrivateProfileString,'WritePrivateProfileStringA',\ - ExitProcess,'ExitProcess' - - import comdlg,\ - GetOpenFileName,'GetOpenFileNameA' - - import user,\ - wsprintf,'wsprintfA',\ - SendMessage,'SendMessageA',\ - FindWindowEx,'FindWindowExA',\ - WaitForInputIdle,'WaitForInputIdle' - - -section '.reloc' fixups data readable discardable -end if - -if ~ SYS in - error "Please specify SYS: meos OR win" -end if - - +; SPDX-License-Identifier: NOASSERTION +; + +; @RCHER - Deflate unpacker v2.0 beta +; +; Written in pure assembler by Ivushkin Andrey aka Willow +; +; Created: May 6, 2005 +; +; Last changed: August 26, 2006 +; +; Compile with FASM + +SYS equ meos +OUTBUF equ 4*1024*1024 +png_imag = output+OUTBUF +PARAM_PTR = os_work;png_image +MEMINIT=next_code;output +DUMPFILE equ '/hd0/1/out.txt' + +SHOW_RBLOCK equ 0;1 +SHOW_PNG_SEC equ 0;1 +SHOW_METH equ 0;1 +FILE_NUM equ 15;8 +MEMORY equ 0x800000 + +BITS equ 16 +BUFSIZE equ 32 +BUFPTR equ area + +PASSW_LEN equ 32 +NO_STOPS equ 1 +SHOW_CHARS equ 0 +BSIZE equ 512 +INBUF equ BUFSIZE*BSIZE*2 +IGNORE_DIRS equ 0 + +MOVE_SLINE_LEV equ 8 + +DECRYPT_MODE equ 100b +PNG_MODE equ 10b +TAR_MODE equ 1000b +STAY_MODE equ 10000b +IPC_MODE equ 100000b +RAW_MODE equ 1000000b +THREAD_YES equ 10000000b +LIST_MODE equ 100000000b +MEM_MODE equ 1000000000b +FIND_MODE equ 10000000000b + +if SYS eq win +format PE console +entry start +;match =win,SYS +;{ +; include 'D:\Ivushkin\projects\fasmw\INCLUDE\win32a.inc' +;} +else +use32 + + org 0x0 + + db 'MENUET01' + dd 0x01 + dd start + dd I_END + dd MEMINIT + dd main_stack_top;MEMORY-2048 +if PARAM_PTR eq param + dd 0 +else + dd PARAM_PTR +end if + dd 0x0 + +if PARAM_PTR eq param + param db 'N' + db '000015' + db '/hd/1/zip/gz/fasm-1~1.tgz',0 +end if +;match =meos,SYS +;{ + include "..\..\..\macros.inc" +; purge mov + include "..\..\..\debug.inc" + include 'dump.inc' +;} +end if + +include 'lang.inc' +language equ lang + +if SYS eq win +section '.text' code readable executable writeable +end if + +include "arcmacro.inc" +include "parser.inc" +include "deflate.inc" +include "sys.inc" + +FileNum dd FILE_NUM +;FNAME equ '/hd/1/zip/pngsuite/s01n3p01.png' + +start: +if SYS eq win + invoke GetStdHandle, STD_OUTPUT_HANDLE + mov [cons],eax + invoke GetStdHandle, STD_INPUT_HANDLE + mov [cons_in],eax + Msg 0 + Msg 1 +else + Msg 0 + Msg 1 + mcall 40,1000101b +; jmp again + CmdLine + cmdl: + test [Flags],LIST_MODE + jz red + +; Dump [lpath],[lpath_len],os_work +; ud2 + red: + call draw_window + mcall 12,2 + + still: + mcall 10 + cmp eax,1 + je red + cmp eax,2 + jne .nokey + mcall 2 + cmp ah,9 + jz quit + jmp still + .nokey: + cmp eax,3 + jne still + mcall 17 + cmp ah,1 + jne still + mcall 23,30 + cmp eax,3 + jne .noquit + call KillViewer + mcall -1 + .noquit: + mcall 17 + mcall 64,1,MEMINIT + QueryFile + mov [FileNum],FILE_NUM + test eax,eax + jnz still +end if +again: +; Dump Flags,4,os_work + mov [fat_],fat + Newline + xor eax,eax +; and [Flags],STAY_MODE + and [_CRC32_],eax + and [IDATsize],eax + mov [Adler32],1 + call OpenFile + test ebx,ebx + jnz .sizeok2 + .sizebad2: + Msg 14 + jmp quit + .sizeok2: + call KillViewer + xor eax,eax + mov ecx,(child_stack-fat)/4 + mov edi,fat + rep stosd + mov [filesize],ebx + test [Flags],RAW_MODE + jz .norawm + mov eax,[arc_base] + xor ebx,ebx + call FileSeek + jmp .sizeok + .norawm: + call SfxParse + + call ZipParse + cmp edx,52 + je .notzip + mov ecx,[FileNum] + call ZipFindN + cmp edx,4 + je quit + test [Flags],DECRYPT_MODE + jz .nopass + call ZipDecrypt + push esi + mov ecx,31 + ._: + mov al,[esi] + push eax + call decrypt_byte + xor al,byte[esp] + add esp,4 + call UKeys + mov [esi],al + inc esi + loop ._ + pop esi + ud2 + .nopass: + cmp [unp_size],0 + jne .sizeok + .sizebadq: + Msg 13 + jmp quit + .notzip: + call GzipParse + test edx,edx + jne .notgzip + jmp .sizeok + .notgzip: + call PngParse + test edx,edx + jz .sizeok1 + cmp edx,21 + je .sizebad + test [Flags],RAW_MODE + jne .sizeok + Msg 40 + jmp exit + .sizebad: + Msg 17 + jmp exit + .sizeok1: + if ~ SYS eq win + end if + Msg 39 ; unpacking PNG + mov ecx,[unp_size] + add ecx,output + mov [png_],ecx + mov eax,[PNG_info.Width] + imul eax,[PNG_info.Height] + lea eax,[eax+eax*2] + add ecx,eax +; dps 'Mem=' +; dpd ecx + mcall 64,1 + test eax,eax + jz .ok + Msg 41 + jmp exit + .ok: + mov edi,[outp] + call Deflate.blkbegin + jmp .defl_end + .sizeok: + mov ecx,[unp_size] + dpd ecx + add ecx,output +; mov [png_],ecx + mcall 64,1 + test eax,eax + jz .ok2 + Msg 41 + jmp exit + .ok2: + call Deflate ; <=========== + .defl_end: + test [bits],7 + jnz .esi_ok + dec esi + .esi_ok: + push dword[esi] ; <- Adler !!! + mov esi,output + sub edi,esi + mov ecx,edi + mov [outfile.size],ecx + test [Flags],RAW_MODE + jnz .skipAdler + test [Flags],PNG_MODE + jnz .skipCRC + push esi ecx + call UCRC + Msg 11 + mov eax,[_CRC32_] + mov edx,36 + cmp eax,[CRC_check] + je .crcok + dec edx + .crcok: + Msg edx + if SYS eq win + else + dph eax + end if + pop ecx esi + jmp .skipAdler + .skipCRC: +; dps 'Out=' +; dpd ecx + call UAdler + Msg 10 + mov eax,[Adler32] + bswap eax ; <- calculated Adler !!! + mov edx,36 + cmp eax,[esp] + je .adlok + dec edx + .adlok: + Msg edx + if SYS eq win + else + dph eax + end if + .skipAdler: + pop eax + Newline + .nomoreIDAT: + mov ebx,output +if SYS eq win + Msg 37 + invoke CloseHandle, [hnd] + + invoke CreateFile,dumpfile,GENERIC_WRITE, FILE_SHARE_WRITE, NULL, \ + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL + mov [hnd],eax + invoke WriteFile, eax,ebx,[outfile.size],cparam1,NULL + invoke CloseHandle, [hnd] +else + test [Flags],PNG_MODE + jnz .nosave + test [Flags],LIST_MODE + jnz quit + + test [Flags],TAR_MODE + jnz .nomsg + Msg 37 + .nomsg: + mov [outfile.out],ebx + mcall 70,outfile +; dps 'Before Quit1' +; ud2 + test [Flags],TAR_MODE + jz exit.pad +; call StartPad + .nosave: +end if + test [Flags],PNG_MODE + jz NoPng + xor eax,eax + mov edi,filters + mov ecx,6 + rep stosd + mov edi,[png_] + mov esi,output +;// + mov [outp],edi +;// + call PngFilter + call FiltStats + mov [outfile.size],edi + mov ebx,[outp];png_image +if SYS eq win + exit: + Msg 12 + invoke CreateFile,outfile,GENERIC_WRITE, FILE_SHARE_WRITE, NULL, \ + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL + mov [hnd],eax + invoke WriteFile, eax,ebx,[outfile.size],cparam1,NULL + invoke CloseHandle, [hnd] + call RunViewer + and [arc_base],0 + and [Flags],STAY_MODE +; dps 'Before Quit2' + quit: + QueryFile + test eax,eax + jnz again + invoke ExitProcess,0 +else + exit: + mov [outfile.out],ebx + test [Flags],TAR_MODE + jz .notar + Msg 37 + test [Flags],LIST_MODE + jne quit + mcall 70,outfile + .pad: + call StartPad + .notar: + Msg 12 + call RunViewer + and [arc_base],0 + and [Flags],STAY_MODE +quit: + test [Flags],STAY_MODE + jnz red + mcall -1 +end if + +NoPng: + test [Flags],TAR_MODE + if SYS eq win + jz quit + else + jz still + end if +; Dump output,255,os_work +; ud2 +; mov ecx,dumpf_len +; mov esi,dumpfile +; mov edi,filename +; rep movsb +; call OpenFile +; test ebx,ebx +; jz again.sizebadq + call TarParse + mov ecx,[FileNum] + call TarFindN +; dpd [outfile.size] + cmp [outfile.size],0 + jz again.sizebadq + mov ebx,esi + jmp exit + +if ~ SYS eq win +draw_window: + mcall 12,1 + mov ebx,15 + mov ecx,ebx + mov edx,0x0e26830 + mov edi,edx + mcall 0,,,,0x1f2a870 + mcall 8,,,1+1 shl 30 + mcall 4,<6,5>,0x10d0d0d0,msgs+5,1 + mcall ,<5,5>,0x10202020 + ret +end if + +include 'data.inc' + +if SYS eq win +section '.idata' import data readable writeable + + library kernel,'KERNEL32.DLL',\ + comdlg,'COMDLG32.DLL',\ + user,'USER32.DLL' + + import kernel,\ + CreateFile,'CreateFileA',\ + GetFileSize,'GetFileSize',\ + ReadFile,'ReadFile',\ + WriteFile,'WriteFile',\ + SetFilePointer,'SetFilePointer',\ + CloseHandle,'CloseHandle',\ + GetStdHandle,'GetStdHandle',\ + WriteConsole,'WriteConsoleA',\ + ReadConsole,'ReadConsoleA',\ + CreateProcess,'CreateProcessA',\ + WritePrivateProfileString,'WritePrivateProfileStringA',\ + ExitProcess,'ExitProcess' + + import comdlg,\ + GetOpenFileName,'GetOpenFileNameA' + + import user,\ + wsprintf,'wsprintfA',\ + SendMessage,'SendMessageA',\ + FindWindowEx,'FindWindowExA',\ + WaitForInputIdle,'WaitForInputIdle' + + +section '.reloc' fixups data readable discardable +end if + +if ~ SYS in + error "Please specify SYS: meos OR win" +end if diff --git a/programs/other/outdated/archer/trunk/archer.txt b/programs/other/outdated/archer/archer.txt similarity index 100% rename from programs/other/outdated/archer/trunk/archer.txt rename to programs/other/outdated/archer/archer.txt diff --git a/programs/other/outdated/archer/trunk/arcmacro.inc b/programs/other/outdated/archer/arcmacro.inc similarity index 100% rename from programs/other/outdated/archer/trunk/arcmacro.inc rename to programs/other/outdated/archer/arcmacro.inc diff --git a/programs/other/outdated/archer/trunk/build_en.bat b/programs/other/outdated/archer/build_en.bat similarity index 100% rename from programs/other/outdated/archer/trunk/build_en.bat rename to programs/other/outdated/archer/build_en.bat diff --git a/programs/other/outdated/archer/trunk/build_ru.bat b/programs/other/outdated/archer/build_ru.bat similarity index 100% rename from programs/other/outdated/archer/trunk/build_ru.bat rename to programs/other/outdated/archer/build_ru.bat diff --git a/programs/other/outdated/archer/trunk/data.inc b/programs/other/outdated/archer/data.inc similarity index 100% rename from programs/other/outdated/archer/trunk/data.inc rename to programs/other/outdated/archer/data.inc diff --git a/programs/other/outdated/archer/trunk/deflate.inc b/programs/other/outdated/archer/deflate.inc similarity index 100% rename from programs/other/outdated/archer/trunk/deflate.inc rename to programs/other/outdated/archer/deflate.inc diff --git a/programs/other/outdated/archer/trunk/dump.inc b/programs/other/outdated/archer/dump.inc similarity index 100% rename from programs/other/outdated/archer/trunk/dump.inc rename to programs/other/outdated/archer/dump.inc diff --git a/programs/other/outdated/archer/trunk/parser.inc b/programs/other/outdated/archer/parser.inc similarity index 100% rename from programs/other/outdated/archer/trunk/parser.inc rename to programs/other/outdated/archer/parser.inc diff --git a/programs/other/outdated/archer/trunk/sys.inc b/programs/other/outdated/archer/sys.inc similarity index 100% rename from programs/other/outdated/archer/trunk/sys.inc rename to programs/other/outdated/archer/sys.inc