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

Last change on this file since 59 was 54, checked in by Tomi Tilli, 14 years ago

Changes to Assembly Library:
Drive selection moved to own dialog from File Dialog.
File Dialog now displays loading text for better usability in slow systems.
Moved some functions from Memory.asm to new Registers.asm.

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