-
Notifications
You must be signed in to change notification settings - Fork 23
/
IT_TIMER.INC
90 lines (66 loc) · 2.55 KB
/
IT_TIMER.INC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Proc GetCurrentTime
Push DS
Push ES
Push CS
Pop DS
Assume DS:Disk
Cmp TimerData, 0
JE GetCurrentTimeEnd
Mov ES, TimerData
Mov DI, NumTimerData
ShL DI, 3
Mov AH, 2Ah
Int 21h ; Get Date
Mov AX, CX ; Now to get date in yyyyyyym mmmddddd
Sub AX, 1980
ShL AX, 9 ; Year
Or AL, DL ; Day
Xor DL, DL
ShR DX, 3
Or AX, DX ; Month
StosW
Mov AH, 2Ch
Int 21h ; Get time
Mov AX, CX ; Now to get time in hhhhhmmm mmmsssss
ShL AL, 2 ; AX = ...hhhhh mmmmmm..
ShL AX, 3 ; AX = hhhhhmmm mmm.....
ShR DH, 1 ; DH = ...sssss
Or AL, DH
StosW
GetCurrentTimeEnd:
Pop ES
Pop DS
Ret
EndP GetCurrentTime
Assume DS:Nothing
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Proc CheckTimerData
Assume DS:Disk
Cmp TimerData, 0
JNE CheckTimerData1
Mov NumTimerData, 0
Mov AH, 48h
Mov BX, 1
Int 21h
JC CheckTimerData1
Mov TimerData, AX
Call GetCurrentTime
CheckTimerData1:
Ret
EndP CheckTimerData
Assume DS:Nothing
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Proc ReleaseTimerData
Mov AX, CS:TimerData
Test AX, AX
JZ ReleaseTimerData1
Mov ES, AX
Mov AH, 49h
Int 21h
Xor AX, AX
ReleaseTimerData1:
Mov CS:TimerData, AX
Mov CS:NumTimerData, AX
Ret
EndP ReleaseTimerData
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ