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

Last change on this file since 58 was 58, checked in by aitotat, 13 years ago

Changes to Assembly Library:

  • Exiting menu with ESC can now be canceled.
File size: 5.1 KB
Line 
1; File name     :   MenuEvent.asm
2; Project name  :   Assembly Library
3; Created date  :   13.7.2010
4; Last update   :   12.10.2010
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 to exit from menu
37;               Cleared to cancel exit
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
67;       SS:BP:  Ptr to MENU
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:
73;       AX, CX, BX, DX
74;--------------------------------------------------------------------
75ALIGN JUMP_ALIGN
76MenuEvent_RefreshTitle:
77    mov     bx, MENUEVENT.RefreshTitle
78    jmp     SHORT LoadHighlightedItemToCXandSendMessageFromBX
79
80ALIGN JUMP_ALIGN
81MenuEvent_RefreshInformation:
82    mov     bx, MENUEVENT.RefreshInformation
83LoadHighlightedItemToCXandSendMessageFromBX:
84    mov     cx, [bp+MENUINIT.wHighlightedItem]
85    jmp     SHORT MenuEvent_SendFromBX
86
87
88;--------------------------------------------------------------------
89; MenuEvent_RefreshItemFromCX
90;   Parameters
91;       CX:     Index of item to refresh
92;       SS:BP:  Ptr to MENU
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
110;       SS:BP:  Ptr to MENU
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+MENUINIT.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+MENUINIT.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
136;       SS:BP:  Ptr to MENU
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
153;       SS:BP:  Ptr to MENU
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.