Changeset 249 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers
- Timestamp:
- Feb 16, 2012, 1:56:36 PM (13 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm
r227 r249 105 105 ALIGN JUMP_ALIGN 106 106 .ExchangeInt13hHandlers: 107 call ExchangeCurrentInt13hHandlerWithOldInt13hHandler 107 %ifdef USE_186 108 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 109 jmp SHORT ExchangeCurrentInt13hHandlerWithOldInt13hHandler 110 %else 111 call ExchangeCurrentInt13hHandlerWithOldInt13hHandler 112 jmp SHORT Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 113 %endif 114 115 116 ;-------------------------------------------------------------------- 117 ; Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 118 ; Parameters: 119 ; AH: BIOS Error code 120 ; CL: Number of sectors actually transferred 121 ; SS:BP: Ptr to IDEPACK 122 ; Returns: 123 ; All registers are loaded from INTPACK 124 ;-------------------------------------------------------------------- 125 ALIGN JUMP_ALIGN 126 Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL: 127 mov [bp+IDEPACK.intpack+INTPACK.al], cl 108 128 ; Fall to Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 109 110 129 111 130 ;-------------------------------------------------------------------- -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm
r221 r249 23 23 ; Returns with INTPACK: 24 24 ; AH: Int 13h/40h floppy return status 25 ; AL: Burst error length if AH returns 11h, undefined otherwise 25 ; AL: Burst error length if AH returns 11h (we never return error code 11h) 26 ; Number of sectors actually read (only valid if CF set for someBIOSes) 26 27 ; CF: 0 if successfull, 1 if error 27 28 ;-------------------------------------------------------------------- … … 33 34 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 34 35 %ifdef USE_186 35 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 36 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 36 37 jmp Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH 37 38 %else 38 39 call Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH 39 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 40 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 40 41 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH3h_HWrite.asm
r221 r249 23 23 ; Returns with INTPACK: 24 24 ; AH: Int 13h/40h floppy return status 25 ; AL: Number of sectors actually written (only valid if CF set for someBIOSes) 25 26 ; CF: 0 if successfull, 1 if error 26 27 ;-------------------------------------------------------------------- … … 32 33 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 33 34 %ifdef USE_186 34 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 35 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 35 36 jmp Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH 36 37 %else 37 38 call Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH 38 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 39 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 39 40 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
r221 r249 22 22 ; Returns with INTPACK in SS:BP: 23 23 ; AH: Int 13h/40h floppy return status 24 ; AL: Number of sectors actually verified (only valid if CF set for someBIOSes) 24 25 ; CF: 0 if successfull, 1 if error 25 26 ;-------------------------------------------------------------------- … … 30 31 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY) 31 32 %ifdef USE_186 32 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 33 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 33 34 jmp Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH 34 35 %else 35 36 call Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH 36 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 37 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL 37 38 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH42h_ExtendedReadSectors.asm
r221 r249 20 20 ; CF: 0 if succesfull, 1 if error 21 21 ; Return with Disk Address Packet in INTPACK: 22 ; . bSectorCount Number of sectors read successfully22 ; .wSectorCount Number of sectors read successfully 23 23 ;-------------------------------------------------------------------- 24 24 ALIGN JUMP_ALIGN … … 27 27 mov ah, [cs:bx+g_rgbReadCommandLookup] 28 28 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 29 %ifdef USE_18630 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH31 jmp Idepack_ConvertDapToIdepackAndIssueCommandFromAH32 %else33 29 call Idepack_ConvertDapToIdepackAndIssueCommandFromAH 30 ; Fall to AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 31 32 33 ;-------------------------------------------------------------------- 34 ; AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 35 ; Parameters: 36 ; AH: INT 13h Error Code 37 ; CX: Number of successfully transferred sectors 38 ; SS:BP: Ptr to IDEPACK 39 ; Returns: 40 ; Nothing, jumps to Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 41 ; Corrupts registers: 42 ; SI, DS 43 ;-------------------------------------------------------------------- 44 AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX: 45 mov ds, [bp+IDEPACK.intpack+INTPACK.ds] 46 mov si, [bp+IDEPACK.intpack+INTPACK.si] 47 mov [si+DAP.wSectorCount], cx 34 48 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 35 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH43h_ExtendedWriteSectors.asm
r221 r249 22 22 ; CF: 0 if succesfull, 1 if error 23 23 ; Return with Disk Address Packet in INTPACK: 24 ; . bSectorCount Number of sectors written successfully24 ; .wSectorCount Number of sectors written successfully 25 25 ;-------------------------------------------------------------------- 26 26 ALIGN JUMP_ALIGN … … 33 33 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 34 34 %ifdef USE_186 35 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH35 push AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 36 36 jmp Idepack_ConvertDapToIdepackAndIssueCommandFromAH 37 37 %else 38 38 call Idepack_ConvertDapToIdepackAndIssueCommandFromAH 39 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH39 jmp SHORT AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 40 40 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH44h_ExtendedVerifySectors.asm
r221 r249 20 20 ; CF: 0 if succesfull, 1 if error 21 21 ; Return with Disk Address Packet in INTPACK: 22 ; . bSectorCount Number of sectors verified successfully22 ; .wSectorCount Number of sectors verified successfully 23 23 ;-------------------------------------------------------------------- 24 24 ALIGN JUMP_ALIGN … … 28 28 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY) 29 29 %ifdef USE_186 30 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH30 push AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 31 31 jmp Idepack_ConvertDapToIdepackAndIssueCommandFromAH 32 32 %else 33 33 call Idepack_ConvertDapToIdepackAndIssueCommandFromAH 34 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH34 jmp SHORT AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 35 35 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH47h_ExtendedSeek.asm
r221 r249 36 36 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 37 37 %endif 38 39 .WriteWithVerifyNotSupported:40 jmp Prepare_ReturnFromInt13hWithInvalidFunctionError -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r243 r249 4 4 ; Section containing code 5 5 SECTION .text 6 7 ;-------------------------------------------------------------------- 8 ; INT 19h handler that properly reboots the computer when 9 ; INT 19h is called. 10 ; 11 ; Int19h_ResetHandler 12 ; Parameters: 13 ; Nothing 14 ; Returns: 15 ; Never returns (reboots computer) 16 ;-------------------------------------------------------------------- 17 Int19h_ResetHandler: 18 mov ax, BOOT_FLAG_WARM ; Skip memory tests 19 jmp Reboot_ComputerWithBootFlagInAX 20 6 21 7 22 ;-------------------------------------------------------------------- … … 125 140 push cx ; sgment address for MBR 126 141 push bx ; offset address for MBR 142 mov bx, BIOS_BOOT_LOADER_INTERRUPT_19h ; INT 19h interrupt vector offset 143 mov si, Int19h_ResetHandler ; INT 19h handler to reboot the system 144 call Interrupts_InstallHandlerToVectorInBXFromCSSI 127 145 retf ; NOTE: DL is set to the drive number 128 146
Note:
See TracChangeset
for help on using the changeset viewer.