DataMuseum.dk

Presents historical artifacts from the history of:

Christian Rovsing CR7, CR8 & CR16 CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦9eea8976a⟧ TextFile

    Length: 4992 (0x1380)
    Types: TextFile
    Names: »BDSCIO.H«

Derivation

└─⟦23f778bf6⟧ Bits:30005378 BDS C v1.46 & Pascal/MT+ v5.5 (Callan format)
    └─ ⟦this⟧ »BDSCIO.H« 
└─⟦4ada80662⟧ Bits:30005446 Pascal/MT+ v5.5 & XREF & BDS C v1.46
    └─ ⟦this⟧ »BDSCIO.H« 

TextFile

/*
	The BDS C Standard I/O header file --  v1.46	3/4/82

	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.
   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Å;
*/

#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Å;
å;

#define FILE struct _buf	/* Poor man's "typedef" */

/*
	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.
*/

#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
«eof»