Subversion Repositories Kolibri OS

Rev

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

Rev 3771 Rev 4115
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 3771 $
8
$Revision: 4115 $
9
 
9
 
10
 
10
 
Line 160... Line 160...
160
        push    DX
160
        push    DX
161
; Сбросить переменную состояния контроллера
161
; Сбросить переменную состояния контроллера
162
        mov     [FDC_Status], FDC_Normal
162
        mov     [FDC_Status], FDC_Normal
163
; Проверить готовность контроллера к передаче данных
163
; Проверить готовность контроллера к передаче данных
164
        mov     DX, 3F4h  ;(порт состояния FDC)
164
        mov     DX, 3F4h  ;(порт состояния FDC)
165
        xor     CX, CX    ;установить счетчик тайм-аута
165
        mov     ecx, 0x10000 ;установить счетчик тайм-аута
166
@@TestRS_1:
166
@@TestRS_1:
167
        in      AL, DX    ;прочитать регистр RS
167
        in      AL, DX    ;прочитать регистр RS
168
        and     AL, 0C0h  ;выдлить разряды 6 и 7
168
        and     AL, 0C0h  ;выдлить разряды 6 и 7
169
        cmp     AL, 0C0h  ;проверить разряды 6 и 7
169
        cmp     AL, 0C0h  ;проверить разряды 6 и 7
170
        je      @@GetByteFromFDC
170
        je      @@GetByteFromFDC
Line 195... Line 195...
195
;*******************************************
195
;*******************************************
196
WaitFDCInterrupt:
196
WaitFDCInterrupt:
197
        pusha
197
        pusha
198
; Сбросить байт состояния операции
198
; Сбросить байт состояния операции
199
        mov     [FDC_Status], FDC_Normal
199
        mov     [FDC_Status], FDC_Normal
200
; Сбросить флаг прерывани
-
 
201
        mov     [FDD_IntFlag], 0
-
 
202
; Обнулить счетчик тиков
200
; Обнулить счетчик тиков
203
        mov     eax, [timer_ticks]
201
        mov     eax, [timer_ticks]
204
        mov     [TickCounter], eax
202
        mov     [TickCounter], eax
205
; Ожидать установки флага прерывания НГМД
203
; Ожидать установки флага прерывания НГМД
206
@@TestRS_2:
204
@@TestRS_2:
Line 370... Line 368...
370
;* Результат операции заносится в FDC_Status.        *
368
;* Результат операции заносится в FDC_Status.        *
371
;*****************************************************
369
;*****************************************************
372
SeekTrack:
370
SeekTrack:
373
        pusha
371
        pusha
374
        call    save_timer_fdd_motor
372
        call    save_timer_fdd_motor
-
 
373
; Сбросить флаг прерывания
-
 
374
        mov     [FDD_IntFlag], 0
375
; Подать команду "Поиск"
375
; Подать команду "Поиск"
376
        mov     AL, 0Fh
376
        mov     AL, 0Fh
377
        call    FDCDataOutput
377
        call    FDCDataOutput
378
        ; Передать байт номера головки/накопител
378
        ; Передать байт номера головки/накопител
379
        mov     AL, [FDD_Head]
379
        mov     AL, [FDD_Head]
Line 429... Line 429...
429
;* содержимое сектора будет занесено в FDD_DataBuffer. *
429
;* содержимое сектора будет занесено в FDD_DataBuffer. *
430
;*******************************************************
430
;*******************************************************
431
ReadSector:
431
ReadSector:
432
        pushad
432
        pushad
433
        call    save_timer_fdd_motor
433
        call    save_timer_fdd_motor
-
 
434
; Сбросить флаг прерывания
-
 
435
        mov     [FDD_IntFlag], 0
434
; Установить скорость передачи 500 Кбайт/с
436
; Установить скорость передачи 500 Кбайт/с
435
        mov     AX, 0
437
        mov     AX, 0
436
        mov     DX, 03F7h
438
        mov     DX, 03F7h
437
        out     DX, AL
439
        out     DX, AL
438
; Инициализировать канал прямого доступа к памяти
440
; Инициализировать канал прямого доступа к памяти
Line 529... Line 531...
529
;* содержимое FDD_DataBuffer будет занесено в сектор.  *
531
;* содержимое FDD_DataBuffer будет занесено в сектор.  *
530
;*******************************************************
532
;*******************************************************
531
WriteSector:
533
WriteSector:
532
        pushad
534
        pushad
533
        call    save_timer_fdd_motor
535
        call    save_timer_fdd_motor
-
 
536
; Сбросить флаг прерывания
-
 
537
        mov     [FDD_IntFlag], 0
534
; Установить скорость передачи 500 Кбайт/с
538
; Установить скорость передачи 500 Кбайт/с
535
        mov     AX, 0
539
        mov     AX, 0
536
        mov     DX, 03F7h
540
        mov     DX, 03F7h
537
        out     DX, AL
541
        out     DX, AL
538
; Инициализировать канал прямого доступа к памяти
542
; Инициализировать канал прямого доступа к памяти