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

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

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

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