source: xtideuniversalbios/trunk/Assembly_Library/Src/Menu/MenuEvent.asm@ 48

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

Changes to Assembly Library:
Added functions to clear Menu Title and Information areas.
Implemented automatic line change when writing Menu Title and Information areas.
CGA snow related functions have been moved to CgaSnow.asm.
Keyboard input functions no longer produce beep for backspace.

File size: 5.1 KB
RevLine 
[41]1; File name : MenuEvent.asm
2; Project name : Assembly Library
3; Created date : 13.7.2010
[48]4; Last update : 5.10.2010
[41]5; Author : Tomi Tilli
6; Description : Functions for initializing menu system.
7
8; Section containing code
9SECTION .text
10
11;--------------------------------------------------------------------
12; MenuEvent_InitializeMenuinit
13; Parameters
14; SS:BP: Ptr to MENU
15; Returns:
16; DS:SI: Ptr to MENU with MENUINIT initialized from user handler
17; CF: Set if event processed
18; Cleared if event not processed
19; Corrupts registers:
20; AX, BX, DX
21;--------------------------------------------------------------------
22ALIGN JUMP_ALIGN
23MenuEvent_InitializeMenuinit:
24 push ss
25 pop ds
26 mov si, bp
27 mov bx, MENUEVENT.InitializeMenuinitFromDSSI
28 jmp SHORT MenuEvent_SendFromBX
29
30
31;--------------------------------------------------------------------
32; MenuEvent_ExitMenu
33; Parameters
34; SS:BP: Ptr to MENU
35; Returns:
36; CF: Set if event processed
37; Cleared if event not processed
38; Corrupts registers:
39; AX, BX, DX
40;--------------------------------------------------------------------
41ALIGN JUMP_ALIGN
42MenuEvent_ExitMenu:
43 mov bx, MENUEVENT.ExitMenu
44 jmp SHORT MenuEvent_SendFromBX
45
46
47;--------------------------------------------------------------------
48; MenuEvent_IdleProcessing
49; Parameters
50; SS:BP: Ptr to MENU
51; Returns:
52; CF: Set if event processed
53; Cleared if event not processed
54; Corrupts registers:
55; AX, BX, DX
56;--------------------------------------------------------------------
57ALIGN JUMP_ALIGN
58MenuEvent_IdleProcessing:
59 mov bx, MENUEVENT.IdleProcessing
60 jmp SHORT MenuEvent_SendFromBX
61
62
63;--------------------------------------------------------------------
64; MenuEvent_RefreshTitle
65; MenuEvent_RefreshInformation
66; Parameters
[48]67; SS:BP: Ptr to MENU
[41]68; Cursor will be positioned to beginning of window
69; Returns:
70; CF: Set if event processed
71; Cleared if event not processed
72; Corrupts registers:
[48]73; AX, CX, BX, DX
[41]74;--------------------------------------------------------------------
75ALIGN JUMP_ALIGN
76MenuEvent_RefreshTitle:
77 mov bx, MENUEVENT.RefreshTitle
[48]78 jmp SHORT LoadHighlightedItemToCXandSendMessageFromBX
79
[41]80ALIGN JUMP_ALIGN
81MenuEvent_RefreshInformation:
82 mov bx, MENUEVENT.RefreshInformation
[48]83LoadHighlightedItemToCXandSendMessageFromBX:
84 mov cx, [bp+MENU.wHighlightedItem]
[41]85 jmp SHORT MenuEvent_SendFromBX
86
87
88;--------------------------------------------------------------------
89; MenuEvent_RefreshItemFromCX
90; Parameters
91; CX: Index of item to refresh
[48]92; SS:BP: Ptr to MENU
[41]93; Cursor has been positioned to the beginning of item line
94; Returns:
95; CF: Set if event processed
96; Cleared if event not processed
97; Corrupts registers:
98; AX, BX, DX
99;--------------------------------------------------------------------
100ALIGN JUMP_ALIGN
101MenuEvent_RefreshItemFromCX:
102 mov bx, MENUEVENT.RefreshItemFromCX
103 jmp SHORT MenuEvent_SendFromBX
104
105
106;--------------------------------------------------------------------
107; MenuEvent_HighlightItemFromCX
108; Parameters
109; CX: Index of item to highlight
[48]110; SS:BP: Ptr to MENU
[41]111; Returns:
112; Nothing
113; Corrupts registers:
114; AX, BX, DX, SI, DI
115;--------------------------------------------------------------------
116ALIGN JUMP_ALIGN
117MenuEvent_HighlightItemFromCX:
118 mov dx, cx
119 xchg dx, [bp+MENU.wHighlightedItem]
120 push dx
121
122 mov bx, MENUEVENT.ItemHighlightedFromCX
123 call MenuEvent_SendFromBX
124
125 pop ax
126 call MenuText_RefreshItemFromAX
127 mov ax, [bp+MENU.wHighlightedItem]
128 jmp MenuText_RefreshItemFromAX
129
130
131;--------------------------------------------------------------------
132; MenuEvent_KeyStrokeInAX
133; Parameters
134; AL: ASCII character for the key
135; AH: Keyboard library scan code for the key
[48]136; SS:BP: Ptr to MENU
[41]137; Returns:
138; CF: Set if event processed
139; Cleared if event not processed
140; Corrupts registers:
141; AX, BX, DX
142;--------------------------------------------------------------------
143ALIGN JUMP_ALIGN
144MenuEvent_KeyStrokeInAX:
145 mov bx, MENUEVENT.KeyStrokeInAX
146 jmp SHORT MenuEvent_SendFromBX
147
148
149;--------------------------------------------------------------------
150; MenuEvent_ItemSelectedFromCX
151; Parameters
152; CX: Index of selected item
[48]153; SS:BP: Ptr to MENU
[41]154; Returns:
155; CF: Set if event processed
156; Cleared if event not processed
157; Corrupts registers:
158; AX, BX, DX
159;--------------------------------------------------------------------
160ALIGN JUMP_ALIGN
161MenuEvent_ItemSelectedFromCX:
162 mov bx, MENUEVENT.ItemSelectedFromCX
163 jmp SHORT MenuEvent_SendFromBX
164
165
166;--------------------------------------------------------------------
167; MenuEvent_SendFromBX
168; Parameters
169; BX: Menu event to send
170; SS:BP: Ptr to MENU
171; Other registers: Event specific parameters
172; Returns:
173; AX, DX: Event specific return values
174; CF: Set if event processed
175; Cleared if event not processed
176; Corrupts registers:
177; BX
178;--------------------------------------------------------------------
179ALIGN JUMP_ALIGN
180MenuEvent_SendFromBX:
181 push es
182 push ds
183 push di
184 push si
185 push cx
186 call [bp+MENU.fnEventHandler]
187 pop cx
188 pop si
189 pop di
190 pop ds
191 pop es
192 ret
Note: See TracBrowser for help on using the repository browser.