Changeset 623 in xtideuniversalbios for trunk/Assembly_Library/Src/Util/Memory.asm


Ignore:
Timestamp:
Jun 15, 2022, 2:48:59 PM (22 months ago)
Author:
krille_n_
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.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Assembly_Library/Src/Util/Memory.asm

    r621 r623  
    6666
    6767;--------------------------------------------------------------------
    68 ; Memory_ZeroSSBPwithSizeInCX
    69 ;   Parameters
    70 ;       CX:     Number of bytes to zero
    71 ;       SS:BP:  Ptr to buffer to zero
    72 ;   Returns:
    73 ;       Nothing
    74 ;   Corrupts registers:
    75 ;       CX
    76 ;--------------------------------------------------------------------
    77 %ifdef INCLUDE_MENU_LIBRARY
    78 ALIGN JUMP_ALIGN
    79 Memory_ZeroSSBPwithSizeInCX:
    80     push    es
    81     push    di
    82     push    ax
    83     call    Registers_CopySSBPtoESDI
    84     call    Memory_ZeroESDIwithSizeInCX
    85     pop     ax
    86     pop     di
    87     pop     es
    88     ret
    89 %endif
    90 
    91 
    92 ;--------------------------------------------------------------------
    9368; Memory_ZeroESDIwithSizeInCX
    9469;   Parameters
     
    11994    OPTIMIZE_STRING_OPERATION stos
    12095    ret
     96
     97
     98;--------------------------------------------------------------------
     99; Memory_ZeroSSBPwithSizeInCX
     100;   Parameters
     101;       CX:     Number of bytes to zero
     102;       SS:BP:  Ptr to buffer to zero
     103;   Returns:
     104;       Nothing
     105;   Corrupts registers:
     106;       CX
     107;--------------------------------------------------------------------
     108%ifdef INCLUDE_MENU_LIBRARY
     109ALIGN JUMP_ALIGN
     110Memory_ZeroSSBPwithSizeInCX:
     111    push    es
     112    push    di
     113    push    ax
     114    call    Registers_CopySSBPtoESDI
     115    call    Memory_ZeroESDIwithSizeInCX
     116    pop     ax
     117    pop     di
     118    pop     es
     119    ret
     120%endif
    121121
    122122
Note: See TracChangeset for help on using the changeset viewer.