rem: SetSemaphore (&GraphicsSem);
add: SetSemaphore (GraphicsSem);
context: DoNaming (INPUT_STATE InputState, PMENU_STATE pMS){	if (GLOBAL (CurrentActivity) & CHECK_ABORT)		return (FALSE);		if (!pMS->Initialized)	{		GAME_DESC GD[1];		pMS->Initialized = 1;		pMS->InputFunc = DoNaming;		GD[0][0] = '\0';		pMS->delta_item = pMS->CurState;		pMS->first_item.x = pMS->first_item.y = 0;		pMS->CurState = 0;		pMS->CurString = (STRING)&GD[0];		DrawDescriptionString (pMS, pMS->CurState, 1);		SetSemaphore (&GraphicsSem);		DrawStatusMessage (GAME_STRING (NAMING_STRING_BASE + 0));		ClearSemaphore (&GraphicsSem);		DoInput (pMS);		pMS->InputFunc = DoSettings;		pMS->CurState = (BYTE)pMS->delta_item;		pMS->delta_item = 0;		if (!(GLOBAL (CurrentActivity) & CHECK_ABORT))			FeedbackSetting (pMS->CurState);	}	else	{		UWORD ch;		if (pMS->Initialized == 1 && SerialInput)		{			FlushInput ();			pMS->Initialized = 2;			return (TRUE);		}		ch = DoTextEntry (pMS, InputState);		if (ch == '\n' || ch == 0x1B)		{			if (ch == '\n')			{				if (pMS->delta_item == CHANGE_CAPTAIN_SETTING)					wstrcpy (GLOBAL_SIS (CommanderName),							(const UNICODE *)((GAME_DESC *)pMS->CurString)[0]);				else					wstrcpy (GLOBAL_SIS (ShipName),							(const UNICODE *)((GAME_DESC *)pMS->CurString)[0]);			}			else			{				if (pMS->delta_item == CHANGE_CAPTAIN_SETTING)					wstrcpy ((UNICODE *)((GAME_DESC *)pMS->CurString)[0],							GLOBAL_SIS (CommanderName));				else					wstrcpy ((UNICODE *)((GAME_DESC *)pMS->CurString)[0],							GLOBAL_SIS (ShipName));			}			DrawDescriptionString (pMS, pMS->CurState, 0);			return (FALSE);		}	}	return (TRUE);}