Subversion Repositories Kolibri OS

Rev

Rev 1736 | Rev 2689 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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