Subversion Repositories Kolibri OS

Rev

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

Rev 4716 Rev 4717
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_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
 
24
 
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
  mcall 48, 3, sc, sizeof.system_colors
90
  mcall 48, 3, sc, sizeof.system_colors
91
 
91
 
92
  mcall 12,1
92
  mcall 12,1
93
 
93
 
94
  mov  edx,[sc.work]
94
  mov  edx,[sc.work]
95
  or   edx,0x34000000
95
  or   edx,0x34000000
96
  mcall 0, <220,120>, <30,FILECOUNT*16+35>, , ,title
96
  mcall 0, <220,120>, <30,FILECOUNT*16+35>, , ,title
97
 
97
 
98
  mov   ecx,FILECOUNT
98
  mov   ecx,FILECOUNT
99
  mov   ebx,5 shl 16+100
99
  mov   ebx,5 shl 16+100
100
  mov   esi,[sc.work_button]
100
  mov   esi,[sc.work_button]
101
  mov   edi,5 shl 16+14
101
  mov   edi,5 shl 16+14
102
  mov   edx,10
102
  mov   edx,10
103
  mov   eax,8
103
  mov   eax,8
104
 .btnlp:
104
 .btnlp:
105
  push  ecx
105
  push  ecx
106
  mcall ,,edi
106
  mcall ,,edi
107
  add   edi,16 shl 16
107
  add   edi,16 shl 16
108
  inc   edx
108
  inc   edx
109
  pop   ecx
109
  pop   ecx
110
  loop  .btnlp
110
  loop  .btnlp
111
  mov   ecx,FILECOUNT
111
  mov   ecx,FILECOUNT
112
  mov   edx,embedded
112
  mov   edx,embedded
113
  xor   edi,edi
113
  xor   edi,edi
114
  mov   ebx,25 shl 16+8
114
  mov   ebx,25 shl 16+8
115
  mov   eax,4
115
  mov   eax,4
116
 .list:
116
 .list:
117
  lea   edx,[edx+edi+8]
117
  lea   edx,[edx+edi+8]
118
  mov   edi,[edx-8]
118
  mov   edi,[edx-8]
119
  pusha
119
  pusha
120
  sub   ebx,15 shl 16
120
  sub   ebx,15 shl 16
121
  mcall ,,0xff0000,my_param,1
121
  mcall ,,0xff0000,my_param,1
122
  inc   [my_param]
122
  inc   [my_param]
123
  popa
123
  popa
124
  push  ecx
124
  push  ecx
125
  mov esi, [edx-4]
125
  mov esi, [edx-4]
126
  sub esi, 4 ;remove .txt extension
126
  sub esi, 4 ;remove .txt extension
127
  mcall ,,[sc.work_button_text]
127
  mcall ,,[sc.work_button_text]
128
  pop   ecx
128
  pop   ecx
-
 
129
  add   esi, 4
129
  add   edx,esi
130
  add   edx, esi
130
  add   ebx,16
131
  add   ebx,16
131
  loop  .list
132
  loop  .list
132
  mcall 12,2
133
  mcall 12,2
133
 
134
 
134
still:
135
still:
135
  mcall 10
136
  mcall 10
136
  cmp   eax,1
137
  cmp   eax,1
137
  je    red
138
  je    red
138
  cmp   eax,2
139
  cmp   eax,2
139
  jne   .nokey
140
  jne   .nokey
140
  mcall 2
141
  mcall 2
141
  cmp   ah,27 ;Esc
142
  cmp   ah,27 ;Esc
142
  je    start.close
143
  je    start.close
143
  cmp   ah,'a'
144
  cmp   ah,'a'
144
  jb    still
145
  jb    still
145
  cmp   ah,'a'+FILECOUNT
146
  cmp   ah,'a'+FILECOUNT
146
  jae   still
147
  jae   still
147
  jmp   .cxax
148
  jmp   .cxax
148
 .nokey:
149
 .nokey:
149
  mcall 17
150
  mcall 17
150
  cmp   ah,1
151
  cmp   ah,1
151
  je    start.close
152
  je    start.close
152
  sub   ah,10-'a'
153
  sub   ah,10-'a'
153
 .cxax:
154
 .cxax:
154
  movzx  ecx,ah
155
  movzx  ecx,ah
155
  jmp   start.open
156
  jmp   start.open
156
 
157
 
157
fileinfo:
158
fileinfo:
158
        dd      7
159
        dd      7
159
        dd      0
160
        dd      0
160
        dd      param
161
        dd      param
161
        dd      0 ,0
162
        dd      0 ,0
162
        db      '/sys/TINYPAD',0
163
        db      '/sys/TINYPAD',0
163
 
164
 
164
param  db '*'
165
param  db '*'
165
fsize:
166
fsize:
166
       times 10 db '0'
167
       times 10 db '0'
167
       db 0
168
       db 0
168
 
169
 
169
embedded:
170
embedded:
170
 
171
 
171
; Please use only filenames w/o path!
172
; Please use only filenames w/o path!
172
 
173
 
173
; -- Start of embedding area ------
174
; -- Start of embedding area ------
174
  embed_file 'README.TXT'        ;a
175
  embed_file 'README.TXT'        ;a
175
if lang eq ru
176
if lang eq ru
176
  embed_file 'GNU.TXT'           ;b
177
  embed_file 'GNU.TXT'           ;b
177
else
178
else
178
  embed_file 'COPYING.TXT'       ;b
179
  embed_file 'COPYING.TXT'       ;b
179
end if
180
end if
180
  embed_file 'HOT_KEYS.TXT'      ;c
181
  embed_file 'HOT_KEYS.TXT'      ;c
181
  embed_file 'FASM.TXT'          ;d
182
  embed_file 'FASM.TXT'          ;d
182
  embed_file 'MTDBG.TXT'         ;e
183
  embed_file 'MTDBG.TXT'         ;e
183
if lang eq ru
184
if lang eq ru
184
  embed_file 'SYSFUNCR.TXT'      ;f
185
  embed_file 'SYSFUNCR.TXT'      ;f
185
else
186
else
186
  embed_file 'SYSFUNCS.TXT'      ;f
187
  embed_file 'SYSFUNCS.TXT'      ;f
187
end if
188
end if
188
  embed_file 'STACK.TXT'         ;g
189
  embed_file 'STACK.TXT'         ;g
189
  embed_file 'KFAR_KEYS.TXT'     ;h
190
  embed_file 'KFAR_KEYS.TXT'     ;h
190
  embed_file 'INI.TXT'           ;i
191
  embed_file 'INI.TXT'           ;i
191
  embed_file 'OPENDIAL.TXT'      ;j
192
  embed_file 'OPENDIAL.TXT'      ;j
192
; -- End of embedding area  -------
193
; -- End of embedding area  -------
193
 
194
 
194
  dd 0
195
  dd 0
195
FILECOUNT = FILE_COUNT
196
FILECOUNT = FILE_COUNT
196
 
197
 
197
  if ~ FILECOUNT>0
198
  if ~ FILECOUNT>0
198
    error 'No embedded files'
199
    error 'No embedded files'
199
  end if
200
  end if
200
 
201
 
201
my_param db 0
202
my_param db 0
202
  rb 256
203
  rb 256
203
I_END:
204
I_END:
204
 
205
 
205
title db 'Doc Pack',0
206
title db 'Doc Pack',0
206
 
207
 
207
sc     system_colors
208
sc     system_colors