Rev 4273 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4273 | Rev 5363 | ||
---|---|---|---|
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
2 | ;; ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
7 | 7 | ||
8 | $Revision: 4273 $ |
8 | $Revision: 5363 $ |
9 | 9 | ||
10 | 10 | ||
11 | uglobal |
11 | uglobal |
12 | dmasize db 0x0 |
12 | dmasize db 0x0 |
13 | dmamode db 0x0 |
13 | dmamode db 0x0 |
14 | endg |
14 | endg |
15 | 15 | ||
16 | fdc_init: ;start with clean tracks. |
16 | fdc_init: ;start with clean tracks. |
17 | mov edi, OS_BASE+0xD201 |
17 | mov edi, OS_BASE+0xD201 |
18 | mov al, 0 |
18 | mov al, 0 |
19 | mov ecx, 160 |
19 | mov ecx, 160 |
20 | rep stosb |
20 | rep stosb |
21 | ret |
21 | ret |
22 | 22 | ||
23 | save_image: |
23 | save_image: |
24 | cmp [ramdisk_actual_size], FLOPPY_CAPACITY |
24 | cmp [ramdisk_actual_size], FLOPPY_CAPACITY |
25 | jnz .fail |
25 | jnz .fail |
26 | pusha |
26 | pusha |
27 | mov ecx, floppy_mutex |
27 | mov ecx, floppy_mutex |
28 | call mutex_lock |
28 | call mutex_lock |
29 | mov [flp_number], bl |
29 | mov [flp_number], bl |
30 | call floppy_read_bootsector |
30 | call floppy_read_bootsector |
31 | cmp [FDC_Status], 0 |
31 | cmp [FDC_Status], 0 |
32 | jne .unnecessary_save_image |
32 | jne .unnecessary_save_image |
33 | mov [FDD_Track], 0; Цилиндр |
33 | mov [FDD_Track], 0; Цилиндр |
34 | mov [FDD_Head], 0; Сторона |
34 | mov [FDD_Head], 0; Сторона |
35 | mov [FDD_Sector], 1; Сектор |
35 | mov [FDD_Sector], 1; Сектор |
36 | mov esi, RAMDISK |
36 | mov esi, RAMDISK |
37 | call SeekTrack |
37 | call SeekTrack |
38 | .save_image_1: |
38 | .save_image_1: |
39 | call take_data_from_application_1 |
39 | call take_data_from_application_1 |
40 | call WriteSectWithRetr |
40 | call WriteSectWithRetr |
41 | ; call WriteSector |
41 | ; call WriteSector |
42 | cmp [FDC_Status], 0 |
42 | cmp [FDC_Status], 0 |
43 | jne .unnecessary_save_image |
43 | jne .unnecessary_save_image |
44 | inc [FDD_Sector] |
44 | inc [FDD_Sector] |
45 | cmp [FDD_Sector], 19 |
45 | cmp [FDD_Sector], 19 |
46 | jne .save_image_1 |
46 | jne .save_image_1 |
47 | mov [FDD_Sector], 1 |
47 | mov [FDD_Sector], 1 |
48 | inc [FDD_Head] |
48 | inc [FDD_Head] |
49 | cmp [FDD_Head], 2 |
49 | cmp [FDD_Head], 2 |
50 | jne .save_image_1 |
50 | jne .save_image_1 |
51 | mov [FDD_Head], 0 |
51 | mov [FDD_Head], 0 |
52 | inc [FDD_Track] |
52 | inc [FDD_Track] |
53 | call SeekTrack |
53 | call SeekTrack |
54 | cmp [FDD_Track], 80 |
54 | cmp [FDD_Track], 80 |
55 | jne .save_image_1 |
55 | jne .save_image_1 |
56 | .unnecessary_save_image: |
56 | .unnecessary_save_image: |
57 | cmp [FDC_Status], 0 |
57 | cmp [FDC_Status], 0 |
58 | pushf |
58 | pushf |
59 | mov ecx, floppy_mutex |
59 | mov ecx, floppy_mutex |
60 | call mutex_unlock |
60 | call mutex_unlock |
61 | popf |
61 | popf |
62 | popa |
62 | popa |
63 | jnz .fail |
63 | jnz .fail |
64 | xor eax, eax |
64 | xor eax, eax |
65 | ret |
65 | ret |
66 | .fail: |
66 | .fail: |
67 | movi eax, 1 |
67 | movi eax, 1 |
68 | ret |
68 | ret |