home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / osborne / bdscioh.osb < prev    next >
Text File  |  1983-09-09  |  5KB  |  198 lines

  1. /*
  2.     osbdscio.h = bdscio.h modified for
  3.             the Osbourne 1
  4.  
  5.     by:    Dan Sunday
  6.         7473 Broken Staff
  7.         Columbia, MD 21044
  8.         (301)-730-6838
  9.  
  10.     date:    4-11-82
  11.  */
  12. /*
  13.     The BDS C Standard I/O header file --  v1.44    4/3/81
  14.  
  15.     This file contains global definitions, for use in all C programs
  16.     in PLACE of (yechhh) CONSTANTS. Characteristics of your system 
  17.     such as video screen size, interface port numbers and masks,
  18.     buffered I/O allocations, etc., should all be configured just
  19.     once within this file. Any program which needs them should
  20.     contain the preprocessor directive:
  21.  
  22.         #include "bdscio.h"
  23.  
  24.     near the beginning. 
  25.  
  26.     Go through and set this stuff as soon as you get the package,
  27.     and most terminal-dependent sample programs should run better.
  28.  
  29. */
  30.  
  31.  
  32. /*
  33.     Some console (video) terminal characteristics:
  34.     (configured for the Osbourne 1)
  35. */
  36.  
  37. #define TWIDTH    52    /* # of columns    */
  38. #define TLENGTH    24    /* # of lines    */
  39.  
  40. #define ESC    '\033'    /* Standard ASCII 'escape' character    */
  41. #define DEL    '\177'
  42. #define RUB_OUT    DEL
  43.  
  44. #define CTRL    037 &            /* Control Mask */
  45. #define BELL    (CTRL 'G')
  46. #define TAB    (CTRL 'I')
  47. #define CR    (CTRL 'M')        /* Carriage Return */
  48. #define BS    (CTRL 'H')        /* Back Space */
  49. #define LF    (CTRL 'J')        /* Line Feed */
  50. #define VT    (CTRL 'K')        /* Vertical Tab */
  51. #define FF    (CTRL 'L')        /* Form Feed */
  52.  
  53. #define SOH    (CTRL 'A')
  54. #define STX    (CTRL 'B')
  55. #define ETX    (CTRL 'C')
  56. #define EOT    (CTRL 'D')
  57. #define ENQ    (CTRL 'E')
  58. #define ACK    (CTRL 'F')
  59. #define NAK    (CTRL 'U')
  60. #define SYN    (CTRL 'V')
  61. #define CAN    (CTRL 'X')
  62.  
  63. /* Osbourne CP/M Cursor Controls */
  64. #define LEFT    BS        /* Cursor Left */
  65. #define RIGHT    FF        /* Cursor Right */
  66. #define UP    VT        /* Cursor Up */
  67. #define DOWN    LF        /* Cursor Down */
  68.  
  69. /* Osbourne Console Control Strings */
  70. #define CLEARS    "\032"
  71. #define SHI    "\033)"    /* start half intensity */
  72. #define EHI    "\033("    /* end half intensity */
  73. #define SGR    "\033g"    /* start graphics mode */
  74. #define EGR    "\033G"    /* end graphics mode */
  75. #define SUL    "\033l"    /* start underlining */
  76. #define EUL    "\033m"    /* end underlining */
  77.  
  78. #define IC    "\033Q"    /* insert character */
  79. #define IL    "\033E"    /* insert line */
  80. #define DC    "\033W"    /* delete character */
  81. #define DL    "\033R"    /* delete line */
  82. #define CL    "\033T"    /* clear to end of line */
  83.  
  84. #define CUR    "\033="    /* set cursor */
  85. #define SCR    "\033S"    /* set screen */
  86. #define LOCK    "\033#"    /* lock keyboard */
  87. #define UNLOCK "\033\""    /* unlock keyboard */
  88.  
  89. /*
  90.     Modem Constants
  91. */
  92. #define SPECIAL    ESC
  93. #define ABORT    (-1)
  94. #define TIMEOUT    (-2)
  95.  
  96. /*
  97.     General purpose Symbolic constants:
  98. */
  99.  
  100. #define BASE    0    /* Base of CP/M system RAM (0 or 0x4200)  */
  101. #define SECSIZ    128    /* Sector size for CP/M read/write calls */
  102. #define MAXLINE    128    /* Longest line of console input expected */
  103.  
  104. #define ON    1
  105. #define OFF    0
  106. #define TRUE    1
  107. #define FALSE    0
  108. #define YES    1
  109. #define NO    0
  110. #define NONE    0
  111. #define NULL    0
  112. #define OK    0
  113. #define ERROR    (-1)
  114. #define EOF    (-1)
  115. #define CPMEOF    (CTRL 'Z')
  116.  
  117.  
  118. /*
  119.    The NSECTS symbol controls the compilation of the buffered
  120.    I/O routines within STDLIB2.C, allowing each user to set the
  121.    buffer size most convenient for his system, while keeping
  122.    the numbers totally invisible to the C source programs using
  123.    buffered I/O (via the BUFSIZ defined symbol.) For larger
  124.    NSECTS, the disk I/O is faster...but more ram is taken up.
  125.    Note that pre-1.4 versions of the library functions
  126.    were not set up to support this customizable buffer size,
  127.    and always compiled as if NSECTS were 1 in this version. To
  128.    change the buffer size allocation, follow these steps:
  129.  
  130.      1) Alter NSECTS to the desired value here in bdscio.h
  131.      2) Re-compile STDLIB1.C and STDLIB2.C
  132.      3) Use CLIB to combine STDLIB1.CRL and STDLIB2.CRL to make
  133.       a new DEFF.CRL.
  134.  
  135.    Make sure you use declare all your I/O buffers with the a
  136.    statement such as:
  137.           char buf_name[BUFSIZ];
  138.        instead of the older and now obsolete:
  139.           char buf_name[134];
  140.        (and always #include "bdscio.h" in your programs!)
  141. */
  142.  
  143. #define NSECTS 8    /* Number of sectors to buffer up in ram */
  144.  
  145. #define BUFSIZ (NSECTS * SECSIZ + 6 )    /* Don't touch this */
  146.  
  147. #define FILE    struct _buf
  148.  
  149. struct _buf {                /* Or this...        */
  150.     int _fd;
  151.     int _nleft;
  152.     char *_nextp;
  153.     char _buff[NSECTS * SECSIZ];
  154. };
  155.  
  156.  
  157.  
  158. /*
  159.     If you plan to use the high-level storage allocation functions
  160.     from the library ("alloc" and "free") then:
  161.  
  162.       1) Uncomment (enable) the "ALLOC_ON" definition, and
  163.          comment out the "ALLOC_OFF" definition from this file.
  164.  
  165.       2) Re-compile STDLIB1.C, and use CLIB to transfer "alloc"
  166.          and "free" into the DEFF.CRL library file.
  167.  
  168.       3) THIS IS IMPORTANT!!! Include the statement:
  169.  
  170.         _allocp = NULL;       /* initialize allocation pointer */
  171.  
  172.          somewhere in your "main" function PRIOR to the first use
  173.          of the "alloc" function. DON'T FORGET THIS INITIALIZATION!!
  174.  
  175.     Remember to include bdscio.h in ALL files of your C program.
  176.  
  177.     The lack of static variables is the reason for all this junk.
  178. */
  179.  
  180. /* only ONE of the following two lines should be uncommented */
  181. /***
  182. #define ALLOC_OFF 1    /* disables storage allocation if uncommented */
  183.  ***/
  184. #define ALLOC_ON 1    /* enables storgage allocation if uncommented */
  185.  
  186.  
  187. #ifdef ALLOC_ON            /* if storage allocation enabled, */
  188.  
  189. struct _header  {
  190.     struct _header *_ptr;
  191.     unsigned _size;
  192.  };
  193.  
  194. struct _header _base;        /* declare this external data to  */
  195. struct _header *_allocp;    /* be used by alloc() and free()  */
  196.  
  197. #endif
  198.