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

Last change on this file since 225 was 206, checked in by aitotat@…, 13 years ago

Changes to Configurator v2:

  • Program now properly quits when selecting Exit to DOS from main menu.
File size: 9.4 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 9
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_MenuitemConfigurationBootMenuSettings:
66istruc MENUITEM
67 at MENUITEM.fnActivate, dw BootMenuSettingsMenu_EnterMenuOrModifyItemVisibility
68 at MENUITEM.szName, dw g_szItemCfgBootMenu
69 at MENUITEM.szQuickInfo, dw g_szNfoCfgBootMenu
70 at MENUITEM.szHelp, dw g_szNfoCfgBootMenu
71 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
72 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
73iend
74
75g_MenuitemConfigurationFullOperatingMode:
76istruc MENUITEM
77 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
78 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
79 at MENUITEM.szName, dw g_szItemCfgFullMode
80 at MENUITEM.szQuickInfo, dw g_szNfoCfgFullMode
81 at MENUITEM.szHelp, dw g_szHelpCfgFullMode
82 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
83 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE
84 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.wFlags
85 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgCfgFullMode
86 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szMultichoiceBooleanFlag
87 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForFlagBooleans
88 at MENUITEM.itemValue + ITEM_VALUE.wValueBitmask, dw FLG_ROMVARS_FULLMODE
89iend
90
91g_MenuitemConfigurationKiBtoStealFromRAM:
92istruc MENUITEM
93 at MENUITEM.fnActivate, dw Menuitem_ActivateUnsignedInputForMenuitemInDSSI
94 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
95 at MENUITEM.szName, dw g_szItemCfgStealSize
96 at MENUITEM.szQuickInfo, dw g_szNfoCfgStealSize
97 at MENUITEM.szHelp, dw g_szHelpCfgStealSize
98 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_BYTEVALUE
99 at MENUITEM.bType, db TYPE_MENUITEM_UNSIGNED
100 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.bStealSize
101 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgCfgStealSize
102 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 1
103 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw 255
104iend
105
106g_MenuitemConfigurationIdeControllers:
107istruc MENUITEM
108 at MENUITEM.fnActivate, dw ActivateInputForNumberOfIdeControllersMenuitemInDSSI
109 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
110 at MENUITEM.szName, dw g_szItemCfgIdeCnt
111 at MENUITEM.szQuickInfo, dw g_szNfoCfgIdeCnt
112 at MENUITEM.szHelp, dw g_szNfoCfgIdeCnt
113 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_BYTEVALUE
114 at MENUITEM.bType, db TYPE_MENUITEM_UNSIGNED
115 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.bIdeCnt
116 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgCfgIdeCnt
117 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 1
118 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw MAX_ALLOWED_IDE_CONTROLLERS
119iend
120
121
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
135ConfigurationMenu_EnterMenuOrModifyItemVisibility:
136 push cs
137 pop ds
138 call .DisableAllIdeControllerMenuitems
139 call .EnableIdeControllerMenuitemsBasedOnConfiguration
140 call .EnableOrDisableKiBtoStealFromRAM
141 call LimitIdeControllersForLiteMode
142 mov si, g_MenupageForConfigurationMenu
143 jmp Menupage_ChangeToNewMenupageInDSSI
144
145;--------------------------------------------------------------------
146; .DisableAllIdeControllerMenuitems
147; .EnableIdeControllerMenuitemsBasedOnConfiguration
148; Parameters:
149; SS:BP: Menu handle
150; Returns:
151; Nothing
152; Corrupts registers:
153; AX, BX, CX, DI, ES
154;--------------------------------------------------------------------
155ALIGN JUMP_ALIGN
156.DisableAllIdeControllerMenuitems:
157 mov cx, MAX_ALLOWED_IDE_CONTROLLERS-1
158 mov bx, g_MenuitemConfigurationSecondaryIdeController
159ALIGN JUMP_ALIGN
160.DisableNextIdeControllerMenuitem:
161 call .DisableMenuitemFromCSBX
162 add bx, BYTE MENUITEM_size
163 loop .DisableNextIdeControllerMenuitem
164 ret
165
166ALIGN JUMP_ALIGN
167.EnableIdeControllerMenuitemsBasedOnConfiguration:
168 call Buffers_GetIdeControllerCountToCX
169 dec cx ; Primary always enabled
170 jz SHORT .PrimaryControllerAlreadyEnabled
171 mov bx, g_MenuitemConfigurationSecondaryIdeController
172ALIGN JUMP_ALIGN
173.EnableNextIdeControllerMenuitem:
174 call .EnableMenuitemFromCSBX
175 add bx, BYTE MENUITEM_size
176 loop .EnableNextIdeControllerMenuitem
177.PrimaryControllerAlreadyEnabled:
178 ret
179
180
181;--------------------------------------------------------------------
182; .EnableOrDisableKiBtoStealFromRAM
183; Parameters:
184; SS:BP: Menu handle
185; Returns:
186; Nothing
187; Corrupts registers:
188; AX, BX, CX
189;--------------------------------------------------------------------
190ALIGN JUMP_ALIGN
191.EnableOrDisableKiBtoStealFromRAM:
192 call Buffers_GetRomvarsFlagsToAX
193 mov bx, g_MenuitemConfigurationKiBtoStealFromRAM
194 test ax, FLG_ROMVARS_FULLMODE
195 jz SHORT .DisableMenuitemFromCSBX
196 ; Fall to .EnableMenuitemFromCSBX
197
198
199;--------------------------------------------------------------------
200; .EnableMenuitemFromCSBX
201; .DisableMenuitemFromCSBX
202; Parameters:
203; CS:BX: Ptr to MENUITEM
204; Returns:
205; Nothing
206; Corrupts registers:
207; Nothing
208;--------------------------------------------------------------------
209ALIGN JUMP_ALIGN
210.EnableMenuitemFromCSBX:
211 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
212 ret
213
214ALIGN JUMP_ALIGN
215.DisableMenuitemFromCSBX:
216 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
217 ret
218
219
220
221;--------------------------------------------------------------------
222; MENUITEM activation functions (.fnActivate)
223; Parameters:
224; SS:BP: Ptr to MENU
225; Returns:
226; Nothing
227; Corrupts registers:
228; All, except segments
229;--------------------------------------------------------------------
230ALIGN JUMP_ALIGN
231PrimaryIdeController:
232 mov bx, ROMVARS.ideVars0
233 jmp SHORT DisplayIdeControllerMenu
234
235ALIGN JUMP_ALIGN
236SecondaryIdeController:
237 mov bx, ROMVARS.ideVars1
238 jmp SHORT DisplayIdeControllerMenu
239
240ALIGN JUMP_ALIGN
241TertiaryIdeController:
242 mov bx, ROMVARS.ideVars2
243 jmp SHORT DisplayIdeControllerMenu
244
245ALIGN JUMP_ALIGN
246QuaternaryIdeController:
247 mov bx, ROMVARS.ideVars3
248 ; Fall to DisplayIdeControllerMenu
249
250ALIGN JUMP_ALIGN
251DisplayIdeControllerMenu:
252 call IdeControllerMenu_InitializeToIdevarsOffsetInBX
253 jmp IdeControllerMenu_EnterMenuOrModifyItemVisibility
254
255
256ALIGN JUMP_ALIGN
257ActivateInputForNumberOfIdeControllersMenuitemInDSSI:
258 call Menuitem_ActivateUnsignedInputForMenuitemInDSSI
259 ; Fall to LimitIdeControllersForLiteMode
260
261;--------------------------------------------------------------------
262; LimitIdeControllersForLiteMode
263; Parameters:
264; SS:BP: Menu handle
265; Returns:
266; Nothing
267; Corrupts registers:
268; AX, CX, DI
269;--------------------------------------------------------------------
270ALIGN JUMP_ALIGN
271LimitIdeControllersForLiteMode:
272 push es
273 call Buffers_GetIdeControllerCountToCX
274 mov [es:di+ROMVARS.bIdeCnt], cl
275 CALL_MENU_LIBRARY GetHighlightedItemToAX
276 CALL_MENU_LIBRARY RefreshItemFromAX
277 pop es
278 ret
Note: See TracBrowser for help on using the repository browser.