source: xtideuniversalbios/trunk/Assembly_Library/Src/Menu/MenuTime.asm@ 369

Last change on this file since 369 was 369, checked in by gregli@…, 13 years ago

Removed align directives for initalization code and added define for align in boot-time calls to the assembly library (defaulting to 1), resulting in a significant savings for the AT and 386 builds. Fixed a bug with switch command line handling in the serial server. Put in CR characters in licesnse.txt, so that it properly displays on Windows. In the configurator, added default values for user supplied CHS and LBA values, defaulting to values within range when those features are enabled. Updated the copyright message in the configurator as the literal word Copyright is important.

File size: 3.1 KB
Line 
1; Project name : Assembly Library
2; Description : Menu timeouts other time related functions.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
8; MenuTime_StartSelectionTimeoutWithTicksInAX
9; Parameters
10; AX: Timeout ticks
11; SS:BP: Ptr to MENU
12; Returns:
13; Nothing
14; Corrupts registers:
15; AX, BX
16;--------------------------------------------------------------------
17ALIGN MENU_JUMP_ALIGN
18MenuTime_StartSelectionTimeoutWithTicksInAX:
19 push ds
20 call PointDSBXtoTimeoutCounter
21 call TimerTicks_InitializeTimeoutFromAX
22 or BYTE [bp+MENU.bFlags], FLG_MENU_TIMEOUT_COUNTDOWN
23 pop ds
24 ret
25
26
27;--------------------------------------------------------------------
28; MenuTime_StopSelectionTimeout
29; Parameters
30; SS:BP: Ptr to MENU
31; Returns:
32; Nothing
33; Corrupts registers:
34; AX, BX, DX, SI, DI
35;--------------------------------------------------------------------
36ALIGN MENU_JUMP_ALIGN
37MenuTime_StopSelectionTimeout:
38 test BYTE [bp+MENU.bFlags], FLG_MENU_TIMEOUT_COUNTDOWN
39 jz SHORT TimeoutAlreadyStopped
40 and BYTE [bp+MENU.bFlags], ~FLG_MENU_TIMEOUT_COUNTDOWN
41 jmp MenuBorders_RedrawBottomBorderLine
42
43
44;--------------------------------------------------------------------
45; MenuTime_UpdateSelectionTimeout
46; Parameters
47; SS:BP: Ptr to MENU
48; Returns:
49; CF: Set if timeout
50; Cleared if time left
51; Corrupts registers:
52; AX, BX, SI, DI
53;--------------------------------------------------------------------
54ALIGN MENU_JUMP_ALIGN
55MenuTime_UpdateSelectionTimeout:
56 test BYTE [bp+MENU.bFlags], FLG_MENU_TIMEOUT_COUNTDOWN
57 jz SHORT .ReturnSinceTimeoutDisabled
58
59 push ds
60 call PointDSBXtoTimeoutCounter
61 call TimerTicks_GetTimeoutTicksLeftToAXfromDSBX
62 pop ds
63 jnc SHORT .RedrawSinceNoTimeout
64 and BYTE [bp+MENU.bFlags], ~FLG_MENU_TIMEOUT_COUNTDOWN
65 stc
66 ret
67
68ALIGN MENU_JUMP_ALIGN
69.RedrawSinceNoTimeout:
70 call MenuBorders_RedrawBottomBorderLine
71 clc
72.ReturnSinceTimeoutDisabled:
73TimeoutAlreadyStopped:
74 ret
75
76
77;--------------------------------------------------------------------
78; MenuTime_GetTimeoutSecondsLeftToAX
79; Parameters
80; SS:BP: Ptr to MENU
81; Returns:
82; AX: Seconds until timeout
83; Corrupts registers:
84; AX
85;--------------------------------------------------------------------
86ALIGN MENU_JUMP_ALIGN
87MenuTime_GetTimeoutSecondsLeftToAX:
88 push ds
89 push dx
90 push cx
91 push bx
92
93 call PointDSBXtoTimeoutCounter
94 call TimerTicks_GetTimeoutTicksLeftToAXfromDSBX
95 jc SHORT .TimeoutHasOccurredSoMakeSureTicksAreNotBelowZero
96
97 xchg dx, ax
98 call TimerTicks_GetSecondsToAXfromTicksInDX
99 SKIP2B f ; cmp ax, <next instruction>
100.TimeoutHasOccurredSoMakeSureTicksAreNotBelowZero:
101 xor ax, ax
102
103 pop bx
104 pop cx
105 pop dx
106 pop ds
107 ret
108
109
110;--------------------------------------------------------------------
111; PointDSBXtoTimeoutCounter
112; Parameters
113; SS:BP: Ptr to MENU
114; Returns:
115; DS:BX: Ptr to timeout counter
116; Corrupts registers:
117; Nothing
118;--------------------------------------------------------------------
119ALIGN MENU_JUMP_ALIGN
120PointDSBXtoTimeoutCounter:
121 push ss
122 pop ds
123 lea bx, [bp+MENU.wTimeoutCounter]
124 ret
Note: See TracBrowser for help on using the repository browser.