home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
500-599
/
ff589.lza
/
Term
/
TermSrc.lha
/
termData.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-12-01
|
16KB
|
654 lines
/* $Revision Header * Header built automatically - do not edit! *************
*
* (C) Copyright 1991 by Olaf 'Olsen' Barthel & MXM
*
* Name .....: TermData.c
* Created ..: Monday 21-Jan-91 20:12
* Revision .: 0
*
* Date Author Comment
* ========= ======== ====================
* 21-Jan-91 Olsen Created this file!
*
* $Revision Header ********************************************************/
#include "TermGlobal.h"
/* Libraries. */
struct ExecBase *SysBase;
struct DosLibrary *DOSBase;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct Library *GadToolsBase;
struct Library *DiskfontBase;
struct Library *UtilityBase;
struct Device *TimerBase;
struct Library *AslBase;
struct RxsLib *RexxSysBase;
struct Library *IFFParseBase;
struct Library *CxBase;
struct Library *LayersBase;
struct Library *IconBase;
struct Library *WorkbenchBase;
struct Library *KeymapBase;
/* Timer device. */
struct timerequest *TimeRequest;
/* Console device. */
struct IOStdReq *ConsoleRequest;
struct Device *ConsoleDevice;
/* Screen & Windows. */
struct Screen *Screen;
struct Window *Window;
struct Window *StatusWindow;
APTR OldWindowPtr;
/* Graphics rendering. */
struct ViewPort *VPort;
struct RastPort *RPort;
struct TextFont *Topaz,
*IBM,
*GFX,
*CurrentFont;
APTR VisualInfo;
UWORD ANSIPens[NUMDRIPENS + 1] =
{
0,4,4,7,4,6,4,0,7,~0
};
UWORD EGAPens[NUMDRIPENS + 1] =
{
0,8,8,15,8,7,8,0,15,~0
};
UWORD AtomicColours[16] =
{
0x000,
0xDDD,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000,
0x000
};
UWORD EGAColours[16] =
{
0x000, /* Black. */
0xA00, /* Dark red. */
0x0A0, /* Dark green. */
0xA60, /* Dark yellow (orange). */
0x00A, /* Dark blue. */
0xA0A, /* Dark magenta.*/
0x0AA, /* Dark cyan. */
0xBBB, /* Light grey. */
0x666, /* Dark grey. */
0xF00, /* Red. */
0x0F0, /* Green. */
0xFF0, /* Yellow. */
0x00F, /* Blue. */
0xF0F, /* Magenta. */
0x0FF, /* Cyan. */
0xFFF /* White. */
};
UWORD ANSIColours[16] =
{
0x000, /* Black. */
0xF00, /* Red. */
0x0F0, /* Green. */
0xFF0, /* Yellow. */
0x00F, /* Blue. */
0xF0F, /* Magenta. */
0x0FF, /* Cyan. */
0xFFF, /* White. */
0x000, /* Black. */
0xF00, /* Red. */
0x0F0, /* Green. */
0xFF0, /* Yellow. */
0x00F, /* Blue. */
0xF0F, /* Magenta. */
0x0FF, /* Cyan. */
0xFFF /* White. */
};
UWORD DefaultColours[16],BlinkColours[16],StandardColours[16];
/* DOS data. */
struct Process *ThisProcess;
struct Task *StatusTask;
struct Process *BufferProcess;
struct Process *RexxProcess;
struct MsgPort *TermRexxPort;
struct WBStartup *WBenchMsg;
struct TermPort *TermPort;
BPTR RemoteCurrentDir;
/* Character conversion. */
struct InputEvent *FakeInputEvent;
/* Serial I/O. */
struct IOExtSer *ReadRequest;
struct IOExtSer *WriteRequest;
struct MsgPort *ReadPort;
APTR ReadBuffer;
/* Hotkeys. */
struct Hotkeys Hotkeys;
struct NewBroker NewTermBroker =
{
NB_VERSION,
"term",
"term © 1990,91 by MXM",
"Terminal program",
0,0,0,NULL,0
};
/* Static default fonts. */
struct TextAttr DefaultFont =
{
(UBYTE *)"topaz.font",
8,
FS_NORMAL,
FPF_ROMFONT
};
struct TextAttr IBMFont =
{
(UBYTE *)"IBM.font",
8,
FS_NORMAL,
FPF_DISKFONT
};
struct TextAttr GFXFont =
{
(UBYTE *)"GFX.font",
8,
FS_NORMAL,
FPF_DISKFONT
};
/* Audio data. */
UBYTE AnyChannel[4] =
{
LEFT0F,
LEFT1F,
RIGHT0F,
RIGHT1F,
};
UBYTE __chip SineWave[8] =
{
90,
127,
90,
0,
-90,
-127,
-90,
0
};
struct IOAudio *AudioBlock;
/* Character lookup tables. */
BYTE ValidTab[256] =
{
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,
0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
/* IBM <-> Amiga/DEC font conversion. */
UBYTE IBMConversion[256] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,
0x00,0x11,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xAD,0x9B,0x9C,0x00,0x9D,0x00,0x15,0x00,0x00,0xA6,0x00,0x00,0x00,0xAE,0x00,
0xF8,0xF1,0xFD,0x00,0x00,0xE6,0x14,0xF9,0x00,0x00,0xA7,0xAF,0xAC,0xAB,0x00,0xA8,
0x00,0x00,0x00,0x00,0x8E,0x8F,0x92,0x80,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xA5,0x00,0x00,0x00,0x00,0x99,0x00,0x00,0x00,0x00,0x00,0x9A,0x00,0x00,0xE1,
0x85,0xA0,0x83,0x00,0x84,0x86,0x91,0x87,0x8A,0x82,0x88,0x89,0x8D,0xA1,0x8C,0x00,
0x00,0xA4,0x95,0xA2,0x93,0x00,0x94,0x00,0x00,0x97,0xA3,0x96,0x81,0x00,0x00,0x98
};
/* Special character treatment. */
struct SpecialKey SpecialKeys[SPECIALKEYS] =
{
BEL, DoSomeBeep, /* Ring the bell. */
XON, XOn, /* Flow control - stop output. */
BKS, DoBackspace, /* Erase a character. */
ENT, DoLF_FF_VT, /* Enter key. */
FFD, DoFF, /* Form feed. */
VTB, DoLF_FF_VT, /* Vertical tab (huh?). */
RET, DoCR, /* Return key. */
TAB, DoTab, /* Move to next tab stop. */
'\16', DoShiftIn, /* ^N Change to graphics mode */
'\17', DoShiftOut, /* ^O Change out of graphics mode. */
'\30', DoCancel, /* Cancel ESC sequence. */
'\32', DoCancel /* Cancel ESC sequence. */
};
UBYTE SpecialMap[256];
/* Shared global string formatting buffer. */
UBYTE SharedBuffer[512];
/* Screen pull-down-menu. */
struct NewMenu TermMenu[] =
{
{ NM_TITLE, "Project", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Open Preferences...", "O", 0, 0, (APTR)MEN_OPEN},
{ NM_ITEM, "Save Preferences", 0 , 0, 0, (APTR)MEN_SAVE},
{ NM_ITEM, "Save Preferences As...", "S", 0, 0, (APTR)MEN_SAVEAS},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Print Screen", "P", 0, 0, (APTR)MEN_PRINTSCREEN},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Iconify", "I", 0, 0, (APTR)MEN_ICONIFY},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "About...", "?", 0, 0, (APTR)MEN_ABOUT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Quit...", "Q", 0, 0, (APTR)MEN_QUIT},
{ NM_TITLE, "Utilities", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Set Console Window...", "W", 0, 0, (APTR)MEN_SETCONSOLE},
{ NM_ITEM, "Execute AmigaDOS Command...", "A", 0, 0, (APTR)MEN_DOSCOMMAND},
{ NM_ITEM, "Execute ARexx Command...", "R", 0, 0, (APTR)MEN_REXXCOMMAND},
{ NM_ITEM, "Edit File...", ".", 0, 0, (APTR)MEN_EDIT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Paste Clipboard Contents", "V", 0, 0, (APTR)MEN_PASTE},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Packet Window...", "-", 0, 0, (APTR)MEN_PACKET},
{ NM_TITLE, "Capture & Buffer", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Clear Buffer", "K", 0, 0, (APTR)MEN_CLEARBUFFER},
{ NM_ITEM, "Display Buffer...", "B", 0, 0, (APTR)MEN_DISPLAYBUFFER},
{ NM_ITEM, "Close Buffer", "J", 0, 0, (APTR)MEN_CLOSEBUFFER},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Load Buffer...", "(", 0, 0, (APTR)MEN_LOADBUFFER},
{ NM_ITEM, "Save Buffer...", ")", 0, 0, (APTR)MEN_SAVEBUFFER},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Capture To Disk...", "[", CHECKIT|MENUTOGGLE, 0, (APTR)MEN_CAPTUREDISK},
{ NM_ITEM, "Capture To Printer", "]", CHECKIT|MENUTOGGLE, 0, (APTR)MEN_CAPTUREPRINTER},
{ NM_TITLE, "Transfer", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Upload Text...", "T", 0, 0, (APTR)MEN_UPLOADTEXT},
{ NM_ITEM, "Download Text...", "G", 0, 0, (APTR)MEN_DOWNLOADTEXT},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Upload ASCII...", ">", 0, 0, (APTR)MEN_SEND},
{ NM_ITEM, "Download ASCII...", "<", 0, 0, (APTR)MEN_RECEIVE},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Upload Files(s)...", "U", 0, 0, (APTR)MEN_UPLOAD},
{ NM_ITEM, "Download File(s)...", "D", 0, 0, (APTR)MEN_DOWNLOAD},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Transfer Options...", "7", 0, 0, (APTR)MEN_XFERPROTOCOL},
{ NM_ITEM, "Select Transfer Protocol...", "8", 0, 0, (APTR)MEN_SELECTXFER},
{ NM_TITLE, "Modem", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Phonebook...", "F", 0, 0, (APTR)MEN_PHONEBOOK},
{ NM_ITEM, "Dial...", "L", 0, 0, (APTR)MEN_DIAL},
{ NM_ITEM, "Redial...", "E", 0, 0, (APTR)MEN_REDIAL},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Play Number...", ":", 0, 0, (APTR)MEN_PLAY},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Send Break", "X", 0, 0, (APTR)MEN_SENDBREAK},
{ NM_ITEM, "Hang Up", "H", 0, 0, (APTR)MEN_HANGUP},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Release Serial Device...", "Z", 0, 0, (APTR)MEN_RELEASE},
{ NM_TITLE, "Display", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Reset Styles", "Y", 0, 0, (APTR)MEN_RESETSTYLES},
{ NM_ITEM, "Clear Screen", "C", 0, 0, (APTR)MEN_CLEARSCREEN},
{ NM_ITEM, "Reset Terminal", "\\", 0, 0, (APTR)MEN_RESETTERMINAL},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Save Screen (IFF-ILBM)...", 0 , 0, 0, (APTR)MEN_SAVEILBM},
{ NM_ITEM, "Save Screen (ASCII)...", 0 , 0, 0, (APTR)MEN_SAVEASCII},
{ NM_TITLE, "Preferences", 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Serial...", "1", 0, 0, (APTR)MEN_SERIAL},
{ NM_ITEM, "Modem...", "2", 0, 0, (APTR)MEN_MODEM},
{ NM_ITEM, "Screen...", "3", 0, 0, (APTR)MEN_SCREEN},
{ NM_ITEM, "Terminal...", "4", 0, 0, (APTR)MEN_TERMINAL},
{ NM_ITEM, "Startup...", "5", 0, 0, (APTR)MEN_STARTUP},
{ NM_ITEM, "Paths...", "6", 0, 0, (APTR)MEN_PATH},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Keyboard Macros...", "M", 0, 0, (APTR)MEN_MACROS},
{ NM_ITEM, "Fast! Macros...", "!", 0, 0, (APTR)MEN_FASTMACROS},
{ NM_ITEM, "Hotkeys...", "+", 0, 0, (APTR)MEN_HOTKEYS},
{ NM_ITEM, "Speech...", "*", 0, 0, (APTR)MEN_SPEECH},
{ NM_ITEM, NM_BARLABEL, 0 , 0, 0, (APTR)0},
{ NM_ITEM, "Emulation...", "9", 0, 0, (APTR)MEN_EMULATION},
{ NM_END, 0, 0 , 0, 0, (APTR)0},
};
struct Menu *Menu;
/* Pointer. */
UWORD __chip Stopwatch[(2 + 16) * 2] =
{
0x0000,0x0000,
0x0400,0x07C0,
0x0000,0x07C0,
0x0100,0x0380,
0x0000,0x07E0,
0x07C0,0x1FF8,
0x1FF0,0x3FEC,
0x3FF8,0x7FDE,
0x3FF8,0x7FBE,
0x7FFC,0xFF7F,
0x7EFC,0xFFFF,
0x7FFC,0xFFFF,
0x3FF8,0x7FFE,
0x3FF8,0x7FFE,
0x1FF0,0x3FFC,
0x07C0,0x1FF8,
0x0000,0x07E0,
0x0000,0x0000
};
/* Configuration. */
struct Configuration Config;
struct Configuration PrivateConfig;
struct SpeechConfig SpeechConfig;
BYTE Status;
BYTE Online;
UWORD PublicModes;
UBYTE LastConfig[256];
UBYTE DefaultPubScreen[MAXPUBSCREENNAME];
/* These are the sixteen more or less different display modes the
* term main and buffer display screens will be opened in.
*/
ULONG ModeID[16] =
{
DEFAULT_MONITOR_ID|HIRES_KEY,
DEFAULT_MONITOR_ID|HIRESLACE_KEY,
DEFAULT_MONITOR_ID|SUPER_KEY,
DEFAULT_MONITOR_ID|SUPERLACE_KEY,
DEFAULT_MONITOR_ID|VGAPRODUCT_KEY,
DEFAULT_MONITOR_ID|VGAPRODUCTLACE_KEY,
PAL_MONITOR_ID|HIRES_KEY,
PAL_MONITOR_ID|HIRESLACE_KEY,
PAL_MONITOR_ID|SUPER_KEY,
PAL_MONITOR_ID|SUPERLACE_KEY,
NTSC_MONITOR_ID|HIRES_KEY,
NTSC_MONITOR_ID|HIRESLACE_KEY,
NTSC_MONITOR_ID|SUPER_KEY,
NTSC_MONITOR_ID|SUPERLACE_KEY,
A2024TENHERTZ_KEY,
A2024FIFTEENHERTZ_KEY
};
/* Capture file. */
struct Buffer *FileCapture;
BPTR PrinterCapture;
UBYTE CaptureName[256];
/* Buffer. */
UBYTE **BufferLines;
LONG Lines;
struct SignalSemaphore *BufferSemaphore;
LONG MaxLines = 100;
LONG BufferSpace;
BYTE BufferClosed = FALSE;
/* Phonebook. */
struct PhoneEntry **Phonebook;
LONG PhoneSize;
LONG NumPhoneEntries;
UBYTE LastPhone[256];
UBYTE LastKeys[256];
UBYTE LastMacros[256];
UBYTE LastSpeech[256];
struct MacroKeys *MacroKeys;
/* Console stuff. */
UWORD LastLine,LastColumn;
BYTE Charset,Attributes,FgPen,BgPen;
WORD CursorX,CursorY,Top,Bottom;
BYTE UseRegion,RegionSet,InSequence,Quiet;
BYTE TabStops[1024];
struct CursorData CursorBackup;
BYTE ResetDisplay = FALSE,Escape = FALSE;
/* Flow filter. */
UBYTE *AttentionBuffers[7],AttentionCount[7],FlowCount;
BYTE BaudPending,FullCheck;
UBYTE BaudBuffer[20],BaudCount;
struct FlowInfo FlowInfo;
/* Transfer data. */
LONG FileCount,FileCountMax;
struct WBArg *FileArg;
BYTE MultipleFiles,FileMatch,BinaryTransfer;
struct AnchorPath *FileAnchor;
LONG TransferBits;
UBYTE *DownloadPath;
BYTE Uploading;
struct Window *TransferWindow;
struct Menu *TransferMenu;
struct Gadget *TransferGadgetArray[5];
struct Library *XProtocolBase;
struct XPR_IO *XprIO;
UBYTE ProtocolOptsBuffer[256];
BYTE NewLibrary,NewOptions;
UBYTE LastXprLibrary[60];
BYTE UsesZModem;
/* Pay per minute. */
LONG CurrentPay;
LONG PayPerUnit[2];
LONG SecPerUnit[2];
LONG TimeOfDay[2];
WORD PreferredTime;
UBYTE Password[40];
/* Execute a command/script. */
UBYTE WindowName[256];
/* Rexx server info. */
BYTE WeAreBlocking;
/* "Sub" Dial panel. */
struct List *SubList;
LONG SubItemNum;
struct Window *SubWindow;
LONG SubListNum;
BYTE SendStartup;
/* TermMain data. */
BYTE ReleaseSerial;
BYTE ResetSerial;
BYTE BatchMode;
/* Upload/Download paths. */
UBYTE LastDownload[256];
UBYTE LastUpload[256];
/* String gadgets hooks. */
struct Hook CommandHook;
BYTE DontActivate;
struct Window *CommandWindow;
struct Gadget *CommandGadget;
struct Gadget *ActiveGadget;
struct Process *ClipProcess;
struct MsgPort *ClipPort;
/* Packet window. */
struct Window *PacketWindow;
struct Gadget *PacketGadgetArray[1];
struct Menu *PacketMenu;
struct Gadget *PacketGadgetList;
struct List PacketHistoryList;
/* Some more colour control flags. */
BYTE Initializing,LoadColours;
/* The character raster. */
UBYTE *Raster,*RasterAttr;
WORD RasterWidth,RasterHeight;
/* File download tracking. */
struct SignalSemaphore *DownloadSemaphore;
struct List DownloadList;
LONG DownloadLineCount;
struct Node *DownloadNode;
/* Rexx scanning sequences. */
struct List SequenceList;
LONG SequenceCount;
/* File version test. */
ULONG VersionProps[2] =
{
'TERM',
'VERS'
};
/* Cause a rexx command to terminate without waiting. */
BYTE ExitQuietly;
/* The ARexx output window. */
struct Window *RexxWindow;
/* Window stack. */
struct Window *TopWindow;
struct Window *WindowStack[5];
WORD WindowStackPtr;
/* Global term ID. */
LONG TermID;
UBYTE TermIDString[40];
/* Fast! macros. */
struct List FastMacroList;
LONG FastMacroCount;
UBYTE LastFastMacros[256];
struct Window *FastWindow;
struct Gadget *FastGadget;
/* Double-buffered file locking. */
struct List DoubleBufferList;
struct SignalSemaphore DoubleBufferSemaphore;
/* XEM interface. */
struct confuncs *Console;
ULONG ExtSigs;
UBYTE *OptionTitle;
BYTE NewEmulatorPlease;
BYTE EmulationSetupError;
UBYTE *EmulationErrorStrings[8] =
{
"Failed to load emulation module",
"Failed to create handshake port",
"Failed to create emulation process",
"Emulation module did not respond to handshake",
"Emulation module does not match current interface revision",
"Emulation module failed initialization",
"Failed to allocate emulation resources",
"Failed to create window console"
};