#include typedef struct _message { unsigned int id; char *str; } MESSAGE; MESSAGE __MSGTAB[] = { {1001, "%s : option name ambiguous"}, // "%s : option name ambiguous" {1003, "/Q and /EXEPACK incompatible"}, // "/Q and /EXEPACK incompatible" {1004, "%s : invalid numeric value"}, // "%s : invalid numeric value" {1005, "%s : packing limit exceeds 64K"}, // "%s : packing limit exceeds 64K" {1006, "%s : stack size exceeds 64K-2"}, // "%s : stack size exceeds 64K-2" {1007, "%s : interrupt number exceeds 255"}, // "%s : interrupt number exceeds 255" {1008, "%s : segment limit set too high"}, // "%s : segment limit set too high" {1009, "%s : /CPARM : illegal value"}, // "%s : /CPARM : illegal value" {1020, "no object files specified"}, // "no object files specified" {1021, "cannot nest response files"}, // "cannot nest response files" {1022, "response line too long"}, // "response line too long" {1023, "terminated by user"}, // "terminated by user" {1024, "nested right parentheses"}, // "nested right parentheses" {1025, "nested left parentheses"}, // "nested left parentheses" {1026, "unmatched right parenthesis"}, // "unmatched right parenthesis" {1027, "unmatched left parenthesis"}, // "unmatched left parenthesis" {1030, "missing internal name"}, // "missing internal name" {1031, "module description redefined"}, // "module description redefined" {1032, "module name redefined"}, // "module name redefined" {1033, "input line too long; %d characters allowed"}, // "input line too long; %d characters allowed" {1034, "name truncated to '%s'"}, // "name truncated to '%s'" {1035, "%s in module-definition file"}, // "%s in module-definition file" {1040, "too many exported entries"}, // "too many exported entries" {1041, "resident names table overflow"}, // "resident names table overflow" {1042, "nonresident names table overflow"}, // "nonresident names table overflow" {1043, "relocation table overflow"}, // "relocation table overflow" {1044, "imported names table overflow"}, // "imported names table overflow" {1045, "too many TYPDEF records"}, // "too many TYPDEF records" {1046, "too many external symbols in one module"}, // "too many external symbols in one module" {1047, "too many group, segment, and class names in one module"}, // "too many group, segment, and class names in one module" {1048, "too many segments in one module"}, // "too many segments in one module" {1049, "too many segments"}, // "too many segments" {1050, "too many groups in one module"}, // "too many groups in one module" {1051, "too many groups"}, // "too many groups" {1052, "too many libraries"}, // "too many libraries" {1053, "out of memory for symbol table"}, // "out of memory for symbol table" {1054, "requested segment limit too high"}, // "requested segment limit too high" {1056, "too many overlays"}, // "too many overlays" {1057, "data record too large"}, // "data record too large" {1063, "out of memory for debugging information"}, // "out of memory for debugging information" {1064, "out of memory"}, // "out of memory" {1065, "too many interoverlay calls\r\nuse /DYNAMIC:; current limit is %d"}, // "too many interoverlay calls\r\nuse /DYNAMIC:; current limit is %d" {1066, "size of %d overlay exceeds 64K"}, // "size of %d overlay exceeds 64K" {1067, "system memory allocation error; reboot and relink"}, // "system memory allocation error; reboot and relink" {1070, "%s : segment size exceeds 64K"}, // "%s : segment size exceeds 64K" {1071, "segment _TEXT exceeds 64K-16"}, // "segment _TEXT exceeds 64K-16" {1072, "common area longer than 65536 bytes"}, // "common area longer than 65536 bytes" {1073, "file-segment limit exceeded"}, // "file-segment limit exceeded" {1074, "%s : group larger than 64K bytes"}, // "%s : group larger than 64K bytes" {1075, "entry table exceeds 64K-1"}, // "entry table exceeds 64K-1" {1076, "%s : segment size exceeds %dMB"}, // "%s : segment size exceeds %dMB" {1077, "common area longer than 4GB-1"}, // "common area longer than 4GB-1" {1078, "file-segment alignment too small"}, // "file-segment alignment too small" {1080, "cannot open list file"}, // "cannot open list file" {1081, "cannot write to the executable file - %s"}, // "cannot write to the executable file - %s" {1082, "%s : stub file not found"}, // "%s : stub file not found" {1083, "%s : cannot open run file - %s"}, // "%s : cannot open run file - %s" {1084, "cannot create temporary file"}, // "cannot create temporary file" {1085, "cannot open temporary file - %s"}, // "cannot open temporary file - %s" {1086, "temporary file missing"}, // "temporary file missing" {1087, "unexpected end-of-file on temporary file"}, // "unexpected end-of-file on temporary file" {1088, "out of space for list file"}, // "out of space for list file" {1089, "%s : cannot open response file"}, // "%s : cannot open response file" {1090, "cannot reopen list file"}, // "cannot reopen list file" {1091, "unexpected end-of-file on library"}, // "unexpected end-of-file on library" {1092, "cannot open module-definition file - %s"}, // "cannot open module-definition file - %s" {1093, "%s : object file not found"}, // "%s : object file not found" {1094, "%s : cannot open file for writing"}, // "%s : cannot open file for writing" {1095, "%s : out of space for file"}, // "%s : out of space for file" {1096, "unexpected end-of-file in response file"}, // "unexpected end-of-file in response file" {1097, "I/O error - %s"}, // "I/O error - %s" {1098, "cannot open include file '%s' - %s"}, // "cannot open include file '%s' - %s" {1100, "stub .EXE file invalid"}, // "stub .EXE file invalid" {1101, "invalid object module"}, // "invalid object module" {1102, "unexpected end-of-file"}, // "unexpected end-of-file" {1103, "%s : attempt to access data outside segment bounds"}, // "%s : attempt to access data outside segment bounds" {1104, "%s : not valid library"}, // "%s : not valid library" {1105, "invalid object due to interrupted incremental compile"}, // "invalid object due to interrupted incremental compile" {1106, "unknown COMDAT allocation type for %s; record ignored"}, // "unknown COMDAT allocation type for %s; record ignored" {1107, "unknown COMDAT selection type for %s; record ignored"}, // "unknown COMDAT selection type for %s; record ignored" {1108, "invalid format of debugging information"}, // "invalid format of debugging information" {1109, "%s : library path too long"}, // "%s : library path too long" {1113, "unresolved COMDEF; internal error"}, // "unresolved COMDEF; internal error" {1114, "unresolved COMDAT %s; internal error"}, // "unresolved COMDAT %s; internal error" {1115, "%s: option incompatible with overlays"}, // "%s: option incompatible with overlays" {1117, "unallocated COMDAT %s; internal error"}, // "unallocated COMDAT %s; internal error" {1123, "%s : segment defined both 16- and 32-bit"}, // "%s : segment defined both 16- and 32-bit" {1126, "conflicting pwords value"}, // "conflicting pwords value" {1127, "far segment references not allowed with /TINY"}, // "far segment references not allowed with /TINY" {1128, "too many nested include files in module-definition file"}, // "too many nested include files in module-definition file" {1129, "missing or invalid include file name"}, // "missing or invalid include file name" {2000, "imported starting address"}, // "imported starting address" {2002, "fixup overflow at %lX in segment %s"}, // "fixup overflow at %lX in segment %s" {2003, "near reference to far target at %lX in segment %s"}, // "near reference to far target at %lX in segment %s" {2005, "fixup type unsupported at %lX in segment %s"}, // "fixup type unsupported at %lX in segment %s" {2010, "too many fixups in LIDATA record"}, // "too many fixups in LIDATA record" {2011, "%s : NEAR/HUGE conflict"}, // "%s : NEAR/HUGE conflict" {2012, "%s : array-element size mismatch"}, // "%s : array-element size mismatch" {2013, "LIDATA record too large"}, // "LIDATA record too large" {2022, "%s%s: export undefined"}, // "%s%s: export undefined" {2023, "%s (alias %s) : export imported"}, // "%s (alias %s) : export imported" {2024, "%s : special symbol already defined"}, // "%s : special symbol already defined" {2025, "%s : symbol defined more than once"}, // "%s : symbol defined more than once" {2026, "entry ordinal %u, name %s : multiple definitions for same ordinal"}, // "entry ordinal %u, name %s : multiple definitions for same ordinal" {2027, "%s : ordinal too large for export"}, // "%s : ordinal too large for export" {2028, "automatic data segment plus heap exceed 64K"}, // "automatic data segment plus heap exceed 64K" {2029, "'%s' : unresolved external\r\n"}, // "'%s' : unresolved external\r\n" {2030, "starting address not code (use class 'CODE')"}, // "starting address not code (use class 'CODE')" {2041, "stack plus data exceed 64K"}, // "stack plus data exceed 64K" {2043, "Quick library support module missing"}, // "Quick library support module missing" {2044, "%s : symbol multiply defined, use /NOE"}, // "%s : symbol multiply defined, use /NOE" {2045, "%s : segment with > 1 class name not allowed with /INCR"}, // "%s : segment with > 1 class name not allowed with /INCR" {2046, "share attribute conflict - segment %s in group %s"}, // "share attribute conflict - segment %s in group %s" {2047, "IOPL attribute conflict - segment %s in group %s"}, // "IOPL attribute conflict - segment %s in group %s" {2048, "Microsoft Overlay Manager module not found"}, // "Microsoft Overlay Manager module not found" {2049, "Microsoft DOS Extender module not found"}, // "Microsoft DOS Extender module not found" {2050, "USE16/USE32 attribute conflict - segment %s in group %s"}, // "USE16/USE32 attribute conflict - segment %s in group %s" {2052, "'%s' : unresolved external - possible calling convention mismatch\r\n"}, // "'%s' : unresolved external - possible calling convention mismatch\r\n" {2057, "duplicate of %s with different size found; record ignored"}, // "duplicate of %s with different size found; record ignored" {2058, "different duplicate of %s found; record ignored"}, // "different duplicate of %s found; record ignored" {2059, "size of data block associated with %s exceeds 4GB"}, // "size of data block associated with %s exceeds 4GB" {2060, "size of data block associated with %s (16-bit segment) exceeds 64K"}, // "size of data block associated with %s (16-bit segment) exceeds 64K" {2061, "no space for data block associated with %s inside %s segment"}, // "no space for data block associated with %s inside %s segment" {2062, "continuation of COMDAT %s has conflicting attributes; record ignored"}, // "continuation of COMDAT %s has conflicting attributes; record ignored" {2063, "%s allocated in undefined segment"}, // "%s allocated in undefined segment" {2064, "starting address not in the root overlay"}, // "starting address not in the root overlay" {2066, "static initialization of overlaid data not allowed"}, // "static initialization of overlaid data not allowed" {4000, "segment displacement included near %04lX in segment %s"}, // "segment displacement included near %04lX in segment %s" {4001, "frame-relative fixup, frame ignored near %04lX in segment %s"}, // "frame-relative fixup, frame ignored near %04lX in segment %s" {4002, "frame-relative absolute fixup near %04lX in segment %s"}, // "frame-relative absolute fixup near %04lX in segment %s" {4003, "intersegment self-relative fixup at %04lX in segment %s"}, // "intersegment self-relative fixup at %04lX in segment %s" {4004, "possible fixup overflow at %lX in segment %s"}, // "possible fixup overflow at %lX in segment %s" {4010, "invalid alignment specification"}, // "invalid alignment specification" {4011, "/PACKC value exceeding 64K-36 unreliable"}, // "/PACKC value exceeding 64K-36 unreliable" {4012, "/HIGH disables /EXEPACK"}, // "/HIGH disables /EXEPACK" {4013, "%s : option ignored for segmented-executable file"}, // "%s : option ignored for segmented-executable file" {4014, "%s : option ignored for MS-DOS executable file"}, // "%s : option ignored for MS-DOS executable file" {4015, "/CO disables /DSALLOC"}, // "/CO disables /DSALLOC" {4016, "/CO disables /EXEPACK"}, // "/CO disables /EXEPACK" {4017, "/%s : unrecognized option name; option ignored"}, // "/%s : unrecognized option name; option ignored" {4018, "missing or unrecognized application type; option %s ignored"}, // "missing or unrecognized application type; option %s ignored" {4019, "/TINY disables /INCR"}, // "/TINY disables /INCR" {4087, "/DYNAMIC disables /EXEPACK"}, // "/DYNAMIC disables /EXEPACK" {4020, "%s : code-segment size exceeds 64K-36"}, // "%s : code-segment size exceeds 64K-36" {4021, "no stack segment"}, // "no stack segment" {4022, "%s, %s : groups overlap"}, // "%s, %s : groups overlap" {4023, "%s(%s) : export internal name conflict"}, // "%s(%s) : export internal name conflict" {4024, "%s : multiple definitions for export name"}, // "%s : multiple definitions for export name" {4025, "%s.%s(%s) : import internal name conflict"}, // "%s.%s(%s) : import internal name conflict" {4026, "%s.%s(%s) : self-imported"}, // "%s.%s(%s) : self-imported" {4027, "%s : multiple definitions for import internal name"}, // "%s : multiple definitions for import internal name" {4028, "%s : segment already defined"}, // "%s : segment already defined" {4029, "%s : DGROUP segment converted to type data"}, // "%s : DGROUP segment converted to type data" {4030, "%s : segment attributes changed to conform with\r\n automatic data segment"}, // "%s : segment attributes changed to conform with\r\n automatic data segment" {4031, "%s : segment declared in more than one group"}, // "%s : segment declared in more than one group" {4032, "%s : code-group size exceeds 64K-36"}, // "%s : code-group size exceeds 64K-36" {4033, "first segment in mixed group %s is a USE32 segment"}, // "first segment in mixed group %s is a USE32 segment" {4034, "more than %d overlay segments; extra put in root"}, // "more than %d overlay segments; extra put in root" {4036, "no automatic data segment"}, // "no automatic data segment" {4038, "program has no starting address"}, // "program has no starting address" {4040, "stack size ignored for /TINY"}, // "stack size ignored for /TINY" {4050, "file not suitable for /EXEPACK; relink without"}, // "file not suitable for /EXEPACK; relink without" {4055, "start address not equal to 0x100 for /TINY"}, // "start address not equal to 0x100 for /TINY" {4056, "/EXEPACK valid only for real-mode MS-DOS programs; ignored"}, // "/EXEPACK valid only for real-mode MS-DOS programs; ignored" {4057, "stack specified for DLL; ignored"}, // "stack specified for DLL; ignored" {4058, "ignoring alias for already defined symbol '%s'"}, // "ignoring alias for already defined symbol '%s'" {4059, "far reference to overlaid segment %s changed to %s"}, // "far reference to overlaid segment %s changed to %s" {4089, "both /STACK and STACKSIZE used; assuming %d"}, // "both /STACK and STACKSIZE used; assuming %d" {4042, "cannot open old version"}, // "cannot open old version" {4043, "old version not segmented executable format"}, // "old version not segmented executable format" {4045, "name of output file is '%s'"}, // "name of output file is '%s'" {4051, "%s : cannot find library"}, // "%s : cannot find library" {4053, "VM.TMP : illegal file name; ignored"}, // "VM.TMP : illegal file name; ignored" {4054, "%s : cannot find file"}, // "%s : cannot find file" {4067, "changing default resolution for weak external '%s'\r\n from '%s' to '%s'"}, // "changing default resolution for weak external '%s'\r\n from '%s' to '%s'" {4068, "ignoring stack size greater than 64K"}, // "ignoring stack size greater than 64K" {4069, "filename truncated to '%s'"}, // "filename truncated to '%s'" {4070, "too many public symbols for sorting"}, // "too many public symbols for sorting" {4075, "object type conflict - assuming '%s'"}, // "object type conflict - assuming '%s'" {4076, "no segments defined"}, // "no segments defined" {4077, "symbol '%s' not defined; ordered allocation ignored"}, // "symbol '%s' not defined; ordered allocation ignored" {4079, "symbol '%s' already defined for ordered allocation; duplicate ignored"}, // "symbol '%s' already defined for ordered allocation; duplicate ignored" {4080, "changing substitute name for alias '%s'\r\n from '%s' to '%s'"}, // "changing substitute name for alias '%s'\r\n from '%s' to '%s'" {4081, "cannot execute '%s %s' - %s\r\n"}, // "cannot execute '%s %s' - %s\r\n" {4082, "changing overlay assigment for segment '%s' from %d to %d"}, // "changing overlay assigment for segment '%s' from %d to %d" {4083, "changing overlay assigment for symbol '%s' from %d to %d"}, // "changing overlay assigment for symbol '%s' from %d to %d" {4084, "%s : argument missing; option ignored"}, // "%s : argument missing; option ignored" {4085, "%s : argument invalid; assuming %s"}, // "%s : argument invalid; assuming %s" {4088, "file not suitable for /FARCALL; relink without"}, // "file not suitable for /FARCALL; relink without" {99, "substitute symbol '%s' not found\r\n"}, // "substitute symbol '%s' not found\r\n" {102, "Enter new file spec: "}, // "Enter new file spec: " {103, "Change diskette in drive %c and press "}, // "Change diskette in drive %c and press " {104, "Temporary file %s has been created."}, // "Temporary file %s has been created." {105, "Do not change disk in drive %c:."}, // "Do not change disk in drive %c:." {106, "Please replace original diskette in drive %c and press \r\n"}, // "Please replace original diskette in drive %c and press \r\n" {107, "About to generate .EXE file"}, // "About to generate .EXE file" {108, "This program cannot be run in DOS mode.\r\n$"}, // "This program cannot be run in DOS mode.\r\n$" {109, "Valid options are:"}, // "Valid options are:" {110, "Object Modules"}, // "Object Modules" {111, "Run File"}, // "Run File" {111, "Run File"}, // "Run File" {112, "List File"}, // "List File" {113, "Libraries"}, // "Libraries" {114, "Definitions File"}, // "Definitions File" {115, "\r\nThere was 1 error detected\r\n"}, // "\r\nThere was 1 error detected\r\n" {116, "\r\nThere were %d errors detected\r\n"}, // "\r\nThere were %d errors detected\r\n" {117, "\r\n Origin Group\r\n"}, // "\r\n Origin Group\r\n" {118, "\r\n Address"}, // "\r\n Address" {119, "Export"}, // "Export" {120, "Alias\r\n\r\n"}, // "Alias\r\n\r\n" {121, "\r\n Address"}, // "\r\n Address" {122, "Publics by Name\r\n\r\n"}, // "Publics by Name\r\n\r\n" {123, "Locals by Name\r\n\r\n"}, // "Locals by Name\r\n\r\n" {124, "Publics by Value\r\n\r\n"}, // "Publics by Value\r\n\r\n" {125, "Locals by Value\r\n\r\n"}, // "Locals by Value\r\n\r\n" {126, "\r\n Start"}, // "\r\n Start" {127, "Length"}, // "Length" {128, "Name"}, // "Name" {129, "Class\r\n"}, // "Class\r\n" {130, "\r\n Start Stop Length Name"}, // "\r\n Start Stop Length Name" {131, " Resident\r\n"}, // " Resident\r\n" {132, " Overlay %XH\r\n"}, // " Overlay %XH\r\n" {133, "\r\nProgram entry point at %04X:%04X\r\n"}, // "\r\nProgram entry point at %04X:%04X\r\n" { 134, " Temporary file %s has been created.\r\nDo not change disk in drive %c:."}, // " Temporary file %s has been created.\r\nDo not change disk in drive %c:." {135, "Usage:\r\n\r\n"}, // "Usage:\r\n\r\n" {136, "LINK\r\nLINK @\r\n"}, // "LINK\r\nLINK @\r\n" {137, "LINK ,,,,\r\n\r\n"}, // "LINK ,,,,\r\n\r\n" {139, "This program requires Microsoft Windows.\r\n$"}, // "This program requires Microsoft Windows.\r\n$" {140, "**** PARSING DEFINITIONS FILE ****\r\n"}, // "**** PARSING DEFINITIONS FILE ****\r\n" {141, "**** PASS ONE ****\r\n"}, // "**** PASS ONE ****\r\n" {142, "**** SEARCHING LIBRARIES ****\r\n"}, // "**** SEARCHING LIBRARIES ****\r\n" {143, "**** ASSIGNING ADDRESSES ****\r\n"}, // "**** ASSIGNING ADDRESSES ****\r\n" {144, "**** PRINTING MAP FILE ****\r\n"}, // "**** PRINTING MAP FILE ****\r\n" {145, "**** PASS TWO ****\r\n"}, // "**** PASS TWO ****\r\n" {146, "**** WRITING\x20"}, // "**** WRITING\x20" {147, " - overlaid"}, // " - overlaid" {148, " EXECUTABLE ****\r\n"}, // " EXECUTABLE ****\r\n" {149, "**** NUMBER OF INTEROVERLAY CALLS: requested %d; generated %d ****\r\n"}, // "**** NUMBER OF INTEROVERLAY CALLS: requested %d; generated %d ****\r\n" {150, "**** ERRORS OCCURED - NO EXECUTABLE PRODUCED ****\r\n"}, // "**** ERRORS OCCURED - NO EXECUTABLE PRODUCED ****\r\n" {151, "Parsing Definition File"}, // "Parsing Definition File" {152, "Pass1:\x20"}, // "Pass1:\x20" {153, "Library Search:"}, // "Library Search:" {154, "Pass2:\x20"}, // "Pass2:\x20" {155, "Writing Map File"}, // "Writing Map File" {156, "Writing Executable"}, // "Writing Executable" {157, "Assigning Addresses"}, // "Assigning Addresses" {300, "target external"}, // "target external" {301, "frame segment"}, // "frame segment" {302, "target segment"}, // "target segment" {303, "target offset"}, // "target offset" {304, "warning"}, // "warning" {305, "error"}, // "error" {306, "fatal error"}, // "fatal error" {307, "Object file offset"}, // "Object file offset" {308, "Record type"}, // "Record type" {309, "in file(s)"}, // "in file(s)" {310, "Version"}, // "Version" {311, "All rights reserved"}, // "All rights reserved" {312, "\r\nSegments %u\r\n"}, // "\r\nSegments %u\r\n" {313, "Groups %u\r\n"}, // "Groups %u\r\n" {314, "Bytes in symbol table %ld\r\n"}, // "Bytes in symbol table %ld\r\n" {315, "Overlays %u\r\n"}, // "Overlays %u\r\n" {0, NULL} }; char * __NMSG_TEXT( unsigned msgId ) { MESSAGE *pMsg = __MSGTAB; for (;pMsg->id; pMsg++) { if (pMsg->id == msgId) break; } return pMsg->str; }