/kernel/trunk/blkdev/fdc.inc |
---|
8,11 → 8,6 |
$Revision$ |
iglobal |
;function pointers. |
fdc_irq_func dd fdc_null |
endg |
uglobal |
dmasize db 0x0 |
dmamode db 0x0 |
25,11 → 20,6 |
rep stosb |
ret |
fdc_irq: |
call [fdc_irq_func] |
fdc_null: |
ret |
save_image: |
call reserve_flp |
call restorefatchain |
64,7 → 54,6 |
cmp [FDD_Track], 80 |
jne save_image_1 |
unnecessary_save_image: |
mov [fdc_irq_func], fdc_null |
popa |
mov [flp_status], 0 |
ret |
/kernel/trunk/blkdev/flp_drv.inc |
---|
185,19 → 185,11 |
;* ОБРАБОТЧИК ПРЕРЫВАНИЯ ОТ КОНТРОЛЛЕРА НГМД * |
;********************************************* |
FDCInterrupt: |
; Установить флаг прерывани |
; Установить флаг прерывания |
mov [FDD_IntFlag], 1 |
mov al, 1 |
ret |
;****************************************** |
;* УСТАНОВИТЬ НОВЫЙ ОБРАБОТЧИК ПРЕРЫВАНИЙ * |
;* НГМД * |
;****************************************** |
SetUserInterrupts: |
mov [fdc_irq_func], FDCInterrupt |
ret |
;******************************************* |
;* ОЖИДАНИЕ ПРЕРЫВАНИЯ ОТ КОНТРОЛЛЕРА НГМД * |
;******************************************* |
212,9 → 204,9 |
mov [TickCounter], eax |
; Ожидать установки флага прерывания НГМД |
@@TestRS_2: |
call change_task |
cmp [FDD_IntFlag], 0 |
jnz @@End_7 ;прерывание произошло |
call change_task |
mov eax, [timer_ticks] |
sub eax, [TickCounter] |
cmp eax, 50 ;25 ;5 ;ожидать 5 тиков |
/kernel/trunk/core/irq.inc |
---|
154,12 → 154,6 |
cmp [v86_irqhooks+ebp*8], 0 |
jnz v86_irq |
cmp bp, 6 |
jnz @f |
push ebp |
call [fdc_irq_func] |
pop ebp |
@@: |
bts [irq_active_set], ebp |
lea esi, [irqh_tab+ebp*8] ; esi= list head |
204,10 → 198,6 |
; Note: this still isn't 100% correct, because two IRQs can fire simultaneously, |
; the better way would be to find the correct IRQ, but I don't know how to do |
; this in that case. |
; Also, [fdc_irq_func], [irq14_func], [irq15_func] could process interrupt |
; but do not return whether they did it, so just ignore IRQs 6, 14, 15. |
cmp ebp, 6 |
jz .fail |
push ebp |
xor ebp, ebp |
.try_other_irqs: |
215,6 → 205,8 |
jz .try_next_irq |
cmp ebp, 1 |
jz .try_next_irq |
cmp ebp, 6 |
jz .try_next_irq |
cmp ebp, 12 |
jz .try_next_irq |
cmp ebp, 14 |
/kernel/trunk/detect/dev_fd.inc |
---|
30,8 → 30,9 |
mov [DRIVE_DATA], al |
test al, al |
jz @f |
in al, 0x21 |
and al, 10111111b ; Enable IRQ6 |
out 0x21, al |
stdcall attach_int_handler, 6, FDCInterrupt, 0 |
DEBUGF 1, "K : Set IDE IRQ6 return code %x\n", eax |
stdcall enable_irq, 6 ; FDD |
@@: |
/kernel/trunk/fs/fat12.inc |
---|
221,7 → 221,7 |
frnoread2_1: |
cmp [esp+16], dword 0; eof without read ? |
je frnoread_1 |
mov [fdc_irq_func], fdc_null |
pop edi esi edx ecx |
add esp, 4 |
pop ebx; ebx <- eax : size of file |
354,7 → 354,6 |
mov [FDD_Track], 0; Цилиндр |
mov [FDD_Head], 0; Сторона |
mov [FDD_Sector], 1; Сектор |
call SetUserInterrupts |
call FDDMotorON |
call RecalibrateFDD |
cmp [FDC_Status], 0 |
409,7 → 408,6 |
cmp [FDD_Sector], 16 |
jne save_flp_root_1 |
unnecessary_root_save: |
mov [fdc_irq_func], fdc_null |
popa |
ret |
445,7 → 443,6 |
jne unnecessary_flp_fat_save |
mov [root_read], 0 |
unnecessary_flp_fat_save: |
mov [fdc_irq_func], fdc_null |
popa |
ret |
1703,7 → 1700,7 |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
call SetUserInterrupts |
.write_loop: |
; skip unmodified sectors |
cmp dword [esp], 0x200 |
1794,7 → 1791,6 |
and dword [esp], 0 |
jmp .write_loop |
.done: |
mov [fdc_irq_func], fdc_null |
jmp .ret |
floppy_extend_file.zero_size: |
1948,7 → 1944,6 |
mov al, 11 |
@@: |
.doret: |
mov [fdc_irq_func], fdc_null |
ret |
.expand: |
push ecx |
1981,7 → 1976,6 |
call save_flp_fat |
cmp [FDC_Status], 0 |
jnz .device_err |
call SetUserInterrupts |
; now zero new data |
; edi = current cluster, [esp+12]=new size, [esp+4]=old size, [esp]=return code |
.zero_loop: |
2074,7 → 2068,7 |
add eax, 31 |
and edi, 0x1FF |
jz .truncate_done |
call SetUserInterrupts |
pusha |
call read_chs_sector |
popa |
/kernel/trunk/kernel.asm |
---|
717,7 → 717,6 |
; they are used: when partitions are scanned, hd_read relies on timer |
call unmask_timer |
stdcall enable_irq, 2 ; @#$%! PIC |
stdcall enable_irq, 6 ; FDD |
stdcall enable_irq, 13 ; co-processor |
mov esi, boot_disabling_ide |
1252,8 → 1251,8 |
jnz .yes |
call stack_handler_has_work? |
jnz .yes |
call check_fdd_motor_status_has_work? |
jnz .yes |
; call check_fdd_motor_status_has_work? |
; jnz .yes |
call check_ATAPI_device_event_has_work? |
jnz .yes |
call check_lights_state_has_work? |