
;*****************************************************
;*
;*	TICK Process
;*
;*****************************************************

;======
notick:		;NO ONE ON DELAY LIST
;======
	mov bx,rlr ! mov es,p_uda[bx]
	mov u_wrkseg,ds
	mov al,io_stopclk ! call xiosif	

tick:		;SOMEONE MAY BE ON DELAY LIST
;----
		; flag wait on the TICK flag
	mov dx,flag_tick ! mov cx,f_flagwait
	int mpmint

		; see if anyone delaying
	pushf ! cli
	mov bx,dlr
	cmp bx,0 ! jz drl_empty

		; decrement # of ticks to wait
		; see if done waiting
	    dec p_wait[bx] ! jnz next_tick

			; our process is done waiting
enddelay:	mov si,p_link[bx] ! mov dlr,si
		mov p_stat[bx],ps_run
		mov ax,drl ! mov p_link[bx],ax
		mov drl,bx

		cmp si,0 ! je drl_empty
		    cmp p_wait[si],0 ! jne next_tick
			mov bx,si ! jmps enddelay
next_tick:  popf ! jmps tick
drl_empty:
	popf ! jmps notick