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 | ; Инициализировать канал прямого доступа к памяти |