;--------------------------------------------------------------------- ; ; 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 '%DOCDIR%' # 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 mcall mcall 12,1 xor eax,eax mov ebx,220*65536+120 mov ecx,30*65536+FILECOUNT*16+35 mov edx,[sc.work] or edx,0x34000000 mov edi,title mcall 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 title db appname,0 fileinfo: dd 7 dd 0 dd param dd 0 ,0 db '/sys/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 if lang eq ru embed_file 'GNU.TXT' ;b else embed_file 'COPYING.TXT' ;b end if embed_file 'HOT_KEYS.TXT' ;c embed_file 'FASM.TXT' ;d embed_file 'MTDBG.TXT' ;e if lang eq ru embed_file 'VRR_RUS.TXT' ;f embed_file 'SYSFUNCR.TXT' ;g embed_file 'STACK_RU.TXT' ;h embed_file 'GROBFAR.TXT' ;i else embed_file 'VRR_ENG.TXT' ;f embed_file 'SYSFUNCS.TXT' ;g embed_file 'STACK.TXT' ;h embed_file 'FARA.TXT' ;i end if embed_file 'KFAR_KEYS.TXT' ;j embed_file 'INI.TXT' ;k ; -- 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