home *** CD-ROM | disk | FTP | other *** search
- /*
- osbdscio.h = bdscio.h modified for
- the Osbourne 1
-
- by: Dan Sunday
- 7473 Broken Staff
- Columbia, MD 21044
- (301)-730-6838
-
- date: 4-11-82
- */
- /*
- The BDS C Standard I/O header file -- v1.44 4/3/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 this stuff as soon as you get the package,
- and most terminal-dependent sample programs should run better.
-
- */
-
-
- /*
- Some console (video) terminal characteristics:
- (configured for the Osbourne 1)
- */
-
- #define TWIDTH 52 /* # of columns */
- #define TLENGTH 24 /* # of lines */
-
- #define ESC '\033' /* Standard ASCII 'escape' character */
- #define DEL '\177'
- #define RUB_OUT DEL
-
- #define CTRL 037 & /* Control Mask */
- #define BELL (CTRL 'G')
- #define TAB (CTRL 'I')
- #define CR (CTRL 'M') /* Carriage Return */
- #define BS (CTRL 'H') /* Back Space */
- #define LF (CTRL 'J') /* Line Feed */
- #define VT (CTRL 'K') /* Vertical Tab */
- #define FF (CTRL 'L') /* Form Feed */
-
- #define SOH (CTRL 'A')
- #define STX (CTRL 'B')
- #define ETX (CTRL 'C')
- #define EOT (CTRL 'D')
- #define ENQ (CTRL 'E')
- #define ACK (CTRL 'F')
- #define NAK (CTRL 'U')
- #define SYN (CTRL 'V')
- #define CAN (CTRL 'X')
-
- /* Osbourne CP/M Cursor Controls */
- #define LEFT BS /* Cursor Left */
- #define RIGHT FF /* Cursor Right */
- #define UP VT /* Cursor Up */
- #define DOWN LF /* Cursor Down */
-
- /* Osbourne Console Control Strings */
- #define CLEARS "\032"
- #define SHI "\033)" /* start half intensity */
- #define EHI "\033(" /* end half intensity */
- #define SGR "\033g" /* start graphics mode */
- #define EGR "\033G" /* end graphics mode */
- #define SUL "\033l" /* start underlining */
- #define EUL "\033m" /* end underlining */
-
- #define IC "\033Q" /* insert character */
- #define IL "\033E" /* insert line */
- #define DC "\033W" /* delete character */
- #define DL "\033R" /* delete line */
- #define CL "\033T" /* clear to end of line */
-
- #define CUR "\033=" /* set cursor */
- #define SCR "\033S" /* set screen */
- #define LOCK "\033#" /* lock keyboard */
- #define UNLOCK "\033\"" /* unlock keyboard */
-
- /*
- Modem Constants
- */
- #define SPECIAL ESC
- #define ABORT (-1)
- #define TIMEOUT (-2)
-
- /*
- General purpose Symbolic constants:
- */
-
- #define BASE 0 /* Base of CP/M system RAM (0 or 0x4200) */
- #define SECSIZ 128 /* Sector size for CP/M read/write calls */
- #define MAXLINE 128 /* Longest line of console input expected */
-
- #define ON 1
- #define OFF 0
- #define TRUE 1
- #define FALSE 0
- #define YES 1
- #define NO 0
- #define NONE 0
- #define NULL 0
- #define OK 0
- #define ERROR (-1)
- #define EOF (-1)
- #define CPMEOF (CTRL 'Z')
-
-
- /*
- 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 */
-
- #define FILE struct _buf
-
- 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 junk.
- */
-
- /* only ONE of the following two lines should be uncommented */
- /***
- #define ALLOC_OFF 1 /* disables storage allocation if 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
-