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

Last change on this file since 44 was 44, checked in by Tomi Tilli, 15 years ago

Spaces can now be generated before format specifier when printing formatted string.
Background character and attribute can now be easily specified before compiling.

File size: 3.9 KB
Line 
1; File name : Menu.inc
2; Project name : Assembly Library
3; Created date : 13.7.2010
4; Last update : 15.9.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, SetTotalItemsFromAX
38 call MenuInit_SetTotalItemsFromAX
39
40 %elifidn %1, SetInformationHeightFromAL
41 call MenuInit_SetInformationHeightFromAL
42
43 %elifidn %1, SetTimeoutValueFromAX
44 call MenuTime_SetSelectionTimeoutValueFromAX
45
46 %else
47 mov di, MENU_LIB.%1
48 call Menu_FunctionFromDI
49 %endif
50%endmacro
51
52; Menu library functions
53struc MENU_LIB
54 .DisplayWithHandlerInBXandUserDataInDXAX resb 2
55 .Close:
56 .RefreshWindow resb 2
57
58 .SetUserDataFromDSSI:
59 .GetUserDataToDSSI:
60
61 .SetTitleHeightFromAL:
62 .RefreshTitle resb 2
63
64 .HighlightItemFromAX resb 2
65 .SetTotalItemsFromAX:
66 .RefreshItemFromAX resb 2
67
68 .SetInformationHeightFromAL:
69 .RefreshInformation resb 2
70
71 .RestartTimeout resb 2
72 .SetTimeoutValueFromAX:
73
74%ifdef INCLUDE_MENU_DIALOGS
75 .StartProgressTaskWithIoInDSSIandParamInDXAX resb 2
76 .SetProgressValueFromAX resb 2
77
78 .DisplayMessageWithInputInDSSI resb 2
79 .GetSelectionToAXwithInputInDSSI resb 2
80 .GetWordWithIoInDSSI resb 2
81 .GetStringWithIoInDSSI resb 2
82 .GetFileNameWithIoInDSSI resb 2
83%endif
84endstruc
85
86
87; Menu initialization parameters
88struc MENUINIT
89 .wTimeoutTicks resb 2 ; Selection timeout in system timer ticks
90 .wItems resb 2 ; Number of items in menu
91
92 .wTitleAndInfoLines:
93 .bTitleLines resb 1 ; Number of title lines
94 .bInfoLines resb 1 ; Number of information lines
95
96 .wWidthAndHeight:
97 .bWidth resb 1 ; Menu width in characters
98 .bHeight resb 1 ; Menu height in characters
99endstruc
100
101
102; All menu parameters
103struc MENU
104 .menuInit resb MENUINIT_size ; Must be first
105 .fnEventHandler resb 2 ; Offset to Menu event handler
106 .dwUserData resb 4 ; User specified data
107
108 .bFlags resb 1 ; Menu flags
109 .bLastSecondPrinted resb 1 ; To minimize CGA snow when using timeouts
110 .wTimeoutCounter resb 2
111
112 .wHighlightedItem resb 2 ; Index for highlighted item
113 .wFirstVisibleItem resb 2 ; Index for first visible item on the menu
114endstruc
115
116; Flags for MENU.wFlags
117FLG_MENU_EXIT EQU (1<<0) ; Close and exit menu
118FLG_MENU_NOHIGHLIGHT EQU (1<<1) ; Never highlight items
119FLG_MENU_USER_HANDLES_SCROLLING EQU (1<<2)
120
121
122MENU_VERTICAL_BORDER_LINES EQU 5 ; Title top and bottom + Info top and bottom + bottom shadow
123MENU_HORIZONTAL_BORDER_LINES EQU 3 ; Left + Right borders + Right shadow
124MENU_TEXT_ROW_OFFSET EQU 1
125MENU_TEXT_COLUMN_OFFSET EQU 2
126
127SCROLL_TRACK_CHARACTER EQU BLOCK_EVEN_BACKGROUND_AND_FOREGROUND
128SCROLL_THUMB_CHARACTER EQU BLOCK_FULL_FOREGROUND
129
130NO_ITEM_SELECTED EQU -1
131NO_ITEM_HIGHLIGHTED EQU -1
132
133
134; Keyboard keys (scan codes) used by menu library
135MENU_KEY_ENTER EQU 1Ch
136MENU_KEY_ESC EQU 01h
137MENU_KEY_UP EQU 48h
138MENU_KEY_DOWN EQU 50h
139MENU_KEY_PGUP EQU 49h
140MENU_KEY_PGDN EQU 51h
141MENU_KEY_HOME EQU 47h
142MENU_KEY_END EQU 4Fh
143
144
145%endif ; MENU_INC
Note: See TracBrowser for help on using the repository browser.