Subversion Repositories Kolibri OS

Rev

Rev 205 | Rev 353 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 205 Rev 341
Line 1... Line 1...
1
;
1
;
2
;   Save Ramdisk to HD and FD
2
;   RDsave ¤«ï Kolibri (0.6.5.0 ¨ áâ àè¥)
-
 
3
;   
3
;   Mario79 2005
4
;   Mario79 2005
4
;   Compile with FASM for Menuet
5
;   Heavyiron 12.02.2007
5
;
6
;
-
 
7
;   Š®¬¯¨«¨à®¢ âì FASM'®¬
6
 
8
;
-
 
9
;---------------------------------------------------------------------
7
include 'lang.inc'
10
include 'lang.inc'
8
include 'macros.inc'
11
include 'macros.inc'
Line 9... Line 12...
9
 
12
 
10
appname equ 'RDsave '
13
appname equ 'RDsave '
Line 11... Line -...
11
version equ '1.1'
-
 
-
 
14
version equ '1.2'
12
 
15
  
Line 13... Line 16...
13
  use32
16
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
14
  org     0x0
17
  org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
15
 
18
 
16
  db     'MENUET01'     ; 8 byte id
19
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
17
  dd     0x01           ; header version
20
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
18
  dd     START          ; start of code
21
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
19
  dd     I_END          ; size of image
22
  dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
20
  dd     0x1000         ; memory for app
-
 
21
  dd     0x1000         ; esp
-
 
22
  dd     0x0 , 0x0      ; I_Param , I_Icon
23
  dd     0x1000      ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
23
 
-
 
24
 
24
  dd     0x1000      ;  ¤à¥á ¢¥à設ë áâíª 
25
;******************************************************************************
-
 
26
 
-
 
27
 
25
  dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
28
START:                ; start of execution
-
 
29
    xor  eax,eax
26
  dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
30
    mov  edi,bootpath
27
 
31
    mov  ecx,128
28
include 'editbox.inc'
32
    rep  stosd
-
 
33
 
-
 
34
    mcall 6,filename,0,-1,bootpath
-
 
35
 
-
 
36
    mov esi,bootpath+1
-
 
37
    mov cx,512
-
 
38
  start_search:
-
 
39
    lodsb
-
 
40
    cmp al,"'"
-
 
41
    jz    set_end_path
29
use_edit_box
42
    dec cx
-
 
43
    cmp cx,0
30
 
Line -... Line 31...
-
 
31
;---------------------------------------------------------------------
44
    ja    start_search
32
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
45
  set_end_path:
33
;---------------------------------------------------------------------
46
    mov [esi-1],byte 0
34
 
-
 
35
START:
-
 
36
   mov eax, 40
Line 47... Line -...
47
 
-
 
-
 
37
   mov ebx, 100111b
-
 
38
   int 0x40
48
    mov  eax,40
39
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
Line 49... Line 40...
49
    mov  ebx,101b
40
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
-
 
41
 
-
 
42
;---------------------------------------------------------------------
-
 
43
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
-
 
44
;---------------------------------------------------------------------
50
    int  0x40
45
 
-
 
46
still:
-
 
47
    push 10 
51
 
48
    pop eax 
-
 
49
    int 40h 
-
 
50
 
Line 52... Line -...
52
red:
-
 
53
    call draw_window
-
 
54
 
51
    dec  eax             ; ¯¥à¥à¨á®¢ âì ®ª­®?
55
still:
52
    jz   red             ; ¥á«¨ ¤  - ­  ¬¥âªã red
56
    mov  eax, 10         ; wait here for event
53
    dec  eax 
Line -... Line 54...
-
 
54
    jz   key
-
 
55
    dec  eax
-
 
56
    jz   button
Line 57... Line 57...
57
    int  0x40
57
 
-
 
58
mouse:
58
 
59
    mouse_edit_boxes editbox,editbox_end
59
    dec  eax              ; redraw request ?
60
    jmp still
-
 
61
    
-
 
62
button:
60
    je     red
63
    mov  al,17           ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
61
;    dec  eax
64
    int  0x40
-
 
65
 
-
 
66
    cmp  ah,1            ; ª­®¯ª  á id=1("§ ªàëâì")?
62
;    dec  eax                  ; button in buffer ?
67
    jne  noclose
-
 
68
    or   eax,-1          ; äã­ªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
-
 
69
    int  0x40
63
;    je   button
70
 
64
 
71
noclose:
65
 
72
    cmp  ah,2
66
  button:               ; button
73
    jne  path_2
-
 
74
    call clear_err
-
 
75
    mov  al,16
67
    mov  eax,17            ; get id
76
    mov  ebx,1
-
 
77
    int  0x40
-
 
78
    call check_for_error
68
    int  0x40
79
    jmp  still
69
    cmp  ah,2
80
 path_2:
70
    jne  ah_3
81
    cmp  ah,3
71
    mcall 18,6,1
82
    jne  path_3
72
    jmp  red
-
 
73
  ah_3:
-
 
74
    cmp  ah,3
-
 
75
    jne  ah_4
-
 
76
    mcall 18,6,2
-
 
77
    jmp  red
83
    call clear_err
78
  ah_4:
-
 
79
    cmp  ah,4
-
 
80
    jne  ah_5
-
 
81
    mcall 18,6,3,bootpath+1
84
    mov  al,16
82
    jmp  red
-
 
83
  ah_5:
-
 
84
    cmp  ah,5
-
 
85
    jne  ah_6
-
 
86
    mcall 16,1
85
    mov  ebx,2
87
    jmp  red
86
    int  0x40
88
  ah_6:
-
 
89
    cmp  ah,6
-
 
90
    jne  ah_1
-
 
91
    mcall 16,2
-
 
92
    jmp  red
87
    call check_for_error
-
 
88
    jmp  still
-
 
89
 path_3:
-
 
90
    cmp  ah,4
-
 
91
    jne  path_4
-
 
92
    call clear_err
-
 
93
    mov  al,18
-
 
94
    mov  ebx,6
-
 
95
    mov  ecx,path3
-
 
96
    int  0x40
-
 
97
    call check_for_error
Line -... Line 98...
-
 
98
    jmp  still
-
 
99
 path_4:
-
 
100
    call clear_err
-
 
101
    mov  eax,18
-
 
102
    mov  ebx,6
Line -... Line 103...
-
 
103
    mov  ecx,path4
93
 
104
    int  0x40
-
 
105
    call check_for_error
-
 
106
    jmp  still
-
 
107
 
-
 
108
key:         
-
 
109
    mov  al,2
-
 
110
    int  0x40
-
 
111
    key_edit_boxes editbox,editbox_end
-
 
112
    jmp  still
-
 
113
 
-
 
114
 
-
 
115
check_for_error:                      ;Ž¡à ¡®â稪 ®è¨¡®ª
-
 
116
    cmp eax,0
-
 
117
    jne err1
-
 
118
    mov ecx,[sc.work_text]
-
 
119
    mov edx,ok
-
 
120
    jmp print
-
 
121
 err1:
-
 
122
    cmp eax,1
-
 
123
    jne err3
-
 
124
    mov ecx,0xdd2222
-
 
125
    mov edx,error11
-
 
126
    jmp print
-
 
127
 err3:
-
 
128
    cmp eax,3
-
 
129
    jne err5
-
 
130
    mov ecx,0xdd2222
-
 
131
    mov edx,error3
-
 
132
    jmp print
-
 
133
 err5:
-
 
134
    cmp eax,5
-
 
135
    jne err8
-
 
136
    mov ecx,0xdd2222
-
 
137
    mov edx,error5
-
 
138
    jmp print
-
 
139
 err8:
-
 
140
    cmp eax,8
-
 
141
    jne err9
-
 
142
    mov ecx,0xdd2222
-
 
143
    mov edx,error8
-
 
144
    jmp print
-
 
145
 err9:
-
 
146
    cmp eax,9
-
 
147
    jne err10
-
 
148
    mov ecx,0xdd2222
-
 
149
    mov edx,error9
-
 
150
    jmp print
-
 
151
err10:
94
  ah_1:
152
    cmp eax,10
-
 
153
    jne err11
-
 
154
    mov ecx,0xdd2222
-
 
155
    mov edx,error10
-
 
156
    jmp print
-
 
157
 err11:
-
 
158
    mov ecx,0xdd2222
-
 
159
    mov edx,error11
-
 
160
    jmp print
-
 
161
 
-
 
162
 print:
-
 
163
    mov eax,4                              ;­ ¤¯¨á¨
-
 
164
    mov ebx,20 shl 16 + 148
-
 
165
    or  ecx,0x80000000
-
 
166
    int 0x40
-
 
167
    ret
95
    cmp  ah,1
168
 
Line 96... Line 169...
96
    je     exit
169
clear_err:
Line 97... Line 170...
97
    jmp  still
170
    mov al,13
98
 
171
    mov ebx,15 shl 16 + 240
99
  exit:
172
    mov ecx,145 shl 16 +15
100
    or     eax,-1            ; close this program
173
    mov edx,[sc.work]
101
    int  0x40
174
    int 0x40
Line 102... Line 175...
102
 
175
    ret
103
 
176
 
104
;   *********************************************
177
;---------------------------------------------------------------------
-
 
178
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
105
;   *******  WINDOW DEFINITIONS AND DRAW ********
179
;---------------------------------------------------------------------
106
;   *********************************************
180
 
107
 
181
draw_window:
108
draw_window:
182
 
109
 
183
   mov  eax,48
110
    mov  eax,48
184
   mov  ebx,3
111
    mov  ebx,3
185
   mov  ecx,sc
112
    mov  ecx,sc
186
   mov  edx,sizeof.system_colors
Line 113... Line 187...
113
    mov  edx,sizeof.system_colors
187
   int  0x40
114
    int  0x40
-
 
115
 
-
 
116
    mov  eax, 12                ; function 12:tell os about windowdraw
-
 
117
    mov  ebx, 1                 ; 1, start of draw
-
 
118
    int  0x40
-
 
119
                ; DRAW WINDOW
-
 
120
    mov  eax, 0                 ; function 0 : define and draw window
-
 
121
    mov  ebx, 200*65536+230     ; [x start] *65536 + [x size]
-
 
Line -... Line 188...
-
 
188
 
122
    mov  ecx, 200*65536+260     ; [y start] *65536 + [y size]
189
   mov eax,12                            ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
123
    mov  edx, [sc.work]         ; color of work area RRGGBB,8->color gl
190
   mov bl,1                              ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
124
    or   edx,0x33000000
191
   int 0x40
125
    mov  edi,header             ; WINDOW LABEL
192
 
-
 
193
                                         ; ‘Ž‡„€ðŒ ŽŠŽ
126
    int  0x40
194
   xor eax,eax                           ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
127
 
195
   mov ebx,200 shl 16 + 270              ; [x áâ àâ] *65536 + [x à §¬¥à]
-
 
196
   mov ecx,200 shl 16 + 190              ; [y áâ àâ] *65536 + [y à §¬¥à]
128
    mcall 8,<11,17>,<26,17>,2,[sc.work_button]
197
   mov edx,[sc.work]                     ; 梥â à ¡®ç¥© ®¡« á⨠ RRGGBB,8->color gl
-
 
198
   or  edx,0x33000000
-
 
199
   mov edi,header                        ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
129
    inc  edx
200
   int 0x40
130
    mcall  , ,<56,17>, ,
201
 
-
 
202
draw_edit_boxes editbox,editbox_end      ;à¨á®¢ ­¨¥ edit box'®¢
-
 
203
 
131
    inc  edx
204
   mov al,13                             ;®âà¨á®¢ª  ⥭¥© ª­®¯®ª
-
 
205
   mov ebx,194 shl 16 + 60
132
    mcall  , ,<86,17>, ,
206
   mov ecx,34 shl 16 +15
-
 
207
   mov edx,0x444444
-
 
208
   int 0x40
-
 
209
 
-
 
210
   add ecx,20 shl 16
133
    inc  edx
211
   int 0x40
134
    mcall  , ,<166,17>, ,
212
 
-
 
213
   add ecx,20 shl 16
-
 
214
   int 0x40
135
    inc  edx
215
 
136
    mcall  , ,<196,17>, ,
216
   add ecx,40 shl 16
Line -... Line 217...
-
 
217
   int 0x40
-
 
218
 
-
 
219
   mov eax,8                             ;®âà¨á®¢ª  ª­®¯®ª
-
 
220
   sub ebx,4 shl 16
-
 
221
   sub ecx,4 shl 16
-
 
222
   mov edx,5
137
 
223
   mov esi,[sc.work_button]
138
    mov    ecx,[sc.work_button_text]
224
   int 0x40
139
    or     ecx,0x10000000
-
 
140
    mcall 4,<17,31>, ,text_123,1
-
 
141
    add ebx,30
225
 
142
    add edx,1
226
   sub ecx,40 shl 16
143
    mcall
-
 
144
    add ebx,30
-
 
145
    add edx,1
-
 
146
    mcall
-
 
147
    add ebx,80
-
 
148
    add edx,1
-
 
149
    mcall
-
 
150
    add ebx,30
-
 
151
    add edx,1
-
 
152
    mcall
-
 
Line 153... Line 227...
153
 
227
   dec edx
154
    mov    ecx,[sc.work_text]
228
   int 0x40
155
    or     ecx,0x80000000
229
 
156
    mcall  ,<40,31>, ,text_1,
-
 
Line -... Line 230...
-
 
230
   sub ecx,20 shl 16
-
 
231
   dec edx
-
 
232
   int 0x40
-
 
233
 
-
 
234
   sub ecx,20 shl 16
-
 
235
   dec edx
-
 
236
   int 0x40
-
 
237
 
-
 
238
   mov al,4                              ;­ ¤¯¨á¨
-
 
239
   mov ebx,45 shl 16 + 12
-
 
240
   mov ecx,[sc.work_text]
-
 
241
   or  ecx,0x80000000
-
 
242
   mov edx,label1
-
 
243
   int 0x40
-
 
244
 
-
 
245
   mov ebx,150 shl 16 + 35
-
 
246
   mov edx,path1
-
 
247
   int 0x40
-
 
248
 
-
 
249
   add ebx,20
-
 
250
   mov edx,path2
-
 
251
   int 0x40
-
 
252
 
-
 
253
   mov ebx,75 shl 16 + 75
-
 
254
   mov edx,path3
-
 
255
   int 0x40
-
 
256
 
-
 
257
   mov ebx,30 shl 16 + 97
-
 
258
   mov edx,label2
-
 
259
   int 0x40
-
 
260
 
-
 
261
   mov ebx,40 shl 16 + 135
-
 
262
   mov edx,label3
-
 
263
   int 0x40
-
 
264
 
-
 
265
   mov ecx,[sc.work_button_text]
-
 
266
   or  ecx,0x80000000
-
 
267
   mov ebx,195 shl 16 + 35
-
 
268
   mov edx,save
-
 
269
   int 0x40
-
 
270
 
Line 157... Line 271...
157
    add    ebx,30
271
   add ebx,20
Line -... Line 272...
-
 
272
   int 0x40
-
 
273
 
-
 
274
   add ebx,20
-
 
275
   int 0x40
158
    mcall  , , ,text_2,
276
 
-
 
277
   add ebx,40
-
 
278
   int 0x40
Line 159... Line 279...
159
    add    ebx,30
279
 
160
    mcall  , , ,text_3,
-
 
161
    mcall  ,<15,115>, ,text_4,
280
   mov al,12                            ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
162
    mcall  ,<35,125>, ,text_5,
281
   mov ebx,2                            ; 2, § ª®­ç¨«¨ à¨á®¢ âì
163
 
282
   int 0x40
164
    mcall  ,<35,41>, ,text_6,
283
 
165
    mcall  ,<35,101>, ,text_6,
284
   ret                                  ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
166
    mcall  ,<40,171>, ,text_7,
285
 
167
    mcall  ,<40,201>, ,text_8,
286
 
168
    mcall  ,<25,10>, ,text_9,
287
;---------------------------------------------------------------------
169
    mcall  ,<25,150>, ,text_10,
288
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
170
 
289
;---------------------------------------------------------------------
-
 
290
 
Line 171... Line 291...
171
    mov  eax,12           ; function 12:tell os about windowdraw
291
header db appname,version,0
172
    mov  ebx,2            ; 2, end of draw
-
 
-
 
292
 
173
    int  0x40
293
editbox:
174
ret
294
edit1 edit_box 170,10,113,0xffffff,0,0,0,1024,path4,ed_focus
175
 
295
editbox_end:
176
 
296
 
177
header   db appname,version,0
297
path1   db '/fd/1/',0
178
 
298
path2   db '/fd/2/',0
179
text_123 db '12345'
299
path3   db '/hd0/1/kolibri.img',0
180
 
300
 
181
if lang eq ru
301
if lang eq ru
182
 
302
save    db '‘®åà ­¨âì',0
Line 183... Line 303...
183
text_1  db '‚ ¯ ¯ªã ‘:\KOLIBRI',0
303
label1  db '‚ë¡¥à¨â¥ ®¤¨­ ¨§ ¢ à¨ ­â®¢:',0
Line -... Line 304...
-
 
304
label2  db 'ˆ«¨ ¢¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã:',0
-
 
305
label3  db '‚ᥠ¯ ¯ª¨ ¤®«¦­ë áãé¥á⢮¢ âì',0
184
text_2  db '‚ ª®à¥­ì ¤¨áª  ‘',0
306
ok      db 'RAM-¤¨áª á®åà ­¥­ ãᯥ譮',0
185
text_3  db 'ãâì ¢ ä ©«¥ RD2HD.TXT',0
307
error3  db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
186
text_4  db '¯.3 ¤«ï १¥à¢­®£® á®åà ­¥­¨ï',0
308
error5  db '¥áãé¥áâ¢ãî騩 ¯ãâì',0
187
text_5  db 'â.ª. ¢ ï¤à¥ ¥£® ­¥â.',0
309
error8  db '¥â ¬¥áâ  ­  ¤¨áª¥',0
188
text_6  db '(¯ ¯ª  ¤®«¦­  ¯à¨áãâá⢮¢ âì)',0
310
error9  db '’ ¡«¨æ  FAT à §àã襭 ',0