source: xtideuniversalbios/trunk/Assembly_Library/Inc/Menu.inc@ 167

Last change on this file since 167 was 105, checked in by Tomi Tilli, 13 years ago

Changes to Assembly Library:

  • More optimizations to reduce size.
  • Removed some utility functions to reduce size.
File size: 4.2 KB
Line 
1; File name : Menu.inc
2; Project name : Assembly Library
3; Created date : 13.7.2010
4; Last update : 22.11.2010
5; Author : Tomi Tilli
6; Description : Defines for Menu library.
7%ifndef MENU_INC
8%define MENU_INC
9
10;--------------------------------------------------------------------
11; Menu Library users need to use this macro since it will provide
12; compatibility with future library versions.
13;
14; CALL_MENU_LIBRARY
15; Parameters:
16; %1: Function to call (functionName from MENU_LIB)
17; BP: Menu handle
18; Registers: Depends on function to call
19; Returns:
20; Depends on function to call
21; Corrupts registers:
22; AX (unless used as a return register), DI
23;--------------------------------------------------------------------
24%macro CALL_MENU_LIBRARY 1
25 %ifidn %1, Close
26 call MenuInit_CloseMenuWindow
27
28 %elifidn %1, SetUserDataFromDSSI
29 call MenuInit_SetUserDataFromDSSI
30
31 %elifidn %1, GetUserDataToDSSI
32 call MenuInit_GetUserDataToDSSI
33
34 %elifidn %1, SetTitleHeightFromAL
35 call MenuInit_SetTitleHeightFromAL
36
37 %elifidn %1, GetHighlightedItemToAX
38 call MenuInit_GetHighlightedItemToAX
39
40 %elifidn %1, SetTotalItemsFromAX
41 call MenuInit_SetTotalItemsFromAX
42
43 %elifidn %1, SetInformationHeightFromAL
44 call MenuInit_SetInformationHeightFromAL
45
46 %elifidn %1, SetTimeoutValueFromAX
47 call MenuTime_SetSelectionTimeoutValueFromAX
48
49 %else
50 mov di, MENU_LIB.%1
51 call Menu_FunctionFromDI
52 %endif
53%endmacro
54
55; Menu library functions
56struc MENU_LIB
57 .DisplayWithHandlerInBXandUserDataInDXAX resb 2
58 .Close:
59 .RefreshWindow resb 2
60
61 .SetUserDataFromDSSI:
62 .GetUserDataToDSSI:
63
64 .SetTitleHeightFromAL:
65 .ClearTitleArea resb 2
66 .RefreshTitle resb 2
67
68 .GetHighlightedItemToAX:
69 .HighlightItemFromAX resb 2
70 .SetTotalItemsFromAX:
71 .RefreshItemFromAX resb 2
72
73 .SetInformationHeightFromAL:
74 .ClearInformationArea resb 2
75 .RefreshInformation resb 2
76
77 .StartSelectionTimeoutWithTicksInAX resb 2
78
79%ifdef INCLUDE_MENU_DIALOGS
80 .StartProgressTaskWithIoInDSSIandParamInDXAX resb 2
81 .SetProgressValueFromAX resb 2
82
83 .DisplayMessageWithInputInDSSI resb 2
84 .GetSelectionToAXwithInputInDSSI resb 2
85 .GetWordWithIoInDSSI resb 2
86 .GetStringWithIoInDSSI resb 2
87 .GetFileNameWithIoInDSSI resb 2
88 .GetDriveWithIoInDSSI resb 2
89%endif
90endstruc
91
92
93; Menu initialization parameters
94struc MENUINIT
95 .wItems resb 2 ; Number of items in menu
96 .wHighlightedItem resb 2 ; Index for highlighted item
97
98 .wTitleAndInfoLines:
99 .bTitleLines resb 1 ; Number of title lines
100 .bInfoLines resb 1 ; Number of information lines
101
102 .wWidthAndHeight:
103 .bWidth resb 1 ; Menu width in characters
104 .bHeight resb 1 ; Menu height in characters
105endstruc
106
107
108; All menu parameters
109struc MENU
110 .menuInit resb MENUINIT_size ; Must be first
111 .fnEventHandler resb 2 ; Offset to Menu event handler
112 .dwUserData resb 4 ; User specified data
113
114 .bFlags resb 1 ; Menu flags
115 resb 1
116 .wTimeoutCounter resb 2
117 .wFirstVisibleItem resb 2 ; Index for first visible item on the menu
118endstruc
119
120; Flags for MENU.wFlags
121FLG_MENU_EXIT EQU (1<<0) ; Close and exit menu
122FLG_MENU_NOHIGHLIGHT EQU (1<<1) ; Never highlight items
123FLG_MENU_USER_HANDLES_SCROLLING EQU (1<<2)
124FLG_MENU_TIMEOUT_COUNTDOWN EQU (1<<3) ; Timeout countdown in progress
125
126
127MENU_VERTICAL_BORDER_LINES EQU 5 ; Title top and bottom + Info top and bottom + bottom shadow
128MENU_HORIZONTAL_BORDER_LINES EQU 3 ; Left + Right borders + Right shadow
129MENU_TEXT_ROW_OFFSET EQU 1
130MENU_TEXT_COLUMN_OFFSET EQU 2
131MENU_TIMEOUT_STRING_CHARACTERS EQU 19
132MENU_TIMEOUT_SECONDS_FOR_HURRY EQU 3
133
134SCROLL_TRACK_CHARACTER EQU BLOCK_EVEN_BACKGROUND_AND_FOREGROUND
135SCROLL_THUMB_CHARACTER EQU BLOCK_FULL_FOREGROUND
136
137NO_ITEM_SELECTED EQU -1
138NO_ITEM_HIGHLIGHTED EQU -1
139NO_TIMEOUT_USED EQU 0
140
141
142; Keyboard keys (scan codes) used by menu library
143MENU_KEY_ENTER EQU 1Ch
144MENU_KEY_ESC EQU 01h
145MENU_KEY_UP EQU 48h
146MENU_KEY_DOWN EQU 50h
147MENU_KEY_PGUP EQU 49h
148MENU_KEY_PGDN EQU 51h
149MENU_KEY_HOME EQU 47h
150MENU_KEY_END EQU 4Fh
151
152
153%endif ; MENU_INC
Note: See TracBrowser for help on using the repository browser.