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

Last change on this file since 73 was 60, checked in by Tomi Tilli, 14 years ago

Changes to Assembly Library:

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