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 |