home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / pgmutil / val_link.zip / LINKERIO.C < prev    next >
Text File  |  1989-02-18  |  5KB  |  128 lines

  1. /*                                 LINKERIO.C                              */
  2.  
  3.  
  4. /*+-------------------------------------------------------------------------+
  5.   |                                                                         |
  6.   |                               DOS_error                                 |
  7.   |                                                                         |
  8.   |                             O/S dependent                               |
  9.   |                                                                         |
  10.   +-------------------------------------------------------------------------+*/
  11. void DOS_error(char_ptr format, ... )
  12. BeginDeclarations
  13. va_list                                argptr;
  14. bit_16                                 error_number;
  15. EndDeclarations
  16. BeginCode
  17.  If outregs.x.cflag
  18.   Then
  19.    error_number = outregs.x.ax;
  20.    If error_number Exceeds 58
  21.     Then
  22.      error_number = 59;
  23.     EndIf;
  24.    fprintf(stdout,"\nDOS Error (Code %u): \"%s\"\n",
  25.                   outregs.x.ax, DOS_error_text[error_number]);
  26.    va_start(argptr,format);
  27.    vfprintf(stdout,format,argptr);
  28.    end_linker(16);
  29.   EndIf;
  30.  return;
  31. EndCode
  32.  
  33. /*+-------------------------------------------------------------------------+
  34.   |                                                                         |
  35.   |                              DOS_int21                                  |
  36.   |                                                                         |
  37.   |                             O/S dependent                               |
  38.   |                                                                         |
  39.   +-------------------------------------------------------------------------+*/
  40. void DOS_int21(char_ptr format, ... )
  41. BeginDeclarations
  42. va_list                                argptr;
  43. bit_16                                 error_number;
  44. EndDeclarations
  45. BeginCode
  46.  intdosx(Addr(inregs), Addr(outregs), Addr(segregs));
  47.  If (outregs.x.cflag) AndIf
  48.     (Not ((inregs.h.al  Is 0x41) AndIf (outregs.x.ax Is 2)))
  49.   Then
  50.    error_number = outregs.x.ax;
  51.    If error_number Exceeds 58
  52.     Then
  53.      error_number = 59;
  54.     EndIf;
  55.    fprintf(stdout,"\nDOS Error (Code %u): \"%s\"\n",
  56.                   outregs.x.ax, DOS_error_text[error_number]);
  57.    va_start(argptr,format);
  58.    vfprintf(stdout,format,argptr);
  59.    end_linker(16);
  60.   EndIf;
  61.  return;
  62. EndCode
  63.  
  64. /*+-------------------------------------------------------------------------+
  65.   |                                                                         |
  66.   |                           linker_error                                  |
  67.   |                                                                         |
  68.   +-------------------------------------------------------------------------+*/
  69. void linker_error(unsigned severity, char_ptr format, ...)
  70. BeginDeclarations
  71. va_list                                argptr;
  72. EndDeclarations
  73. BeginCode
  74.  fprintf(stdout,"\nLinker Error (Severity %d)\n",severity);
  75.  va_start(argptr,format);
  76.  vfprintf(stdout,format,argptr);
  77.  If severity Exceeds 7
  78.   Then
  79.    end_linker(severity);
  80.   Else
  81.    return;
  82.   EndIf;
  83. EndCode
  84.  
  85. /*+-------------------------------------------------------------------------+
  86.   |                                                                         |
  87.   |                            linker_message                               |
  88.   |                                                                         |
  89.   +-------------------------------------------------------------------------+*/
  90. void linker_message(char_ptr format, ...)
  91. BeginDeclarations
  92. va_list                                argptr;
  93. EndDeclarations
  94. BeginCode
  95.  va_start(argptr,format);
  96.  vfprintf(stdout,format,argptr);
  97.  return;
  98. EndCode
  99.  
  100. /*+-------------------------------------------------------------------------+
  101.   |                                                                         |
  102.   |                                 print                                   |
  103.   |                                                                         |
  104.   +-------------------------------------------------------------------------+*/
  105. void print(char_ptr format, ...)
  106. BeginDeclarations
  107. va_list                                argptr;
  108. bit_16                                 len;
  109. EndDeclarations
  110. BeginCode
  111.  va_start(argptr,format);
  112.  vsprintf(CharPtr(object_file_element), format, argptr);
  113.  len = strlen(CharPtr(object_file_element));
  114.  If len IsZero
  115.   Then
  116.    return;
  117.   EndIf;
  118.  If object_file_element[len-1] Is '\n'
  119.   Then
  120.    object_file_element[len-1] = '\000';
  121.    strcat(CharPtr(object_file_element), "\r\n");
  122.    len++;
  123.   EndIf;
  124.  file_write(BytePtr(object_file_element), Bit_32(len));
  125.  return;
  126. EndCode
  127.  
  128.