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

Last change on this file since 141 was 133, checked in by krille_n_@…, 13 years ago

Size optimizations in various files in the Assembly Library. Also a very small change to a string in XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm

File size: 4.9 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;--------------------------------------------------------------------
17ALIGN JUMP_ALIGN
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
[129]33 xchg ax, dx ; Return highlighted item in AX
[41]34 pop ds
35 pop es
36 ret
37
38
39;--------------------------------------------------------------------
40; MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX
41; Parameters
42; DX:AX: User specified data
43; BX: Menu event handler
44; SS:BP: Ptr to MENU
45; Returns:
46; Nothing
47; Corrupts registers:
48; All, except SS:BP
49;--------------------------------------------------------------------
50ALIGN JUMP_ALIGN
51MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX:
52 mov [bp+MENU.fnEventHandler], bx
53 mov [bp+MENU.dwUserData], ax
54 mov [bp+MENU.dwUserData+2], dx
55
56 mov ax, CURSOR_HIDDEN
57 CALL_DISPLAY_LIBRARY SetCursorShapeFromAX
[104]58 call MenuEvent_InitializeMenuinit ; User initialization
[133]59%ifndef USE_186
[41]60 call MenuInit_RefreshMenuWindow
61 jmp MenuLoop_Enter
[133]62%else
63 push MenuLoop_Enter
64 ; Fall to MenuInit_RefreshMenuWindow
65%endif
[41]66
67
68;--------------------------------------------------------------------
69; MenuInit_RefreshMenuWindow
70; Parameters
71; SS:BP: Ptr to MENU
72; Returns:
73; Nothing
74; Corrupts registers:
75; AX, BX, CX, DX, SI, DI
76;--------------------------------------------------------------------
77ALIGN JUMP_ALIGN
78MenuInit_RefreshMenuWindow:
79 call MenuBorders_RefreshAll ; Draw borders
80 call MenuText_RefreshTitle ; Draw title strings
81 call MenuText_RefreshAllItems ; Draw item strings
[116]82 jmp MenuText_RefreshInformation ; Draw information strings
[41]83
84
85;--------------------------------------------------------------------
86; MenuInit_CloseMenuWindow
87; Parameters
88; SS:BP: Ptr to MENU
89; Returns:
90; Nothing
91; Corrupts registers:
92; Nothing
93;--------------------------------------------------------------------
94ALIGN JUMP_ALIGN
95MenuInit_CloseMenuWindow:
96 or BYTE [bp+MENU.bFlags], FLG_MENU_EXIT
97 ret
98
99
100;--------------------------------------------------------------------
101; MenuInit_HighlightItemFromAX
102; Parameters
103; AX: Item to highlight
104; SS:BP: Ptr to MENU
105; Returns:
106; Nothing
107; Corrupts registers:
108; AX, BX, CX, DX, SI, DI
109;--------------------------------------------------------------------
110ALIGN JUMP_ALIGN
111MenuInit_HighlightItemFromAX:
[52]112 sub ax, [bp+MENUINIT.wHighlightedItem]
[41]113 jmp MenuScrollbars_MoveHighlightedItemByAX
114
[48]115;--------------------------------------------------------------------
116; MenuInit_GetHighlightedItemToAX
117; Parameters
118; SS:BP: Ptr to MENU
119; Returns:
120; AX: Index of highlighted item or NO_ITEM_HIGHLIGHTED
121; Corrupts registers:
122; Nothing
123;--------------------------------------------------------------------
[133]124%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[48]125ALIGN JUMP_ALIGN
126MenuInit_GetHighlightedItemToAX:
[52]127 mov ax, [bp+MENUINIT.wHighlightedItem]
[48]128 ret
[133]129%endif
[41]130
[48]131
[41]132;--------------------------------------------------------------------
133; MenuInit_SetTitleHeightFromAL
134; MenuInit_SetInformationHeightFromAL
135; MenuInit_SetTotalItemsFromAX
136; Parameters
137; AX/AL: Parameter
138; SS:BP: Ptr to MENU
139; Returns:
140; Nothing
141; Corrupts registers:
142; Nothing
143;--------------------------------------------------------------------
[133]144%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[41]145ALIGN JUMP_ALIGN
146MenuInit_SetTitleHeightFromAL:
147 mov [bp+MENUINIT.bTitleLines], al
148 ret
149
150ALIGN JUMP_ALIGN
151MenuInit_SetInformationHeightFromAL:
152 mov [bp+MENUINIT.bInfoLines], al
153 ret
154
155ALIGN JUMP_ALIGN
156MenuInit_SetTotalItemsFromAX:
157 mov [bp+MENUINIT.wItems], ax
158 ret
[133]159%endif
[41]160
161
162;--------------------------------------------------------------------
163; MenuInit_SetUserDataFromDSSI
164; MenuInit_GetUserDataToDSSI
165; Parameters
166; DS:SI: User data (MenuInit_SetUserDataFromDSSI)
167; SS:BP: Ptr to MENU
168; Returns:
169; DS:SI: User data (MenuInit_GetUserDataToDSSI)
170; Corrupts registers:
171; Nothing
172;--------------------------------------------------------------------
[133]173%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[41]174ALIGN JUMP_ALIGN
175MenuInit_SetUserDataFromDSSI:
176 mov [bp+MENU.dwUserData], si
177 mov [bp+MENU.dwUserData+2], ds
178 ret
179
180ALIGN JUMP_ALIGN
181MenuInit_GetUserDataToDSSI:
182 lds si, [bp+MENU.dwUserData]
183 ret
[133]184%endif
Note: See TracBrowser for help on using the repository browser.