Subversion Repositories Kolibri OS

Rev

Rev 1736 | Rev 2689 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
123 diamond 1
;---------------------------------------------------------------------
2
;
3
;   DOCPAK FOR MENUET v1.1
4
;   Written in pure assembly by Ivushkin Andrey aka Willow
5
;
6
;---------------------------------------------------------------------
7
 
8
FILE_COUNT=0
9
DEF_FILE equ 'g'
10
 
11
macro embed_file fn
12
{
13
 forward
14
   local label,label2,label3
15
   dd label2-label
16
   dd label-label3
17
   label3:
18
   db fn
19
   label:
1735 clevermous 20
     file '%DOCDIR%' # fn
123 diamond 21
   label2:
22
   FILE_COUNT=FILE_COUNT+1
23
}
180 heavyiron 24
appname equ 'Doc Pack'
123 diamond 25
   use32
26
   org    0x0
27
   db     'MENUET01'              ; 8 byte id
28
   dd     0x01                    ; header version
29
   dd     start                   ; start of code
30
   dd     I_END                   ; size of image
31
   dd     I_END+0x400             ; memory for app
32
   dd     I_END+0x400             ; esp
33
   dd     my_param , 0x0          ; I_Param , I_Icon
1741 dunkaist 34
include '../../../macros.inc'
1736 clevermous 35
include 'lang.inc'
123 diamond 36
 
37
start:
38
  cmp   [my_param],0
39
  je    red
40
  cmp   [my_param],'a'
41
  jb    .par_a
42
  cmp   [my_param],'z'
43
  jbe   .ok2
44
 .par_a:
45
  mov   [my_param],DEF_FILE
46
 .ok2:
47
  movzx ecx,[my_param]
48
  mov   [my_param],'*'
49
 .open:
50
  sub   ecx,'a'-1
51
  mov   edx,embedded
52
  xor   esi,esi
53
 .list:
54
  lea   edx,[edx+esi+8]
55
  mov   esi,[edx-8]
56
  add   edx,[edx-4]
57
  test  esi,esi
58
  jz    .close
59
  loop  .list
60
        push    edx
61
; convert number in esi to decimal representation
62
        mov     ecx, 10
63
        push    -'0'
64
        mov     eax, esi
65
@@:
66
        xor	edx, edx
67
        div     ecx
68
        push    edx
69
        test    eax, eax
70
        jnz     @b
71
        mov     edi, fsize
72
@@:
73
        pop     eax
74
        add     al, '0'
75
        stosb
76
        jnz     @b
77
  mcall 70,fileinfo
78
  mov   ecx,eax
79
  mcall 5,20
80
  pop   edx
81
  mcall 60,2
82
  cmp   [my_param],'*'
83
  jne   still
84
 .close:
85
  mcall -1
86
 
87
red:
88
  mov   [my_param],'a'
180 heavyiron 89
 
90
  mov  eax,48
91
  mov  ebx,3
92
  mov  ecx,sc
93
  mov  edx,sizeof.system_colors
485 heavyiron 94
  mcall
180 heavyiron 95
 
123 diamond 96
  mcall 12,1
180 heavyiron 97
 
98
  xor  eax,eax
99
  mov  ebx,220*65536+120
100
  mov  ecx,30*65536+FILECOUNT*16+35
101
  mov  edx,[sc.work]
551 spraid 102
  or   edx,0x34000000
485 heavyiron 103
  mov  edi,title
104
  mcall
180 heavyiron 105
 
123 diamond 106
  mov   ecx,FILECOUNT
180 heavyiron 107
  mov   ebx,5 shl 16+100
108
  mov   esi,[sc.work_button]
109
  mov   edi,5 shl 16+14
123 diamond 110
  mov   edx,10
111
  mov   eax,8
112
 .btnlp:
113
  push  ecx
114
  mcall ,,edi
115
  add   edi,16 shl 16
116
  inc   edx
117
  pop   ecx
118
  loop  .btnlp
119
  mov   ecx,FILECOUNT
120
  mov   edx,embedded
121
  xor   edi,edi
180 heavyiron 122
  mov   ebx,25 shl 16+8
123 diamond 123
  mov   eax,4
124
 .list:
125
  lea   edx,[edx+edi+8]
126
  mov   edi,[edx-8]
127
  pusha
128
  sub   ebx,15 shl 16
180 heavyiron 129
  mcall ,,0xff0000,my_param,1
123 diamond 130
  inc   [my_param]
131
  popa
132
  push  ecx
180 heavyiron 133
  mcall ,,[sc.work_button_text],,[edx-4]
123 diamond 134
  pop   ecx
135
  add   edx,esi
136
  add   ebx,16
137
  loop  .list
138
  mcall 12,2
139
 
140
still:
141
  mcall 10
142
  cmp   eax,1
143
  je    red
144
  cmp   eax,2
145
  jne   .nokey
146
  mcall 2
147
  cmp   ah,27 ;Esc
148
  je    start.close
149
  cmp   ah,'a'
150
  jb    still
151
  cmp   ah,'a'+FILECOUNT
152
  jae   still
153
  jmp   .cxax
154
 .nokey:
155
  mcall 17
156
  cmp   ah,1
157
  je    start.close
158
  sub   ah,10-'a'
159
 .cxax:
160
  movzx  ecx,ah
161
  jmp   start.open
162
 
485 heavyiron 163
title  db appname,0
123 diamond 164
 
165
fileinfo:
166
        dd      7
167
        dd      0
168
        dd      param
180 heavyiron 169
        dd      0 ,0
539 spraid 170
        db      '/sys/TINYPAD',0
123 diamond 171
 
172
param  db '*'
173
fsize:
174
       times 10 db '0'
175
       db 0
176
 
177
embedded:
178
 
179
; Please use only filenames w/o path!
180
 
181
; -- Start of embedding area ------
182
  embed_file 'README.TXT'        ;a
1735 clevermous 183
if lang eq ru
123 diamond 184
  embed_file 'GNU.TXT'           ;b
1735 clevermous 185
else
186
  embed_file 'COPYING.TXT'       ;b
187
end if
123 diamond 188
  embed_file 'HOT_KEYS.TXT'      ;c
189
  embed_file 'FASM.TXT'          ;d
190
  embed_file 'MTDBG.TXT'         ;e
1735 clevermous 191
if lang eq ru
123 diamond 192
  embed_file 'VRR_RUS.TXT'       ;f
193
  embed_file 'SYSFUNCR.TXT'      ;g
1735 clevermous 194
  embed_file 'STACK_RU.TXT'      ;h
195
  embed_file 'GROBFAR.TXT'       ;i
196
else
197
  embed_file 'VRR_ENG.TXT'       ;f
198
  embed_file 'SYSFUNCS.TXT'      ;g
199
  embed_file 'STACK.TXT'         ;h
200
  embed_file 'FARA.TXT'          ;i
201
end if
202
  embed_file 'KFAR_KEYS.TXT'     ;j
203
  embed_file 'INI.TXT'           ;k
123 diamond 204
; -- End of embedding area  -------
205
 
206
  dd 0
207
FILECOUNT = FILE_COUNT
208
 
209
  if ~ FILECOUNT>0
210
    error 'No embedded files'
211
  end if
212
 
213
my_param db 0
214
  rb 256
215
I_END:
180 heavyiron 216
 
217
sc     system_colors