rem: CONTEXT OldContext;
context: do_subtitles (UNICODE *pStr){	static UNICODE *last_page = NULL;	if (pStr == 0)		return (subtitle_state = DONE_SUBTITLE);	else if (pStr == (void *)~0)	{		subtitle_state = WAIT_SUBTITLE;	}	else	{		if (last_page == pStr)			return (subtitle_state);		subtitle_state = READ_SUBTITLE;		ClearSubtitle = TRUE;//		fprintf (stderr, "changed page to: %d\n", cur_page);	}	last_page = pStr;	switch (subtitle_state)	{		case READ_SUBTITLE:		{			TEXT t;			CONTEXT OldContext;						if (optSubtitles)			{				CommData.AlienTextTemplate.pStr = pStr;			}			else			{				CommData.AlienTextTemplate.pStr = "";			}			t = CommData.AlienTextTemplate;			OldContext = SetContext (TaskContext);			add_text (1, &t);			SetContext (OldContext);			CommData.AlienTextTemplate.CharCount = t.pStr - CommData.AlienTextTemplate.pStr;			subtitle_state = WAIT_SUBTITLE;			break;		}		case WAIT_SUBTITLE:		{			subtitle_state = DONE_SUBTITLE;			ClearSubtitle = TRUE;		}		case DONE_SUBTITLE:			break;	}	return (subtitle_state);}