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

Last change on this file since 372 was 369, checked in by gregli@…, 13 years ago

Removed align directives for initalization code and added define for align in boot-time calls to the assembly library (defaulting to 1), resulting in a significant savings for the AT and 386 builds. Fixed a bug with switch command line handling in the serial server. Put in CR characters in licesnse.txt, so that it properly displays on Windows. In the configurator, added default values for user supplied CHS and LBA values, defaulting to values within range when those features are enabled. Updated the copyright message in the configurator as the literal word Copyright is important.

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;--------------------------------------------------------------------
[369]18ALIGN MENU_JUMP_ALIGN
[41]19MenuEvent_InitializeMenuinit:
20 push ss
21 pop ds
22 mov si, bp
[183]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;--------------------------------------------------------------------
[369]37ALIGN MENU_JUMP_ALIGN
[41]38MenuEvent_ExitMenu:
[183]39 mov bl, MENUEVENT_ExitMenu
[41]40 jmp SHORT MenuEvent_SendFromBX
41
42
[189]43%ifdef MENUEVENT_IDLEPROCESSING_ENABLE
[41]44;--------------------------------------------------------------------
45; MenuEvent_IdleProcessing
46; Parameters
47; SS:BP: Ptr to MENU
48; Returns:
49; CF: Set if event processed
50; Cleared if event not processed
51; Corrupts registers:
52; AX, BX, DX
53;--------------------------------------------------------------------
[369]54ALIGN MENU_JUMP_ALIGN
[41]55MenuEvent_IdleProcessing:
[183]56 mov bl, MENUEVENT_IdleProcessing
[41]57 jmp SHORT MenuEvent_SendFromBX
[189]58%endif
[41]59
60;--------------------------------------------------------------------
61; MenuEvent_RefreshTitle
62; MenuEvent_RefreshInformation
63; Parameters
[48]64; SS:BP: Ptr to MENU
[41]65; Cursor will be positioned to beginning of window
66; Returns:
67; CF: Set if event processed
68; Cleared if event not processed
69; Corrupts registers:
[48]70; AX, CX, BX, DX
[41]71;--------------------------------------------------------------------
[369]72ALIGN MENU_JUMP_ALIGN
[41]73MenuEvent_RefreshTitle:
[183]74 mov bl, MENUEVENT_RefreshTitle
[133]75 SKIP2B cx ; mov cx, <next instruction>
[48]76
[41]77MenuEvent_RefreshInformation:
[183]78 mov bl, MENUEVENT_RefreshInformation
[52]79 mov cx, [bp+MENUINIT.wHighlightedItem]
[41]80 jmp SHORT MenuEvent_SendFromBX
81
82
83;--------------------------------------------------------------------
84; MenuEvent_RefreshItemFromCX
85; Parameters
86; CX: Index of item to refresh
[48]87; SS:BP: Ptr to MENU
[41]88; Cursor has been positioned to the beginning of item line
89; Returns:
90; CF: Set if event processed
91; Cleared if event not processed
92; Corrupts registers:
93; AX, BX, DX
94;--------------------------------------------------------------------
[369]95ALIGN MENU_JUMP_ALIGN
[41]96MenuEvent_RefreshItemFromCX:
[183]97 mov bl, MENUEVENT_RefreshItemFromCX
[41]98 jmp SHORT MenuEvent_SendFromBX
99
100
101;--------------------------------------------------------------------
102; MenuEvent_HighlightItemFromCX
103; Parameters
104; CX: Index of item to highlight
[48]105; SS:BP: Ptr to MENU
[41]106; Returns:
107; Nothing
108; Corrupts registers:
109; AX, BX, DX, SI, DI
110;--------------------------------------------------------------------
[369]111ALIGN MENU_JUMP_ALIGN
[41]112MenuEvent_HighlightItemFromCX:
113 mov dx, cx
[52]114 xchg dx, [bp+MENUINIT.wHighlightedItem]
[41]115 push dx
116
[183]117 mov bl, MENUEVENT_ItemHighlightedFromCX
[41]118 call MenuEvent_SendFromBX
119
120 pop ax
121 call MenuText_RefreshItemFromAX
[52]122 mov ax, [bp+MENUINIT.wHighlightedItem]
[41]123 jmp MenuText_RefreshItemFromAX
124
125
126;--------------------------------------------------------------------
127; MenuEvent_KeyStrokeInAX
128; Parameters
129; AL: ASCII character for the key
130; AH: Keyboard library scan code for the key
[48]131; SS:BP: Ptr to MENU
[41]132; Returns:
133; CF: Set if event processed
134; Cleared if event not processed
135; Corrupts registers:
136; AX, BX, DX
137;--------------------------------------------------------------------
[369]138ALIGN MENU_JUMP_ALIGN
[41]139MenuEvent_KeyStrokeInAX:
[183]140 mov bl, MENUEVENT_KeyStrokeInAX
[133]141 SKIP2B dx ; mov dx, <next instruction>
[41]142
143
144;--------------------------------------------------------------------
145; MenuEvent_ItemSelectedFromCX
146; Parameters
147; CX: Index of selected item
[48]148; SS:BP: Ptr to MENU
[41]149; Returns:
150; CF: Set if event processed
151; Cleared if event not processed
152; Corrupts registers:
153; AX, BX, DX
154;--------------------------------------------------------------------
155MenuEvent_ItemSelectedFromCX:
[183]156 mov bl, MENUEVENT_ItemSelectedFromCX
[133]157 ; Fall to MenuEvent_SendFromBX
[41]158
159
160;--------------------------------------------------------------------
161; MenuEvent_SendFromBX
162; Parameters
[133]163; BL: Menu event to send
[41]164; SS:BP: Ptr to MENU
165; Other registers: Event specific parameters
166; Returns:
167; AX, DX: Event specific return values
168; CF: Set if event processed
169; Cleared if event not processed
170; Corrupts registers:
171; BX
172;--------------------------------------------------------------------
[369]173ALIGN MENU_JUMP_ALIGN
[41]174MenuEvent_SendFromBX:
175 push es
176 push ds
177 push di
178 push si
179 push cx
[133]180 xor bh, bh
[41]181 call [bp+MENU.fnEventHandler]
182 pop cx
183 pop si
184 pop di
185 pop ds
186 pop es
187 ret
Note: See TracBrowser for help on using the repository browser.