source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.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: 9.3 KB
Line 
1; Project name  :   XTIDE Universal BIOS Configurator v2
2; Description   :   Main 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_MenupageForMainMenu:
25istruc MENUPAGE
26    at  MENUPAGE.fnEnter,           dw  MainMenu_EnterMenuOrModifyItemVisibility
27    at  MENUPAGE.fnBack,            dw  ExitToDosFromBackButton
28    at  MENUPAGE.wMenuitems,        dw  9
29iend
30
31g_MenuitemMainMenuLicense:     
32istruc MENUITEM
33    at  MENUITEM.fnActivate,        dw  Menuitem_DisplayHelpMessageFromDSSI
34    at  MENUITEM.szName,            dw  g_szItemMainLicense
35    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainLicense
36    at  MENUITEM.szHelp,            dw  g_szHelpMainLicense
37    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE       
38    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
39iend
40       
41g_MenuitemMainMenuLoadBiosFromFile:
42istruc MENUITEM
43    at  MENUITEM.fnActivate,        dw  LoadBiosFromFile
44    at  MENUITEM.szName,            dw  g_szItemMainLoadFile
45    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainLoadFile
46    at  MENUITEM.szHelp,            dw  g_szNfoMainLoadFile
47    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE
48    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
49iend
50
51g_MenuitemMainMenuLoadXtideUniversalBiosFromRom:
52istruc MENUITEM
53    at  MENUITEM.fnActivate,        dw  LoadXtideUniversalBiosFromRom
54    at  MENUITEM.szName,            dw  g_szItemMainLoadROM
55    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainLoadROM
56    at  MENUITEM.szHelp,            dw  g_szNfoMainLoadROM
57    at  MENUITEM.bFlags,            db  NULL
58    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
59iend
60
61g_MenuitemMainMenuLoadOldSettingsFromEeprom:
62istruc MENUITEM
63    at  MENUITEM.fnActivate,        dw  LoadOldSettingsFromEeprom
64    at  MENUITEM.szName,            dw  g_szItemMainLoadStngs
65    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainLoadStngs
66    at  MENUITEM.szHelp,            dw  g_szNfoMainLoadStngs
67    at  MENUITEM.bFlags,            db  NULL
68    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
69iend
70
71g_MenuitemMainMenuConfigureXtideUniversalBios:
72istruc MENUITEM
73    at  MENUITEM.fnActivate,        dw  ConfigurationMenu_EnterMenuOrModifyItemVisibility
74    at  MENUITEM.szName,            dw  g_szItemMainConfigure
75    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainConfigure
76    at  MENUITEM.szHelp,            dw  g_szNfoMainConfigure
77    at  MENUITEM.bFlags,            db  NULL
78    at  MENUITEM.bType,             db  TYPE_MENUITEM_PAGENEXT
79iend
80
81g_MenuitemMainMenuFlashEeprom:
82istruc MENUITEM
83    at  MENUITEM.fnActivate,        dw  FlashMenu_EnterMenuOrModifyItemVisibility
84    at  MENUITEM.szName,            dw  g_szItemMainFlash
85    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainFlash
86    at  MENUITEM.szHelp,            dw  g_szNfoMainFlash
87    at  MENUITEM.bFlags,            db  NULL
88    at  MENUITEM.bType,             db  TYPE_MENUITEM_PAGENEXT
89iend
90
91g_MenuitemMainMenuSaveFile:     
92istruc MENUITEM
93    at  MENUITEM.fnActivate,        dw  BiosFile_SaveUnsavedChanges
94    at  MENUITEM.szName,            dw  g_szItemMainSave
95    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainSave
96    at  MENUITEM.szHelp,            dw  g_szNfoMainSave
97    at  MENUITEM.bFlags,            db  NULL
98    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
99iend       
100
101g_MenuitemMainMenuExitToDos:
102istruc MENUITEM
103    at  MENUITEM.fnActivate,        dw  ExitToDosSelectedFromMenu
104    at  MENUITEM.szName,            dw  g_szItemMainExitToDOS
105    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainExitToDOS
106    at  MENUITEM.szHelp,            dw  g_szNfoMainExitToDOS
107    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE
108    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
109iend
110
111g_MenuitemMainMenuHomePage:     
112istruc MENUITEM
113    at  MENUITEM.fnActivate,        dw  Menuitem_DisplayHelpMessageFromDSSI
114    at  MENUITEM.szName,            dw  g_szItemMainHomePage
115    at  MENUITEM.szQuickInfo,       dw  g_szNfoMainHomePage
116    at  MENUITEM.szHelp,            dw  g_szNfoMainHomePage
117    at  MENUITEM.bFlags,            db  FLG_MENUITEM_VISIBLE       
118    at  MENUITEM.bType,             db  TYPE_MENUITEM_ACTION
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
135MainMenu_EnterMenuOrModifyItemVisibility:
136    push    cs
137    pop     ds
138    call    .EnableOrDisableXtideRomItems
139    call    .EnableOrDisableConfigureXtideUniversalBios
140    call    .EnableOrDisableFlashEeprom
141    call    .EnableOrDisableSave           
142    mov     si, g_MenupageForMainMenu
143    jmp     Menupage_ChangeToNewMenupageInDSSI
144
145;--------------------------------------------------------------------
146; .EnableOrDisableXtideRomItems
147;   Parameters:
148;       DS:     CFGVARS segment
149;   Returns:
150;       Nothing
151;   Corrupts registers:
152;       AX, BX, CX, SI, DI, ES
153;--------------------------------------------------------------------
154ALIGN JUMP_ALIGN
155.EnableOrDisableXtideRomItems:
156    call    EEPROM_FindXtideUniversalBiosROMtoESDI
157    jnc     SHORT .DisableAllRomItems
158    or      BYTE [g_MenuitemMainMenuLoadXtideUniversalBiosFromRom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
159    call    Buffers_IsXtideUniversalBiosLoaded
160    jne     SHORT .DisableLoadSettingFromRom
161    or      BYTE [g_MenuitemMainMenuLoadOldSettingsFromEeprom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
162    ret
163
164ALIGN JUMP_ALIGN
165.DisableAllRomItems:
166    and     BYTE [g_MenuitemMainMenuLoadXtideUniversalBiosFromRom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
167.DisableLoadSettingFromRom:
168    and     BYTE [g_MenuitemMainMenuLoadOldSettingsFromEeprom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
169    ret
170
171;--------------------------------------------------------------------
172; .EnableOrDisableConfigureXtideUniversalBios
173;   Parameters:
174;       DS:     CFGVARS segment
175;   Returns:
176;       Nothing
177;   Corrupts registers:
178;       CX, SI, DI, ES
179;--------------------------------------------------------------------
180ALIGN JUMP_ALIGN
181.EnableOrDisableConfigureXtideUniversalBios:
182    call    Buffers_IsXtideUniversalBiosLoaded
183    jne     SHORT .DisableConfigureXtideUniversalBios
184    or      BYTE [g_MenuitemMainMenuConfigureXtideUniversalBios+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
185    ret
186
187ALIGN JUMP_ALIGN
188.DisableConfigureXtideUniversalBios:
189    and     BYTE [g_MenuitemMainMenuConfigureXtideUniversalBios+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
190    ret
191
192;--------------------------------------------------------------------
193; .EnableOrDisableFlashEeprom
194;   Parameters:
195;       DS:     CFGVARS segment
196;   Returns:
197;       Nothing
198;   Corrupts registers:
199;       Nothing
200;--------------------------------------------------------------------
201ALIGN JUMP_ALIGN
202.EnableOrDisableFlashEeprom:
203    test    WORD [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED
204    jz      SHORT .DisableFlashEeprom
205    or      BYTE [g_MenuitemMainMenuFlashEeprom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
206    ret
207
208ALIGN JUMP_ALIGN
209.DisableFlashEeprom:
210    and     BYTE [g_MenuitemMainMenuFlashEeprom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
211    ret
212
213;--------------------------------------------------------------------
214; .EnableOrDisableSave
215;   Parameters:
216;       DS:     CFGVARS segment
217;   Returns:
218;       Nothing
219;   Corrupts registers:
220;       Nothing
221;--------------------------------------------------------------------
222ALIGN JUMP_ALIGN       
223.EnableOrDisableSave:   
224    test    WORD [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED
225    jz      SHORT .DisableSave
226    or      BYTE [g_MenuitemMainMenuSaveFile+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
227    ret
228
229ALIGN JUMP_ALIGN               
230.DisableSave:
231    and     BYTE [g_MenuitemMainMenuSaveFile+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
232    ret
233               
234;--------------------------------------------------------------------
235; MENUITEM activation functions (.fnActivate)
236;   Parameters:
237;       SS:BP:  Ptr to MENU
238;   Returns:
239;       Nothing
240;   Corrupts registers:
241;       All, except segments
242;--------------------------------------------------------------------
243ALIGN JUMP_ALIGN
244ExitToDosSelectedFromMenu:
245    CALL_MENU_LIBRARY CloseMenuIfExitEventAllows
246ExitToDosFromBackButton:
247    ret
248
249
250ALIGN JUMP_ALIGN
251LoadBiosFromFile:
252    call    Buffers_SaveChangesIfFileLoaded
253    mov     cx, FILE_DIALOG_IO_size
254    call    Memory_ReserveCXbytesFromStackToDSSI
255    call    Dialogs_DisplayFileDialogWithDialogIoInDSSI
256    cmp     BYTE [si+FILE_DIALOG_IO.bUserCancellation], TRUE
257    je      SHORT .CancelFileLoading
258
259    add     si, BYTE FILE_DIALOG_IO.szFile
260    call    BiosFile_LoadFileFromDSSItoRamBuffer
261    call    MainMenu_EnterMenuOrModifyItemVisibility
262.CancelFileLoading:
263    add     sp, BYTE FILE_DIALOG_IO_size
264    ret
265
266
267ALIGN JUMP_ALIGN
268LoadXtideUniversalBiosFromRom:
269    call    Buffers_SaveChangesIfFileLoaded
270    call    EEPROM_LoadXtideUniversalBiosFromRomToRamBufferAndReturnSizeInDXCX
271    mov     ax, FLG_CFGVARS_ROMLOADED
272    call    Buffers_NewBiosWithSizeInDXCXandSourceInAXhasBeenLoadedForConfiguration
273    mov     dx, g_szDlgMainLoadROM
274    call    Dialogs_DisplayNotificationFromCSDX
275    jmp     MainMenu_EnterMenuOrModifyItemVisibility
276
277
278ALIGN JUMP_ALIGN
279LoadOldSettingsFromEeprom:
280    call    Buffers_SaveChangesIfFileLoaded
281    call    EEPROM_LoadOldSettingsFromRomToRamBuffer
282    and     WORD [g_cfgVars+CFGVARS.wFlags], ~FLG_CFGVARS_UNSAVED
283    mov     dx, g_szDlgMainLoadStngs
284    jmp     Dialogs_DisplayNotificationFromCSDX
285
286
287   
Note: See TracBrowser for help on using the repository browser.