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

Last change on this file since 178 was 133, checked in by krille_n_@…, 13 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
Line 
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
23    mov     bl, MENUEVENT.InitializeMenuinitFromDSSI
24    jmp     SHORT MenuEvent_SendFromBX
25
26
27;--------------------------------------------------------------------
28; MenuEvent_ExitMenu
29;   Parameters
30;       SS:BP:  Ptr to MENU
31;   Returns:
32;       CF:     Set to exit from menu
33;               Cleared to cancel exit
34;   Corrupts registers:
35;       AX, BX, DX
36;--------------------------------------------------------------------
37ALIGN JUMP_ALIGN
38MenuEvent_ExitMenu:
39    mov     bl, MENUEVENT.ExitMenu
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:
55    mov     bl, MENUEVENT.IdleProcessing
56    jmp     SHORT MenuEvent_SendFromBX
57
58
59;--------------------------------------------------------------------
60; MenuEvent_RefreshTitle
61; MenuEvent_RefreshInformation
62;   Parameters
63;       SS:BP:  Ptr to MENU
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:
69;       AX, CX, BX, DX
70;--------------------------------------------------------------------
71ALIGN JUMP_ALIGN
72MenuEvent_RefreshTitle:
73    mov     bl, MENUEVENT.RefreshTitle
74    SKIP2B  cx  ; mov cx, <next instruction>
75
76MenuEvent_RefreshInformation:
77    mov     bl, MENUEVENT.RefreshInformation
78    mov     cx, [bp+MENUINIT.wHighlightedItem]
79    jmp     SHORT MenuEvent_SendFromBX
80
81
82;--------------------------------------------------------------------
83; MenuEvent_RefreshItemFromCX
84;   Parameters
85;       CX:     Index of item to refresh
86;       SS:BP:  Ptr to MENU
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:
96    mov     bl, MENUEVENT.RefreshItemFromCX
97    jmp     SHORT MenuEvent_SendFromBX
98
99
100;--------------------------------------------------------------------
101; MenuEvent_HighlightItemFromCX
102;   Parameters
103;       CX:     Index of item to highlight
104;       SS:BP:  Ptr to MENU
105;   Returns:
106;       Nothing
107;   Corrupts registers:
108;       AX, BX, DX, SI, DI
109;--------------------------------------------------------------------
110ALIGN JUMP_ALIGN
111MenuEvent_HighlightItemFromCX:
112    mov     dx, cx
113    xchg    dx, [bp+MENUINIT.wHighlightedItem]
114    push    dx
115
116    mov     bl, MENUEVENT.ItemHighlightedFromCX
117    call    MenuEvent_SendFromBX
118
119    pop     ax
120    call    MenuText_RefreshItemFromAX
121    mov     ax, [bp+MENUINIT.wHighlightedItem]
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
130;       SS:BP:  Ptr to MENU
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:
139    mov     bl, MENUEVENT.KeyStrokeInAX
140    SKIP2B  dx  ; mov dx, <next instruction>
141
142
143;--------------------------------------------------------------------
144; MenuEvent_ItemSelectedFromCX
145;   Parameters
146;       CX:     Index of selected item
147;       SS:BP:  Ptr to MENU
148;   Returns:
149;       CF:     Set if event processed
150;               Cleared if event not processed
151;   Corrupts registers:
152;       AX, BX, DX
153;--------------------------------------------------------------------
154MenuEvent_ItemSelectedFromCX:
155    mov     bl, MENUEVENT.ItemSelectedFromCX
156    ; Fall to MenuEvent_SendFromBX
157
158
159;--------------------------------------------------------------------
160; MenuEvent_SendFromBX
161;   Parameters
162;       BL:                 Menu event to send
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
179    xor     bh, bh
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.