home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / DATABASE / CHX8010B.LBR / XIO.CZ / XIO.C
Text File  |  2000-06-30  |  3KB  |  110 lines

  1. /*  xio.c -- direct bios input/output without bdos interaction
  2.  *           plus other operating system dependent functions
  3.  */
  4.  
  5. /*  copyright (c) 1986 by Jim Woolley and WoolleyWare, San Jose, CA          */
  6.  
  7. /*  vers. 1.0, 12/85 thru 4/86
  8.  */
  9.  
  10. /*  this file contains:
  11.  *      getchar()
  12.  *      char ungetch( c)
  13.  *      putchar( c)
  14.  *      puts( s)
  15.  *      setlst()
  16.  *      resetlst()
  17.  *      kbhit()
  18.  *      resetdsk()
  19.  *      defdsk()
  20.  *  for use with the check register program
  21.  */
  22.  
  23. #include    "a:checks.h"                /*  see this file for further info   */
  24.  
  25. getchar()                               /*  substitute for library function  */
  26. {
  27.     char c;
  28.  
  29.     if ( _Lastch)
  30.     {
  31.         c = _Lastch;
  32.         _Lastch = 0;
  33.         return ( c);
  34.     }    
  35.     return ( bios( 3));                 /*  direct keyboard input            */
  36. }
  37.  
  38. char ungetch( c)                        /*  substitute for library function  */
  39. char c;
  40. {
  41.     char a;
  42.  
  43.     a = _Lastch;
  44.     _Lastch = c;
  45.     return ( a);
  46. }
  47.  
  48. putchar( c)                             /*  substitute for library function  */
  49. char c;  
  50. {
  51.     if ( c == '\n')
  52.         bios( _Outdev, CR);             /*  _Outdev is CONOUT or LSTOUT      */
  53.     bios( _Outdev, c);
  54. }
  55.  
  56. puts( s)                                /*  display string                   */
  57. char *s;
  58. {
  59.     while ( *s)
  60.         putchar( *s++);
  61. }
  62.  
  63. setlst()                                /*  optionally redirect to printer   */
  64. {                                       /*  return TRUE if redirected        */
  65.                                         /*  else, return FALSE               */
  66.     prompt(
  67. "Press RETURN when printer is ready, or any other key to abandon print function"
  68.            );
  69.     if ( getchar() == CR)
  70.     {
  71.         prompt( "Printing ... ");
  72.         Printing = TRUE;
  73.         _Outdev = LSTOUT;               /*  direct putchar() to printer      */
  74.         return ( TRUE);
  75.     }
  76.     else return ( FALSE);
  77. }
  78.  
  79. resetlst()                              /*  redirect from list to console    */
  80. {
  81.     if ( Printing)
  82.     {
  83.         putchar( '\n');
  84.         putchar( FF);
  85.         Printing = FALSE;
  86.     }
  87.     _Outdev = CONOUT;                   /*  redirect putchar() to screen     */
  88. }
  89.  
  90. kbhit()                                 /*  return TRUE if key pressed       */
  91. {                                       /*  else, return FALSE               */
  92.     return ( bios( 2));
  93. }
  94.  
  95. resetdsk()                              /*  reset & reselect default disk    */
  96. {
  97.     int d;
  98.  
  99.     d = defdsk();                       /*  get default disk                 */
  100.     bdos( 13, 0);                       /*  reset disk system                */
  101.     bdos( 14, d);                       /*  reselect default disk            */
  102. }
  103.  
  104. defdsk()                                /*  return default disk number       */
  105. {
  106.     return ( bdos( 25, 0) & 0x0f);      /*  result will be 0 thru 15         */
  107. }
  108. *  return default disk number       */
  109. {
  110.     return ( bdos( 25, 0) & 0x0f);