There you go... I was feeling benevolent...

You could do this with a 10F series chip... 90 words are not exactly taxing a 12F... (actually, thinking about it, you could do this with a NE555 configured in monostable mode)...

Untested - but it compiles and it's a start to check the logic...

Code:
	'
	'	PIC Defines
	'	-----------
	@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT
		' System Clock Options (Internal)	
	@ DEVICE pic12F675, WDT_ON
		' Watchdog Timer
	@ DEVICE pic12F675, PWRT_ON
		' Power-On Timer
	@ DEVICE pic12F675, MCLR_OFF
		' Master Clear Options (Internal)
	@ DEVICE pic12F675, BOD_ON
		' Brown-Out Detect
	@ DEVICE pic12F675, CPD_OFF
		' Data Memory Code Protect
	@ DEVICE pic12F675, PROTECT_OFF
		' Program Code Protection

	'
	'	Define Hardware
	'	---------------
	InputTrigger var GPIO.0		' Input normally LOW, goes HIGH to Trigger
	InputReset var GPIO.1		' Input normally LOW, goes HIGH to RESET
	OutputLine var GPIO.2		' Normally LOW, goes HIGH when triggered

	'
	'	Define Variables
	'	----------------
	DelayTick var Byte		' 100mS Tick Counter

	'
	'	Initialise PIC
	'	--------------
Reset:
	TRISIO=%00000011		' Preset I/O
	CMCON=%00000111 		' Disable Comparators
	ANSEL=%00000000 		' Disable ADC
	DelayTick=0			' Reset Counter
	Low OutputLine			' Everything RESET

	'
	'	Main Program Loop
	'	-----------------
Loop:
		'
		'	Test for RESET
		'	--------------
	While InputReset=1		' Just wait here if RESET
		DelayTick=0		' Reset Counter
		Low OutputLine		' Reset Output
		Wend
		'
		'	Test for Trigger
		'	----------------
	If InputTrigger=1 then		' Test for Trigger
		High OutputLine		' Enable Output
		DelayTick=1		' Arm Counter
		Goto Loop
		endif
		'
		'	Timeout Counter
		'	---------------
	If DelayTick>0 then
		DelayTick=DelayTick+1	' Count Time
		Pause 100		' Waste 100mS
		If DelayTick>201 then goto Reset
					' Reset at 20 Seconds
		endif
	Goto Loop

	'
	End