home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 240_01 / ciao.h < prev    next >
Text File  |  1987-07-30  |  7KB  |  202 lines

  1.  
  2. /* ciao.h - declarations for all global data & functions in ciao.lib
  3. **          the module is self-initializing, vid_init is only required
  4. **          to set a particular text mode (of 7, or 2 or 3).
  5. **
  6. ** 8 sept 1986, by david c. oshel, ames, iowa
  7. */
  8.  
  9.  
  10. #include <stdio.h>  /* list of files I almost always include */
  11. #include <stdlib.h>
  12. #include <dos.h>
  13. #include <setjmp.h>
  14. #include <string.h>
  15. #include <ctype.h>
  16. #include <alloc.h>
  17.  
  18. #define _fmalloc farmalloc
  19. #define _ffree farfree
  20.  
  21.  
  22. typedef struct screenword { unsigned byte, attr; } SCW;  
  23.  
  24. extern int vid[16],        /* video registers 0..15 (see clairol() fn) */
  25.            vid_mode,       /* hardware configuration */
  26.            rasterh,        /* machine cursor high raster line */
  27.            rasterl,        /* machine cursor low  raster line */
  28.            tone,           /* no sound effects if false */
  29.            ambiguity,      /* clairol: ambiguous message levels on entry? */
  30.            Control_C_Flag; /* Typeafile exit condition flag */
  31.  
  32. /* window primitives */
  33.  
  34. extern void fullscreen(void);     /* resets 80x25 full window dimensions */
  35. extern void clreos(void);         /* ENTIRE SCREEN, from cursor */
  36. extern void clrscrn(void);        /* ENTIRE SCREEN, reset 80x25, home, clear */
  37.  
  38. extern void gotoxy(int ,int );    /* 0,0 is top left corner of window */
  39. extern void clreol(void);         /* window */
  40. extern void clrwindow(void);      /* window */
  41. extern void wink(char );          /* window character out, scroll as needed */
  42. extern void wputs(char *);        /* window string out via wink, ^ is valid */
  43. extern void scrollup(void);       /* window */
  44. extern void scrolldn(void);       /* window */
  45.  
  46. /* top left, bottom right coords: args are relative to 80x25 screen size */
  47.  
  48. extern void windowbox(int ,int ,int ,int );       /*  tx,  ty,  bx,  by */
  49. extern void setwindow(int ,int ,int ,int );       /*  tx,  ty,  bx,  by */
  50. extern void getwindow(int *,int *,int *,int *);   /* &tx, &ty, &bx, &by */
  51.  
  52. /* character primitives, active at current screen position */
  53.  
  54. extern void rptchar(char ,int );    /* char, count */
  55. extern void readscreenchar(SCW *);  /* byte and attr, see typedef, above */
  56.  
  57. /* machine cursor */
  58.  
  59. extern void setsynch(int );        /* 1 or 0, ON or OFF, synch machine cursor */
  60. extern void defcursor(void);       /* visible, synchronized, default size */
  61. extern void hidecursor(void);      /* invisible, de-synchronized */
  62. extern void setcursize(int ,int ); /* high raster, low raster */
  63.  
  64. /* machine and/or soft cursor, depending on synchronized flag */
  65.  
  66. extern int savecursor(union REGS *); /* returns synchronized flag */
  67. extern int restcursor(union REGS *); /* returns synch flag state when saved */
  68.  
  69. /* screen select, swap: contents only */
  70.  
  71. extern void setscreen(int );   /* write on selected: 1 visible, 2 hidden */
  72. extern void swapscreen(int );  /* swap hidden (2 is only valid) with visible */
  73.  
  74. /* screen save, restore: contents, cursor, window dimensions */
  75.  
  76. extern char far *savescreen(union REGS *);           /* calls _fmalloc() */
  77. extern void restorescreen(char far *,union REGS *);  /* calls _ffree()   */
  78.  
  79. /* initialize, de-initialize */
  80.  
  81. extern void vid_init(int );  /* call to set color 3, b&w 2, monochrome 7 */
  82. extern void vid_exit(void);  /* defcursor(), frees up pointer allocations */
  83.  
  84.  
  85. /* other functions */
  86.  
  87.  
  88. /* xeq( directory, program_name );
  89. **
  90. ** example: xeq("\\games", "zork /w");
  91. ** change directory, invoke program via system() call
  92. ** allows program arguments which contain the "/" switch character
  93. ** exec() and spawn() eat "/" because of "compatibility with Xenix"
  94. ** restores the original working directory on exit
  95. ** if there is one, the run time error message is from the new
  96. ** invocation of COMMAND.COM, not from C
  97. */
  98.  
  99. extern void xeq(char *,char *);
  100.  
  101.  
  102. /* typeafile( pathname, wrap, tx, ty, bx, by );
  103. **
  104. ** example: typeafile("\\games\\userman.doc", TRUE, 0,0,79,24 );
  105. ** types the file, if found, in a window box of the given dimensions
  106. ** word wrap in paragraphs if the wrap argument is TRUE
  107. ** hanging indentation in the document may cause a messy display because
  108. ** leading spaces are preserved in the middle of wrapped lines (!)
  109. ** the PgUp key allows you to scroll backwards in the file (!) -- there
  110. ** is a remote chance of stack overflow because the algorithm is recursive
  111. ** traps Control-C, Control_C_Flag = 1 if exit was via Control-C
  112. ** preserves entry screen, restores it on exit
  113. */
  114.  
  115. extern void typeafile(char *,int ,int ,int ,int ,int );
  116.  
  117.  
  118. /* clairol();
  119. **
  120. ** popout window gives users access to vid[0]..vid[3], interpreted as
  121. ** message levels Normal, Bold, Emphasis and Attention.  Users may select
  122. ** screen colors or monochrome attributes, depending on hardware.
  123. */
  124.  
  125. extern void clairol(void );
  126.  
  127.  
  128. /* wprintf( fmt, variable_length_argument_list );
  129. **
  130. ** calls wputs, recognizes ^ commands
  131. ** REQUIRES MICROSOFT C VER. 4.00
  132. */
  133.  
  134. extern void wprintf(char *,...);
  135.  
  136.  
  137. /* keyin( wait_fn );
  138. **
  139. ** wait_fn executed while awaiting keyboard input
  140. ** returns characters as positive integers from 1..255
  141. ** returns Fn keys in range 128..255 (i.e., high bit set)
  142. */
  143.  
  144. extern int keyin(void ( *)());
  145.  
  146.  
  147. /* getms( receiving_buffer_pointer, maximum_length, wait_fn, esc_fn );
  148. **
  149. ** wait_fn executed while awaiting keyboard input
  150. ** esc_fn executed if user types ESC
  151. */
  152.  
  153. extern int getms(char  *,int ,void ( *)(),void ( *)());
  154.  
  155.  
  156. /* sound */
  157.  
  158. extern void HIclack( void );      /* musical gadget declarations */
  159. extern void LOclack( void );
  160. extern void bopbleet( void );
  161. extern void blopbloop( void );
  162. extern void thurb( void );
  163. extern void setfrq( unsigned ); /* sound generation primitives declarations */ 
  164. extern void spkron( void );
  165. extern void spkroff( void );
  166. extern void note( unsigned, unsigned );
  167.  
  168. /* miscellaneous */
  169.  
  170. extern void noop(void );                     /* do nothing, convenient!    */
  171. extern void bell(void );                     /* beep: i.e., putch('\a');   */
  172.  
  173.  
  174.  
  175. /* money.h, 11/27/86, d.c.oshel
  176. */
  177.  
  178. extern int ESCflag,           /* string edit functions return ESC or MINUS */ 
  179.            MINUSflag;         /* if these booleans are non-zero */
  180.  
  181. extern char date_mask[9];     /* set_date() fills "00/00/00" to system date */
  182.  
  183. extern void set_date(void);
  184.  
  185. extern char *dlrcvt(long );         /* convert long to form 999,999,999.99- */ 
  186. extern char *crdrform(long );            /* same but with trailing Dr or Cr */
  187.  
  188. extern int getkey(void);          /* keyin(noop) with key click and ^C trap */
  189.  
  190. extern int edit_masked_numeric(char *,void (*)());  /* Bufptr, FnKeyRoutine */
  191. extern int edit_string(char *,void (*)());          /* Bufptr, FnKeyRoutine */
  192.  
  193. extern void message(int ,int ,char *,... );       /* x,y, variable arg list */
  194.  
  195.  
  196. /* keydefs.h, 12/7/86, d.c.oshel
  197. */
  198.  
  199. extern int KeyDefs(char **, char *, char *); /* options array,title,prompt */
  200.  
  201.  
  202.