Subversion Repositories Kolibri OS

Rev

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

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