Subversion Repositories Kolibri OS

Rev

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

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