source: xtideuniversalbios/trunk/Assembly_Library/Src/Menu/MenuInit.asm @ 46

Last change on this file since 46 was 46, checked in by aitotat, 14 years ago

Changes to Assembly Library:
Sorting now works (pivot item is copied for comparison and index comparisons are now signed instead of unsigned).
Menu shadow now looks better on black and white modes.
Sorting is now implemented for File Fialog: directories are displayed before files.
File Dialog now displays directories with upper case letters and files with lower case letters.
Line splitter now removes all empty lines from the end.

File size: 4.4 KB
Line 
1; File name     :   MenuInit.asm
2; Project name  :   Assembly Library
3; Created date  :   13.7.2010
4; Last update   :   1.10.2010
5; Author        :   Tomi Tilli
6; Description   :   Functions for initializing menu system.
7
8; Section containing code
9SECTION .text
10
11;--------------------------------------------------------------------
12; MenuInit_DisplayMenuWithHandlerInBXandUserDataInDXAX
13;   Parameters
14;       DX:AX:  User specified data
15;       BX:     Menu event handler
16;   Returns:
17;       AX:     Index of selected item or NO_ITEM_SELECTED
18;   Corrupts registers:
19;       All except segments
20;--------------------------------------------------------------------
21ALIGN JUMP_ALIGN
22MenuInit_DisplayMenuWithHandlerInBXandUserDataInDXAX:
23    push    es
24    push    ds
25    LOAD_BDA_SEGMENT_TO ds, cx
26    push    WORD [BDA.wVidCurShape]
27    eENTER_STRUCT MENU_size
28
29    mov     cx, MENU_size
30    call    Memory_ZeroSSBPwithSizeInCX
31    call    MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX
32    mov     ax, [bp+MENU.wHighlightedItem]
33
34    eLEAVE_STRUCT MENU_size
35    pop     ax
36    CALL_DISPLAY_LIBRARY SetCursorShapeFromAX
37    pop     ds
38    pop     es
39    ret
40
41
42;--------------------------------------------------------------------
43; MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX
44;   Parameters
45;       DX:AX:  User specified data
46;       BX:     Menu event handler
47;       SS:BP:  Ptr to MENU
48;   Returns:
49;       Nothing
50;   Corrupts registers:
51;       All, except SS:BP
52;--------------------------------------------------------------------
53ALIGN JUMP_ALIGN
54MenuInit_EnterMenuWithHandlerInBXandUserDataInDXAX:
55    mov     [bp+MENU.fnEventHandler], bx
56    mov     [bp+MENU.dwUserData], ax
57    mov     [bp+MENU.dwUserData+2], dx
58    mov     WORD [bp+MENU.wHighlightedItem], NO_ITEM_HIGHLIGHTED
59
60    mov     ax, CURSOR_HIDDEN
61    CALL_DISPLAY_LIBRARY SetCursorShapeFromAX
62    call    MenuEvent_InitializeMenuinit        ; User initialization
63    call    MenuTime_RestartSelectionTimeout
64    call    MenuInit_RefreshMenuWindow
65    jmp     MenuLoop_Enter
66
67
68;--------------------------------------------------------------------
69; MenuInit_RefreshMenuWindow
70;   Parameters
71;       SS:BP:  Ptr to MENU
72;   Returns:
73;       Nothing
74;   Corrupts registers:
75;       AX, BX, CX, DX, SI, DI
76;--------------------------------------------------------------------
77ALIGN JUMP_ALIGN
78MenuInit_RefreshMenuWindow:
79    call    MenuBorders_RefreshAll          ; Draw borders
80    call    MenuText_RefreshTitle           ; Draw title strings
81    call    MenuText_RefreshAllItems        ; Draw item strings
82    jmp     MenuText_RefreshInformation     ; Draw information strings 
83
84
85;--------------------------------------------------------------------
86; MenuInit_CloseMenuWindow
87;   Parameters
88;       SS:BP:  Ptr to MENU
89;   Returns:
90;       Nothing
91;   Corrupts registers:
92;       Nothing
93;--------------------------------------------------------------------
94ALIGN JUMP_ALIGN
95MenuInit_CloseMenuWindow:
96    or      BYTE [bp+MENU.bFlags], FLG_MENU_EXIT
97    ret
98
99
100;--------------------------------------------------------------------
101; MenuInit_HighlightItemFromAX
102;   Parameters
103;       AX:     Item to highlight
104;       SS:BP:  Ptr to MENU
105;   Returns:
106;       Nothing
107;   Corrupts registers:
108;       AX, BX, CX, DX, SI, DI
109;--------------------------------------------------------------------
110ALIGN JUMP_ALIGN
111MenuInit_HighlightItemFromAX:
112    sub     ax, [bp+MENU.wHighlightedItem]
113    jmp     MenuScrollbars_MoveHighlightedItemByAX
114
115
116;--------------------------------------------------------------------
117; MenuInit_SetTitleHeightFromAL
118; MenuInit_SetInformationHeightFromAL
119; MenuInit_SetTotalItemsFromAX
120;   Parameters
121;       AX/AL:  Parameter
122;       SS:BP:      Ptr to MENU
123;   Returns:
124;       Nothing
125;   Corrupts registers:
126;       Nothing
127;--------------------------------------------------------------------
128ALIGN JUMP_ALIGN
129MenuInit_SetTitleHeightFromAL:
130    mov     [bp+MENUINIT.bTitleLines], al
131    ret
132
133ALIGN JUMP_ALIGN
134MenuInit_SetInformationHeightFromAL:
135    mov     [bp+MENUINIT.bInfoLines], al
136    ret
137
138ALIGN JUMP_ALIGN
139MenuInit_SetTotalItemsFromAX:
140    mov     [bp+MENUINIT.wItems], ax
141    ret
142
143
144;--------------------------------------------------------------------
145; MenuInit_SetUserDataFromDSSI
146; MenuInit_GetUserDataToDSSI
147;   Parameters
148;       DS:SI:  User data (MenuInit_SetUserDataFromDSSI)
149;       SS:BP:  Ptr to MENU
150;   Returns:
151;       DS:SI:  User data (MenuInit_GetUserDataToDSSI)
152;   Corrupts registers:
153;       Nothing
154;--------------------------------------------------------------------
155ALIGN JUMP_ALIGN
156MenuInit_SetUserDataFromDSSI:
157    mov     [bp+MENU.dwUserData], si
158    mov     [bp+MENU.dwUserData+2], ds
159    ret
160
161ALIGN JUMP_ALIGN
162MenuInit_GetUserDataToDSSI:
163    lds     si, [bp+MENU.dwUserData]
164    ret
Note: See TracBrowser for help on using the repository browser.