source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm@ 622

Last change on this file since 622 was 621, checked in by Krister Nordvall, 3 years ago

Changes:

  • Fixed three different bugs all causing the boot menu to show drives using IRQs even though the BIOS had been built without MODULE_IRQ.
  • Fixed two bugs in XTIDECFG where loading a BIOS from file and then loading the old settings from EEPROM would
    • overwrite ROMVARS.wFlags in the loaded BIOS file (in RAM). The possibly resulting mismatch of module flags could make it impossible to change settings for modules included in the BIOS or allow changing settings for modules not included in the BIOS.
    • not copy the color theme over to the loaded BIOS.
  • Also fixed two very minor bugs in XTIDECFG in BiosFile_LoadFileFromDSSItoRamBuffer and BiosFile_SaveRamBufferToFileInDSSI where the error handling in these routines would close whatever file handle that happened to match the error code returned by DOS in AX.
  • Made significant changes to the new flash ROM programming routines to reduce the size. Also fixed a minor bug that would cause the second verification to be skipped and return success when programming a 64 KB block of data.
  • Changed the custom BIOS build file names to the 8.3 format.
  • Changed some help strings in XTIDECFG to clarify things.
  • Other minor optimizations and fixes.
File size: 10.2 KB
RevLine 
[57]1; Project name : XTIDE Universal BIOS Configurator v2
2; Description : Main menu structs and functions.
3
[376]4;
[525]5; XTIDE Universal BIOS and Associated Tools
[526]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.
[525]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
[525]16; GNU General Public License for more details.
[376]17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
[525]18;
[376]19
[57]20; Section containing initialized data
21SECTION .data
22
23ALIGN WORD_ALIGN
24g_MenupageForMainMenu:
25istruc MENUPAGE
26 at MENUPAGE.fnEnter, dw MainMenu_EnterMenuOrModifyItemVisibility
[206]27 at MENUPAGE.fnBack, dw ExitToDosFromBackButton
[371]28 at MENUPAGE.wMenuitems, dw 9
[57]29iend
30
[525]31g_MenuitemMainMenuLicense:
[57]32istruc MENUITEM
[336]33 at MENUITEM.fnActivate, dw Menuitem_DisplayHelpMessageFromDSSI
34 at MENUITEM.szName, dw g_szItemMainLicense
35 at MENUITEM.szQuickInfo, dw g_szNfoMainLicense
36 at MENUITEM.szHelp, dw g_szHelpMainLicense
[525]37 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
[206]38 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
[57]39iend
[525]40
[57]41g_MenuitemMainMenuLoadBiosFromFile:
42istruc MENUITEM
43 at MENUITEM.fnActivate, dw LoadBiosFromFile
44 at MENUITEM.szName, dw g_szItemMainLoadFile
45 at MENUITEM.szQuickInfo, dw g_szNfoMainLoadFile
46 at MENUITEM.szHelp, dw g_szNfoMainLoadFile
47 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
48 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
49iend
50
51g_MenuitemMainMenuLoadXtideUniversalBiosFromRom:
52istruc MENUITEM
53 at MENUITEM.fnActivate, dw LoadXtideUniversalBiosFromRom
54 at MENUITEM.szName, dw g_szItemMainLoadROM
55 at MENUITEM.szQuickInfo, dw g_szNfoMainLoadROM
56 at MENUITEM.szHelp, dw g_szNfoMainLoadROM
57 at MENUITEM.bFlags, db NULL
58 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
59iend
60
61g_MenuitemMainMenuLoadOldSettingsFromEeprom:
62istruc MENUITEM
63 at MENUITEM.fnActivate, dw LoadOldSettingsFromEeprom
64 at MENUITEM.szName, dw g_szItemMainLoadStngs
65 at MENUITEM.szQuickInfo, dw g_szNfoMainLoadStngs
66 at MENUITEM.szHelp, dw g_szNfoMainLoadStngs
67 at MENUITEM.bFlags, db NULL
68 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
69iend
70
71g_MenuitemMainMenuConfigureXtideUniversalBios:
72istruc MENUITEM
[59]73 at MENUITEM.fnActivate, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility
[57]74 at MENUITEM.szName, dw g_szItemMainConfigure
75 at MENUITEM.szQuickInfo, dw g_szNfoMainConfigure
76 at MENUITEM.szHelp, dw g_szNfoMainConfigure
77 at MENUITEM.bFlags, db NULL
78 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
79iend
80
81g_MenuitemMainMenuFlashEeprom:
82istruc MENUITEM
[59]83 at MENUITEM.fnActivate, dw FlashMenu_EnterMenuOrModifyItemVisibility
[57]84 at MENUITEM.szName, dw g_szItemMainFlash
85 at MENUITEM.szQuickInfo, dw g_szNfoMainFlash
86 at MENUITEM.szHelp, dw g_szNfoMainFlash
87 at MENUITEM.bFlags, db NULL
88 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
89iend
90
[525]91g_MenuitemMainMenuSaveFile:
[371]92istruc MENUITEM
93 at MENUITEM.fnActivate, dw BiosFile_SaveUnsavedChanges
94 at MENUITEM.szName, dw g_szItemMainSave
95 at MENUITEM.szQuickInfo, dw g_szNfoMainSave
96 at MENUITEM.szHelp, dw g_szNfoMainSave
97 at MENUITEM.bFlags, db NULL
98 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
[525]99iend
[371]100
[336]101g_MenuitemMainMenuExitToDos:
102istruc MENUITEM
103 at MENUITEM.fnActivate, dw ExitToDosSelectedFromMenu
104 at MENUITEM.szName, dw g_szItemMainExitToDOS
105 at MENUITEM.szQuickInfo, dw g_szNfoMainExitToDOS
106 at MENUITEM.szHelp, dw g_szNfoMainExitToDOS
107 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
108 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
109iend
[57]110
[525]111g_MenuitemMainMenuHomePage:
[336]112istruc MENUITEM
113 at MENUITEM.fnActivate, dw Menuitem_DisplayHelpMessageFromDSSI
114 at MENUITEM.szName, dw g_szItemMainHomePage
115 at MENUITEM.szQuickInfo, dw g_szNfoMainHomePage
116 at MENUITEM.szHelp, dw g_szNfoMainHomePage
[525]117 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
[336]118 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
[525]119iend
[336]120
121
[57]122; Section containing code
123SECTION .text
124
125;--------------------------------------------------------------------
126; MainMenu_EnterMenuOrModifyItemVisibility
127; Parameters:
128; SS:BP: Menu handle
129; Returns:
130; Nothing
131; Corrupts registers:
132; All, except BP
133;--------------------------------------------------------------------
134ALIGN JUMP_ALIGN
135MainMenu_EnterMenuOrModifyItemVisibility:
136 push cs
137 pop ds
138 call .EnableOrDisableXtideRomItems
139 call .EnableOrDisableConfigureXtideUniversalBios
140 call .EnableOrDisableFlashEeprom
[525]141 call .EnableOrDisableSave
[57]142 mov si, g_MenupageForMainMenu
143 jmp Menupage_ChangeToNewMenupageInDSSI
144
145;--------------------------------------------------------------------
146; .EnableOrDisableXtideRomItems
147; Parameters:
148; DS: CFGVARS segment
149; Returns:
150; Nothing
151; Corrupts registers:
152; AX, BX, CX, SI, DI, ES
153;--------------------------------------------------------------------
154ALIGN JUMP_ALIGN
155.EnableOrDisableXtideRomItems:
156 call EEPROM_FindXtideUniversalBiosROMtoESDI
[592]157 jc SHORT .DisableAllRomItems
[57]158 or BYTE [g_MenuitemMainMenuLoadXtideUniversalBiosFromRom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
159 call Buffers_IsXtideUniversalBiosLoaded
160 jne SHORT .DisableLoadSettingFromRom
161 or BYTE [g_MenuitemMainMenuLoadOldSettingsFromEeprom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
162 ret
163
164ALIGN JUMP_ALIGN
165.DisableAllRomItems:
166 and BYTE [g_MenuitemMainMenuLoadXtideUniversalBiosFromRom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
167.DisableLoadSettingFromRom:
168 and BYTE [g_MenuitemMainMenuLoadOldSettingsFromEeprom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
169 ret
170
171;--------------------------------------------------------------------
172; .EnableOrDisableConfigureXtideUniversalBios
173; Parameters:
174; DS: CFGVARS segment
175; Returns:
176; Nothing
177; Corrupts registers:
178; CX, SI, DI, ES
179;--------------------------------------------------------------------
180ALIGN JUMP_ALIGN
181.EnableOrDisableConfigureXtideUniversalBios:
182 call Buffers_IsXtideUniversalBiosLoaded
183 jne SHORT .DisableConfigureXtideUniversalBios
184 or BYTE [g_MenuitemMainMenuConfigureXtideUniversalBios+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
185 ret
186
187ALIGN JUMP_ALIGN
188.DisableConfigureXtideUniversalBios:
189 and BYTE [g_MenuitemMainMenuConfigureXtideUniversalBios+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
190 ret
191
192;--------------------------------------------------------------------
193; .EnableOrDisableFlashEeprom
194; Parameters:
195; DS: CFGVARS segment
196; Returns:
197; Nothing
198; Corrupts registers:
199; Nothing
200;--------------------------------------------------------------------
201ALIGN JUMP_ALIGN
202.EnableOrDisableFlashEeprom:
[592]203 test BYTE [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED
[57]204 jz SHORT .DisableFlashEeprom
205 or BYTE [g_MenuitemMainMenuFlashEeprom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
206 ret
207
208ALIGN JUMP_ALIGN
209.DisableFlashEeprom:
210 and BYTE [g_MenuitemMainMenuFlashEeprom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
211 ret
212
[371]213;--------------------------------------------------------------------
214; .EnableOrDisableSave
215; Parameters:
216; DS: CFGVARS segment
217; Returns:
218; Nothing
219; Corrupts registers:
220; Nothing
221;--------------------------------------------------------------------
[525]222ALIGN JUMP_ALIGN
223.EnableOrDisableSave:
[592]224 test BYTE [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED
[371]225 jz SHORT .DisableSave
226 or BYTE [g_MenuitemMainMenuSaveFile+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
227 ret
[57]228
[525]229ALIGN JUMP_ALIGN
[371]230.DisableSave:
231 and BYTE [g_MenuitemMainMenuSaveFile+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
232 ret
[525]233
[57]234;--------------------------------------------------------------------
235; MENUITEM activation functions (.fnActivate)
236; Parameters:
237; SS:BP: Ptr to MENU
238; Returns:
239; Nothing
240; Corrupts registers:
241; All, except segments
242;--------------------------------------------------------------------
243ALIGN JUMP_ALIGN
[206]244ExitToDosSelectedFromMenu:
[525]245 JMP_MENU_LIBRARY CloseMenuIfExitEventAllows
[57]246
247
248ALIGN JUMP_ALIGN
249LoadBiosFromFile:
[59]250 call Buffers_SaveChangesIfFileLoaded
[602]251 mov cl, FILE_DIALOG_IO_size
252 call Memory_ReserveCLbytesFromStackToDSSI
[57]253 call Dialogs_DisplayFileDialogWithDialogIoInDSSI
254 cmp BYTE [si+FILE_DIALOG_IO.bUserCancellation], TRUE
255 je SHORT .CancelFileLoading
256
257 add si, BYTE FILE_DIALOG_IO.szFile
258 call BiosFile_LoadFileFromDSSItoRamBuffer
[592]259 call LoadColorTheme
[57]260 call MainMenu_EnterMenuOrModifyItemVisibility
261.CancelFileLoading:
262 add sp, BYTE FILE_DIALOG_IO_size
[525]263ExitToDosFromBackButton:
[57]264 ret
265
266
267ALIGN JUMP_ALIGN
268LoadXtideUniversalBiosFromRom:
[59]269 call Buffers_SaveChangesIfFileLoaded
[68]270 call EEPROM_LoadXtideUniversalBiosFromRomToRamBufferAndReturnSizeInDXCX
[596]271 mov al, FLG_CFGVARS_ROMLOADED
272 call Buffers_NewBiosWithSizeInDXCXandSourceInALhasBeenLoadedForConfiguration
[68]273 mov dx, g_szDlgMainLoadROM
[118]274 call Dialogs_DisplayNotificationFromCSDX
[592]275 call LoadColorTheme
[118]276 jmp MainMenu_EnterMenuOrModifyItemVisibility
[57]277
278
279ALIGN JUMP_ALIGN
280LoadOldSettingsFromEeprom:
[59]281 call Buffers_SaveChangesIfFileLoaded
[57]282 call EEPROM_LoadOldSettingsFromRomToRamBuffer
[546]283 call Buffers_SetUnsavedChanges
[68]284 mov dx, g_szDlgMainLoadStngs
[592]285 call Dialogs_DisplayNotificationFromCSDX
286 call EEPROM_FindXtideUniversalBiosROMtoESDI
[621]287 call LoadColorTheme.FromROM ; Returns the color theme index in AX
288 test BYTE [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED
289 jz SHORT .FileNotLoaded
290 ; A file has been loaded so we need to copy the theme to that as well
291 call Buffers_GetFileBufferToESDI
292 add di, ROMVARS.pColorTheme
293 call WriteColorTheme
294.FileNotLoaded:
[592]295 jmp MainMenu_EnterMenuOrModifyItemVisibility
[336]296
[592]297
298;--------------------------------------------------------------------
299; LoadColorTheme
300; Parameters:
301; ES: ROMVARS segment (only when loading theme from ROM)
302; Returns:
303; Nothing
304; Corrupts registers:
[596]305; AX, BX, CX, SI, DI, ES
[592]306;--------------------------------------------------------------------
307ALIGN JUMP_ALIGN
308LoadColorTheme:
309 call Buffers_GetFileBufferToESDI
[596]310 call Buffers_IsXtideUniversalBiosSignatureInESDI
311 jnz SHORT .Return
[592]312.FromROM:
313 mov ax, [es:ROMVARS.pColorTheme]
314 jmp ReadColorTheme
[596]315.Return:
316 ret
[592]317
Note: See TracBrowser for help on using the repository browser.