Changeset 592 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm
- Timestamp:
- Jun 25, 2018, 10:29:27 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm
r589 r592 49 49 ALIGN JUMP_ALIGN 50 50 Buffers_IsXtideUniversalBiosLoaded: 51 test WORD[cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED51 test BYTE [cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED 52 52 jnz SHORT .FileOrBiosLoaded 53 or cl, 1; Clear ZF53 test sp, sp ; Clear ZF 54 54 ret 55 55 … … 76 76 add di, BYTE ROMVARS.rgbSign 77 77 mov cx, XTIDE_SIGNATURE_LENGTH / 2 78 %ifdef CLD_NEEDED 78 79 cld 80 %endif 79 81 eSEG_STR repe, cs, cmpsw 80 82 … … 91 93 ; Cleared if some other (AT, 386) build is loaded 92 94 ; Corrupts registers: 93 ; DI, ES95 ; Nothing 94 96 ;-------------------------------------------------------------------- 95 97 ALIGN JUMP_ALIGN 96 98 Buffers_IsXTbuildLoaded: 97 99 %strlen BUILD_TYPE_OFFSET TITLE_STRING_START 100 push es 101 push di 98 102 call Buffers_GetFileBufferToESDI 99 103 cmp WORD [es:di+ROMVARS.szTitle+BUILD_TYPE_OFFSET+1], 'XT' ; +1 is for '(' 104 pop di 105 pop es 100 106 ret 101 107 %undef BUILD_TYPE_OFFSET … … 105 111 ; Buffers_NewBiosWithSizeInDXCXandSourceInAXhasBeenLoadedForConfiguration 106 112 ; Parameters: 107 ; A X: EEPROM source (FLG_CFGVARS_FILELOADED or FLG_CFGVARS_ROMLOADED)113 ; AL: EEPROM source (FLG_CFGVARS_FILELOADED or FLG_CFGVARS_ROMLOADED) 108 114 ; DX:CX: EEPROM size in bytes 109 115 ; Returns: 110 116 ; Nothing 111 117 ; Corrupts registers: 112 ; AX,CX, DX118 ; CX, DX 113 119 ;-------------------------------------------------------------------- 114 120 ALIGN JUMP_ALIGN 115 121 Buffers_NewBiosWithSizeInDXCXandSourceInAXhasBeenLoadedForConfiguration: 116 and WORD[cs:g_cfgVars+CFGVARS.wFlags], ~(FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED | FLG_CFGVARS_UNSAVED)117 or WORD [cs:g_cfgVars+CFGVARS.wFlags], ax122 and BYTE [cs:g_cfgVars+CFGVARS.wFlags], ~(FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED | FLG_CFGVARS_UNSAVED) 123 or [cs:g_cfgVars+CFGVARS.wFlags], al 118 124 shr dx, 1 119 125 rcr cx, 1 … … 135 141 ALIGN JUMP_ALIGN 136 142 Buffers_SetUnsavedChanges: 137 or WORD[cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_UNSAVED143 or BYTE [cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_UNSAVED 138 144 ret 139 145 140 146 ALIGN JUMP_ALIGN 141 147 Buffers_ClearUnsavedChanges: 142 and WORD[cs:g_cfgVars+CFGVARS.wFlags], ~FLG_CFGVARS_UNSAVED148 and BYTE [cs:g_cfgVars+CFGVARS.wFlags], ~FLG_CFGVARS_UNSAVED 143 149 ret 144 150 … … 155 161 ALIGN JUMP_ALIGN 156 162 Buffers_SaveChangesIfFileLoaded: 157 mov ax, [cs:g_cfgVars+CFGVARS.wFlags] 158 and ax, BYTE (FLG_CFGVARS_FILELOADED | FLG_CFGVARS_UNSAVED) 159 cmp ax, BYTE (FLG_CFGVARS_FILELOADED | FLG_CFGVARS_UNSAVED) 160 jne SHORT .NothingToSave 161 call Dialogs_DisplaySaveChangesDialog 163 mov al, [cs:g_cfgVars+CFGVARS.wFlags] 164 and al, FLG_CFGVARS_FILELOADED | FLG_CFGVARS_UNSAVED 165 jz SHORT .NothingToSave 166 jpo SHORT .NothingToSave 167 mov bx, g_szDlgSaveChanges 168 call Dialogs_DisplayYesNoResponseDialogWithTitleStringInBX 162 169 jnz SHORT .NothingToSave 163 170 jmp BiosFile_SaveUnsavedChanges … … 181 188 182 189 eMOVZX di, [cs:g_cfgVars+CFGVARS.bEepromType] 183 mov cx, [cs:di+g_rgwEepromTypeToSizeInWords] 190 ;%if g_rgwEepromTypeToSizeInWords = 0 ; *FIXME* It really is but NASM won't accept this. 191 mov cx, [cs:di] 192 ;%else 193 ; mov cx, [cs:di+g_rgwEepromTypeToSizeInWords] 194 ;%endif 184 195 sub cx, [cs:g_cfgVars+CFGVARS.wImageSizeInWords] ; CX = WORDs to append 185 196 jbe SHORT .NoNeedToAppendZeroes … … 187 198 call Buffers_GetFileBufferToESDI 188 199 mov ax, [cs:g_cfgVars+CFGVARS.wImageSizeInWords] 189 shlax, 1200 eSHL_IM ax, 1 190 201 add di, ax ; ES:DI now point first unused image byte 191 202 xor ax, ax 203 %ifdef CLD_NEEDED 192 204 cld 205 %endif 193 206 rep stosw 194 207 ALIGN JUMP_ALIGN … … 214 227 call Buffers_GetFileBufferToESDI 215 228 call EEPROM_GetXtideUniversalBiosSizeFromESDItoDXCX 229 %ifdef CLD_NEEDED 230 cld 231 %endif 216 232 217 233 ; Compatibility fix for 3Com 3C503 cards where the ASIC returns 8080h as the last two bytes of the ROM. … … 223 239 jne SHORT .BiosSizeIsNot8K 224 240 ; The BIOS size is 8K and therefore a potential candidate for a 3Com 3C503 card. 225 dec cx 226 dec cx 241 mov cl, (8192 - 3) & 0FFh 227 242 mov ah, 3 228 243 ALIGN JUMP_ALIGN … … 230 245 .SumNextByte: 231 246 add al, [es:di] 232 .NextChecksumByte:233 247 inc di 234 248 loop .SumNextByte 249 .NextChecksumByte: 235 250 neg al 236 mov [es:di], al 237 inc cx 251 stosb 238 252 dec ah 239 253 jnz SHORT .NextChecksumByte … … 306 320 307 321 ;-------------------------------------------------------------------- 308 ; Buffers_GetFileBufferToESDI309 322 ; Buffers_GetFlashComparisonBufferToESDI 310 323 ; Buffers_GetFileDialogItemBufferToESDI 324 ; Buffers_GetFileBufferToESDI 311 325 ; Parameters: 312 326 ; Nothing … … 320 334 Buffers_GetFileDialogItemBufferToESDI: 321 335 call Buffers_GetFileBufferToESDI 322 push di323 336 mov di, es 324 add di, 1000h ; Third 64k page 325 mov es, di 326 pop di 327 ret 328 ALIGN JUMP_ALIGN 337 SKIP2B f 329 338 Buffers_GetFileBufferToESDI: 330 339 mov di, cs
Note:
See TracChangeset
for help on using the changeset viewer.