Changeset 623 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs


Ignore:
Timestamp:
Jun 15, 2022, 2:48:59 PM (3 years ago)
Author:
Krister Nordvall
Message:

Changes:

  • Reversed the change to IdeDPT.asm in r622 as it didn't work as intended.
  • Reordered some procedures to reduce alignment padding.
  • Added two new defines (EXTRA_LOOP_UNROLLING_SMALL and EXTRA_LOOP_UNROLLING_LARGE) that should improve transfer speeds for some hardware combinations, specifically 808x CPUs with any IDE controller using port I/O and any CPU with XT-IDE controllers.
  • Added a new define (USE_086) for use with 8086 and V30 CPUs only. Unlike the other USE_x86 defines, this define will not change the instruction set used and is therefore compatible with all CPUs. However, it will apply padding to make jump destinations WORD aligned which should improve performance on 8086/V30 CPUs but on 8088/V20 CPUs there is no benefit and, in addition to wasting ROM space, it might in fact be slower on these machines. Since the vast majority of XT class machines are using 8088/V20 CPUs this define is not used in the official XT builds - it's primarily intended for custom BIOS builds.
  • XTIDECFG: The URL to the support forum has been updated.
Location:
trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/FindDPT.asm

    r621 r623  
    6565
    6666    cmp     ah, dl                              ; Check second drive if two, first drive if only one
    67     jz      SHORT .CalcDPTForDriveNumber
     67    je      SHORT .CalcDPTForDriveNumber
    6868    cmp     al, dl                              ; Check first drive in all cases, redundant but OK to repeat
    69     jnz     SHORT .DiskIsNotHandledByThisBIOS
     69    jne     SHORT .DiskIsNotHandledByThisBIOS
    7070%else
    7171    cmp     dl, ah                              ; Above last supported?
     
    100100
    101101    test    dl, dl
    102     js      .harddisk
     102    js      SHORT .Harddisk
    103103
    104104    call    RamVars_UnpackFlopCntAndFirstToAL
     
    106106
    107107ALIGN JUMP_ALIGN
    108 .harddisk:
     108.Harddisk:
    109109    sub     dl, al                      ; subtract off beginning of either hard disk or floppy list (as appropriate)
    110110%else
     
    114114.CalcDPTForNewDrive:
    115115    mov     al, LARGEST_DPT_SIZE
    116 
    117116    mul     dl
    118117    add     ax, RAMVARS_size            ; Clears CF (will not overflow)
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/RamVars.asm

    r592 r623  
    135135
    136136
    137 ;--------------------------------------------------------------------
    138 ; RamVars_GetCountOfKnownDrivesToAX
    139 ;   Parameters:
    140 ;       DS:     RAMVARS segment
    141 ;   Returns:
    142 ;       AX:     Total hard disk count
    143 ;   Corrupts registers:
    144 ;       None
    145 ;--------------------------------------------------------------------
    146 ALIGN JUMP_ALIGN
    147 RamVars_GetCountOfKnownDrivesToAX:
    148     mov     ax, [RAMVARS.wFirstDrvAndCount]
    149     add     al, ah
    150     and     ax, BYTE 7fh
    151     ret
    152 
    153 ;--------------------------------------------------------------------
    154 ; RamVars_GetIdeControllerCountToCX
    155 ;   Parameters:
    156 ;       Nothing
    157 ;   Returns:
    158 ;       CX:     Number of IDE controllers to handle
    159 ;   Corrupts registers:
    160 ;       Nothing
    161 ;--------------------------------------------------------------------
    162 ALIGN JUMP_ALIGN
    163 RamVars_GetIdeControllerCountToCX:
    164     eMOVZX  cx, [cs:ROMVARS.bIdeCnt]
    165     ret
    166 
    167 
    168137%ifdef MODULE_SERIAL_FLOPPY
    169138;--------------------------------------------------------------------
     
    184153    ret
    185154%endif
     155
     156
     157;--------------------------------------------------------------------
     158; RamVars_GetIdeControllerCountToCX
     159;   Parameters:
     160;       Nothing
     161;   Returns:
     162;       CX:     Number of IDE controllers to handle
     163;   Corrupts registers:
     164;       Nothing
     165;--------------------------------------------------------------------
     166ALIGN JUMP_ALIGN
     167RamVars_GetIdeControllerCountToCX:
     168    eMOVZX  cx, [cs:ROMVARS.bIdeCnt]
     169    ret
     170
     171
     172;--------------------------------------------------------------------
     173; RamVars_GetCountOfKnownDrivesToAX
     174;   Parameters:
     175;       DS:     RAMVARS segment
     176;   Returns:
     177;       AX:     Total hard disk count
     178;   Corrupts registers:
     179;       None
     180;--------------------------------------------------------------------
     181ALIGN JUMP_ALIGN
     182RamVars_GetCountOfKnownDrivesToAX:
     183    mov     ax, [RAMVARS.wFirstDrvAndCount]
     184    add     al, ah
     185    and     ax, BYTE 7Fh
     186    ret
Note: See TracChangeset for help on using the changeset viewer.