Changeset 155 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers


Ignore:
Timestamp:
May 1, 2011, 6:44:29 PM (13 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to XTIDE Universal BIOS:

  • AH=4h again uses VERIFY command (copy-pasting had changed it to WRITE).
  • Timeout should now work on all overflow situations.
  • Cleaned code a bit.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers
Files:
5 edited
1 copied

Legend:

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

    r150 r155  
    2323    sti                                 ; Enable interrupts
    2424    cld                                 ; String instructions to increment pointers
    25     SAVE_AND_GET_INTPACK_WITH_EXTRA_WORDS_TO_SSBP EXTRA_WORDS_TO_RESERVE_FOR_INTPACK
     25    CREATE_FRAME_INTPACK_TO_SSBP    EXTRA_BYTES_FOR_INTPACK
    2626
    2727    call    RamVars_GetSegmentToDS
     
    3333
    3434    ; Jump to correct BIOS function
    35 JumpToBiosFunctionInAH:
    3635    cmp     ah, 25h                     ; Valid BIOS function?
    3736    ja      SHORT Int13h_UnsupportedFunction
     
    109108    or      WORD [bp+IDEPACK.intpack+INTPACK.flags], FLG_FLAGS_IF   ; Return with interrupts enabled
    110109    mov     sp, bp                                  ; Now we can exit anytime
    111     RESTORE_INTPACK_WITH_EXTRA_WORDS_FROM_SSBP EXTRA_WORDS_TO_RESERVE_FOR_INTPACK
     110    RESTORE_FRAME_INTPACK_FROM_SSBP     EXTRA_BYTES_FOR_INTPACK
    112111
    113112
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH15h_HSize.asm

    r150 r155  
    5959
    6060ConvertAH08hReturnValuesToSectorCount:
    61     call    HAddress_ExtractLCHSparametersFromOldInt13hAddress
     61    call    Address_ExtractLCHSparametersFromOldInt13hAddress
    6262    xor     ax, ax          ; Zero AX
    6363    inc     cx              ; Max cylinder number to cylinder count
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm

    r150 r155  
    1515;       SS:BP:  Ptr to IDEPACK
    1616;   Parameters on INTPACK:
    17 ;       AL:     Number of sectors to read (1...255, 0=256)
     17;       AL:     Number of sectors to read (1...255)
    1818;       CH:     Cylinder number, bits 7...0
    1919;       CL:     Bits 7...6: Cylinder number bits 9 and 8
     
    2828ALIGN JUMP_ALIGN
    2929AH2h_HandlerForReadDiskSectors:
     30    call    AH2h_ExitInt13hIfSectorCountInIntpackIsZero
    3031    mov     ah, COMMAND_READ_SECTORS    ; Load sector mode command
    3132    test    WORD [di+DPT.wFlags], FLG_DPT_BLOCK_MODE_SUPPORTED
     
    4041    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
    4142%endif
     43
     44
     45;--------------------------------------------------------------------
     46; AH2h_ExitInt13hIfSectorCountInIntpackIsZero
     47;   Parameters:
     48;       SS:BP:  Ptr to IDEPACK
     49;   Parameters on INTPACK:
     50;       AL:     Number of sectors to transfer (1...255)
     51;   Returns:
     52;       Nothing (does not return if error)
     53;   Corrupts registers:
     54;       Nothing
     55;--------------------------------------------------------------------
     56ALIGN JUMP_ALIGN
     57AH2h_ExitInt13hIfSectorCountInIntpackIsZero:
     58    cmp     BYTE [bp+IDEPACK.intpack+INTPACK.al], 0
     59    je      SHORT .InvalidSectorCount
     60    ret
     61.InvalidSectorCount:
     62    mov     ah, RET_HD_INVALID
     63    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH3h_HWrite.asm

    r150 r155  
    2727ALIGN JUMP_ALIGN
    2828AH3h_HandlerForWriteDiskSectors:
    29     ; Prepare parameters
     29    call    AH2h_ExitInt13hIfSectorCountInIntpackIsZero
    3030    mov     ah, COMMAND_WRITE_SECTORS   ; Load sector mode command
    3131    test    WORD [di+DPT.wFlags], FLG_DPT_BLOCK_MODE_SUPPORTED
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm

    r150 r155  
    2626ALIGN JUMP_ALIGN
    2727AH4h_HandlerForVerifyDiskSectors:
    28     mov     ah, COMMAND_WRITE_SECTORS
     28    call    AH2h_ExitInt13hIfSectorCountInIntpackIsZero
     29    mov     ah, COMMAND_VERIFY_SECTORS
    2930    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY)
    3031%ifdef USE_186
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Address.asm

    r150 r155  
    1515
    1616;--------------------------------------------------------------------
    17 ; HAddress_OldInt13hAddressToIdeAddress
     17; Address_OldInt13hAddressToIdeAddress
    1818;   Parameters:
    1919;       CH:     Cylinder number, bits 7...0
     
    3131;--------------------------------------------------------------------
    3232ALIGN JUMP_ALIGN
    33 HAddress_OldInt13hAddressToIdeAddress:
     33Address_OldInt13hAddressToIdeAddress:
    3434    call    AccessDPT_GetAddressingModeForWordLookToBX
    3535    push    WORD [cs:bx+g_rgfnAddressTranslation]       ; Push return address
    36     ; Fall to HAddress_ExtractLCHSparametersFromOldInt13hAddress
     36    ; Fall to Address_ExtractLCHSparametersFromOldInt13hAddress
    3737
    3838;---------------------------------------------------------------------
    39 ; HAddress_ExtractLCHSparametersFromOldInt13hAddress
     39; Address_ExtractLCHSparametersFromOldInt13hAddress
    4040;   Parameters:
    4141;       CH:     Cylinder number, bits 7...0
     
    5050;       Nothing
    5151;--------------------------------------------------------------------
    52 HAddress_ExtractLCHSparametersFromOldInt13hAddress:
     52Address_ExtractLCHSparametersFromOldInt13hAddress:
    5353    mov     bl, cl              ; Copy sector number...
    5454    and     bl, 3Fh             ; ...and limit to 1...63
     
    6666; PSector   = LSector
    6767;
    68 ; HAddress_ConvertLCHStoPCHS:
     68; Address_ConvertLCHStoPCHS:
    6969;   Parameters:
    7070;       BL:     Sector number (1...63)
     
    104104;
    105105; Returned address is in same registers that
    106 ; HAddress_DoNotConvertLCHS and HAddress_ConvertLCHStoPCHS returns.
     106; Address_DoNotConvertLCHS and Address_ConvertLCHStoPCHS returns.
    107107;
    108108; ConvertLCHStoLBARegisterValues:
Note: See TracChangeset for help on using the changeset viewer.