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

Last change on this file since 60 was 60, checked in by aitotat, 13 years ago

Changes to Assembly Library:

  • Timeout count down is now stopped when any key pressed.
File size: 4.1 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
131
132SCROLL_TRACK_CHARACTER              EQU     BLOCK_EVEN_BACKGROUND_AND_FOREGROUND
133SCROLL_THUMB_CHARACTER              EQU     BLOCK_FULL_FOREGROUND
134
135NO_ITEM_SELECTED                    EQU     -1
136NO_ITEM_HIGHLIGHTED                 EQU     -1
137NO_TIMEOUT_USED                     EQU     0
138
139
140; Keyboard keys (scan codes) used by menu library
141MENU_KEY_ENTER      EQU     1Ch
142MENU_KEY_ESC        EQU     01h
143MENU_KEY_UP         EQU     48h
144MENU_KEY_DOWN       EQU     50h
145MENU_KEY_PGUP       EQU     49h
146MENU_KEY_PGDN       EQU     51h
147MENU_KEY_HOME       EQU     47h
148MENU_KEY_END        EQU     4Fh
149
150
151%endif ; MENU_INC
Note: See TracBrowser for help on using the repository browser.