source: xtideuniversalbios/tags/Configurator_for_v1.1.5/Src/Menupages/ConfigurationMenu.asm@ 562

Last change on this file since 562 was 59, checked in by Tomi Tilli, 14 years ago

Changes to Configuration Program v2:

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