Changeset 568 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools


Ignore:
Timestamp:
Dec 21, 2014, 5:37:53 PM (10 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes:

  • SerDrive: Using named pipe mode (serdrive -p) now works under Windows XP/2000/Server 2003.
  • checksum.pl: Added a compatibility fix for 3Com 3C503 cards.
  • XTIDECFG will now scan every possible segment address to find and load the BIOS and/or its settings from EEPROM. This should simplify things for people using combined option ROMs.
  • Fixed a bug from r521 in BootSector.asm where the BIOS would not display a timeout error if it failed to load the boot sector from harddrive.
  • Fixed a bug from r541 in CompatibleDPT.asm where CompatibleDPT_CreateDeviceParameterTableExtensionToESBXfromDPTinDSSI would generate an invalid checksum in the DPTE.
  • Optimizations and other fixes.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools
Files:
2 edited

Legend:

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

    r542 r568  
    3737ALIGN JUMP_ALIGN
    3838Address_ExtractLCHSparametersFromOldInt13hAddress:
    39     mov     bl, cl              ; Copy sector number...
    40     and     bl, 3Fh             ; ...and limit to 1...63
     39    mov     bl, 3Fh             ; Load sector number mask
     40    and     bl, cl              ; Sector number now in BL
    4141    sub     cl, bl              ; Remove from cylinder number high
    4242    eROL_IM cl, 2               ; High bits to beginning
     
    7575    ; (LCylinder << n) + (LHead / PHeadCount)
    7676    mov     dx, cx                  ; Copy L-CHS Cylinder number to DX
    77     mov     cl, [di+DPT.bFlagsLow]  ; Load shift count
    78     and     cl, MASKL_DPT_CHS_SHIFT_COUNT
     77    mov     cl, MASKL_DPT_CHS_SHIFT_COUNT   ; Load shift count mask
     78    and     cl, [di+DPT.bFlagsLow]  ; Shift count now in CL
    7979    shl     dx, cl                  ; DX = LCylinder << n
    8080    add     ax, dx                  ; AX = P-CHS Cylinder number
     
    8383    ret
    8484
     85; *FIXME* The above function description doesn't match the code.
     86; If CX has a maximum value of 1023 on entry then there is no way CX can be 16382 on return.
     87; 1023 SHL 3 (MASKL_DPT_CHS_SHIFT_COUNT) is 8184. With the addition of AX (at most 255?)
     88; the result is 8439.
    8589
    8690;--------------------------------------------------------------------
     
    102106ALIGN JUMP_ALIGN
    103107Address_OldInt13hAddressToIdeAddress:
    104         call    Address_ExtractLCHSparametersFromOldInt13hAddress
    105         ACCESSDPT__GET_UNSHIFTED_TRANSLATE_MODE_TO_AXZF
     108    call    Address_ExtractLCHSparametersFromOldInt13hAddress
     109    mov     al, [di+DPT.bFlagsLow]
     110    and     al, MASKL_DPT_TRANSLATEMODE
    106111
    107112;;; 0: ADDRESSING_MODE_NORMAL
    108         jz      SHORT DoNotConvertLCHS
     113    jz      SHORT DoNotConvertLCHS
    109114
    110115;;; 1: ADDRESSING_MODE_LARGE
    111         test    al, FLGL_DPT_ASSISTED_LBA
    112         jz      SHORT ConvertLargeModeLCHStoPCHS
     116    test    al, FLGL_DPT_ASSISTED_LBA
     117    jz      SHORT ConvertLargeModeLCHStoPCHS
    113118
    114119;;; 2: ADDRESSING_MODE_ASSISTED_LBA
    115         ; Fall through to ConvertAssistedLBAModeLCHStoLBARegisterValues
     120    ; Fall to ConvertAssistedLBAModeLCHStoLBARegisterValues
    116121
    117122
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools/Prepare.asm

    r567 r568  
    4646    ; Make sure that sector count is valid
    4747%ifdef USE_UNDOC_INTEL
    48     eSALC   ; Clear AL using CF (CF is cleared since JB above fell through)
     48    salc    ; Clear AL using CF (CF is cleared since JB above fell through)
    4949    or      al, [es:si+DAP.wSectorCount]
    5050%else
Note: See TracChangeset for help on using the changeset viewer.