source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MasterSlaveMenu.asm @ 376

Last change on this file since 376 was 376, checked in by gregli@…, 12 years ago

WIDE checkin... Added copyright and license information to sorce files, as per the GPL instructions for usage.

File size: 17.1 KB
Line 
1; Project name  :   XTIDE Universal BIOS Configurator v2
2; Description   :   "Master/Slave Drive" menu structs and functions.
3
4;
5; XTIDE Universal BIOS and Associated Tools 
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
12; 
13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16; GNU General Public License for more details.     
17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18;       
19
20; Section containing initialized data
21SECTION .data
22
23ALIGN WORD_ALIGN
24g_MenupageForMasterSlaveMenu:
25istruc MENUPAGE
26    at  MENUPAGE.fnEnter,           dw  MasterSlaveMenu_EnterMenuOrModifyItemVisibility
27    at  MENUPAGE.fnBack,            dw  IdeControllerMenu_EnterMenuOrModifyItemVisibility
28    at  MENUPAGE.wMenuitems,        dw  9
29iend
30
31g_MenuitemMasterSlaveBackToIdeControllerMenu:
32istruc MENUITEM
33    at  MENUITEM.fnActivate,        dw  IdeControllerMenu_EnterMenuOrModifyItemVisibility
34    at  MENUITEM.szName,            dw  g_szItemDrvBackToIde
35    at  MENUITEM.szQuickInfo,       dw  g_szItemDrvBackToIde
36    at  MENUITEM.szHelp,            dw  g_szItemDrvBackToIde
37    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE
38    at  MENUITEM.bType,             db  TYPE_MENUITEM_PAGEBACK
39iend
40
41g_MenuitemMasterSlaveBlockModeTransfers:
42istruc MENUITEM
43    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
44    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
45    at  MENUITEM.szName,            dw  g_szItemDrvBlockMode
46    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvBlockMode
47    at  MENUITEM.szHelp,            dw  g_szHelpDrvBlockMode
48    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE | FLG_MENUITEM_FLAGVALUE
49    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
50    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
51    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvBlockMode
52    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiceBooleanFlag
53    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForFlagBooleans
54    at  MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,              dw  FLG_DRVPARAMS_BLOCKMODE
55iend
56
57g_MenuitemMasterSlaveWriteCache:
58istruc MENUITEM
59    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
60    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromUnshiftedItemInDSSI
61    at  MENUITEM.szName,            dw  g_szItemDrvWriteCache
62    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvWriteCache
63    at  MENUITEM.szHelp,            dw  g_szHelpDrvWriteCache
64    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MASKVALUE
65    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
66    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
67    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvWriteCache
68    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiseWrCache
69    at  MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup,     dw  g_rgwChoiceToValueLookupForWriteCache
70    at  MENUITEM.itemValue + ITEM_VALUE.rgszChoiceToStringLookup,   dw  g_rgszChoiceToStringLookupForWriteCache
71    at  MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,              dw  MASK_DRVPARAMS_WRITECACHE
72iend
73
74g_MenuitemMasterSlaveUserCHS:
75istruc MENUITEM
76    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
77    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
78    at  MENUITEM.szName,            dw  g_szItemDrvUserCHS
79    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvUserCHS
80    at  MENUITEM.szHelp,            dw  g_szHelpDrvUserCHS
81    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
82    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
83    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
84    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvUserCHS
85    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiceBooleanFlag
86    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForFlagBooleans
87    at  MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,              dw  FLG_DRVPARAMS_USERCHS
88    at  MENUITEM.itemValue + ITEM_VALUE.fnValueWriter,              dw  MasterSlaveMenu_WriteCHSFlag       
89iend
90
91g_MenuitemMasterSlaveCylinders:
92istruc MENUITEM
93    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateUnsignedInputForMenuitemInDSSI
94    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
95    at  MENUITEM.szName,            dw  g_szItemDrvCyls
96    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvCyls
97    at  MENUITEM.szHelp,            dw  g_szNfoDrvCyls
98    at  MENUITEM.bFlags,            db  NULL
99    at  MENUITEM.bType,             db  TYPE_MENUITEM_UNSIGNED
100    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
101    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvCyls
102    at  MENUITEM.itemValue + ITEM_VALUE.wMinValue,                  dw  1
103    at  MENUITEM.itemValue + ITEM_VALUE.wMaxValue,                  dw  16383
104%define                 MASTERSLAVE_CYLINDERS_DEFAULT                   65
105iend
106
107g_MenuitemMasterSlaveHeads:
108istruc MENUITEM
109    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateUnsignedInputForMenuitemInDSSI
110    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
111    at  MENUITEM.szName,            dw  g_szItemDrvHeads
112    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvHeads
113    at  MENUITEM.szHelp,            dw  g_szNfoDrvHeads
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_szDlgDrvHeads
118    at  MENUITEM.itemValue + ITEM_VALUE.wMinValue,                  dw  1
119    at  MENUITEM.itemValue + ITEM_VALUE.wMaxValue,                  dw  16
120%define                 MASTERSLAVE_HEADS_DEFAULT                       16     
121iend
122
123g_MenuitemMasterSlaveSectors:
124istruc MENUITEM
125    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateUnsignedInputForMenuitemInDSSI
126    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
127    at  MENUITEM.szName,            dw  g_szItemDrvSect
128    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvSect
129    at  MENUITEM.szHelp,            dw  g_szNfoDrvSect
130    at  MENUITEM.bFlags,            db  FLG_MENUITEM_BYTEVALUE
131    at  MENUITEM.bType,             db  TYPE_MENUITEM_UNSIGNED
132    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
133    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvSect
134    at  MENUITEM.itemValue + ITEM_VALUE.wMinValue,                  dw  1
135    at  MENUITEM.itemValue + ITEM_VALUE.wMaxValue,                  dw  63
136%define                 MASTERSLAVE_SECTORS_DEFAULT                     63
137iend
138
139g_MenuitemMasterSlaveUserLBA:
140istruc MENUITEM
141    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI
142    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI
143    at  MENUITEM.szName,            dw  g_szItemDrvUserLBA
144    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvUserLBA
145    at  MENUITEM.szHelp,            dw  g_szHelpDrvUserLBA
146    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE | FLG_MENUITEM_MODIFY_MENU | FLG_MENUITEM_FLAGVALUE
147    at  MENUITEM.bType,             db  TYPE_MENUITEM_MULTICHOICE
148    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
149    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvUserLBA
150    at  MENUITEM.itemValue + ITEM_VALUE.szMultichoice,              dw  g_szMultichoiceBooleanFlag
151    at  MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup,    dw  g_rgszValueToStringLookupForFlagBooleans
152    at  MENUITEM.itemValue + ITEM_VALUE.wValueBitmask,              dw  FLG_DRVPARAMS_USERLBA
153    at  MENUITEM.itemValue + ITEM_VALUE.fnValueWriter,              dw  MasterSlaveMenu_WriteLBAFlag               
154iend
155
156g_MenuitemMasterSlaveUserLbaValue:
157istruc MENUITEM
158    at  MENUITEM.fnActivate,        dw  Menuitem_ActivateUnsignedInputForMenuitemInDSSI
159    at  MENUITEM.fnFormatValue,     dw  MenuitemPrint_WriteUnsignedValueStringToBufferInESDIfromItemInDSSI
160    at  MENUITEM.szName,            dw  g_szItemDrvLbaSectors
161    at  MENUITEM.szQuickInfo,       dw  g_szNfoDrvLbaSectors
162    at  MENUITEM.szHelp,            dw  g_szNfoDrvLbaSectors
163    at  MENUITEM.bFlags,            db  NULL
164    at  MENUITEM.bType,             db  TYPE_MENUITEM_UNSIGNED
165    at  MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset,        dw  NULL
166    at  MENUITEM.itemValue + ITEM_VALUE.szDialogTitle,              dw  g_szDlgDrvLbaSectors
167    at  MENUITEM.itemValue + ITEM_VALUE.wMinValue,                  dw  1                           ; 512 MiB
168    at  MENUITEM.itemValue + ITEM_VALUE.wMaxValue,                  dw  10000000h / (1024 * 1024)   ; Limit to 28-bit LBA
169    at  MENUITEM.itemValue + ITEM_VALUE.fnValueReader,              dw  ValueReaderForUserLbaValue
170    at  MENUITEM.itemValue + ITEM_VALUE.fnValueWriter,              dw  ValueWriterForUserLbaValue
171%define             MASTERSLAVE_USERLBA_DEFAULT                     1
172iend
173
174
175g_rgwChoiceToValueLookupForWriteCache:
176    dw  DEFAULT_WRITE_CACHE
177    dw  DISABLE_WRITE_CACHE
178    dw  ENABLE_WRITE_CACHE
179
180g_rgszChoiceToStringLookupForWriteCache:
181    dw  g_szValueBootDispModeDefault
182    dw  g_szValueDrvWrCaDis
183    dw  g_szValueDrvWrCaEn
184
185
186; Section containing code
187SECTION .text
188
189;--------------------------------------------------------------------
190; MasterSlaveMenu_InitializeToDrvparamsOffsetInBX
191;   Parameters:
192;       SS:BP:  Menu handle
193;   Returns:
194;       Nothing
195;   Corrupts registers:
196;       AX
197;--------------------------------------------------------------------
198ALIGN JUMP_ALIGN
199MasterSlaveMenu_InitializeToDrvparamsOffsetInBX:
200    lea     ax, [bx+DRVPARAMS.wFlags]
201    mov     [cs:g_MenuitemMasterSlaveBlockModeTransfers+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
202    mov     [cs:g_MenuitemMasterSlaveWriteCache+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
203    mov     [cs:g_MenuitemMasterSlaveUserCHS+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
204    mov     [cs:g_MenuitemMasterSlaveUserLBA+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
205
206    lea     ax, [bx+DRVPARAMS.wCylinders]
207    mov     [cs:g_MenuitemMasterSlaveCylinders+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
208
209    lea     ax, [bx+DRVPARAMS.bHeads]
210    mov     [cs:g_MenuitemMasterSlaveHeads+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
211
212    lea     ax, [bx+DRVPARAMS.bSect]
213    mov     [cs:g_MenuitemMasterSlaveSectors+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
214
215    lea     ax, [bx+DRVPARAMS.dwMaximumLBA]
216    mov     [cs:g_MenuitemMasterSlaveUserLbaValue+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax
217    ret
218
219
220;--------------------------------------------------------------------
221; MasterSlaveMenu_EnterMenuOrModifyItemVisibility
222;   Parameters:
223;       SS:BP:  Menu handle
224;   Returns:
225;       Nothing
226;   Corrupts registers:
227;       All, except BP
228;--------------------------------------------------------------------
229ALIGN JUMP_ALIGN
230MasterSlaveMenu_EnterMenuOrModifyItemVisibility:
231    push    cs
232    pop     ds
233    call    .EnableOrDisableUserCHSandLBA
234    call    .EnableOrDisableCHandS
235    call    .EnableOrDisableUserLbaValue
236    mov     si, g_MenupageForMasterSlaveMenu
237    jmp     Menupage_ChangeToNewMenupageInDSSI
238
239
240;--------------------------------------------------------------------
241; .EnableOrDisableUserCHSandLBA
242;   Parameters:
243;       SS:BP:  Menu handle
244;   Returns:
245;       Nothing
246;   Corrupts registers:
247;       AX, BX
248;--------------------------------------------------------------------
249ALIGN JUMP_ALIGN
250.EnableOrDisableUserCHSandLBA:
251    mov     bx, [g_MenuitemMasterSlaveUserLBA+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
252    call    Buffers_GetRomvarsValueToAXfromOffsetInBX
253    test    ax, FLG_DRVPARAMS_USERLBA
254    jnz     SHORT .DisableCHSandEnableLBA
255    test    ax, FLG_DRVPARAMS_USERCHS
256    jnz     SHORT .EnableCHSandDisableLBA
257
258    ; Enable both
259    mov     bx, g_MenuitemMasterSlaveUserCHS
260    call    .EnableMenuitemFromCSBX
261    mov     bx, g_MenuitemMasterSlaveUserLBA
262    jmp     .EnableMenuitemFromCSBX
263
264ALIGN JUMP_ALIGN
265.EnableCHSandDisableLBA:
266    mov     bx, g_MenuitemMasterSlaveUserCHS
267    call    .EnableMenuitemFromCSBX
268    mov     bx, g_MenuitemMasterSlaveUserLBA
269    jmp     .DisableMenuitemFromCSBX
270
271ALIGN JUMP_ALIGN
272.DisableCHSandEnableLBA:
273    mov     bx, g_MenuitemMasterSlaveUserLBA
274    call    .EnableMenuitemFromCSBX
275    mov     bx, g_MenuitemMasterSlaveUserCHS
276    jmp     .DisableMenuitemFromCSBX
277
278
279;--------------------------------------------------------------------
280; .EnableOrDisableCHandS
281;   Parameters:
282;       SS:BP:  Menu handle
283;   Returns:
284;       Nothing
285;   Corrupts registers:
286;       AX, BX
287;--------------------------------------------------------------------
288ALIGN JUMP_ALIGN
289.EnableOrDisableCHandS:
290    mov     bx, [cs:g_MenuitemMasterSlaveUserCHS+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
291    call    Buffers_GetRomvarsValueToAXfromOffsetInBX
292    test    ax, FLG_DRVPARAMS_USERCHS
293    jz      SHORT .DisableCHandS
294    test    ax, FLG_DRVPARAMS_USERLBA
295    jnz     SHORT .DisableCHandS
296
297    mov     bx, g_MenuitemMasterSlaveCylinders
298    call    .EnableMenuitemFromCSBX
299    mov     bx, g_MenuitemMasterSlaveHeads
300    call    .EnableMenuitemFromCSBX
301    mov     bx, g_MenuitemMasterSlaveSectors
302    jmp     SHORT .EnableMenuitemFromCSBX
303
304ALIGN JUMP_ALIGN
305.DisableCHandS:
306    mov     bx, g_MenuitemMasterSlaveCylinders
307    call    .DisableMenuitemFromCSBX
308    mov     bx, g_MenuitemMasterSlaveHeads
309    call    .DisableMenuitemFromCSBX
310    mov     bx, g_MenuitemMasterSlaveSectors
311    jmp     SHORT .DisableMenuitemFromCSBX
312
313
314;--------------------------------------------------------------------
315; .EnableOrDisableUserLbaValue
316;   Parameters:
317;       SS:BP:  Menu handle
318;   Returns:
319;       Nothing
320;   Corrupts registers:
321;       AX, BX
322;--------------------------------------------------------------------
323ALIGN JUMP_ALIGN
324.EnableOrDisableUserLbaValue:
325    mov     bx, [cs:g_MenuitemMasterSlaveUserLBA+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset]
326    call    Buffers_GetRomvarsValueToAXfromOffsetInBX
327    mov     bx, g_MenuitemMasterSlaveUserLbaValue
328    test    ax, FLG_DRVPARAMS_USERCHS
329    jnz     SHORT .DisableMenuitemFromCSBX
330    test    ax, FLG_DRVPARAMS_USERLBA
331    jz      SHORT .DisableMenuitemFromCSBX
332    ; Fall to .EnableMenuitemFromCSBX
333
334
335;--------------------------------------------------------------------
336; .EnableMenuitemFromCSBX
337; .DisableMenuitemFromCSBX
338;   Parameters:
339;       CS:BX:  Ptr to MENUITEM
340;   Returns:
341;       Nothing
342;   Corrupts registers:
343;       Nothing
344;--------------------------------------------------------------------
345ALIGN JUMP_ALIGN
346.EnableMenuitemFromCSBX:
347    or      BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
348    ret
349
350ALIGN JUMP_ALIGN
351.DisableMenuitemFromCSBX:
352    and     BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
353    ret
354
355
356;--------------------------------------------------------------------
357; MENUITEM value reader functions
358;   Parameters:
359;       AX:     Value from MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset
360;       DS:SI:  Ptr to MENUITEM
361;       ES:DI:  Ptr to value variable
362;   Returns:
363;       AX:     Value with possible modifications
364;   Corrupts registers:
365;       Nothing
366;--------------------------------------------------------------------
367ALIGN JUMP_ALIGN
368ValueReaderForUserLbaValue:
369    push    dx
370
371    mov     ax, [es:di]
372    mov     dx, [es:di+2]       ; DX:AX now holds user defined LBA28 limit
373    add     ax, BYTE 1          ; Increment by one
374    adc     dx, BYTE 0
375
376    xchg    ax, dx              ; SHR 16
377    eSHIFT_IM ax, 4, shr        ; SHR 4 => AX = DX:AX / (1024*1024)
378
379    pop     dx
380    ret
381
382
383;--------------------------------------------------------------------
384; MENUITEM value writer functions
385;   Parameters:
386;       AX:     Value to be written to MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset
387;       DS:SI:  Ptr to MENUITEM
388;       ES:DI:  Ptr to value variable
389;   Returns:
390;       AX:     Value to be stored
391;   Corrupts registers:
392;       Nothing
393;--------------------------------------------------------------------
394ALIGN JUMP_ALIGN
395ValueWriterForUserLbaValue:
396    push    dx
397
398    xor     dx, dx
399    eSHIFT_IM ax, 4, shl
400    xchg    dx, ax          ; DX:AX now holds AX * 1024 * 1024
401
402    sub     ax, BYTE 1      ; Decrement DX:AX by one
403    sbb     dx, BYTE 0      ; (necessary since maximum LBA28 sector count is 0FFF FFFFh)
404
405    mov     [es:di+2], dx   ; Store DX by ourselves
406    pop     dx
407    ret                     ; AX will be stored by our menu system
408
409;
410; No change to CHS flag, but we use this opportunity to change defaults stored in the CHS values if we are
411; changing in/out of user CHS settings (since we use these bytes in different ways with the LBA setting).
412;
413ALIGN JUMP_ALIGN       
414MasterSlaveMenu_WriteCHSFlag:
415        test    word [es:di], FLG_DRVPARAMS_USERCHS
416        jnz     .alreadySet
417
418        push    ax
419        push    di
420        push    si
421
422        mov     ax, MASTERSLAVE_CYLINDERS_DEFAULT
423        mov     si, g_MenuitemMasterSlaveCylinders
424        call    Menuitem_StoreValueFromAXtoMenuitemInDSSI
425       
426        mov     ax, MASTERSLAVE_HEADS_DEFAULT       
427        mov     si, g_MenuitemMasterSlaveHeads
428        call    Menuitem_StoreValueFromAXtoMenuitemInDSSI       
429
430        mov     ax, MASTERSLAVE_SECTORS_DEFAULT                     
431        mov     si, g_MenuitemMasterSlaveSectors
432        call    Menuitem_StoreValueFromAXtoMenuitemInDSSI       
433       
434        pop     si                     
435        pop     di
436        pop     ax
437
438.alreadySet:
439        ret
440
441;
442; No change to LBA flag, but we use this opportunity to change defaults stored in the LBA value if we are
443; changing in/out of user LBA settings (since we use these bytes in different ways with the CHS setting).
444;
445ALIGN JUMP_ALIGN                       
446MasterSlaveMenu_WriteLBAFlag:
447        test    word [es:di], FLG_DRVPARAMS_USERLBA
448        jnz     .alreadySet
449
450        push    ax
451        push    di
452        push    si
453
454        mov     ax, MASTERSLAVE_USERLBA_DEFAULT
455        mov     si, g_MenuitemMasterSlaveUserLbaValue
456        call    Menuitem_StoreValueFromAXtoMenuitemInDSSI               
457
458        pop     si
459        pop     di
460        pop     ax
461                       
462.alreadySet:
463        ret     
Note: See TracBrowser for help on using the repository browser.