source: xtideuniversalbios/trunk/Assembly_Library/Src/Menu/MenuInit.asm@ 372

Last change on this file since 372 was 369, checked in by gregli@…, 13 years ago

Removed align directives for initalization code and added define for align in boot-time calls to the assembly library (defaulting to 1), resulting in a significant savings for the AT and 386 builds. Fixed a bug with switch command line handling in the serial server. Put in CR characters in licesnse.txt, so that it properly displays on Windows. In the configurator, added default values for user supplied CHS and LBA values, defaulting to values within range when those features are enabled. Updated the copyright message in the configurator as the literal word Copyright is important.

File size: 5.5 KB
Line 
1; Project name : Assembly Library
2; Description : Functions for initializing menu system.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
8; MenuInit_DisplayMenuWithHandlerInBXandUserDataInDXAX
9; Parameters
10; DX:AX: User specified data
11; BX: Menu event handler
12; Returns:
13; AX: Index of selected item or NO_ITEM_SELECTED
14; Corrupts registers:
15; All except segments
16;--------------------------------------------------------------------
17ALIGN MENU_JUMP_ALIGN
18MenuInit_DisplayMenuWithHandlerInBXandUserDataInDXAX:
19 push es
20 push ds
21 LOAD_BDA_SEGMENT_TO ds, cx, !
22 push WORD [BDA.wVidCurShape]
23 mov cl, MENU_size
24 eENTER_STRUCT cx
25
26 call Memory_ZeroSSBPwithSizeInCX
27 call MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX
28 mov dx, [bp+MENUINIT.wHighlightedItem]
29
30 eLEAVE_STRUCT MENU_size
31 pop ax
32 CALL_DISPLAY_LIBRARY SetCursorShapeFromAX
33 CALL_DISPLAY_LIBRARY SynchronizeDisplayContextToHardware
34 xchg ax, dx ; Return highlighted item in AX
35 pop ds
36 pop es
37 ret
38
39
40;--------------------------------------------------------------------
41; MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX
42; Parameters
43; DX:AX: User specified data
44; BX: Menu event handler
45; SS:BP: Ptr to MENU
46; Returns:
47; Nothing
48; Corrupts registers:
49; All, except SS:BP
50;--------------------------------------------------------------------
51ALIGN MENU_JUMP_ALIGN
52MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX:
53 mov [bp+MENU.fnEventHandler], bx
54 mov [bp+MENU.dwUserData], ax
55 mov [bp+MENU.dwUserData+2], dx
56
57 mov ax, CURSOR_HIDDEN
58 CALL_DISPLAY_LIBRARY SetCursorShapeFromAX
59 call MenuEvent_InitializeMenuinit ; User initialization
60%ifndef USE_186
61 call MenuInit_RefreshMenuWindow
62 jmp MenuLoop_Enter
63%else
64 push MenuLoop_Enter
65 ; Fall to MenuInit_RefreshMenuWindow
66%endif
67
68
69;--------------------------------------------------------------------
70; MenuInit_RefreshMenuWindow
71; Parameters
72; SS:BP: Ptr to MENU
73; Returns:
74; Nothing
75; Corrupts registers:
76; AX, BX, CX, DX, SI, DI
77;--------------------------------------------------------------------
78ALIGN MENU_JUMP_ALIGN
79MenuInit_RefreshMenuWindow:
80 call MenuBorders_RefreshAll ; Draw borders
81 call MenuText_RefreshTitle ; Draw title strings
82 call MenuText_RefreshAllItems ; Draw item strings
83 jmp MenuText_RefreshInformation ; Draw information strings
84
85
86;--------------------------------------------------------------------
87; MenuInit_CloseMenuIfExitEventAllows
88; Parameters
89; SS:BP: Ptr to MENU
90; Returns:
91; Nothing
92; Corrupts registers:
93; AX, BX, DX
94;--------------------------------------------------------------------
95%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
96ALIGN MENU_JUMP_ALIGN
97MenuInit_CloseMenuIfExitEventAllows:
98 call MenuEvent_ExitMenu
99 jc SHORT MenuInit_CloseMenuWindow
100 ret
101%endif
102
103
104;--------------------------------------------------------------------
105; MenuInit_CloseMenuWindow
106; Parameters
107; SS:BP: Ptr to MENU
108; Returns:
109; Nothing
110; Corrupts registers:
111; Nothing
112;--------------------------------------------------------------------
113ALIGN MENU_JUMP_ALIGN
114MenuInit_CloseMenuWindow:
115 or BYTE [bp+MENU.bFlags], FLG_MENU_EXIT
116 ret
117
118
119;--------------------------------------------------------------------
120; MenuInit_HighlightItemFromAX
121; Parameters
122; AX: Item to highlight
123; SS:BP: Ptr to MENU
124; Returns:
125; Nothing
126; Corrupts registers:
127; AX, BX, CX, DX, SI, DI
128;--------------------------------------------------------------------
129ALIGN MENU_JUMP_ALIGN
130MenuInit_HighlightItemFromAX:
131 sub ax, [bp+MENUINIT.wHighlightedItem]
132 jmp MenuScrollbars_MoveHighlightedItemByAX
133
134;--------------------------------------------------------------------
135; MenuInit_GetHighlightedItemToAX
136; Parameters
137; SS:BP: Ptr to MENU
138; Returns:
139; AX: Index of highlighted item or NO_ITEM_HIGHLIGHTED
140; Corrupts registers:
141; Nothing
142;--------------------------------------------------------------------
143%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
144ALIGN MENU_JUMP_ALIGN
145MenuInit_GetHighlightedItemToAX:
146 mov ax, [bp+MENUINIT.wHighlightedItem]
147 ret
148%endif
149
150
151;--------------------------------------------------------------------
152; MenuInit_SetTitleHeightFromAL
153; MenuInit_SetInformationHeightFromAL
154; MenuInit_SetTotalItemsFromAX
155; Parameters
156; AX/AL: Parameter
157; SS:BP: Ptr to MENU
158; Returns:
159; Nothing
160; Corrupts registers:
161; Nothing
162;--------------------------------------------------------------------
163%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
164ALIGN MENU_JUMP_ALIGN
165MenuInit_SetTitleHeightFromAL:
166 mov [bp+MENUINIT.bTitleLines], al
167 ret
168
169ALIGN MENU_JUMP_ALIGN
170MenuInit_SetInformationHeightFromAL:
171 mov [bp+MENUINIT.bInfoLines], al
172 ret
173
174ALIGN MENU_JUMP_ALIGN
175MenuInit_SetTotalItemsFromAX:
176 mov [bp+MENUINIT.wItems], ax
177 ret
178%endif
179
180
181;--------------------------------------------------------------------
182; MenuInit_SetUserDataFromDSSI
183; MenuInit_GetUserDataToDSSI
184; Parameters
185; DS:SI: User data (MenuInit_SetUserDataFromDSSI)
186; SS:BP: Ptr to MENU
187; Returns:
188; DS:SI: User data (MenuInit_GetUserDataToDSSI)
189; Corrupts registers:
190; Nothing
191;--------------------------------------------------------------------
192%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
193ALIGN MENU_JUMP_ALIGN
194MenuInit_SetUserDataFromDSSI:
195 mov [bp+MENU.dwUserData], si
196 mov [bp+MENU.dwUserData+2], ds
197 ret
198
199ALIGN MENU_JUMP_ALIGN
200MenuInit_GetUserDataToDSSI:
201 lds si, [bp+MENU.dwUserData]
202 ret
203%endif
Note: See TracBrowser for help on using the repository browser.