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

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