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

Last change on this file since 399 was 370, checked in by krille_n_@…, 13 years ago

Changes:

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