mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
149 lines
5.4 KiB
C
149 lines
5.4 KiB
C
/***************************************************************************
|
||
*
|
||
* O P T I O N H e a d e r F i l e
|
||
* -----------------------------------
|
||
* Copyright 1983 by Digital Research Inc.
|
||
*
|
||
* Date: 1/5/84
|
||
*
|
||
* The CLEAR*.L86 libraries provide a large number of functions which
|
||
* are not needed by every program, but which must be linked into the program
|
||
* because their usage is data driven. One example is the floating point
|
||
* conversion routines in the "printf()" function. The programmer can specify
|
||
* "%f", "%g" or "%e" conversions which the linker can not detect. If the
|
||
* program never needs or uses these conversions, the code in the "printf()"
|
||
* routine will never be used. The "option.h" module gives the programmer
|
||
* a mechanism of communicating to the linker that certain low level functions
|
||
* are optional (not used by the program), and can be left out to save space
|
||
* in the program load image (.CMD file).
|
||
*
|
||
* "option.h" provides a set of definitions which allow the programmer
|
||
* to specify certain options of the CLEAR* Run Time libraries (CLEARS.L86 or
|
||
* CLEARL.L86) which the program does not use. The programmer can
|
||
* choose broad sets of options (i.e. "MINIMAL"), or can choose specific
|
||
* options to stub out of the final program (i.e. "NOFLOAT").
|
||
*
|
||
* Each definition contains a "tag declaration". The tag declaration
|
||
* will link in a module from the OPTION*.L86 (OPTIONS.L86 or OPTIONL.L86)
|
||
* library which also contains a "stubroutine" for some internal
|
||
* function of the CLEAR* Run Time Library.
|
||
*
|
||
* For example, the definition of NOFLOAT is "int nofloat();". When
|
||
* the programmer specifies "NOFLOAT" in the source file and then links the
|
||
* final program with the OPTION* library, the linker links in the module from
|
||
* the OPTION* library which contains "nofloat()". This module also contains
|
||
* certain stubroutines which satisfy functional references to the floating
|
||
* point conversion routines in "printf()". Thus, the code for these
|
||
* conversions will not be linked into the final program load image. If
|
||
* the program happens to use the "%f", "%g" or "%e" printf() conversions,
|
||
* the stubroutines provided will print an error message and exit.
|
||
*
|
||
* We recommend that the programmer compile a separate module containing
|
||
* the tag definitions, and then link this module and the OPTION* library
|
||
* along with the rest of the program. For example, to reduce the size of
|
||
* the "hello.c" program load image, the programmer could prepare a file
|
||
* (named "opt.c" in this example) that looks like:
|
||
* opt.c:
|
||
* #include "option.h"
|
||
* MINIMAL
|
||
* Then, after compiling hello.c and opt.c, the link command should look like:
|
||
* LINK86 HELLO,OPT,OPTIONS.L86[SEARCH
|
||
* Note that the "[SEARCH]" option is very important, since LINK86 will pull
|
||
* in all routines in OPTIONS.L86 if you do not use this option.
|
||
*
|
||
*
|
||
* Specific options are documented below.
|
||
*
|
||
****************************************************************************/
|
||
|
||
|
||
/*************
|
||
* NOFLOAT: link out floating point conversion routines in "printf()",
|
||
* "fprintf()", and "sprintf()".
|
||
**************/
|
||
#define NOFLOAT int nofloat();
|
||
|
||
/*************
|
||
* NOLONG: link out long integer conversion routines in "printf()",
|
||
* "fprintf()", and "sprintf()".
|
||
* Saves: CPM small 3200, big 3500
|
||
**************/
|
||
#define NOLONG int nolong();
|
||
|
||
|
||
/*************
|
||
* NOTTYIN: eliminates the functions to "read()" from the console.
|
||
* Watch out when you use STDIN on reads.
|
||
* Saves: CPM small 300, big 350
|
||
*************/
|
||
#define NOTTYIN int nottyin();
|
||
|
||
|
||
|
||
/*************
|
||
* NOWILDCARDS: eliminates wildcard expansion on command line.
|
||
* Saves: CPM small 500, big 650
|
||
*************/
|
||
#define NOWILDCARDS int nowildcards();
|
||
|
||
|
||
|
||
/*************************************************************************
|
||
* DISK I/O Options
|
||
*************************************************************************/
|
||
|
||
/*************
|
||
* MAXFILES5: reduces the maximum number of open files allowed from 16 to 5.
|
||
* Note: this includes console files.
|
||
* Saves: CPM small 1950, big 1950
|
||
*************/
|
||
#define MAXFILES5 int maxfiles5();
|
||
|
||
/*************
|
||
* NOFILESZ: eliminates the functions to calculate the size of a file.
|
||
* Watch out when you append 'fopen(name,"a")' or use 'lseek(fd,xx,2)'.
|
||
* Saves: CPM small 550, big 800
|
||
*************/
|
||
#define NOFILESZ int nofilesz();
|
||
|
||
/*************
|
||
* NOBINARY: eliminates BINARY low level Disk I/O subroutines.
|
||
* Watch out when you do binary file i/o: openb(), creatb(),
|
||
* fopenb(), freopb().
|
||
* Saves: CPM small 2200, big 2900
|
||
*************/
|
||
#define NOBINARY int nobinary();
|
||
|
||
/*************
|
||
* NOASCII: eliminates ASCII low level Disk I/O subroutines.
|
||
* Watch out when you redirect output to a file, or do any ascii file i/o:
|
||
* open(), opena(), creat(), creatb(), fopen(), fopena(), freopen().
|
||
* Saves: CPM small 1100, big 1500
|
||
*************/
|
||
#define NOASCII int noascii();
|
||
|
||
|
||
|
||
/*************
|
||
* MINIMAL: tags to make "hello.c" as small as possible.
|
||
*************/
|
||
#define MINIMAL NOFLOAT NOTTYIN NOFILESZ MAXFILES5 NOWILDCARDS \
|
||
NOASCII NOBINARY
|
||
|
||
|
||
|
||
/*************
|
||
* NOSTARTUP: links out all of the CLEAR initialization routines, including
|
||
* command line redirection (">", "<", and ">>" command line ops) and
|
||
* wildcard expansion. Also leaves out opening STDIN, STDOUT, and STDERR.
|
||
* Warning: this could have peculiar side effects, and should be used only
|
||
* by experienced programmers.
|
||
**************/
|
||
#define NOSTARTUP int nostartup();
|
||
programmers.
|
||
**************/
|
||
#define NOSTARTUP int nostartup();
|
||
programmers.
|
||
**************/
|
||
#define NOSTARTUP int nostartup();
|