Changeset 152 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIrq.asm
- Timestamp:
- May 1, 2011, 10:42:58 AM (14 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIrq.asm
r150 r152 50 50 51 51 ;-------------------------------------------------------------------- 52 ; IdeIrq_SetInServiceDPTandClearTaskFlag53 ; Parameters:54 ; DS:DI: Ptr to DPT (in RAMVARS segment)55 ; Returns:56 ; Nothing57 ; Corrupts registers:58 ; AX59 ;--------------------------------------------------------------------60 ALIGN JUMP_ALIGN61 IdeIrq_SetInServiceDPTandClearTaskFlag:62 mov [RAMVARS.pInServiceDPT], di63 push ds64 LOAD_BDA_SEGMENT_TO ds, ax, ! ; Also zero AX65 mov [BDA.bHDTaskFlg], al66 pop ds67 ret68 69 70 ;--------------------------------------------------------------------71 52 ; IDE Interrupt Service Routines. 72 53 ; … … 86 67 call AcknowledgeIdeInterruptAndSetTaskFlag 87 68 88 mov al, C MD_END_OF_INTERRUPT69 mov al, COMMAND_END_OF_INTERRUPT 89 70 jmp SHORT AcknowledgeMasterInterruptController 90 71 … … 96 77 call AcknowledgeIdeInterruptAndSetTaskFlag 97 78 98 mov al, C MD_END_OF_INTERRUPT ; Load EOI command to AL99 out WPORT_8259SL_COMMAND, al ; Acknowledge Slave 825979 mov al, COMMAND_END_OF_INTERRUPT 80 out SLAVE_8259_COMMAND_out, al ; Acknowledge Slave 8259 100 81 AcknowledgeMasterInterruptController: 101 out WPORT_8259MA_COMMAND, al ; Acknowledge Master 825982 out MASTER_8259_COMMAND_out, al ; Acknowledge Master 8259 102 83 103 84 ; Issue Int 15h, function AX=9100h (Interrupt ready) … … 122 103 AcknowledgeIdeInterruptAndSetTaskFlag: 123 104 push ds 105 push si 124 106 push dx 125 107 push bx … … 127 109 ; Reading Status Register acknowledges IDE interrupt 128 110 call RamVars_GetSegmentToDS 129 mov di, [RAMVARS.pInServiceDPT] ; DS:DI now points to DPT111 call FindDPT_ToDSDIforInterruptInService 130 112 mov dl, STATUS_REGISTER_in 131 113 call Device_InputToALfromIdeRegisterInDL 114 115 ; Clear Interrupt In-Service Flag from DPT 116 and WORD [di+DPT.wFlags], ~FLG_DPT_INTERRUPT_IN_SERVICE 132 117 133 118 ; Set Task Flag … … 137 122 pop bx 138 123 pop dx 124 pop si 139 125 pop ds 140 126 ret
Note:
See TracChangeset
for help on using the changeset viewer.