source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/ConfigurationMenu.asm@ 108

Last change on this file since 108 was 108, checked in by krille_n_@…, 14 years ago

Fixed a spelling mistake and cleaned the source some. No changes to the actual code.

File size: 12.1 KB
Line 
1; Project name : XTIDE Universal BIOS Configurator v2
2; Description : "Configure XTIDE Universal BIOS" menu structs and functions.
3
4; Section containing initialized data
5SECTION .data
6
7ALIGN WORD_ALIGN
8g_MenupageForConfigurationMenu:
9istruc MENUPAGE
10 at MENUPAGE.fnEnter, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility
11 at MENUPAGE.fnBack, dw MainMenu_EnterMenuOrModifyItemVisibility
12 at MENUPAGE.wMenuitems, dw 11
13iend
14
15g_MenuitemConfigurationBackToMainMenu:
16istruc MENUITEM
17 at MENUITEM.fnActivate, dw MainMenu_EnterMenuOrModifyItemVisibility
18 at MENUITEM.szName, dw g_szItemCfgBackToMain
19 at MENUITEM.szQuickInfo, dw g_szItemCfgBackToMain
20 at MENUITEM.szHelp, dw g_szItemCfgBackToMain
21 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
22 at MENUITEM.bType, db TYPE_MENUITEM_PAGEBACK
23iend
24
25g_MenuitemConfigurationPrimaryIdeController:
26istruc MENUITEM
27 at MENUITEM.fnActivate, dw PrimaryIdeController
28 at MENUITEM.szName, dw g_szItemCfgIde1
29 at MENUITEM.szQuickInfo, dw g_szNfoCfgIde
30 at MENUITEM.szHelp, dw g_szNfoCfgIde
31 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
32 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
33iend
34
35g_MenuitemConfigurationSecondaryIdeController:
36istruc MENUITEM
37 at MENUITEM.fnActivate, dw SecondaryIdeController
38 at MENUITEM.szName, dw g_szItemCfgIde2
39 at MENUITEM.szQuickInfo, dw g_szNfoCfgIde
40 at MENUITEM.szHelp, dw g_szNfoCfgIde
41 at MENUITEM.bFlags, db NULL
42 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
43iend
44
45g_MenuitemConfigurationTertiaryIdeController:
46istruc MENUITEM
47 at MENUITEM.fnActivate, dw TertiaryIdeController
48 at MENUITEM.szName, dw g_szItemCfgIde3
49 at MENUITEM.szQuickInfo, dw g_szNfoCfgIde
50 at MENUITEM.szHelp, dw g_szNfoCfgIde
51 at MENUITEM.bFlags, db NULL
52 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
53iend
54
55g_MenuitemConfigurationQuaternaryIdeController:
56istruc MENUITEM
57 at MENUITEM.fnActivate, dw QuaternaryIdeController
58 at MENUITEM.szName, dw g_szItemCfgIde4
59 at MENUITEM.szQuickInfo, dw g_szNfoCfgIde
60 at MENUITEM.szHelp, dw g_szNfoCfgIde
61 at MENUITEM.bFlags, db NULL
62 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
63iend
64
65g_MenuitemConfigurationQuinaryIdeController:
66istruc MENUITEM
67 at MENUITEM.fnActivate, dw QuinaryIdeController
68 at MENUITEM.szName, dw g_szItemCfgIde5
69 at MENUITEM.szQuickInfo, dw g_szNfoCfgIde
70 at MENUITEM.szHelp, dw g_szNfoCfgIde
71 at MENUITEM.bFlags, db NULL
72 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
73iend
74
75g_MenuitemConfigurationBootMenuSettings:
76istruc MENUITEM
77 at MENUITEM.fnActivate, dw BootMenuSettingsMenu_EnterMenuOrModifyItemVisibility
78 at MENUITEM.szName, dw g_szItemCfgBootMenu
79 at MENUITEM.szQuickInfo, dw g_szNfoCfgBootMenu
80 at MENUITEM.szHelp, dw g_szNfoCfgBootMenu
81 at MENUITEM.bFlags, db NULL
82 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
83iend
84
85g_MenuitemConfigurationBootLoaderType:
86istruc MENUITEM
87 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
88 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
89 at MENUITEM.szName, dw g_szItemCfgBootLoader
90 at MENUITEM.szQuickInfo, dw g_szNfoCfgBootLoader
91 at MENUITEM.szHelp, dw g_szNfoCfgBootLoader
92 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_BYTEVALUE
93 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE
94 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.bBootLdrType
95 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szItemCfgBootLoader
96 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szMultichoiceCfgBootLoader
97 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup, dw g_rgwChoiceToValueLookupForBootLoaderType
98 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForBootLoaderType
99iend
100
101g_MenuitemConfigurationFullOperatingMode:
102istruc MENUITEM
103 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
104 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
105 at MENUITEM.szName, dw g_szItemCfgFullMode
106 at MENUITEM.szQuickInfo, dw g_szNfoCfgFullMode
107 at MENUITEM.szHelp, dw g_szHelpCfgFullMode
108 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
109 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE
110 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.wFlags
111 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgCfgFullMode
112 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szMultichoiceBooleanFlag
113 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForFlagBooleans
114 at MENUITEM.itemValue + ITEM_VALUE.wValueBitmask, dw FLG_ROMVARS_FULLMODE
115iend
116
117g_MenuitemConfigurationKiBtoStealFromRAM:
118istruc MENUITEM
119 at MENUITEM.fnActivate, dw Menuitem_ActivateUnsignedInputForMenuitemInDSSI
120 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
121 at MENUITEM.szName, dw g_szItemCfgStealSize
122 at MENUITEM.szQuickInfo, dw g_szNfoCfgStealSize
123 at MENUITEM.szHelp, dw g_szHelpCfgStealSize
124 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_BYTEVALUE
125 at MENUITEM.bType, db TYPE_MENUITEM_UNSIGNED
126 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.bStealSize
127 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgCfgStealSize
128 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 1
129 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw 255
130iend
131
132g_MenuitemConfigurationIdeControllers:
133istruc MENUITEM
134 at MENUITEM.fnActivate, dw Menuitem_ActivateUnsignedInputForMenuitemInDSSI
135 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
136 at MENUITEM.szName, dw g_szItemCfgIdeCnt
137 at MENUITEM.szQuickInfo, dw g_szNfoCfgIdeCnt
138 at MENUITEM.szHelp, dw g_szNfoCfgIdeCnt
139 at MENUITEM.bFlags, db FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_BYTEVALUE
140 at MENUITEM.bType, db TYPE_MENUITEM_UNSIGNED
141 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.bIdeCnt
142 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgCfgIdeCnt
143 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 1
144 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw 5
145iend
146
147
148g_rgwChoiceToValueLookupForBootLoaderType:
149 dw BOOTLOADER_TYPE_MENU
150 dw BOOTLOADER_TYPE_SIMPLE
151 dw BOOTLOADER_TYPE_NONE
152g_rgszValueToStringLookupForBootLoaderType:
153 dw g_szValueCfgBootLoaderMenu
154 dw g_szValueCfgBootLoaderAthenC
155 dw g_szUnidentified
156 dw g_szValueCfgBootLoaderSystem
157
158
159; Section containing code
160SECTION .text
161
162;--------------------------------------------------------------------
163; MainMenu_EnterMenuOrModifyItemVisibility
164; Parameters:
165; SS:BP: Menu handle
166; Returns:
167; Nothing
168; Corrupts registers:
169; All, except BP
170;--------------------------------------------------------------------
171ALIGN JUMP_ALIGN
172ConfigurationMenu_EnterMenuOrModifyItemVisibility:
173 push cs
174 pop ds
175 call .DisableAllIdeControllerMenuitems
176 call .EnableIdeControllerMenuitemsBasedOnConfiguration
177 call .EnableOrDisableBootMenuSettings
178 call .EnableOrDisableKiBtoStealFromRAM
179 call .EnableOrDisableIdeControllerCount
180 mov si, g_MenupageForConfigurationMenu
181 jmp Menupage_ChangeToNewMenupageInDSSI
182
183;--------------------------------------------------------------------
184; .DisableAllIdeControllerMenuitems
185; .EnableIdeControllerMenuitemsBasedOnConfiguration
186; Parameters:
187; SS:BP: Menu handle
188; Returns:
189; Nothing
190; Corrupts registers:
191; AX, BX, CX
192;--------------------------------------------------------------------
193ALIGN JUMP_ALIGN
194.DisableAllIdeControllerMenuitems:
195 mov cx, MAX_ALLOWED_IDE_CONTROLLERS-1
196 mov bx, g_MenuitemConfigurationSecondaryIdeController
197ALIGN JUMP_ALIGN
198.DisableNextIdeControllerMenuitem:
199 call .DisableMenuitemFromCSBX
200 add bx, BYTE MENUITEM_size
201 loop .DisableNextIdeControllerMenuitem
202 ret
203
204ALIGN JUMP_ALIGN
205.EnableIdeControllerMenuitemsBasedOnConfiguration:
206 call .GetIdeControllerCountToCX
207 dec cx ; Primary always enabled
208 jcxz .PrimaryControllerAlreadyEnabled
209 mov bx, g_MenuitemConfigurationSecondaryIdeController
210ALIGN JUMP_ALIGN
211.EnableNextIdeControllerMenuitem:
212 call .EnableMenuitemFromCSBX
213 add bx, BYTE MENUITEM_size
214 loop .EnableNextIdeControllerMenuitem
215.PrimaryControllerAlreadyEnabled:
216 ret
217
218;--------------------------------------------------------------------
219; .GetIdeControllerCountToCX
220; Parameters:
221; SS:BP: Menu handle
222; Returns:
223; CX: Number of IDE controllers to configure
224; Corrupts registers:
225; AX, BX
226;--------------------------------------------------------------------
227ALIGN JUMP_ALIGN
228.GetIdeControllerCountToCX:
229 call Buffers_GetRomvarsFlagsToAX
230 test ax, FLG_ROMVARS_FULLMODE
231 jz SHORT .AllowOnlyOneIdeControllerInLiteMode
232
233 mov bx, ROMVARS.bIdeCnt
234 call Buffers_GetRomvarsValueToAXfromOffsetInBX
235 eMOVZX cx, al
236 ret
237ALIGN JUMP_ALIGN
238.AllowOnlyOneIdeControllerInLiteMode:
239 mov cx, 1
240 ret
241
242
243;--------------------------------------------------------------------
244; .EnableOrDisableBootMenuSettings
245; Parameters:
246; SS:BP: Menu handle
247; Returns:
248; Nothing
249; Corrupts registers:
250; AX, BX, CX
251;--------------------------------------------------------------------
252ALIGN JUMP_ALIGN
253.EnableOrDisableBootMenuSettings:
254 mov bx, ROMVARS.bBootLdrType
255 call Buffers_GetRomvarsValueToAXfromOffsetInBX
256 mov bx, g_MenuitemConfigurationBootMenuSettings
257 cmp ax, BYTE BOOTLOADER_TYPE_MENU
258 jne SHORT .DisableMenuitemFromCSBX
259 jmp SHORT .EnableMenuitemFromCSBX
260
261
262;--------------------------------------------------------------------
263; .EnableOrDisableKiBtoStealFromRAM
264; Parameters:
265; SS:BP: Menu handle
266; Returns:
267; Nothing
268; Corrupts registers:
269; AX, BX, CX
270;--------------------------------------------------------------------
271ALIGN JUMP_ALIGN
272.EnableOrDisableKiBtoStealFromRAM:
273 call Buffers_GetRomvarsFlagsToAX
274 mov bx, g_MenuitemConfigurationKiBtoStealFromRAM
275 test ax, FLG_ROMVARS_FULLMODE
276 jz SHORT .DisableMenuitemFromCSBX
277 jmp SHORT .EnableMenuitemFromCSBX
278
279;--------------------------------------------------------------------
280; .EnableOrDisableKiBtoStealFromRAM
281; Parameters:
282; SS:BP: Menu handle
283; Returns:
284; Nothing
285; Corrupts registers:
286; AX, BX
287;--------------------------------------------------------------------
288ALIGN JUMP_ALIGN
289.EnableOrDisableIdeControllerCount:
290 call Buffers_GetRomvarsFlagsToAX
291 mov bx, g_MenuitemConfigurationIdeControllers
292 test ax, FLG_ROMVARS_FULLMODE
293 jz SHORT .DisableMenuitemFromCSBX
294 jmp SHORT .EnableMenuitemFromCSBX
295
296;--------------------------------------------------------------------
297; .EnableMenuitemFromCSBX
298; .DisableMenuitemFromCSBX
299; Parameters:
300; CS:BX: Ptr to MENUITEM
301; Returns:
302; Nothing
303; Corrupts registers:
304; Nothing
305;--------------------------------------------------------------------
306ALIGN JUMP_ALIGN
307.EnableMenuitemFromCSBX:
308 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
309 ret
310
311ALIGN JUMP_ALIGN
312.DisableMenuitemFromCSBX:
313 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
314 ret
315
316
317
318;--------------------------------------------------------------------
319; MENUITEM activation functions (.fnActivate)
320; Parameters:
321; SS:BP: Ptr to MENU
322; Returns:
323; Nothing
324; Corrupts registers:
325; All, except segments
326;--------------------------------------------------------------------
327ALIGN JUMP_ALIGN
328PrimaryIdeController:
329 mov bx, ROMVARS.ideVars0
330 jmp SHORT DisplayIdeControllerMenu
331
332ALIGN JUMP_ALIGN
333SecondaryIdeController:
334 mov bx, ROMVARS.ideVars1
335 jmp SHORT DisplayIdeControllerMenu
336
337ALIGN JUMP_ALIGN
338TertiaryIdeController:
339 mov bx, ROMVARS.ideVars2
340 jmp SHORT DisplayIdeControllerMenu
341
342ALIGN JUMP_ALIGN
343QuaternaryIdeController:
344 mov bx, ROMVARS.ideVars3
345 jmp SHORT DisplayIdeControllerMenu
346
347ALIGN JUMP_ALIGN
348QuinaryIdeController:
349 mov bx, ROMVARS.ideVars4
350 ; Fall to DisplayIdeControllerMenu
351
352ALIGN JUMP_ALIGN
353DisplayIdeControllerMenu:
354 call IdeControllerMenu_InitializeToIdevarsOffsetInBX
355 jmp IdeControllerMenu_EnterMenuOrModifyItemVisibility
Note: See TracBrowser for help on using the repository browser.