Subversion Repositories Kolibri OS

Rev

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