Changeset 249 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h


Ignore:
Timestamp:
Feb 16, 2012, 1:56:36 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Number of successfully transferred sectors is now returned by all transfer functions (instead of requested sector count).
  • Added INT 19h handler for proper reboot.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm

    r221 r249  
    2323;   Returns with INTPACK:
    2424;       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)
    2627;       CF:     0 if successfull, 1 if error
    2728;--------------------------------------------------------------------
     
    3334    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
    3435%ifdef USE_186
    35     push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     36    push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL
    3637    jmp     Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    3738%else
    3839    call    Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    39     jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     40    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL
    4041%endif
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH3h_HWrite.asm

    r221 r249  
    2323;   Returns with INTPACK:
    2424;       AH:     Int 13h/40h floppy return status
     25;       AL:     Number of sectors actually written (only valid if CF set for someBIOSes)
    2526;       CF:     0 if successfull, 1 if error
    2627;--------------------------------------------------------------------
     
    3233    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
    3334%ifdef USE_186
    34     push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     35    push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL
    3536    jmp     Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    3637%else
    3738    call    Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    38     jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     39    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL
    3940%endif
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm

    r221 r249  
    2222;   Returns with INTPACK in SS:BP:
    2323;       AH:     Int 13h/40h floppy return status
     24;       AL:     Number of sectors actually verified (only valid if CF set for someBIOSes)
    2425;       CF:     0 if successfull, 1 if error
    2526;--------------------------------------------------------------------
     
    3031    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY)
    3132%ifdef USE_186
    32     push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     33    push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL
    3334    jmp     Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    3435%else
    3536    call    Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    36     jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     37    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAHandTransferredSectorsFromCL
    3738%endif
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH42h_ExtendedReadSectors.asm

    r221 r249  
    2020;       CF:     0 if succesfull, 1 if error
    2121;   Return with Disk Address Packet in INTPACK:
    22 ;       .bSectorCount   Number of sectors read successfully
     22;       .wSectorCount   Number of sectors read successfully
    2323;--------------------------------------------------------------------
    2424ALIGN JUMP_ALIGN
     
    2727    mov     ah, [cs:bx+g_rgbReadCommandLookup]
    2828    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
    29 %ifdef USE_186
    30     push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
    31     jmp     Idepack_ConvertDapToIdepackAndIssueCommandFromAH
    32 %else
    3329    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;--------------------------------------------------------------------
     44AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX:
     45    mov     ds, [bp+IDEPACK.intpack+INTPACK.ds]
     46    mov     si, [bp+IDEPACK.intpack+INTPACK.si]
     47    mov     [si+DAP.wSectorCount], cx
    3448    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
    35 %endif
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH43h_ExtendedWriteSectors.asm

    r221 r249  
    2222;       CF:     0 if succesfull, 1 if error
    2323;   Return with Disk Address Packet in INTPACK:
    24 ;       .bSectorCount   Number of sectors written successfully
     24;       .wSectorCount   Number of sectors written successfully
    2525;--------------------------------------------------------------------
    2626ALIGN JUMP_ALIGN
     
    3333    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
    3434%ifdef USE_186
    35     push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     35    push    AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX
    3636    jmp     Idepack_ConvertDapToIdepackAndIssueCommandFromAH
    3737%else
    3838    call    Idepack_ConvertDapToIdepackAndIssueCommandFromAH
    39     jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     39    jmp     SHORT AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX
    4040%endif
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH44h_ExtendedVerifySectors.asm

    r221 r249  
    2020;       CF:     0 if succesfull, 1 if error
    2121;   Return with Disk Address Packet in INTPACK:
    22 ;       .bSectorCount   Number of sectors verified successfully
     22;       .wSectorCount   Number of sectors verified successfully
    2323;--------------------------------------------------------------------
    2424ALIGN JUMP_ALIGN
     
    2828    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY)
    2929%ifdef USE_186
    30     push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     30    push    AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX
    3131    jmp     Idepack_ConvertDapToIdepackAndIssueCommandFromAH
    3232%else
    3333    call    Idepack_ConvertDapToIdepackAndIssueCommandFromAH
    34     jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     34    jmp     SHORT AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX
    3535%endif
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH47h_ExtendedSeek.asm

    r221 r249  
    3636    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
    3737%endif
    38 
    39 .WriteWithVerifyNotSupported:
    40     jmp     Prepare_ReturnFromInt13hWithInvalidFunctionError
Note: See TracChangeset for help on using the changeset viewer.