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

Last change on this file since 44 was 44, checked in by aitotat, 14 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.