Subversion Repositories Kolibri OS

Rev

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

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