home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
bdsc
/
bdsc-1
/
bdscio.h
< prev
next >
Wrap
C/C++ Source or Header
|
1983-09-09
|
5KB
|
152 lines
/*
The BDS C Standard I/O header file -- v1.45 11/12/81
This file contains global definitions, for use in all C programs
in PLACE of (yechhh) CONSTANTS. Characteristics of your system such
as video screen size, interface port numbers and masks, buffered I/O
allocations, etc., should all be configured just once within this
file. Any program which needs them should contain the preprocessor
directive:
#include "bdscio.h"
near the beginning.
Go through and set all this stuff as soon as you get the package,
and most terminal-dependent sample programs should run much better.
*/
/*
Some console (video) terminal characteristics:
(pre-configured for H19/Z19/H89/Z89)
*/
#define TWIDTH 80 /* # of columns */
#define TLENGTH 24 /* # of lines */
#define CLEARS "\033E" /* String to clear screen on console */
#define INTOREV "\033p" /* String to switch console into reverse video */
#define OUTAREV "\033q" /* String to switch console OUT of reverse video */
#define CURSOROFF "\033x5" /* String to turn cursor off */
#define CURSORON "\033y5" /* String to turn cursor on */
#define ESC '\033' /* Standard ASCII 'escape' character */
/*
Console serial port characteristics:
*/
#define CSTAT 0355 /* status port */
#define CDATA 0350 /* data port */
#define CIMASK 0x01 /* input data ready mask */
#define COMASK 0x20 /* output data ready mask */
#define CAHI 1 /* True if status active high */
#define CRESET 0 /* True if status port needs to be reset after input */
#define CRESETVAL 0 /* If CRESET is true, this is the value to send */
/*
Modem characteristics:
*/
#define MSTAT 0335 /* status port */
#define MDATA 0330 /* data port */
#define MIMASK 0x01 /* input data ready mask */
#define MOMASK 0x20 /* ready to send a character mask */
#define MAHI 1 /* True if status logic active high */
#define MRESET 0 /* True if status port needs to be reset */
#define MRESETVAL 0 /* If MRESET true, this is the byte to send */
/*
General purpose Symbolic constants:
*/
#define BASE 0 /* Base of CP/M system RAM (0 or 0x4200) */
#define NULL 0
#define EOF -1 /* Physical EOF returned by low level I/O functions */
#define ERROR -1 /* General "on error" return value */
#define OK 0 /* General purpose "no error" return value */
#define JBUFSIZE 6 /* Length of setjump/longjump buffer */
#define CPMEOF 0x1a /* CP/M End-of-text-file marker (sometimes!) */
#define SECSIZ 128 /* Sector size for CP/M read/write calls */
#define MAXLINE 135 /* Longest line of input expected from the console */
#define TRUE 1 /* general purpose true truth value */
#define FALSE 0 /* general purpose false truth value */
/*
The NSECTS symbol controls the compilation of the buffered
I/O routines within STDLIB2.C, allowing each user to set the
buffer size most convenient for his system, while keeping
the numbers totally invisible to the C source programs using
buffered I/O (via the BUFSIZ defined symbol.) For larger
NSECTS, the disk I/O is faster...but more ram is taken up.
Note that pre-1.4 versions of the library functions
were not set up to support this customizable buffer size,
and always compiled as if NSECTS were 1 in this version. To
change the buffer size allocation, follow these steps:
1) Alter NSECTS to the desired value here in bdscio.h
2) Re-compile STDLIB1.C and STDLIB2.C
3) Use CLIB to combine STDLIB1.CRL and STDLIB2.CRL to make
a new DEFF.CRL.
Make sure you use declare all your I/O buffers with the a
statement such as:
char buf_name[BUFSIZ];
instead of the older and now obsolete:
char buf_name[134];
(and always #include "bdscio.h" in your programs!)
*/
#define NSECTS 8 /* Number of sectors to buffer up in ram */
#define BUFSIZ (NSECTS * SECSIZ + 6 ) /* Don't touch this */
struct _buf { /* Or this... */
int _fd;
int _nleft;
char *_nextp;
char _buff[NSECTS * SECSIZ];
};
/*
If you plan to use the high-level storage allocation functions
from the library ("alloc" and "free") then:
1) Uncomment (enable) the "ALLOC_ON" definition, and comment out the
"ALLOC_OFF" definition from this file.
2) Re-compile STDLIB1.C, and use CLIB to transfer "alloc"
and "free" into the DEFF.CRL library file.
3) THIS IS IMPORTANT!!! Include the statement:
_allocp = NULL; /* initialize allocation pointer */
somewhere in your "main" function PRIOR to the first use
of the "alloc" function. DON'T FORGET THIS INITIALIZATION!!
Remember to include bdscio.h in ALL files of your C program.
The lack of static variables is the reason for all this messiness.
*/
#define ALLOC_OFF 1 /* disables storage allocation if uncommented */
/* only ONE of these two lines should be uncommented */
/*
#define ALLOC_ON 1 /* enables storgage allocation if uncommented */
*/
#ifdef ALLOC_ON /* if storage allocation enabled, */
struct _header {
struct _header *_ptr;
unsigned _size;
};
struct _header _base; /* declare this external data to */
struct _header *_allocp; /* be used by alloc() and free() */
#endif