In my 16F628 program I call a subroutine that waits for an event to happen. If the event does not happen within a certain length of time can I use a goto instruction to restart the program from a known point, without using a return instruction to pop the return address back off the stack ? I know this will cause a stack underflow(?) condition, but since the stack is a circular buffer surely it won't matter because subsequent calls will have the required return to go with them - or will it ? Start: call initialize StartEnd: call setup Mainloop: call Subroutine call sub2 goto Mainloop Subroutine: clrf counter SubLoop: btfss Input1 retlw 0x00 btfss Input2 retlw 0x01 decfsz counter,f goto SubLoop goto StartEnd ;timeout so restart again Thanks, James -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu