Subversion Repositories Kolibri OS

Rev

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

Rev 529 Rev 551
1
; project name:   SYSTREE FILE COPIER
1
; project name:   SYSTREE FILE COPIER
2
; version:        1.2
2
; version:        1.2
3
; Mario79 23/10/06
3
; Mario79 23/10/06
4
;
4
;
5
; version:        1.1b
5
; version:        1.1b
6
; last update:    18/07/2004
6
; last update:    18/07/2004
7
; compiler:       FASM 1.52
7
; compiler:       FASM 1.52
8
; written by:     Ivan Poddubny
8
; written by:     Ivan Poddubny
9
; e-mail:         ivan-yar@bk.ru
9
; e-mail:         ivan-yar@bk.ru
10
; copying-policy: GPL
10
; copying-policy: GPL
11
 
11
 
12
; History:
12
; History:
13
; 23/10/06 application use function 70
13
; 23/10/06 application use function 70
14
; 18/07/2004 strings using "lsz" macro + french language (not 100%!)
14
; 18/07/2004 strings using "lsz" macro + french language (not 100%!)
15
; 04/06/2004 Bugfix for memory - thanks to Ville
15
; 04/06/2004 Bugfix for memory - thanks to Ville
16
; ...
16
; ...
17
 
17
 
18
    use32
18
    use32
19
    org     0x0
19
    org     0x0
20
 
20
 
21
    db      'MENUET01'     ; 8 byte id
21
    db      'MENUET01'     ; 8 byte id
22
    dd      0x01           ; header version
22
    dd      0x01           ; header version
23
    dd      START          ; start of code
23
    dd      START          ; start of code
24
    dd      I_END          ; size of image
24
    dd      I_END          ; size of image
25
    dd      0x10000        ; memory for app
25
    dd      0x10000        ; memory for app
26
    dd      0x10000        ; esp
26
    dd      0x10000        ; esp
27
    dd      0x0 , 0x0      ; I_Param , I_Icon
27
    dd      0x0 , 0x0      ; I_Param , I_Icon
28
 
28
 
29
include 'lang.inc'
29
include 'lang.inc'
30
include '..\..\..\macros.inc'       ; very useful stuff for MeOS
30
include '..\..\..\macros.inc'       ; very useful stuff for MeOS
31
STRLEN = 48                ; maximal length of filename
31
STRLEN = 48                ; maximal length of filename
32
 
32
 
33
 
33
 
34
START:                     ; start of execution
34
START:                     ; start of execution
35
 
35
 
36
red:
36
red:
37
    call draw_window       ; at first, draw the window
37
    call draw_window       ; at first, draw the window
38
 
38
 
39
still:                     ; main cycle of application begins here
39
still:                     ; main cycle of application begins here
40
 
40
 
41
    mov  eax,10     ; wait here for event
41
    mov  eax,10     ; wait here for event
42
    mcall
42
    mcall
43
 
43
 
44
    dec  eax        ; redraw request ?
44
    dec  eax        ; redraw request ?
45
    jz   red
45
    jz   red
46
    dec  eax        ; key in buffer ?
46
    dec  eax        ; key in buffer ?
47
    jz   key
47
    jz   key
48
    dec  eax        ; button in buffer ?
48
    dec  eax        ; button in buffer ?
49
    jz   button
49
    jz   button
50
 
50
 
51
    jmp  still
51
    jmp  still
52
 
52
 
53
  key:              ; key event handler
53
  key:              ; key event handler
54
    mov  eax,2      ;   just read it and ignore
54
    mov  eax,2      ;   just read it and ignore
55
    mcall
55
    mcall
56
    jmp  still      ;   return to main loop
56
    jmp  still      ;   return to main loop
57
 
57
 
58
  button:           ; button
58
  button:           ; button
59
    mov  eax,17     ;   get id
59
    mov  eax,17     ;   get id
60
    mcall
60
    mcall
61
 
61
 
62
    cmp  ah,1       ;   button id=1 ?  (close_btn)
62
    cmp  ah,1       ;   button id=1 ?  (close_btn)
63
    jz   close
63
    jz   close
64
 
64
 
65
    cmp  ah,2       ;   copy ?
65
    cmp  ah,2       ;   copy ?
66
    je   copy_file
66
    je   copy_file
67
 
67
 
68
; read_string:
68
; read_string:
69
 
69
 
70
    cmp  ah,5       ; user pressed dest button ?
70
    cmp  ah,5       ; user pressed dest button ?
71
    jz   dstbtn
71
    jz   dstbtn
72
    cmp  ah,4       ; user pressed src button ?
72
    cmp  ah,4       ; user pressed src button ?
73
    jnz  still
73
    jnz  still
74
 
74
 
75
  srcbtn:
75
  srcbtn:
76
    mov  [addr],dword source_info.name  ;source
76
    mov  [addr],dword source_info.name  ;source
77
    mov  [ya],dword 36
77
    mov  [ya],dword 36
78
    jmp  rk
78
    jmp  rk
79
  dstbtn:
79
  dstbtn:
80
    mov  [addr],dword dest_info.name  ;destination
80
    mov  [addr],dword dest_info.name  ;destination
81
    mov  [ya],dword 36+16
81
    mov  [ya],dword 36+16
82
 
82
 
83
  rk:
83
  rk:
84
    mov  edi,[addr]    ; load the address of the string
84
    mov  edi,[addr]    ; load the address of the string
85
    mov  al,0          ; the symbol we will search for
85
    mov  al,0          ; the symbol we will search for
86
    mov  ecx,STRLEN+1  ; length of the string (+1)
86
    mov  ecx,STRLEN+1  ; length of the string (+1)
87
    cld                ; search forward
87
    cld                ; search forward
88
  repne  scasb         ; do search now
88
  repne  scasb         ; do search now
89
    inc  ecx           ; we've found a zero or ecx became 0
89
    inc  ecx           ; we've found a zero or ecx became 0
90
    mov  eax,STRLEN+1
90
    mov  eax,STRLEN+1
91
    sub  eax,ecx       ; eax = address of <0> character
91
    sub  eax,ecx       ; eax = address of <0> character
92
    mov  [temp],eax    ; position
92
    mov  [temp],eax    ; position
93
 
93
 
94
    call print_text
94
    call print_text
95
 
95
 
96
    mov  edi,[addr]    ; address of string
96
    mov  edi,[addr]    ; address of string
97
    add  edi,[temp]    ; cursor position
97
    add  edi,[temp]    ; cursor position
98
 
98
 
99
  .waitev:
99
  .waitev:
100
    mov  eax,10
100
    mov  eax,10
101
    mcall
101
    mcall
102
    cmp  eax,2
102
    cmp  eax,2
103
    jnz  still
103
    jnz  still
104
;   mov  eax,2
104
;   mov  eax,2
105
    mcall
105
    mcall
106
    shr  eax,8
106
    shr  eax,8
107
    cmp  eax,8
107
    cmp  eax,8
108
    jnz  .nobs         ; BACKSPACE
108
    jnz  .nobs         ; BACKSPACE
109
    cmp  edi,[addr]
109
    cmp  edi,[addr]
110
    jz   .waitev
110
    jz   .waitev
111
    dec  edi
111
    dec  edi
112
    mov  [edi],byte 0
112
    mov  [edi],byte 0
113
    call print_text
113
    call print_text
114
    jmp  .waitev
114
    jmp  .waitev
115
  .nobs:
115
  .nobs:
116
    cmp  eax,13        ; ENTER
116
    cmp  eax,13        ; ENTER
117
    je   still
117
    je   still
118
    cmp  eax,192
118
    cmp  eax,192
119
    jne  .noclear
119
    jne  .noclear
120
    xor  al,al
120
    xor  al,al
121
    mov  edi,[addr]
121
    mov  edi,[addr]
122
    mov  ecx,STRLEN
122
    mov  ecx,STRLEN
123
    rep  stosb
123
    rep  stosb
124
    mov  edi,[addr]
124
    mov  edi,[addr]
125
    call print_text
125
    call print_text
126
    jmp  .waitev
126
    jmp  .waitev
127
 
127
 
128
  .noclear:
128
  .noclear:
129
    mov  [edi],al
129
    mov  [edi],al
130
 
130
 
131
    call print_text
131
    call print_text
132
 
132
 
133
    inc  edi
133
    inc  edi
134
    mov  esi,[addr]
134
    mov  esi,[addr]
135
    add  esi,STRLEN
135
    add  esi,STRLEN
136
    cmp  esi,edi
136
    cmp  esi,edi
137
    jnz  .waitev
137
    jnz  .waitev
138
 
138
 
139
    jmp  still
139
    jmp  still
140
 
140
 
141
 
141
 
142
  close:
142
  close:
143
    or   eax,-1        ; close program
143
    or   eax,-1        ; close program
144
    mcall
144
    mcall
145
 
145
 
146
 
146
 
147
;====================================================
147
;====================================================
148
; copy_file
148
; copy_file
149
;   This piece of code copies src file to dst file,
149
;   This piece of code copies src file to dst file,
150
;   then it pass the control to copy_error routine,
150
;   then it pass the control to copy_error routine,
151
;   which returns to the main cycle of the app.
151
;   which returns to the main cycle of the app.
152
;   It's NOT a function! It's reached by direct jump
152
;   It's NOT a function! It's reached by direct jump
153
;   from the button handler.
153
;   from the button handler.
154
;====================================================
154
;====================================================
155
copy_file:
155
copy_file:
156
    ; at first we must get the size of the source file
156
    ; at first we must get the size of the source file
157
    mcall 70, get_param_info
157
    mcall 70, get_param_info
158
 
158
 
159
    ; now eax contains error code
159
    ; now eax contains error code
160
    test eax,eax      ; check if eax is equal to zero (success)
160
    test eax,eax      ; check if eax is equal to zero (success)
161
    jne  copy_error   ; print error code now
161
    jne  copy_error   ; print error code now
162
 
162
 
163
    ; allocate memory
163
    ; allocate memory
164
    mov  ecx,[param_info+32]   ;ebx
164
    mov  ecx,[param_info+32]   ;ebx
165
    add  ecx,0x10000 ; size of memory needed = 0x10000+filesize
165
    add  ecx,0x10000 ; size of memory needed = 0x10000+filesize
166
    mov  eax,64      ; func 64
166
    mov  eax,64      ; func 64
167
    mov  ebx,1       ; resize application memory
167
    mov  ebx,1       ; resize application memory
168
    mcall
168
    mcall
169
 
169
 
170
    ; check if alloc function failed
170
    ; check if alloc function failed
171
    test eax,eax     ; non-zero value means error
171
    test eax,eax     ; non-zero value means error
172
    je   .ok_memory
172
    je   .ok_memory
173
    mov  eax,5       ; error 5 - out of memory
173
    mov  eax,5       ; error 5 - out of memory
174
    jmp  copy_error  ; print error code now
174
    jmp  copy_error  ; print error code now
175
  .ok_memory:
175
  .ok_memory:
176
 
176
 
177
    ; save size to source_info
177
    ; save size to source_info
178
    mov  ebx,[param_info+32]
178
    mov  ebx,[param_info+32]
179
    mov  [source_info.size],ebx    ; read the source file
179
    mov  [source_info.size],ebx    ; read the source file
180
    mcall 70,source_info
180
    mcall 70,source_info
181
 
181
 
182
    ; now eax contains error code
182
    ; now eax contains error code
183
    test eax,eax      ; check if eax is equal to zero (success)
183
    test eax,eax      ; check if eax is equal to zero (success)
184
    jne  copy_error   ; print error code now
184
    jne  copy_error   ; print error code now
185
 
185
 
186
    ; file size in bytes
186
    ; file size in bytes
187
    mov   [dest_info.size],ebx
187
    mov   [dest_info.size],ebx
188
 
188
 
189
    ; save loaded file
189
    ; save loaded file
190
    mcall 70,dest_info
190
    mcall 70,dest_info
191
 
191
 
192
    ; now eax contains error code
192
    ; now eax contains error code
193
    test eax,eax
193
    test eax,eax
194
    jne  copy_error
194
    jne  copy_error
195
 
195
 
196
    ; return to the initial amount of memory
196
    ; return to the initial amount of memory
197
    mov  eax,64
197
    mov  eax,64
198
    mov  ebx,1
198
    mov  ebx,1
199
    mov  ecx,0x10000
199
    mov  ecx,0x10000
200
    mcall
200
    mcall
201
 
201
 
202
    xor  eax,eax      ; eax = message number (0-OK)
202
    xor  eax,eax      ; eax = message number (0-OK)
203
 
203
 
204
 
204
 
205
; print message now
205
; print message now
206
copy_error:
206
copy_error:
207
    mov  edi,eax
207
    mov  edi,eax
208
    mov  eax,4
208
    mov  eax,4
209
    mov  ebx,20*65536+83
209
    mov  ebx,20*65536+83
210
    mov  ecx,0x10ff0000
210
    mov  ecx,0x10ff0000
211
    mov  edx,[errors+edi*8]
211
    mov  edx,[errors+edi*8]
212
    mov  esi,[errors+edi*8+4]
212
    mov  esi,[errors+edi*8+4]
213
    mcall
213
    mcall
214
jmp still
214
jmp still
215
 
215
 
216
 
216
 
217
; print strings (source & destination)
217
; print strings (source & destination)
218
print_text:
218
print_text:
219
    mov  eax,13
219
    mov  eax,13
220
    mov  ebx,107*65536+STRLEN*6
220
    mov  ebx,107*65536+STRLEN*6
221
    mov  ecx,[ya]
221
    mov  ecx,[ya]
222
    shl  ecx,16
222
    shl  ecx,16
223
    add  ecx,9
223
    add  ecx,9
224
    mov  edx,0xf2f2f2
224
    mov  edx,0xf2f2f2
225
    mcall
225
    mcall
226
 
226
 
227
    mov  eax,4
227
    mov  eax,4
228
    mov  ebx,109*65536
228
    mov  ebx,109*65536
229
    add  ebx,[ya]
229
    add  ebx,[ya]
230
    xor  ecx,ecx
230
    xor  ecx,ecx
231
    mov  edx,[addr]
231
    mov  edx,[addr]
232
    mov  esi,STRLEN
232
    mov  esi,STRLEN
233
    mcall
233
    mcall
234
 
234
 
235
    ret
235
    ret
236
 
236
 
237
 
237
 
238
;   *********************************************
238
;   *********************************************
239
;   *******  WINDOW DEFINITIONS AND DRAW ********
239
;   *******  WINDOW DEFINITIONS AND DRAW ********
240
;   *********************************************
240
;   *********************************************
241
 
241
 
242
 
242
 
243
draw_window:
243
draw_window:
244
 
244
 
245
    mov  eax, 12                   ; function 12:tell os about windowdraw
245
    mov  eax, 12                   ; function 12:tell os about windowdraw
246
    mov  ebx, 1                    ; 1, start of draw
246
    mov  ebx, 1                    ; 1, start of draw
247
    mcall
247
    mcall
248
 
248
 
249
                                   ; DRAW WINDOW
249
                                   ; DRAW WINDOW
250
    xor  eax, eax                  ; function 0 : define and draw window
250
    xor  eax, eax                  ; function 0 : define and draw window
251
    mov  ebx, 160*65536+415        ; [x start] *65536 + [x size]
251
    mov  ebx, 160*65536+415        ; [x start] *65536 + [x size]
252
    mov  ecx, 160*65536+100        ; [y start] *65536 + [y size]
252
    mov  ecx, 160*65536+100        ; [y start] *65536 + [y size]
253
    mov  edx, 0x13DDDDDD           ; color of work area RRGGBB
253
    mov  edx, 0x14DDDDDD           ; color of work area RRGGBB
254
    mov  edi, title                ; WINDOW LABEL
254
    mov  edi, title                ; WINDOW LABEL
255
    mcall
255
    mcall
256
 
256
 
257
    mov  eax, 8                    ; COPY BUTTON
257
    mov  eax, 8                    ; COPY BUTTON
258
    mov  ebx, 20*65536+375
258
    mov  ebx, 20*65536+375
259
    mov  ecx, 63*65536+16
259
    mov  ecx, 63*65536+16
260
    mov  edx, 2
260
    mov  edx, 2
261
    mov  esi, 0xCCCCCC
261
    mov  esi, 0xCCCCCC
262
    mcall
262
    mcall
263
 
263
 
264
    mov  ebx, 105*65536+290
264
    mov  ebx, 105*65536+290
265
    mov  ecx, 33*65536+12
265
    mov  ecx, 33*65536+12
266
    mov  edx, 4
266
    mov  edx, 4
267
    mov  esi, 0xEBEBEB
267
    mov  esi, 0xEBEBEB
268
    mcall
268
    mcall
269
 
269
 
270
    mov  ebx, 105*65536+290
270
    mov  ebx, 105*65536+290
271
    mov  ecx, 49*65536+12
271
    mov  ecx, 49*65536+12
272
    mov  edx, 5
272
    mov  edx, 5
273
    mov  esi, 0xEBEBEB
273
    mov  esi, 0xEBEBEB
274
    mcall
274
    mcall
275
 
275
 
276
    mov  esi, source_info.name  ;source
276
    mov  esi, source_info.name  ;source
277
    mov  edi, text+14
277
    mov  edi, text+14
278
    mov  ecx, STRLEN
278
    mov  ecx, STRLEN
279
    rep  movsb
279
    rep  movsb
280
 
280
 
281
    mov  esi, dest_info.name  ;destination
281
    mov  esi, dest_info.name  ;destination
282
    mov  edi, text+STRLEN+59-45+14
282
    mov  edi, text+STRLEN+59-45+14
283
    mov  ecx, STRLEN
283
    mov  ecx, STRLEN
284
    rep  movsb
284
    rep  movsb
285
 
285
 
286
    mov  ebx, 25*65536+36   ; print filenames
286
    mov  ebx, 25*65536+36   ; print filenames
287
    xor  ecx, ecx
287
    xor  ecx, ecx
288
    mov  edx, text
288
    mov  edx, text
289
    mov  esi, STRLEN+59-45
289
    mov  esi, STRLEN+59-45
290
  newline:
290
  newline:
291
    mov  eax, 4
291
    mov  eax, 4
292
    mcall
292
    mcall
293
    add  ebx, 16
293
    add  ebx, 16
294
    add  edx, STRLEN+59-45
294
    add  edx, STRLEN+59-45
295
    cmp  [edx], byte 'x'
295
    cmp  [edx], byte 'x'
296
    jnz  newline
296
    jnz  newline
297
 
297
 
298
    mov  eax, 12                   ; function 12:tell os about windowdraw
298
    mov  eax, 12                   ; function 12:tell os about windowdraw
299
    mov  ebx, 2                    ; 2, end of draw
299
    mov  ebx, 2                    ; 2, end of draw
300
    mcall
300
    mcall
301
 
301
 
302
    ret
302
    ret
303
 
303
 
304
 
304
 
305
; DATA AREA
305
; DATA AREA
306
get_param_info:
306
get_param_info:
307
 .subfunction	 dd   5 	      ; 5 - get parameters of file
307
 .subfunction	 dd   5 	      ; 5 - get parameters of file
308
 .start        dd   0        ; rezerved
308
 .start        dd   0        ; rezerved
309
 .size_high    dd   0 	      ; rezerved
309
 .size_high    dd   0 	      ; rezerved
310
 .size         dd   0	      ; rezerved
310
 .size         dd   0	      ; rezerved
311
 .return	      dd   param_info
311
 .return	      dd   param_info
312
 .name:
312
 .name:
313
     db  0
313
     db  0
314
     dd  source_info.name
314
     dd  source_info.name
315
 
315
 
316
source_info:                 ; SOURCE FILEINFO
316
source_info:                 ; SOURCE FILEINFO
317
 .subfunction	 dd   0 	      ; 0=READ
317
 .subfunction	 dd   0 	      ; 0=READ
318
 .start        dd   0        
318
 .start        dd   0        
319
 .size_high    dd   0 	     
319
 .size_high    dd   0 	     
320
 .size         dd   0	      
320
 .size         dd   0	      
321
 .return	      dd   0x10000
321
 .return	      dd   0x10000
322
 .name:
322
 .name:
323
     db   '/hd0/1/kernel/kernel.mnt',0   ; ASCIIZ dir & filename
323
     db   '/hd0/1/kernel/kernel.mnt',0   ; ASCIIZ dir & filename
324
     times (STRLEN-24) db 0
324
     times (STRLEN-24) db 0
325
 
325
 
326
dest_info:                   ; DESTINATION FILEINFO
326
dest_info:                   ; DESTINATION FILEINFO
327
 .subfunction	 dd   2 	      ; 0=WRITE
327
 .subfunction	 dd   2 	      ; 0=WRITE
328
 .start        dd   0        
328
 .start        dd   0        
329
 .size_high    dd   0 	     
329
 .size_high    dd   0 	     
330
 .size         dd   0	      
330
 .size         dd   0	      
331
 .return	      dd   0x10000
331
 .return	      dd   0x10000
332
 .name:
332
 .name:
333
     db   '/sys/kernel.mnt',0   ; ASCIIZ dir & filename
333
     db   '/sys/kernel.mnt',0   ; ASCIIZ dir & filename
334
    times (STRLEN-16) db 0
334
    times (STRLEN-16) db 0
335
 
335
 
336
param_info:
336
param_info:
337
     rb 40
337
     rb 40
338
 
338
 
339
 
339
 
340
;align 4
340
;align 4
341
;source_info:                 ; SOURCE FILEINFO
341
;source_info:                 ; SOURCE FILEINFO
342
;  .mode            dd 0      ; read file
342
;  .mode            dd 0      ; read file
343
;  .start_block     dd 0x0    ; block to read
343
;  .start_block     dd 0x0    ; block to read
344
;  .blocks          dd 0x700  ; num of blocks
344
;  .blocks          dd 0x700  ; num of blocks
345
;  .address         dd 0x20000
345
;  .address         dd 0x20000
346
;  .workarea        dd 0x10000
346
;  .workarea        dd 0x10000
347
;  source           db '/HD/1/KERNEL/KERNEL.MNT',0
347
;  source           db '/HD/1/KERNEL/KERNEL.MNT',0
348
;    times (STRLEN-23) db 0
348
;    times (STRLEN-23) db 0
349
;
349
;
350
;dest_info:                   ; DESTINATION FILEINFO
350
;dest_info:                   ; DESTINATION FILEINFO
351
;  .mode            dd 1      ; write
351
;  .mode            dd 1      ; write
352
;  .notused         dd 0x0    ; not used
352
;  .notused         dd 0x0    ; not used
353
;  .bytes2write     dd 0      ; bytes to write
353
;  .bytes2write     dd 0      ; bytes to write
354
;  .address         dd 0x20000
354
;  .address         dd 0x20000
355
;  .workarea        dd 0x10000
355
;  .workarea        dd 0x10000
356
;  destination      db '/RD/1/KERNEL.MNT',0
356
;  destination      db '/RD/1/KERNEL.MNT',0
357
;    times (STRLEN-16) db 0
357
;    times (STRLEN-16) db 0
358
 
358
 
359
  align 4
359
  align 4
360
  addr  dd  0x0
360
  addr  dd  0x0
361
  ya    dd  0x0
361
  ya    dd  0x0
362
  temp  dd  0
362
  temp  dd  0
363
 
363
 
364
 
364
 
365
lsz  text,\
365
lsz  text,\
366
  ru, '   Ž’Š“„€:    |   ®áá¨ï, Ÿà®á« ¢«ì                           ',\
366
  ru, '   Ž’Š“„€:    |   ®áá¨ï, Ÿà®á« ¢«ì                           ',\
367
  ru, '    Š“„€:     |        ®¤¤ã¡­ë© ˆ¢ ­, ivan-yar@bk.ru         ',\
367
  ru, '    Š“„€:     |        ®¤¤ã¡­ë© ˆ¢ ­, ivan-yar@bk.ru         ',\
368
  ru, '                         ŠŽˆŽ‚€’œ                           ',\
368
  ru, '                         ŠŽˆŽ‚€’œ                           ',\
369
  ru, 'x',\ ; <- END MARKER, DONT DELETE
369
  ru, 'x',\ ; <- END MARKER, DONT DELETE
370
\
370
\
371
  en, 'SOURCE:       |   Russia, Yaroslavl                           ',\
371
  en, 'SOURCE:       |   Russia, Yaroslavl                           ',\
372
  en, 'DESTINATION:  |        Poddubny Ivan, ivan-yar@bk.ru          ',\
372
  en, 'DESTINATION:  |        Poddubny Ivan, ivan-yar@bk.ru          ',\
373
  en, '                   COPY SOURCE -> DESTINATION                 ',\
373
  en, '                   COPY SOURCE -> DESTINATION                 ',\
374
  en, 'x',\ ; <- END MARKER, DONT DELETE
374
  en, 'x',\ ; <- END MARKER, DONT DELETE
375
\
375
\
376
  de, 'QUELLE:       |   Russia, Yaroslavl                           ',\
376
  de, 'QUELLE:       |   Russia, Yaroslavl                           ',\
377
  de, 'ZIEL:         |        Poddubny Ivan, ivan-yar@bk.ru          ',\
377
  de, 'ZIEL:         |        Poddubny Ivan, ivan-yar@bk.ru          ',\
378
  de, '                   KOPIERE QUELLE -> ZIEL                     ',\
378
  de, '                   KOPIERE QUELLE -> ZIEL                     ',\
379
  de, 'x',\ ; <- END MARKER, DONT DELETE
379
  de, 'x',\ ; <- END MARKER, DONT DELETE
380
\
380
\
381
  fr, 'SOURCE:       |                                               ',\
381
  fr, 'SOURCE:       |                                               ',\
382
  fr, 'DESTINATION:  |                                               ',\
382
  fr, 'DESTINATION:  |                                               ',\
383
  fr, '                           COPIER                             ',\
383
  fr, '                           COPIER                             ',\
384
  fr, 'x'
384
  fr, 'x'
385
 
385
 
386
 
386
 
387
lsz  title,\
387
lsz  title,\
388
  ru, 'ŠŽˆŽ‚€’œ ”€‰‹',\
388
  ru, 'ŠŽˆŽ‚€’œ ”€‰‹',\
389
  en, 'SYSTREE FILE COPIER',\
389
  en, 'SYSTREE FILE COPIER',\
390
  de, 'SYSTREE DATEIKOPIERER',\
390
  de, 'SYSTREE DATEIKOPIERER',\
391
  fr, 'COPIER LE FICHIER'
391
  fr, 'COPIER LE FICHIER'
392
 
392
 
393
 
393
 
394
;  This macro is used to define a string table in format 
394
;  This macro is used to define a string table in format 
395
macro strtbl name,[string]
395
macro strtbl name,[string]
396
 {
396
 {
397
  common
397
  common
398
    label name dword
398
    label name dword
399
  forward
399
  forward
400
    local str,size
400
    local str,size
401
    dd str,size
401
    dd str,size
402
  forward
402
  forward
403
    str db string
403
    str db string
404
    size = $ - str
404
    size = $ - str
405
 }
405
 }
406
 
406
 
407
if lang eq ru
407
if lang eq ru
408
strtbl errors,\
408
strtbl errors,\
409
       "ä ©« ᪮¯¨à®¢ ­ ãᯥ譮",\
409
       "ä ©« ᪮¯¨à®¢ ­ ãᯥ譮",\
410
       "(ç⥭¨¥) ­¥ § ¤ ­  ¡ §  ¦¤",\
410
       "(ç⥭¨¥) ­¥ § ¤ ­  ¡ §  ¦¤",\
411
       "(ç⥭¨¥) ä ©«®¢ ï á¨á⥬  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï",\
411
       "(ç⥭¨¥) ä ©«®¢ ï á¨á⥬  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï",\
412
       "(ç⥭¨¥) ­¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ",\
412
       "(ç⥭¨¥) ­¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ",\
413
       "(ç⥭¨¥) ­¥ § ¤ ­ à §¤¥« ¦¤",\
413
       "(ç⥭¨¥) ­¥ § ¤ ­ à §¤¥« ¦¤",\
414
       "­¥¤®áâ â®ç­® ¯ ¬ïâ¨",\
414
       "­¥¤®áâ â®ç­® ¯ ¬ïâ¨",\
415
       "(ç⥭¨¥) ª®­¥æ ä ©« ",\
415
       "(ç⥭¨¥) ª®­¥æ ä ©« ",\
416
       "(ç⥭¨¥) ­¥¨§¢¥áâ­ ï ®è¨¡ª ",\
416
       "(ç⥭¨¥) ­¥¨§¢¥áâ­ ï ®è¨¡ª ",\
417
       "(§ ¯¨áì) ­¥ § ¤ ­ à §¤¥« ¦¤",\
417
       "(§ ¯¨áì) ­¥ § ¤ ­ à §¤¥« ¦¤",\
418
       "(§ ¯¨áì) ä ©«®¢ ï á¨á⥬  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï",\
418
       "(§ ¯¨áì) ä ©«®¢ ï á¨á⥬  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï",\
419
       "(§ ¯¨áì) ­¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ",\
419
       "(§ ¯¨áì) ­¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ",\
420
       "(§ ¯¨áì) ­¥ § ¤ ­ à §¤¥« ¦¤",\
420
       "(§ ¯¨áì) ­¥ § ¤ ­ à §¤¥« ¦¤",\
421
       "?",\
421
       "?",\
422
       "(§ ¯¨áì) ä ©« ­¥ ­ ©¤¥­",\
422
       "(§ ¯¨áì) ä ©« ­¥ ­ ©¤¥­",\
423
       "(§ ¯¨áì) ­¥¨§¢¥áâ­ ï ®è¨¡ª "
423
       "(§ ¯¨áì) ­¥¨§¢¥áâ­ ï ®è¨¡ª "
424
else if lang eq en
424
else if lang eq en
425
strtbl errors,\
425
strtbl errors,\
426
       "Success!",\
426
       "Success!",\
427
       "(read) no hd base or partition defined",\
427
       "(read) no hd base or partition defined",\
428
       "(read) unsupported file system",\
428
       "(read) unsupported file system",\
429
       "(read) unknown file system",\
429
       "(read) unknown file system",\
430
       "(read) hd partition not defined",\
430
       "(read) hd partition not defined",\
431
       "out of memory",\
431
       "out of memory",\
432
       "(read) end of file",\
432
       "(read) end of file",\
433
       "(read) unknown error",\
433
       "(read) unknown error",\
434
       "(write) no hd base or partition defined",\
434
       "(write) no hd base or partition defined",\
435
       "(write) unsupported file system",\
435
       "(write) unsupported file system",\
436
       "(write) unknown file system",\
436
       "(write) unknown file system",\
437
       "(write) hd partition not defined",\
437
       "(write) hd partition not defined",\
438
       "?",\
438
       "?",\
439
       "(write) end of file",\
439
       "(write) end of file",\
440
       "(write) unknown error"
440
       "(write) unknown error"
441
else
441
else
442
strtbl errors,\
442
strtbl errors,\
443
       "Erfolgreich!",\
443
       "Erfolgreich!",\
444
       "(lesen) Keine Festplatte oder Partition definiert",\
444
       "(lesen) Keine Festplatte oder Partition definiert",\
445
       "(lesen) Dateisystem nicht unterstuetzt",\
445
       "(lesen) Dateisystem nicht unterstuetzt",\
446
       "(lesen) Unbekanntes Dateisystem",\
446
       "(lesen) Unbekanntes Dateisystem",\
447
       "(lesen) Keine Partition definiert",\
447
       "(lesen) Keine Partition definiert",\
448
       "Zu wenig Speicher",\
448
       "Zu wenig Speicher",\
449
       "(lesen) Dateiende erreicht",\
449
       "(lesen) Dateiende erreicht",\
450
       "(lesen) Unbekanner Fehler",\
450
       "(lesen) Unbekanner Fehler",\
451
       "(schreiben) Keine Festplatte oder Partition definiert",\
451
       "(schreiben) Keine Festplatte oder Partition definiert",\
452
       "(schreiben) Dateisystem nicht unterstuetzt",\
452
       "(schreiben) Dateisystem nicht unterstuetzt",\
453
       "(schreiben) Unbekanntes Dateisystem",\
453
       "(schreiben) Unbekanntes Dateisystem",\
454
       "(schreiben) Keine Partition definiert",\
454
       "(schreiben) Keine Partition definiert",\
455
       "?",\
455
       "?",\
456
       "(schreiben) Dateiende erreicht",\
456
       "(schreiben) Dateiende erreicht",\
457
       "(schreiben) Unbekanner Fehler"
457
       "(schreiben) Unbekanner Fehler"
458
end if
458
end if
459
 
459
 
460
I_END:
460
I_END: