source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm@ 107

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

Changes to Configuration Program v2:

  • Menu structure should now be complete.
File size: 9.5 KB
Line 
1; File name : IdeControllerMenu.asm
2; Project name : XTIDE Universal BIOS Configurator v2
3; Created date : 2.11.2010
4; Last update : 18.11.2010
5; Author : Tomi Tilli
6; Description : "IDE Controller" menu structs and functions.
7
8; Section containing initialized data
9SECTION .data
10
11ALIGN WORD_ALIGN
12g_MenupageForIdeControllerMenu:
13istruc MENUPAGE
14 at MENUPAGE.fnEnter, dw IdeControllerMenu_EnterMenuOrModifyItemVisibility
15 at MENUPAGE.fnBack, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility
16 at MENUPAGE.wMenuitems, dw 8
17iend
18
19g_MenuitemIdeControllerBackToConfigurationMenu:
20istruc MENUITEM
21 at MENUITEM.fnActivate, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility
22 at MENUITEM.szName, dw g_szItemBackToCfgMenu
23 at MENUITEM.szQuickInfo, dw g_szNfoIdeBackToCfgMenu
24 at MENUITEM.szHelp, dw g_szNfoIdeBackToCfgMenu
25 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
26 at MENUITEM.bType, db TYPE_MENUITEM_PAGEBACK
27iend
28
29g_MenuitemIdeControllerMasterDrive:
30istruc MENUITEM
31 at MENUITEM.fnActivate, dw MasterDrive
32 at MENUITEM.szName, dw g_szItemIdeMaster
33 at MENUITEM.szQuickInfo, dw g_szNfoIdeMaster
34 at MENUITEM.szHelp, dw g_szNfoIdeMaster
35 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
36 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
37iend
38
39g_MenuitemIdeControllerSlaveDrive:
40istruc MENUITEM
41 at MENUITEM.fnActivate, dw SlaveDrive
42 at MENUITEM.szName, dw g_szItemIdeSlave
43 at MENUITEM.szQuickInfo, dw g_szNfoIdeSlave
44 at MENUITEM.szHelp, dw g_szNfoIdeSlave
45 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
46 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
47iend
48
49g_MenuitemIdeControllerBusType:
50istruc MENUITEM
51 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiseSelectionForMenuitemInDSSI
52 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
53 at MENUITEM.szName, dw g_szItemIdeBusType
54 at MENUITEM.szQuickInfo, dw g_szNfoIdeBusType
55 at MENUITEM.szHelp, dw g_szNfoIdeBusType
56 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_BYTEVALUE
57 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOISE
58 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL
59 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgBusType
60 at MENUITEM.itemValue + ITEM_VALUE.szMultichoise, dw g_szMultichoiseCfgBusType
61 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiseToValueLookup, dw g_rgwChoiseToValueLookupForBusType
62 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForBusType
63iend
64
65g_MenuitemIdeControllerCommandBlockAddress:
66istruc MENUITEM
67 at MENUITEM.fnActivate, dw Menuitem_ActivateHexInputForMenuitemInDSSI
68 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteHexValueStringToBufferInESDIfromItemInDSSI
69 at MENUITEM.szName, dw g_szItemIdeCmdPort
70 at MENUITEM.szQuickInfo, dw g_szNfoIdeCmdPort
71 at MENUITEM.szHelp, dw g_szHelpIdeCmdPort
72 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
73 at MENUITEM.bType, db TYPE_MENUITEM_HEX
74 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL
75 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgIdeCmdPort
76 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 0
77 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw -1
78iend
79
80g_MenuitemIdeControllerControlBlockAddress:
81istruc MENUITEM
82 at MENUITEM.fnActivate, dw Menuitem_ActivateHexInputForMenuitemInDSSI
83 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteHexValueStringToBufferInESDIfromItemInDSSI
84 at MENUITEM.szName, dw g_szItemIdeCtrlPort
85 at MENUITEM.szQuickInfo, dw g_szNfoIdeCtrlPort
86 at MENUITEM.szHelp, dw g_szHelpIdeCtrlPort
87 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
88 at MENUITEM.bType, db TYPE_MENUITEM_HEX
89 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL
90 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgIdeCtrlPort
91 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 0
92 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw -1
93iend
94
95g_MenuitemIdeControllerEnableInterrupt:
96istruc MENUITEM
97 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiseSelectionForMenuitemInDSSI
98 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
99 at MENUITEM.szName, dw g_szItemIdeEnIRQ
100 at MENUITEM.szQuickInfo, dw g_szNfoIdeEnIRQ
101 at MENUITEM.szHelp, dw g_szHelpIdeEnIRQ
102 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
103 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOISE
104 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL
105 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgIdeEnIRQ
106 at MENUITEM.itemValue + ITEM_VALUE.szMultichoise, dw g_szMultichoiseBooleanFlag
107 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForFlagBooleans
108 at MENUITEM.itemValue + ITEM_VALUE.wValueBitmask, dw 15
109iend
110
111g_MenuitemIdeControllerIdeIRQ:
112istruc MENUITEM
113 at MENUITEM.fnActivate, dw Menuitem_ActivateUnsignedInputForMenuitemInDSSI
114 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
115 at MENUITEM.szName, dw g_szItemIdeIRQ
116 at MENUITEM.szQuickInfo, dw g_szNfoIdeIRQ
117 at MENUITEM.szHelp, dw g_szHelpIdeIRQ
118 at MENUITEM.bFlags, db FLG_MENUITEM_BYTEVALUE
119 at MENUITEM.bType, db TYPE_MENUITEM_UNSIGNED
120 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL
121 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgIdeIRQ
122 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 2
123 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw 15
124iend
125
126g_rgwChoiseToValueLookupForBusType:
127 dw BUS_TYPE_8_DUAL
128 dw BUS_TYPE_8_SINGLE
129 dw BUS_TYPE_16
130 dw BUS_TYPE_32
131g_rgszValueToStringLookupForBusType:
132 dw g_szValueCfgBusTypeDual8b
133 dw g_szValueCfgBusType16b
134 dw g_szValueCfgBusType32b
135 dw g_szValueCfgBusTypeSingle8b
136
137
138; Section containing code
139SECTION .text
140
141;--------------------------------------------------------------------
142; IdeControllerMenu_InitializeToIdevarsOffsetInBX
143; Parameters:
144; SS:BP: Menu handle
145; Returns:
146; Nothing
147; Corrupts registers:
148; AX
149;--------------------------------------------------------------------
150ALIGN JUMP_ALIGN
151IdeControllerMenu_InitializeToIdevarsOffsetInBX:
152 lea ax, [bx+IDEVARS.drvParamsMaster]
153 mov [cs:g_MenuitemIdeControllerMasterDrive+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
154
155 lea ax, [bx+IDEVARS.drvParamsSlave]
156 mov [cs:g_MenuitemIdeControllerSlaveDrive+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
157
158 lea ax, [bx+IDEVARS.bBusType]
159 mov [cs:g_MenuitemIdeControllerBusType+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
160
161 lea ax, [bx+IDEVARS.wPort]
162 mov [cs:g_MenuitemIdeControllerCommandBlockAddress+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
163
164 lea ax, [bx+IDEVARS.wPortCtrl]
165 mov [cs:g_MenuitemIdeControllerControlBlockAddress+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
166
167 lea ax, [bx+IDEVARS.bIRQ]
168 mov [cs:g_MenuitemIdeControllerEnableInterrupt+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
169 mov [cs:g_MenuitemIdeControllerIdeIRQ+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
170 ret
171
172
173;--------------------------------------------------------------------
174; IdeControllerMenu_EnterMenuOrModifyItemVisibility
175; Parameters:
176; SS:BP: Menu handle
177; Returns:
178; Nothing
179; Corrupts registers:
180; All, except BP
181;--------------------------------------------------------------------
182ALIGN JUMP_ALIGN
183IdeControllerMenu_EnterMenuOrModifyItemVisibility:
184 push cs
185 pop ds
186 call .EnableOrDisableIRQ
187 mov si, g_MenupageForIdeControllerMenu
188 jmp Menupage_ChangeToNewMenupageInDSSI
189
190;--------------------------------------------------------------------
191; .EnableOrDisableIRQ
192; Parameters:
193; SS:BP: Menu handle
194; Returns:
195; Nothing
196; Corrupts registers:
197; AX, BX
198;--------------------------------------------------------------------
199ALIGN JUMP_ALIGN
200.EnableOrDisableIRQ:
201 mov bx, [cs:g_MenuitemIdeControllerEnableInterrupt+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
202 call Buffers_GetRomvarsValueToAXfromOffsetInBX
203 mov bx, g_MenuitemIdeControllerIdeIRQ
204 test ax, ax
205 jz SHORT .DisableMenuitemFromCSBX
206 ; Fall to .EnableMenuitemFromCSBX
207
208;--------------------------------------------------------------------
209; .EnableMenuitemFromCSBX
210; .DisableMenuitemFromCSBX
211; Parameters:
212; CS:BX: Ptr to MENUITEM
213; Returns:
214; Nothing
215; Corrupts registers:
216; Nothing
217;--------------------------------------------------------------------
218ALIGN JUMP_ALIGN
219.EnableMenuitemFromCSBX:
220 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
221 ret
222
223ALIGN JUMP_ALIGN
224.DisableMenuitemFromCSBX:
225 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
226 ret
227
228
229;--------------------------------------------------------------------
230; MENUITEM activation functions (.fnActivate)
231; Parameters:
232; SS:BP: Ptr to MENU
233; Returns:
234; Nothing
235; Corrupts registers:
236; All, except segments
237;--------------------------------------------------------------------
238ALIGN JUMP_ALIGN
239MasterDrive:
240 mov bx, [cs:g_MenuitemIdeControllerMasterDrive+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
241 jmp SHORT DisplayMasterSlaveMenu
242
243ALIGN JUMP_ALIGN
244SlaveDrive:
245 mov bx, [cs:g_MenuitemIdeControllerSlaveDrive+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
246 ; Fall to DisplayMasterSlaveMenu
247
248ALIGN JUMP_ALIGN
249DisplayMasterSlaveMenu:
250 call MasterSlaveMenu_InitializeToDrvparamsOffsetInBX
251 jmp MasterSlaveMenu_EnterMenuOrModifyItemVisibility
Note: See TracBrowser for help on using the repository browser.