Ignore:
Timestamp:
Dec 5, 2010, 6:52:11 PM (13 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to XTIDE Universal BIOS Configurator v2:

  • All necessary features should now be implemented.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm

    r59 r65  
    22; Project name  :   XTIDE Universal BIOS Configurator v2
    33; Created date  :   6.10.2010
    4 ; Last update   :   19.11.2010
     4; Last update   :   5.12.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Functions for accessing file and flash buffers.
     
    4141
    4242    call    Buffers_GetFileBufferToESDI
    43     jmp     SHORT Buffers_IsXtideUniversalBiosSignatureInESDI
     43    call    Buffers_IsXtideUniversalBiosSignatureInESDI
     44    jnz     SHORT .NoFileOrBiosLoaded
     45    jmp     SHORT .IsSupportedVersionOfXtideUniversalBiosLoaded
    4446.NoFileOrBiosLoaded:
    4547    or      cl, 1       ; Clear ZF
    4648    ret
    4749
     50
     51ALIGN JUMP_ALIGN
     52.IsSupportedVersionOfXtideUniversalBiosLoaded:
     53   
    4854
    4955;--------------------------------------------------------------------
     
    7985;       Nothing
    8086;   Corrupts registers:
    81 ;       AX, BX, CX, DX
     87;       AX, CX
    8288;--------------------------------------------------------------------
    8389ALIGN JUMP_ALIGN
     
    8591    and     WORD [cs:g_cfgVars+CFGVARS.wFlags], ~(FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED | FLG_CFGVARS_UNSAVED)
    8692    or      WORD [cs:g_cfgVars+CFGVARS.wFlags], ax
    87     ; Fall to .AdjustBiosImageSizeToSupportedEepromSize
    88 
    89 ;--------------------------------------------------------------------
    90 ; .AdjustBiosImageSizeInCXtoSupportedEepromSize
    91 ;   Parameters:
    92 ;       CX:     Size of loaded BIOS image
    93 ;   Returns:
    94 ;       CX:     Size of BIOS image (and EEPROM required)
    95 ;   Corrupts registers:
    96 ;       AX, BX, DX
    97 ;--------------------------------------------------------------------
    98 .AdjustBiosImageSizeInCXtoSupportedEepromSize:
    99     mov     bx, .rgwSupportedEepromSizes
    100     mov     dx, NUMBER_OF_SUPPORTED_EEPROM_SIZES-1
    101 ALIGN JUMP_ALIGN
    102 .CheckNextEepromSize:
    103     cmp     cx, [cs:bx]
    104     je      SHORT .StoreImageSizeFromCX
    105     jb      SHORT .AppendZeroesToTheEndOfBuffer
    106     inc     bx
    107     inc     bx
    108     dec     dx
    109     jnz     SHORT .CheckNextEepromSize
    110     xor     cx, cx
    111     jmp     SHORT .StoreImageSizeFromCX ; 0 = 65536
    112 ALIGN WORD_ALIGN
    113 .rgwSupportedEepromSizes:
    114     dw      4<<10
    115     dw      8<<10
    116     dw      16<<10
    117     dw      32<<10
    118 
    119 ;--------------------------------------------------------------------
    120 ; .AppendZeroesToTheEndOfBuffer
    121 ;   Parameters:
    122 ;       CX:     Size of loaded BIOS image
    123 ;       CS:BX:  Ptr to EEPROM size
    124 ;   Returns:
    125 ;       CX:     EEPROM size
    126 ;   Corrupts registers:
    127 ;       AX
    128 ;--------------------------------------------------------------------
    129 ALIGN JUMP_ALIGN
    130 .AppendZeroesToTheEndOfBuffer:
    131     push    es
    132     push    di
    133 
    134     call    Buffers_GetFileBufferToESDI
    135     mov     ax, [cs:bx]
    136     sub     ax, cx          ; AX = zeroes to append
    137     xchg    ax, cx          ; AX = BIOS image size, CX = zeroes to append
    138     add     di, ax
    139     call    Memory_ZeroESDIwithSizeInCX
    140     mov     cx, [cs:bx]
    141 
    142     pop     di
    143     pop     es
    144     ; Fall to .StoreImageSizeFromCX
    145 
    146 ;--------------------------------------------------------------------
    147 ; .StoreImageSizeFromCX
    148 ;   Parameters:
    149 ;       CX:     Size of BIOS image (and EEPROM required)
    150 ;   Returns:
    151 ;       Nothing
    152 ;   Corrupts registers:
    153 ;       Nothing
    154 ;--------------------------------------------------------------------
    155 ALIGN JUMP_ALIGN
    156 .StoreImageSizeFromCX:
    157     mov     [cs:g_cfgVars+CFGVARS.wImageSize], cx
     93    mov     ax, (64<<10) / 2    ; 32768 WORDs
     94    shr     cx, 1               ; Bytes to WORDs
     95    eCMOVZ  cx, ax
     96    mov     [cs:g_cfgVars+CFGVARS.wImageSizeInWords], cx
    15897    ret
    15998
     
    204143
    205144;--------------------------------------------------------------------
     145; Buffers_AppendZeroesIfNeeded
     146;   Parameters:
     147;       Nothing
     148;   Returns:
     149;       Nothing
     150;   Corrupts registers:
     151;       AX, CX, DI
     152;--------------------------------------------------------------------
     153ALIGN JUMP_ALIGN
     154Buffers_AppendZeroesIfNeeded:
     155    push    es
     156
     157    eMOVZX  di, BYTE [cs:g_cfgVars+CFGVARS.bEepromType]
     158    mov     cx, [cs:di+g_rgwEepromTypeToSizeInWords]
     159    sub     cx, [cs:g_cfgVars+CFGVARS.wImageSizeInWords]    ; CX = WORDs to append
     160    jle     SHORT .NoNeedToAppendZeroes
     161
     162    call    Buffers_GetFileBufferToESDI
     163    mov     ax, [cs:g_cfgVars+CFGVARS.wImageSizeInWords]
     164    shl     ax, 1
     165    add     di, ax          ; ES:DI now point first unused image byte
     166    xor     ax, ax
     167    cld
     168    rep stosw
     169ALIGN JUMP_ALIGN
     170.NoNeedToAppendZeroes:
     171    pop     es
     172    ret
     173
     174
     175;--------------------------------------------------------------------
    206176; Buffers_GenerateChecksum
    207177;   Parameters:
     
    217187
    218188    call    Buffers_GetFileBufferToESDI
    219     mov     cx, [cs:g_cfgVars+CFGVARS.wImageSize]
     189    mov     cx, [cs:g_cfgVars+CFGVARS.wImageSizeInWords]
     190    shl     cx, 1           ; Words to bytes
    220191    dec     cx              ; Leave space for checksum byte
    221192    xor     ax, ax
     
    268239;--------------------------------------------------------------------
    269240; Buffers_GetFileBufferToESDI
     241; Buffers_GetFlashComparisonBufferToESDI
    270242; Buffers_GetFileDialogItemBufferToESDI
    271243;   Parameters:
     
    277249;--------------------------------------------------------------------
    278250ALIGN JUMP_ALIGN
     251Buffers_GetFlashComparisonBufferToESDI:
    279252Buffers_GetFileDialogItemBufferToESDI:
    280253    call    Buffers_GetFileBufferToESDI
     
    285258    pop     di
    286259    ret
     260ALIGN JUMP_ALIGN
    287261Buffers_GetFileBufferToESDI:
    288262    mov     di, cs
Note: See TracChangeset for help on using the changeset viewer.