source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MainMenu.asm@ 285

Last change on this file since 285 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: 6.9 KB
Line 
1; Project name : XTIDE Universal BIOS Configurator v2
2; Description : Main menu structs and functions.
3
4; Section containing initialized data
5SECTION .data
6
7ALIGN WORD_ALIGN
8g_MenupageForMainMenu:
9istruc MENUPAGE
10 at MENUPAGE.fnEnter, dw MainMenu_EnterMenuOrModifyItemVisibility
11 at MENUPAGE.fnBack, dw ExitToDosFromBackButton
12 at MENUPAGE.wMenuitems, dw 6
13iend
14
15g_MenuitemMainMenuExitToDos:
16istruc MENUITEM
17 at MENUITEM.fnActivate, dw ExitToDosSelectedFromMenu
18 at MENUITEM.szName, dw g_szItemMainExitToDOS
19 at MENUITEM.szQuickInfo, dw g_szNfoMainExitToDOS
20 at MENUITEM.szHelp, dw g_szNfoMainExitToDOS
21 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
22 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
23iend
24
25g_MenuitemMainMenuLoadBiosFromFile:
26istruc MENUITEM
27 at MENUITEM.fnActivate, dw LoadBiosFromFile
28 at MENUITEM.szName, dw g_szItemMainLoadFile
29 at MENUITEM.szQuickInfo, dw g_szNfoMainLoadFile
30 at MENUITEM.szHelp, dw g_szNfoMainLoadFile
31 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE
32 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
33iend
34
35g_MenuitemMainMenuLoadXtideUniversalBiosFromRom:
36istruc MENUITEM
37 at MENUITEM.fnActivate, dw LoadXtideUniversalBiosFromRom
38 at MENUITEM.szName, dw g_szItemMainLoadROM
39 at MENUITEM.szQuickInfo, dw g_szNfoMainLoadROM
40 at MENUITEM.szHelp, dw g_szNfoMainLoadROM
41 at MENUITEM.bFlags, db NULL
42 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
43iend
44
45g_MenuitemMainMenuLoadOldSettingsFromEeprom:
46istruc MENUITEM
47 at MENUITEM.fnActivate, dw LoadOldSettingsFromEeprom
48 at MENUITEM.szName, dw g_szItemMainLoadStngs
49 at MENUITEM.szQuickInfo, dw g_szNfoMainLoadStngs
50 at MENUITEM.szHelp, dw g_szNfoMainLoadStngs
51 at MENUITEM.bFlags, db NULL
52 at MENUITEM.bType, db TYPE_MENUITEM_ACTION
53iend
54
55g_MenuitemMainMenuConfigureXtideUniversalBios:
56istruc MENUITEM
57 at MENUITEM.fnActivate, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility
58 at MENUITEM.szName, dw g_szItemMainConfigure
59 at MENUITEM.szQuickInfo, dw g_szNfoMainConfigure
60 at MENUITEM.szHelp, dw g_szNfoMainConfigure
61 at MENUITEM.bFlags, db NULL
62 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
63iend
64
65g_MenuitemMainMenuFlashEeprom:
66istruc MENUITEM
67 at MENUITEM.fnActivate, dw FlashMenu_EnterMenuOrModifyItemVisibility
68 at MENUITEM.szName, dw g_szItemMainFlash
69 at MENUITEM.szQuickInfo, dw g_szNfoMainFlash
70 at MENUITEM.szHelp, dw g_szNfoMainFlash
71 at MENUITEM.bFlags, db NULL
72 at MENUITEM.bType, db TYPE_MENUITEM_PAGENEXT
73iend
74
75
76; Section containing code
77SECTION .text
78
79;--------------------------------------------------------------------
80; MainMenu_EnterMenuOrModifyItemVisibility
81; Parameters:
82; SS:BP: Menu handle
83; Returns:
84; Nothing
85; Corrupts registers:
86; All, except BP
87;--------------------------------------------------------------------
88ALIGN JUMP_ALIGN
89MainMenu_EnterMenuOrModifyItemVisibility:
90 push cs
91 pop ds
92 call .EnableOrDisableXtideRomItems
93 call .EnableOrDisableConfigureXtideUniversalBios
94 call .EnableOrDisableFlashEeprom
95 mov si, g_MenupageForMainMenu
96 jmp Menupage_ChangeToNewMenupageInDSSI
97
98;--------------------------------------------------------------------
99; .EnableOrDisableXtideRomItems
100; Parameters:
101; DS: CFGVARS segment
102; Returns:
103; Nothing
104; Corrupts registers:
105; AX, BX, CX, SI, DI, ES
106;--------------------------------------------------------------------
107ALIGN JUMP_ALIGN
108.EnableOrDisableXtideRomItems:
109 call EEPROM_FindXtideUniversalBiosROMtoESDI
110 jnc SHORT .DisableAllRomItems
111 or BYTE [g_MenuitemMainMenuLoadXtideUniversalBiosFromRom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
112 call Buffers_IsXtideUniversalBiosLoaded
113 jne SHORT .DisableLoadSettingFromRom
114 or BYTE [g_MenuitemMainMenuLoadOldSettingsFromEeprom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
115 ret
116
117ALIGN JUMP_ALIGN
118.DisableAllRomItems:
119 and BYTE [g_MenuitemMainMenuLoadXtideUniversalBiosFromRom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
120.DisableLoadSettingFromRom:
121 and BYTE [g_MenuitemMainMenuLoadOldSettingsFromEeprom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
122 ret
123
124;--------------------------------------------------------------------
125; .EnableOrDisableConfigureXtideUniversalBios
126; Parameters:
127; DS: CFGVARS segment
128; Returns:
129; Nothing
130; Corrupts registers:
131; CX, SI, DI, ES
132;--------------------------------------------------------------------
133ALIGN JUMP_ALIGN
134.EnableOrDisableConfigureXtideUniversalBios:
135 call Buffers_IsXtideUniversalBiosLoaded
136 jne SHORT .DisableConfigureXtideUniversalBios
137 or BYTE [g_MenuitemMainMenuConfigureXtideUniversalBios+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
138 ret
139
140ALIGN JUMP_ALIGN
141.DisableConfigureXtideUniversalBios:
142 and BYTE [g_MenuitemMainMenuConfigureXtideUniversalBios+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
143 ret
144
145;--------------------------------------------------------------------
146; .EnableOrDisableFlashEeprom
147; Parameters:
148; DS: CFGVARS segment
149; Returns:
150; Nothing
151; Corrupts registers:
152; Nothing
153;--------------------------------------------------------------------
154ALIGN JUMP_ALIGN
155.EnableOrDisableFlashEeprom:
156 test WORD [g_cfgVars+CFGVARS.wFlags], FLG_CFGVARS_FILELOADED | FLG_CFGVARS_ROMLOADED
157 jz SHORT .DisableFlashEeprom
158 or BYTE [g_MenuitemMainMenuFlashEeprom+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE
159 ret
160
161ALIGN JUMP_ALIGN
162.DisableFlashEeprom:
163 and BYTE [g_MenuitemMainMenuFlashEeprom+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE
164 ret
165
166
167
168;--------------------------------------------------------------------
169; MENUITEM activation functions (.fnActivate)
170; Parameters:
171; SS:BP: Ptr to MENU
172; Returns:
173; Nothing
174; Corrupts registers:
175; All, except segments
176;--------------------------------------------------------------------
177ALIGN JUMP_ALIGN
178ExitToDosSelectedFromMenu:
179 CALL_MENU_LIBRARY CloseMenuIfExitEventAllows
180ExitToDosFromBackButton:
181 ret
182
183
184ALIGN JUMP_ALIGN
185LoadBiosFromFile:
186 call Buffers_SaveChangesIfFileLoaded
187 mov cx, FILE_DIALOG_IO_size
188 call Memory_ReserveCXbytesFromStackToDSSI
189 call Dialogs_DisplayFileDialogWithDialogIoInDSSI
190 cmp BYTE [si+FILE_DIALOG_IO.bUserCancellation], TRUE
191 je SHORT .CancelFileLoading
192
193 add si, BYTE FILE_DIALOG_IO.szFile
194 call BiosFile_LoadFileFromDSSItoRamBuffer
195 call MainMenu_EnterMenuOrModifyItemVisibility
196.CancelFileLoading:
197 add sp, BYTE FILE_DIALOG_IO_size
198 ret
199
200
201ALIGN JUMP_ALIGN
202LoadXtideUniversalBiosFromRom:
203 call Buffers_SaveChangesIfFileLoaded
204 call EEPROM_LoadXtideUniversalBiosFromRomToRamBufferAndReturnSizeInDXCX
205 mov ax, FLG_CFGVARS_ROMLOADED
206 call Buffers_NewBiosWithSizeInDXCXandSourceInAXhasBeenLoadedForConfiguration
207 mov dx, g_szDlgMainLoadROM
208 call Dialogs_DisplayNotificationFromCSDX
209 jmp MainMenu_EnterMenuOrModifyItemVisibility
210
211
212ALIGN JUMP_ALIGN
213LoadOldSettingsFromEeprom:
214 call Buffers_SaveChangesIfFileLoaded
215 call EEPROM_LoadOldSettingsFromRomToRamBuffer
216 and WORD [g_cfgVars+CFGVARS.wFlags], ~FLG_CFGVARS_UNSAVED
217 mov dx, g_szDlgMainLoadStngs
218 jmp Dialogs_DisplayNotificationFromCSDX
Note: See TracBrowser for help on using the repository browser.