source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm @ 620

Last change on this file since 620 was 620, checked in by krille_n_, 3 years ago

Changes:

  • A huge thank you to Jayeson Lee-Steere for adding SST39SF0x0 flash ROM programming support to the configurator (XTIDECFG.COM). This means that there is no longer a need to use a separate program for flashing the Lo-Tech boards and other devices using these flash ROMs.
File size: 16.1 KB
RevLine 
[59]1; Project name  :   XTIDE Universal BIOS Configurator v2
2; Description   :   "Flash EEPROM" menu structs and functions.
3
[376]4;
[526]5; XTIDE Universal BIOS and Associated Tools
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 by XTIDE Universal BIOS Team.
[376]7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
[526]12;
[376]13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
[526]16; GNU General Public License for more details.
[376]17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
[526]18;
[376]19
[59]20; Section containing initialized data
21SECTION .data
22
23ALIGN WORD_ALIGN
24g_MenupageForFlashMenu:
25istruc MENUPAGE
26    at  MENUPAGE.fnEnter,           dw  FlashMenu_EnterMenuOrModifyItemVisibility
27    at  MENUPAGE.fnBack,            dw  MainMenu_EnterMenuOrModifyItemVisibility
28    at  MENUPAGE.wMenuitems,        dw  7
29iend
30
31g_MenuitemFlashBackToMainMenu:
32istruc MENUITEM
33    at  MENUITEM.fnActivate,        dw  MainMenu_EnterMenuOrModifyItemVisibility
34    at  MENUITEM.szName,            dw  g_szItemCfgBackToMain
35    at  MENUITEM.szQuickInfo,       dw  g_szItemCfgBackToMain
36    at  MENUITEM.szHelp,            dw  g_szItemCfgBackToMain
37    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE
38    at  MENUITEM.bType,             db  TYPE_MENUITEM_PAGEBACK
39iend
40
41g_MenuitemFlashStartFlashing:
42istruc MENUITEM
43    at  MENUITEM.fnActivate,        dw  StartFlashing
44    at  MENUITEM.szName,            dw  g_szItemFlashStart
45    at  MENUITEM.szQuickInfo,       dw  g_szNfoFlashStart
46    at  MENUITEM.szHelp,            dw  g_szNfoFlashStart
47    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE
48    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
49iend
50
51g_MenuitemFlashEepromType:
52istruc MENUITEM
[108]53    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
[59]54    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
55    at  MENUITEM.szName,            dw  g_szItemFlashEepromType
56    at  MENUITEM.szQuickInfo,       dw  g_szNfoFlashEepromType
57    at  MENUITEM.szHelp,            dw  g_szNfoFlashEepromType
[620]58    at  MENUITEM.bFlags,            db  FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_PROGRAMVAR | FLG_MENUITEM_BYTEVALUE | FLG_MENUITEM_VISIBLE
[108]59    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
[59]60    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  CFGVARS.bEepromType
61    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgFlashEepromType
[108]62    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiceEepromType
63    at  MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup,     dw  g_rgwChoiceToValueLookupForEepromType
[59]64    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForEepromType
65iend
66
67g_MenuitemFlashSdpCommand:
68istruc MENUITEM
[108]69    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
[59]70    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
71    at  MENUITEM.szName,            dw  g_szItemFlashSDP
72    at  MENUITEM.szQuickInfo,       dw  g_szNfoFlashSDP
73    at  MENUITEM.szHelp,            dw  g_szHelpFlashSDP
[620]74    at  MENUITEM.bFlags,            db  FLG_MENUITEM_PROGRAMVAR | FLG_MENUITEM_BYTEVALUE
[108]75    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
[59]76    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  CFGVARS.bSdpCommand
77    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgFlashSDP
[108]78    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiceSdpCommand
79    at  MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup,     dw  g_rgwChoiceToValueLookupForSdpCommand
[59]80    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForSdpCommand
81iend
82
83g_MenuitemFlashPageSize:
84istruc MENUITEM
[108]85    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
[59]86    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
87    at  MENUITEM.szName,            dw  g_szItemFlashPageSize
88    at  MENUITEM.szQuickInfo,       dw  g_szNfoFlashPageSize
89    at  MENUITEM.szHelp,            dw  g_szHelpFlashPageSize
[620]90    at  MENUITEM.bFlags,            db  FLG_MENUITEM_PROGRAMVAR | FLG_MENUITEM_BYTEVALUE
[108]91    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
[65]92    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  CFGVARS.bEepromPage
[59]93    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgFlashPageSize
[108]94    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoicePageSize
95    at  MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup,     dw  g_rgwChoiceToValueLookupForPageSize
[59]96    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForPageSize
97iend
98
99g_MenuitemFlashEepromAddress:
100istruc MENUITEM
101    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateHexInputForMenuitemInDSSI
102    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteHexValueStringToBufferInESDIfromItemInDSSI
103    at  MENUITEM.szName,            dw  g_szItemFlashAddr
104    at  MENUITEM.szQuickInfo,       dw  g_szNfoFlashAddr
105    at  MENUITEM.szHelp,            dw  g_szNfoFlashAddr
106    at  MENUITEM.bFlags,            db  FLG_MENUITEM_PROGRAMVAR | FLG_MENUITEM_VISIBLE
107    at  MENUITEM.bType,             db  TYPE_MENUITEM_HEX
108    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  CFGVARS.wEepromSegment
109    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgFlashAddr
110    at  MENUITEM.itemValue + ITEM_VALUE.wMinValue,                  dw  0C000h
111    at  MENUITEM.itemValue + ITEM_VALUE.wMaxValue,                  dw  0F800h
112iend
113
114g_MenuitemFlashGenerateChecksum:
115istruc MENUITEM
[108]116    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
[59]117    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
118    at  MENUITEM.szName,            dw  g_szItemFlashChecksum
119    at  MENUITEM.szQuickInfo,       dw  g_szNfoFlashChecksum
120    at  MENUITEM.szHelp,            dw  g_szHelpFlashChecksum
121    at  MENUITEM.bFlags,            db  FLG_MENUITEM_PROGRAMVAR | FLG_MENUITEM_VISIBLE | FLG_MENUITEM_FLAGVALUE
[108]122    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
[59]123    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  CFGVARS.wFlags
124    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgFlashChecksum
[108]125    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiceBooleanFlag
[59]126    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForFlagBooleans
127    at  MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,              dw  FLG_CFGVARS_CHECKSUM
128iend
129
[108]130g_rgwChoiceToValueLookupForEepromType:
[59]131    dw  EEPROM_TYPE.2816_2kiB
132    dw  EEPROM_TYPE.2864_8kiB
[159]133    dw  EEPROM_TYPE.2864_8kiB_MOD
[59]134    dw  EEPROM_TYPE.28256_32kiB
135    dw  EEPROM_TYPE.28512_64kiB
[620]136    dw  EEPROM_TYPE.SST_39SF
137
[59]138g_rgszValueToStringLookupForEepromType:
139    dw  g_szValueFlash2816
140    dw  g_szValueFlash2864
[159]141    dw  g_szValueFlash2864Mod
[59]142    dw  g_szValueFlash28256
143    dw  g_szValueFlash28512
[620]144    dw  g_szValueFlashSST39SF
[59]145
[108]146g_rgwChoiceToValueLookupForSdpCommand:
[59]147    dw  SDP_COMMAND.none
148    dw  SDP_COMMAND.enable
149    dw  SDP_COMMAND.disable
150g_rgszValueToStringLookupForSdpCommand:
151    dw  g_szValueFlashNone
152    dw  g_szValueFlashEnable
153    dw  g_szValueFlashDisable
154
[108]155g_rgwChoiceToValueLookupForPageSize:
[65]156    dw  EEPROM_PAGE.1_byte
157    dw  EEPROM_PAGE.2_bytes
158    dw  EEPROM_PAGE.4_bytes
159    dw  EEPROM_PAGE.8_bytes
160    dw  EEPROM_PAGE.16_bytes
161    dw  EEPROM_PAGE.32_bytes
162    dw  EEPROM_PAGE.64_bytes
[59]163g_rgszValueToStringLookupForPageSize:
164    dw  g_szValueFlash1byte
165    dw  g_szValueFlash2bytes
166    dw  g_szValueFlash4bytes
167    dw  g_szValueFlash8bytes
168    dw  g_szValueFlash16bytes
169    dw  g_szValueFlash32bytes
170    dw  g_szValueFlash64bytes
171
172
173; Section containing code
174SECTION .text
175
176;--------------------------------------------------------------------
177; MainMenu_EnterMenuOrModifyItemVisibility
178;   Parameters:
179;       SS:BP:  Menu handle
180;   Returns:
181;       Nothing
182;   Corrupts registers:
183;       All, except BP
184;--------------------------------------------------------------------
185ALIGN JUMP_ALIGN
186FlashMenu_EnterMenuOrModifyItemVisibility:
187    push    cs
188    pop     ds
[371]189
[592]190    cmp     WORD [g_cfgVars+CFGVARS.wEepromSegment], 0
191    jne     SHORT .AlreadySet
[371]192
193    push    es
194    push    di
195    call    EEPROM_FindXtideUniversalBiosROMtoESDI
[592]196    mov     ax, es
[371]197    pop     di
198    pop     es
[592]199    jnc     SHORT .StoreEepromSegment
[371]200    mov     ax, DEFAULT_EEPROM_SEGMENT
[592]201.StoreEepromSegment:
202    mov     [g_cfgVars+CFGVARS.wEepromSegment], ax
[526]203
[592]204.AlreadySet:
[59]205    mov     si, g_MenupageForFlashMenu
[620]206    ePUSH_T bx, Menupage_ChangeToNewMenupageInDSSI
207    cmp     WORD [g_cfgVars+CFGVARS.bEepromType], EEPROM_TYPE.SST_39SF
208    jz      SHORT .DisableMenuitemsUnusedBySstFlash
209    ; Fall to .EnableMenuitemsUnusedBySstFlash
[59]210
[620]211;--------------------------------------------------------------------
212; .EnableMenuitemsUnusedBySstFlash
213;   Parameters:
214;       SS:BP:  Menu handle
215;   Returns:
216;       Nothing
217;   Corrupts registers:
218;       AX, BX
219;--------------------------------------------------------------------
220ALIGN JUMP_ALIGN
221.EnableMenuitemsUnusedBySstFlash:
222    mov     bx, g_MenuitemFlashSdpCommand
223    call    EnableMenuitemFromCSBX
224    mov     bx, g_MenuitemFlashPageSize
225    jmp     EnableMenuitemFromCSBX
[59]226
227;--------------------------------------------------------------------
[620]228; .DisableMenuitemsUnusedBySstFlash
229;   Parameters:
230;       SS:BP:  Menu handle
231;   Returns:
232;       Nothing
233;   Corrupts registers:
234;       AX, BX
235;--------------------------------------------------------------------
236ALIGN JUMP_ALIGN
237.DisableMenuitemsUnusedBySstFlash:
238    mov     bx, g_MenuitemFlashSdpCommand
239    call    DisableMenuitemFromCSBX
240    mov     bx, g_MenuitemFlashPageSize
241    jmp     DisableMenuitemFromCSBX
242
243;--------------------------------------------------------------------
[59]244; MENUITEM activation functions (.fnActivate)
245;   Parameters:
246;       SS:BP:  Ptr to MENU
247;   Returns:
248;       Nothing
249;   Corrupts registers:
250;       All, except segments
251;--------------------------------------------------------------------
252ALIGN JUMP_ALIGN
253StartFlashing:
[68]254    call    .MakeSureThatImageFitsInEeprom
255    jc      SHORT .InvalidFlashingParameters
[620]256    cmp     WORD [cs:g_cfgVars+CFGVARS.bEepromType], EEPROM_TYPE.SST_39SF
257    jnz     SHORT .SkipAlignmentCheck
258    call    .MakeSureAddress32KAligned
259    jc      SHORT .InvalidFlashingParameters
260.SkipAlignmentCheck:
[65]261    push    es
262    push    ds
263
264    call    .PrepareBuffersForFlashing
[602]265    mov     cl, FLASHVARS_size + PROGRESS_DIALOG_IO_size
266    call    Memory_ReserveCLbytesFromStackToDSSI
[65]267    call    .InitializeFlashvarsFromDSSI
268    mov     bx, si                          ; DS:BX now points to FLASHVARS
[620]269    cmp     WORD [cs:g_cfgVars+CFGVARS.bEepromType], EEPROM_TYPE.SST_39SF
270    jz      SHORT .FlashWithoutProgressBar
[65]271    add     si, BYTE FLASHVARS_size         ; DS:SI now points to PROGRESS_DIALOG_IO
272    call    Dialogs_DisplayProgressDialogForFlashingWithDialogIoInDSSIandFlashvarsInDSBX
[620]273.FlashComplete:
[65]274    call    .DisplayFlashingResultsFromFlashvarsInDSBX
275
276    add     sp, BYTE FLASHVARS_size + PROGRESS_DIALOG_IO_size
277    pop     ds
278    pop     es
[68]279.InvalidFlashingParameters:
[59]280    ret
[65]281
[620]282.FlashWithoutProgressBar:                   ; Worst case. SST devices will
283    call    FlashSst_WithFlashvarsInDSBX    ; either complete flashing
284    jmp     SHORT .FlashComplete            ; or timeout within 2 seconds. 
285
[65]286;--------------------------------------------------------------------
[68]287; .MakeSureThatImageFitsInEeprom
288;   Parameters:
289;       SS:BP:  Ptr to MENU
290;   Returns:
[118]291;       CF:     Set if EEPROM too small
[68]292;   Corrupts registers:
293;       AX, BX, DX
294;--------------------------------------------------------------------
295ALIGN JUMP_ALIGN
296.MakeSureThatImageFitsInEeprom:
[620]297    call    Buffers_GetSelectedEepromSizeInWordsToAX
[68]298    cmp     ax, [cs:g_cfgVars+CFGVARS.wImageSizeInWords]
299    jae     SHORT .ImageFitsInSelectedEeprom
300    mov     dx, g_szErrEepromTooSmall
301    call    Dialogs_DisplayErrorFromCSDX
302    stc
[145]303ALIGN JUMP_ALIGN, ret
[68]304.ImageFitsInSelectedEeprom:
[620]305.AlignmentIs32K:
[592]306.DoNotGenerateChecksumByte:
[68]307    ret
308
309;--------------------------------------------------------------------
[620]310; .MakeSureAddress32KAligned
311;   Parameters:
312;       SS:BP:  Ptr to MENU
313;   Returns:
314;       CF:     Set if EEPROM segment is not 32K aligned
315;   Corrupts registers:
316;       AX, BX, DX
317;--------------------------------------------------------------------
318ALIGN JUMP_ALIGN
319.MakeSureAddress32KAligned:
320    mov     ax, [cs:g_cfgVars+CFGVARS.wEepromSegment]
321    and     ax, 007FFh
322    jz      SHORT .AlignmentIs32K
323    mov     dx, g_szErrAddrNot32KAligned
324    call    Dialogs_DisplayErrorFromCSDX
325    stc
326    ret
327
328;--------------------------------------------------------------------
[65]329; .PrepareBuffersForFlashing
330;   Parameters:
331;       SS:BP:  Ptr to MENU
332;   Returns:
333;       Nothing
334;   Corrupts registers:
335;       AX, BX, CX, SI, DI
336;--------------------------------------------------------------------
337ALIGN JUMP_ALIGN
338.PrepareBuffersForFlashing:
339    call    EEPROM_LoadFromRomToRamComparisonBuffer
340    call    Buffers_AppendZeroesIfNeeded
[592]341    test    BYTE [cs:g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_CHECKSUM
[65]342    jz      SHORT .DoNotGenerateChecksumByte
343    jmp     Buffers_GenerateChecksum
344
345;--------------------------------------------------------------------
346; .InitializeFlashvarsFromDSSI
347;   Parameters:
348;       DS:SI:  Ptr to FLASHVARS to initialize
349;       SS:BP:  Ptr to MENU
350;   Returns:
351;       Nothing
352;   Corrupts registers:
353;       AX, BX, DX, DI, ES
354;--------------------------------------------------------------------
355ALIGN JUMP_ALIGN
356.InitializeFlashvarsFromDSSI:
357    call    Buffers_GetFileBufferToESDI
358    mov     [si+FLASHVARS.fpNextSourcePage], di
359    mov     [si+FLASHVARS.fpNextSourcePage+2], es
360
361    call    Buffers_GetFlashComparisonBufferToESDI
362    mov     [si+FLASHVARS.fpNextComparisonPage], di
363    mov     [si+FLASHVARS.fpNextComparisonPage+2], es
364
365    mov     ax, [cs:g_cfgVars+CFGVARS.wEepromSegment]
366    mov     WORD [si+FLASHVARS.fpNextDestinationPage], 0
367    mov     [si+FLASHVARS.fpNextDestinationPage+2], ax
368
369    mov     al, [cs:g_cfgVars+CFGVARS.bEepromType]
370    mov     [si+FLASHVARS.bEepromType], al
371
372    mov     al, [cs:g_cfgVars+CFGVARS.bSdpCommand]
373    mov     [si+FLASHVARS.bEepromSdpCommand], al
374
[620]375    mov     ax, SST_PAGE_SIZE
376    cmp     WORD [g_cfgVars+CFGVARS.bEepromType], EEPROM_TYPE.SST_39SF
377    jz      SHORT .UseSstPageSize
378
[293]379    eMOVZX  bx, [cs:g_cfgVars+CFGVARS.bEepromPage]
[65]380    mov     ax, [cs:bx+g_rgwEepromPageToSizeInBytes]
[620]381.UseSstPageSize:
[65]382    mov     [si+FLASHVARS.wEepromPageSize], ax
383
384    call    .GetNumberOfPagesToFlashToAX
385    mov     [si+FLASHVARS.wPagesToFlash], ax
386    ret
387
388;--------------------------------------------------------------------
389; .GetNumberOfPagesToFlashToAX
390;   Parameters:
391;       DS:SI:  Ptr to FLASHVARS to initialize
392;   Returns:
393;       AX:     Number of pages to flash (0 = 65536)
394;   Corrupts registers:
395;       BX, DX
396;--------------------------------------------------------------------
397ALIGN JUMP_ALIGN
398.GetNumberOfPagesToFlashToAX:
[620]399    call    Buffers_GetSelectedEepromSizeInWordsToAX
[65]400    xor     dx, dx
[589]401    eSHL_IM ax, 1       ; Size in bytes to...
402    eRCL_IM dx, 1       ; ...DX:AX
[65]403
404    cmp     WORD [si+FLASHVARS.wEepromPageSize], BYTE 1
405    jbe     SHORT .PreventDivideException
406    div     WORD [si+FLASHVARS.wEepromPageSize]
407.PreventDivideException:
408    ret
409
[68]410;--------------------------------------------------------------------
[65]411; .DisplayFlashingResultsFromFlashvarsInDSBX
412;   Parameters:
413;       DS:BX:  Ptr to FLASHVARS
414;       SS:BP:  Ptr to MENU
415;   Returns:
416;       Nothing
417;   Corrupts registers:
418;       AX, BX, DX
419;--------------------------------------------------------------------
420ALIGN JUMP_ALIGN
421.DisplayFlashingResultsFromFlashvarsInDSBX:
[293]422    eMOVZX  bx, [bx+FLASHVARS.flashResult]
[65]423    jmp     [cs:bx+.rgfnFlashResultMessage]
424
425ALIGN WORD_ALIGN
426.rgfnFlashResultMessage:
427    dw      .DisplayFlashSuccessful
[620]428    dw      .DisplayDeviceDetectionError
[65]429    dw      .DisplayPollingError
430    dw      .DisplayDataVerifyError
431
432
433;--------------------------------------------------------------------
[620]434; .DisplayDeviceDetectionError
[65]435; .DisplayPollingError
436; .DisplayDataVerifyError
437; .DisplayFlashSuccessful
438;   Parameters:
439;       SS:BP:  Ptr to MENU
440;   Returns:
441;       Nothing
442;   Corrupts registers:
443;       AX, DX, DI, ES
444;--------------------------------------------------------------------
445ALIGN JUMP_ALIGN
[620]446.DisplayDeviceDetectionError:
447    mov     dx, g_szErrEepromDetection
448    jmp     Dialogs_DisplayErrorFromCSDX
449
450ALIGN JUMP_ALIGN
[65]451.DisplayPollingError:
452    mov     dx, g_szErrEepromPolling
453    jmp     Dialogs_DisplayErrorFromCSDX
454
455ALIGN JUMP_ALIGN
456.DisplayDataVerifyError:
457    mov     dx, g_szErrEepromVerify
458    jmp     Dialogs_DisplayErrorFromCSDX
459
460ALIGN JUMP_ALIGN
461.DisplayFlashSuccessful:
462    call    Buffers_GetFileBufferToESDI
463    cmp     WORD [es:di+ROMVARS.wRomSign], 0AA55h   ; PC ROM?
464    je      SHORT .DisplayRebootMessageAndReboot
465    mov     dx, g_szForeignFlash
466    jmp     Dialogs_DisplayNotificationFromCSDX
467ALIGN JUMP_ALIGN
468.DisplayRebootMessageAndReboot:
[293]469    mov     dx, g_szPCFlashSuccessful
[65]470    call    Dialogs_DisplayNotificationFromCSDX
[246]471    xor     ax, ax          ; Cold boot flag
472    jmp     Reboot_ComputerWithBootFlagInAX
Note: See TracBrowser for help on using the repository browser.