home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
pgmutl
/
val_link.arc
/
LINKERIO.C
< prev
next >
Wrap
Text File
|
1989-02-18
|
5KB
|
128 lines
/* LINKERIO.C */
/*+-------------------------------------------------------------------------+
| |
| DOS_error |
| |
| O/S dependent |
| |
+-------------------------------------------------------------------------+*/
void DOS_error(char_ptr format, ... )
BeginDeclarations
va_list argptr;
bit_16 error_number;
EndDeclarations
BeginCode
If outregs.x.cflag
Then
error_number = outregs.x.ax;
If error_number Exceeds 58
Then
error_number = 59;
EndIf;
fprintf(stdout,"\nDOS Error (Code %u): \"%s\"\n",
outregs.x.ax, DOS_error_text[error_number]);
va_start(argptr,format);
vfprintf(stdout,format,argptr);
end_linker(16);
EndIf;
return;
EndCode
/*+-------------------------------------------------------------------------+
| |
| DOS_int21 |
| |
| O/S dependent |
| |
+-------------------------------------------------------------------------+*/
void DOS_int21(char_ptr format, ... )
BeginDeclarations
va_list argptr;
bit_16 error_number;
EndDeclarations
BeginCode
intdosx(Addr(inregs), Addr(outregs), Addr(segregs));
If (outregs.x.cflag) AndIf
(Not ((inregs.h.al Is 0x41) AndIf (outregs.x.ax Is 2)))
Then
error_number = outregs.x.ax;
If error_number Exceeds 58
Then
error_number = 59;
EndIf;
fprintf(stdout,"\nDOS Error (Code %u): \"%s\"\n",
outregs.x.ax, DOS_error_text[error_number]);
va_start(argptr,format);
vfprintf(stdout,format,argptr);
end_linker(16);
EndIf;
return;
EndCode
/*+-------------------------------------------------------------------------+
| |
| linker_error |
| |
+-------------------------------------------------------------------------+*/
void linker_error(unsigned severity, char_ptr format, ...)
BeginDeclarations
va_list argptr;
EndDeclarations
BeginCode
fprintf(stdout,"\nLinker Error (Severity %d)\n",severity);
va_start(argptr,format);
vfprintf(stdout,format,argptr);
If severity Exceeds 7
Then
end_linker(severity);
Else
return;
EndIf;
EndCode
/*+-------------------------------------------------------------------------+
| |
| linker_message |
| |
+-------------------------------------------------------------------------+*/
void linker_message(char_ptr format, ...)
BeginDeclarations
va_list argptr;
EndDeclarations
BeginCode
va_start(argptr,format);
vfprintf(stdout,format,argptr);
return;
EndCode
/*+-------------------------------------------------------------------------+
| |
| print |
| |
+-------------------------------------------------------------------------+*/
void print(char_ptr format, ...)
BeginDeclarations
va_list argptr;
bit_16 len;
EndDeclarations
BeginCode
va_start(argptr,format);
vsprintf(CharPtr(object_file_element), format, argptr);
len = strlen(CharPtr(object_file_element));
If len IsZero
Then
return;
EndIf;
If object_file_element[len-1] Is '\n'
Then
object_file_element[len-1] = '\000';
strcat(CharPtr(object_file_element), "\r\n");
len++;
EndIf;
file_write(BytePtr(object_file_element), Bit_32(len));
return;
EndCode