.title sleep ;+ ; subroutine sleep(seconds) ; ; this routine gets a free event flag from the pool, sets up a mark ; time for that many seconds, and stops until the event flag becomes ; set ;- ap=%5 sec=2 .mcall mrkt$s,stse$s .psect $r.roi,con,ro,rel,lcl,i .enabl lsb sleep:: mov @sec(ap),r1 ; number of seconds to wait ble 20$ ; if <= 0, return call r$gefn ; get a free event flag mrkt$s r0,r1,#2 ; set up mark time bcs 10$ ; c set => ugly error stse$s r0 ; wait for event flag 10$: call r$pefn ; return event flag 20$: mov #ok,r0 ; return(OK) return .end