dpvm/it/IT_TIMER.INC

91 lines
2.6 KiB
Plaintext

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
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ