Changeset 623 in xtideuniversalbios for trunk/Assembly_Library


Ignore:
Timestamp:
Jun 15, 2022, 2:48:59 PM (2 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/Assembly_Library
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Assembly_Library/Inc/Emulate.inc

    r605 r623  
    6060    %endif
    6161%else ; XT
    62     JUMP_ALIGN      EQU     1   ; 2 is optimal for 8086 and NEC V30 CPUs but it's not worth the ROM space for most XT machines with 8088 or NEC V20 CPUs.
    63     WORD_ALIGN      EQU     2   ; The same applies here but the cost of ROM space is negligible.
     62    %ifndef USE_086 ; 8088/V20 CPUs
     63        JUMP_ALIGN      EQU     1   ; 2 is optimal for 8086 and NEC V30 CPUs but it's not worth the ROM space for most XT machines with 8088 or NEC V20 CPUs.
     64        WORD_ALIGN      EQU     2   ; The same applies here but the cost of ROM space is negligible.
     65    %else ; 8086/V30 CPUs
     66        JUMP_ALIGN      EQU     2
     67        WORD_ALIGN      EQU     2
     68    %endif
    6469%endif
    6570
  • 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.