0,0 → 1,204 |
;--------------------------------------------------------------------- |
; |
; DOCPAK FOR MENUET v1.1 |
; Written in pure assembly by Ivushkin Andrey aka Willow |
; |
;--------------------------------------------------------------------- |
|
FILE_COUNT=0 |
DEF_FILE equ 'g' |
|
macro embed_file fn |
{ |
forward |
local label,label2,label3 |
dd label2-label |
dd label-label3 |
label3: |
db fn |
label: |
file fn |
label2: |
FILE_COUNT=FILE_COUNT+1 |
} |
appname equ 'Doc Pack' |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd start ; start of code |
dd I_END ; size of image |
dd I_END+0x400 ; memory for app |
dd I_END+0x400 ; esp |
dd my_param , 0x0 ; I_Param , I_Icon |
include 'MACROS.INC' |
|
start: |
cmp [my_param],0 |
je red |
cmp [my_param],'a' |
jb .par_a |
cmp [my_param],'z' |
jbe .ok2 |
.par_a: |
mov [my_param],DEF_FILE |
.ok2: |
movzx ecx,[my_param] |
mov [my_param],'*' |
.open: |
sub ecx,'a'-1 |
mov edx,embedded |
xor esi,esi |
.list: |
lea edx,[edx+esi+8] |
mov esi,[edx-8] |
add edx,[edx-4] |
test esi,esi |
jz .close |
loop .list |
push edx |
; convert number in esi to decimal representation |
mov ecx, 10 |
push -'0' |
mov eax, esi |
@@: |
xor edx, edx |
div ecx |
push edx |
test eax, eax |
jnz @b |
mov edi, fsize |
@@: |
pop eax |
add al, '0' |
stosb |
jnz @b |
mcall 70,fileinfo |
mov ecx,eax |
mcall 5,20 |
pop edx |
mcall 60,2 |
cmp [my_param],'*' |
jne still |
.close: |
mcall -1 |
|
red: |
mov [my_param],'a' |
|
mov eax,48 |
mov ebx,3 |
mov ecx,sc |
mov edx,sizeof.system_colors |
int 0x40 |
|
mcall 12,1 |
|
xor eax,eax |
mov ebx,220*65536+120 |
mov ecx,30*65536+FILECOUNT*16+35 |
mov edx,[sc.work] |
or edx,0x33000000 |
mov edi,header |
int 0x40 |
|
mov ecx,FILECOUNT |
mov ebx,5 shl 16+100 |
mov esi,[sc.work_button] |
mov edi,5 shl 16+14 |
mov edx,10 |
mov eax,8 |
.btnlp: |
push ecx |
mcall ,,edi |
add edi,16 shl 16 |
inc edx |
pop ecx |
loop .btnlp |
mov ecx,FILECOUNT |
mov edx,embedded |
xor edi,edi |
mov ebx,25 shl 16+8 |
mov eax,4 |
.list: |
lea edx,[edx+edi+8] |
mov edi,[edx-8] |
pusha |
sub ebx,15 shl 16 |
mcall ,,0xff0000,my_param,1 |
inc [my_param] |
popa |
push ecx |
mcall ,,[sc.work_button_text],,[edx-4] |
pop ecx |
add edx,esi |
add ebx,16 |
loop .list |
mcall 12,2 |
|
still: |
mcall 10 |
cmp eax,1 |
je red |
cmp eax,2 |
jne .nokey |
mcall 2 |
cmp ah,27 ;Esc |
je start.close |
cmp ah,'a' |
jb still |
cmp ah,'a'+FILECOUNT |
jae still |
jmp .cxax |
.nokey: |
mcall 17 |
cmp ah,1 |
je start.close |
sub ah,10-'a' |
.cxax: |
movzx ecx,ah |
jmp start.open |
|
header db appname,0 |
|
fileinfo: |
dd 7 |
dd 0 |
dd param |
dd 0 ,0 |
db '/RD/1/TINYPAD',0 |
|
param db '*' |
fsize: |
times 10 db '0' |
db 0 |
|
embedded: |
|
; Please use only filenames w/o path! |
|
; -- Start of embedding area ------ |
embed_file 'README.TXT' ;a |
embed_file 'GNU.TXT' ;b |
embed_file 'HOT_KEYS.TXT' ;c |
embed_file 'FASM.TXT' ;d |
embed_file 'MTDBG.TXT' ;e |
embed_file 'VRR_RUS.TXT' ;f |
embed_file 'SYSFUNCR.TXT' ;g |
embed_file 'PPP_RUS.TXT' ;h |
embed_file 'STACK_RU.TXT' ;i |
embed_file 'GROBFAR.TXT' ;j |
; -- End of embedding area ------- |
|
dd 0 |
FILECOUNT = FILE_COUNT |
|
if ~ FILECOUNT>0 |
error 'No embedded files' |
end if |
|
my_param db 0 |
rb 256 |
I_END: |
|
sc system_colors |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |