-# PENDING: Path to sdcc-extra
-%.out: %$(EXEEXT)
- mkdir -p `dirname $@`
- $(S51) -t32 -S in=$(shell tty),out=$@ $< < ports/mcs51/uCsim.cmd >/dev/null 2>&1
+$(PORT_CASES_DIR)/fwk.lib:
+ cp $(PORTS_DIR)/mcs51/fwk.lib $@
+
+# run simulator with 30 seconds timeout
+%.out: %$(EXEEXT) gen/timeout
+ mkdir -p $(dir $@)
+ -gen/timeout 30 "$(S51)" -t32 -S in=$(DEV_NULL),out=$@ $< < $(PORTS_DIR)/mcs51/uCsim.cmd > $(@:.out=.sim) \
+ || echo -e --- FAIL: \"timeout, simulation killed\" in $(<:$(EXEEXT)=.c)"\n"--- Summary: 1/1/1: timeout >> $@
+ python $(srcdir)/get_ticks.py < $(@:.out=.sim) >> $@