;***************************************************** ;* ;* TICK Process ;* ;***************************************************** ;====== notick: ;NO ONE ON DELAY LIST ;====== mov bx,rlr ! mov es,p_uda[bx] mov u_wrkseg,ds ;if mpm ;FIX 6 - DH - 14APR82 ; mov al,io_stopclk ! call xiosif ;endif ;FIX 6 - DH - 14APR82 ;if ccpm ;FIX 6 - DH - 14APR82 mov tick,false ;FIX 6 - DH - 14APR82 ;endif ;FIX 6 - DH - 14APR82 tick_l: ;SOMEONE MAY BE ON DELAY LIST ;------ ; flag wait on the TICK flag mov dx,flag_tick ! mov cx,f_flagwait int osint ; see if anyone delaying pushf ! cli mov bx,dlr cmp bx,0 ! jz drl_e ; decrement # of ticks to wait ; see if done waiting dec p_wait[bx] ! jnz n_tck ; our process is done waiting ede: 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_e cmp p_wait[si],0 ! jne n_tck mov bx,si ! jmps ede n_tck: popf ! jmps tick_l drl_e: popf ! jmps notick