; timerml.asm
; L. Stewart, June 21, 1982 11:36 AM
C←CODE SEGMENT
$INCLUDE(Lark.d)
C←DATA SEGMENT
C←DATA ENDS
ASSUME CS:C←CODE, DS:C←DATA
; set timer, address of timer in BX, interval in CX
; call is settmr(interval, &timer)
; interval is in 1000ths of a second
←settmr PROC NEAR
MOV SI,clklo
ADD CX,[SI]
MOV WORD PTR [BX],CX
RET
←settmr ENDP
; has timer expired? Address of timer in BX
; returns BX=1 if so, BX=0 if not
; call is if (tmrexp(&timer)) { ... }
←tmrexp PROC NEAR
MOV AX,WORD PTR [BX]
XOR BX,BX
MOV SI,clklo
CMP AX,[SI] ; expired will leave sign bit set
JS teret
RET
teret:
INC BX
RET
←tmrexp ENDP
PUBLIC ←settmr
PUBLIC ←tmrexp
C←CODE ENDS
END