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

Last change on this file since 371 was 369, checked in by gregli@…, 12 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
RevLine 
[41]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;--------------------------------------------------------------------
[369]17ALIGN MENU_JUMP_ALIGN
[41]18MenuInit_DisplayMenuWithHandlerInBXandUserDataInDXAX:
19 push es
20 push ds
[116]21 LOAD_BDA_SEGMENT_TO ds, cx, !
[41]22 push WORD [BDA.wVidCurShape]
[104]23 mov cl, MENU_size
24 eENTER_STRUCT cx
[41]25
[46]26 call Memory_ZeroSSBPwithSizeInCX
[41]27 call MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX
[129]28 mov dx, [bp+MENUINIT.wHighlightedItem]
[41]29
30 eLEAVE_STRUCT MENU_size
31 pop ax
32 CALL_DISPLAY_LIBRARY SetCursorShapeFromAX
[289]33 CALL_DISPLAY_LIBRARY SynchronizeDisplayContextToHardware
[129]34 xchg ax, dx ; Return highlighted item in AX
[41]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;--------------------------------------------------------------------
[369]51ALIGN MENU_JUMP_ALIGN
[41]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
[104]59 call MenuEvent_InitializeMenuinit ; User initialization
[133]60%ifndef USE_186
[41]61 call MenuInit_RefreshMenuWindow
62 jmp MenuLoop_Enter
[133]63%else
64 push MenuLoop_Enter
65 ; Fall to MenuInit_RefreshMenuWindow
66%endif
[41]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;--------------------------------------------------------------------
[369]78ALIGN MENU_JUMP_ALIGN
[41]79MenuInit_RefreshMenuWindow:
80 call MenuBorders_RefreshAll ; Draw borders
81 call MenuText_RefreshTitle ; Draw title strings
82 call MenuText_RefreshAllItems ; Draw item strings
[116]83 jmp MenuText_RefreshInformation ; Draw information strings
[41]84
85
86;--------------------------------------------------------------------
[205]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
[369]96ALIGN MENU_JUMP_ALIGN
[205]97MenuInit_CloseMenuIfExitEventAllows:
98 call MenuEvent_ExitMenu
99 jc SHORT MenuInit_CloseMenuWindow
100 ret
101%endif
102
103
104;--------------------------------------------------------------------
[41]105; MenuInit_CloseMenuWindow
106; Parameters
107; SS:BP: Ptr to MENU
108; Returns:
109; Nothing
110; Corrupts registers:
111; Nothing
112;--------------------------------------------------------------------
[369]113ALIGN MENU_JUMP_ALIGN
[41]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;--------------------------------------------------------------------
[369]129ALIGN MENU_JUMP_ALIGN
[41]130MenuInit_HighlightItemFromAX:
[52]131 sub ax, [bp+MENUINIT.wHighlightedItem]
[41]132 jmp MenuScrollbars_MoveHighlightedItemByAX
133
[48]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;--------------------------------------------------------------------
[133]143%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[369]144ALIGN MENU_JUMP_ALIGN
[48]145MenuInit_GetHighlightedItemToAX:
[52]146 mov ax, [bp+MENUINIT.wHighlightedItem]
[48]147 ret
[133]148%endif
[41]149
[48]150
[41]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;--------------------------------------------------------------------
[133]163%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[369]164ALIGN MENU_JUMP_ALIGN
[41]165MenuInit_SetTitleHeightFromAL:
166 mov [bp+MENUINIT.bTitleLines], al
167 ret
168
[369]169ALIGN MENU_JUMP_ALIGN
[41]170MenuInit_SetInformationHeightFromAL:
171 mov [bp+MENUINIT.bInfoLines], al
172 ret
173
[369]174ALIGN MENU_JUMP_ALIGN
[41]175MenuInit_SetTotalItemsFromAX:
176 mov [bp+MENUINIT.wItems], ax
177 ret
[133]178%endif
[41]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;--------------------------------------------------------------------
[133]192%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[369]193ALIGN MENU_JUMP_ALIGN
[41]194MenuInit_SetUserDataFromDSSI:
195 mov [bp+MENU.dwUserData], si
196 mov [bp+MENU.dwUserData+2], ds
197 ret
198
[369]199ALIGN MENU_JUMP_ALIGN
[41]200MenuInit_GetUserDataToDSSI:
201 lds si, [bp+MENU.dwUserData]
202 ret
[133]203%endif
Note: See TracBrowser for help on using the repository browser.